_  __   _  _         _ _     _      _           _           
  __| |/ /_ | || |     __| (_)___| | __ (_)_ __   __| | _____  __
 / _` | '_ \| || |_   / _` | / __| |/ / | | '_ \ / _` |/ _ \ \/ /
| (_| | (_) |__   _| | (_| | \__ \   <  | | | | | (_| |  __/>  < 
 \__,_|\___/   |_|    \__,_|_|___/_|\_\ |_|_| |_|\__,_|\___/_/\_\
                                                                 
            

SMOOTH24.ASM

FILE INFORMATION

FILENAME(S): SMOOTH24.ASM

FILE TYPE(S): SEQ

FILE SIZE: 6.8K

FIRST SEEN: 2025-11-30 17:31:21

APPEARS ON: 1 disk(s)

FILE HASH

636f66a7ab98a118bc0757c5ab539634f0cadc2492653f4733ea09d4871df7e2

FOUND ON DISKS (1 DISKS)

DISK TITLE FILENAME FILE TYPE COLLECTION TRACK SECTOR ACTIONS
CDU NOVEMBER 90 SMOOTH24.ASM SEQ UK CD 10 8 DOWNLOAD FILE

FILE CONTENT & ANALYSIS

00000000: 3B 0D 3B 20 D3 4D 4F 4F  54 48 20 53 43 52 4F 4C  |;.; .MOOTH SCROL|
00000010: 4C 45 52 2C 20 C3 4F 50  59 52 49 47 48 54 20 C1  |LER, .OPYRIGHT .|
00000020: 2E CD 49 4C 4C 45 54 54  0D 3B 0D 2A 3D 24 39 43  |..ILLETT.;.*=$9C|
00000030: 30 30 0D 3B 0D 56 49 43  20 3D 20 35 33 32 34 38  |00.;.VIC = 53248|
00000040: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000050: 3B 20 D6 49 43 20 43 48  49 50 0D 53 50 52 50 54  |; .IC CHIP.SPRPT|
00000060: 52 53 20 3D 20 33 33 37  38 34 0D 48 49 42 49 54  |RS = 33784.HIBIT|
00000070: 53 20 3D 20 56 49 43 20  2B 20 31 36 20 20 20 20  |S = VIC + 16    |
00000080: 20 20 20 20 20 20 3B 20  CD D3 C2 20 4F 46 20 53  |      ; ... OF S|
00000090: 50 52 49 54 45 20 50 4F  53 4E 53 0D 5A 50 54 52  |PRITE POSNS.ZPTR|
000000A0: 20 3D 20 24 46 42 0D 5A  50 54 52 32 3D 20 24 46  | = $FB.ZPTR2= $F|
000000B0: 44 0D 5A 4D 53 47 50 54  52 20 3D 20 24 46 42 0D  |D.ZMSGPTR = $FB.|
000000C0: 4B 42 48 49 54 20 3D 20  31 39 38 20 20 20 20 20  |KBHIT = 198     |
000000D0: 20 20 20 20 20 20 20 20  20 20 20 3B 20 D3 45 54  |           ; .ET|
000000E0: 20 49 46 20 43 48 41 52  20 54 59 50 45 44 2E 0D  | IF CHAR TYPED..|
000000F0: 56 44 55 20 3D 20 33 32  37 36 38 20 20 20 20 20  |VDU = 32768     |
00000100: 20 20 20 20 20 20 20 20  20 20 20 3B 20 CC 4F 43  |           ; .OC|
00000110: 20 4F 46 20 53 43 52 45  45 4E 0D 43 4F 4C 52 41  | OF SCREEN.COLRA|
00000120: 4D 20 3D 20 24 44 38 30  30 20 20 20 20 20 20 20  |M = $D800       |
00000130: 20 20 20 20 20 20 3B 20  CC 4F 43 20 4F 46 20 43  |      ; .OC OF C|
00000140: 4F 4C 4F 52 20 52 41 4D  0D 3B 0D 3B 20 20 20 20  |OLOR RAM.;.;    |
00000150: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 CA 55  |              .U|
00000160: 4D 50 20 56 45 43 54 4F  52 20 54 41 42 4C 45 2E  |MP VECTOR TABLE.|
00000170: 2E 0D 44 4F 53 4D 4F 4F  54 48 2E 0D 20 20 4A 4D  |..DOSMOOTH..  JM|
00000180: 50 20 4D 41 49 4E 0D 52  45 53 45 54 53 4D 4F 4F  |P MAIN.RESETSMOO|
00000190: 54 48 2E 0D 20 20 4A 4D  50 20 49 4E 49 54 0D 4A  |TH..  JMP INIT.J|
000001A0: 53 50 45 43 49 41 4C 46  58 2E 0D 20 20 4A 4D 50  |SPECIALFX..  JMP|
000001B0: 20 53 50 45 43 49 41 4C  46 58 0D 4A 44 4F 52 4F  | SPECIALFX.JDORO|
000001C0: 54 41 54 45 2E 0D 20 20  4A 53 52 20 44 4F 52 4F  |TATE..  JSR DORO|
000001D0: 54 41 54 45 43 48 41 52  0D 4A 57 41 49 54 31 53  |TATECHAR.JWAIT1S|
000001E0: 43 52 2E 0D 20 20 4A 4D  50 20 57 41 49 54 31 53  |CR..  JMP WAIT1S|
000001F0: 43 52 0D 4A 46 49 4C 4C  56 44 55 2E 0D 20 20 4A  |CR.JFILLVDU..  J|
00000200: 4D 50 20 46 49 4C 4C 56  44 55 0D 4A 44 4F 31 44  |MP FILLVDU.JDO1D|
00000210: 4F 54 2E 0D 20 20 4A 4D  50 20 44 4F 31 44 4F 54  |OT..  JMP DO1DOT|
00000220: 0D 3B 0D 20 20 2E 42 59  54 45 20 30 2C 30 2C 30  |.;.  .BYTE 0,0,0|
00000230: 0D 20 20 2E 42 59 54 45  20 30 2C 30 2C 30 2C 30  |.  .BYTE 0,0,0,0|
00000240: 2C 30 2C 30 2C 30 2C 30  0D 20 20 2E 42 59 54 45  |,0,0,0,0.  .BYTE|
00000250: 20 30 2C 30 2C 30 2C 30  2C 30 2C 30 2C 30 2C 30  | 0,0,0,0,0,0,0,0|
00000260: 0D 20 20 2E 42 59 54 45  20 30 2C 30 2C 30 2C 30  |.  .BYTE 0,0,0,0|
00000270: 2C 30 2C 30 2C 30 2C 30  0D 3B 20 20 20 20 CF 4B  |,0,0,0,0.;    .K|
00000280: 2C 20 46 4C 41 47 53 20  53 54 41 52 54 20 41 54  |, FLAGS START AT|
00000290: 20 24 39 43 32 38 0D 3B  0D 4D 53 47 50 54 52 2E  | $9C28.;.MSGPTR.|
000002A0: 20 20 20 20 20 20 20 20  20 20 20 20 20 3B 20 C9  |             ; .|
000002B0: 46 20 41 4E 59 20 53 43  52 4F 4C 4C 20 4F 46 20  |F ANY SCROLL OF |
000002C0: 45 44 47 45 2C 20 54 48  49 53 20 49 53 20 50 54  |EDGE, THIS IS PT|
000002D0: 52 20 54 4F 20 4E 45 57  20 53 50 52 0D 20 20 2E  |R TO NEW SPR.  .|
000002E0: 57 4F 52 44 20 24 39 30  30 30 0D 4D 53 47 4C 4F  |WORD $9000.MSGLO|
000002F0: 43 2E 0D 20 20 2E 57 4F  52 44 20 24 39 30 30 30  |C..  .WORD $9000|
00000300: 0D 43 48 52 53 45 54 4C  4F 43 2E 20 20 20 20 20  |.CHRSETLOC.     |
00000310: 20 20 20 20 3B 20 CC 4F  43 20 4F 46 20 55 53 45  |    ; .OC OF USE|
00000320: 52 20 44 45 46 20 43 48  41 52 20 53 45 54 0D 20  |R DEF CHAR SET. |
00000330: 20 2E 57 4F 52 44 20 24  38 38 30 30 0D 49 4E 44  | .WORD $8800.IND|
00000340: 45 58 2E 0D 20 20 2E 42  59 54 45 20 30 0D 52 4D  |EX..  .BYTE 0.RM|
00000350: 41 52 47 2E 20 20 20 20  20 20 20 20 20 20 20 20  |ARG.            |
00000360: 20 20 3B 20 D2 45 53 45  54 20 50 4F 53 20 46 4F  |  ; .ESET POS FO|
00000370: 52 20 4E 45 57 20 53 50  52 0D 20 20 2E 42 59 54  |R NEW SPR.  .BYT|
00000380: 45 20 31 31 32 0D 4C 4D  41 52 47 2E 0D 20 20 2E  |E 112.LMARG..  .|
00000390: 42 59 54 45 20 32 34 0D  48 53 50 41 43 49 4E 47  |BYTE 24.HSPACING|
000003A0: 2E 20 20 20 20 20 20 20  20 20 20 3B 20 C8 4F 52  |.          ; .OR|
000003B0: 49 5A 4F 4E 54 41 4C 20  53 50 41 43 49 4E 47 20  |IZONTAL SPACING |
000003C0: 4F 46 20 53 50 52 49 54  45 53 2E 0D 20 20 2E 42  |OF SPRITES..  .B|
000003D0: 59 54 45 20 34 36 0D 53  43 4F 4C 4F 52 2E 20 20  |YTE 46.SCOLOR.  |
000003E0: 20 20 20 20 20 20 20 20  20 20 3B 20 D3 50 52 49  |          ; .PRI|
000003F0: 54 45 20 43 4F 4C 4F 52  0D 20 20 2E 42 59 54 45  |TE COLOR.  .BYTE|
00000400: 20 31 0D 57 49 44 45 4D  4F 44 45 2E 20 20 20 20  | 1.WIDEMODE.    |
00000410: 20 20 20 20 20 20 3B 20  C4 4F 55 42 4C 45 20 57  |      ; .OUBLE W|
00000420: 49 44 54 48 20 53 50 52  49 54 45 53 0D 20 20 2E  |IDTH SPRITES.  .|
00000430: 42 59 54 45 20 32 35 35  0D 57 49 47 47 4C 45 46  |BYTE 255.WIGGLEF|
00000440: 4C 41 47 2E 20 20 20 20  20 20 20 20 3B 20 D3 45  |LAG.        ; .E|
00000450: 54 20 46 4F 52 20 4A 55  4D 50 49 4E 47 20 53 43  |T FOR JUMPING SC|
00000460: 52 4F 4C 4C 0D 20 20 2E  42 59 54 45 20 30 0D 53  |ROLL.  .BYTE 0.S|
00000470: 50 45 45 44 2E 20 20 20  20 20 20 20 20 20 20 20  |PEED.           |
00000480: 20 20 3B 20 D3 43 52 4F  4C 4C 20 53 50 45 45 44  |  ; .CROLL SPEED|
00000490: 20 49 4E 20 58 2F 35 30  20 53 45 43 2F 44 4F 54  | IN X/50 SEC/DOT|
000004A0: 0D 20 20 2E 42 59 54 45  20 30 0D 53 50 52 4F 46  |.  .BYTE 0.SPROF|
000004B0: 46 53 45 54 2E 20 20 20  20 20 20 20 20 20 3B 20  |FSET.         ; |
000004C0: D3 54 41 52 54 20 4F 46  20 53 50 52 49 54 45 53  |.TART OF SPRITES|
000004D0: 0D 20 20 2E 42 59 54 45  20 31 32 37 0D 48 4C 49  |.  .BYTE 127.HLI|
000004E0: 4E 45 2E 20 20 20 20 20  20 20 20 20 20 20 20 20  |NE.             |
000004F0: 3B 20 D3 43 52 45 45 4E  20 4C 49 4E 45 20 46 4F  |; .CREEN LINE FO|
00000500: 52 20 53 43 52 4F 4C 4C  0D 20 20 2E 42 59 54 45  |R SCROLL.  .BYTE|
00000510: 20 32 32 34 0D 4D 4F 56  45 42 59 32 46 4C 41 47  | 224.MOVEBY2FLAG|
00000520: 2E 20 20 20 20 20 20 20  3B 20 CD 4F 56 45 20 53  |.       ; .OVE S|
00000530: 43 52 4F 4C 4C 20 42 59  20 32 20 49 46 20 42 49  |CROLL BY 2 IF BI|
00000540: 54 20 37 20 53 45 54 0D  20 20 2E 42 59 54 45 20  |T 7 SET.  .BYTE |
00000550: 30 0D 46 49 4C 4C 43 48  41 52 2E 20 20 20 20 20  |0.FILLCHAR.     |
00000560: 20 20 20 20 20 3B 20 C3  48 41 52 20 46 4F 52 20  |     ; .HAR FOR |
00000570: 53 43 52 45 45 4E 20 46  49 4C 4C 0D 20 20 2E 42  |SCREEN FILL.  .B|
00000580: 59 54 45 20 38 37 0D 54  49 43 4B 43 48 41 52 2E  |YTE 87.TICKCHAR.|
00000590: 20 20 20 20 20 20 20 20  20 20 3B 20 C3 48 41 52  |          ; .HAR|
000005A0: 20 55 53 45 44 20 46 4F  52 20 27 54 49 43 4B 27  | USED FOR 'TICK'|
000005B0: 20 46 58 0D 20 20 2E 42  59 54 45 20 32 30 39 0D  | FX.  .BYTE 209.|
000005C0: 52 4F 54 43 48 41 52 2E  20 20 20 20 20 20 20 20  |ROTCHAR.        |
000005D0: 20 20 20 3B 20 C3 48 41  52 20 52 4F 54 41 54 45  |   ; .HAR ROTATE|
000005E0: 44 20 46 4F 52 20 4D 4F  56 49 4E 47 20 42 41 43  |D FOR MOVING BAC|
000005F0: 4B 47 52 4F 55 4E 44 0D  20 20 2E 42 59 54 45 20  |KGROUND.  .BYTE |
00000600: 38 37 0D 52 4F 54 4C 45  4E 2E 20 20 20 20 20 20  |87.ROTLEN.      |
00000610: 20 20 20 20 20 20 3B 20  CE 4F 20 4F 46 20 50 49  |      ; .O OF PI|
00000620: 58 45 4C 53 20 54 4F 20  52 4F 54 41 54 45 0D 20  |XELS TO ROTATE. |
00000630: 20 2E 42 59 54 45 20 37  0D 46 49 4C 4C 43 4F 4C  | .BYTE 7.FILLCOL|
00000640: 4F 52 2E 20 20 20 20 20  20 20 20 20 3B 20 C3 4F  |OR.         ; .O|
00000650: 4C 4F 52 20 46 4F 52 20  53 43 52 45 45 4E 20 46  |LOR FOR SCREEN F|
00000660: 49 4C 4C 0D 20 20 2E 42  59 54 45 20 30 0D 4D 41  |ILL.  .BYTE 0.MA|
00000670: 53 4B 2E 0D 20 20 2E 42  59 54 45 20 31 2C 32 2C  |SK..  .BYTE 1,2,|
00000680: 34 2C 38 2C 31 36 2C 33  32 2C 36 34 2C 31 32 38  |4,8,16,32,64,128|
00000690: 0D 57 49 47 47 4C 45 2E  20 20 20 20 20 20 20 20  |.WIGGLE.        |
000006A0: 20 20 20 20 20 3B 20 D6  45 52 54 20 57 49 47 47  |     ; .ERT WIGG|
000006B0: 4C 45 20 46 41 43 54 4F  52 0D 20 20 2E 42 59 54  |LE FACTOR.  .BYT|
000006C0: 45 20 37 2C 35 2C 34 2C  33 2C 32 2C 31 2C 31 2C  |E 7,5,4,3,2,1,1,|
000006D0: 30 2C 30 2C 30 2C 31 2C  31 2C 32 2C 33 2C 34 2C  |0,0,0,1,1,2,3,4,|
000006E0: 35 0D 3B 0D 3B 0D 4D 41  49 4E 2E 0D 4D 41 49 4E  |5.;.;.MAIN..MAIN|
000006F0: 4C 4F 4F 50 2E 0D 20 20  4A 53 52 20 44 4F 52 4F  |LOOP..  JSR DORO|
00000700: 54 41 54 45 43 48 41 52  20 3B 20 D2 4F 54 41 54  |TATECHAR ; .OTAT|
00000710: 45 20 53 43 52 4F 4C 4C  49 4E 47 20 42 41 43 4B  |E SCROLLING BACK|
00000720: 47 52 4F 55 4E 44 0D 20  20 4C 44 58 20 53 50 45  |GROUND.  LDX SPE|
00000730: 45 44 20 20 20 20 20 20  20 20 3B 20 C6 49 52 53  |ED        ; .IRS|
00000740: 54 20 57 41 49 54 20 46  4F 52 20 41 20 54 49 4D  |T WAIT FOR A TIM|
00000750: 45 20 26 20 53 59 4E 43  20 54 4F 20 53 43 52 45  |E & SYNC TO SCRE|
00000760: 45 4E 0D 57 4C 4F 4F 50  2E 0D 20 20 20 4A 53 52  |EN.WLOOP..   JSR|
00000770: 20 57 41 49 54 31 53 43  52 0D 20 20 20 44 45 58  | WAIT1SCR.   DEX|
00000780: 0D 20 20 42 50 4C 20 57  4C 4F 4F 50 0D 20 20 4A  |.  BPL WLOOP.  J|
00000790: 53 52 20 44 4F 31 44 4F  54 20 20 20 20 20 20 20  |SR DO1DOT       |
000007A0: 3B 20 D3 43 52 4F 4C 4C  20 4D 45 53 53 41 47 45  |; .CROLL MESSAGE|
000007B0: 20 31 20 44 4F 54 2E 2E  0D 20 20 42 49 54 20 4D  | 1 DOT...  BIT M|
000007C0: 4F 56 45 42 59 32 46 4C  41 47 20 20 3B 20 32 20  |OVEBY2FLAG  ; 2 |
000007D0: 44 4F 54 20 4D 4F 56 45  20 3F 0D 20 20 42 50 4C  |DOT MOVE ?.  BPL|
000007E0: 20 4E 4F 32 4D 4F 56 45  20 20 20 20 20 20 3B 20  | NO2MOVE      ; |
000007F0: CE 4F 2E 2E 0D 20 20 4A  53 52 20 44 4F 31 44 4F  |.O...  JSR DO1DO|
00000800: 54 20 20 20 20 20 20 20  3B 20 D3 43 52 4F 4C 4C  |T       ; .CROLL|
00000810: 20 4D 45 53 53 41 47 45  20 31 20 4D 4F 52 45 20  | MESSAGE 1 MORE |
00000820: 44 4F 54 2E 2E 0D 4E 4F  32 4D 4F 56 45 2E 0D 20  |DOT...NO2MOVE.. |
00000830: 20 4C 44 41 20 4B 42 48  49 54 0D 20 20 42 45 51  | LDA KBHIT.  BEQ|
00000840: 20 4D 41 49 4E 4C 4F 4F  50 20 20 20 20 20 3B 20  | MAINLOOP     ; |
00000850: CE 4F 20 4B 45 59 20 48  49 54 2C 20 52 45 4C 4F  |.O KEY HIT, RELO|
00000860: 4F 50 2E 2E 0D 20 20 52  54 53 20 20 20 20 20 20  |OP...  RTS      |
00000870: 20 20 20 20 20 20 20 20  3B 20 CF 4B 2C 20 44 4F  |        ; .K, DO|
00000880: 4E 45 21 0D 3B 0D 44 4F  31 44 4F 54 2E 20 20 20  |NE!.;.DO1DOT.   |
00000890: 20 20 20 20 20 20 20 20  20 20 3B 20 D3 43 52 4F  |          ; .CRO|
000008A0: 4C 4C 20 31 20 44 4F 54  20 4C 45 46 54 2C 0D 20  |LL 1 DOT LEFT,. |
000008B0: 20 4C 44 58 20 23 24 30  30 20 20 20 20 20 20 20  | LDX #$00       |
000008C0: 20 20 20 3B 20 C9 4E 44  45 58 20 49 4E 54 4F 20  |   ; .NDEX INTO |
000008D0: 53 50 52 49 54 45 53 0D  20 20 4C 44 59 20 23 24  |SPRITES.  LDY #$|
000008E0: 30 30 0D 20 20 53 54 59  20 49 4E 44 45 58 0D 4D  |00.  STY INDEX.M|
000008F0: 4F 52 45 2E 0D 20 20 4C  44 41 20 56 49 43 2C 58  |ORE..  LDA VIC,X|
00000900: 0D 20 20 42 4E 45 20 4E  4F 48 49 20 20 20 20 20  |.  BNE NOHI     |
00000910: 20 20 20 20 20 3B 20 CE  4F 20 4F 56 45 52 46 4C  |     ; .O OVERFL|
00000920: 4F 57 2E 2E 0D 20 20 20  4C 44 41 20 4D 41 53 4B  |OW...   LDA MASK|
00000930: 2C 59 20 20 20 20 20 20  20 3B 20 C7 45 54 20 48  |,Y       ; .ET H|
00000940: 49 20 42 49 54 0D 20 20  20 41 4E 44 20 48 49 42  |I BIT.   AND HIB|
00000950: 49 54 53 0D 20 20 20 42  4E 45 20 4E 4F 4E 45 57  |ITS.   BNE NONEW|
00000960: 20 20 20 20 20 20 20 20  3B 20 D3 45 54 2C 20 53  |        ; .ET, S|
00000970: 4F 20 43 4C 45 41 52 2E  2E 0D 20 20 20 20 4A 53  |O CLEAR...    JS|
00000980: 52 20 4E 45 57 53 50 52  49 54 45 20 20 20 3B 20  |R NEWSPRITE   ; |
00000990: D3 54 41 52 54 20 41 20  4E 45 57 20 53 50 52 49  |.TART A NEW SPRI|
000009A0: 54 45 0D 20 20 20 20 43  4C 43 0D 20 20 20 20 42  |TE.    CLC.    B|
000009B0: 43 43 20 4E 4F 48 49 0D  4E 4F 4E 45 57 2E 20 20  |CC NOHI.NONEW.  |
000009C0: 20 20 20 20 20 20 20 20  20 20 20 20 3B 20 CC 4F  |            ; .O|
000009D0: 20 42 59 54 45 20 4F 56  45 52 46 4C 4F 57 2C 20  | BYTE OVERFLOW, |
000009E0: 43 4C 52 20 48 49 20 42  49 54 0D 20 20 20 4C 44  |CLR HI BIT.   LD|
000009F0: 41 20 4D 41 53 4B 2C 59  0D 20 20 20 45 4F 52 20  |A MASK,Y.   EOR |
00000A00: 23 20 24 46 46 20 20 20  20 20 20 20 20 3B 20 C3  |# $FF        ; .|
00000A10: 41 4C 43 20 4D 41 53 4B  20 46 4F 52 20 48 49 20  |ALC MASK FOR HI |
00000A20: 42 49 54 0D 20 20 20 41  4E 44 20 48 49 42 49 54  |BIT.   AND HIBIT|
00000A30: 53 0D 20 20 20 53 54 41  20 48 49 42 49 54 53 0D  |S.   STA HIBITS.|
00000A40: 4E 4F 48 49 2E 20 20 20  20 20 20 20 20 20 20 20  |NOHI.           |
00000A50: 20 20 20 20 3B 20 CF 4B  2C 20 4E 4F 57 20 53 45  |    ; .K, NOW SE|
00000A60: 54 20 56 45 52 54 20 50  4F 53 0D 20 20 44 45 43  |T VERT POS.  DEC|
00000A70: 20 56 49 43 2C 58 20 20  20 20 20 20 20 20 20 3B  | VIC,X         ;|
00000A80: 20 CD 4F 56 45 20 53 50  52 20 4C 45 46 54 0D 20  | .OVE SPR LEFT. |
00000A90: 20 4C 44 59 20 49 4E 44  45 58 0D 20 20 4C 44 41  | LDY INDEX.  LDA|
00000AA0: 20 23 30 0D 20 20 42 49  54 20 57 49 47 47 4C 45  | #0.  BIT WIGGLE|
00000AB0: 46 4C 41 47 20 20 20 3B  20 C4 4F 20 57 45 20 57  |FLAG   ; .O WE W|
00000AC0: 49 47 47 4C 45 20 3F 0D  20 20 42 50 4C 20 4E 4F  |IGGLE ?.  BPL NO|
00000AD0: 57 49 47 47 4C 45 0D 20  20 4C 44 41 20 56 49 43  |WIGGLE.  LDA VIC|
00000AE0: 2C 58 20 20 20 20 20 20  20 20 3B 20 55 53 45 20  |,X        ; USE |
00000AF0: 48 50 4F 53 20 41 53 20  49 4E 44 45 58 20 54 4F  |HPOS AS INDEX TO|
00000B00: 20 57 49 47 47 4C 45 0D  20 20 41 4E 44 20 23 20  | WIGGLE.  AND # |
00000B10: 24 30 46 0D 20 20 54 41  59 0D 20 20 4C 44 41 20  |$0F.  TAY.  LDA |
00000B20: 57 49 47 47 4C 45 2C 59  0D 4E 4F 57 49 47 47 4C  |WIGGLE,Y.NOWIGGL|
00000B30: 45 2E 0D 20 20 43 4C 43  20 20 20 20 20 20 20 20  |E..  CLC        |
00000B40: 20 20 20 20 20 20 3B 20  CE 4F 57 20 41 44 44 20  |      ; .OW ADD |
00000B50: 49 4E 20 4E 4F 52 4D 20  56 45 52 54 20 4C 49 4E  |IN NORM VERT LIN|
00000B60: 45 0D 20 20 41 44 43 20  48 4C 49 4E 45 0D 20 20  |E.  ADC HLINE.  |
00000B70: 53 54 41 20 56 49 43 2B  31 2C 58 20 20 20 20 20  |STA VIC+1,X     |
00000B80: 20 3B 20 D3 54 4F 52 45  20 56 45 52 54 20 50 4F  | ; .TORE VERT PO|
00000B90: 53 20 46 4F 52 20 53 50  52 49 54 45 2E 0D 20 20  |S FOR SPRITE..  |
00000BA0: 49 4E 43 20 49 4E 44 45  58 20 20 20 20 20 20 20  |INC INDEX       |
00000BB0: 20 3B 20 CF 4B 2C 20 4E  45 58 54 20 53 50 52 49  | ; .K, NEXT SPRI|
00000BC0: 54 45 2E 2E 0D 20 20 4C  44 59 20 49 4E 44 45 58  |TE...  LDY INDEX|
00000BD0: 0D 20 20 49 4E 58 0D 20  20 49 4E 58 0D 20 20 43  |.  INX.  INX.  C|
00000BE0: 50 59 20 23 20 38 0D 20  20 42 4E 45 20 4D 4F 52  |PY # 8.  BNE MOR|
00000BF0: 45 20 20 20 20 20 20 20  20 20 3B 20 4E 45 58 54  |E         ; NEXT|
00000C00: 20 53 50 52 49 54 45 2E  2E 0D 20 20 52 54 53 20  | SPRITE...  RTS |
00000C10: 20 20 20 20 20 20 20 20  20 20 20 20 20 3B 20 CF  |             ; .|
00000C20: 4B 2C 20 44 4F 4E 45 21  0D 3B 0D 4E 45 57 53 50  |K, DONE!.;.NEWSP|
00000C30: 52 49 54 45 2E 20 20 20  20 20 20 20 20 20 3B 20  |RITE.         ; |
00000C40: D3 54 41 52 54 20 41 20  4E 45 57 20 53 50 52 49  |.TART A NEW SPRI|
00000C50: 54 45 0D 20 20 20 4C 44  41 20 52 4D 41 52 47 20  |TE.   LDA RMARG |
00000C60: 20 20 20 20 20 20 3B 20  D3 54 41 52 54 20 4E 45  |      ; .TART NE|
00000C70: 57 20 53 50 52 49 54 45  20 46 41 52 20 52 49 47  |W SPRITE FAR RIG|
00000C80: 48 54 0D 20 20 20 53 54  41 20 56 49 43 2C 58 0D  |HT.   STA VIC,X.|
00000C90: 20 20 20 4C 44 41 20 4D  41 53 4B 2C 59 0D 20 20  |   LDA MASK,Y.  |
00000CA0: 20 4F 52 41 20 48 49 42  49 54 53 20 20 20 20 20  | ORA HIBITS     |
00000CB0: 20 3B 20 D3 45 54 20 48  49 20 42 49 54 0D 20 20  | ; .ET HI BIT.  |
00000CC0: 20 53 54 41 20 48 49 42  49 54 53 0D 4E 45 58 54  | STA HIBITS.NEXT|
00000CD0: 4D 53 47 2E 20 20 20 20  20 20 20 20 20 20 20 3B  |MSG.           ;|
00000CE0: 20 C1 44 56 41 4E 43 45  20 4D 45 53 53 41 47 45  | .DVANCE MESSAGE|
00000CF0: 20 50 4F 49 4E 54 45 52  0D 20 20 20 49 4E 43 20  | POINTER.   INC |
00000D00: 4D 53 47 50 54 52 0D 20  20 20 42 4E 45 20 47 45  |MSGPTR.   BNE GE|
00000D10: 54 4D 53 47 0D 20 20 20  49 4E 43 20 4D 53 47 50  |TMSG.   INC MSGP|
00000D20: 54 52 2B 31 0D 47 45 54  4D 53 47 2E 20 20 20 20  |TR+1.GETMSG.    |
00000D30: 20 20 20 20 20 20 20 20  3B 20 C7 45 54 20 43 48  |        ; .ET CH|
00000D40: 41 52 20 46 52 4F 4D 20  4D 53 47 20 53 54 52 49  |AR FROM MSG STRI|
00000D50: 4E 47 0D 20 20 20 4C 44  41 20 4D 53 47 50 54 52  |NG.   LDA MSGPTR|
00000D60: 20 20 20 20 20 20 3B 20  CD 4F 56 20 50 54 52 20  |      ; .OV PTR |
00000D70: 54 4F 20 5A 45 52 4F 20  50 41 47 45 0D 20 20 20  |TO ZERO PAGE.   |
00000D80: 53 54 41 20 5A 4D 53 47  50 54 52 0D 20 20 20 4C  |STA ZMSGPTR.   L|
00000D90: 44 41 20 4D 53 47 50 54  52 2B 31 0D 20 20 20 53  |DA MSGPTR+1.   S|
00000DA0: 54 41 20 5A 4D 53 47 50  54 52 2B 31 0D 20 20 20  |TA ZMSGPTR+1.   |
00000DB0: 4C 44 59 20 23 30 0D 20  20 20 4C 44 41 20 28 5A  |LDY #0.   LDA (Z|
00000DC0: 4D 53 47 50 54 52 29 2C  59 20 20 20 20 3B 20 C7  |MSGPTR),Y    ; .|
00000DD0: 45 54 20 4D 53 47 20 43  48 41 52 0D 20 20 20 42  |ET MSG CHAR.   B|
00000DE0: 4E 45 20 4E 45 57 32 20  20 20 20 20 20 20 20 3B  |NE NEW2        ;|
00000DF0: 20 CE 4F 54 20 4E 55 4C  4C 20 59 45 54 2C 20 53  | .OT NULL YET, S|
00000E00: 4F 20 50 52 49 4E 54 2E  2E 0D 20 20 20 20 4C 44  |O PRINT...    LD|
00000E10: 41 20 4D 53 47 4C 4F 43  20 20 20 20 20 3B 20 C5  |A MSGLOC     ; .|
00000E20: 4E 44 20 4F 46 20 4D 45  53 53 41 47 45 2C 20 53  |ND OF MESSAGE, S|
00000E30: 4F 20 52 45 53 45 54 20  4D 53 47 20 54 4F 20 53  |O RESET MSG TO S|
00000E40: 54 41 52 54 0D 20 20 20  20 53 54 41 20 4D 53 47  |TART.    STA MSG|
00000E50: 50 54 52 0D 20 20 20 20  4C 44 41 20 4D 53 47 4C  |PTR.    LDA MSGL|
00000E60: 4F 43 2B 31 0D 20 20 20  20 53 54 41 20 4D 53 47  |OC+1.    STA MSG|
00000E70: 50 54 52 2B 31 0D 20 20  20 20 43 4C 43 0D 20 20  |PTR+1.    CLC.  |
00000E80: 20 20 42 43 43 20 47 45  54 4D 53 47 0D 4E 45 57  |  BCC GETMSG.NEW|
00000E90: 32 2E 0D 20 20 20 42 50  4C 20 4E 4F 52 4D 4C 45  |2..   BPL NORMLE|
00000EA0: 54 20 20 20 20 20 3B 20  CE 4F 20 53 50 45 43 49  |T     ; .O SPECI|
00000EB0: 41 4C 20 45 46 46 45 43  54 53 0D 20 20 20 43 4D  |AL EFFECTS.   CM|
00000EC0: 50 20 23 31 32 38 20 20  20 20 20 20 20 3B 20 D4  |P #128       ; .|
00000ED0: 4F 47 47 4C 45 20 57 49  47 47 4C 45 20 3F 0D 20  |OGGLE WIGGLE ?. |
00000EE0: 20 20 42 4E 45 20 4E 45  57 33 0D 20 20 20 20 4C  |  BNE NEW3.    L|
00000EF0: 44 41 20 23 24 38 30 0D  20 20 20 20 45 4F 52 20  |DA #$80.    EOR |
00000F00: 57 49 47 47 4C 45 46 4C  41 47 0D 20 20 20 20 53  |WIGGLEFLAG.    S|
00000F10: 54 41 20 57 49 47 47 4C  45 46 4C 41 47 0D 20 20  |TA WIGGLEFLAG.  |
00000F20: 20 20 43 4C 43 0D 20 20  20 20 42 43 43 20 4E 45  |  CLC.    BCC NE|
00000F30: 58 54 4D 53 47 20 20 20  20 3B 20 C1 4E 4F 54 48  |XTMSG    ; .NOTH|
00000F40: 45 52 20 4D 53 47 20 43  48 41 52 2E 2E 0D 4E 45  |ER MSG CHAR...NE|
00000F50: 57 33 2E 0D 20 20 20 43  4D 50 20 23 31 32 39 20  |W3..   CMP #129 |
00000F60: 20 20 20 20 20 20 3B 20  D4 4F 47 47 4C 45 20 32  |      ; .OGGLE 2|
00000F70: 20 44 4F 54 20 53 50 45  45 44 3F 0D 20 20 20 42  | DOT SPEED?.   B|
00000F80: 4E 45 20 4E 45 57 34 0D  20 20 20 20 4C 44 41 20  |NE NEW4.    LDA |
00000F90: 23 24 38 30 0D 20 20 20  20 45 4F 52 20 4D 4F 56  |#$80.    EOR MOV|
00000FA0: 45 42 59 32 46 4C 41 47  0D 20 20 20 20 53 54 41  |EBY2FLAG.    STA|
00000FB0: 20 4D 4F 56 45 42 59 32  46 4C 41 47 0D 20 20 20  | MOVEBY2FLAG.   |
00000FC0: 20 43 4C 43 0D 20 20 20  20 42 43 43 20 4E 45 58  | CLC.    BCC NEX|
00000FD0: 54 4D 53 47 20 20 20 20  3B 20 C1 4E 4F 54 48 45  |TMSG    ; .NOTHE|
00000FE0: 52 20 4D 53 47 20 43 48  41 52 2E 2E 0D 4E 45 57  |R MSG CHAR...NEW|
00000FF0: 34 2E 0D 20 20 20 20 41  4E 44 20 23 24 31 46 0D  |4..    AND #$1F.|
00001000: 20 20 20 20 53 54 41 20  53 50 45 45 44 0D 20 20  |    STA SPEED.  |
00001010: 20 20 43 4C 43 0D 20 20  20 20 42 43 43 20 4E 45  |  CLC.    BCC NE|
00001020: 58 54 4D 53 47 20 20 20  20 3B 20 C1 4E 4F 54 48  |XTMSG    ; .NOTH|
00001030: 45 52 20 4D 53 47 20 43  48 41 52 2E 2E 0D 4E 4F  |ER MSG CHAR...NO|
00001040: 52 4D 4C 45 54 2E 20 20  20 20 20 20 20 20 20 20  |RMLET.          |
00001050: 20 3B 20 CF 4B 20 4E 4F  52 4D 20 4C 45 54 54 45  | ; .K NORM LETTE|
00001060: 52 20 49 4E 20 41 43 43  2C 20 53 54 4F 52 45 20  |R IN ACC, STORE |
00001070: 49 4E 20 53 50 52 49 54  45 20 50 54 52 0D 20 20  |IN SPRITE PTR.  |
00001080: 20 4C 44 59 20 49 4E 44  45 58 0D 20 20 20 43 4C  | LDY INDEX.   CL|
00001090: 43 0D 20 20 20 41 44 43  20 53 50 52 4F 46 46 53  |C.   ADC SPROFFS|
000010A0: 45 54 0D 20 20 20 53 54  41 20 53 50 52 50 54 52  |ET.   STA SPRPTR|
000010B0: 53 2C 59 0D 20 20 20 4A  53 52 20 53 50 45 43 49  |S,Y.   JSR SPECI|
000010C0: 41 4C 46 58 20 20 20 3B  20 CD 4F 56 45 20 4C 49  |ALFX   ; .OVE LI|
000010D0: 4E 45 20 49 4E 20 42 41  4C 4C 20 43 48 52 0D 20  |NE IN BALL CHR. |
000010E0: 20 20 52 54 53 0D 3B 0D  53 50 45 43 49 41 4C 46  |  RTS.;.SPECIALF|
000010F0: 58 2E 20 20 20 20 20 20  20 20 20 3B 20 CD 4F 56  |X.         ; .OV|
00001100: 45 20 4C 49 4E 45 20 49  4E 20 42 41 4C 4C 20 43  |E LINE IN BALL C|
00001110: 48 52 0D 20 20 20 54 59  41 0D 20 20 20 50 48 41  |HR.   TYA.   PHA|
00001120: 20 20 20 20 20 20 20 20  20 20 20 20 20 3B 20 53  |             ; S|
00001130: 54 41 53 48 20 59 20 52  45 47 0D 20 20 20 4C 44  |TASH Y REG.   LD|
00001140: 41 20 54 49 43 4B 43 48  41 52 20 20 20 20 3B 20  |A TICKCHAR    ; |
00001150: C3 48 41 52 41 43 54 45  52 20 54 4F 20 54 49 43  |.HARACTER TO TIC|
00001160: 4B 0D 20 20 20 4A 53 52  20 53 45 54 43 48 52 50  |K.   JSR SETCHRP|
00001170: 54 52 20 20 20 3B 20 D3  45 54 20 55 50 20 28 5A  |TR   ; .ET UP (Z|
00001180: 50 54 52 29 20 54 4F 20  43 48 41 52 0D 20 20 20  |PTR) TO CHAR.   |
00001190: 4C 44 59 20 23 33 0D 20  20 20 4C 44 41 20 28 5A  |LDY #3.   LDA (Z|
000011A0: 50 54 52 29 2C 59 0D 20  20 20 50 48 41 0D 20 20  |PTR),Y.   PHA.  |
000011B0: 20 49 4E 59 0D 20 20 20  4C 44 41 20 28 5A 50 54  | INY.   LDA (ZPT|
000011C0: 52 29 2C 59 0D 20 20 20  44 45 59 0D 20 20 20 53  |R),Y.   DEY.   S|
000011D0: 54 41 20 28 5A 50 54 52  29 2C 59 0D 20 20 20 50  |TA (ZPTR),Y.   P|
000011E0: 4C 41 0D 20 20 20 49 4E  59 0D 20 20 20 53 54 41  |LA.   INY.   STA|
000011F0: 20 28 5A 50 54 52 29 2C  59 0D 20 20 20 50 4C 41  | (ZPTR),Y.   PLA|
00001200: 0D 20 20 20 54 41 59 0D  20 20 20 52 54 53 0D 3B  |.   TAY.   RTS.;|
00001210: 0D 44 4F 52 4F 54 41 54  45 43 48 41 52 2E 20 20  |.DOROTATECHAR.  |
00001220: 20 20 20 20 3B 20 D2 4F  54 41 54 45 20 53 50 45  |    ; .OTATE SPE|
00001230: 43 49 41 4C 20 43 48 41  52 20 56 45 52 54 49 43  |CIAL CHAR VERTIC|
00001240: 41 4C 4C 59 20 46 4F 52  20 45 46 46 45 43 54 0D  |ALLY FOR EFFECT.|
00001250: 20 20 20 54 59 41 0D 20  20 20 50 48 41 20 20 20  |   TYA.   PHA   |
00001260: 20 20 20 20 20 20 20 20  20 20 3B 20 53 54 41 53  |          ; STAS|
00001270: 48 20 59 20 52 45 47 0D  20 20 20 4C 44 41 20 52  |H Y REG.   LDA R|
00001280: 4F 54 43 48 41 52 20 20  20 20 20 3B 20 C3 48 41  |OTCHAR     ; .HA|
00001290: 52 41 43 54 45 52 20 54  4F 20 52 4F 54 41 54 45  |RACTER TO ROTATE|
000012A0: 0D 20 20 20 4A 53 52 20  53 45 54 43 48 52 50 54  |.   JSR SETCHRPT|
000012B0: 52 20 20 20 3B 20 D3 45  54 20 55 50 20 28 5A 50  |R   ; .ET UP (ZP|
000012C0: 54 52 29 20 54 4F 20 43  48 41 52 0D 20 20 20 4C  |TR) TO CHAR.   L|
000012D0: 44 59 20 52 4F 54 4C 45  4E 20 20 20 20 20 20 3B  |DY ROTLEN      ;|
000012E0: 20 CE 4F 20 54 4F 20 52  4F 54 41 54 45 0D 20 20  | .O TO ROTATE.  |
000012F0: 20 4C 44 41 20 28 5A 50  54 52 29 2C 59 20 20 20  | LDA (ZPTR),Y   |
00001300: 20 3B 20 D3 54 41 53 48  20 54 4F 50 20 4F 4E 45  | ; .TASH TOP ONE|
00001310: 0D 20 20 20 50 48 41 0D  53 50 45 43 31 2E 0D 20  |.   PHA.SPEC1.. |
00001320: 20 20 20 44 45 59 20 20  20 20 20 20 20 20 20 20  |   DEY          |
00001330: 20 20 20 3B 20 D2 49 50  50 4C 45 20 42 59 54 45  |   ; .IPPLE BYTE|
00001340: 53 20 44 4F 57 4E 2E 2E  0D 20 20 20 20 4C 44 41  |S DOWN...    LDA|
00001350: 20 28 5A 50 54 52 29 2C  59 0D 20 20 20 20 49 4E  | (ZPTR),Y.    IN|
00001360: 59 0D 20 20 20 20 53 54  41 20 28 5A 50 54 52 29  |Y.    STA (ZPTR)|
00001370: 2C 59 0D 20 20 20 20 44  45 59 0D 20 20 20 42 4E  |,Y.    DEY.   BN|
00001380: 45 20 53 50 45 43 31 0D  20 20 20 50 4C 41 0D 20  |E SPEC1.   PLA. |
00001390: 20 20 53 54 41 20 28 5A  50 54 52 29 2C 59 20 20  |  STA (ZPTR),Y  |
000013A0: 20 20 3B 20 D2 45 47 45  54 20 54 4F 50 20 56 41  |  ; .EGET TOP VA|
000013B0: 4C 20 41 4E 44 20 50 55  54 20 41 54 20 42 4F 54  |L AND PUT AT BOT|
000013C0: 54 4F 4D 0D 20 20 20 50  4C 41 20 20 20 20 20 20  |TOM.   PLA      |
000013D0: 20 20 20 20 20 20 20 3B  20 D2 45 47 45 54 20 59  |       ; .EGET Y|
000013E0: 20 52 45 47 0D 20 20 20  54 41 59 0D 20 20 20 52  | REG.   TAY.   R|
000013F0: 54 53 0D 3B 0D 53 45 54  43 48 52 50 54 52 2E 20  |TS.;.SETCHRPTR. |
00001400: 20 20 20 20 20 20 20 20  3B 20 D3 45 54 20 55 50  |        ; .ET UP|
00001410: 20 28 5A 50 54 52 29 20  54 4F 20 50 4F 49 4E 54  | (ZPTR) TO POINT|
00001420: 20 54 4F 20 4C 4F 43 20  4F 46 20 43 48 41 52 20  | TO LOC OF CHAR |
00001430: 49 4E 20 C1 43 43 0D 20  20 4C 44 59 20 23 30 20  |IN .CC.  LDY #0 |
00001440: 20 20 20 20 20 20 20 20  20 20 3B 20 C3 4C 52 20  |          ; .LR |
00001450: 48 49 20 42 59 54 45 20  5A 50 54 52 0D 20 20 53  |HI BYTE ZPTR.  S|
00001460: 54 59 20 5A 50 54 52 2B  31 0D 20 20 41 53 4C 20  |TY ZPTR+1.  ASL |
00001470: 41 20 20 20 20 20 20 20  20 20 20 20 20 3B 20 CD  |A            ; .|
00001480: 55 4C 54 20 43 48 41 52  20 42 59 20 38 0D 20 20  |ULT CHAR BY 8.  |
00001490: 52 4F 4C 20 5A 50 54 52  2B 31 0D 20 20 41 53 4C  |ROL ZPTR+1.  ASL|
000014A0: 20 41 0D 20 20 52 4F 4C  20 5A 50 54 52 2B 31 0D  | A.  ROL ZPTR+1.|
000014B0: 20 20 41 53 4C 20 41 0D  20 20 52 4F 4C 20 5A 50  |  ASL A.  ROL ZP|
000014C0: 54 52 2B 31 0D 20 20 43  4C 43 20 20 20 20 20 20  |TR+1.  CLC      |
000014D0: 20 20 20 20 20 20 20 20  3B 20 C1 44 44 20 49 4E  |        ; .DD IN|
000014E0: 20 43 48 52 20 41 44 44  52 45 53 53 20 54 4F 20  | CHR ADDRESS TO |
000014F0: 43 48 52 53 45 54 20 4C  4F 43 41 54 49 4F 4E 0D  |CHRSET LOCATION.|
00001500: 20 20 41 44 43 20 43 48  52 53 45 54 4C 4F 43 0D  |  ADC CHRSETLOC.|
00001510: 20 20 53 54 41 20 5A 50  54 52 0D 20 20 4C 44 41  |  STA ZPTR.  LDA|
00001520: 20 5A 50 54 52 2B 31 0D  20 20 41 44 43 20 43 48  | ZPTR+1.  ADC CH|
00001530: 52 53 45 54 4C 4F 43 2B  31 0D 20 20 53 54 41 20  |RSETLOC+1.  STA |
00001540: 5A 50 54 52 2B 31 0D 20  20 52 54 53 0D 3B 0D 46  |ZPTR+1.  RTS.;.F|
00001550: 49 4C 4C 56 44 55 2E 20  20 20 20 20 20 20 20 20  |ILLVDU.         |
00001560: 20 20 3B 20 C6 49 4C 4C  20 56 44 55 20 57 49 54  |  ; .ILL VDU WIT|
00001570: 48 20 28 46 49 4C 4C 43  48 41 52 29 0D 20 20 4A  |H (FILLCHAR).  J|
00001580: 53 52 20 53 45 54 43 4F  4C 4F 52 20 20 20 20 20  |SR SETCOLOR     |
00001590: 3B 20 C6 49 4C 4C 20 43  4F 4C 4F 52 20 52 41 4D  |; .ILL COLOR RAM|
000015A0: 0D 20 20 4C 44 41 20 46  49 4C 4C 43 48 41 52 0D  |.  LDA FILLCHAR.|
000015B0: 20 20 4C 44 59 20 23 30  0D 46 49 4C 4C 31 2E 0D  |  LDY #0.FILL1..|
000015C0: 20 20 53 54 41 20 56 44  55 2C 59 0D 20 20 53 54  |  STA VDU,Y.  ST|
000015D0: 41 20 56 44 55 2B 32 35  36 2C 59 0D 20 20 53 54  |A VDU+256,Y.  ST|
000015E0: 41 20 56 44 55 2B 35 31  32 2C 59 0D 20 20 53 54  |A VDU+512,Y.  ST|
000015F0: 41 20 56 44 55 2B 37 36  38 2C 59 0D 20 20 49 4E  |A VDU+768,Y.  IN|
00001600: 59 0D 20 20 42 4E 45 20  46 49 4C 4C 31 0D 20 20  |Y.  BNE FILL1.  |
00001610: 52 54 53 0D 3B 0D 53 45  54 43 4F 4C 4F 52 2E 20  |RTS.;.SETCOLOR. |
00001620: 20 20 20 20 20 20 20 20  20 3B 20 C6 49 4C 4C 20  |         ; .ILL |
00001630: 43 4F 4C 4F 52 20 52 41  4D 20 57 49 54 48 20 28  |COLOR RAM WITH (|
00001640: 46 49 4C 4C 43 4F 4C 4F  52 29 0D 20 20 4C 44 41  |FILLCOLOR).  LDA|
00001650: 20 46 49 4C 4C 43 4F 4C  4F 52 0D 20 20 4C 44 59  | FILLCOLOR.  LDY|
00001660: 20 23 30 0D 46 49 4C 4C  32 2E 0D 20 20 53 54 41  | #0.FILL2..  STA|
00001670: 20 43 4F 4C 52 41 4D 2C  59 0D 20 20 53 54 41 20  | COLRAM,Y.  STA |
00001680: 43 4F 4C 52 41 4D 2B 32  35 36 2C 59 0D 20 20 53  |COLRAM+256,Y.  S|
00001690: 54 41 20 43 4F 4C 52 41  4D 2B 35 31 32 2C 59 0D  |TA COLRAM+512,Y.|
000016A0: 20 20 53 54 41 20 43 4F  4C 52 41 4D 2B 37 36 38  |  STA COLRAM+768|
000016B0: 2C 59 0D 20 20 49 4E 59  0D 20 20 42 4E 45 20 46  |,Y.  INY.  BNE F|
000016C0: 49 4C 4C 32 0D 20 20 52  54 53 0D 3B 0D 57 41 49  |ILL2.  RTS.;.WAI|
000016D0: 54 31 53 43 52 2E 20 20  20 20 20 20 20 20 20 20  |T1SCR.          |
000016E0: 3B 20 D7 41 49 54 20 46  4F 52 20 53 43 52 45 45  |; .AIT FOR SCREE|
000016F0: 4E 20 54 4F 20 46 49 4E  49 53 48 0D 20 20 20 4C  |N TO FINISH.   L|
00001700: 44 41 20 56 49 43 2B 31  38 20 20 20 20 20 20 3B  |DA VIC+18      ;|
00001710: 20 C3 55 52 52 45 4E 54  20 52 41 53 54 45 52 20  | .URRENT RASTER |
00001720: 56 41 4C 0D 20 20 20 43  4D 50 20 23 32 35 30 0D  |VAL.   CMP #250.|
00001730: 20 20 20 42 43 43 20 57  41 49 54 31 53 43 52 0D  |   BCC WAIT1SCR.|
00001740: 57 41 49 54 32 2E 0D 20  20 20 4C 44 41 20 56 49  |WAIT2..   LDA VI|
00001750: 43 2B 31 38 20 20 20 20  20 20 3B 20 C3 55 52 52  |C+18      ; .URR|
00001760: 45 4E 54 20 52 41 53 54  45 52 20 56 41 4C 0D 20  |ENT RASTER VAL. |
00001770: 20 20 43 4D 50 20 23 32  35 30 0D 20 20 20 42 43  |  CMP #250.   BC|
00001780: 53 20 57 41 49 54 32 0D  20 20 20 52 54 53 0D 3B  |S WAIT2.   RTS.;|
00001790: 0D 49 4E 49 54 2E 20 20  20 20 20 20 20 20 20 20  |.INIT.          |
000017A0: 20 20 20 20 3B 20 C9 4E  49 54 49 41 4C 49 53 45  |    ; .NITIALISE|
000017B0: 20 53 50 52 49 54 45 20  50 4F 53 49 54 49 4F 4E  | SPRITE POSITION|
000017C0: 53 20 41 4E 44 20 53 57  49 54 43 48 20 54 48 45  |S AND SWITCH THE|
000017D0: 4D 20 4F 4E 0D 20 20 4C  44 41 20 23 30 0D 20 20  |M ON.  LDA #0.  |
000017E0: 53 54 41 20 48 49 42 49  54 53 0D 20 20 53 54 41  |STA HIBITS.  STA|
000017F0: 20 57 49 47 47 4C 45 46  4C 41 47 20 20 20 3B 20  | WIGGLEFLAG   ; |
00001800: CE 4F 20 57 49 47 47 4C  45 20 54 4F 20 53 54 41  |.O WIGGLE TO STA|
00001810: 52 54 0D 20 20 53 54 41  20 4D 4F 56 45 42 59 32  |RT.  STA MOVEBY2|
00001820: 46 4C 41 47 20 20 3B 20  D3 4C 4F 57 20 54 4F 20  |FLAG  ; .LOW TO |
00001830: 53 54 41 52 54 0D 20 20  4C 44 41 20 4D 53 47 4C  |START.  LDA MSGL|
00001840: 4F 43 20 20 20 20 20 20  20 3B 20 D2 45 53 45 54  |OC       ; .ESET|
00001850: 20 4D 45 53 53 41 47 45  20 50 4F 49 4E 54 45 52  | MESSAGE POINTER|
00001860: 0D 20 20 53 54 41 20 4D  53 47 50 54 52 0D 20 20  |.  STA MSGPTR.  |
00001870: 4C 44 41 20 4D 53 47 4C  4F 43 2B 31 0D 20 20 53  |LDA MSGLOC+1.  S|
00001880: 54 41 20 4D 53 47 50 54  52 2B 31 0D 20 20 4C 44  |TA MSGPTR+1.  LD|
00001890: 58 20 23 30 0D 20 20 4C  44 59 20 23 30 0D 20 20  |X #0.  LDY #0.  |
000018A0: 4C 44 41 20 4C 4D 41 52  47 20 20 20 20 20 20 20  |LDA LMARG       |
000018B0: 20 3B 20 D8 50 4F 53 20  49 4E 44 45 58 20 4C 4F  | ; .POS INDEX LO|
000018C0: 0D 20 20 53 54 41 20 5A  50 54 52 0D 20 20 53 54  |.  STA ZPTR.  ST|
000018D0: 58 20 5A 50 54 52 2B 31  20 20 20 20 20 20 20 3B  |X ZPTR+1       ;|
000018E0: 20 D8 50 4F 53 20 48 49  0D 49 4E 49 54 31 2E 0D  | .POS HI.INIT1..|
000018F0: 20 20 4C 44 41 20 48 4C  49 4E 45 0D 20 20 53 54  |  LDA HLINE.  ST|
00001900: 41 20 56 49 43 2B 31 2C  58 20 20 20 20 20 20 3B  |A VIC+1,X      ;|
00001910: 20 D3 45 54 20 D9 20 50  4F 53 20 4F 46 20 53 50  | .ET . POS OF SP|
00001920: 52 49 54 45 0D 20 20 4C  44 41 20 5A 50 54 52 0D  |RITE.  LDA ZPTR.|
00001930: 20 20 53 54 41 20 56 49  43 2C 58 20 20 20 20 20  |  STA VIC,X     |
00001940: 20 20 20 3B 20 D3 45 54  20 53 50 52 49 54 45 20  |   ; .ET SPRITE |
00001950: D8 20 50 4F 53 20 4C 4F  20 42 59 54 45 0D 20 20  |. POS LO BYTE.  |
00001960: 4C 44 41 20 5A 50 54 52  2B 31 20 20 20 20 20 20  |LDA ZPTR+1      |
00001970: 20 3B 20 C1 4E 59 20 48  49 20 42 49 54 20 46 4F  | ; .NY HI BIT FO|
00001980: 52 20 53 50 52 49 54 45  3F 0D 20 20 42 45 51 20  |R SPRITE?.  BEQ |
00001990: 49 4E 49 54 32 20 20 20  20 20 20 20 20 3B 20 CC  |INIT2        ; .|
000019A0: 45 41 56 45 20 48 49 20  42 49 54 20 43 4C 52 0D  |EAVE HI BIT CLR.|
000019B0: 20 20 20 4C 44 41 20 4D  41 53 4B 2C 59 20 20 20  |   LDA MASK,Y   |
000019C0: 20 20 20 3B 20 D3 45 54  20 53 50 52 49 54 45 28  |   ; .ET SPRITE(|
000019D0: 59 29 20 48 49 20 42 49  54 0D 20 20 20 4F 52 41  |Y) HI BIT.   ORA|
000019E0: 20 48 49 42 49 54 53 0D  20 20 20 53 54 41 20 48  | HIBITS.   STA H|
000019F0: 49 42 49 54 53 0D 49 4E  49 54 32 2E 0D 20 20 4C  |IBITS.INIT2..  L|
00001A00: 44 41 20 53 43 4F 4C 4F  52 20 20 20 20 20 20 20  |DA SCOLOR       |
00001A10: 3B 20 CF 4B 2C 20 D3 45  54 20 43 4F 4C 4F 52 20  |; .K, .ET COLOR |
00001A20: 46 4F 52 20 53 50 52 49  54 45 0D 20 20 53 54 41  |FOR SPRITE.  STA|
00001A30: 20 56 49 43 2B 33 39 2C  59 0D 20 20 4C 44 41 20  | VIC+39,Y.  LDA |
00001A40: 53 50 52 4F 46 46 53 45  54 0D 20 20 43 4C 43 0D  |SPROFFSET.  CLC.|
00001A50: 20 20 41 44 43 20 23 31  20 20 20 20 20 20 20 20  |  ADC #1        |
00001A60: 20 20 20 3B 20 41 4C 4C  20 53 50 52 49 54 45 20  |   ; ALL SPRITE |
00001A70: 53 54 41 52 54 20 53 50  43 0D 20 20 53 54 41 20  |START SPC.  STA |
00001A80: 53 50 52 50 54 52 53 2C  59 0D 20 20 4C 44 41 20  |SPRPTRS,Y.  LDA |
00001A90: 5A 50 54 52 0D 20 20 43  4C 43 0D 20 20 41 44 43  |ZPTR.  CLC.  ADC|
00001AA0: 20 48 53 50 41 43 49 4E  47 0D 20 20 53 54 41 20  | HSPACING.  STA |
00001AB0: 5A 50 54 52 0D 20 20 42  43 43 20 49 4E 49 54 33  |ZPTR.  BCC INIT3|
00001AC0: 0D 20 20 49 4E 43 20 5A  50 54 52 2B 31 0D 49 4E  |.  INC ZPTR+1.IN|
00001AD0: 49 54 33 2E 0D 20 20 49  4E 58 0D 20 20 49 4E 58  |IT3..  INX.  INX|
00001AE0: 0D 20 20 49 4E 59 0D 20  20 43 50 59 20 23 38 0D  |.  INY.  CPY #8.|
00001AF0: 20 20 42 4E 45 20 49 4E  49 54 31 0D 20 20 4C 44  |  BNE INIT1.  LD|
00001B00: 41 20 57 49 44 45 4D 4F  44 45 0D 20 20 53 54 41  |A WIDEMODE.  STA|
00001B10: 20 56 49 43 2B 32 39 0D  20 20 4C 44 41 20 23 32  | VIC+29.  LDA #2|
00001B20: 35 35 0D 20 20 53 54 41  20 56 49 43 2B 32 31 20  |55.  STA VIC+21 |
00001B30: 20 20 20 20 20 20 3B 20  D3 57 49 54 43 48 20 4F  |      ; .WITCH O|
00001B40: 4E 20 53 50 52 49 54 45  53 0D 20 20 52 54 53 0D  |N SPRITES.  RTS.|
00001B50: 3B 0D                                             |;.              |
;.; SMOOTH SCROLLER, COPYRIGHT A.MILLETT
.;.*=$9C00.;.VIC = 53248                
; VIC CHIP.SPRPTRS = 33784.HIBITS = VIC 
+ 16          ; MSB OF SPRITE POSNS.ZPTR
 = $FB.ZPTR2= $FD.ZMSGPTR = $FB.KBHIT = 
198                ; SET IF CHAR TYPED..
VDU = 32768                ; LOC OF SCRE
EN.COLRAM = $D800             ; LOC OF C
OLOR RAM.;.;                  JUMP VECTO
R TABLE...DOSMOOTH..  JMP MAIN.RESETSMOO
TH..  JMP INIT.JSPECIALFX..  JMP SPECIAL
FX.JDOROTATE..  JSR DOROTATECHAR.JWAIT1S
CR..  JMP WAIT1SCR.JFILLVDU..  JMP FILLV
DU.JDO1DOT..  JMP DO1DOT.;.  .BYTE 0,0,0
.  .BYTE 0,0,0,0,0,0,0,0.  .BYTE 0,0,0,0
,0,0,0,0.  .BYTE 0,0,0,0,0,0,0,0.;    OK
, FLAGS START AT $9C28.;.MSGPTR.        
     ; IF ANY SCROLL OF EDGE, THIS IS PT
R TO NEW SPR.  .WORD $9000.MSGLOC..  .WO
RD $9000.CHRSETLOC.         ; LOC OF USE
R DEF CHAR SET.  .WORD $8800.INDEX..  .B
YTE 0.RMARG.              ; RESET POS FO
R NEW SPR.  .BYTE 112.LMARG..  .BYTE 24.
HSPACING.          ; HORIZONTAL SPACING 
OF SPRITES..  .BYTE 46.SCOLOR.          
  ; SPRITE COLOR.  .BYTE 1.WIDEMODE.    
      ; DOUBLE WIDTH SPRITES.  .BYTE 255
.WIGGLEFLAG.        ; SET FOR JUMPING SC
ROLL.  .BYTE 0.SPEED.             ; SCRO
LL SPEED IN X/50 SEC/DOT.  .BYTE 0.SPROF
FSET.         ; START OF SPRITES.  .BYTE
 127.HLINE.             ; SCREEN LINE FO
R SCROLL.  .BYTE 224.MOVEBY2FLAG.       
; MOVE SCROLL BY 2 IF BIT 7 SET.  .BYTE 
0.FILLCHAR.          ; CHAR FOR SCREEN F
ILL.  .BYTE 87.TICKCHAR.          ; CHAR
 USED FOR 'TICK' FX.  .BYTE 209.ROTCHAR.
           ; CHAR ROTATED FOR MOVING BAC
KGROUND.  .BYTE 87.ROTLEN.            ; 
NO OF PIXELS TO ROTATE.  .BYTE 7.FILLCOL
OR.         ; COLOR FOR SCREEN FILL.  .B
YTE 0.MASK..  .BYTE 1,2,4,8,16,32,64,128
.WIGGLE.             ; VERT WIGGLE FACTO
R.  .BYTE 7,5,4,3,2,1,1,0,0,0,1,1,2,3,4,
5.;.;.MAIN..MAINLOOP..  JSR DOROTATECHAR
 ; ROTATE SCROLLING BACKGROUND.  LDX SPE
ED        ; FIRST WAIT FOR A TIME & SYNC
 TO SCREEN.WLOOP..   JSR WAIT1SCR.   DEX
.  BPL WLOOP.  JSR DO1DOT       ; SCROLL
 MESSAGE 1 DOT...  BIT MOVEBY2FLAG  ; 2 
DOT MOVE ?.  BPL NO2MOVE      ; NO...  J
SR DO1DOT       ; SCROLL MESSAGE 1 MORE 
DOT...NO2MOVE..  LDA KBHIT.  BEQ MAINLOO
P     ; NO KEY HIT, RELOOP...  RTS      
        ; OK, DONE!.;.DO1DOT.           
  ; SCROLL 1 DOT LEFT,.  LDX #$00       
   ; INDEX INTO SPRITES.  LDY #$00.  STY
 INDEX.MORE..  LDA VIC,X.  BNE NOHI     
     ; NO OVERFLOW...   LDA MASK,Y      
 ; GET HI BIT.   AND HIBITS.   BNE NONEW
        ; SET, SO CLEAR...    JSR NEWSPR
ITE   ; START A NEW SPRITE.    CLC.    B
CC NOHI.NONEW.              ; LO BYTE OV
ERFLOW, CLR HI BIT.   LDA MASK,Y.   EOR 
# $FF        ; CALC MASK FOR HI BIT.   A
ND HIBITS.   STA HIBITS.NOHI.           
    ; OK, NOW SET VERT POS.  DEC VIC,X  
       ; MOVE SPR LEFT.  LDY INDEX.  LDA
 #0.  BIT WIGGLEFLAG   ; DO WE WIGGLE ?.
  BPL NOWIGGLE.  LDA VIC,X        ; USE 
HPOS AS INDEX TO WIGGLE.  AND # $0F.  TA
Y.  LDA WIGGLE,Y.NOWIGGLE..  CLC        
      ; NOW ADD IN NORM VERT LINE.  ADC 
HLINE.  STA VIC+1,X      ; STORE VERT PO
S FOR SPRITE..  INC INDEX        ; OK, N
EXT SPRITE...  LDY INDEX.  INX.  INX.  C
PY # 8.  BNE MORE         ; NEXT SPRITE.
..  RTS              ; OK, DONE!.;.NEWSP
RITE.         ; START A NEW SPRITE.   LD
A RMARG       ; START NEW SPRITE FAR RIG
HT.   STA VIC,X.   LDA MASK,Y.   ORA HIB
ITS      ; SET HI BIT.   STA HIBITS.NEXT
MSG.           ; ADVANCE MESSAGE POINTER
.   INC MSGPTR.   BNE GETMSG.   INC MSGP
TR+1.GETMSG.            ; GET CHAR FROM 
MSG STRING.   LDA MSGPTR      ; MOV PTR 
TO ZERO PAGE.   STA ZMSGPTR.   LDA MSGPT
R+1.   STA ZMSGPTR+1.   LDY #0.   LDA (Z
MSGPTR),Y    ; GET MSG CHAR.   BNE NEW2 
       ; NOT NULL YET, SO PRINT...    LD
A MSGLOC     ; END OF MESSAGE, SO RESET 
MSG TO START.    STA MSGPTR.    LDA MSGL
OC+1.    STA MSGPTR+1.    CLC.    BCC GE
TMSG.NEW2..   BPL NORMLET     ; NO SPECI
AL EFFECTS.   CMP #128       ; TOGGLE WI
GGLE ?.   BNE NEW3.    LDA #$80.    EOR 
WIGGLEFLAG.    STA WIGGLEFLAG.    CLC.  
  BCC NEXTMSG    ; ANOTHER MSG CHAR...NE
W3..   CMP #129       ; TOGGLE 2 DOT SPE
ED?.   BNE NEW4.    LDA #$80.    EOR MOV
EBY2FLAG.    STA MOVEBY2FLAG.    CLC.   
 BCC NEXTMSG    ; ANOTHER MSG CHAR...NEW
4..    AND #$1F.    STA SPEED.    CLC.  
  BCC NEXTMSG    ; ANOTHER MSG CHAR...NO
RMLET.           ; OK NORM LETTER IN ACC
, STORE IN SPRITE PTR.   LDY INDEX.   CL
C.   ADC SPROFFSET.   STA SPRPTRS,Y.   J
SR SPECIALFX   ; MOVE LINE IN BALL CHR. 
  RTS.;.SPECIALFX.         ; MOVE LINE I
N BALL CHR.   TYA.   PHA             ; S
TASH Y REG.   LDA TICKCHAR    ; CHARACTE
R TO TICK.   JSR SETCHRPTR   ; SET UP (Z
PTR) TO CHAR.   LDY #3.   LDA (ZPTR),Y. 
  PHA.   INY.   LDA (ZPTR),Y.   DEY.   S
TA (ZPTR),Y.   PLA.   INY.   STA (ZPTR),
Y.   PLA.   TAY.   RTS.;.DOROTATECHAR.  
    ; ROTATE SPECIAL CHAR VERTICALLY FOR
 EFFECT.   TYA.   PHA             ; STAS
H Y REG.   LDA ROTCHAR     ; CHARACTER T
O ROTATE.   JSR SETCHRPTR   ; SET UP (ZP
TR) TO CHAR.   LDY ROTLEN      ; NO TO R
OTATE.   LDA (ZPTR),Y    ; STASH TOP ONE
.   PHA.SPEC1..    DEY             ; RIP
PLE BYTES DOWN...    LDA (ZPTR),Y.    IN
Y.    STA (ZPTR),Y.    DEY.   BNE SPEC1.
   PLA.   STA (ZPTR),Y    ; REGET TOP VA
L AND PUT AT BOTTOM.   PLA             ;
 REGET Y REG.   TAY.   RTS.;.SETCHRPTR. 
        ; SET UP (ZPTR) TO POINT TO LOC 
OF CHAR IN ACC.  LDY #0           ; CLR 
HI BYTE ZPTR.  STY ZPTR+1.  ASL A       
     ; MULT CHAR BY 8.  ROL ZPTR+1.  ASL
 A.  ROL ZPTR+1.  ASL A.  ROL ZPTR+1.  C
LC              ; ADD IN CHR ADDRESS TO 
CHRSET LOCATION.  ADC CHRSETLOC.  STA ZP
TR.  LDA ZPTR+1.  ADC CHRSETLOC+1.  STA 
ZPTR+1.  RTS.;.FILLVDU.           ; FILL
 VDU WITH (FILLCHAR).  JSR SETCOLOR     
; FILL COLOR RAM.  LDA FILLCHAR.  LDY #0
.FILL1..  STA VDU,Y.  STA VDU+256,Y.  ST
A VDU+512,Y.  STA VDU+768,Y.  INY.  BNE 
FILL1.  RTS.;.SETCOLOR.          ; FILL 
COLOR RAM WITH (FILLCOLOR).  LDA FILLCOL
OR.  LDY #0.FILL2..  STA COLRAM,Y.  STA 
COLRAM+256,Y.  STA COLRAM+512,Y.  STA CO
LRAM+768,Y.  INY.  BNE FILL2.  RTS.;.WAI
T1SCR.          ; WAIT FOR SCREEN TO FIN
ISH.   LDA VIC+18      ; CURRENT RASTER 
VAL.   CMP #250.   BCC WAIT1SCR.WAIT2.. 
  LDA VIC+18      ; CURRENT RASTER VAL. 
  CMP #250.   BCS WAIT2.   RTS.;.INIT.  
            ; INITIALISE SPRITE POSITION
S AND SWITCH THEM ON.  LDA #0.  STA HIBI
TS.  STA WIGGLEFLAG   ; NO WIGGLE TO STA
RT.  STA MOVEBY2FLAG  ; SLOW TO START.  
LDA MSGLOC       ; RESET MESSAGE POINTER
.  STA MSGPTR.  LDA MSGLOC+1.  STA MSGPT
R+1.  LDX #0.  LDY #0.  LDA LMARG       
 ; XPOS INDEX LO.  STA ZPTR.  STX ZPTR+1
       ; XPOS HI.INIT1..  LDA HLINE.  ST
A VIC+1,X      ; SET Y POS OF SPRITE.  L
DA ZPTR.  STA VIC,X        ; SET SPRITE 
X POS LO BYTE.  LDA ZPTR+1       ; ANY H
I BIT FOR SPRITE?.  BEQ INIT2        ; L
EAVE HI BIT CLR.   LDA MASK,Y      ; SET
 SPRITE(Y) HI BIT.   ORA HIBITS.   STA H
IBITS.INIT2..  LDA SCOLOR       ; OK, SE
T COLOR FOR SPRITE.  STA VIC+39,Y.  LDA 
SPROFFSET.  CLC.  ADC #1           ; ALL
 SPRITE START SPC.  STA SPRPTRS,Y.  LDA 
ZPTR.  CLC.  ADC HSPACING.  STA ZPTR.  B
CC INIT3.  INC ZPTR+1.INIT3..  INX.  INX
.  INY.  CPY #8.  BNE INIT1.  LDA WIDEMO
DE.  STA VIC+29.  LDA #255.  STA VIC+21 
      ; SWITCH ON SPRITES.  RTS.;.
C64 Preview

> CLICK IMAGE PREVIEW FOR FULL MODAL