home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
64'er 1988 March
/
64er_Magazin_88-03_1988_Markt__Technik_de_Side_A.d64
/
raum.fse
< prev
next >
Wrap
Text File
|
2022-10-26
|
20KB
|
908 lines
; 3d-life
; geniax
; *=$0801
; .byte 27,8
; .byte $c3,7
; .byte $9e,' 2100 geniax:3d-life'
; .byte 0,0,0
; *=$0834
*=$c000
kx=$61
ky=$62
kz=$63
meihe=$64
mebene=$66
kubus=$fb ;hires-adr.
quader=$fd ;setzen/invrt
jmp main
hires lda $d011
eor #32
sta $d011
lda $d018
eor #08
sta $d018
rts
hex cmp #'0'
bcc fehler
cmp #'9'+1
bcs sechs
sec
sbc #'0'
clc
rts
sechs cmp #'a'
bcc fehler
cmp #'f'+1
bcs fehler
sec
sbc #55
clc
rts
fehler sec
rts
map lda #00
ldx #$20
sta $fb
stx $fc
ldy #00
tya
sta ($fb),y
iny
.byte $d0,251
inc $fc
ldx $fc
cpx #$40
.byte $d0,243
jsr gitter
rts
video lda #00
ldx #04
sta $fb
stx $fc
ldy #00
lda #$70
sta ($fb),y
iny
.byte $d0,251
inc $fc
ldx $fc
cpx #08
.byte $d0,243
lda #14
sta $0400
sta $0401
sta $0402
rts
null lda #00
ldx #$ce
sta $fb
stx $fc
ldy #00
nu0 sta ($fb),y
iny
bne nu0
inc $fc
ldx $fc
cpx #$d0
bne nu0
rts
adresse lda #$a8
ldx #$3e
sta $fb
stx $fc
clc
lda kx
adc ky
adc kz
tax
beq ad1-4
ad0 lda $fb
sec
sbc #64
sta $fb
lda $fc
sbc #01
sta $fc
dex
bne ad0
ldx ky
beq ad2-4
ad1 lda $fb
sec
sbc #16
sta $fb
lda $fc
sbc #00
sta $fc
dex
bne ad1
ldx kx
beq minus-1
ad2 lda $fb
clc
adc #16
sta $fb
lda $fc
adc #00
sta $fc
dex
bne ad2
rts
minus lda quader
sec
sbc #64
sta quader
lda quader+1
sbc #01
sta quader+1
rts
plus lda quader
clc
adc #64
sta quader
lda quader+1
adc #01
sta quader+1
rts
fill lda $fb
ldx $fc
sec
sbc #16
sta quader
.byte $b0,1
dex
stx quader+1
ldy #00
fi0 lda inv1,y
eor #255
and (quader),y
ora tab1,y
sta (quader),y
iny
cpy #32
bne fi0
jsr minus
ldy #00
fi1 lda tab2,y
sta (quader),y
iny
cpy #32
bne fi1
jsr minus
ldy #00
fi2 lda inv3,y
eor #255
and (quader),y
ora tab3,y
sta (quader),y
iny
cpy #32
bne fi2
rts
tab1 .byte 192,112,28,7,1,0,0,0
.byte 1,1,1,1,193,113,29,7
.byte 128,128,128,128
.byte 131,142,184,224
.byte 3,14,56,224,128,0,0,0
tab2 .byte 255,240,156,135
.byte 129,128,128,128
.byte 255,0,0,255,255,112
.byte 28,7
.byte 255,0,0,255,255,14,56,224
.byte 255,15,57,225,129,1,1,1
tab3 .byte 0,0,0,0,3,14,56,255
.byte 3,14,56,255,255,0,0,255
.byte 192,112,28,255,255
.byte 0,0,255
.byte 0,0,0,0,192,112,28,255
invert lda $fb
ldx $fc
sec
sbc #16
sta quader
.byte $b0,1
dex
stx quader+1
ldy #00
in0 lda (quader),y
eor inv1,y
sta (quader),y
iny
cpy #32
bne in0
jsr minus
ldy #00
in1 lda (quader),y
eor inv2,y
sta (quader),y
iny
cpy #32
bne in1
jsr minus
ldy #00
in2 lda (quader),y
eor inv3,y
sta (quader),y
iny
cpy #32
bne in2
rts
inv1 .byte 255,127,31,7,1,0,0,0
.byte 255,255,255,255
.byte 255,127,31,7
.byte 255,255,255,255
.byte 255,254,248,224
.byte 255,254,248,224,128,0,0,0
inv2 .byte 255,255,255,255
.byte 255,255,255,255
.byte 255,255,255,255
.byte 255,255,255,255
.byte 255,255,255,255
.byte 255,255,255,255
.byte 255,255,255,255
.byte 255,255,255,255
inv3 .byte 0,0,0,0,3,15,63,255
.byte 3,15,63,255,255,255,255,255
.byte 192,240,252
.byte 255,255,255,255,255
.byte 0,0,0,0,192,240,252,255
tafel lda #<text
ldx #>text
sta $7a
stx $7b
lda #00
sta $d021
sta $d020
ldy #00
ta0 lda ($7a),y
.byte $d0,1
rts
jsr $ffd2
iny
.byte $d0,2
inc $7b
jmp ta0
text .byte 147,''
.byte ' '
.byte 'U{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}I',13
.byte ' '
.byte 'B life im raum B',13
.byte ' '
.byte 'J{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}K',13
.byte ' '
.byte 'U{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}I',13
.byte ' '
.byte 'B michael pal B',13
.byte ' '
.byte 'B B',13
.byte ' '
.byte 'B 1987 B',13
.byte ' '
.byte 'J{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}K',13
.byte ''
.byte ' mit [return] springt man'
.byte ' in den ',13
.byte ' editiermodus und',13
.byte ' bewegt den 3d-cursor mit'
.byte 13,' [right],[down],[^].'
.byte 13,' [space] siedelt an.'
.byte 13,' mit [return] verl'
.byte 'aesst man den modus.',13
.byte ' [space] loest die'
.byte ' simulation aus.'
.byte 13,' [x]:basic,[s]:run.'
.byte 13,13,' 1) life 4555,'
.byte ' 2) life 5766 x) ?'
.byte 00
siedeln jsr null
jsr map
lda #06
ldx #00
sta kx
sta ky
stx kz
jsr adresse
jsr invert
lda #$ce
sta meihe+1
sta mebene+1
lda #42
sta meihe
sta mebene
soop jsr show
jsr $ffe4
beq soop+3
and #127
cmp #'' ;y-
beq yminus
cmp #'' ;x-
beq xminus
cmp #' ' ;zelle
beq zelle
cmp #'^' ;z+
beq zplus
cmp #13 ;ende
bne soop
jsr invert
jmp moop ;hauptschl.
yminus lda ky
beq xminus
dec ky
jsr invert
lda $fb
clc
adc #80
sta $fb
lda $fc
adc #01
sta $fc
jsr invert
jmp soop
xminus lda kx
beq zplus
dec kx
jsr invert
lda #06
sta ky
jsr adresse
lda meihe
sec
sbc #07
sta meihe
lda meihe+1
sbc #00
sta meihe+1
jsr invert
jmp soop
zplus lda kz
cmp #09
beq soop
jsr invert
inc kz
lda #6
sta kx
sta ky
jsr adresse
lda mebene
clc
adc #49
sta mebene
lda mebene+1
adc #00
sta mebene+1
lda mebene
ldx mebene+1
sta meihe
stx meihe+1
jsr invert
jmp soop
zelle jsr invert
jsr fill
jsr invert
lda #65
sta $d404
lda #64
sta $d404
ldy ky
lda #128
sta (meihe),y
jmp yminus
;========
ebene=$64
matrix=$66
ebene1=$68 ;!
matrix1=$6a ;!
sieben .byte 0,7,14,21,28,35,42
con lda (matrix1),y
.byte $10,2
inc $ff
rts
reihe ldy ky
.byte $d0,2
ldy #07
dey
jsr con
ldy ky
jsr con
ldy ky
cpy #06
.byte $d0,2
ldy #255
iny
jsr con
rts
flaeche ldx kx
lda sieben,x
clc
adc ebene1
sta matrix1
lda ebene1+1
adc #00
sta matrix1+1
jsr reihe
lda kx
bne fl0
lda ebene1
clc
adc #42
sta matrix1
lda ebene1+1
adc #00
sta matrix1+1
jmp sub
fl0 ldx kx
dex
lda sieben,x
clc
adc ebene1
sta matrix1
lda ebene1+1
adc #00
sta matrix1+1
sub jsr reihe
;oben
lda kx
cmp #06
bne fl1
lda ebene1
ldx ebene1+1
sta matrix1
stx matrix1+1
jmp supra
fl1 ldx kx
inx
lda sieben,x
clc
adc ebene1
sta matrix1
lda ebene1+1
adc #00
sta matrix1+1
supra jsr reihe
rts
;====
gen lda #$ce
sta ebene+1
sta matrix+1
lda #00
sta ebene
sta matrix
sta kx
sta ky
sta kz
goop lda #00
sta $ff
lda ebene
ldx ebene+1
sta ebene1
stx ebene1+1
jsr flaeche
lda kz
bne go1
lda #185
sta ebene1
lda #$cf
sta ebene1+1
jsr flaeche
jmp oben
go1 lda ebene
sec
sbc #49
sta ebene1
lda ebene+1
sbc #00
sta ebene1+1
jsr flaeche
oben lda kz
cmp #09
bne go2
lda #00
ldx #$ce
sta ebene1
stx ebene1+1
jsr flaeche
jmp go3
go2 lda ebene
clc
adc #49
sta ebene1
lda ebene+1
adc #00
sta ebene1+1
jsr flaeche
go3 ldy ky
lda (matrix),y
.byte $10,2
dec $ff
lda $ff
ora (matrix),y
sta (matrix),y
inc ky
lda ky
cmp #07
.byte $f0,3
jmp goop
lda #00
sta ky
inc kx
lda matrix
clc
adc #07
sta matrix
lda matrix+1
adc #00
sta matrix+1
lda kx
cmp #7
.byte $f0,3
jmp goop
lda #00
sta kx
inc kz
lda ebene
clc
adc #49
sta ebene
lda ebene+1
adc #00
sta ebene+1
lda ebene
ldx ebene+1
sta matrix
stx matrix+1
lda kz
cmp #10
.byte $f0,3
jmp goop
deut lda #00
ldx #$ce
sta $fb
stx $fc
ldy #00
doop lda ($fb),y
bmi lebt
cmp $59
bcc stirbt
lda $5a
cmp ($fb),y
bcc stirbt
jmp lebt1
lebt and #127
sta $ff
cmp $57
bcc stirbt
lda $58
cmp $ff
bcc stirbt
lebt1 lda #128
sta ($fb),y
jmp weiter
stirbt lda #00
sta ($fb),y
weiter iny
bne doop
inc $fc
ldx $fc
cpx #$d0
bne doop
;---
jsr map
grafik lda #06
ldx #00
sta kx
sta ky
stx kz
lda #42
ldx #$ce
sta mebene
sta meihe
stx meihe+1
stx mebene+1
jsr adresse
groop ldy ky
lda (meihe),y
.byte $10,3
jsr fill
lda ky
beq xdekr
lda $fb
clc
adc #80
sta $fb
lda $fc
adc #01
sta $fc
dec ky
jmp groop
xdekr lda kx
beq zinkr
lda #6
sta ky
dec kx
jsr adresse
lda meihe
sec
sbc #07
sta meihe ;@@
lda meihe+1
sbc #00
sta meihe+1
jmp groop
zinkr lda kz
cmp #09
.byte $d0,13
lda #65
sta $d404
lda #64
sta $d404
jmp moop
inc kz
lda #6
sta kx
sta ky
jsr adresse
lda mebene
clc
adc #49
sta mebene
lda mebene+1
adc #00
sta mebene+1
lda mebene
ldx mebene+1
sta meihe
stx meihe+1
jmp groop
anzeige asl
asl
asl
clc
adc #$80
sta $f3
lda #$d1
adc #00
sta $f4
sei
lda $01
and #251
sta $01
ldy #00
aoop lda ($f3),y
sta ($fd),y
iny
cpy #08
bne aoop
lda #$37
sta $01
cli
rts
show lda #00
ldx #$20
sta $fd
stx $fe
lda kx
jsr anzeige
lda #08
sta $fd
lda ky
jsr anzeige
lda #16
sta $fd
lda kz
jsr anzeige
rts
data .byte 0,0,0,0,3,14,56,224
.byte 3,14,56,224,128,0,0,0
.byte 192,112,28,7,1,0,0,0
.byte 0,0,0,0,192,112,28,7
dat .byte 192,112,28,7,1,0,0,0
.byte 0,0,0,0,192,112,28,7
.byte 0,0,0,0,3,14,56,224
.byte 3,14,56,224,128,0,0,0
fleck lda $fb
ldx $fc
sec
sbc #16
.byte $b0,1
dex
sta $fd
stx $fe
ldy #00
foop lda dat,y
sta ($fd),y
iny
cpy #32
bne foop
jsr minus
ldy #00
foop1 lda data,y
sta ($fd),y
iny
cpy #32
bne foop1
rts
gitter lda #00
sta kx
sta ky
sta kz
jsr adresse
gitoop jsr fleck
inc ky
lda $fb
sec
sbc #80
sta $fb
lda $fc
sbc #01
sta $fc
lda ky
cmp #07
bne gitoop
inc kx
lda #00
sta ky
jsr adresse
lda kx
cmp #07
bne gitoop
rts
;---
main jsr tafel
jsr null
ldx #00
lda #00
moop0 sta $d400,x
inx
cpx #24
bne moop0
lda #06
sta $d401
lda #$11
sta $d405
lda #$a7
sta $d406
lda #10
sta $d418
lda #80
ldx #04
sta $d402
stx $d403
lda #4
ldx #5
sta $57
stx $58
stx $59
stx $5a
jsr $ffe4
.byte $f0,251
cmp #'1'
beq moop1
cmp #'2'
bne kenn
lda #5
ldx #7
ldy #6
sta $57
stx $58
sty $59
sty $5a
jmp moop1
kenn lda #13
jsr $ffd2
jsr $a560
ldx #00
koop lda $0200,x
jsr hex
bcs kenn
sta $57,x
inx
cpx #04
bne koop
moop1 jsr hires
jsr map
jsr video
moop jsr $ffe4
beq moop
cmp #'x'
bne mo
jsr hires
lda #147
jsr $ffd2
ldx #$ff
jmp ($0300)
mo cmp #'s'
.byte $d0,6
jsr hires
jmp main
cmp #13
.byte $d0,3
jmp siedeln
cmp #32
bne moop
jmp gen
.end