0 ; FINE SCROLLING, LISTING 1 10 ; BY MARK ANDREWS 20 ; ANTIC PUBLISHING 30 ; 40 *= $3000 45 JMP INIT 50 ; 60 SDMCTL = $022F 70 ; 80 SDLSTL = $0230 90 SDLSTH = $0231 0100 ; 0110 COLOR0 = $02C4 ;OS COLOR REGISTER 0120 COLOR1 = $02C5 0130 COLOR2 = $02C6 0140 COLOR3 = $02C7 0150 COLOR4 = $02C8 0160 HSCROL = $D404 0162 VVBLKI = $0222 ;OS INTERRUPT VECTOR 0164 SYSVBV = $E45F ;INTERRUPT ENABLE VECTOR 0166 SETVBI = $E45C ;SET VERTICAL BLANK INTERRUPT VECTOR 0168 XITVBL = $E462 ;EXIT VBI VECTOR 0170 TCKPTR = $2000 0180 FSCPTR = TCKPTR+1 0190 .OPT OBJ 0200 ; 0210 ; DISPLAY LIST DATA 0220 ; 0230 START 0240 LINE1 .SBYTE " ANTIC PRESENTS " 0250 LINE2 .SBYTE " " 0260 .SBYTE " fine scrolling " 0270 LINE3 .SBYTE " On Your" 0280 .SBYTE " Atari " 0290 LINE4 .SBYTE " BY (YOUR NAME) " 0300 ; 0310 ; DISPLAY LIST 0320 ; 0330 HLST NOP ;('HELLO' LIST) 0340 .BYTE $70,$70,$70 0350 .BYTE $70,$70,$70,$70,$70 0360 .BYTE $46 0370 .WORD LINE1 0380 .BYTE $70,$70,$70,$70,$57 0390 SCROLN NOP ;(THIS IS THE LINE WE'LL SCROLL) 0400 .WORD $00 ; A BLANK TO BE FILLED IN LATER 0410 .BYTE $70,$42 0420 .WORD LINE3 0430 .BYTE $70,$70,$70,$70,$46 0440 .WORD LINE4 0450 .BYTE $70,$70,$70,$70,$70 0460 .BYTE $41 0470 .WORD HLST 0480 ; 0490 ; RUN PROGRAM 0500 ; 0510 INIT NOP ;PREPARE TO RUN PROGRAM 0520 LDA COLOR3 ; SET COLOR REGISTER 0530 STA COLOR1 0540 LDA COLOR4 0550 STA COLOR2 0560 ; 0570 LDA #0 ; TELL ANTIC WHERE DISPLAY LIST IS 0580 STA SDMCTL 0590 LDA #HLST&255 0600 STA SDLSTL 0610 LDA #HLST/256 0620 STA SDLSTH 0630 LDA #$22 0640 STA SDMCTL 0645 JSR TCKSET ; INITIAIZE TICKER ADDRESS 0650 ; 0660 ; FINE-SCROLLING ROUTINE 0680 LDA #42 ; # OF CHARACTERS IN SCROLL LINE 0690 STA TCKPTR 0700 LDA #8 0710 STA FSCPTR ; NUMBER OF COLOR CLOCKS TO FINE-SCROLL 0720 ; 0730 ; ENABLE INTERRUPT 0740 ; 0750 LDY #TCKINT&255 0760 LDX #TCKINT/256 0770 LDA #6 0780 JSR SETVBI 0790 ; 0800 ; TICKER INTERRUPT 0810 ; 0820 TCKINT 0830 LDA #SCROLL&255 0840 STA VVBLKI 0850 LDA #SCROLL/256 0860 STA VVBLKI+1 0870 ; 0880 INFIN 0890 JMP INFIN ; INFINITE LOOP 0900 ; 0910 SCROLL 0920 LDX FSCPTR ;8 TO START 0925 DEY 0930 DEX 0940 STX HSCROL 0950 BNE CONT 0960 LDX #8 0970 CONT NOP ; (CONTINUE) 0980 STX FSCPTR 0990 CPX #7 1000 BEQ COARSE 1010 JMP SYSVBV 1020 COARSE 1030 LDY TCKPTR ; NUMBER OF CHARACTERS TO SCROLL 1040 DEY 1050 BNE SCORSE ; LOOP BACK TILL ENTIRE LINE IS SCROLLED 1060 LDY #42 1070 JSR TCKSET ; RESET TICKER LINE 1080 SCORSE NOP ; DO COARSE SCROLL 1090 STY TCKPTR 1100 INC SCROLN ; LOW BYTE OF ADDRESS 1110 BNE RETURN 1120 INC SCROLN+1 ; HIGH BYTE OF ADDRESS 1130 RETURN 1140 JMP SYSVBV 1150 ; 1160 TCKSET 1170 LDA #LINE2&255 1180 STA SCROLN 1190 LDA #LINE2/256 1200 STA SCROLN+1 1210 ENDIT 1220 RTS 1280 *= $02E0 1290 .WORD INIT
Back to previous page