10
20
30
40
50
60 :
70 OSARGS=&FFDA:OSFILE=&FFDD:OSBYTE=&FFF4
80 lptr=&A8
90 :
100 DIM mcode% &200:load%=&FFFF0900
110 FOR P=0 TO 1
120 P%=load%:O%=mcode%
130 [OPT P*3+4
140 .go%
150 LDA #1:LDY #0:LDX #lptr:JSR OSARGS
160 LDA lptr+0:STA save+0
170 LDA lptr+1:STA save+1
180 LDA #161:LDX #255:LDY #49 :\ Default to 49+1 bytes
190 JSR OSBYTE:TYA:TAX:INX :\ Y=0 means no CMOS present
200 CLC:ADC save+14:STA save+14
210 LDA #0:ADC save+15:STA save+15 :\ Set end location to save
220 .lp
230 DEX:TXA:PHA:LDA #161:JSR OSBYTE:\ Read CMOS byte
240 PLA:TAX:TYA:STA data,X :\ Store in data block
250 TXA:BNE lp
260 LDX #save AND 255:LDY #save DIV 256
270 LDA #0:JMP OSFILE :\ Save the data block
280 .save
290 EQUW 0:EQUD &FFFFF200:EQUD 0
300 EQUW data:EQUW &FFFF:EQUW data+1:EQUW &FFFF
310 .data
320 EQUS "SaveCMOS 1.01":BRK
330 ]NEXT
340 A$="SAVE SaveCMOS "+STR$~mcode%+" "+STR$~O%+" "+STR$~(go%OR&FFFF0000)+" "+STR$~load%
350 PRINTA$;:OSCLIA$:PRINT