;:poke56,144:clr
;:remopen1,8,15,"s:mcode $8000":close1
;:remopen2,8,2,"mcode $8000,p,w
;:rem *** achtung, zeile 222 !
;:sys36864
	;.opt o
	*= $8000
crs1	=204
crs2	=205
crs3	=207
get	=65508
bsout	=$ffd2
spalte	=211
zeile	=214
zeilset	=$e56a
clrx	=59903
aclrx	=$ea01
setcr	=58732
tmp	=2
bild	=$d1
calcx	=$e9f0
mem	=$d000	; $400 byte
konf	=1
key	=198
space	=$ab3f
crscol	=646
farbram	=$d800
qsuchvar	=$b08b
getx	=$b7f1
komma	=$aefd
frestr	=$b6a3
strres	=$b475
latch	=820
varadr	=$49
para	=$61
quote	=212
clrchn	=$ffcc
chkin	=$e11e
basin	=$e112
illquan	=$b248
chkout	=$e118
return	=$aad7
farbptr	=$ea24
farb	=$f3
vic	=$d000
keybuf	=631
bslatch	=$9400 	; $400 byte
tmp2	=tmp+2
basmerk	=820
erg	=$c000 	; lowbyte = 0, $400 byte
anzfe	=820
chrget	=$73
frmnum	=$ad8a
integer	=$b7f7
chrptr	=$7a
intvar	=$47
tmp3	=166
aktdes	=$fb
suchdes	=$b4
getadrx	=$b7eb
wrt	=20
inbuf	=$c600  	; 256 byte
rvs	=199
speicher	=824
poskey	=822
lenkey	=823
gesalen	=821
frmevl	=$ad9e
stradr	=$22
drumem	=$9800 	; $800 byte ab $9800
sprspr	=704
sprptr	=2040
posline	=787
irqvec	=$314
timemsb	=161
keyboard	=203
	jmp maskedit
	jmp colin
	jmp waitkey
	jmp inform
	jmp inputf
	jmp posit
	jmp margin
	jmp clr
	jmp loadm
	jmp savem
	jmp bslt
	jmp ltbs
	jmp aw
	jmp search
	jmp memvar
	jmp clrbuffer
	jmp outbuf
	jmp eingabe
	jmp eval
	jmp varmem
	jmp ober2
	jmp parameter
	jmp holpar
	jmp infind
	jmp schneider
	jmp edruck
	jmp clrdruk
	jmp harda2
	jmp harddata
	jmp irqon
	jmp irqoff
	jmp settime
	jmp gettime
kofi	jsr komma
findvar	jmp qsuchvar
helptxt	.byte "\x05\x13\x19\x12\x11\x12\xb0\x19%\xc0\xae\x1a\x12\xdd CBM S: Schluesselfeld\x17\xdd\x1a\x12\xdd"
	.byte " CBM F: Zwangseintragstextfeld\x17\xdd\x1a\x12\xdd CBM T:"
	.byte " Textfeld\x17\xdd\x1a\x12\xdd CBM Z: Zahlenfeld\x17\xdd\x1a\x12\xdd"
	.byte " F1: Ende\x17\xdd"
	.byte "\x1a\x12\xad\x19%\xc0\xbd\x92\x03"
delt	.byte "\x9d \x9d\x03"
erra	.byte "\x13\x05\x13\x19\x18\x11\x12\x03"
err1	.byte "\x18Felder zu lang !\x17 \x92\x03"
err2	.byte "\x18Wo ist das Schluesselfeld ?\x17 \x92\x03"
err3	.byte "\x18Bitte nur ein Schluesselfeld !\x17 \x92\x03"
helppri	.byte "\x05\x13\x19\x0e\x11\x12\xb0\x19%\xc0\xae\x1a\x12\xdd F1: Ende\x17\xdd\x1a\x12\xdd"
	.byte " F4: Alles loeschen\x17\xdd\x1a\x12\xdd F5: Zeile einfuegen"
	.byte "\x17\xdd\x1a\x12\xdd F6: Zeile loeschen\x17\xdd\x1a\x12\xdd F7: Hilfe"
	.byte "\x17\xdd\x1a\x12\xdd F2 + CRSR: Druckgrenze festlegen\x17\xdd\x1a\x12\xdd C"
	.byte "TRL + 1 bis 9: Feld einfuegen"
	.byte "\x17\xdd\x1a\x12\xdd CTRL A: Feldlaenge konstant (normal)"
	.byte "\x17\xdd\x1a\x12\xdd CTRL B: Feldlaengenautomatik"
	.byte "\x17\xdd\x1a\x12\xad\x19%\xc0\xbd\x92\x03"
user	.byte "u1:8 0 "
track	.byte "?? "
sektor	.byte "??"
buftxt	.byte "b-p 8 "
byte	.byte "???"
b1	.byte "u?:8 0 3"
b1a	.byte "  "
b1b	brk
ctrlnum	.byte "\x90\x05\x1c\x9f\x9c\x1e\x1f\x9e\x12"
maskmode	brk
char	brk
len	brk
merkze	brk
merksp	brk
merkcol	brk
geslen	brk
maskart	.word 0,0
	brk
error	brk
lastcode	brk
gofx	brk
gofy	brk
gofxx	brk
gofyy	brk
ende	.word 0
elemnr	.word 0
prueflen	brk
lenflag	brk
konfmerk	brk
rvmod	.byt 1
start	brk
posx	brk
len1	brk
len2	brk
nh	brk
old	brk
look	brk
abort	brk
sperr	brk
blank	brk
oldirq	.word 0
bltime	brk
steuer	.byt 13,20
	.byte "\x94\x13\x93\x11\x91\x1d\x9d\x85\xae\xbb\xa3\xad\x88\xa6\xa8\xa4\xaf"
adr	.word ret,del,inst,home,clr,down,up,right,left,finish
	.word feld1,feld2,feld3,feld4,help,tool,tool,tool,tool
steuer2	.byt 13
	.byte "\x13\x11\x91\x1d\x9d"
adr2	.word mret,mhome,mdown,mup,mright,mleft
masksign	.byt 102,111,100,104
home	lda #0
	sta spalte
	ldy #2
	jmp zeilset
crson	pha
	lda #0
	sta crs1
	pla
	rts
crsoff	pha
	lda #2
	sta crs2
cwait	lda crs3
	bne cwait
	inc crs1
	pla
	rts
testchar	cmp #" "
	bcc wrong
	tax
	bpl richt
	cmp #149
	bcc wrong
	cmp #156
	bcc richt
	cmp #160
	bcc wrong
richt	sec
wrong	rts
ret	lda #0
	sta spalte
down	lda zeile
	cmp #24
	bcs toobig
	inc zeile
toobig	jmp setcr
left	lda spalte
	bne normal
	lda #38
	sta spalte
up	lda zeile
	cmp #3
	bcc toobig
	dec zeile
	jmp setcr
normal	dec spalte
	rts
right	lda spalte
	cmp #38
	bcs ret
	inc spalte
	rts
clr	ldx #2
cllp	ldy #38
	jsr aclrx
	inx
	cpx #25
	bcc cllp
	bcs home
cout	jsr bsout
	lda spalte
	cmp #39
	bcc ex
	jmp ret
ex	rts
del	ldy spalte
	beq left
dl	lda (bild),y
	dey
	sta (bild),y
	iny
	iny
	cpy #40
	bcc dl
	lda #32
	dey
	dey
	sta (bild),y
	bne left
inst	ldy #38
	lda (bild),y
	cmp #32
	bne ex
	cpy spalte
	beq gleich
ist	dey
	lda (bild),y
	iny
	sta (bild),y
	dey
	cpy spalte
	bne ist
gleich	lda #32
	sta (bild),y
	rts
savepos	lda spalte
	sta merksp
	lda zeile
	sta merkze
	lda crscol
	sta merkcol
	rts
holpos	lda merkcol
	sta crscol
	lda merksp
	sta spalte
	ldy merkze
	jmp zeilset
retten	ldx #14
	lda konf
	sta konfmerk
retn	jsr rom
	jsr calcx
	jsr ram
	lda bild
	sta tmp
	lda bild+1
	and #3
	ora #>mem
	sta tmp+1
	ldy #39
retn2	lda (bild),y
	sta (tmp),y
	dey
	bpl retn2
	inx
	cpx #25
	bcc retn
	jmp rom
holen	ldx #14
	lda konf
	sta konfmerk
zuru	jsr rom
	jsr calcx
	jsr ram
	lda bild
	sta tmp
	lda bild+1
	and #3
	ora #>mem
	sta tmp+1
	ldy #39
zuru2	lda (tmp),y
	sta (bild),y
	dey
	bpl zuru2
	inx
	cpx #25
	bcc zuru
	jmp rom
waitkey	lda #0
	sta key
wk	cmp key
	beq wk
	dec key
	rts
ram	lda konf
	sta konfmerk
	lda #48
	sei
	sta konf
	rts
rom	lda konfmerk
	sta konf
	cli
	rts
strout	tax
	lda tmp
	pha
	lda tmp+1
	pha
	stx tmp
	sty tmp+1
sto	ldy #0
	lda (tmp),y
	beq ten
	cmp #"\x03"
	beq ten
	cmp #"\x1a"
	bne nocr
	lda #13
nocr	cmp #"\x19"
	beq rept
	cmp #"\x17"
	beq tab
	cmp #"\x18"
	beq flosk
	jsr bsout
dd	inc tmp
	bne sto
dc	inc tmp+1
	bne sto
rept	iny
	lda (tmp),y
	tax
	iny
	lda (tmp),y
rep	jsr bsout
	dex
	bne rep
	lda tmp
	clc
	adc #3
	sta tmp
	bcc sto
	bcs dc
ten	pla
	sta tmp+1
	pla
	sta tmp
	rts
tab	lda spalte
	cmp #38
	bcs dd
	jsr space
	jmp tab
flosk	lda #<erra
	ldy #>erra
	jsr strout
	jmp dd
colin	ldy #0
	sty tmp
	ldx #4
	lda #>farbram
	sta tmp+1
	lda crscol
clin	sta (tmp),y
	iny
	bne clin
	inc tmp+1
	dex
	bne clin
	rts
numbasc	ldx #"0"
	sec
numb1	sbc #10
	bcc numb2
	inx
	bcs numb1
numb2	adc #"9"+1
	rts
testmask	ldx #4
	lda #0
	sta geslen
	sta error
	ldy #<1104
	sty testcode+1
	ldy #>1104
	sty testcode+2
tm	sta maskart,x
	dex
	bpl tm
	jsr testcode
	ldx #2
tline	stx merkze
	jsr calcx
	ldy #0
tchar	lda (bild),y
	ldx #3
	inc geslen
tsuch	cmp masksign,x
	beq ane
	dex
	bpl tsuch
	dec geslen
	ldx #4
	bne kurzen
ane	lda geslen
	cmp #-1
	bne kurzen
	inc error
kurzen	cpx lastcode
	beq same
other	txa
	ldx lastcode
	inc maskart,x
	sta lastcode
same	iny
	cpy #39
	bcc tchar
	ldx merkze
	inx
	cpx #25
	bcc tline
	ldx lastcode
	inc maskart,x
	jmp auswert
testcode	lda !0
	ldx #3
tc	cmp masksign,x
	beq two
	dex
	bpl tc
	ldx #4
two	stx lastcode
	rts
auswert	lda error
	beq ok1
	jsr savepos
	jsr retten
	lda #<err1
	ldy #>err1
errgo	jsr strout
	jsr waitkey
	jsr holen
	inc error
	jmp holpos
ok1	lda maskart
	bne ok2
	jsr savepos
	jsr retten
	lda #<err2
	ldy #>err2
	bne errgo
ok2	cmp #1
	beq ok3
	jsr savepos
	jsr retten
	lda #<err3
	ldy #>err3
	bne errgo
ok3	rts
settmp	lda #<erg
	ldy #>erg
	sta tmp
	sty tmp+1
	rts
eval	jsr settmp
	sta anzfe
	sta gesalen
evl	ldy #0
	lda (tmp),y
	bne ev1
	rts
ev1	inc anzfe
	cmp #1
	bne ev2
	iny
	lda (tmp),y
	sta lenkey
	lda gesalen
	sta poskey
ev2	ldy #1
	lda (tmp),y
	clc
	adc gesalen
	sta gesalen
	lda tmp
	clc
	adc #4
	sta tmp
	bcc evl
	inc tmp+1
	bne evl
ober2	ldx #79
	lda #0
o2	sta farbram,x
	dex
	bpl o2
	rts
parameter	jsr getx
	stx rvmod
	rts
holpar	lda rvmod
	sta tmp
	rts
maskedit	jsr home
	lda #0
	sta maskmode
edit	lda maskmode
	bne omo
	jsr crson
	jmp getone
omo	clc
	jsr outlen
getone	jsr get
	beq getone
	jsr crsoff
	ldx maskmode
	bne inmask
	ldx #adr-steuer-1
such	cmp steuer,x
	beq found
	dex
	bpl such
	bmi notfound
found	txa
	asl
	tax
	lda adr,x
	sta goto+1
	lda adr+1,x
	sta goto+2
goto	jsr 0
	jmp edit
notfound	jsr testchar
	bcc edit
	jsr cout
	jmp edit
finish	pla
	pla
	jsr testmask
	lda error
	bne edit
	rts
inmask	ldx #adr2-steuer2-1
such2	cmp steuer2,x
	beq found2
	dex
	bpl such2
	bmi edit
found2	txa
	asl
	tax
	lda adr2,x
	sta goto2+1
	lda adr2+1,x
	sta goto2+2
	sec
	jsr outlen
goto2	jsr 0
	jmp edit
mret	jsr skip
	dec maskmode
	lda #32
	sta keybuf
	lda #"\x9d"
	sta keybuf+1
	lda #2
	sta key
	rts
mright	lda len
	bmi tool
	lda char
	cmp #166
	beq ri2
	inc len
tool	rts
ri2	lda len
	cmp #16
	bcs tool
	inc len
	rts
mleft	lda len
	cmp #2
	bcc tool
	dec len
	rts
mup	lda len
	cmp #40
	bcc tool
	sec
	sbc #39
	sta len
	rts
mdown	lda char
	cmp #166
	beq tool
	lda len
	bmi tool
	clc
	adc #39
	sta len
	rts
mhome	lda #1
	sta len
	rts
feld1	lda #166
	.byt $2c
feld2	lda #175
	.byt $2c
feld3	lda #164
	.byt $2c
feld4	lda #168
	sta char
	jsr testallw
	lda #1
	sta len
	inc maskmode
	rts
testallw	lda zeile
	cmp #2
	bne testl
	lda spalte
	beq darf
testl	jsr left
	ldy spalte
	lda (bild),y
	pha
	jsr right
	pla
	ldx #3
tl1	cmp masksign,x
	beq nono
	dex
	bpl tl1
	bmi darf
nono	pla
	pla
darf	rts
skip	clc
	jsr outlen
	ldx len
skp	stx tmp
	jsr right
	ldx tmp
	dex
	bne skp
	rts
outlen	php
	jsr savepos
	lda len
	sta tmp
	lda char
	plp
	bcc balken
	lda #32
balken	sta dasout+1
dasout	lda #0
	jsr cout
	dec tmp
	bne dasout
	jmp holpos
help	jsr savepos
	jsr retten
	lda #<helptxt
	ldy #>helptxt
	jsr strout
	jsr waitkey
	jsr holen
	jmp holpos
inform	jsr lenght
	jsr findvar
	sta varadr
	sty varadr+1
	jsr frestr
	ldx #0
	stx tmp
keylp	jsr crson
get1	jsr get
	beq get1
	jsr crsoff
	cmp #13
	bne text
	lda tmp
	jsr strres
	ldy #2
setpar	lda para,y
	sta (varadr),y
	dey
	bpl setpar
	iny
settxt	cpy tmp
	beq carried
	lda latch,y
	sta (para+1),y
	iny
	bne settxt
carried	jmp return
text	cmp #20
	beq dele
	jsr testchar
	bcc keylp
	ldx tmp
	cpx tmp+1
	bcs keylp
	sta latch,x
	jsr bsout
	inc tmp
	lda #0
	sta quote
	beq keylp
lenght	jsr getx
	stx tmp+1
	jmp komma
dele	ldx tmp
	beq keylp
	lda #<delt
	ldy #>delt
	jsr strout
	dec tmp
	jmp keylp
varmem	jsr komma
	jsr frmnum
	jsr integer
	sty tmp
	sta tmp+1
	jsr komma
	jsr frmevl
	jsr frestr
	tay
transstr	dey
	lda (stradr),y
	sta (tmp),y
	tya
	bne transstr
	rts
irqon	lda irqvec+1
	cmp #>irqneu
	beq sat
	sta oldirq+1
	lda irqvec
	sta oldirq
	lda #<irqneu
	ldy #>irqneu
setirq	sei
	sta irqvec
	sty irqvec+1
	lda #0
	sta blank
	cli
sat	rts
irqoff	lda oldirq
	ldy oldirq+1
	bne setirq
irqneu	lda blank
	bne wegg
	lda keyboard
	cmp #64
	beq none
	lda #0
	sta timemsb
none	lda timemsb
	cmp bltime
	bcc offirq
	lda vic+17
	and #239
	sta vic+17
	lda #1
	sta blank
	bne offirq
wegg	lda keyboard
	cmp #64
	beq offirq
	lda vic+17
	ora #16
	sta vic+17
	lda #0
	sta timemsb
	sta blank
offirq	jmp (oldirq)
gettime	lda bltime
	sta 2
	rts
settime	jsr getx
	stx bltime
	rts
inputf	jsr getx
	jsr chkin
	jsr getx
	txa
	pha
	jsr kofi
	sta varadr
	sty varadr+1
	jsr frestr
	pla
	jsr strres
	ldy #2
store	lda para,y
	sta (varadr),y
	dey
	bpl store
	iny
fetch	jsr basin
	sta (para+1),y
	iny
	cpy para
	bne fetch
	jmp clrchn
ill	jmp illquan
posit	jsr getx
	cpx #36
	bcs ill
	txa
	beq ill
	jsr numbasc
	stx track
	sta track+1
	jsr getx
	txa
	jsr numbasc
	stx sektor
	sta sektor+1
	jsr getx
	txa
	ldx #"0"
	sec
wa100	sbc #100
	bcc wn100
	inx
	bcs wa100
wn100	adc #100
	stx byte
	ldx #"0"
	sec
wa10	sbc #10
	bcc wn10
	inx
	bcs wa10
wn10	stx byte+1
	adc #"9"+1
	sta byte+2
	ldx #15
	jsr chkout
	ldx #0
cmdout	lda user,x
	jsr bsout
	inx
	cpx #13
	bcc cmdout
	jsr clrchn
	ldx #15
	jsr chkout
	ldx #0
bufout	lda buftxt,x
	jsr bsout
	inx
	cpx #9
	bcc bufout
	jmp clrchn
margin	ldx #2
mgin	jsr calcx
	jsr farbptr
	ldy #39
	lda vic+32
	sta (farb),y
	lda #160
	sta (bild),y
	inx
	cpx #25
	bcc mgin
	rts
eingabe	jsr calcend
	jsr settmp
einfeld	ldy #3
	lda (tmp),y
	sta spalte
	dey
	lda (tmp),y
	tay
	jsr zeilset
	ldy #1
	lda (tmp),y
	sta prueflen
	dey
	sty geslen
	lda (tmp),y
	sta char
edin	jsr crson
eded	jsr get
	beq eded
	jsr crsoff
	cmp #13
	bne wadda
	jmp readscrn
wadda	cmp #"\x11"
	bne nodown
	lda tmp
	clc
	adc #4
	sta tmp
	bcc noi
	inc tmp+1
noi	ldy #0
	lda (tmp),y
	beq eingabe
	bne einfeld
nodown	cmp #"\x91"
	bne noup
	lda tmp
	cmp #<erg
	bne doup
	lda tmp+1
	cmp #>erg
	bne doup
	lda ende
	sta tmp
	lda ende+1
	sta tmp+1
doup	lda tmp
	sec
	sbc #4
	sta tmp
	lda tmp+1
	sbc #0
	sta tmp+1
	jmp einfeld
noup	cmp #"\x13"
	beq einfeld
	cmp #"\x93"
	beq qeingabe
	cmp #"\x9d"
	bne noleft
	lda geslen
	beq edin
	jsr left
	dec geslen
	jmp edin
qeingabe	jmp eingabe
noleft	cmp #"\x1d"
	bne noright
	lda geslen
	cmp prueflen
	bcs edin
	jsr right
	inc geslen
	jmp edin
noright	ldx geslen
	cpx prueflen
	bcs qedin
	ldx char
	cpx #4
	beq ziffern
	jsr testchar
	bcc qedin
outit	jsr cout
	inc geslen
qedin	jmp edin
ziffern	cmp #"9"+1
	bcs qedin
	cmp #"0"
	bcs outit
	cmp #" "
	beq outit
	bne qedin
calcend	jsr settmp
	tay
suchend	lda (tmp),y
	beq foundend
	lda tmp
	clc
	adc #4
	sta tmp
	bcc suchend
	inc tmp+1
	bne suchend
foundend	lda tmp
	sta ende
	lda tmp+1
	sta ende+1
	rts
readscrn	jsr settmp
	tax
	stx merkze
bo	ldy #0
	lda (tmp),y
	bne sowas
	jmp testein
sowas	iny
	lda (tmp),y
	sta geslen
	iny
	lda (tmp),y
	sta zeile
	iny
	lda (tmp),y
	sta spalte
	jsr setcr
	ldx merkze
getxt	jsr getscn
	sta inbuf,x
	txa
	pha
	jsr right
	pla
	tax
	inx
	dec geslen
	bne getxt
	stx merkze
	lda tmp
	clc
	adc #4
	sta tmp
	bcc bo
	inc tmp+1
	bne bo
getscn	ldy spalte
	lda (bild),y
	and #$7f
	cmp #94
	bne nopi
	lda #-1
	rts
nopi	sta char
	and #$3f
	asl char
	bit char
	bpl plus
	ora #$80
plus	bvs fau
	ora #$40
fau	rts
testein	lda #0
	sta geslen
	jsr settmp
e1	ldy #0
	lda (tmp),y
	bne e2
	rts
e2	cmp #3
	bcs sureok
	iny
	lda (tmp),y
	tay
	ldx geslen
schau	lda inbuf,x
	cmp #32
	bne sureok
	inx
	dey
	bne schau
	jmp einfeld
sureok	ldy #1
	lda geslen
	clc
	adc (tmp),y
	sta geslen
	lda tmp
	clc
	adc #4
	sta tmp
	bcc e1
	inc tmp+1
	bne e1
loadm	jsr getx
	txa
	ora #"0"
	sta b1a
	lda #"1"
	sta b1b
	sta b1+1
	lda #>bslatch
	sta tmp+1
	lda #<bslatch
	sta tmp
tr0	ldx #15
	jsr chkout
	ldx #0
tr1	lda b1,x
	jsr bsout
	inx
	cpx #11
	bcc tr1
	jsr clrchn
	ldx #8
	jsr chkin
	ldy #0
tr2	jsr get
	sta (tmp),y
	iny
	bne tr2
	jsr clrchn
	inc b1b
	inc tmp+1
	lda tmp+1
	cmp #>bslatch+$400
	bcc tr0
	rts
savem	jsr getx
	txa
	ora #"0"
	sta b1a
	ldx #"0"
	stx byte
	inx
	stx b1b
	inx
	stx b1+1
	lda #>bslatch
	sta tmp+1
	lda #<bslatch
	sta tmp
tr6	ldx #15
	jsr chkout
	ldx #0
tr7	lda buftxt,x
	jsr bsout
	inx
	cpx #7
	bcc tr7
	jsr clrchn
	ldx #8
	jsr chkout
	ldy #0
tr5	lda (tmp),y
	jsr bsout
	iny
	bne tr5
	jsr clrchn
	ldx #15
	jsr chkout
	ldx #0
tr4	lda b1,x
	jsr bsout
	inx
	cpx #11
	bcc tr4
	jsr clrchn
	inc b1b
	inc tmp+1
	lda tmp+1
	cmp #>bslatch+$400
	bcc tr6
	rts
bslt	jsr merk12
	lda #4
	ldx #>bslatch
	bne cop
ltbs	jsr merk12
	ldx #4
	lda #>bslatch
cop	sta tmp+1
	stx tmp2+1
	ldy #0
	sty tmp
	sty tmp2
	ldx #4
co	lda (tmp),y
	sta (tmp2),y
	iny
	bne co
	inc tmp+1
	inc tmp2+1
	dex
	bne co
	ldx #79
hol12	lda speicher,x
	sta 1024,x
	dex
	bpl hol12
	rts
merk12	ldx #79
me12	lda 1024,x
	sta speicher,x
	dex
	bpl me12
	rts
aw	jsr aw2
	jmp setcr
aw2	ldx #0
	stx anzfe
	dex
	stx geslen
	ldy #0
	lda #2
	sta merkze
	jsr goofy
	lda #<erg
	ldy #>erg
	sta tmp2
	sty tmp2+1
	ldy #<bslatch+80
	sty testcode+1
	ldy #>bslatch+80
	sty testcode+2
	jsr testcode
	ldx #2
aline	stx merkze
	jsr calcx
	lda bild+1
	clc
	adc #>bslatch-$400
	sta bild+1
	ldy #0
achar	lda (bild),y
	ldx #3
asuch	cmp masksign,x
	beq aone
	dex
	bpl asuch
	ldx #4
aone	inc geslen
	cpx lastcode
	beq asame
	txa
	pha
	jsr eintrag
	pla
	sta lastcode
asame	iny
	cpy #39
	bcc achar
	ldx merkze
	inx
	cpx #25
	bcc aline
	jsr eintrag
	lda #0
write	sty merksp
	ldy #0
	sta (tmp2),y
	inc tmp2
	bne nn
	inc tmp2+1
nn	ldy merksp
	rts
eintrag	jsr goofy
	ldx lastcode
	cpx #4
	beq noy
	inc anzfe
	inx
	txa
	jsr write
	lda geslen
	jsr write
	lda gofxx
	jsr write
	lda gofyy
	jsr write
noy	lda #0
	sta geslen
	rts
goofy	lda gofx
	sta gofxx
	lda gofy
	sta gofyy
	sty gofy
	lda merkze
	sta gofx
	rts
memvar	jsr komma
	jsr getadrx
	lda wrt
	ldy wrt+1
	sta tmp
	sty tmp+1
	txa
	pha
	pha
	jsr kofi
	sta varadr
	sty varadr+1
	jsr frestr
	pla
	jsr strres
	ldy #2
schieb	lda para,y
	sta (varadr),y
	dey
	bpl schieb
	pla
	tay
copytext	dey
	lda (tmp),y
	sta (para+1),y
	tya
	bne copytext
	rts
clrbuffer	lda #32
	ldy #0
cb	sta inbuf,y
	iny
	bne cb
	rts
outbuf	jsr ltbs
	jsr spacing
	jsr aw
	jsr margin
	jsr settmp
	tax
	stx merkze
ob	ldy #0
	lda (tmp),y
	bne nowas
	rts
nowas	iny
	lda (tmp),y
	sta geslen
	iny
	lda (tmp),y
	sta zeile
	iny
	lda (tmp),y
	sta spalte
	jsr setcr
	lda rvmod
	sta rvs
	ldx merkze
trtext	lda inbuf,x
	inx
	stx tmp3
	jsr cout
	ldx tmp3
	dec geslen
	bne trtext
	stx merkze
	lda tmp
	clc
	adc #4
	sta tmp
	bcc ob
	inc tmp+1
	bne ob
spacing	ldy #0
	sty tmp
	lda #4
	sta tmp+1
	sta tmp2
spcng	lda (tmp),y
	ldx #3
allsuch	cmp masksign,x
	beq spacean
	dex
	bpl allsuch
	bmi fer
spacean	lda #160
	sta (tmp),y
fer	iny
	bne spcng
	inc tmp+1
	dec tmp2
	bne spcng
	rts
search	jsr kofi
	sta tmp
	sty tmp+1
	ldy #2
getsuch	lda (tmp),y
	sta suchdes,y
	dey
	bpl getsuch
	lda chrptr
	pha
	lda chrptr+1
	pha
vor	jsr chrget
	cmp #"("
	bne vor
	jsr frmnum
	jsr integer
	sty elemnr
	sta elemnr+1
	pla
	sta chrptr+1
	pla
	sta chrptr
	jsr kofi
	sta tmp3
	sty tmp3+1
	jsr kofi
	sta ende
	sty ende+1
	lda #0
	sta lenflag
	ldy suchdes
	sty prueflen
	dey
	lda (suchdes+1),y
	cmp #"*"
	bne getdes
	dec lenflag
	dec prueflen
getdes	ldy #2
gd1	lda (tmp3),y
	sta aktdes,y
	dey
	bpl gd1
	lda prueflen
	beq positiv
	cmp aktdes
	php
	lda lenflag
	beq nostern
	plp
	bcs nextstr
	bcc pruefen
nostern	plp
	bne nextstr
pruefen	ldy #0
pr1	lda (suchdes+1),y
	cmp #"?"
	beq nextchr
	cmp (aktdes+1),y
	bne nextstr
nextchr	iny
	cpy prueflen
	bcc pr1
	beq positiv
nextstr	lda tmp3
	clc
	adc #3
	sta tmp3
	bcc nocy3
	inc tmp3+1
nocy3	inc elemnr
	bne nocy4
	inc elemnr+1
nocy4	lda tmp3+1
	cmp ende+1
	bcc getdes
	lda tmp3
	cmp ende
	bcc getdes
	beq getdes
	lda #0
	sta elemnr
	sta elemnr+1
positiv	jsr kofi
	lda elemnr+1
	ldy #0
	sta (intvar),y
	iny
	lda elemnr
	sta (intvar),y
	rts
infind	jsr komma
	jsr frmevl
	jsr frestr
	sta len1
	lda stradr
	ldy stradr+1
	sta tmp
	sty tmp+1
	jsr komma
	jsr frmevl
	jsr frestr
	sta len2
	lda len1
	sec
	sbc len2
	bcc negativ
	adc #0
	sta len1
	lda #0
	sta start
vergl	ldy #0
verg	lda (stradr),y
	cmp #"?"
	beq joker
	cmp (tmp),y
	bne nextone
joker	iny
	cpy len2
	bcc verg
	bcs drinn
nextone	inc start
	dec len1
	beq negativ
	inc tmp
	bne vergl
	inc tmp+1
	bne vergl
negativ	lda #-1
	sta start
drinn	inc start
	jsr kofi
	ldy #0
	tya
	sta (intvar),y
	iny
	lda start
	sta (intvar),y
fddsch	rts
schneider	jsr komma
	jsr frmevl
	jsr frestr
	ldx stradr
	ldy stradr+1
	stx tmp
	sty tmp+1
	tay
lp1	dey
	cpy #-1
	beq empty
	lda (tmp),y
	cmp #" "
	beq lp1
empty	iny
	sty len1
	jsr kofi
	sta varadr
	sty varadr+1
	jsr frestr
	lda len1
	jsr strres
	ldy #2
stpar	lda para,y
	sta (varadr),y
	dey
	bpl stpar
	iny
sttx	cpy len1
	beq fddsch
	lda (tmp),y
	sta (para+1),y
	iny
	bne sttx
edruck	jsr machspr
	jsr dhhome
	jsr eval
de	jsr crson
druke	jsr get
	beq druke
	jsr crsoff
	cmp #"\x85"
	bne nof1
	dec vic+21
	rts
nof1	cmp #"\x93"
	beq edruck
	cmp #"\x13"
	bne nohom
	lda posx
	sec
	sbc spalte
	sta posx
	lda #0
	sta spalte
	ldy #2
	jsr zeilset
	jmp de
nohom	cmp #"\x1d"
	bne neright
dright	ldx spalte
	cpx #39
	bcs gro39
	inc posx
dobs	jsr bsout
	bcc de
gro39	lda posx
	cmp #78
	bcs dreturn
	inc posx
wertpos	jsr scroll
	jmp de
neright	cmp #"\x9d"
	bne neleft
drleft	ldx spalte
	bne qdobs
	lda posx
	beq dede
	dec posx
	jmp wertpos
dede	lda #78
	sta posx
	lda #39
	sta spalte
	jsr scroll
	lda #"\x91"
	bne drup
qdobs	dec posx
	bpl dobs
neleft	cmp #"\x11"
	bne nedown
drdowm	ldx zeile
	cpx #23
	bcs qde
	bcc dobs
nedown	cmp #"\x91"
	bne neup
drup	ldx zeile
	cpx #2
	bcc qde
	bne dobs
neup	cmp #13
	bne nocrlf
dreturn	lda #0
	sta posx
	sta spalte
	jsr scroll
	lda #"\x11"
	bne drdowm
qde	jmp de
nocrlf	cmp #"\x8a"
	bne nof3
	jsr clrdruk
	jmp edruck
nof3	cmp #"\x87"
	bne nof5
	ldx #21
	dec zeile
	dec zeile
ff5	jsr dcalcx
	cpx zeile
	beq ff51
	lda tmp
	sec
	sbc #80
	sta tmp2
	lda tmp+1
	sbc #0
	sta tmp2+1
	ldy #79
ff52	lda (tmp2),y
	sta (tmp),y
	dey
	bpl ff52
	dex
	bpl ff5
ff51	ldy #79
	lda #32
ff53	sta (tmp),y
	dey
	bpl ff53
	inc zeile
	inc zeile
	jsr scroll
	jmp de
nof5	cmp #"\x8b"
	bne nof6
	ldx zeile
	dex
	dex
ff6	jsr dcalcx
	cpx #21
	beq ff61
	lda tmp
	clc
	adc #80
	sta tmp2
	lda tmp+1
	adc #0
	sta tmp2+1
	ldy #79
ff62	lda (tmp2),y
	sta (tmp),y
	dey
	bpl ff62
	inx
	bne ff6
ff61	ldy #79
	lda #32
ff63	sta (tmp),y
	dey
	bpl ff63
	jsr scroll
	jmp de
nof6	cmp #"\x88"
	bne nof7
	jsr savepos
	jsr retten
	lda #<helppri
	dec vic+21
	ldy #>helppri
	jsr strout
	jsr waitkey
	jsr holen
	inc vic+21
	jsr holpos
	jmp de
nof7	cmp #20
	bne no20
	lda #"\x9d"
	ldy posx
	beq qdrleft
	ldx zeile
	dex
	dex
	jsr dcalcx
	ldy posx
nahl	lda (tmp),y
	dey
	sta (tmp),y
	iny
	iny
	cpy #79
	bcc nahl
	dey
	lda #" "
	sta (tmp),y
	jsr scroll
	lda #"\x9d"
qdrleft	jmp drleft
no20	cmp #148
	bne no148
	ldx zeile
	dex
	dex
	jsr dcalcx
	ldy #78
	lda (tmp),y
	cmp #" "
	bne qqde
	cpy posx
	beq dgleich
est	dey
	lda (tmp),y
	iny
	sta (tmp),y
	dey
	cpy posx
	bne est
dgleich	lda #32
	sta (tmp),y
	jsr scroll
qqde	jmp de
nof2	jsr vilfil
	jsr testchar
	bcc qqde
	tax
	bmi wa4
	cmp #$60
	bcc wa1
	and #$df
	bne wa2
wa1	and #$3f
wa2	jmp wa3
wa4	and #$7f
	cmp #$7f
	bne wa5
	lda #$5e
wa5	ora #$40
wa3	pha
	ldx zeile
	dex
	dex
	jsr dcalcx
	ldy posx
	pla
	sta (tmp),y
	jsr scroll
	lda #"\x1d"
	jmp dright
no148	cmp #"\x89"
	bne nof2
	jsr linechange
	jmp de
dcalcx	stx nh
	lda #0
	sta tmp+1
	txa
	asl
	asl
	clc
	adc nh
	ldy #4
mal16	asl
	rol tmp+1
	dey
	bne mal16
	sta tmp
	lda tmp+1
	clc
	adc #>drumem
	sta tmp+1
	rts
scroll	lda posx
	sec
	sbc spalte
	sta geslen
	ldx #21
zeilp	jsr dcalcx
	jsr calcx
	lda tmp
	clc
	adc geslen
	sta tmp
	bcc q
	inc tmp+1
q	ldy #39
	lda bild
	clc
	adc #80
	sta bild
	bcc spall
	inc bild+1
spall	lda (tmp),y
	sta (bild),y
	dey
	bpl spall
	dex
	bpl zeilp
	lda posline
	asl
	asl
	asl
	clc
	adc #73
	sta vic+1
	jmp setcr
dhhome	lda #0
	sta posx
	sta spalte
	lda #2
	sta zeile
	bne scroll
clrdruk	ldx #21
	stx posline
cdk	jsr dcalcx
	ldy #78
	lda #32
cdd	sta (tmp),y
	dey
	bpl cdd
	dex
	bpl cdk
	rts
machspr	ldx #63
	lda #0
	sta vic+39
msp	sta sprspr,x
	dex
	bpl msp
	stx sprspr
	stx sprspr+1
	stx sprspr+2
	lda #1
	sta vic+21
	sta vic+29
	lda #11
	sta sprptr
	lda #24
	sta vic
	rts
linechange	lda vic+39
	eor #1
	sta vic+39
	jsr get
	cmp #13
	bne nod13
	lda #0
	sta vic+39
	rts
nod13	cmp #"\x11"
	bne nod17
	ldx posline
	cpx #21
	bcs linechange
	inc posline
	jsr scroll
	jmp linechange
nod17	cmp #"\x91"
	bne linechange
	ldx posline
	beq linechange
	dec posline
	jsr scroll
	jmp linechange
vilfil	ldx anzfe
	cpx #10
	bcc ok11
	ldx #9
ok11	dex
	bmi nomore
	cmp ctrlnum,x
	bne ok11
	pla
	pla
	lda #0
	sta tmp+1
	txa
	pha
	asl
	rol tmp+1
	asl
	rol tmp+1
	sta tmp
	lda tmp+1
	clc
	adc #>erg
	sta tmp+1
	ldy #1
	lda (tmp),y
	sta tmp3
	ldx zeile
	dex
	dex
	jsr dcalcx
	ldy posx
	pla
	clc
	adc #177
setline	sta (tmp),y
	iny
	cpy #79
	bcs nonomore
	dec tmp3
	bne setline
nonomore	jsr scroll
	jmp de
nomore	cmp #"\x01"
	bne noct1
	lda #250
	bne noct3
noct1	cmp #"\x02"
	bne noct2
	lda #191
noct3	tax
	pla
	pla
	txa
	jmp wa3
noct2	rts
harda2	ldx #4
	jsr chkout
	ldx #2
hardli	jsr calcx
	ldy #0
hardch	lda (bild),y
	cmp #34
	bne naa34
	lda #39
naa34	cmp #162
	bne naa162
	lda #167
naa162	cmp #128
	bcc naa128
	and #$7f
	pha
	lda #"\x12"
	jsr bsout
	pla
naa128	cmp #94
	bne naa94
	lda #-1
	bne oud
naa94	sta char
	and #$3f
	asl char
	bit char
	bpl nplus
	ora #$80
nplus	bvs oud
	ora #$40
oud	jsr bsout
	lda #"\x92"
	jsr bsout
	iny
	cpy #39
	bcc hardch
	jsr return
	inx
	cpx #25
	bcc hardli
	jmp clrchn
harddata	jsr maketable
	ldx #4
	jsr chkout
	ldx #255
	stx look
	inx
	stx abort
	stx sperr
haline	jsr dcalcx
	ldy #0
hachar	lda (tmp),y
	cmp #177
	bcc supar
	cmp #186
	bcc unnormal
supar	cmp #250
	beq a1
	cmp #191
	beq a2
	sta char
	and #$3f
	asl char
	bit char
	bpl plastik
	ora #$80
plastik	bvs gaby
	ora #$40
gaby	jsr bsout
gaby2	lda #255
	sta look
	lda #0
	sta sperr
gabi	iny
	cpy #79
	bcc hachar
	jsr return
	inx
	cpx posline
	bcc haline
	beq haline
	jmp clrchn
a1	lda #0
	.byt $2c
a2	lda #1
	sta abort
	jmp gaby2
unnormal	stx posx
	sec
	sbc #177
	cmp look
	beq warm
	sta look
	ldx #0
	stx sperr
	tax
	lda speicher,x
	sta old
warm	ldx old
	inc old
	lda inbuf,x
	cmp #" "
	bne back2
	ldx abort
	beq back2
	lda #1
	sta sperr
	bne back1
back2	ldx sperr
	bne back1
	jsr bsout
back1	ldx posx
	bpl gabi
maketable	jsr settmp
	tax
	sta look
mata	ldy #0
	lda (tmp),y
	bne mata2
	rts
mata2	lda look
	sta speicher,x
	iny
	clc
	adc (tmp),y
	sta look
	inx
	lda tmp
	clc
	adc #4
	sta tmp
	bcc mata
	inc tmp+1
	bne mata
