;**********************************************
; 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!
;**********************************************

       SEARCH SYS                              ;search the normals
       SEARCH SYSSYM
       SEARCH TRM
       SEARCH AAA                              ;search AAA.UNV (our macros)

       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

       END                                     ;end of code