PROGRAM LISTING: 87-04/SLOWLIST.M65
0100 ;SLOWLIST
0110 ;BY MIKE EGGERS AND MATT LOVELESS
0120 ;(c) 1987, ANTIC PUBLISHING
0130 .TITLE "SLOWLIST -- listing controller"
0140 ;
0150 SETVBV = $E45C ;Set VBLANK.
0160 XITVBV = $E462 ;VBLANK exit.
0170 CONSOL = $D01F ;Console buttons
0180 CASINI = $02 ;Cassette boot in0181 ; init. vector.
0190 BOOTF = $09 ;Boot flag
0200 SSFLAG = $02FF ;Screen start/
0210 ; stop flag.
0220 *= $0600
0230 SETUP
0240 LDA #SETUP&255 ;Lo byte of
0250 ; INIT addr.
0260 STA CASINI
0270 LDA #SETUP/256 ;Hi byte
0280 STA CASINI+1
0290 LDA BOOTF ;Cass. boot?
0300 ORA #$02
0310 STA BOOTF
0320 LDA #$04 ;Check [OPTION].
0330 BIT CONSOL
0340 BNE ON
0350 ;
0360 RTS ;If [OPTION] is
0370 ; pushed, don't
0380 ; set VBLANK
0390 ; vectors!
0400 ON
0410 LDX #VBI/256 ;Hi VBI vector.
0420 LDY #VBI&255 ;Lo VBI vector.
0430 LDA #7 ;Use deferred.
0440 JSR SETVBV
0450 ;
0460 RTS
0470 ;
0480 VBI
0490 LDA #$02 ;Deferred VBLANK
0500 ; vectors here.
0510 BIT CONSOL ;Check [SELECT]
0520 BNE NOSELECT
0530 ;
0540 LDA CNTR ;[SELECT] pushed
0550 BEQ RESET ;Counter = 0?
0560 ;
0570 DEC CNTR ;No. Decrement.
0580 LDA #$01 ;Set SSFLAG.
0590 STA SSFLAG
0600 JMP XITVBV
0610 ;
0620 RESET
0630 LDA SPEED
0640 STA CNTR
0650 LDA #$00 ;Don't pause
0660 ; this VBLANK.
0670 STA SSFLAG
0680 JMP XITVBV
0690 ;
0700 NOSELECT
0710 LDA #$01 ;Check [START].
0720 AND CONSOL
0730 EOR #$01 ;Flip the
0740 ; [START] bit
0750 STA SSFLAG ; & set SSFLAG.
0760 JMP XITVBV
0770 ;
0780 CNTR
0790 .BYTE 0
0800 SPEED
0810 .BYTE 4 ;initial delay
0820 *= $02E0
0830 .WORD SETUP
0840 .END
Back to previous page