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 0410 STA DOSINI 0420 LDA # >NEWVEC 0430 STA DOSINI+1 0440 ;Print "OFF" message. 0450 LDA # <OFF 0460 STA ICBAL 0470 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 0780 STA ICBAL 0790 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 0970 STA ICBAL 0980 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
Back to previous page