10
20
30 :
40 Ver$="0.10":start%=&FFFF0380:DIM mcode% &400:SerInID=1
50 INSV=&22A:RMV=&22C:CNPV=&22E:OSBYTE=&FFF4:OSARGS=&FFDA:OSVEC=&FFB6
60 :
70 zp=&A8:PtrBlk=&80:InPtr=PtrBlk:OutPtr=PtrBlk+2:Temp=PtrBlk+4
80 :
90 FOR P=0 TO 1
100 O%=mcode%:P%=start%
110 :
120 [OPT P*3+4
130 .Ins
140 CPX #SerInID:BNE InsertCall :\ Not serial input
150 TAY:BNE InsertCall :\ Not a null
160 JSR InsertCall:BCC InsertCall :\ Put two nulls in
170 RTS :\ Quit if buffer full
180 .InsertCall
190 JMP &FFFF
200 :
210 .go%
220 LDA #0:LDX #1:JSR &FFF4 :\ What OS?
230 PHP:SEI:CPX #5:BNE NotCompact :\ Only needs fixing on MOS 5.00
240 :
250 LDA INSV:STA InsertCall+1:LDA INSV+1:STA InsertCall+2
260 LDA #Ins AND 255:STA INSV:LDA #Ins DIV 256:STA INSV+1
270 :
280 .NotCompact
290 PLP:RTS:EQUS Ver$
300 ]:NEXT
310 PRINT"*Save SerFix ";~mcode%;" ";~O%;" "~go%OR&FFFF0000;" ";~start%