home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
64'er
/
64ER_CD.iso
/
sh3x
/
sh30b.d64
/
src.main
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
1995-03-30
|
8KB
|
272 lines
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