!*! Updated on 11-Feb-92 at 10:46 AM by Sylvan Malis; edit time: 0:22:01
!
!*****************************************************************************
!*! Created on 18-Nov-91 at 10:56 AM by Dave Jackson; edit time: 0:53:57
!****************************************************************************
! *
! EXTRAC.BAS - A d/BASIC utility module for d/PAINT files.
! *
!
program extrac,1.0(100)
!
binary 1 B
string 80 L,X,Y,D,S
float v,l,p,c
! Main Section of program -- Get the file name to be processed.
! The output is also displayed on the terminal minus the control characters
! to check if the information compairs with your dPAINT module.
print tab(-1,0);
open #2,OutFile,output ! place for data
! The input call is for Microsabio's INFLD but AMOS's input is ok with minor
! change the the xcall input
print tab(4,1);"Enter d/PAINT Location, File Name and extension "
xcall input,4,50,24,0,"E*",Fl$,inxctl,1,1,extcde
if inxctl end
! Add error checking of input if needed. Such as has the extension been
! entered or not etc.. I chose not to error check the open statement
! tells the user about the error.
OPEN #1,Fl$,input
print #2,"*** Section I *** Prompt elements"
call Begin
close #1
close #2
print "The data is listed in the file ";OutFile
end
!********************* Subroutines
Begin:
swch= 1 : l= 0 : c= 0 : v=0 : print tab(-1,0);
! Read the file one byte at a time checking for the lead character
do get byte #1,A until eof(1)
if swch and A= 128 then call Get'RowCol ! String variable preamble
if swch and A= 129 then call Get'String ! Screen Position preamble
if A= 255 and swch= 1 then print #2,"*** Section II *** Data Elements"
if A= 255 swch= 0 : call Get'Var ! Data Element preamble
enddo
print #2,Fl$,plural$("Element",v) ! Lazy programmer
print tab(1,1);plural$("Element",v); ! Lazy Programmer
print tab(23,1);
stop ! wait to view data
print tab(-1,0) ! clear view
return
Get'RowCol:
get byte #1,R
get byte #1,C
return
Get'String:
p= 0
do get byte #1,A until A= 0
p+=1 : L[p;1]= chr$(A)
enddo
Get'Var:
call Get'RowCol
if R= 0 then return ! incase no row and col follow
v+= 1 ! bump element counter.
print tab(R,C); ! ready to print on screen
get byte #1,Siz
get byte #1,Typ
!
! The following number of elements at this time are unknown to me. I do
! know after 13 bytes any additional bytes are related to the exit code.
!
! get byte #1,A0
! get byte #1,A1
! get byte #1,A2
! get byte #1,A3
! get byte #1,A4
! get byte #1,A5
! get byte #1,A6
! get byte #1,A7
! get byte #1,A8
! get byte #1,A9
!
if Typ=0 then print X[1;Siz]; ! Alpha/Numerics
if Typ=1 then print S[1;Siz]; ! Alpha
if Typ=2 then print D[1;Siz]; ! Numerics
if Typ=16 then print Y[1;Siz]; ! Yes/No
if Typ= 0 then print #2,"*"
if Typ= 1 then print #2,"A"
if Typ= 2 then print #2,"N"
if Typ= 16 then print #2,"Y"
return
!Start Test code
!
! This section prints the decimal bytes based on the above information.
! Some times the string size may become greater then what may be d/VUE'd.
!
! This is just extra code if you wish to see the .PNT file numerically.
!
TST:
swch= 1
do get byte #1,A until eof(1)
if A= 23 or A= 128 or A= 255 or A= 129 then print #2
print #2,A;
enddo
print #2