0100 ; TRIGGER THROTTLE, SOURCE CODE 0110 ; BY MATTHEW RATCLIFF 0120 ; (c)1987, ANTIC PUBLISHING 0130 JIFFY = $14 0140 CTL_S = 190 ; INTERNAL CODE 0150 CTL_Q = 175 ; INTERNAL CODE 0160 VVBLKD = $0224 0170 CH = $02FC 0180 ; Operating system equates: 0190 CIO = $E456 0200 ICCOM = $0342 0210 ICBAL = $0344 0220 ICBAH = $0345 0230 ICBLL = $0348 0240 ICBLH = $0349 0250 ICAX1 = $034A 0260 ICAX2 = $034B 0270 TRIG0 = $D010 ;Joystick trig 0 0280 PUTBIN = $0B 0290 ; 0300 *= $4000 0310 INIT 0320 LDA VVBLKD ; Install 0330 STA VEXIT ; VBI 0340 LDA VVBLKD+1 ; routine 0350 STA VEXIT+1 0360 LDA # <START 0370 LDY # >START 0380 LDX JIFFY 0390 HOLD 0400 CPX JIFFY ; Sync so 0410 BEQ HOLD ; VBI won't 0420 ; 0430 STA VVBLKD ; crash the 0440 STY VVBLKD+1 ; installation 0450 LDA #CTL_S ; procedure. 0460 STA THROTTLE 0470 LDX #0 0480 STX BUSYCTL ;Enable throt. 0490 LDA #PUTBIN ; Print title 0500 STA ICCOM ; screen. 0510 LDA LEN 0520 STA ICBLL 0530 STX ICBLH 0540 LDA # <TITLE 0550 STA ICBAL 0560 LDA # >TITLE 0570 STA ICBAH 0580 JSR CIO 0590 RTS ; Back to DOS 0600 ; 0610 TITLE 0620 .BYTE "}����������������������",155 0630 .BYTE " By Matthew Ratcliff ",155,155 0640 .BYTE "Press Joystick trigger to pause",155 0650 .BYTE "(send ^S) scrolling text from modem.",155 0660 .BYTE "Press trigger again to continue",155 0670 .BYTE "(send a ^Q).",155,155 0680 LEN 0690 .BYTE *-TITLE 0700 ; 0710 ; Trigger Throttle installed. 0720 ; Actual program is below. 0730 ; 0740 *= $0100 0750 ; Place this code in the lower 0760 ; 62 bytes of the 256-byte 0770 ; system stack at $0100-$01FF. 0780 ; (Should be safe!) 0790 ; 0800 VEXIT 0810 .WORD 0 ;VBI exit vector 0820 THROTTLE 0830 .BYTE 0 ; Space or BS 0840 BUSYCTL 0850 .BYTE 0 ; Control flag 0860 START 0870 PHP ; VBI starts 0880 PHA ; Save all stats 0890 LDA BUSYCTL ; and regs. 0900 BNE TIMIT ;ON 0910 ; 0920 TESTON 0930 LDA TRIG0 ; Busy on 0940 ; request? 0950 BNE EXIT ; No. No change. 0960 ; 0970 INC BUSYCTL ;OFF, Turn it ON 0980 LDA THROTTLE ; Send next 0990 ; throttle state. 1000 STA CH 1010 JSR TOGGLE ;Change throttle 1020 ; state. 1030 EXIT 1040 PLA ; Restore stats 1050 PLP ; and reg & exit 1060 JMP (VEXIT) 1070 ; 1080 TIMIT 1090 LDA TRIG0 ; Trig released? 1100 BEQ EXIT ; No, time-out 1110 ; 1120 LDA #0 ; Yes, re-enable 1130 STA BUSYCTL 1140 JMP EXIT 1150 ; 1160 TOGGLE ; If ^s, then 1170 CMP #CTL_S ; next is ^q 1180 BNE TOGQ 1190 ; 1200 LDA #CTL_Q 1210 STA THROTTLE 1220 RTS 1230 ; 1240 TOGQ 1250 LDA #CTL_S 1260 STA THROTTLE 1270 RTS 1280 ; 1290 *= $02E0 ; init addr. 1300 .WORD INIT ; for LOAD 1310 .END
Back to previous page