;--- Program header and variable offset assignments
;
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
;--- type out introduction
;
PRTTAB -1,0 ;clear screen
PRTTAB 6,37 ;tab to here
TYPE <DELETE CR Utility> ;fancy program title
PRTTAB 10,24 ;tab to here
TYPE <deletes Carriage Returns from files!>
;--- get input file and output file (not intensive error checking)
;
PRTTAB 12,20
TYPE <Enter in the file having CRs : >
KBD
FSPEC @A5
PRTTAB 13,20
TYPE <Enter in a name for updated file : >
KBD
FSPEC @A4
INIT @A5 ;initialize both files
INIT @A4
LOOKUP @A5 ;if input file not found
JNE BOOBOO ;error
LOOKUP @A4 ;if output file found
JEQ BOOBOO ;error
OPENI @A5 ;open them
OPENO @A4
PRTTAB 15,1
TYPE <Working..> ;gizmo effects!
;--- read input file byte-by-byte, write to output file byte-by-byte,
; but delete a CR if you ever hit a one on the input file
;
BYB: FILINB @A5 ;get a byte
TST IDDB+D.SIZ(A3) ;eof?
BEQ EOF ;yup
CMPB D1,#15 ;is it a CR?
BNE AOK ;nope, so AOK to write
TYPE <.> ;yup, so gizmo effects
BR BYB ;and don't write the byte
AOK: FILOTB @A4 ;write the byte
BR BYB ;goto top
;--- if no input file or output file exists, type message
;
BOOBOO: PRTTAB 15,23
TYPE <File spec error or file already exists>
MOV #7,D1 ;get a bell
TTY ;beep!
BR EXIT
;--- EOF hit, so close files, finish gizmo effects!
;
EOF: CLOSE @A5
CLOSE @A4
EXIT: TYPECR <!>
EXIT
END