10 REM > CMSave/src
   20 REM Source for SaveCMOS
   30 REM *SaveCMOS <fsp>
   40 REM NB: Naming convention back to front
   50 REM v1.01 31-Oct-2010 Reads location 255 to get size to save
   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