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 ›