
PROGRAM LISTING: 85-10/FINESCRL.M65
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