10
20
30
40
50 :
60 zp=&A8
70 OSARGS=&FFDA:OSFIND=&FFCE
80 OSBYTE=&FFF4:OS_CLI=&FFF7
90 DIM mcode% 256
100 :
110 FOR pass=4 TO 7 STEP 2
120 P%=&900:O%=mcode%
130 [OPT pass
140 LDA #1:LDX #zp
150 LDY #0:JSR OSARGS :\ Read command line
160 LDA (zp),Y :\ Get start of command line
170 CMP #13:BEQ close :\ *SpoolOn <cr> - close
180 LDX zp+0:LDY zp+1 :\ XY=>filename
190 LDA #&C0:JSR OSFIND :\ OPENUP(filename)
200 TAY:BNE spoolon :\ File exists, use it
210 .loop :\ Otherwise, do *SPOOL
220 LDA (zp),Y:STA filename,Y
230 INY:CMP #13:BNE loop
240 LDX #spool AND 255
250 LDY #spool DIV 256
260 JMP OS_CLI
270 :
280 .spoolon
290 LDX #zp
300 LDA #2:JSR OSARGS :\ Read EXT
310 LDA #1:JSR OSARGS :\ Write PTR=EXT
320 .close
330 TYA:TAX :\ X=handle
340 LDY #0:LDA #&C7
350 JSR OSBYTE :\ Set SPOOL handle, gets old handle
360 TXA:TAY:BEQ done :\ Already closed
370 LDA #0:JMP OSFIND :\ Close previous SPOOL handle
380 .done
390 RTS
400 :
410 .spool
420 EQUS "Spool "
430 .filename
440 ]NEXT
450 A$="SAVE SpoolOn "+STR$~mcode%+" "+STR$~O%+" FFFF0900 FFFF0900"
460 PRINT A$;:OSCLI A$:PRINT