                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     #<SCREEN49F5 85F5     304          STA     SH49F7 A000     305          LDY     #$0049F9 98       306          TYA49FA A220     307          LDX     #$20            ;32 PAGES (8K)49FC 91F4     308  AA2     STA     (SL),Y49FE C8       309          INY49FF D0FB     310          BNE     AA2             ;CONTINUE UNTIL DONE WITH 256 BYTES4A01 E6F5     311          INC     SH              ;DO NEXT PAGE4A03 CA       312          DEX4A04 D0F6     313          BNE     AA2              314  *SETUP DLIST4A06 A200     315          LDX     #$004A08 BD0042   316  DLOOP   LDA     DLIST,X4A0B 9D0060   317          STA     NDLIST,X4A0E E8       318          INX4A0F E0CC     319          CPX     #$CC            ;204 ELEMENTS4A11 D0F5     320          BNE     DLOOP4A13 A900     321          LDA     #>NDLIST4A15 8D3002   322          STA     5604A18 A960     323          LDA     #<NDLIST4A1A 8D3102   324          STA     561              325  *INITILIZE4A1D A90B     326          LDA     #$0B4A1F 8DC502   327          STA     COLOR14A22 A900     328          LDA     #$004A24 8DC602   329          STA     COLOR24A27 A940     330          LDA     #$404A29 8DE349   331          STA     XX4A2C A920     332          LDA     #$204A2E 8DE449   333          STA     YY4A31 8DE949   334          STA     VERT4A34 A900     335          LDA     #$004A36 8DED49   336          STA     TDELAY4A39 A900     337          LDA     #>NOTES         ;GET LO BYTE OF TABLE4A3B 85F6     338          STA     NOTEL4A3D A949     339          LDA     #<NOTES         ;GET HI BYTE OF TABLE4A3F 85F7     340          STA     NOTEH4A41 A900     341          LDA     #$00            ;CLEAR TIHER4A43 8514     342          STA     $144A45 A901     343          LDA     #$014A47 8DEC49   344          STA     TIME4A4A A9EA     345          LDA     #$EA            ;PURE TONE - VOLUME 104A4C 8D01D2   346          STA     AUDC14A4F A000     347          LDY     #$004A51 8CEB49   348          STY     POINTER              349  *SET VBLANK4A54 A907     350          LDA     #$074A56 A24A     351          LDX     #<FRAME4A58 A060     352          LDY     #>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     #<NOTES4AC5 85F7     400          STA     NOTEH              401  *CONTINUE READING NOTES & STORING VALUES IN SOUND REGISTERS4AC7 8D00D2   402  AC3     STA     AUDF1           ;STORE FREQUENCY OF NEXT NOTE4ACA C8       403          INY4ACB EEEB49   404          INC     POINTER4ACE B1F6     405          LDA     (NOTEL),Y4AD0 8DEC49   406          STA     TIME            ;STORE LENGTH OF NOTE4AD3 C8       407          INY4AD4 EEEB49   408          INC     POINTER4AD7 D002     409          BNE     AC1             ;CAN ONLY HAPPEN ON AN EVEN NUMBER4AD9 E6F7     410          INC     NOTEH           ;NEXT PAGE OF NOTES4ADB A900     411  AC1     LDA     #$00            ;CLEAR TIMER AT BEGIINING OF EACH NEW NOTE4ADD 8514     412          STA     $144ADF A900     413  AC2     LDA     #$004AE1 8DEE49   414          STA     VBFLAG4AE4 4C62E4   415          JMP     XITVBK              416  *SUBROUTINES              417  *DRAWING SETUP SUBROUTINE4AE7 ACE349   418  SETUP   LDY     XX              ;HORIZONTAL POSITION (0-159)4AEA BE0043   419          LDX     XOFF,Y          ;INDEX TO FIND SHAPE #4AED BDA043   420          LDA     SHPLO,X         ;INDEX TO GET LO BYTE OF SHAPE TABLE4AF0 85F0     421          STA     SHPL            ;STORE LO BYTE IN ZERO PAGE4AF2 BDA443   422          LDA     SHPHI,X         ;GET HI BYTE OF SHAPE TABLE4AF5 85F1     423          STA     SHPH4AF7 ADE449   424          LDA     YY4AFA 8DE949   425          STA     VERT4AFD A91F     426          LDA     #$1F4AFF 8DE749   427          STA     DEPTH           ;SHAPE IS 31 LINES DEEP4B02 A909     428          LDA     #$094B04 8DE849   429          STA     SLNGH           ;SHAPE IS 9 BYTES WIDE4B07 8DE649   430          STA     TEMP            ;STORED HERE ALSO BECAUSE DRAWING              431  *ROUTINE DECREMENTS SLNGH 0              432  * AND VARIABLE MUST BE RESTORED AT START OF NEXT ROW4B0A 60       433          RTS              434  *DRAW SHAPE SUBROUTINE4B0B ACE949   435  DRAW    LDY     VERT            ;VERTICAL POSITION4B0E 20344B   436          JSR     GETADR          ;FIND BEGINNING OF SCREEN ADDRESS OF ROW4B11 A200     437          LDX     #$004B13 ADE649   438          LDA     TEMP4B16 8DE849   439          STA     SLNGH           ;RESTORE VALUE OF WIDTH FOR NEXT ROW4B19 A000     440          LDY     #$004B1B A1F0     441  DRAW2   LDA     (SHPL,X)        ;GET BYTE OF SHAPE TABLE4B1D 91F2     442          STA     (HIRESL),Y      ;PLOT ON SCREEN4B1F E6F0     443          INC     SHPL            ;NEXT BYTE OF SHAPE TABLE4B21 D002     444          BNE     AD1             ;IF CROSS PAGE BOUNDARY?4B23 E6F1     445          INC     SHPH            ;INCREMENT TO NEXT PAGE OF SHAPE4B25 C8       446  AD1     INY                     ;NEXT POSITION ON SCREEN4B26 CEE849   447          DEC     SLNGH           ;DECREMENT WIDTH4B29 D0F0     448          BNE     DRAW2           ;FINISHED WITH ROW YET4B2B EEE949   449          INC     VERT            ;IF SO, INCREMENT TO NEXT LINE4B2E CEE749   450          DEC     DEPTH           ;DECREMENT DEPTH4B31 D0D8     451          BNE     DRAW            ;FINISHED ALL ROWS?4B33 60       452          RTS                     ;YES, END              453  *GETADR SUBROUTINE FOR FINDING STARTING SCREEN ADDRESS TO PLOT BYTES4B34 B90040   454  GETADR  LDA     YVERTL,Y        ;LOOKUP LO BYTE OF LINE4B37 18       455          CLC4B38 6DE549   456          ADC     HORIZ           ;ADD HORIZ OFFSET4B3B 85F2     457          STA     HIRESL          ;STORE LO BYTE SCREEN ADDRESS4B3D B90041   458          LDA     YVERTH,Y        ;LOOKUP HI BYTE LINE4B40 6960     459          ADC     #<SCREEN        ;ADD HI BYTE OF SCREEN4B42 85F3     460          STA     HIRESH          ;STORE HI BYTE SCREEN ADDRESS4B44 60       461          RTS              462  *JOYSTICK ROUTINE4B45 AD7802   463  JOYSTK  LDA     STICK4B48 2902     464          AND     #$02            ;DOWN BIT?4B4A D00D     465          BNE     CHKLF4B4C ADE449   466          LDA     YY              ;PREVENT SHAPE FROM EXITING BOTTOM SCREEN4B4F C9A0     467          CMP     #$A04B51 F006     468          BEQ     CHKLF4B53 EEE449   469          INC     YY              ;MOVE TWO LINES4B56 EEE449   470          INC     YY4B59 AD7802   471  CHKLF   LDA     STICK4B5C 2904     472          AND     #$04            ;LEFT BIT?4B5E D00A     473          BNE     CHKRT4B60 ADE349   474          LDA     XX              ;PREVENT SHAPE FROM EXITING SCREEN LEFT4B63 C900     475          CMP     #$004B65 F003     476          BEQ     CHKRT4B67 CEE349   477          DEC     XX              ;THIS MOVES TWO PIXELS4B6A AD7802   478  CHKRT   LDA     STICK4B6D 2908     479          AND     #$08            ;RIGHT BIT?4B6F D00A     480          BNE     CHKUP4B71 ADE349   481          LDA     XX              ;PREVENT SHAPE FROM EXITING SCREEN RIGHT4B74 C97C     482          CMP     #$7C4B76 F003     483          BEQ     CHKUP4B78 EEE349   484          INC     XX4B7B AD7802   485  CHKUP   LDA     STICK4B7E 2901     486          AND     #$01            ;UP BIT4B80 D00D     487          BNE     AE14B82 ADE449   488          LDA     YY              ;PREVENT SHAPE FROM EXITING TOP SCREEN4B85 C900     489          CMP     #$004B87 F006     490          BEQ     AE14B89 CEE449   491          DEC     YY4B8C CEE449   492          DEC     YY4B8F 60       493  AE1     RTS              494  *XDRAW SHAPE SUBROUTINE4B90 ACE949   495  XDRAW   LDY     VERT            ;VERTICAL POSITION4B93 20344B   496          JSR     GETADR          ;FIND BEGINNING OF SCREEN ADDRESS OF ROW4B96 A200     497          LDX     #$004B98 ADE649   498          LDA     TEMP4B9B 8DE849   499          STA     SLNGH           ;RESTORE VALUE OF WIDTH FOR NEXT ROW4B9E A000     500          LDY     #$004BA0 A1F0     501  XDRAW2  LDA     (SHPL,X)        ;GET BYTE OF SHAPE TABLE4BA2 51F2     502          EOR     (HIRESL),Y      ;EOR WITH SCREEN IMAGE4BA4 91F2     503          STA     (HIRESL),Y      ;PLOT ON SCREEN4BA6 E6F0     504          INC     SHPL            ;NEXT BYTE OF SHAPE TABLE4BA8 D002     505          BNE     AF1             ;IF CROSS PAGE BOUNDARY?4BAA E6F1     506          INC     SHPH            ;INCREMENT TO NEXT PAGE OF SHAPE4BAC C8       507  AF1     INY                     ;NEXT POSITION ON SCREEN4BAD CEE849   508          DEC     SLNGH           ;DECREMENT WIDTH4BB0 D0EE     509          BNE     XDRAW2          ;FINISHED WITH ROW YET4BB2 EEE949   510          INC     VERT            ;IF SO, INCREMENT TO NEXT LINE4BB5 CEE749   511          DEC     DEPTH           ;DECREMENT DEPTH4BB8 D0D6     512          BNE     XDRAW4BBA 60       513          RTS                     ;YES, END