1192 ; ************************* 1193 ; * FIREBUG DISPLAY LISTS * 1194 ; * BY Kyle Peacock * 1195 ; ************************* 1196 ; 1197 .LOCAL 1198 ; 1199 ; GAME BOARD DISPLAY LIST 1200 ; 1201 GAMELIST 1202 .BYTE $30,$30,$30 1203 .BYTE $30,$30,$30 1204 .BYTE $C6 1205 .WORD STATUSLINE 1206 .BYTE $44 1207 .WORD BLANKLINE 1208 .BYTE $74,0,0 1209 .BYTE $74,0,0 1210 .BYTE $74,0,0 1211 .BYTE $74,0,0 1212 .BYTE $74,0,0 1213 .BYTE $74,0,0 1214 .BYTE $74,0,0 1215 DLISTSTART 1216 .BYTE $74,0,0 1217 .BYTE $74,0,0 1218 .BYTE $74,0,0 1219 .BYTE $74,0,0 1220 .BYTE $74,0,0 1221 DLISTEND 1222 .BYTE $74,0,0 1223 .BYTE $74,0,0 1224 .BYTE $74,0,0 1225 .BYTE $74,0,0 1226 .BYTE $74,0,0 1227 .BYTE $74,0,0 1228 .BYTE $74,0,0 1229 .BYTE $54,0,0 1230 .BYTE $C4 1231 .WORD BLANKLINE 1232 .BYTE $00,$C4 1233 .WORD BULLETLINE 1234 .BYTE $20,$06,$41 1235 .WORD GAMELIST 1236 ; 1237 ; TITLE SCREEN DISPLAY LIST 1238 ; 1239 TITLELIST 1240 .BYTE $70,$70,$70,$70,$70 1241 .BYTE $47 1242 .WORD STATUSLINE 1243 .BYTE $70,$70,$46 1244 .WORD TITLE1 1245 .BYTE $70,$47 1246 SWITCH1 1247 .WORD TITLE4 1248 .BYTE $70,$46 1249 .WORD TITLE3 1250 .BYTE $70,$47 1251 SWITCH2 1252 .WORD TITLE2 1253 .BYTE $70,$70,$70,$46 1254 .WORD TITLE5 1255 .BYTE $70,$46 1256 .WORD BULLETLINE+40 1257 .BYTE $41 1258 .WORD TITLELIST 1259 ; 1260 ; BORDER LINE CHARACTERS 1261 ; 1262 BLANKLINE 1263 .BYTE 1,1,1,1,1,1,1,1,1,1 1264 .BYTE 1,1,1,1,1,1,1,1,1,1 1265 .BYTE 1,1,1,1,1,1,1,1,1,1 1266 .BYTE 1,1,1,1,1,1,1,1,1,1 1267 .BYTE 1,1,1,1,1,1,1,1 1268 ; 1269 ; SPARK BAR GRAPH 1270 ; 1271 BULLETLINE 1272 .BYTE 0,0,0,0,0,0,0,0,0,0 1273 .BYTE 0,0,0,0,0,0,0,0,0,0 1274 .BYTE 0,0,0,0,0,0,0,0,0,0 1275 .BYTE 0,0,0,0,0,0,0,0,0,0 1276 ; 1277 ; CREDITS & WHAT-NOT 1278 ; 1279 SCOLIN 1280 .SBYTE +$40," LVL:" 1281 .SBYTE +$80," BUGS: " 1282 STATUSLINE 1283 .SBYTE " fire" 1284 .SBYTE " bug " 1285 TITLE1 1286 .SBYTE " WRITT" 1287 .SBYTE "EN BY " 1288 TITLE2 1289 .SBYTE " TOM H" 1290 .SBYTE "UDSON " 1291 TITLE3 1292 .SBYTE " &" 1293 .SBYTE " " 1294 TITLE4 1295 .SBYTE " kyle p" 1296 .SBYTE "eacock " 1297 TITLE5 1298 .SBYTE " analog c" 1299 .SBYTE "omputing " 1300 ; ************************* 1301 ; * DISPLAY LIST MODIFIER * 1302 ; * BY Kyle Peacock * 1303 ; ************************* 1304 ; 1305 .LOCAL 1306 ; 1307 SHIFTER 1308 LDY #13 ;D-LIST INDEX. 1309 LDA #19 ;# OF LINES TO 1310 STA ?COUNT ;MODIFY LMSs. 1311 LDA YPOINT ;GET Y-COORD. 1312 ASL A ;MULTIPLY BY 2. 1313 TAX ;USE AS INDEX. 1314 ?GET 1315 LDA SCREENBYTES+1,X ;END OF 1316 CMP #$FF ;SCREEN RAM? 1317 BNE ?PASS1 ;YES! BRANCH! 1318 LDX #$00 ;CLEAR X-REG. 1319 ?PASS1 1320 LDA SCREENBYTES,X ;GET 1321 CLC ;SCREEN RAM & 1322 ADC XPOINT ;ADD X-COORD. 1323 STA GAMELIST,Y ;& SAVE. 1324 LDA SCREENBYTES+1,X ;ALSO 1325 ADC #$00 ;ADD TO HI-BYTE 1326 STA GAMELIST+1,Y ;& SAVE. 1327 INX ;INCREMENT POIN- 1328 INX ;TERS FOR NEXT 1329 TYA ;LMS OPERAND 1330 CLC ;TRANSFER. 1331 ADC #$03 1332 TAY 1333 DEC ?COUNT ;ALL LINES DONE? 1334 BPL ?GET ;NO! BRANCH! 1335 RTS ;LATER Y'ALL!!! 1336 ?COUNT 1337 .BYTE 0 ;COUNTER 1338 ; 1339 ; ***************************** 1340 ; * FIREBUG SCREEN MEMORY MAP * 1341 ; ***************************** 1342 ; 1343 SCREENBYTES 1344 .WORD SCREENBASE+[0*128] 1345 .WORD SCREENBASE+[1*128] 1346 .WORD SCREENBASE+[2*128] 1347 .WORD SCREENBASE+[3*128] 1348 .WORD SCREENBASE+[4*128] 1349 .WORD SCREENBASE+[5*128] 1350 .WORD SCREENBASE+[6*128] 1351 .WORD SCREENBASE+[7*128] 1352 .WORD SCREENBASE+[8*128] 1353 .WORD SCREENBASE+[9*128] 1354 .WORD SCREENBASE+[10*128] 1355 .WORD SCREENBASE+[11*128] 1356 .WORD SCREENBASE+[12*128] 1357 .WORD SCREENBASE+[13*128] 1358 .WORD SCREENBASE+[14*128] 1359 .WORD SCREENBASE+[15*128] 1360 .WORD SCREENBASE+[16*128] 1361 .WORD SCREENBASE+[17*128] 1362 .WORD SCREENBASE+[18*128] 1363 .WORD SCREENBASE+[19*128] 1364 .WORD SCREENBASE+[20*128] 1365 .WORD SCREENBASE+[21*128] 1366 .WORD SCREENBASE+[22*128] 1367 .WORD SCREENBASE+[23*128] 1368 .WORD SCREENBASE+[24*128] 1369 .WORD SCREENBASE+[25*128] 1370 .WORD SCREENBASE+[26*128] 1371 .WORD SCREENBASE+[27*128] 1372 .WORD SCREENBASE+[28*128] 1373 .WORD SCREENBASE+[29*128] 1374 .WORD SCREENBASE+[30*128] 1375 .WORD SCREENBASE+[31*128] 1376 .WORD SCREENBASE+[32*128] 1377 .WORD SCREENBASE+[33*128] 1378 .WORD SCREENBASE+[34*128] 1379 .WORD SCREENBASE+[35*128] 1380 .WORD SCREENBASE+[36*128] 1381 .WORD SCREENBASE+[37*128] 1382 .WORD SCREENBASE+[38*128] 1383 .WORD SCREENBASE+[39*128] 1384 .WORD SCREENBASE+[40*128] 1385 .WORD SCREENBASE+[41*128] 1386 .WORD SCREENBASE+[42*128] 1387 .WORD SCREENBASE+[43*128] 1388 .WORD SCREENBASE+[44*128] 1389 .WORD SCREENBASE+[45*128] 1390 .WORD SCREENBASE+[46*128] 1391 .WORD SCREENBASE+[47*128] 1392 .WORD SCREENBASE+[48*128] 1393 .WORD SCREENBASE+[49*128] 1394 .WORD SCREENBASE+[50*128] 1395 .WORD SCREENBASE+[51*128] 1396 .WORD SCREENBASE+[52*128] 1397 .WORD SCREENBASE+[53*128] 1398 .WORD SCREENBASE+[54*128] 1399 .WORD SCREENBASE+[55*128] 1400 .WORD SCREENBASE+[56*128] 1401 .WORD SCREENBASE+[57*128] 1402 .WORD SCREENBASE+[58*128] 1403 .WORD SCREENBASE+[59*128] 1404 .WORD SCREENBASE+[60*128] 1405 .WORD SCREENBASE+[61*128] 1406 .WORD SCREENBASE+[62*128] 1407 .WORD SCREENBASE+[63*128] 1408 .WORD $FFFF 1409 ; ***************************** 1410 ; * FIREBUG INITIALIZATION * 1411 ; * Tom Hudson & Kyle Peacock * 1412 ; ***************************** 1413 ; 1414 ; ************************ 1415 ; * ONE SHOT INITIALIZER * 1416 ; ************************ 1417 ; 1418 .LOCAL 1419 ; 1420 INIT 1421 ; 1422 ;SET UP CHARACTERS 1423 ; 1424 LDA #$04 ;CHSET START 1425 STA HLO+1 ;PUT IN POINTER 1426 LDX #13 ;14 CHARS... 1427 STX XTEMP ;TO LOAD 1428 CHLOOP 1429 LDX XTEMP ;GET CHAR # 1430 LDA CSTRT,X ;AND START ADDR 1431 STA HLO ;PUT IN POINTER 1432 TXA ;NOW... 1433 ASL A ;MULT... 1434 ASL A ;POINTER... 1435 ASL A ;BY 8, 1436 TAX ;USE AS INDEX 1437 LDY #0 ;START CHAR COPY 1438 CHL2 1439 LDA CDATA,X ;GET CHAR DATA 1440 STA (HLO),Y ;MOVE TO CHSET 1441 INX ;NEXT CHAR BYTE 1442 INY ;NEXT SET BYTE 1443 CPY #8 ;DONE 8? 1444 BNE CHL2 ;NO, LOOP BACK 1445 DEC XTEMP ;NEXT CHAR 1446 BPL CHLOOP ;LOOP IF MORE 1447 ; 1448 ; GENERAL VARIABLE SETTING 1449 ; 1450 LDA #$00 ;CLEAR 1451 STA PLAYNO ;PLAYER #. 1452 STA VBIT ;RAM VSCROL 1453 STA HBIT ;RAM HSCROL 1454 STA MINX ;MIN. X-COORD. 1455 LDX #2 1456 CSCLP STA SCORE,X ;SCORES 1457 STA SCOADD,X ;& STUFF. 1458 DEX 1459 BPL CSCLP 1460 LDA #$01 ;SET w/ 1. 1461 STA MINY ;MIN Y-COORD. 1462 STA FIRETIME ;FIRING. 1463 LDA #84 1464 STA MAXX ;MAX X-COORD. 1465 LDA #43 1466 STA MAXY ;MAX Y-COORD. 1467 LDA #$03 ;CHARACTER UP- 1468 STA MOVETIME ;DATA TIMER. 1469 STA PHASETIME 1470 LDX #$04 ;SET UP. 1471 STX LIVES ;# OF LIVES 1472 LDA STARTLEVEL 1473 STA LEVEL ;STARTING LEVEL 1474 STA BCDLVL ;STARTING LEVEL 1475 ?TYPESET 1476 LDA ?TYPEBASE,X ;CHARACTER 1477 STA TYPE,X ;TYPE SETTING. 1478 DEX ;SET THEM ALL. 1479 BPL ?TYPESET 1480 ; 1481 ; PLAYER/MISSILE INITIALIZATION 1482 ; 1483 LDA #$3E 1484 STA SDMCTL ;DMA. 1485 LDA #PLAYBS/256 1486 STA PMBASE ;ADDRESS. 1487 LDA #$03 ;GRAPHICS 1488 STA GRACTL ;CONTROL. 1489 LDA #$21 ;PRIORITY 1490 STA GPRIOR ;REG. 1491 LDA #$F0 ;MISSILES 2 & 3 1492 STA SIZEM ;ARE 4X SIZE. 1493 LDA #$28 ;MISSILE 2 X. 1494 STA HPOSM0+2 1495 LDA #$CC ;MISSILE 3 X. 1496 STA HPOSM0+3 1497 LDA #$00 ;CLEAR OUT 1498 TAX 1499 ?PMSET 1500 STA MISS,X ;MISSILES. 1501 CPX #$C9 ;INSTALL 1502 BCS ?PMSET2 ;PLAYFIELD 1503 CPX #$30 ;BORDER 1504 BCC ?PMSET2 ;INTO MISSILES 1505 LDA #$F0 1506 STA MISS,X ;2 AND 3. 1507 LDA #$00 1508 ?PMSET2 1509 DEX ;ALL DONE? 1510 BNE ?PMSET ;NO! CONT. 1511 ; 1512 ; ************************ 1513 ; * MULTIPLE INITIALIZER * 1514 ; ************************ 1515 ; 1516 INIT2 1517 JSR SOUNDOFF 1518 LDX #$01 1519 STX VSTOP ;HALT VBLANK. 1520 STX CH ;STUFF CHAR. 1521 ; 1522 ; GENERAL VARIABLE SETTING 1523 ; 1524 DEX 1525 DEX 1526 STX CHANGE1 ;TURN OFF 1527 STX CHANGE2 ;ALL SOUND 1528 STX BULLNOISE ;RAM VARIA- 1529 STX BOOMNOISE ;BLES. 1530 STX EXNOISE 1531 STX EATNOISE 1532 LDA MINX ;SET LMS OPER- 1533 STA XPOINT ;ANDS TO UPPER 1534 LDA MINY ;LEFT OF BOARD. 1535 STA YPOINT 1536 LDA #$00 ;NO SPARKS ARE 1537 STA NOBULL ;ACTIVE. 1538 LDX #$03 1539 ?SETBULL 1540 LDA #$FF ;CLEAR SPARK 1541 STA BULLDIR,X ;WORK AREA. 1542 DEX 1543 BPL ?SETBULL 1544 LDX #19 ;SET SPARK LINE 1545 LDA #20 ;TO FULL 1546 ?SETBULL2 ; CAPACITY. 1547 STA BULLETLINE+10,X 1548 DEX 1549 BPL ?SETBULL2 1550 LDA #29 ;SET BULLET 1551 STA BULLPNT ;POINTER. 1552 ; 1553 ; FILL PLAY AREA WITH DIRT 1554 ; 1555 LDX #$00 ;CLEAR X-REG. 1556 ?FILL1 1557 TXA ;MOVE X TO A. 1558 ASL A ;MULTIPLY BY 2. 1559 TAY ;MOVE A TO Y. 1560 LDA SCREENBYTES,Y 1561 STA LO ;GET SCREEN 1562 LDA SCREENBYTES+1,Y 1563 STA LO+1 ;ADDRESS. 1564 CMP #$FF ;AT RAM END? 1565 BEQ ?FILL3 ;YES! BRANCH! 1566 LDY #127 ;SET FOR FILL. 1567 ?FILL2 1568 LDA #$04 ;GET RANDOM # 1569 JSR RANDO ;(0 UP TO ACC-1) 1570 CLC ;ADD TWO TO 1571 ADC #$02 ;VALUE IN ACC. 1572 STA (LO),Y ;STORE IT. 1573 DEY ;HANDLE NEXT. 1574 BPL ?FILL2 ;BRANCH! 1575 INX ;NEXT RAM AREA. 1576 JMP ?FILL1 ;JUMP ON IT! 1577 ?FILL3 1578 ; 1579 ; PLACE PRE-PROGRAMMED TUNNELS 1580 ; 1581 LDX #$00 ;CLEAR X-REG. 1582 ?VECSET 1583 LDY #$00 ;CLEAR Y-REG. 1584 ?VECSET2 1585 LDA ?VECTORS,X ;GET VECTOR 1586 STA ?INITX,Y ;INITIAL X. 1587 INX ;GET ADDITIONAL 1588 INY ;VECTOR INFO. 1589 CPY #$06 ;LAST DATA BYTE? 1590 BNE ?VECSET2 ;NO! BRANCH! 1591 ?VECPLOT 1592 LDA ?INITX ;GET INITIAL X. 1593 STA XCOORD ;SAVE IT. 1594 LDA ?INITY ;GET INITAIL Y. 1595 STA YCOORD ;SAVE IT. 1596 JSR XYFIND ;FIND RAM LOC. 1597 LDY #$00 ;CLEAR Y-REG. 1598 TYA ;MOVE Y TO A. 1599 STA (LO),Y ;STORE IN MEM. 1600 LDA ?INITX ;IS X VECTOR AT 1601 CMP ?FINALX ;DESTINATION? 1602 BNE ?VECRESET ;NO! BRANCH! 1603 LDY ?INITY ;IS Y VECTOR AT 1604 CPY ?FINALY ;DESTINATION? 1605 BEQ ?NEXTVEC ;YES! BRANCH! 1606 ?VECRESET 1607 CLC ;ADD X-DELTA 1608 ADC ?DELTAX ;TO X VECTOR. 1609 STA ?INITX ;SAVE IT. 1610 LDA ?INITY ;ADD Y-DELTA 1611 CLC ;TO Y VECTOR. 1612 ADC ?DELTAY 1613 STA ?INITY ;SAVE IT. 1614 JMP ?VECPLOT ;PLOT NEXT. 1615 ?NEXTVEC 1616 CPX #[6*6] ;6 VECTORS 1617 BCC ?VECSET ;NEXT VECTOR. 1618 ; 1619 ; PLACE PROXIMITY BOMBS 1620 ; 1621 LDX LEVEL ;GET LEVEL #. 1622 CPX #11 ;IS IT >10 ? 1623 BCC ?NUMBMB ;NO! BRANCH! 1624 LDX #10 ;SET 10 AS MAX. 1625 ?NUMBMB 1626 LDA ?NUMPROX-1,X ;GET # OF 1627 STA BOMBCT ;BOMBS FOR LEVEL 1628 TAX ;& SAVE IN X. 1629 ?PLACEBOMBS 1630 LDA #58 ;GET RANDOM # 1631 JSR RANDO ;(0 UP TO ACC-1) 1632 CLC ;THEN ADD THREE. 1633 ADC #$03 1634 ASL A ;MULTIPLY BY 2. 1635 TAY ;MOVE A TO Y. 1636 LDA SCREENBYTES,Y 1637 STA LO ;GET SCREEN RAM 1638 STA BOMBL,X 1639 LDA SCREENBYTES+1,Y 1640 STA LO+1 ;Y-COORDINATE. 1641 STA BOMBH,X 1642 LDA #115 ;GET RANDOM #. 1643 JSR RANDO ;(0 TO ACC-1) 1644 CLC ;NOW ADD SIX. 1645 ADC #$06 1646 ORA #$01 ;BIT 0 ON. 1647 TAY ;MOVE TO Y. 1648 LDA (LO),Y ;GET LOCATION 1649 BEQ ?PLACEBOMBS ;TUNNEL! 1650 CMP #BOMB 1651 BEQ ?PLACEBOMBS ;IT'S A BOMB! 1652 LDA #BOMB ;BOMB CHARACTER. 1653 STA (LO),Y ;STORE IN RAM. 1654 CLC ;STORE NEIGH- 1655 ADC #1 ;BORING CHARA- 1656 INY ;CTER IN ADJA- 1657 STA (LO),Y ;CENT LOCATION. 1658 DEY ;ADD CORRECT 1659 TYA ;VALUE INTO 1660 CLC ;BOMB DATABASE 1661 ADC BOMBL,X ;& SAVE BOMB'S 1662 STA BOMBL,X ;X & Y COORDS. 1663 LDA #$FF ;RESET BOMB 1664 STA ARMED,X ;WITH 255. 1665 DEX ;HANDLE NEXT. 1666 BPL ?PLACEBOMBS 1667 ; 1668 ; PLACE BORDERS 1669 ; 1670 LDX #$00 ;CLEAR X. 1671 ?BOARD1 1672 LDA SCREENBYTES+1,X ;AT END 1673 CMP #$FF ;OF SCR BYTES? 1674 BEQ ?BOARD2 ;YES! BRANCH! 1675 STA LO+1 ;SAVE RAM LOC. 1676 LDA SCREENBYTES,X 1677 STA LO ;BOTH LO & HI. 1678 LDY #$01 ;BORDER CHAR. 1679 TYA ;MOVE Y TO A. 1680 STA (LO),Y ;STORE IT. 1681 LDY #127 1682 STA (LO),Y ;STORE IT. 1683 INX ;MOVE TO NEXT 1684 INX ;SCREEN RAM. 1685 JMP ?BOARD1 ;JUMP ON IT. 1686 ?BOARD2 1687 DEX ;SCREEN RAM 1688 DEX ;END. 1689 LDA SCREENBYTES,X 1690 STA LO ;GET LAST 1/2 1691 LDA SCREENBYTES+1,X 1692 STA LO+1 ;& FIRST 1/2 1693 LDA SCREENBYTES 1694 STA LOW ;PAGE & SAVE 1695 LDA SCREENBYTES+1 1696 STA LOW+1 ;THEIR LOCS. 1697 LDY #127 ;LOAD POINTER. 1698 LDA #$01 ;BORDER CHAR. 1699 ?BOARD3 1700 STA (LO),Y ;SAVE INTO RAM 1701 STA (LOW),Y ;AT TOP & BOTTOM 1702 DEY ;OF BOARD. 1703 BPL ?BOARD3 ;HANDLE ALL... 1704 JSR SHOSCO ;SHOW SCORE 1705 JSR SHOLVL ;SHOW LEVEL 1706 JSR SHOLIV ;SHOW LIVES 1707 ; 1708 ;RESET ALL ENEMIES 1709 ; 1710 LDX #29 ;CLEAR ALL 30 1711 LDA #0 ;ZERO OUT... 1712 CLEN STA EACT,X ;ACTIVE FLAG 1713 DEX ;NEXT ENEMY 1714 BPL CLEN ;LOOP UNTIL DONE 1715 ; 1716 ;NOW INITIALIZE 4 ENEMIES 1717 ; 1718 LDX #3 ;4 OF 'EM 1719 IELP LDA #1 ;SET... 1720 STA EACT,X ;ACTIVE FLAG 1721 LDA #$FF ;GIVE IT... 1722 STA EDIR,X ;RANDOM DIRECTION 1723 LDA ENSTH,X ;GET ADDRESS... 1724 STA EADH,X ;OF EACH... 1725 STA ADL+1 ;ENEMY... 1726 LDA ENSTL,X ;AND SAVE! 1727 STA EADL,X 1728 STA ADL 1729 LDA #8 ;SET UP AS... 1730 STA ETYP,X ;TYPE 8 1731 LDY #0 ;AND DRAW... 1732 STA (ADL),Y ;ON DISPLAY 1733 INY 1734 CLC 1735 ADC #1 1736 STA (LO),Y 1737 DEX ;NEXT ENEMY 1738 BPL IELP ;LOOP IF MORE 1739 LDA #0 ;START UP IN... 1740 STA GENFLG ;MATING SEASON! 1741 ; 1742 ;INIT EGGS 1743 ; 1744 LDA LEVEL ;GET LEVEL 1745 SEC ;AND DECREMENT 1746 SBC #1 ;BY 1, 1747 LSR A ;DIVIDE BY 8, 1748 LSR A 1749 LSR A 1750 STA EGGTOT ;SAVE A MINUTE, 1751 LDA #3 ;GET 3, 1752 SEC ;SUBTRACT TEMP 1753 SBC EGGTOT ;FROM IT, 1754 STA EGROUP ;SAVE # OF NESTS 1755 TAX ;USE AS INDEX... 1756 LDA IEGGCT,X ;GET BABY COUNT 1757 STA EGGTOT ;AND SAVE... 1758 STA EGGS ;IN WORK... 1759 STA EGGIX ;AREAS 1760 IEGGL1 LDX EGROUP ;GET NEXT COUNT 1761 LDA EGGSTL,X ;GET ADDRESS... 1762 STA HLO ;OF NEST CENTER 1763 LDA EGGSTH,X 1764 STA HLO+1 1765 LDX #12 ;13 BABIES 1766 IEGGL2 LDA HLO ;GET NEST ADDR... 1767 CLC ;AND ADD... 1768 ADC EADDL,X ;DIRECTION... 1769 STA ADL ;OFFSET 1770 LDY EGGIX 1771 STA EGGL,Y 1772 LDA HLO+1 1773 ADC EADDH,X 1774 STA ADL+1 1775 STA EGGH,Y 1776 LDA #1 ;ACTIVATE... 1777 STA EGGACT,Y ;BABY 1778 LDY #0 1779 LDA #12 ;AND DRAW... 1780 STA (ADL),Y ;BABY... 1781 INY ;ON SCREEN! 1782 CLC 1783 ADC #1 1784 STA (ADL),Y 1785 DEC EGGIX ;NEXT INDEX 1786 DEX ;NEXT BABY 1787 BPL IEGGL2 ;LOOP IF MORE 1788 DEC EGROUP ;NEXT NEST 1789 BPL IEGGL1 ;LOOP IF MORE 1790 ; 1791 ;PLACE FIREBUG 1792 ; 1793 LDA # >SCREENBASE+131 1794 STA BUGL+1 1795 STA ADL+1 1796 LDA # SCREENBASE+3775 1883 .BYTE >SCREENBASE+4153 1884 .BYTE >SCREENBASE+4165 1885 .BYTE >SCREENBASE+4543 1886 ENSTL .BYTE SCREENBASE+2079 1899 .BYTE >SCREENBASE+6239 1900 .BYTE >SCREENBASE+6175 1901 .BYTE >SCREENBASE+2143 1902 IEGGCT .BYTE 12,25,38,51 1903 CSTRT .BYTE 0,8,16,24,32,40,112 1904 .BYTE 120,128,160,168,176 1905 .BYTE 184,192 1906 CDATA .BYTE 0,0,0,0,0,0,0,0 1907 .BYTE 170,170,255,255 1908 .BYTE 255,255,170,170 1909 .BYTE 16,1,0,4,64,0,1,64 1910 .BYTE 0,16,1,64,4,0,17,0 1911 .BYTE 64,1,0,4,64,1,0,16 1912 .BYTE 16,1,0,64,1,16,0,4 1913 .BYTE 0,0,0,0,0,0,0,0 1914 .BYTE 1,4,1,2,11,47,47,10 1915 .BYTE 64,16,5,128 1916 .BYTE 224,248,248,160 1917 .BYTE 255,102,102,102 1918 .BYTE 102,102,102,255 1919 .BYTE 255,100,100,100 1920 .BYTE 100,100,100,255 1921 .BYTE 255,96,96,96 1922 .BYTE 96,96,96,255 1923 .BYTE 255,64,64,64 1924 .BYTE 64,64,64,255 1925 .BYTE 255,0,0,0 1926 .BYTE 0,0,0,255 1927 ; 1928 ; *************************** 1929 ; * RANDOM NUMBER GENERATOR * 1930 ; *************************** 1931 ; 1932 RANDO 1933 BEQ ?RET ;IF = 0 BRANCH. 1934 STA ?HOLD ;SAVE ACC. 1935 LDA RANDOM ;GET RANDOM #. 1936 ?RAN1 1937 CMP ?HOLD ;IS IT < ACC? 1938 BCC ?RET ;YES! BRANCH! 1939 LSR A ;NO. DIVIDE BY 1940 LSR A ;TWO. TRY AGAIN. 1941 JMP ?RAN1 ;JUMP ON IT! 1942 ?RET 1943 RTS ;BOGGIE... 1944 ?HOLD 1945 .BYTE 0 ;TEMP STORAGE. 1946 ; 1947 ; *************************** 1948 ; * X & Y COORDINATE TRACER * 1949 ; *************************** 1950 ; 1951 XYFIND 1952 STX ?HOLD ;SAVE X-REG. 1953 LDA YCOORD ;GET Y-COORD. 1954 ASL A ;MULTIPLY BY 2. 1955 TAX ;MOVE A TO X. 1956 LDA SCREENBYTES,X ;GET RAM 1957 CLC ;BYTE & ADD 1958 ADC XCOORD ;X-COORD. 1959 STA LO ;SAVE IT. 1960 LDA SCREENBYTES+1,X 1961 STA LO+1 ;GET HI BYTE. 1962 LDX ?HOLD ;RESTORE X-REG. 1963 RTS ;BAMF!!! 1964 ?INITX .BYTE 0 1965 ?INITY .BYTE 0 1966 ?FINALX .BYTE 0 1967 ?FINALY .BYTE 0 1968 ?DELTAX .BYTE 0 1969 ?DELTAY .BYTE 0 1970 ; *********************** 1971 ; * FINE SCROLL CONTROL * 1972 ; * BY Kyle Peacock * 1973 ; * [WHO ELSE?!?] * 1974 ; *********************** 1975 ; 1976 .LOCAL 1977 ; 1978 SCROLL 1979 LDA BUGL+1 ;BUG AT SCREEN 1980 CMP DLISTSTART+2 ;TOP? 1981 BCS ?VTEST1 ;NO! BRANCH! 1982 LDA #$00 ;YES! CLEAR & 1983 BEQ ?VSET ;BRANCH! 1984 ?VTEST1 1985 CMP DLISTEND+2 ;BUG AT BOTTOM? 1986 BCC ?VSCROLL ;NO! BRANCH! 1987 LDA #$01 ;YES! SET. 1988 ?VSET 1989 STA ?VDIR ;SAVE VERT.FLAG 1990 LDX #4 ;SET VERT SCROLL 1991 STX ?VCOUNT ;DISTANCE. 1992 ?VSCROLL 1993 LDA ?VCOUNT ;SCROLL NOW? 1994 BEQ ?VSTORE ;IF NOT, BRANCH. 1995 LDA ?VDIR ;GET DIRECTION 1996 BNE ?DOWN ;TO SCROLL IN. 1997 ?UP 1998 DEC VBIT ;DEC RAM VSCROL. 1999 BPL ?VSTORE ;IF >0 BRANCH. 2000 ?UP1 2001 LDA YPOINT ;GET Y-COORD. 2002 CMP MINY ;AT BOARD TOP? 2003 BNE ?UP2 ;NO! BRANCH! 2004 INC VBIT ;YES! HALT 2005 JMP ?VHALT ;SCROLL. BRANCH. 2006 ?UP2 2007 LDA #$07 ;RESET RAM COPY 2008 STA VBIT ;OF VSCROL. 2009 DEC YPOINT ;DEC Y-COORD. 2010 JMP ?VDEC ;JUMP ON IT! 2011 ?DOWN 2012 INC VBIT ;INC RAM VSCROL 2013 LDA VBIT ;IF <8 BRANCH. 2014 CMP #$08 2015 BCC ?VSTORE 2016 LDA YPOINT ;GET Y-COORD. 2017 CMP MAXY ;AT BOARD BOTTOM? 2018 BNE ?DOWN2 ;NO! BRANCH! 2019 DEC VBIT ;YES! HALT 2020 JMP ?VHALT ;SCROLL. BRANCH. 2021 ?DOWN2 2022 LDA #$00 ;RESET RAM COPY 2023 STA VBIT ;OF VSCROL. 2024 INC YPOINT ;INC Y-COORD. 2025 ?VDEC 2026 DEC ?VCOUNT ;DEC VERT 2027 JMP ?VSTORE ;SCROLL COUNT. 2028 ?VHALT 2029 LDA #$00 ;HALT VERT 2030 STA ?VCOUNT ;SCROLL COUNT. 2031 ?VSTORE 2032 LDA VBIT ;GET RAM COPY & 2033 STA VSCROL ;SAVE IN OS. 2034 LDA DLISTSTART+1 ;TEST TO 2035 AND #$7F ;SEE IF BUG IS 2036 STA ?HOLD ;TOO FAR LEFT 2037 LDA BUGL ;OR TOO FAR 2038 AND #$7F ;RIGHT OF SCREEN 2039 SEC ;CENTER. 2040 SBC ?HOLD 2041 CMP #30 ;VALUE < 30? 2042 BCC ?HTEST2 ;YES! BRANCH! 2043 LDA #$00 ;TOO FAR RIGHT. 2044 BEQ ?HSET ;BRANCH! 2045 ?HTEST2 2046 CMP #15 ;VALUE > 14? 2047 BCS ?HSCROLL ;YES! BRANCH! 2048 LDA #$01 ;TOO FAR LEFT. 2049 ?HSET 2050 STA ?HDIR ;SAVE DIRECTION. 2051 LDA #12 ;SET HORT SCROLL 2052 STA ?HCOUNT ;DISTANCE. 2053 ?HSCROLL 2054 LDA ?HCOUNT ;HORT SCROLL? 2055 BEQ ?HSTORE ;NO! BRANCH! 2056 LDA ?HDIR ;YES! GET SCROLL 2057 BEQ ?RIGHT ;DIRECTION. 2058 ?LEFT 2059 INC HBIT ;INC RAM HSCROL. 2060 LDA HBIT ;IS IT > 3? 2061 CMP #$04 2062 BCC ?HSTORE ;NO! BRANCH! 2063 LDA XPOINT ;AT LEFT EDGE? 2064 CMP MINX 2065 BNE ?LEFT2 ;NO! BRANCH! 2066 DEC HBIT ;RESET HSCROL 2067 JMP ?HHALT ;& HALT SCROLL. 2068 ?LEFT2 2069 LDA #$00 ;RESET HSCROL 2070 STA HBIT ;RAM COPY. 2071 DEC XPOINT ;DEC X-COORD. 2072 JMP ?HDEC ;JUMP ON IT! 2073 ?RIGHT 2074 DEC HBIT ;DEC RAM HSCROL 2075 BPL ?HSTORE ;IF >0 BRANCH! 2076 LDA XPOINT ;GET X-COORD. 2077 CMP MAXX ;AT RIGHT EDGE? 2078 BNE ?RIGHT2 ;NO! BRANCH! 2079 INC HBIT ;RESET HSCROL 2080 JMP ?HHALT ;& HALT SCROLL. 2081 ?RIGHT2 2082 LDA #$03 ;RESET RAM 2083 STA HBIT ;HSCROL & 2084 INC XPOINT ;INC X-COORD. 2085 ?HDEC 2086 DEC ?HCOUNT ;DEC HORT SCROLL 2087 JMP ?HSTORE ;COUNT. 2088 ?HHALT 2089 LDA #$00 ;HALT HORT 2090 STA ?HCOUNT ;SCROLL COUNT. 2091 ?HSTORE 2092 LDA HBIT ;SAVE RAM HSCROL 2093 STA HSCROL ;INTO OS. 2094 LDX PLAYNO ;GET JOYSTICK 2095 LDY STICK0,X ;POSITION. 2096 CPY #15 ;CENTERED? 2097 BEQ ?SCROLLDONE ;YES-BRANCH. 2098 CPY ?PREVIOUS ;UNTOUCHED? 2099 BEQ ?SCROLLDONE ;YES-BRANCH. 2100 LDA ?TYPESET-5,Y ;UPDATE 2101 STA TYPE ;BUG FACING. 2102 ?SCROLLDONE 2103 STY ?PREVIOUS ;SAVE STICK. 2104 RTS ;CHOW BABY... 2105 ?PREVIOUS 2106 .BYTE 0 ;PREVIOUS STICK 2107 ?TYPESET ; BUG HEADINGS 2108 .BYTE 3,1,1,0,2,0,2,0,3,0 2109 ?HOLD 2110 .BYTE 0 ;TEMP STORAGE 2111 ?VDIR 2112 .BYTE 0 ;VERT DIRECTION 2113 ?HDIR 2114 .BYTE 0 ;HORT DIRECTION 2115 ?VCOUNT 2116 .BYTE 0 ;VERTICAL COUNT 2117 ?HCOUNT 2118 .BYTE 0 ;HORIZONTAL COUNT