1 *RASTER GRAPHICS -GR.8 EXAMPLE - WITH MUSIC- JEFF STANTON 2 ORG $4000 3 *ZERO PAGE EQUATES 4 SHPL EQU $F0 5 SHPH EQU $F1 6 HIRESL EQU $F2 7 HIRESH EQU $F3 8 SL EQU $F4 9 SH EQU $F5 10 *OTHER EQUATES 11 SCREEN EQU $6000 ;SCREEN IS ACTUALLY OFFSET 496 BYTES @ $61FO 12 NDLIST EQU $6000 ;ADR OF DISPLAY LIST 13 STICK EQU $278 14 COLOR1 EQU $2C5 15 COLOR2 EQU $2C6 16 AUDC1 EQU $D201 17 AUDF1 EQU $D200 18 NOTEL EQU $F6 19 NOTEH EQU $F7 20 SETVBK EQU $E45C 21 XITVBK EQU $E462 22 *LINE LOOKUP TABLE - LO BYTE STARTS AT $4000 4000 F01840 23 YVERTL HEX F018406890B8E008 4008 305880 24 HEX 305880A8D0F82048 4010 7098C0 25 HEX 7098C0E810386088 4018 B0D800 26 HEX B0D800285078A0C8 4020 F01840 27 HEX F018406890B8E008 4028 305880 28 HEX 305880A8D0F82048 4030 7098C0 29 HEX 7098C0E810386088 4038 B0D800 30 HEX B0D800285078A0C8 4040 F01840 31 HEX F018406890B8E008 4048 305880 32 HEX 305880A8D0F82048 4050 7098C0 33 HEX 7098C0E810386088 4058 B0D800 34 HEX B0D800285078A0C8 4060 F01840 35 HEX F018406890B8E008 4068 305880 36 HEX 305880A8D0F82048 4070 7098C0 37 HEX 7098C0E810386088 4078 B0D800 38 HEX B0D800285078A0C8 4080 F01840 39 HEX F018406890B8E008 4088 305880 40 HEX 305880A8D0F82048 4090 7098C0 41 HEX 7098C0E810386088 4098 B0D800 42 HEX B0D800285078A0C8 40A0 F01840 43 HEX F018406890B8E008 40A8 305880 44 HEX 305880A8D0F82048 40B0 7098C0 45 HEX 7098C0E810386088 40B8 B0D800 46 HEX B0D800285078A0C8 40C0 000000 47 DS $40 48 *LINE L00KUP TABLE - HI BYTE STARTS AT $4100 4100 010202 49 YVERTH HEX 0102020202020203 4108 030303 50 HEX 0303030303030404 4110 040404 51 HEX 0404040405050505 4118 050506 52 HEX 0505060606060606 4120 060707 53 HEX 0607070707070708 4128 080808 54 HEX 0808080808080909 4130 090909 55 HEX 090909090A0A0A0A 4138 0A0A0B 56 HEX 0A0A0B0B0B0B0B0B 4140 0B0C0C 57 HEX 0B0C0C0C0C0C0C0D 4148 0D0D0D 58 HEX 0D0D0D0D0D0D0E0E 4150 0E0E0E 59 HEX 0E0E0E0E0F0F0F0F 4158 0F0F10 60 HEX 0F0F101010101010 4160 101111 61 HEX 1011111111111112 4168 121212 62 HEX 1212121212121313 4170 131313 63 HEX 1313131314141414 4178 141415 64 HEX 1414151515151515 4180 151616 65 HEX 1516161616161617 4188 171717 66 HEX 1717171717171818 4190 181818 67 HEX 1818181819191919 4198 19191A 68 HEX 19191A1A1A1A1A1A 41A0 1A1B1B 69 HEX 1A1B1B1B1B1B1B1C 41A8 1C1C1C 70 HEX 1C1C1C1C1C1C1D1D 41B0 1D1D1D 71 HEX 1D1D1D1D1E1E1E1E 41B8 1E1E1F 72 HEX 1E1E1F1F1F1F1F1F 41C0 000000 73 DS $40 74 *DISPLAY LIST STARTS AT $4200 4200 707070 75 DLIST HEX 7070704FF0610F0F 4208 0F0F0F 76 HEX 0F0F0F0F0F0F0F0F 4210 0F0F0F 77 HEX 0F0F0F0F0F0F0F0F 4218 0F0F0F 78 HEX 0F0F0F0F0F0F0F0F 4220 0F0F0F 79 HEX 0F0F0F0F0F0F0F0F 4228 0F0F0F 80 HEX 0F0F0F0F0F0F0F0F 4230 0F0F0F 81 HEX 0F0F0F0F0F0F0F0F 4238 0F0F0F 82 HEX 0F0F0F0F0F0F0F0F 4240 0F0F0F 83 HEX 0F0F0F0F0F0F0F0F 4248 0F0F0F 84 HEX 0F0F0F0F0F0F0F0F 4250 0F0F0F 85 HEX 0F0F0F0F0F0F0F0F 4258 0F0F0F 86 HEX 0F0F0F0F0F0F0F4F 4260 00700F 87 HEX 00700F0F0F0F0F0F 4268 0F0F0F 88 HEX 0F0F0F0F0F0F0F0F 4270 0F0F0F 89 HEX 0F0F0F0F0F0F0F0F 4278 0F0F0F 90 HEX 0F0F0F0F0F0F0F0F 4280 0F0F0F 91 HEX 0F0F0F0F0F0F0F0F 4288 0F0F0F 92 HEX 0F0F0F0F0F0F0F0F 4290 0F0F0F 93 HEX 0F0F0F0F0F0F0F0F 4298 0F0F0F 94 HEX 0F0F0F0F0F0F0F0F 42A0 0F0F0F 95 HEX 0F0F0F0F0F0F0F0F 42A8 0F0F0F 96 HEX 0F0F0F0F0F0F0F0F 42B0 0F0F0F 97 HEX 0F0F0F0F0F0F0F0F 42B8 0F0F0F 98 HEX 0F0F0F0F0F0F0F0F 42C0 0F0F0F 99 HEX 0F0F0F0F0F0F0F41 42C8 0060 100 HEX 0060 42CA 000000 101 DS $36 102 *HORIZONTAL OFFSET TABLE - START AT $4300 103 *THIS POINTS TO PROPER OFFSET SHAPE FOR EACH X POS (0-159) 4300 000102 104 XOFF HEX 0001020300010203 4308 000102 105 HEX 0001020300010203 4310 000102 106 HEX 0001020300010203 4318 000102 107 HEX 0001020300010203 4320 000102 108 HEX 0001020300010203 4328 000102 109 HEX 0001020300010203 4330 000102 110 HEX 0001020300010203 4338 000102 111 HEX 0001020300010203 4340 000102 112 HEX 0001020300010203 4348 000102 113 HEX 0001020300010203 4350 000102 114 HEX 0001020300010203 4358 000102 115 HEX 0001020300010203 4360 000102 116 HEX 0001020300010203 4368 000102 117 HEX 0001020300010203 4370 000102 118 HEX 0001020300010203 4378 000102 119 HEX 0001020300010203 4380 000102 120 HEX 0001020300010203 4388 000102 121 HEX 0001020300010203 4390 000102 122 HEX 0001020300010203 4398 000102 123 HEX 0001020300010203 124 *SHPLO CONTAINS LO ORDER BYTE ADDRESS OF OUR 4 SHAPES 43A0 00172E 125 SHPLO HEX 00172E45 126 *SHPHI CONTAINS HI ORDER BYTE ADDRESS OF OUR 4 SHAPES 43A4 444546 127 SHPHI HEX 44454647 43A8 000000 128 DS $58 129 *SHAPES MUST BEGIN AT $4400 130 *SHAPE0 4400 02AAAA 131 SHAPES HEX 02AAAAAAAAAA800000 4409 0AAAAA 132 HEX 0AAAAAAAAAAAA80000 4412 2AAAAA 133 HEX 2AAAAAAAAAAAAA0000 441B 2AAAAA 134 HEX 2AAAAAAAAAAAAA8000 4424 AAAAAA 135 HEX AAAAAAAAAAAAAA8000 442D AAAAAA 136 HEX AAAAAAAAAAAAAA8000 4436 2AAAAA 137 HEX 2AAAAAAAAAAAAA8000 443F 2AAAAA 138 HEX 2AAAAAAAAAAAAA0000 4448 0AAAAA 139 HEX 0AAAAAAAAAAAA80000 4451 000001 140 HEX 000001554000000000 445A 000381 141 HEX 000381554000000000 4463 000380 142 HEX 000380550000000000 446C 000100 143 HEX 000100150000000000 4475 000780 144 HEX 000780180000000000 447E 000180 145 HEX 000180180000000000 4487 4007AA 146 HEX 4007AA8A8000C0A000 4490 501F02 147 HEX 501F02AA8000C2A800 4499 501C00 148 HEX 501C00AA8000E2AB00 44A2 540000 149 HEX 5400000A8000EAAB00 44AB 5507FF 150 HEX 5507FFFFFFFDEAAB00 44B4 550FFF 151 HEX 550FFFFFFFE5E2AB00 44BD 555FFF 152 HEX 555FFFFFFFD402A800 44C6 554000 153 HEX 55400018001000A000 44CF 505000 154 HEX 505000180050000000 44D8 501000 155 HEX 501000180040000000 44E1 401400 156 HEX 401400180140000000 44EA 000500 157 HEX 000500180100000000 44F3 000540 158 HEX 000540540500000000 44FC 000155 159 HEX 000155555400000000 4505 000055 160 HEX 000055555400000000 450E 000015 161 HEX 000015015000000000 162 *SHAPE #1 SHIFTED RT 2 PIXELS 4517 00AAAA 163 HEX 00AAAAAAAAAAA00000 4520 02AAAA 164 HEX 02AAAAAAAAAAAA0000 4529 0AAAAA 165 HEX 0AAAAAAAAAAAAA8000 4532 0AAAAA 166 HEX 0AAAAAAAAAAAAAA000 453B 2AAAAA 167 HEX 2AAAAAAAAAAAAAA000 4544 2AAAAA 168 HEX 2AAAAAAAAAAAAAA000 454D 0AAAAA 169 HEX 0AAAAAAAAAAAAAA000 4556 0AAAAA 170 HEX 0AAAAAAAAAAAAA8000 455F 02AAAA 171 HEX 02AAAAAAAAAAAA0000 4568 000000 172 HEX 000000555000000000 4571 0000E0 173 HEX 0000E0555000000000 457A 0000E0 174 HEX 0000E0154000000000 4583 000040 175 HEX 000040054000000000 458C 0001E0 176 HEX 0001E0060000000000 4595 000060 177 HEX 000060060000003000 459E 1001EA 178 HEX 1001EAA2A000302800 45A7 1407C0 179 HEX 1407C0AAA000302800 45B0 140700 180 HEX 140700AAA00030AAC0 45B9 150000 181 HEX 15000002A00078AAC0 45C2 1501FF 182 HEX 1501FFFFFFFF7AAAC0 45CB 1503FF 183 HEX 1503FFFFFFF978AAC0 45D4 1557FF 184 HEX 1557FFFFFFF500AA00 45DD 155000 185 HEX 155000060004002800 45E6 141400 186 HEX 141400060014000000 45EF 140400 187 HEX 140400060010000000 45F8 100500 188 HEX 100500060050000000 4601 000140 189 HEX 000140060040000000 460A 000150 190 HEX 000150150140000000 4613 000055 191 HEX 000055555500000000 461C 000015 192 HEX 000015555500000000 4625 000005 193 HEX 000005405400000000 194 *SHAPE #2 SHIFTED RT 4 PIXELS 462E 002AAA 195 HEX 002AAAAAAAAAA80000 4637 00AAAA 196 HEX 00AAAAAAAAAAAA8000 4640 02AAAA 197 HEX 02AAAAAAAAAAAAA000 4649 02AAAA 198 HEX 02AAAAAAAAAAAAA800 4652 0AAAAA 199 HEX 0AAAAAAAAAAAAAA800 465B 0AAAAA 200 HEX 0AAAAAAAAAAAAAA800 4664 02AAAA 201 HEX 02AAAAAAAAAAAAA800 466D 02AAAA 202 HEX 02AAAAAAAAAAAAA000 4676 00AAAA 203 HEX 00AAAAAAAAAAAA8000 467F 000000 204 HEX 000000155400000000 4688 000038 205 HEX 000038155400000000 4691 000038 206 HEX 000038055000000000 469A 000010 207 HEX 000010015000000000 46A3 000078 208 HEX 000078018000000000 46AC 000018 209 HEX 000018018000000000 46B5 04007E 210 HEX 04007EE8A8000C0A00 46BE 0501F0 211 HEX 0501F06AA8000C2A80 46C7 0501C0 212 HEX 0501C00AA8001E2AB0 46D0 054000 213 HEX 05400000A8001EAAB0 46D9 05507F 214 HEX 05507FFFFFFFDEAAB0 46E2 0550FF 215 HEX 0550FFFFFFFE5E2AB0 46EB 0555FF 216 HEX 0555FFFFFFFD402A80 46F4 055400 217 HEX 055400018001000A00 46FD 050500 218 HEX 050500018005000000 4706 050100 219 HEX 050100018004000000 470F 040140 220 HEX 040140018014000000 4718 000050 221 HEX 000050018010000000 4721 000054 222 HEX 000054054050000000 472A 000015 223 HEX 000015555540000000 4733 000005 224 HEX 000005555540000000 473C 000001 225 HEX 000001501500000000 226 *SHAPE #3 SHIFTED RT 6 PIXELS 4745 000AAA 227 HEX 000AAAAAAAAAAA0000 474E 002AAA 228 HEX 002AAAAAAAAAAAA000 4757 00AAAA 229 HEX 00AAAAAAAAAAAAA800 4760 00AAAA 230 HEX 00AAAAAAAAAAAAAA00 4769 02AAAA 231 HEX 02AAAAAAAAAAAAAA00 4772 02AAAA 232 HEX 02AAAAAAAAAAAAAA00 477B 00AAAA 233 HEX 00AAAAAAAAAAAAAA00 4784 00AAAA 234 HEX 00AAAAAAAAAAAAA800 478D 002AAA 235 HEX 002AAAAAAAAAAAA000 4796 000000 236 HEX 000000055500000000 479F 00000E 237 HEX 00000E055500000000 47A8 00000E 238 HEX 00000E015400000000 47B1 000004 239 HEX 000004005400000000 47BA 00001E 240 HEX 00001E006000000000 47C3 000006 241 HEX 000006006000000000 47CC 01001E 242 HEX 01001EAA2A00030280 47D5 01407C 243 HEX 01407C0AAA00030AA0 47DE 014070 244 HEX 01407002AA00078AAC 47E7 015000 245 HEX 015000002A0007AAAC 47F0 01541F 246 HEX 01541FFFFFFFF7AAAC 47F9 01543F 247 HEX 01543FFFFFFF978AAC 4802 01557F 248 HEX 01557FFFFFFF500AA0 480B 015500 249 HEX 015500006000400280 4814 014140 250 HEX 014140006001400000 481D 014040 251 HEX 014040006001000000 4826 010050 252 HEX 010050006005000000 482F 000014 253 HEX 000014006004000000 4838 000015 254 HEX 000015015014000000 4841 000005 255 HEX 000005555550000000 484A 000001 256 HEX 000001555550000000 4853 000000 257 HEX 000000540540000000 258 *START TABLE ON EVEN PAGE BOUNDARY 485C 000000 259 DS $A4 4900 43103F 260 NOTES HEX 43103F0838200014 ;P1M1 4908 43084B 261 HEX 43084B1043085440 4910 431043 262 HEX 431043084B105408 4918 652000 263 HEX 6520001065084310 ;P1M2 4920 43084B 264 HEX 43084B200010 4926 43103F 265 HEX 43103F0838200014 ;P1M1 492E 43084B 266 HEX 43084B1043085440 4936 431043 267 HEX 431043084B105408 493E 652000 268 HEX 6520001065084310 ;P1M2 4946 43084B 269 HEX 43084B200010 494C 382000 270 HEX 382000023820000238203810 ;P2M1 4958 000238 271 HEX 0002381032084B100002 4962 4B0800 272 HEX 4B0800024B1000024B0800024B4000 4971 024B10 273 HEX 024B10 ;P2M2 4974 00024B 274 HEX 00024B0800024B1000024B0800024B 4983 40 275 HEX 40 4984 541000 276 HEX 541000025408000254 498D 100002 277 HEX 100002540800025440 ;P2M3 4996 382000 278 HEX 382000023820000238203810 ;P2M1 49A2 000238 279 HEX 0002381032084B100002 49AC 4B0800 280 HEX 4B0800024B1000024B 49B5 080002 281 HEX 0800024B4000024B10 ;P2M2 49BE 00024B 282 HEX 00024B0800024B1000 49C7 024B08 283 HEX 024B0800024B40 49CE 541000 284 HEX 541000025408000254 49D7 100002 285 HEX 100002540800025440 ;P2M3 49E0 0015FF 286 HEX 0015FF ;REST & REPEAT 287 *VARIABLES 49E3 00 288 XX DS 1 49E4 00 289 YY DS 1 49E5 00 290 HORIZ DS 1 49E6 00 291 TEMP DS 1 49E7 00 292 DEPTH DS 1 49E8 00 293 SLNGH DS 1 49E9 00 294 VERT DS 1 49EA 00 295 OFFSET DS 1 49EB 00 296 POINTER DS 1 49EC 00 297 TIME DS 1 49ED 00 298 TDELAY DS 1 49EE 00 299 VBFLAG DS 1 300 *CLEAR SCREEN 8K INCLUDING NDLIST AREA 49EF A900 301 CLRSCR LDA #>SCREEN ;SETUP POINTERS TO CLEAR SCREEN 49F1 85F4 302 STA SL 49F3 A960 303 LDA #NDLIST 4A15 8D3002 322 STA 560 4A18 A960 323 LDA #NOTES ;GET LO BYTE OF TABLE 4A3B 85F6 338 STA NOTEL 4A3D A949 339 LDA #FRAME 4A5A 205CE4 353 JSR SETVBK 4A5D 4C5D4A 354 FOREVER JMP FOREVER 355 *VBLANK ROUTINE 4A60 ADEE49 356 FRAME LDA VBFLAG 4A63 F003 357 BEQ OK 4A65 4C62E4 358 JMP $E462 4A68 A901 359 OK LDA #$01 4A6A 8DEE49 360 STA VBFLAG 4A6D ADE349 361 LDA XX ;CALC NEW HORIZ OFFSET 4A70 4A 362 LSR ;DIVIDE BY 4 TO GET HORIZ BYTE 4A71 4A 363 LSR 4A72 8DE549 364 STA HORIZ 4A75 20E74A 365 JSR SETUP 4A78 200B4B 366 JSR DRAW ;DRAW SHAPE 4A7B ADED49 367 LDA TDELAY ;DELAY 3/60 TH SEC 4A7E C903 368 CMP #$03 4A80 D01F 369 BNE AB1 4A82 20E74A 370 JSR SETUP 4A85 20904B 371 JSR XDRAW ;XDRAW SHAPE 4A88 20454B 372 JSR JOYSTK ;READ JOYSTICK 4A8B ADE349 373 LDA XX ;CALC NEW HORIZ OFFSET 4A8E 4A 374 LSR 4A8F 4A 375 LSR 4A90 8DE549 376 STA HORIZ 4A93 20E74A 377 JSR SETUP 4A96 200B4B 378 JSR DRAW ;IMMEDIATELY REDRAW SHAPE 4A99 A900 379 LDA #$00 ;RESET DELAY 4A9B 8DED49 380 STA TDELAY 4A9E 4CA44A 381 JMP SOUND 4AA1 EEED49 382 AB1 INC TDELAY 4AA4 ADEC49 383 SOUND LDA TIME 4AA7 C514 384 CMP $14 4AA9 B034 385 BGE AC2 386 *STOP NOTE - EQUIVALENT TO SOUND 0,0,0,0 4AAB A900 387 LDA #$00 4AAD 8D08D2 388 STA $D208 4AB0 A903 389 LDA #$03 4AB2 8D0FD2 390 STA $D20F 4AB5 ACEB49 391 LDY POINTER 392 *LOAD NEXT NOTE 4AB8 B1F6 393 LDA (NOTEL),Y 4ABA C9FF 394 CMP #$FF ;LAST NOTE? 4ABC D009 395 BNE AC3 396 *RESET TO BEGINNING NOTE 4ABE A000 397 LDY #$00 4AC0 8CEB49 398 STY POINTER 4AC3 A949 399 LDA #