home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
64'er 1993 August
/
64er_Magazin_93-08_1993_Markt__Technik_de_Side_A.d64
/
eciplasma.ascii
< prev
next >
Wrap
Text File
|
2022-10-26
|
5KB
|
294 lines
;---------------------------------------
; Full Screen Plasma. (200 lines)
; By: Rasmus Wernersson. dec 92/jan 93.
; Handle: Raz
; Group: Camelot? (- I hope so)
; Remember to run sine-prg before start.
;---------------------------------------
; This is a simplified version of my
; routine.
;---------------------------------------
zp1 = $fd
zp2 = $fb
zp3 = $f9
zp4 = $f7
sin = $2000 ;pointer to sine 1
sin2 = $2200 ; -- -- -- 2
zerosin = $d9
;---------------------------------------
*= $0b00
jsr geneci ;setup the effect.
lda #$00 ;black border
sta $d020
lda #$f5 ;pattern: %11110101
clrl
sta $4000,x ;place pattern
sta $4100,x
inx
bne clrl
ldx #39 ;place the colours.
setcolour
lda colours+14,x
sta $4400,x
lda colours+13,x
sta $4800,x
lda colours+12,x
sta $4c00,x
lda colours+11,x
sta $5000,x
lda colours+10,x
sta $5400,x
lda colours+9,x
sta $5800,x
lda colours+8,x
sta $5c00,x
lda colours+7,x
sta $6000,x
lda colours+6,x
sta $6400,x
lda colours+5,x
sta $6800,x
lda colours+4,x
sta $6c00,x
lda colours+3,x
sta $7000,x
lda colours+2,x
sta $7400,x
lda colours+1,x
sta $7800,x
lda colours+0,x
sta $7c00,x
dex
bpl setcolour ;finished ?
sei ;setup rasterirq.
lda #$c8
sta $d016
lda #$7f
sta $dc0d
lda #$01
sta $d01a
lda #$32
sta $d012
lda #<eci
sta $0314
lda #>eci
sta $0315
cli
wait
jmp wait
geneci
lda #$10 ;place sinecalc-routine
sta zp1+1 ;at $1000
sta zp2+1
lda #$00
sta zp1
sta zp2
ldx #200 ; 200 lines.
ldy #$00
sty save
genloop1
lda (zp1),y ;copy main code
sta (zp2),y
iny
cpy #15 ;finished ?
bcc genloop1 ;no.
lda save ;set sine+line number
ldy #$01
sta (zp2),y
ldy #$04
sta (zp2),y
lda #17 ;calc pointer to eci-
sta m ;code (line*17)
lda save
sta n
jsr mult
ldy #7
lda result
clc
adc #$03+6 ;find correct pos.
sta (zp2),y
lda result+1
adc #$30 ;$3006 +pos + 3/4
iny
sta (zp2),y
ldy #$0d
lda result
clc
adc #$05+6 ;correct pos
sta (zp2),y
lda result+1
adc #$30 ;$3006 +pos +5/6
iny
sta (zp2),y
inc save
ldy #$00
lda zp2 ;set pointer
clc ;to the new pos.
adc #15
sta zp2
lda zp2+1
adc #$00
sta zp2+1
dex ;all 200 finised?
bne genloop1 ; no.
lda #$60 ;opcode for 'rts'
sta (zp2),y
lda #$08
sta zp1+1
lda #$30
sta zp2+1
lda #$00
sta zp1
lda #$06
sta zp2
lda #$33+8
sta save
ldx #200
ldy #$00
genloop2
lda (zp1),y
sta (zp2),y
iny
cpy #17
bcc genloop2
ldy #$01
lda save
sta (zp2),y
dey
inc save
cmp #$37+8
bcc noreset
lda #$30+8
sta save
noreset
lda zp2
clc
adc #17
sta zp2
lda zp2+1
adc #$00
sta zp2+1
dex
bne genloop2
lda #$4c ;opcode for 'jmp'
sta (zp2),y
iny
lda #<eee ;lowbyte for 'eee'
sta (zp2),y
iny
lda #>eee ; hibyte for 'eee'
sta (zp2),y
rts
result .word 0
m .byte 0 ; m*n
n .byte 0
mult
txa
pha ;save x-value
clc
lda #$00
sta result
ldx #$08
gentag
lsr m
bcc noadd
clc
adc n
noadd
ror a
ror result
rorb
dex
bne gentag
sta result+1
pla
tax ;get saved x-value
rts
eee
inc $dd00
ldx #%01110100 ;no border
stx $d011
lda #21 ;normal charset, and
sta $d018 ;scr-pointer at $0400
;(important for sprites)
ldy tabpos ;sinepos1
ldx tabpos2 ; --- 2
jsr $1000 ;calc new doublesine
ldx #%00010100 ;for no-border
stx $d011
lda tabpos ;move sinepos 1/2
clc
adc add1
sta tabpos
lda tabpos2
clc
adc add2
sta tabpos2
irqexit
pla ;exit
tay
pla
tax
pla
rti
add1 .byte $00 ;sine1 speed
add2 .byte $01 ; -- 2 --
tabpos2 .byte 0 ;current sinepos1
tabpos .byte 0 ; --- ---- 2
save .byte $00
save2 .byte $00
*= $0800
proto
ldy #$33+8
b1 lda #$00
a1 ldx #$10
sty $d011
stx $d018
and #$07
sta $d016
*= $1000
lda sin,y
adc sin2+0,x
sta b1+1
and #%11111000
asl a
sta a1+1
*= $3000
eci
inc $d019
dec $dd00
*= $1c00
colours
.byte 0,0,0,0,0,0
.byte 0,0,0,0,0,0,0
.byte $09,$92,$28,$8a,$af,$f7,$71
.byte $11,$11,$11,$11,$11,$11,$11
.byte $11,$11,$11,$11,$11,$11,$11
.byte $17,$7f,$fa,$a8,$82,$29,$90
.byte 0,0,0,0,0,0,0
.byte 0,0,0,0,0,0,0
;colours ;(alternative colours)
.byte $f7,$71,$17,$78,$89
.byte $09,$95,$5d,$d7,$7d,$d5,$59
.byte $06,$6b,$b4,$4e,$ef,$f3
.byte $3f,$fe,$e4,$4b,$b6,$60
.byte $09,$98,$87,$71,$17,$78,$89
.byte $09,$92,$28,$8a,$af,$f7
.byte $7f,$fa,$a8,$82,$29,$90
.byte $09,$95,$5d,$d7,$7d,$d5,$59
.byte $09,$98,$87,$71,$17,$78,$89