105 ; ABGETIPPT/UEBERARBEITET/KOMMENTIERT VON N.HEUSLER, 19.4.88 106 ; ****************** !! ********** 107 ; BITTE ZEILE 105 UNBEDINGT IM LISTING LASSSEN UND ZEILEN 106-108 LOESCHEN ! 108 ; ****************** !! ********** 110 .EQV =53248 120 JSRINITIAL ; ADRESSEN INIT 130 JSRIRQ ; IRQ UMLENKEN 140 RTS ; FERTIG 150 SETSPRITE LDA#130 ; SPRITE 0 AUF 160 STAV ; POSITION (130/114) 170 LDA#114 180 STAV+1 190 LDA#0 200 STAV+16 210 STAV+29 220 STAV+23 225 LDA#2 ; ROT 230 STAV+39 ; SETZEN 240 LDA#5 ; GRUEN 250 STAV+37 ; MULTICOLOR1 260 LDA#32 ; SPRITEPOINTER 270 STA2040 280 LDA#1 ; MULTICOLOR AN 290 STAV+28 300 STAV+21 ; SPRITE AN 310 RTS 320 ANIMATION RTS 330 ; IN DIESEN ZEILEN 340 ; STEHT SPAETER 350 ; DAS UNTERPROGRAMM 360 ; FUER DIE SPRITE- 370 ; ANIMATION 600 INITIAL LDA#39 ; DATEN FUER SPR.0 610 STA2040 ; AUS BLOCK 39 620 LDA#0 ; NULL 650 STA65 ; LB VON GRAFIKPOINTER AUF 0 660 STAGAME ; SPIELSTAND 670 LDA#7 ; SOFTSCROLLZEIGER 680 STA2 ; AUF SIEBEN 690 LDA#200 ; VERZ. NACH SPIELENDE 700 STADELAY ; 200/25 SEK. 710 LDA#$70 ; HIGH VON GRAFIKPOINTER 720 STA66 ; AUF $70 730 LDA#<(1144) ; POINTER FUER 740 STA67 ; BILDSCH. GRAFIK 750 LDA#>(1144) ; IN 67/68 AUF 1144 760 STA68 770 LDA#5 ; FUENF 772 STA53281 ; DAMIT'S AUF ALTEN 64'ERN LAEUFT ! (NH) 780 STA646 ; UND AUF NEUEN (CURSORFARBE) 790 JSR$E544 ; DENN DIESE SCNSLR ROUTINE GIBT'S 792 ; IN 2 AUSFUEHRUNGEN 800 LDA53270 810 AND#247 ; 38 ZEICHEN PRO ZEILE 820 STA53270 830 JSRRAMSCREEN ; GRAFIK -> SCHIRM 840 JSRSETSPRITE ; AN 842 LDA#0 ; TIEFSCHWARZ 844 STA53280 ; RAHMEN 846 STA53281 ; GRUND 850 LDA53279 ; LOESCHEN KOLLISION SPRITE-GRUND 860 RTS ; FERTIG 870 DELAY BRK ; VERZOEGERUNGSZAEHLER 880 IRQ SEI ; IRQ AUS 890 ; HIER 900 ; STEHT 910 ; ROUTINE 920 ; FUER DIE 930 ; INTERRUPT- 940 ; GESTEUERTE 950 ; MUSIK (SPAETER MAL) 960 LDA#<(IRQNEU) ; LOW 970 STA$314 ; IRQPOINTER AUF EIGENE ROUTINE 980 LDA#>(IRQNEU) ; HIGH 990 STA$315 ; SETZEN 1000 LDA#74 ; RASTERZEILE 74 1010 STAV+$12 ; INS RASTERREG. 1020 LDAV+$11 ; HIGHBYTE DER RA.ZEILE 1030 AND#$7F ; AUS 1040 STAV+$11 1050 LDA#$81 ; RASTERZEILENIRQ VOM VIC 1060 STAV+$1A ; ZULASSEN 1070 CLI ; SONST GEHT'S NICHT (IRQ WIEDER AN) 1080 RTS ; FERTIG 1090 GAME BRK ; SPIELSTANDVARIABLE (ANFANGS NULL) 1100 JOYAB LDA#224 ; TASTATUR 1110 STA56322 ; ABSCHALTEN 1120 LDA56320 ; JOYPORT 2 1130 AND#1 ; BIT 1 GESETZT TESTEN 1140 BNEJOY2 ; JA, DANN WEITER ABFRAGEN 1150 DECV+1 ; SPRITE Y-POS ERNIEDRIGEN 1160 JOY2 LDA56320 1170 AND#2 ; BIT 2 TESTEN 1180 BNEJOY3 ; JA, DANN WEITER 1190 INCV+1 ; SONST SPRITE SENKEN 1200 JOY3 LDA56320 1210 AND#4 ; BIT 3 TESTEN 1220 BNEJOY4 ; JA, WEITER 1230 LDAV ; WENN DIE X-POS DES SPRITE 1240 CMP#32 ; GROESSER 32 IST 1250 BEQJOY4 1260 DECV ; ERNIEDRIGEN 1270 JOY4 LDA56320 1280 AND#8 ; BIT 4 1290 BNEJOY5 ; WEITER 1300 LDAV ; WENN X-POS VON SPRITE 0 1310 CMP#255 ; KLEINER 255 IST 1320 BEQJOY5 ; DANN WEITER 1330 INCV ; X-POS ERHOEHEN 1340 JOY5 LDA#255 ; TASTATUR 1350 STA56322 ; EIN 1360 RTS ; GESCHAFFT 1370 RAMSCREEN LDX#0 ; 13 MAL (ANZ. ZEILEN) 1380 RAMSCRL1 LDY#0 ; 40 ZEICHEN 1390 RAMSCRL2 LDA(65),Y ; AUS 1400 STA(67),Y ; DEM GRAFIKBEREICH 1410 INY ; ZUM 1420 CPY#40 ; BILDSCHIRM 1430 BNERAMSCRL2 ; TRANFERIEREN 1440 INC66 1450 INC66 ; GRAFIKVEKTOR IST 1460 LDA67 1470 CLC ; IN DER ZEROPAGE 1480 ADC#40 1490 STA67 ; 65/66 1500 LDA68 ; BILDSCHIRMVEKTOR IST 1510 ADC#0 1520 STA68 ; 67/68 1530 INX 1540 CPX#13 ; SCHON 13 ZEILEN 1550 BNERAMSCRL1 ; NEIN 1560 LDA66 ; GRAFIKVEKTOR 1570 SEC 1580 SBC#26 1590 STA66 1600 LDA#<(1144) ; BILDSCHIRMVEKTOR 1610 STA67 1620 LDA#>(1144) 1630 STA68 ; BEIDE RESTAURIEREN 1640 RTS ; FERTIG 1650 WARTEN LDY#0 ; TEXT 1 IN DEN SCHIRM 1660 WARTEN1 LDATEXT1,Y 1670 STA1754,Y 1680 INY ; AB SPEICHERZELLE 1754 1690 CPY#20 ; 20 ZEICHEN 1700 BNEWARTEN1 1710 LDA#224 ; TASTATUR 1720 STA56322 ; AUS 1730 LDA56320 ; JOYSTICK LESEN 1740 CMP#111 ; KNOPF TESTEN 1750 BNEWARTENEND ; NEIN, ENDE 1760 LDA#255 ; TASTATUR 1770 STA56322 ; EIN 1780 LDY#0 ; TEXT1 IM SCHIRM LOESCHEN 1790 LDA#32 ; == MIT SPACES UEBERMALEN 1800 WARTEN2 STA1754,Y 1810 INY 1820 CPY#20 1830 BNEWARTEN2 1840 INCGAME ; SPIELSTAND AUF 'SPIEL GESTARTET' SETZEN 1850 WARTENEND RTS 1860 TEXT1 .BY8,9,20,32,20,18,9,7,7,5,18,32,20 1865 .BY15,32,19,20,1,18,20 1870 BOING LDY#0 ; TEXT2 AUSGEBEN 1880 BO1 LDATEXT2,Y 1890 STA1754,Y 1900 INY 1910 CPY#20 ; 20 ZEICHEN 1920 BNEBO1 1930 DECDELAY ; WARTEN BIS 1940 LDADELAY ; VERZOEGERUNG 1950 BNEBOEND ; BEI NULL 1960 LDY#0 1970 LDA#32 ; TEXT2 LOESCHEN 1980 BO2 STA1754,Y 1990 INY 2000 CPY#20 2010 BNEBO2 2020 JSRINITIAL ; ALLES NEU EINSTELLEN 2030 BOEND RTS 2040 TEXT2 .BY25,15,21,18,32,13,9,19,19,9,15,14,32 2042 .BY6,1,9,12,5,4,32 2050 OVER LDY#0 ; TEXT 3 IN DEN 2060 OVERL1 LDATEXT3,Y ; BILDSCHIRM 2070 STA1754,Y 2080 INY 2090 CPY#20 ; 20 ZEICHEN 2100 BNEOVERL1 ; TRANSFERIEREN 2110 DECDELAY ; WARTEN BIS 2120 LDADELAY ; VERZOEGERUNG 2130 BNEOVEREND ; NULL IST 2140 LDY#0 ; TEXT3 2150 LDA#32 ; MIT SPACES 2160 OVERL2 STA1754,Y ; UEBERMALEN 2170 INY 2180 CPY#20 2190 BNEOVERL2 2200 JSRINITIAL ; ALLES INITIALISIEREN (NEUSTART) 2210 OVEREND RTS 2220 TEXT3 .BY25,15,21,32,13,1,4,5,32,9,20,44,15,12 2222 .BY4,32,2,15,25,44 ; TEXT IM BILDSCHIRMCODE 2230 SCROLL LDA2 ; 7 PUNKTE NACH LINKS 2240 BEQBLKSCROLL ; HARDSCROLLING 2250 DEC2 ; EINEN PUNKT NACH LINKS 2260 LDA65 ; ABFRAGEN 2270 CMP#$D8 ; OB DIE GRAFIK AM ENDE 2280 BNEBLKEND 2290 LDA66 ; ANGELANGT IST 2300 CMP#$71 ; (BEI $71D8) 2310 BNEBLKEND ; NEIN, WEITER 2320 INCGAME ; GAME = GAME +2 2330 INCGAME 2340 BLKEND RTS 2350 BLKSCROLL LDA#7; SPEICHERSTELLE FUER SOFTSCROLL 2360 STA2 ; AUF SIEBEN 2370 LDA65 ; GRAFIKPOINTER 2380 CLC ; UM 1 2390 ADC#1 ; (EINFACHER WAERE INC) 2400 STA65 ; ERHOEHEN 2410 LDA66 ; HIGHBYTE 2420 ADC#0 ; SEHR UMSTAENDLICH PROGRAMMIERT 2430 STA66 2440 JSRRAMSCREEN ; TRANSFERROUTINE AUFRUFEN 2450 RTS 2460 IRQNEU LDAV+$19 ; IRQ-REGISTER 2470 STAV+$19 ; LOESCHEN 2480 BMIRASTER ; WAR RASTER-IRQ 2490 LDA$DC0D ; NORMALEN 2500 CLI ; IRQ ZULASSEN 2510 JMP$EA31 ; ZUR SYSTEMROUTINE 2520 RASTER LDAV+$12 ; RASTERIRQ 2530 CMP#178 ; BEI ZEILE 178 2540 BCSZWEITER ; JA, WEITER 2550 LDA53270 ; AB ZEILE 74 2560 AND#248 ; UM DEN WERT IN 2570 ORA2 ; SPEICHERZELLE 2 2580 STA53270 ; NACH LINKS SCROLLEN (SMOOTH) 2590 LDA#5 ; RAHMENFARBE 2600 STA53280 ; GRUEN 2610 LDA#178 ; NAECHSTEN IRQ BEI ZEILE 178 2620 STA$D012 2630 JMP$FEBC ; IRQ FERTIG 2640 ZWEITER LDA53270 ; BILDSCHIRM AB 2650 AND#248 ; ZEILE 178 2660 ORA#7 ; NORMAL SCHALTEN 2670 STA53270 2680 LDA#0 ; SCHWARZ 2690 STA53280 ; RAHMENFARBE 2700 LDAGAME ; SPIELSTAND 2710 BNEGAME1 ; NULL - NEIN, DANN WEITER 2720 JSRWARTEN 2730 JMPEXIT 2740 GAME1 CMP#1 2750 BNEGAME2 ; UNGLEICH 1 2760 JSRSCROLL ; SCROLLEN 2770 JSRANIMATION ; SPRITE 2780 JSRJOYAB ; JOYST. ABFRAGEN 2790 LDA53279 ; SPRITE-HINTERGRUND KOLLISION 2800 BEQNOBOING ; KEIN ZUSAMMENSTOSS 2810 INCGAME ; SONST VERMERKEN 2820 NOBOING JMPEXIT ; FERTIG 2830 GAME2 CMP#2 ; GLEICH 2 2840 BNEGAME3 ; IMMER NOCH NICHT RICHTIG 2850 JSRBOING ; ZUSAMMENSTOSS AUSGEBEN 2860 JMPEXIT 2870 GAME3 CMP#3 2880 BNEEXIT ; AUCH NICHT 3, DANN ENDE 2890 JSROVER ; SPIELENDE 2900 EXIT LDA#74 ; NAECHSTER RASTERIRQ 2910 STAV+$12 ; BEI ZEILE 74 2920 JMP$FEBC ; IRQ BEENDEN