home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
64'er
/
64ER_CD.iso
/
sh3x
/
sh33a.d64
/
prometh.src
< prev
next >
Wrap
Text File
|
1995-03-30
|
5KB
|
126 lines
;********************************
;*** ╙OURCECODE ZU ╨ROMETHEUS ***
;********************************
ORG $C000 ; ASSEMBLIERUNG AB $C000
;*** ╨ROGRAMM ***
SEI ; IRQ SPERREN
LDA $DC0D ; NORMALEN IRQ
AND #%01111111 ; AUSSCHALTEN
ORA #%00000001 ; -
STA $DC0D ; -
LDA #50 ; RASTERIRQ AUF
STA $D012 ; #50 (BILDSCHIRMBEGINN)
LDA 53248+17 ; HIGH - BYTE DES RASTERIRQS
AND #$7F ; AUSSCHALTEN
STA 53248+17 ; -
LDA #%10000001 ; IRQ FREIGEBEN
STA 53248+26 ; -
LDA #<IRQ ; IRQ-ZEIGER AUF EIGENE
STA $0314 ; ROUTINE VERBIEGEN
LDA #>IRQ ; -
STA $0315 ; -
JSR INITNEW ; INITIALISIERT DIE FARBZEIGER
CLI ; IRQ - FREIGEBEN
RTS ; ZURUECK
:INITNEW LDA WAHL ; MODIFIZIERT DAS EIGENTLICHE
STA LOOP1+1 ; IRQPROGRAMM SO, DASS ES AUF
STA LOOP2+1 ; DIE ERSTEN FARBCODES ZUGREIFT
LDA WAHL+1 ; -
STA LOOP1+2 ; -
STA LOOP2+2 ; -
RTS ; -
:IRQ LDA 53248+25 ; BITS FREIGEBEN
STA 53248+25 ; -
:LOOP1 LDA FARB1 ; LAEDT ERSTE FARBE
STA 53281 ; UND SCHREIBT SIE
NOP ; WARTET BIS DER
NOP ; RASTERSTRAHL
NOP ; AM ANDEREN
NOP ; ENDE DES BILD-
NOP ; SCHIRMS ANGEKOMMEN IST
LDX #1 ; X-REG ALS FARBPOINTER
:LOOP2 LDA FARB1,X ; LAEDT DIE NAECHSTEN FARBEN
STA 53281 ; UND WARTET
LDY #8 ; WIEDER
NOP ; BIS DER
NOP ; RASTERSTRAHL
NOP ; AM ANDEREN ENDE
NOP ; DES BILDSCHIRMS
:LP DEY ; ANGEKOMMEN IST
BNE LP ; -
INX ; -
CPX #8 ; SCHON 7 MAL DURCLAUFEN?
BNE LOOP2 ; FALLS NICHT ALLES NOCHMAL
LDA #0 ; BILDSCHIRMFABE AUF SCHWARZ
STA 53281 ; -
INC ZAHLER ; DEN LOW UND HIGH-BYTE ZAEHLER
INC ZAHLER ; ERHOEHEN (ZEIGT AUF NAECHSTEN FARBCODE)
LDX ZAHLER ; DAS NEUE LOW-BYTE DES
LDA WAHL,X ; NAECHSTEN FARBCODES MODIFIZIEREN
STA LOOP1+1 ; MIT DEM ZAEHLER ALS POINTER
STA LOOP2+1 ; -
INX ; ZAEHLER ZEIGT AUF DAS HIGH-BYTE
LDA WAHL,X ; HIGH-BYTE DES NEUEN FARBCODES MODIFIZIEREN
STA LOOP2+2 ; -
STA LOOP1+2 ; -
NOP ; GENAU 8
NOP ; RASTERZEILEN
NOP ; WARTEN
LDY #76 ; -
:OUTL DEY ; -
BNE OUTL ; -
INC WIEVIEL ; DEN ZAEHLER FUER DIE ANZAHL DER
LDA WIEVIEL ; STREIFEN ERHOEHEN UND MAXIMALWERT
CMP #9 ; UEBERPRUEFEN
BEQ ENDE ; FALLS ALLE DANN NACH ENDE
JMP LOOP1 ; FALLS NICHT ALLES NOCHMAL
:ENDE JSR INITNEW ; SCHON IM VORRAUS DIE ZEIGER WIEDER INITIALISIEREN
LDY #0 ; DIE POINTER
STY ZAHLER ; WIEDER AUF
STY WIEVIEL ; NORMALWERT SETZEN
JMP $EA31 ; AB ZUR NORMALEN IRQ-SCHLEIFE
:WAHL
B <FARB3 ; HIER STEHT DIE REIHENFOLGE
B >FARB3 ; DER VERSCHIEDENEN FARBCODES
B <FARB3 ; DIESE LOW UND HIGH-BYTES WERDEN
B >FARB3 ; VON PROMETHEUS MODIFIZIERT
B <FARB3
B >FARB3
B <FARB1
B >FARB1
B <FARB4
B >FARB4
B <FARB5
B >FARB5
B <FARB5
B >FARB5
B <FARB4
B >FARB4
B <FARB1
B >FARB1 ; DAS ORIGINALPROGRAMM HAT NATUERLICH
; NICHT NUR 9 LOW UND HIGH-BYTE ZEIGER
; SONDER ALLE 13
:ZAHLER B 0 ; DIE BEIDEN POINTER
:WIEVIEL B 0 ; -
:FARB1 B 11,12,15,15
B 12, 1,12,11 ; DIE VERSCHIEDENEN FARBWERTE
:FARB2 B 9,8,7,7,7,1,8,9
:FARB3 B 0,0,0,0,0,0,0,0
:FARB4 B 0,11,12,15,12,1,11,0
:FARB5 B 0,0,11,12,15,11,0,0