home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
64'er
/
64ER_CD.iso
/
sh2x
/
sh27c.d64
/
alley.src
< prev
next >
Wrap
Text File
|
1995-03-30
|
4KB
|
97 lines
; ******************************
; ** **
; ** ALLEY. SIM. **
; ** **
; ** BY **
; ** **
; ** STEFAN LANDFRIED **
; ** **
; ** (C) MARKT & TECHNIK **
; ** **
; ** VERLAGS AG **
; ** **
; ******************************
;
ORG $C000 ; ANFANGSADRESSE = 49152
:GETBYT = $B79E ;ADRESSEN FUER PARAMETERUEBERGABE
:CHKKOM = $AEFD
JSR CHKKOM ;PROGRAMMSTART UND ABFRAGE
JSR GETBYT ;DER VERSCHIEDENEN PARAMETER
STX MODIFY1+1 ; RASTERZEILENPOSITIONEN
STX MODIFY2+1 ; DES FARBSCROLLES MODIFIZIEREN
JSR CHKKOM ; AUF KOMMA PRUEFEN
JSR GETBYT ; PARAMETER HOLEN
STX MODIFY3+1 ; GESCHWINDIGKEIT MODIFIZIEREN
JSR CHKKOM ; AUF KOMMA PRUEFEN
JSR GETBYT ; PARAMETER HOLEN
STX MODIFY4+1 ; BREITE MODIFIZIEREN
JSR CHKKOM ; AUF KOMMA PRUEFEN
JSR GETBYT ; PARAMETER HOHLEN
STX MODIFY5+1 ; UND MODIFIZIEREN
SEI ; INTERRUPT SPERREN
LDA $DC0D ; CIA-TIMER
AND #%01111111 ; AUSSCHALTEN
ORA #%00000001
STA $DC0D
:MODIFY2 LDA #130 ; RASTERZEILE VORWAEHLEN
STA 53248+18
LDA 53248+17 ; HI-BYTE DES RASTERSTRAHLS
AND #$7F ; AUSSCHALTEN
STA 53248+17
LDA #%10000001 ; RASTERZEILENINTERRUPT VORWAEHLEN
STA 53248+26
LDA #<IRQ ; LO-BYTE DER NEUEN ROUTINE
STA $0314 ; SCHREIBEN
LDA #>IRQ ; HI-BYTE DER NEUEN ROUTINE
STA $0315 ; SCHREIBEN
CLI ; INTERRUPT ZULASSEN
RTS ; ZURUECK INS BASIC
:IRQ LDA 53248+25 ; INTERRUPTFLAG LOESCHEN
STA 53248+25 ; UM ERRORSZU VERMEIDEN
LDA 53248+18 ; RASTERSTRAHL UEBERFRUEFEN
CMP #000 ; 000 ERREICHT ?
BEQ SCROLL ; FALLS JA ZUR SCROLLROUTINE
LDX #00 ; X-REGISTER ALS INDEXZAEHLER
:LOOP1 LDA FARB,X ; FARBCODE LADEN
STA 53281 ; UND INS HINDERGRUNDFARBREG. SCHREIBEN
LDA ZAHL,X ; DEN ZAEHLER LADEN
TAY ; AUSTAUSCH VON A NACH Y
:LP DEY ; WARTESCHEIFE
BNE LP ; JE GROESSER DER ZAEHLER DESTO LAENGER DIE SCHLEIFE
INX ; X-REGISTER ERHOEHEN
:MODIFY4 CPX #8 ; SCHON ALLE 8 ZEILEN ?
BNE LOOP1 ; FALLS NICHT ZU LOOP1
:MODIFY5 LDA #00 ; HINTERGRUNDFARBE POKEN
STA 53281
LDA #000 ; RASTERSTAHL VORWAEHLEN
STA 53248+18
JMP $EA31 ; SPRUNG ZUR NORMALEN INTERRUPTROUTINE
:FARB B 01,07,03,13,05,14,06,10,02,04,08,09,15,12,11,00,00,11,12,14,09,08,04,02
B 10,06,14,05,13,03,07,01 ; FARBCODES
:ZAHL B 02,08,08,08,09,08,09,08,10 ; ZAEHLCODES FUER DIE WARTESCHLEIFE
:SCROLL INC SPEED ; SPEED ERHOEHEN
LDA SPEED ; UND UEBERPRUEFEN
:MODIFY3 CMP #03 ; ENDWERT ERREICHT
BEQ NEXT ; FALLS JA EIGENTLICHES SCROLLEN
JMP MODIFY1 ; FALLS NICHT NORMAL WEITER
:NEXT LDA FARB ; ERSTEN FARBCODE LADEN
PHA ; AUF STACK SCHIEBEN
LDY #01 ; Y-REGISTER ALS INDEX
:OP LDA FARB,Y ; SCHLEIFE
DEY ; IN DER ALLE
STA FARB,Y ; FARBEN UM
INY ; EIN BYTE NACH VORNE
INY ; GERUECKT
CPY #32 ; WERDEN
BNE OP
PLA ; ERSTEN WERT WIEDER HINTEN
STA FARB+31 ; REINSCHIEBEN
LDA #00 ;GESCHWINDIGKEITSZAEHLER AUF NULL SETZEN
STA SPEED
:MODIFY1 LDA #130 ; NAECHSTEN RASTERINTERRUPT BESTIMMEN
STA 53248+18 ; INS RASTERREGISTER SCHREIBEN
JMP $FEBC ;SPRUNG ZUM ENDE DER INTERRUPTROUTINE
:SPEED B $00 ;GESCHWINDIGKEITSZAEHLER FUER FARBENSCROLL