;**********************************
;
; MAKFIL - creates a text file
;
;**********************************
;2.0 18-Jul-84 DFP rewritten by David Pallmann.
;
;syntax is: .MAKFIL filename
; text <- syntax @file reads in another file
; text
; ..
; text
; blank line
OBJNAM MAKFIL.LIT
VMAJOR=2
SEARCH SYS
SEARCH SYSSYM
SEARCH TRM
IMP=A5
.OFINI
.OFDEF FILE,D.DDB ;DDB for creating file
.OFDEF FILE2,D.DDB ;DDB for reading other files in
.OFSIZ IMPSIZ
START: PHDR -1,0,PH$REE!PH$REU ;program header
GETIMP IMPSIZ,IMP ;allocate impure area (FILE & FILE2)
BYP ;bypass spaces @A2
FSPEC FILE(IMP),TXT ;load DDB w/filespec
INIT FILE(IMP) ;fetch driver, allocate buffer
LOOKUP FILE(IMP) ;does the file exist?
BNE 10$ ; no - branch
DSKDEL FILE(IMP) ; yes - delete it
10$: OPENO FILE(IMP) ;open for output
MOV JOBCUR,A0 ;A0 := job control block
MOV JOBTRM(A0),A0 ;A0 := terminal definition block
ORW #T$ILC,@A0 ;tell AMOS/L to allow lower case
GETLIN: KBD ENDFIL ;get a line (branch on ^C)
LIN ;blank line?
BEQ ENDFIL ; yes
CMPB @A2,#'@ ;does line start with '@'?
BEQ 20$ ; yes - branch
10$: MOVB (A2)+,D1 ;D1 := next character on line
BEQ GETLIN ;branch if D1 zero (end of line)
FILOTB FILE(IMP) ;write D1 out to file
BR 10$ ;loop till full line processed
20$: INC A2 ;bypass the '@'
FSPEC FILE2(IMP),CMD ;set up DDB
INIT FILE2(IMP) ;load driver, allocate buffer
OPENI FILE2(IMP) ;open for input
30$: CTRLC ENDFIL ;branch on ^C
FILINB FILE2(IMP) ;read character from file
TST FILE2+D.SIZ(IMP) ;end of file?
BEQ 40$ ; yes - branch
FILOTB FILE(IMP) ;write character to file
BR 30$ ;loop till entire file processed
40$: CLOSE FILE2(IMP) ;close auxiliary file
BR GETLIN ;return to main loop
ENDFIL: CLOSE FILE(IMP) ;close file
EXIT ;exit to AMOS/L