0100 ;SOFT RESET, SOURCE CODEõ0110 ;BY BRAD TIMMINSõ0120 ;(c)1988, ANTIC PUBLISHINGõ0130 *= $0655õ0140 ;IOCB equatesõ0150 PUTREC = $09õ0160 EOL = $9Bõ0170 ICCOM = $0342õ0180 ICSTA = $0343õ0190 ICBAL = $0344õ0200 ICBAH = $0345õ0210 ICPTL = $0346õ0220 ICPTH = $0347õ0230 ICBLL = $0348õ0240 ICBLH = $0349õ0250 AUX1 = $034Aõ0260 CIOV = $E456õ0270 ;Program Equatesõ0280 DOSINI = $0Cõ0290 FLAG = $0654õ0300 CLEAR = $7Dõ0310 CONSOL = $D01Fõ0320 CDOWN = $1Dõ0330 ;Save old RESET vectors.õ0340 STARTõ0350 LDA DOSINIõ0360 STA VECTORõ0370 LDA DOSINI+1õ0380 STA VECTOR+1õ0390 ;Replace with new address.õ0400 LDA # NEWVECõ0430 STA DOSINI+1õ0440 ;Print "OFF" message.õ0450 LDA # OFFõ0480 STA ICBAHõ0490 JSR PRINTõ0500 ;Set FLAG's value to "OFF"õ0510 ;and exit.õ0520 LDA #0õ0530 STA FLAGõ0540 RTS õ0550 ;õ0560 ;This is executed wheneverõ0570 ;RESET is pressed:õ0580 ; Has OPTION been pressed?õ0590 ;If so, change FLAG's value:õ0600 ; 0=Continueõ0610 ; 1=Print "OFF" return to BASICõ0620 ;õ0630 NEWVECõ0640 LDA CONSOLõ0650 CMP #3õ0660 BNE NVEC1õ0670 ;õ0680 ;Change FLAG's value.õ0690 LDA FLAGõ0700 EOR #1õ0710 STA FLAGõ0720 NVEC1õ0730 LDA FLAGõ0740 BEQ OFF1õ0750 ;õ0760 ;Display "POKE842,12:GOTO 31000"õ0770 LDA # GOTOõ0800 STA ICBAHõ0810 JSR PRINTõ0820 ;Put cursor at 2,0õ0830 LDA #2õ0840 STA 84õ0850 LDA #0õ0860 STA 85õ0870 ;Put Editor in Forced Read modeõ0880 ;and return to BASIC.õ0890 LDA #13õ0900 STA AUX1õ0910 RTS õ0920 ;õ0930 ;Program is off. Print "OFF"õ0940 ;and exit through old vectors.õ0950 OFF1õ0960 LDA # OFFõ0990 STA ICBAHõ1000 JSR PRINTõ1010 JMP (VECTOR)õ1020 ;õ1030 ;IOCB PRINT subroutineõ1040 PRINTõ1050 LDA #PUTRECõ1060 STA ICCOMõ1070 LDA #0õ1080 TAX õ1090 STA ICBLLõ1100 LDA #2õ1110 STA ICBLHõ1120 JSR CIOVõ1130 RTS õ1140 ;õ1150 VECTORõ1160 .WORD 0,0õ1170 GOTOõ1180 .BYTE CLEAR,CDOWN,CDOWN,CDOWN,CDOWN,"POKE842,12:GOTO 31000",EOLõ1190 OFFõ1200 .BYTE CLEAR,"Soft Reset now OFF",EOLõ1210 LABELõ1220 *= $02E0õ1230 .WORD STARTõ1240 .END õ