;**********************************************
; ADDLF - ADD Line Feed
;
; Adds in a LF to files that only contain CRs
;
; by Dave Heyliger - AMUS Staff
;
; Directions: just type ADDLF and follow 'em!
;**********************************************
VMAJOR=1. ;version number 1.0(100)
VMINOR=0.
VEDIT=100. ;original by Dave Heyliger
.OFINI ;define variables
.OFDEF IDDB,D.DDB ;Input DDB for input file
.OFDEF ODDB,D.DDB ;Output DDB for output file
.OFSIZ IMPSIZ
;start of program - create header
; A4 will constantly point to output DDB
; A5 will constantly point to input DDB
PHDR -1,0,PH$REE!PH$REU ;re-entrant, re-usable
GETIMP IMPSIZ,A3 ;A3 points to variables
LEA A5,IDDB(A3) ;A5 points to input file
LEA A4,ODDB(A3) ;A4 point to output file
;give some simple instructions
PRTTAB -1,0 ;clear screen
PRTTAB 6,34 ;tab to here
TYPE <ADD LINEFEED Utility:> ;What this program does
PRTTAB 10,24 ;tab to here
TYPE <adds a LF to files that don't have them!>
;get input file and output file (not intensive error checking)
PRTTAB 12,20 ;tab to here
TYPE <Enter in the file needing LFs : > ;get input filename
KBD ;A2 will point to the filename
FSPEC @A5 ;create RAD50 filespec in DDB
PRTTAB 13,20 ;tab here
TYPE <Enter in a name for updated file : > ;get output filename
KBD ;A2 will point to the filename
FSPEC @A4 ;create RAD50 filespec in DDB
;find device driver for file I/O and create two 512 block buffers
INIT @A5 ;initialize both files
INIT @A4
;look for input/output files - give error message if booboo
LOOKUP @A5 ;if input file not found
JNE BOOBOO ;error
LOOKUP @A4 ;if output file found
JEQ BOOBOO ;error
;open input file, output file. Give fancy screen display!
OPENI @A5 ;open input file
OPENO @A4 ;open output file
PRTTAB 15,1 ;tab to here
TYPE <Working..> ;gizmo effects!
;read input file byte-by-byte, write to output file byte-by-byte,
;but add a LF if you ever hit a CR on the input file
BYB: FILINB @A5 ;get a byte from input file
TST IDDB+D.SIZ(A3) ;eof?
BEQ EOF ;yup, go here
FILOTB @A4 ;nope, write the byte
CMPB D1,#15 ;was it a CR?
BNE BYB ;nope, go get next byte
MOV #12,D1 ;yup, move in a line feed
FILOTB @A4 ;and write it out to the file
TYPE <.> ;gizmo effects upon each LF
BR BYB ;go get another input byte
;if no input file or output file exists, type error message
BOOBOO: PRTTAB 15,23 ;tab to here
TYPE <File spec error or file already exists> ;message
MOV #7,D1 ;get a bell
TTY ;beep!
BR EXIT ;and quit
;EOF hit, so close files, finish gizmo effects!
EOF: CLOSE @A5 ;close input file
CLOSE @A4 ;close output file
EXIT: TYPECR <!> ;"!" - done!
EXIT ;get out of dodge