;*************************** AMUS Program Label ******************************
; Filename: ADCRLF.M68                                      Date: 12/17/91
; Category: UTIL         Hash Code: 064-214-014-152      Version: 1.0(100)
; Initials: ULTR/US      Name: DAVID PALLMANN
; Company: ULTRASOFT CORPORATION                   Telephone #: 5163484848
; Related Files:
; Min. Op. Sys.: AMOSL 1.3B/AMOS32 1.0         Expertise Level: INT
; Special: Okay for all versions of AMOS, both traditional & extended disks.
; Description: Copies a file, inserting CRLF pairs every N bytes.
;*****************************************************************************

;****************************************************************************
;*                                                                          *
;*                                 ADCRLF                                   *
;*                       Adds CR/LF pairs to a file                         *
;*                                                                          *
;****************************************************************************
;[100] 17 December 1991 17:12   Edited by David Pallmann
;       Created.

;version number

       VMAJOR  =1
       VMINOR  =0
       VSUB    =0
       VEDIT   =100.
       VWHO    =0

;universals

       SEARCH  SYS
       SEARCH  SYSSYM

;variables

       .OFINI
       .OFDEF  INFIL,  D.DDB           ; input file
       .OFDEF  OUTFIL, D.DDB           ; output file
       .OFSIZ  MEMSIZ

;***********
;*  START  *
;***********
;initialization

START:  PHDR    -1,0,PH$REE!PH$REU      ; program header
       GETIMP  MEMSIZ,A5               ; allocate local memory for variables

;************
;*  CMDLIN  *
;************
;command line processing

CMDLIN: BYP                             ; bypass spaces/tabs
       LIN                             ; end of line?
       JEQ     USAGE                   ;   yes - explain command usage
       FSPEC   INFIL(A5),DAT           ;
       INIT    INFIL(A5)               ;
       BYP                             ;
       CMPB    @A2,#<',>               ;
       BNE     10$                     ;
       INC     A2                      ;
       BYP                             ;
10$:    LIN                             ;
       JEQ     USAGE                   ;
       FSPEC   OUTFIL(A5),NEW          ;
       INIT    OUTFIL(A5)              ;
       BYP                             ;
       NUM                             ;
       JNE     USAGE                   ;
       GTDEC                           ;
       MOV     D1,D5                   ;
       JEQ     USAGE                   ;

OPEN:   OPENI   INFIL(A5)               ;
       OPENO   OUTFIL(A5)              ;

CONFRM: TYPE    <Processing file >      ;
       PFILE   INFIL(A5)               ;
       TYPE    <, Creating file >      ;
       PFILE   OUTFIL(A5)              ;
       CRLF                            ;
       CLR     D4                      ; clear record count

LOOP:   CTRLC   CLOSE                   ; branch on ^C
       MOV     D5,D0                   ; copy record size
10$:    FILINB  INFIL(A5)               ; get byte
       TST     INFIL+D.SIZ(A5)         ; end of file?
       JEQ     CLOSE                   ;   yes
       FILOTB  OUTFIL(A5)              ; output byte
       SOB     D0,10$                  ; loop until full record copied
       MOVB    #13.,D1                 ; write out
       FILOTB  OUTFIL(A5)              ;   CR
       MOVB    #10.,D1                 ; write out
       FILOTB  OUTFIL(A5)              ;   LF
       INC     D4                      ; update record count
       BR      LOOP                    ; loop

CLOSE:  CLOSE   INFIL(A5)               ;
       CLOSE   OUTFIL(A5)              ;
       MOV     D4,D1                   ;
       DCVT    0,OT$TRM!OT$TSP         ;
       TYPECR  records processed
       CRLF                            ;
       EXIT                            ;

;***********
;*  USAGE  *
;***********
;explain command usage

USAGE:  TYPECR  <ADCRLF copies a file, adding CRLF pairs after each record>
       CRLF                            ;
       TYPECR  Usage: .ADCRLF infile outfile recordsize
       CRLF                            ;
       EXIT                            ;

       END