;-------------------------------- |
|
;SIERPINSKI 3D BY SIR ART/CHARGED |
|
;-------------------------------- |
|
|
|
*= $1000 |
|
|
|
TABBOK1 = $3000 |
|
TABBOK2 = $3080 |
|
TABBOK3 = $3100 |
|
|
|
PLOTS = $4000 |
|
SINTAB = $19C0 |
|
LOSTAB = $1A00 |
|
TABX1 = $1C00 |
|
TABY1 = $1C80 |
|
TABX2 = $1D00 |
|
TABY2 = $1D80 |
|
TABX3 = $1E00 |
|
TABY3 = $1E80 |
|
TABX4 = $1F00 |
|
TABY4 = $1F80 |
|
EKRANL = $20 |
|
EKRANH = $21 |
|
EKRANNUM = $22 |
|
LICZNIK = $24 |
|
|
|
SEI |
|
LDA #$00 |
|
STA $D020 |
|
STA $D021 |
|
TAX |
|
L1 STA $D800,X |
|
STA $D900,X |
|
STA $DA00,X |
|
STA $DB00,X |
|
STA $2000,X |
|
STA $2700,X |
|
STA $2800,X |
|
STA $2F00,X |
|
INX |
|
BNE L1 |
|
LDA #$7F |
|
STA $DC0D |
|
LDX #$00 |
|
STX $DC0E |
|
INX |
|
STA $D01A |
|
LDA #$00 |
|
STA $D012 |
|
LDA #$97 |
|
STA $DD00 |
|
LDA #$18 |
|
STA $D018 |
|
LDA #$1B |
|
STA $D011 |
|
LDA #$37 |
|
STA $01 |
|
LDA #<IRQ1 |
|
STA $0314 |
|
LDA #>IRQ1 |
|
STA $0315 |
|
|
|
JSR CHESS |
|
JSR ZNAKI |
|
JSR CZYSZCZ |
|
JSR WRITETAB |
|
JSR PISZ |
|
|
|
CLI |
|
|
|
LDA #$00 |
|
STA EKRANNUM |
|
STA LICZNIK |
|
|
|
J3 LDY #$00 |
|
JSR LINEWAIT |
|
LDA EKRANNUM |
|
EOR #$08 |
|
STA EKRANNUM |
|
LDA EKRAN+1 |
|
EOR #$02 |
|
STA EKRAN+1 |
|
LDA EKRANNUM |
|
BNE J5 |
|
JSR CLEAN1 |
|
JMP J6 |
|
J5 JSR CLEAN2 |
|
|
|
J6 LDX LICZNIK |
|
LDA TABX1,X |
|
STA $28 |
|
LDA TABY1,X |
|
STA $2C |
|
LDA TABX2,X |
|
STA $29 |
|
LDA TABY2,X |
|
STA $2D |
|
LDA TABX3,X |
|
STA $2A |
|
LDA TABY3,X |
|
STA $2E |
|
LDA TABX4,X |
|
STA $2B |
|
LDA TABY4,X |
|
STA $2F |
|
|
|
LDX $28 |
|
LDY $2C |
|
CLC |
|
JSR PLOTS |
|
|
|
LDA LICZNIK |
|
CLC |
|
ADC #$01 |
|
AND #$7F |
|
STA LICZNIK |
|
JMP J3 |
|
|
|
IRQ1 |
|
EKRAN LDA #$1A |
|
STA $D018 |
|
|
|
INC $D019 |
|
JMP $EA7E |
|
|
|
CHESS LDA #$00 |
|
STA $20 |
|
LDA #$D8 |
|
STA $21 |
|
LDA #$BC |
|
STA $22 |
|
LDA #$CB |
|
STA $23 |
|
LDA #$0A |
|
STA CH3+1 |
|
LDX #$00 |
|
|
|
CH2 LDA $22 |
|
LDY #$00 |
|
STA ($20),Y |
|
INY |
|
STA ($20),Y |
|
LDA $23 |
|
INY |
|
STA ($20),Y |
|
INY |
|
STA ($20),Y |
|
INX |
|
CH3 CPX #$14 |
|
BNE CH1 |
|
LDA #$14 |
|
STA CH3+1 |
|
LDA $22 |
|
TAX |
|
LDA $23 |
|
STA $22 |
|
STX $23 |
|
LDX #$00 |
|
CH1 LDA $20 |
|
CLC |
|
ADC #$04 |
|
STA $20 |
|
LDA $21 |
|
ADC #$00 |
|
STA $21 |
|
LDA $20 |
|
CMP #$C0 |
|
BNE CH2 |
|
LDA $21 |
|
CMP #$DB |
|
BNE CH2 |
|
RTS |
|
|
|
ZNAKI LDX #$00 |
|
LDA #$FF |
|
ZNAKI1 STA $0400,X |
|
STA $0500,X |
|
STA $0600,X |
|
STA $06F8,X |
|
INX |
|
BNE ZNAKI1 |
|
|
|
POCZ = $28*6+$0403 |
|
POCZ2 = $28*6+$D803 |
|
POCZ3 = $28*6+$3803 |
|
|
|
LDA #<POCZ |
|
STA $20 |
|
LDA #>POCZ |
|
STA $21 |
|
|
|
LDX #$00 |
|
ZNAKI3 TXA |
|
LDY #$00 |
|
ZNAKI2 STA ($20),Y |
|
CLC |
|
ADC #$10 |
|
INY |
|
CPY #$10 |
|
BNE ZNAKI2 |
|
LDA $20 |
|
CLC |
|
ADC #$28 |
|
STA $20 |
|
LDA $21 |
|
ADC #$00 |
|
STA $21 |
|
INX |
|
CPX #$10 |
|
BNE ZNAKI3 |
|
LDA #$00 |
|
STA $075A |
|
|
|
ZN2 LDA #<POCZ2 |
|
STA $20 |
|
LDA #>POCZ2 |
|
STA $21 |
|
|
|
LDX #$00 |
|
ZNAKI4 LDA #$01 |
|
LDY #$00 |
|
ZNAKI5 STA ($20),Y |
|
INY |
|
CPY #$10 |
|
BNE ZNAKI5 |
|
LDA $20 |
|
CLC |
|
ADC #$28 |
|
STA $20 |
|
LDA $21 |
|
ADC #$00 |
|
STA $21 |
|
INX |
|
CPX #$10 |
|
BNE ZNAKI4 |
|
RTS |
|
|
|
CZYSZCZ JSR CLEAN1 |
|
JSR CLEAN2 |
|
LDX #$07 |
|
LDA #$FF |
|
CZY2 STA $27F8,X |
|
STA $2FF8,X |
|
DEX |
|
BPL CZY2 |
|
RTS |
|
|
|
WRITETAB LDY #$80 |
|
LDX #$00 |
|
WRITTAB2 TXA |
|
LSR A |
|
LSR A |
|
LSR A |
|
LSR A |
|
CLC |
|
ADC #$20 |
|
STA TABBOK1,X |
|
TXA |
|
AND #$08 |
|
ASL A |
|
ASL A |
|
ASL A |
|
ASL A |
|
STA TABBOK2,X |
|
TXA |
|
AND #$07 |
|
TAY |
|
LDA TABECZKA,Y |
|
STA TABBOK3,X |
|
INX |
|
CPX #$80 |
|
BNE WRITTAB2 |
|
RTS |
|
|
|
TABECZKA .BYTE $80,$40,$20,$10 |
|
.BYTE $08,$04,$02,$01 |
|
|
|
CLEAN1 LDX #$3F |
|
LDA #$00 |
|
CLEAN21 |
|
STA $2100,X |
|
STA $2200,X |
|
STA $2300,X |
|
STA $2400,X |
|
STA $2500,X |
|
STA $2600,X |
|
STA $2700,X |
|
STA $2140,X |
|
STA $2240,X |
|
STA $2340,X |
|
STA $2440,X |
|
STA $2540,X |
|
STA $2640,X |
|
STA $2740,X |
|
STA $2080,X |
|
STA $2180,X |
|
STA $2280,X |
|
STA $2380,X |
|
STA $2480,X |
|
STA $2580,X |
|
STA $2680,X |
|
STA $20C0,X |
|
STA $21C0,X |
|
STA $22C0,X |
|
STA $23C0,X |
|
STA $24C0,X |
|
STA $25C0,X |
|
STA $26C0,X |
|
DEX |
|
BPL CLEAN21 |
|
RTS |
|
|
|
CLEAN2 LDX #$3F |
|
LDA #$00 |
|
CLEAN22 |
|
STA $2900,X |
|
STA $2A00,X |
|
STA $2B00,X |
|
STA $2C00,X |
|
STA $2D00,X |
|
STA $2E00,X |
|
STA $2F00,X |
|
STA $2940,X |
|
STA $2A40,X |
|
STA $2B40,X |
|
STA $2C40,X |
|
STA $2D40,X |
|
STA $2E40,X |
|
STA $2F40,X |
|
STA $2880,X |
|
STA $2980,X |
|
STA $2A80,X |
|
STA $2B80,X |
|
STA $2C80,X |
|
STA $2D80,X |
|
STA $2E80,X |
|
STA $28C0,X |
|
STA $29C0,X |
|
STA $2AC0,X |
|
STA $2BC0,X |
|
STA $2CC0,X |
|
STA $2DC0,X |
|
STA $2EC0,X |
|
DEX |
|
BPL CLEAN22 |
|
RTS |
|
|
|
PROCMAIN TXA |
|
PROC1 ADC $02 |
|
LSR A |
|
TAX |
|
TYA |
|
PROC2 ADC $02 |
|
LSR A |
|
TAY |
|
LDA TABBOK2,X |
|
STA EKRANL |
|
LDA TABBOK1,X |
|
ORA EKRANNUM |
|
STA EKRANH |
|
LDA (EKRANL),Y |
|
ORA TABBOK3,X |
|
STA (EKRANL),Y |
|
|
|
PISZ LDA #<PLOTS |
|
STA $20 |
|
LDA #>PLOTS |
|
STA $21 |
|
LDA #<LOSTAB |
|
STA PISZ2+1 |
|
LDA #>LOSTAB |
|
STA PISZ2+2 |
|
|
|
LDA #$00 |
|
STA $22 |
|
STA $23 |
|
|
|
PISZ2 LDA LOSTAB |
|
CLC |
|
ADC #$28 |
|
STA PROC1+1 |
|
CLC |
|
ADC #$04 |
|
STA PROC2+1 |
|
LDY #$00 |
|
PISZ1 LDA PROCMAIN,Y |
|
STA ($20),Y |
|
INY |
|
CPY #$1D |
|
BNE PISZ1 |
|
LDA $20 |
|
CLC |
|
ADC #$1D |
|
STA $20 |
|
LDA $21 |
|
ADC #$00 |
|
STA $21 |
|
LDA PISZ2+1 |
|
CLC |
|
ADC #$01 |
|
STA PISZ2+1 |
|
LDA PISZ2+2 |
|
ADC #$00 |
|
STA PISZ2+2 |
|
LDA $22 |
|
CLC |
|
ADC #$01 |
|
STA $22 |
|
LDA $23 |
|
ADC #$00 |
|
STA $23 |
|
CMP #$02 |
|
BNE PISZ2 |
|
LDY #$00 |
|
LDA #$60 |
|
STA ($20),Y |
|
RTS |
|
|
|
LINEWAIT LDA #$40 |
|
LINEWA1 CMP $D012 |
|
BCS LINEWA2 |
|
LDA #$C0 |
|
CMP $D012 |
|
BCC LINEWA2 |
|
LDA $D011 |
|
BMI LINEWA2 |
|
JMP LINEWAIT |
|
LINEWA2 RTS |
|
|
|