;:sys36864
	;.opt oo
	*= 51111
	jmp init
	lda #<anl
	ldy #>anl
	jmp strout
bank	=1
strout	=$ab1e
lo	=20
hi	=lo+1
stradr	=34
string	=2
tmp	=247
tmp2	=249
tmp3	=251
bas	=2049
puta	=253
clrscr	=$e544
ink	=646
revers	=199
frame	=$d020
error	=$a445
frestr	=$b6a3
frmevl	=$ad9e
ok	=$e18d
frmnum	=$ad8a
integer	=$b7f7
chrgot	=121
komma	=$aefd
axout	=$bdcd
tsys	=$9e
getx	=$b7f1
out	=$ffd2
chkbuch	=$b113
hello	.byte "\x13\x11\x08\x8e\x1d   nss maschinensprachewandler v2.1"
	.byt 13
	.byte "\x11\x1d  programmiert von n. heusler 150986"
	.byt 13
	.byte "\x11\x1d    2a. weiter verbesserte version\x11"
	.byt 13,0
	.byt 0
last	.byte "\x11fertig."
	.byt 13
	.byte "\xa3\xa3\xa3\xa3\xa3\xa3"
	.byt 13
	.byte " letztes byte bei "
	.byt 0
forget	.byte " : clr\x11"
	.byt 13,0
poke2	.byte " : poke 46,"
	.byt 0
poke	.byt 13
	.byte "  setzen des basic - endes:"
	.byt 13
	.byte "  poke 45,"
	.byt 0
anl	.byte "\x93trans"
	.byt 13
	.byte "\xa3\xa3\xa3\xa3\xa3"
	.byt 13
	.byte "\x11 version 2a"
	.byt 13
	.byte "\x11  sys 51111 ,name$\x11\x9d\x9d\x9d\x9d\x9d\x9d,von\x11\x9d\x9d\x9d\x9d,bis"
	.byte " einschl.\x11\x9d\x9d\x9d\x9d\x9d\x9d\x9d\x9d\x9d\x9d\x9d\x9d\x9d\x9d[,start - sys]\x11"
	.byt 13
	.byte "(c) n.s.s. 150986\x11"
	.byt 13,0
tooshort	.byte "string missinG"
system	.byte "systeM"
cer	.byte "characteR"
ziff	.byt 0
lenght	.byt 0
sysa	.word 0
dezi	.word 1,10,100,1000,10000
colin	ldx #2
	ldy #0
	sty lo
	lda #$d8
	sta hi
	lda ink
	clc
	adc #1
col	sta (lo),y
	iny
	bne col
	inc hi
	dex
	bne col
	rts
rahmen	ldx #79
	stx $400
	inx
	stx $427
	ldx #37
ra1	lda #119
	sta $401,x
	lda #111
	sta 1265,x
	dex
	bpl ra1
	lda #76
	sta 1264
	lda #122
	sta 1303
	lda #<1064
	ldy #>1064
	sta spe+1
	sty spe+2
	lda #<1103
	ldy #>1103
	sta spe2+1
	sty spe2+2
	ldy #5
ra2	lda #116
spe	sta !0
	lda #106
spe2	sta !0
	lda spe+1
	clc
	adc #40
	sta spe+1
	lda spe+2
	adc #0
	sta spe+2
	lda spe2+1
	adc #40
	sta spe2+1
	lda 2+spe2
	adc #0
	sta spe2+2
	dey
	bne ra2
	rts
driver	ldx #5
loop1	lda treiber,x
	sta bas-1,x
	dex
	bpl loop1
	lda lenght
	clc
	adc #13
	sta bas
	lda lenght
	clc
	adc #15
	sta sysa
	lda #>bas
	adc #0
	sta sysa+1
	ldx #4
loop2	txa
	asl
	tay
	lda #"0"
	sta ziff
loop3	lda sysa+1
	cmp dezi+1,y
	bcc klei
	bne groe
	lda sysa
	cmp dezi,y
	bcc klei
groe	inc ziff
	lda sysa
	sec
	sbc dezi,y
	sta sysa
	lda sysa+1
	sbc dezi+1,y
	sta sysa+1
	jmp loop3
klei	txa
	sec
	sbc #5
	eor #-1
	tay
	lda ziff
	sta bas+5,y
	dex
	bpl loop2
	lda #","
	sta bas+10
	jsr actdriver
	lda #<bas+11
	ldy #>bas+11
	sta puta
	sty puta+1
	lda #" "
	sta bas+5
	ldy #0
loop4	lda (string),y
	jsr check
	jsr put
	iny
	cpy lenght
	bcc loop4
	bcs next
put	sty latch+1
	ldy #0
	sta (puta),y
latch	ldy #0
	inc puta
	bne loop5
	inc puta+1
loop5	rts
next	ldx #0
loop6	lda treiber2,x
	jsr put
	inx
	cpx #trend-treiber2
	bcc loop6
	rts
actdriver	lda lenght
	clc
	adc #trend-treiber2+12
	sta adr1+1
	lda #>bas
	adc #0
	sta adr2+1
	rts
check	pha
	jsr chkbuch
	bcs klar
	pla
	pha
	cmp #"0"
	bcc cerr
	cmp #"9"+1
	bcs cerr
klar	pla
	rts
cerr	cmp #" "
	beq klar
	cmp #"%"
	beq klar
	lda #<cer
	sta stradr
	lda #>cer
	jmp error
init	jsr clrscr
	jsr colin
	lda #<hello
	ldy #>hello
	jsr strout
	lda ink
	pha
	lda frame
	sta ink
	inc revers
	ldx #39
	lda #" "
loop	jsr out
	dex
	bpl loop
	pla
	sta ink
	dec revers
	jsr rahmen
	jsr komma
	jsr frmevl
	jsr frestr
	tax
	bne laenge
	lda #<tooshort
	sta stradr
	lda #>tooshort
	jmp error
laenge	sta lenght
	jsr savestr
	jsr komma
	jsr frmnum
	jsr integer
	lda lo
	ldy hi
	sta tmp
	sty tmp+1
	sta von+1
	sty von2+1
	jsr komma
	jsr frmnum
	jsr integer
	lda lo
	ldy hi
	clc
	adc #1
	bne noiny
	iny
noiny	sta tmp2
	sty tmp2+1
	sta bis+1
	sty bis2+1
	lda #<ok
	ldy #>ok
	sta goto+1
	sty goto+2
	jsr chrgot
	beq default
	jsr komma
	jsr frmnum
	jsr integer
	lda lo
	ldy hi
	sta goto+1
	sty goto+2
default	jsr driver
	lda adr1+1
	ldx adr2+1
	sta tmp3
	stx tmp3+1
	cmp puta
	beq o1
syserr	lda #<system
	sta stradr
	lda #>system
	jmp error
o1	cpx puta+1
	bne syserr
	ldy #0
	lda bank
	sei
	pha
	lda #48
	sta bank
copylang	lda tmp
	cmp tmp2
	bne sir2
	lda tmp+1
	cmp tmp2+1
	bne sir2
	pla
	sta bank
	cli
	jmp auswert
sir2	lda (tmp),y
	sta (tmp3),y
	inc tmp
	bne zuse
	inc tmp+1
zuse	inc tmp3
	bne zuse2
	inc tmp3+1
zuse2	jmp copylang
savestr	lda stradr
	sta string
	lda stradr+1
	sta string+1
	rts
auswert	lda #<last
	ldy #>last
	jsr strout
	lda tmp3
	sec
	sbc #1
	tax
	lda tmp3+1
	sbc #0
	jsr axout
	lda #<poke
	ldy #>poke
	jsr strout
	lda #0
	ldx tmp3
	jsr axout
	lda #<poke2
	ldy #>poke2
	jsr strout
	lda #0
	ldx tmp3+1
	jsr axout
	lda #<forget
	ldy #>forget
	jmp strout
treiber	.byt 0,0,>bas,194,7,tsys
treiber2	.byt 0,0,0
	jsr getx
adr1	lda #0
adr2	ldx #0
	sta tmp
	stx tmp+1
	ldy #0
von	lda #0
von2	ldx #0
	sta tmp2
	stx tmp2+1
copy	lda tmp2+1
bis2	cmp #0
	bne cont
	lda tmp2
bis	cmp #0
	bne cont
goto	jmp 0
cont	lda (tmp),y
	sta (tmp2),y
	inc tmp
	bne noinc1
	inc tmp+1
noinc1	inc tmp2
	bne noinc2
	inc tmp2+1
noinc2	clc
	bcc copy
trend	=*
