home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
64'er
/
64ER_CD.iso
/
91xx
/
9105.d64
/
s.-pixel-fld.src
< prev
next >
Wrap
Text File
|
1995-03-30
|
6KB
|
390 lines
;┴NWENDUNG DES $D011-┼FFEKTES:
; ╙INGLE-╨IXEL-╞╠─
;(C)├OPYRIGHT 1991 BY ╠╒┬┬┼╥ OF ╨┴─╒┴
;─ER ╧RIGINAL-┌EICHENSATZ MUSS AB
; $3000 LIEGEN
;^^^^ ╫╔├╚╘╔╟! ^^^^
;─IE ERSTEN 5 NORMALEN UND DIE ERSTEN
;5 REVERSEN ┌EICHEN DUERFEN ╬╔├╚╘
;BENUTZT SEIN ! ╙ONST WERDEN SIE FUER
;DEN ┼FFEKT ZERSTOERT !
;(─A DORT DIE ╙CREENZEILEN ABGELEGT
; WERDEN)
;─IE ╧RIGINAL-╙CREENTABELLE MUSS AB
;$2C00 LIEGEN (═AXIMAL 16 ┌EILEN HOCH!)
ORG $1000 ;├ODE NACH $1000
LDA #8 ;┴KTUELLE ╞ARBE AUF
STA 646 ;ORANGE=SCHWARZ IN ═ULTICOLOR
;SETZEN
JSR $E544 ;┬ILDSCHIRM LOESCHEN
;UND ├OLOR-RAM MIT
;AKTUELLER ╞ARBE FUELLEN
LDA #$40
STA HIBYTE1+2
LDA #$48
STA HIBYTE2+2
LDA #$50
STA HIBYTE3+2
LDA #$58 ;╚IGHBYTES FUER
STA HIBYTE4+2 ;╒MRECHNUNGSROUTINE
LDA #$60 ;ERNEUERN
STA HIBYTE5+2
LDA #$68 ;╬UR WICHTIG,WENN
STA HIBYTE6+2 ;DIE ╥OUTINE OEFTERS
LDA #$70 ;VON NEUEM GESTARTET
STA HIBYTE7+2 ;WERDEN SOLL,OHNE
LDA #$78 ;DASS MAN DEN ├ODE
STA HIBYTE8+2 ;NEU REINLADEN MUSS.
LDA #$FF
TAX
:FILLFF1
STA $37F8,X
INX ;─AS 255.┌EICHEN DES
CPX #8 ;┌EICHENSATZES WIRD MIT
BNE FILLFF1 ;$FF-┬YTES GEFUELLT
LDA #$FF
LDX #0
:FILLFF2
STA $2C00+600,X ;─IE LETZTE ├URSOR-┌EILE
INX ;DES ╧RIGINAL-┬ILDES
CPX #40 ;WIRD MIT $FF-┬YTES
BNE FILLFF2 ;GEFUELLT
LDA #0
STA $FB
LDA #$30 ;┴DRESSE DES ┌EICHENSATZES
STA $FC ;IN DIE ╥EGISTER ($FB)
;┌UERST WIRD DER ╧RIGINAL-┌EICHENSATZ
;FUER DEN ┼FFECT 'ZURECHTGESCHOBEN'.
LDX #0
LDY #0
:CHARBEGIN
LDA ($FB),Y
:HIBYTE1
STA $4000,X ;─IESER ┌EICHENS. ENTHAELT
INY ;AM ┼NDE ALLE 1.┬YTES
LDA ($FB),Y ;EINES EINZELNEN ┌EICHENS
:HIBYTE2
STA $4800,X ;─IESER ALLE ZWEITEN
INY ;┬YTES
LDA ($FB),Y
:HIBYTE3
STA $5000,X ;─IESER ALLE DRITTEN
INY
LDA ($FB),Y
:HIBYTE4 ; . ..
STA $5800,X
INY
LDA ($FB),Y
:HIBYTE5
STA $6000,X ;....
INY
LDA ($FB),Y
:HIBYTE6
STA $6800,X
INY
LDA ($FB),Y
:HIBYTE7
STA $7000,X
INY
LDA ($FB),Y
:HIBYTE8
STA $7800,X ;... UND DIESER ALLE
;8.┬YTES
INY ;SCHON 256 ┬YTES (= 32
;KOMPLETTE ┌EICHEN)
BNE KEINUEBERTRAG1
;NEIN ? DANN KEINUEBERTRAG1
;╧RIGINAL-
INC $FC ;┌EICHENSATZ-┴DRESSENHIGH-BYTE
;UM 1 ERHOEHEN
:KEINUEBERTRAG1
TXA
CLC ;┌EIGER DER NEUEN ┌EICHENS.
ADC #8 ; UM 8
TAX ;ERHOEHEN
BNE NOTRAG ;DA NUR DAS 1.┬YTE DER NEUEN
;┌EICHENSAETZE BENUTZT
;WERDEN
INC HIBYTE1+2 ;WENN X-REG. WIEDER AUF 0
INC HIBYTE2+2 ;DANN HIGH-BYTES ERHOEHEN.
INC HIBYTE3+2
INC HIBYTE4+2
INC HIBYTE5+2
INC HIBYTE6+2
INC HIBYTE7+2
INC HIBYTE8+2
:NOTRAG
LDA $FC
CMP #$38 ;SCHON GANZER ╧RIGINAL-
;┌EICHENSATZ BEARBEITET ???
BNE CHARBEGIN ;NEIN ?? DANN CHARBEGIN
;╩ETZT ALLE ┌EILEN DER ╧RIGINAL-
;TABELLE IN DIE VERSCHIEDENEN
;╙CREENS VERSCHIEBEN
LDX #0
:TRANSFER
LDA $2C00,X
STA $4000,X
LDA $2C00+40,X
STA $4400,X
LDA $2C00+80,X
STA $4800,X
LDA $2C00+120,X
STA $4C00,X
LDA $2C00+160,X
STA $5000,X
LDA $2C00+200,X
STA $5400,X
LDA $2C00+240,X
STA $5800,X
LDA $2C00+280,X
STA $5C00,X
LDA $2C00+320,X
STA $6000,X
LDA $2C00+360,X
STA $6400,X
LDA $2C00+400,X
STA $6800,X
LDA $2C00+440,X
STA $6C00,X
LDA $2C00+480,X
STA $7000,X
LDA $2C00+520,X
STA $7400,X
LDA $2C00+560,X
STA $7800,X
LDA $2C00+600,X ;16 ZEILEN
STA $7C00,X ;WURDEN VERSCHOBEN
INX
CPX #40
BNE TRANSFER
SEI
LDA #$7F
STA $DC0D
LDA #$00
STA $DC0E
LDA #$F1 ;╔NTERRUPT-╥EGISTER
STA $D01A
LDA #50 ;AUF ╥ASTERINTERRUPT
STA $D012
LDA #$1B ;VORBEREITEN
STA $D011 ;BEI ╥ASTERZEILE 50
LDA #<IRQNEU
STA $0314 ;╔╥╤-╨OINTER SETZEN
LDA #>IRQNEU
STA $0315
LDA #24
STA $D016 ;═ULTICOLOR EINSCHALTEN
LDA #0
STA $D020 ;╥AHMENFARBE
;AUF ╙CHWARZ
LDA #6
STA $D021 ;╚INTERGRUNDFARBE
;AUF ┬LAU
LDA #14
STA $D022 ;═UTLICOLORFARBEN
LDA #15 ;AUF HELLBLAU UND HELL-
STA $D023 ;GRAU SETZEN
CLI
:BACK
JMP BACK ;┼NDLOSSCHLEIFE
:IRQNEU
BIT 0
BIT 0 ;╫ARTEZEIT
LDA #150
STA $DD00 ;┴UF DIE ┬ANK AB $4000
;UMSCHALTEN
LDY #0
:LOOP
LDA #$12 ;NACHEINANDER
STA $D011 ;DIE WERTE
LDA CHARTAB,Y ;$12,$13,$14,$15
;$16,$17,$10,$11
STA $D018 ;SETZEN UM DEN ╞╠─-
;EFFEKT ZU ERZIELEN
INY
NOP ;╥ASTERZEILE AUSTIMEN
NOP
LDA #$13
STA $D011
LDA CHARTAB,Y ;NACHEINANDER DIE $D018
STA $D018 ;WERTE AUS DER ╘ABELLE
INY ;HOLEN
NOP
NOP
LDA #$14
STA $D011
LDA CHARTAB,Y
STA $D018
INY
NOP
NOP
LDA #$15
STA $D011
LDA CHARTAB,Y
STA $D018
INY
NOP
NOP
LDA #$16
STA $D011
LDA CHARTAB,Y
STA $D018
INY
NOP
NOP
LDA #$17
STA $D011
LDA CHARTAB,Y
STA $D018
INY
NOP
NOP
LDA #$10
STA $D011
LDA CHARTAB,Y
STA $D018
INY
BIT 0
LDA #$11
STA $D011
LDA CHARTAB,Y
STA $D018
INY
CPY #136 ;╙CHON DER 136.WERT AUS DER
;╘ABELLE GELESEN ???
;(─ER ╞╠─-┬EREICH IST DANN
;136/8=17 ├URSOR-ZEILEN HOCH)
BNE LOOP ;NEIN ?? DANN LOOP
LDA #$72 ;╒NTEREN ╘EIL DES ┬ILDSCHIRMS
STA $D011 ;UNSICHTBAR MACHEN
LDA #$FE
LDX #0
:LOESCHTAB ;$D018-╘ABELLE MIT
STA CHARTAB,X ;$FE-BYTES FUELLEN.
INX ;╙IE SIMULIEREN
CPX #136 ;EIN ╞╠─ MIT GE-
BNE LOESCHTAB ;LOESCHTEM $3FFF
:SINZEIGER
LDX #0
LDY #0
:SETPIXELS
LDA #0 ;PIXELNUMMER
ASL ;MAL 2
STA CHARTAB,Y ;IN TABELLE SETZEN
CMP #$90 ;SCHON 72 PIXEL ???
;72/8=9 ├URSOR-┌EILEN
;(╚OEHE DES ╧RIGINAL
; ┬ILDES)
BEQ FERTIG ;JA ?? DANN FERTIG
INY ;ZEIGER ZUM SETZEN
TYA ;DER CHARTAB ERHOEHEN
CLC ;UND MIT SINUSWERT
ADC SINUS,X ;ADDIEREN
TAY
INX
INC SETPIXELS+1 ;PIXELNUMMER ERHOEHN
JMP SETPIXELS ;WIEDERHOLEN
:FERTIG
LDA #0
STA SETPIXELS+1 ;ANFANGSPIXEL WIEDER
;AUF 0
INC SINZEIGER+1 ;SINUSZEIGER ERHOEHEN
LDA SINZEIGER+1
CMP #100 ;SCHON TABELLE DURCHGE-
BNE KEINSINEND ;LAUFEN ????
LDA #0 ;JA ??
STA SINZEIGER+1 ;DANN SINUSZEIGER AUF 0
:KEINSINEND
LDA #1
STA $D019
JMP $FEBC ;┼NDE DER ╔╥╤-╥OUTINE
:CHARTAB
S 136 ;╙PEICHER MIT 136 $00-BYTES
;FUELLEN
:SINUS ;╙INUSTABELLE FUER
;DEN 'KUENSTLICHEN' ╞╠─
S 70 ;70 $00-┬YTES
; JETZT KOMMEN DIE ┴BSTAENDE ZWISCHEN
; DEN ╨IXELZEILEN
B 1,1,2,2,3,3,4,4,4,4,4,4,4,4,4,3,3,2,2,1,1
S 80 ;80 $00-┬YTES