10 REM > SRWipe/src v1.04
   20 REM Sideways RAM Clear Utility
   30 REM by Gordon Horsington
   40 REM (C) The Micro User
   50 REM Updated for Electron compatibility by JGH
   60 zeropage=&A8
   70 units=zeropage
   80 tens=zeropage+1
   90 pointer=&F2
  100 ramcopy=&F4
  110 romselect=&FE30
  120 mcode%=&0900
  130 OSARGS=&FFDA
  140 OSBYTE=&FFF4
  150 romtype=&2A1
  160 DIM mcode% &200:load%=&FFFF0900
  170 FOR P=0 TO 1
  180   P%=load%:O%=mcode%
  190   [OPT P*2+4
  200   .error
  210   BRK:EQUB 220:EQUS "Syntax: *SRWipe <rom>":BRK
  220   :
  230   .exec%
  240   LDA #0:LDX #1:JSR OSBYTE               :\ Find machine type
  250   TXA:BNE CmdLine                        :\ If not Electron, X<>&00
  260   LDA #&05:STA ROMSEL+1                  :\ Change to Electron ROMSEL
  270   DEC ROMTABLE1                          :\ Change to Electron ROMTABLE
  280   .CmdLine
  290   LDA #1:LDX #zeropage:JSR OSARGS        :\ Find command line (Y=0 from above)
  300   :
  310   LDA ramcopy:PHA
  320   LDA (zeropage),Y
  330   CMP #ASC"0":BCC error
  340   CMP #ASC"9"+1:BCC inrange
  350   AND #&DF
  360   CMP #ASC"A":BCC error
  370   AND #&DF:CMP #ASC"F"+1
  380   BCC inrangehex
  390   SBC #ASC"W":BCC error
  400   :
  410   TAY:LDX #0
  420   .findram
  430   JSR SelectRom
  440   LDA &8008
  450   EOR #&AA
  460   STA &8008
  470   CMP &8008
  480   BEQ foundram
  490   .nextram
  500   INX
  510   CPX #16
  520   BNE findram
  530   BEQ error
  540   .foundram
  550   EOR #&AA
  560   STA &8008
  570   DEY
  580   BPL nextram
  590   BMI wipe
  600   .errorjmp
  610   JMP error
  620   .inrangehex
  630   SBC #6
  640   .inrange
  650   AND #15
  660   TAX
  670   CMP #1
  680   BNE wipe
  690   INY
  700   LDA (zeropage),Y
  710   CMP #ASC"!"
  720   BCC wipe
  730   CMP #ASC"0"
  740   BCC errorjmp
  750   CMP #ASC"6"
  760   BCS errorjmp
  770   AND #15
  780   ADC #10
  790   .wipe
  800   JSR SelectRom
  810   LDA #0
  820   .ROMTABLE1
  830   STA romtype,X
  840   STA zeropage+0
  850   LDX #&BF
  860   STX zeropage+1
  870   TAY
  880   .clear
  890   STA (zeropage),Y
  900   INY
  910   BNE clear
  920   DEC zeropage+1
  930   BMI clear
  940   :
  950   .done
  960   PLA:TAX                    :\ Restore ROM
  970   .SelectRom
  980   LDA #12:JSR SelectRom2
  990   TXA:STA &FF30,X            :\ Enable WERAM writes
 1000   .SelectRom2
 1010   STA &F4
 1020   .ROMSEL
 1030   STA &FE30:RTS              :\ Select ROM
 1040   :
 1050   EQUS "v1.04"
 1060 ]:NEXT
 1070 PRINT" *SAVE SRWipe ";~mcode%;" ";~O%;" ";~exec%OR&FFFF0000;" ";~load%