;:poke56,128:clr
;:sys36864
	;.opt oo
;
; sprite list superversion
;
strout	= $ab1e
axout	= $bdcd
getkey	= $ffe4
vic	= $d000
select	= vic+21
mobx	= vic
moby	= vic+1
cint	= $ff81
expx	= vic+29
expy	= vic+23
mul	= vic+28
mob	= 704
pointer	= 2040
nummer	= 2
memory	= 4
frame	= vic+32
screen	= vic+33
clrx	= $e9ff
setcr	= $e56c
spalte	= $d3
zeile	= $d6
return	= $aad7
home	= $e566
konfig	= 1
farb1	= vic+39
farb2	= vic+37
farb3	= vic+38
repeat	= 650
msave	= $f5ea
von	= $c1
bis	= $ae
mload	= $ffd5
sa	= $b9
input	= $ffcf
latch	= 680
fnadr	= $bb
fnlen	= $b7
ga	= $ba
disk	= 8
drucker	= 4
open	= $ffc0
close	= open+3
chkout	= $ffc9
clrchn	= $ffcc
fa	= $b8
tmp	= 6
;
	*= $8000
	jmp init
txt1	.byte "\x93\x98\x08\xa6\xa6\xa6\xa6\xa6\xa6\xa6\xa6\xa6\xa6\xa6\xa6 nss spritelist \xa6\xa6\xa6\xa6\xa6\xa6\xa6\xa6\xa6\xa6\xa6\xa6"
	.byte "\x11 \x12 f1 \x92 weiter       \x12 f3 \x92 zurueck" 
	 .byt 13
	.byte " \x12 f2 \x92 plus 10      \x12 f4 \x92 minus 10" 
	 .byt 13
	.byte " \x12 f5 \x92 multicolor   \x12 f7 \x92 expand" 
	 .byt 13
	.byte " \x12 f6 \x92 neustart     \x12 f8 \x92 ende" 
	 .byt 13
	.byte " \x12 i \x92 invertieren   \x12 t \x92 zuruecktransfer." 
	 .byt 13
	.byt 0
txt4	.byte " \x12 + \x92 plus 100      \x12 - \x92 minus 100" 
	 .byt 13
	.byte " \x12 1 \x92 farbe (1)     \x12 s \x92 save" 
	 .byt 13
	.byte " \x12 2 \x92 farbe 2       \x12 l \x92 load" 
	 .byt 13
	.byte " \x12 3 \x92 farbe 3       \x12 d \x92 daten drucken" 
	 .byt 13
	.byte " \x12 h \x92 wieder holen" 
	 .byt 13
	.byt 0
txt2	.byte "nummer  " 
	 .byt 0
txt3	.byte "bereich " 
	 .byt 0
nametxt	.byte "\x13\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11filename ? " 
	 .byt 0
paper	.byte "\x13\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11papier einlegen, drucker anschalten"
	.byt 13
	.byte "dann \x12return\x92 (druck) oder \x12_\xc0\x92 (stop)" 
	 .byt 0
ddat	.byt 13 
	 .byte "spritedaten:" 
	 .byt 13,13,0
data	ldx #23 
	 jsr clrx 
	 inx 
	 jsr clrx
	lda #0 
	 sta spalte 
	 lda #23 
	 sta zeile 
	 jsr setcr
	lda #<txt2 
	 ldy #>txt2 
	 jsr strout
	ldx nummer 
	 lda nummer+1 
	 jsr axout
	jsr return
	lda #<txt3 
	 ldy #>txt3 
	 jsr strout
	ldx memory 
	 lda memory+1 
	 jsr axout 
	 jmp home
data2	lda #0
	sta spalte 
	 lda #23 
	 sta zeile 
	 jsr setcr
	lda #<txt2 
	 ldy #>txt2 
	 jsr strout
	ldx nummer 
	 lda nummer+1 
	 jsr axout 
	 jmp home
init	jsr cint
	lda #0 
	 sta frame 
	 sta screen
	ldx #3
z2025	sta nummer,x 
	 dex 
	 bpl z2025
	lda #1 
	 sta select
	lda #128 
	 sta repeat
	lda #200 
	 sta mobx
	lda #200 
	 sta moby
	lda #<txt1 
	 ldy #>txt1
	jsr strout
	lda #<txt4 
	 ldy #>txt4
	jsr strout
	lda #11 
	 sta pointer
loop2	jsr trans1
	jsr testnr
	jsr data
loop	jsr getkey
	cmp #"\x8c" 
	 bne z2210 
	 rts
z2210	cmp #"\x85" 
	 bne z2215 
	 jsr plus 
	 jmp loop2
z2215	cmp #"\x86" 
	 bne z2220 
	 jsr minus 
	 jmp loop2
z2220	cmp #"\x89" 
	 bne z2225 
	 jsr plu10 
	 jmp loop2
z2225	cmp #"+" 
	 bne z2230 
	 jsr plu100 
	 jmp loop2
z2230	cmp #"\x8a" 
	 bne z2235 
	 jsr min10 
	 jmp loop2
z2235	cmp #"-" 
	 bne z2240 
	 jsr min100 
	 jmp loop2
z2240	cmp #"i" 
	 bne z2245 
	 jsr invert 
	 jmp loop
z2245	cmp #"\x88" 
	 bne z2250 
	 jsr expand 
	 jmp loop
z2250	cmp #"\x87" 
	 bne z2255 
	 jsr multi 
	 jmp loop
z2255	cmp #"\x8b" 
	 bne z2260 
	 jmp init
z2260	cmp #"1" 
	 bne z2265 
	 inc farb1 
	 jmp loop
z2265	cmp #"2" 
	 bne z2270 
	 inc farb2 
	 jmp loop
z2270	cmp #"3" 
	 bne z2272 
	 inc farb3 
	 jmp loop
z2272	cmp #"d" 
	 bne z2275 
	 jsr druck 
	 jmp loop
z2275	cmp #"h" 
	 bne z2280 
	 jmp loop2
z2280	cmp #"t" 
	 bne z2282 
	 jsr trans2 
	 jmp loop
z2282	cmp #"l" 
	 bne z2285 
	 jsr load 
	 jmp loop
z2285	cmp #"s" 
	 bne z2286 
	 jsr save 
	 jmp loop
z2286	jmp loop
plus	lda memory 
	 clc 
	 adc #64close sta memory 
	 bne z3010 
	 inc memory+1
z3010	inc nummer 
	 bne z3020 
	 inc nummer+1
z3020	rts
minus	lda memory 
	 sec 
	 sbc #64 
	 sta memory 
	 lda memory+1
	sbc #0 
	 sta memory+1 
	 lda nummer 
	 sec 
	 sbc #1 
	 sta nummer
	lda nummer+1 
	 sbc #0 
	 sta nummer+1 
	 rts
trans1	ldy #63 
	 lda konfig 
	 pha 
	 lda #48 
	 sei 
	 sta konfig
z3070	lda (memory),y 
	 sta mob,y 
	 dey 
	 bpl z3070 
	 pla 
	 sta konfig
	cli 
	 rts
testnr	lda nummer+1 
	 cmp #4 
	 bcc z3020
	beq z3110
	ldx #255 
	 lda #3 
	 bne z3120
z3110	lda #0 
	 tax
z3120	stx nummer 
	 sta nummer+1 
	 rts
plu10	ldx #10 
	 .byt $2c
plu100	ldx #100
z3150	txa 
	 pha
	jsr plus 
	 jsr testnr 
	 jsr data2
	pla 
	 tax 
	 dex 
	 bne z3150 
	 rts
min10	ldx #10 
	 .byt $2c
min100	ldx #100
z3200	txa 
	 pha
	jsr minus 
	 jsr testnr 
	 jsr data2
	pla 
	 tax 
	 dex 
	 bne z3200 
	 rts
invert	ldy #63
z3240	lda mob,y 
	 eor #255 
	 sta mob,y 
	 dey 
	 bpl z3240 
	 rts
expand	lda expx 
	 beq z3260 
	 lda #0 
	 beq z3270
z3260	lda #1
z3270	sta expx 
	 sta expy 
	 rts
multi	lda mul 
	 beq z3290 
	 lda #0 
	 beq z3300
z3290	lda #1
z3300	sta mul 
	 rts
trans2	ldy #63 
	 lda konfig 
	 pha 
	 lda #48 
	 sei 
	 sta konfig
z3320	lda mob,y 
	 sta (memory),y 
	 dey 
	 bpl z3320 
	 pla 
	 sta konfig
	cli 
	 rts
getpara	lda #disk 
	 sta ga
	lda #<nametxt 
	 ldy #>nametxt
	jsr strout
	lda #1 
	 sta sa 
	 ldx #0
z3340	jsr input 
	 cmp #13
	beq z3355 
	 sta latch,x 
	 inx
	cpx #16 
	 bcc z3340
z3355	cpx #0 
	 beq back
	stx fnlen 
	 lda #<latch
	ldy #>latch 
	 sta fnadr
	sty fnadr+1 
	 clc 
	 rts
back	sec 
	 rts
save	jsr getpara 
	 bcs abort
	lda #<mob 
	 ldy #>mob
	sta von 
	 sty von+1
	lda #<(mob+63) 
	 ldy #>(mob+63)
	sta bis 
	 sty bis+1
	jsr msave
abort	ldx #13 
	 jsr clrx
	inx 
	 jsr clrx
	inx 
	 jmp clrx
load	jsr getpara 
	 bcs abort
	ldx #<mob 
	 ldy #>mob 
	 lda #0
	sta sa 
	 jsr mload 
	 jmp abort
druck	lda #<paper 
	 ldy #>paper
	jsr strout
z3610	jsr getkey 
	 cmp #"_"
	beq abort 
	 cmp #13 
	 bne z3610
	lda #0 
	 sta sa
	lda #drucker 
	 sta ga 
	 sta fa
	jsr open 
	 ldx #drucker
	jsr chkout
	lda #<ddat 
	 ldy #>ddat
	jsr strout 
	 ldx #0
z3650	stx tmp 
	 lda mob,x 
	 tax
	lda #0 
	 jsr axout
	jsr return 
	 ldx tmp
	inx 
	 cpx #63 
	 bcc z3650
	jsr clrchn 
	 lda #drucker
	jsr close 
	 jmp abort
