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›