;:a=30000:poke56,a/256:poke55,aand255:clr
;:sys36864
	*= 30000
	;.opt oo
bsout	=$ffd2
tmp	=2
mem	=$a000
cint	=65409
return	=$aad7
vic	=$d000
round	=$bc1b
ascfac	=$bcf3
chrgot	=$79
ptr	=122
latch	=$8f00
exp	=$61
sgn	=$66
input	=$ffcf
getadr	=$b7f7
cr	=13
byt	=$14
get	=65508
irqvec	=$314
bim	=$8f80
bi	=1984
clrx	=59903
irqspeed	=$dc05
axout	=$bdcd
spalte	=211
space	=$ab3f
key	=198
sid	=$d400
repkey	=650
setcr	=58732
setnam	=$ffbd
setpar	=$ffba
open	=$ffc0
close	=$ffc3
clrchn	=$ffcc
chkin	=$ffc6
chkout	=$ffc9
clall	=$ffe7
voll	=664
konf	=1
max	=192
intfac	=$bc49
fac	=$61
floatasc	=$bddf
buf	=$100
adrx	=$e9f0
bild	=$d1
farbram	=$ea24
farb	=$f3
frb	=166
bld	=168
zeile	=214
rem	=$8e00
crs1	=204
crs2	=207
quf	=212
crs3	=205
tmp2	=tmp+2
	jsr clrmem
	jmp qstart
strout	jmp qstrout
title	jmp qtitle
dl	inc $d020
	jmp dl
irq	jsr qirq
	jmp (irqadr)
txt1	.byte "\x8e\x93\x98\x12\xb0\x19&\xc0\xae\x08\xdd\x19\x04 nss - directory - drucker v1.3\x19\x04 \xdd"
	.byte "\xddprogrammiert von n. heusler  10/11 '86\xdd"
	.byte "\xdd\x19\x05 (c) nig software service nss\x19\x05 \xdd\xad\x19&\xc0\xbd\x1a\x05\x03"
txt2	.byte "\x05\x13\x19\x05\x11\x1amenue:\x1a\x19\x05\xa3"
	.byte "\x1a\x17directory von disk lesen \x19\x04. \x12f1"
	.byte "\x1a\x17directory ausgeben \x19\x0a. \x12f3"
	.byte "\x1a\x17speicher loeschen \x19\x0b. \x12f2"
	.byte "\x1a\x17bemerkung eingeben \x19\x0a. \x12f5"
	.byte "\x1a\x17sortieren \x19\x13. \x12f7"
	.byte "\x1a\x17floskelliste \x19\x10}. \x12f4"
	.byte "\x1a\x17loeschen \x19\x13.. \x12f6"
	.byte "\x1a\x17ende \x19\x18. \x12f8\x1a\x11\x9beintraege im speicher: \x03"
txt3	.byte "  \x02\x09"
	.byt 20,20
	.byte "\x05 \x05\x0e"
	.byt 20
	.byte "\x13\x10}\x12\x05\x03\x08\x05\x0e\x04\x05 "
	.byt 20
	.byte "\x01\x13"
	.byt 20
	.byte "\x05 \x04\x12\x15\x05\x03\x0b\x05\x0e !  "
txt4	.byte "\x13\x19\x18\x11\x19\x07 sind sie sicher ? [j/n]\x03"
txt5	.byte "\x13\x19\x18\x11 disk einlegen;  \x12rtrn\x92 = ok, \x12_\x92 = abbruch\x03"
txt6	.byte "\x1a\x17geraetenummer ?\xa0\x18\x03"
txt7	.byte "\x1a\x17sek. adresse  ? \x18\x03"
txt8	.byte "\x1a\x17zeichen/zeile ? \x18\x03"
txt9	.byte "\x1a\x17drivenr. 0/1  ?\xa0"
txt9a	.byte "'\x19\x06 \x19\x07\x9d\x03"
txt10	.byte "\x1a\x17dir. maske    ? \x18\x03"
txt11	.byte "\x1a\x17anhaengen j/n ? j\x9d\x03"
txt12	.byte "\x13\x19\x0c\x11\x19\x03 keine daten im speicher ! (taste)\x03"
txt13	.byte "\x13\x19\x18\x11\x19\x0e -- menue --\x03"
txt14	.byte "\x1a\x1a\x19\x04 eingaben ok   ? \x03"
txt15	.byte "\x05\x08\x19\x08 U\x19\x15\xc0I\x1a"
	.byte "\x19\x08 \xddbis bald mal wieder !\xdd\x1a"
	.byte "\x19\x08 \xab\x19\x15\xc0\xb3\x1a"
	.byte "\x19\x08 Bneustart  ohne daten-\xdd\x1a"
	.byte "\x19\x08 \xddverlust:    \x12sys 30003\x92\xdd\x1a"
	.byte "\x19\x08 J\x19\x15\xc0K\x1a\x1a\x03"
i0	.byte "i0"
txt16	.byte "\x19(-disk: \x03"
txt17	.byte "\x1a\x19(-\x1a\x03"
txt18	.byte "\x19\x04 \x03"
txt19	.byte "\x17disk-name: \x12"
	.byt 34,0
txt20	.byt 34
	.byte "\x1a\x17id: \x12\x03"
txt21	.byte "\x92 os: \x12\x03"
txt22	.byte "\x1a\x17#\x03"
txt23	.byte "\x1a\x17typ: \x03"
txt24	.byte " blocks \xc0 nr. \x03"
txt25	.byte " blks. frei, \x03"
txt26	.byte " voll\x1a\x19  (\x12taste\x92)\x03"
txt27	.byte "\x1a\x1a\x12\x98\x19( \x1a\x05\x03"
txt28	.byte "\x19\x05"
	.byt 13
	.byte "   \x12!!! speicher voll !!!\x92   \x11(taste)\x03"
txt29	.byte "      p r i n t i n g  . . .\x03"
txt30	.byte "\x1adirectory der disk "
	.byt 34,0
txt31	.byte "id: \x12\x03"
txt32	.byte "\x92 drive: \x12\x03"
txt33	.byte " voll - \x03"
txt34	.byte " files\x1a\x03"
txt35	.byte "\x1a\x17fileeintragsnummer ? \x03"
txt36	.byte "\x1a\x1abitte bemerkung fuer "
	.byt 34,0
txt37	.byte "\x1aeingeben/editieren !\x1a\x1a\x17\x12f1\x92 abbruch"
	.byte "   \x12f3\x92 floskel"
	.byte "\x1a\x12return\x92 eingabe beenden\x1a"
	.byte "\x1a\x19(R\x19( \x19(E\x1a\x19\x04\x91\x03"
txt38	.byte "\x12nss directorydrucker (c) 1986\x03"
txt39	.byte "\x1a\x12nr.  typ  blk name\x03"
txt40	.byte "ordnen. bitte betriebsart waehlen !\x19\x05 \x19\x06\xa3\x1a"
	.byte "\x17nach namen \x19\x12. \x12f1"
	.byte "\x1a\x17nach laenge \x19\x11. \x12f3"
	.byte "\x1a\x17nach bemerkung \x19\x0e. \x12f5"
	.byte "\x1a\x17nach typ \x19\x13.. \x12f7"
	.byte "\x11\x1a\x17hauptmenue \x19\x12. \x12_\xc0\x03"
txt41	.byte "diese floskeln setzt man ein, indem man"
	.byte "\x1abei der texteingabe nach dem steuerzei-"
	.byte "\x1achen '\x12f\x92' das kennzeichen (*) setzt."
	.byte "\x1a\x19\x0f\x11   \x91^\x11\x9d\xad(*) \x12crsr\x92: scrollen, \x12f1\x92: ende\x19\x0f\x91\x1a\x03"
txt42	.byte "loesche\x1a\x19\x07\xa3\x1a"
	.byte "\x17nach namen \x19\x12. \x12f1"
	.byte "\x1a\x17nach typ \x19\x13.. \x12f7"
	.byte "\x11\x1a\x17hauptmenue \x19\x12. \x12_\xc0\x03"
txt43	.byte "\x1a\x1azu loeschenden \x03"
txt44	.byte "typ\x03"
txt45	.byte "namen\x03"
txt46	.byte " eingeben !\x1a(joker *,? erlaubt) \x03"
char	.byte "abcdefghijklmnopqrstuvwxyz0123456789"
try	brk
texte	.byte "adventure\x03"
	.byte "basic\x03"
	.byte "computer\x03"
	.byte "disk\x03"
	.byte "editor\x03"
	.byte "floppy\x03"
	.byte "grafik\x03"
	.byte "hardware\x03"
	.byte "ideal\x03"
	.byte "jetzt auch fuer den\x03"
	.byte "kopier\x03"
	.byte "load\x03"
	.byte "maschinensprache\x03"
	.byte "nachgeladen\x03"
	.byte "commodore\x03"
	.byte "programm\x03"
	.byte "musik\x03"
	.byte "heiteres spielchen\x03"
	.byte "spiel\x03"
	.byte "taste\x03"
	.byte "utility\x03"
	.byte "version\x03"
	.byte "wird nachgeladen von\x03"
	.byte "load\xa0...,8 start mit run\x03"
	.byte "load\xa0...,8,1 start mit sys\x03"
	.byte "zusatz\x03"
	.byte "compiler\x03"
	.byte "sound\x03"
	.byte "demo\x03"
	.byte "3-dimensional\x03"
	.byte "drucker\x03"
	.byte "monitor\x03"
	.byte "64'er\x03"
	.byte "(!!)\x03"
	.byte ",8,1\x03"
	.byte "n.s.s.\x03\x03"
job	brk
irqadr	.word 0
bliz	brk
cln	brk
temp	brk
lastjob	brk
anz	brk
floppy	.byt 8
printer	.byt 3
psa	brk
cpz	.byt 40
job2	brk
nextbep	brk
typbep	brk
hobep	brk
tab	brk
merkde	brk
entry	brk
count	brk
flag	brk
flag2	brk
zaehl	brk
left	brk
lastword	brk
lasthol	brk
crsr	brk
first	brk
von	brk
enda	.word 0
num	brk
upgr	brk
mals	brk
eoi	brk
keys	.byte "\x89\x85\x86\x8c\x87\x88\x8a\x8b"
	brk
keyadr	.word loesch,load,show,end,enter,sort,list,clrn
name	.byte "$0:"
mask	.byte "*\x03-----------------"
dina	.byte "----------------"
id	.word 0
os	.word 0
free	.word 0
dri	=254
tvon	.byt 2,0,23,18
sortk	.byte "\x85\x86\x87\x88"
	brk
loen	.byt 2,18
loek	.byte "\x85\x88"
	brk
maln	.byt 16,5
seclin	.byt 9,11,12,14
qstrout	tax
	lda tmp
	pha
	lda tmp+1
	pha
	stx tmp
	sty tmp+1
l1	ldy #0
	lda (tmp),y
	beq stend
	cmp #"\x03"
	beq stend
	cmp #"\x1a"
	beq ret
	cmp #"\x19"
	beq repeat
	cmp #"\x18"
	bne nor
	lda spalte
	sta tab
	lda #0
nor	cmp #"\x17"
	beq tabe
	jsr bsout
next	inc tmp
	bne l1
	inc tmp+1
	bne l1
stend	pla
	sta tmp+1
	pla
	sta tmp
	rts
ret	jsr return
	jmp next
repeat	iny
	lda (tmp),y
	tax
	iny
	lda (tmp),y
nneexxtt	jsr bsout
	dex
	bne nneexxtt
	lda tmp
	clc
	adc #3
	sta tmp
	lda tmp+1
	adc #0
	sta tmp+1
	bne l1
tabe	lda #<txt18
	ldy #>txt18
	jsr strout
	jmp next
vicinit	jsr cint
	ldx #12
	stx vic+32
	dex
	stx vic+33
	rts
xoutc	lda #0
	jsr axout
clreol	lda spalte
	cmp #39
	bcs okl
	jsr space
	jmp clreol
sure	lda #<txt4
	ldy #>txt4
	jsr strout
	lda #$80
	sta job
getjn	jsr get
	cmp #"j"
	beq yes
	cmp #"y"
	beq yes
	cmp #"n"
	bne getjn
no	jsr yes
	clc
okl	rts
yes	lda #$90
	sta job
	jsr waitcl
	ldx #24
	jsr clrx
	sec
	rts
waitcl	lda cln
	bne waitcl
	rts
liclr	lda #32
	ldx #39
lc	sta rem,x
	dex
	bpl lc
	inx
	stx crsr
	rts
inse	lda #<txt5
	ldy #>txt5
	jsr strout
	lda #$80
	sta job
get12	jsr get
	beq get12
	cmp #"_"
	beq yes
	bne no
holtab	lda tab
	sta spalte
	jmp setcr
irqinit	sei
	ldx #1
	stx job
	stx bliz
	stx nextbep
	dex
	stx cln
	stx typbep
	lda #$90
	sta job2
	jsr speed1
	lda irqvec+1
	cmp #>irq
	beq deja
	sta irqadr+1
	lda irqvec
	sta irqadr
	lda #<irq
	ldy #>irq
setirq	sta irqvec
	sty irqvec+1
deja	cli
	rts
textrin	lda cln
	bne ach
	ldx #39
settxt	lda txt3,x
	sta bim,x
	dex
	bpl settxt
	rts
irqaus	lda irqadr
	ldy irqadr+1
	bne setirq
ach	jsr tausch
	jmp textrin
speed1	lda #38
	.byt $2c
speed2	lda #64
	sta irqspeed
	rts
clrlatch	lda #" "
	ldx #127
cll	sta latch,x
	dex
	bpl cll
	rts
nextline	lda spalte
	beq deja
	jmp return
errabr	jsr enddisk
	lda #$80
	sta job2
	jsr waitkey
	lda #$90
	sta job2
	jmp title
getnum	jsr speed2
	lda ptr
	pha
	lda ptr+1
	pha
	ldx #0
getnu	jsr input
	cmp #cr
	beq jacr
	sta latch,x
	inx
	bne getnu
jacr	lda #0
	sta latch,x
	lda #<latch
	ldy #>latch
	sta ptr
	sty ptr+1
	jsr chrgot
	jsr ascfac
	jsr round
	pla
	sta ptr+1
	pla
	sta ptr
	lda sgn
	bmi err1
	lda exp
	cmp #$91
	bcs err1
	jsr getadr
	ldx byt
	lda byt+1
	clc
	rts
err1	sec
	rts
qirq	lda job
	bpl nix
	cmp lastjob
	beq gut
	jsr textrin
	lda job
	sta lastjob
gut	and #$7f
	bne nixbli
	dec bliz
	bne nix
	lda #70
	sta bliz
	jsr tausch
	jmp nix
nixbli	cmp #$10
	bne nix
	lda cln
	beq nix
	jsr tausch
	lda #0
	sta job
	beq nix
tausch	lda cln
	eor #-1
	sta cln
	ldx #39
taus	lda bi,x
	pha
	lda bim,x
	sta bi,x
	pla
	sta bim,x
	lda #12
	sta bi+$d400,x
	dex
	bpl taus
	rts
nix	lda job2
	bpl aus
	and #$7f
	bne nixan
	dec nextbep
	bne changeto
	lda typbep
	eor #-1
	sta typbep
	bne an
	lda #10
	ldx #32
	ldy #230
	sty hobep
setbep	sta nextbep
	stx sid+4
	rts
an	lda #40
	ldx #33
	bne setbep
nixan	cmp #$10
	bne aus
	lda #0
	ldx #24
clrsid	sta sid,x
	dex
	bpl clrsid
	sta job2
	lda #15
	sta sid+24
	lda #9
	sta sid+5
	lda #240
	sta sid+6
	lda #230
	sta hobep
	lda #32
	sta sid+4
aus	rts
changeto	lda typbep
	beq aus
	lda hobep
	sec
	sbc #5
	sta hobep
	sta sid+1
	rts
testdata	lda anz
	beq keine
	clc
	rts
keine	jsr title
	lda #<txt12
	ldy #>txt12
	jsr strout
	lda #$80
	sta job2
	jsr waitkey
	lda #$90
	sta job2
	jsr title
	sec
	rts
askga	stx merkde
askga2	lda #<txt6
	ldy #>txt6
	jsr strout
	ldx merkde
	jsr xoutc
	jsr holtab
	jsr getnum
	bcs err
	bne err
	ldx byt
	rts
err	jsr up
	jmp askga2
quote	lda #34
	.byt $2c
up	lda #"\x91"
	jmp bsout
open15	lda #15
	tay
	ldx floppy
	jsr setpar
	lda #2
	ldx #<i0
	ldy #>i0
	jsr setnam
	jmp open
close4	lda #4
	.byt $2c
close2	lda #2
	.byt $2c
close15	lda #15
	jmp close
diskinit	jsr close15
	jsr open15
errchan	ldx #15
	jsr chkin
	ldx #0
errl1	jsr get
	cmp #cr
	beq errl2
	sta latch,x
	inx
	bne errl1
errl2	lda #0
	sta latch,x
	jsr clrchn
	lda latch
	cmp #"0"
	beq rig1
derr	jsr nextline
	lda #<txt16
	ldy #>txt16
	jsr strout
	lda #<latch
	ldy #>latch
	jsr strout
	lda #<txt17
	ldy #>txt17
	jsr strout
	sec
	rts
rig1	lda latch+1
	cmp #"0"
	bne derr
	clc
	rts
opendir	jsr close2
	ldx #0
dirlen	lda name,x
	beq fin
	cmp #"\x03"
	beq fin
	inx
	bne dirlen
fin	txa
	ldx #<name
	ldy #>name
	jsr setnam
	ldx floppy
	lda #2
	ldy #0
	jsr setpar
	jmp open
in2	ldx #2
	jmp chkin
waitqu	jsr get
	cmp #34
	bne waitqu
	rts
wartwas	jsr get
	cmp #" "
	beq wartwas
nixda	rts
wait0	jsr get
	bne wait0
	rts
enddisk	jsr clrchn
	jsr close2
	jmp close15
nss	lda printer
	cmp #3
	beq nixda
	lda #<txt38
	ldy #>txt38
	jsr strout
	ldx #30
	.byt $2c
fillline	ldx #19
fl	jsr space
	inx
	cpx cpz
	bcc fl
	jmp return
adr	ldy #0
	sty tmp+1
	ldx #6
assel	asl
	rol tmp+1
	dex
	bne assel
	sta tmp
	lda tmp+1
	clc
	adc #>mem
	sta tmp+1
	rts
srom	lda #55
	.byt $2c
sram	lda #54
	sta konf
	rts
putlatch	lda anz
	cmp #max
	bcc platz
	lda #<txt28
	ldy #>txt28
	jsr strout
	pla
	pla
	jmp errabr
platz	jsr adr
	ldy #22
trans	lda latch,y
	sta (tmp),y
	dey
	bpl trans
	ldy #23
	lda #0
	sta (tmp),y
	inc anz
	rts
xpar	jsr adrx
	jsr farbram
	lda bild
	sta bld
	lda bild+1
	sta bld+1
	lda farb
	sta frb
	lda farb+1
	sta frb+1
	rts
copy39	ldy #39
c39	lda (bild),y
	sta (bld),y
	lda (farb),y
	sta (frb),y
	dey
	bpl c39
	rts
transfl	inx
	tya
	pha
	lda tmp
	pha
	lda tmp+1
	pha
	jsr flxadr
	lda tmp
	sta bld
	lda tmp+1
	sta bld+1
	pla
	sta tmp+1
	pla
	sta tmp
	ldx upgr
	ldy #0
traf	lda (bld),y
	cmp #"\x03"
	beq efl
	sta rem,x
	inx
	iny
	bne traf
efl	pla
	tay
	iny
	rts
printopen	jsr close4
	ldx printer
	lda #4
	ldy psa
	jsr setpar
	lda #0
	jsr setnam
	jmp open
axbuf	stx fac+2
	sta fac+1
	ldx #$90
	sec
	jsr intfac
	jsr floatasc
f1	ldx #-1
test0	inx
	lda buf,x
	bne test0
	cpx #3
	bcs f2
	ldx #7
f3	lda buf,x
	inx
	sta buf,x
	dex
	dex
	bpl f3
	lda #32
	sta buf
	bne f1
f2	rts
endprint	lda printer
	cmp #3
	bne ende
	jsr waitkey
ende	jmp title
waitkey	lda #0
	sta key
wk	lda key
	beq wk
	dec key
	rts
scroll	lda printer
	cmp #3
	bne scrend
	inc zaehl
	lda zaehl
	cmp #12
	bcc nopaus
	lda #0
	sta zaehl
	jsr waitkey
	inc flag2
nopaus	lda flag2
	beq scrend
	dec zeile
	ldx #12
dolp	jsr xpar
	inx
	jsr adrx
	jsr farbram
	jsr copy39
	cpx #23
	bcc dolp
	jsr clrx
	jmp setcr
scrend	rts
textrem	ldy #23
	ldx #0
	stx first
txtrem	lda (tmp),y
	cmp #"\x06"
	beq fls
	sta rem,x
	iny
	inx
	cpy #64
	bcc txtrem
	bcs remlatch
fls	iny
	lda (tmp),y
	sta try
	stx upgr
	ldx #0
fl1	lda char,x
	cmp try
	beq fl2
	inx
	bne fl1
fl2	jsr transfl
	jmp txtrem
remlatch	ldx #33
	ldy #0
r1	stx lastword
	sty lasthol
r2	lda rem,y
	sta latch,x
	beq r3
	iny
	inx
	cmp #" "
	beq r1
	cpx cpz
	bcc r2
	ldy lasthol
	beq arndt
	dec lastword
	jsr rueck
fait	ldx lastword
	lda #cr
	sta left
	sta latch,x
	inx
	lda #0
	sta latch,x
	rts
r3	sta left
	lda #cr
	sta latch,x
	inx
	lda #0
	sta latch,x
	rts
arndt	ldy first
	beq fait
	jsr testlen
	php
	stx sub+1
	lda cpz
	sec
	sbc #1
	sec
sub	sbc #0
	tax
	ldy #0
transit	lda rem,y
	beq transed
	sta latch,x
	inx
	iny
	bne transit
transed	jmp weiter
rueck	ldx #0
r4	lda rem,y
	sta rem,x
	beq r5
	inx
	iny
	bne r4
r5	rts
montre	jsr return
	jsr up
	ldy #0
momo	lda #1
	sta quf
	lda rem,y
	jsr bsout
	iny
	cpy #40
	bcc momo
	jsr return
	jsr up
	jsr up
	lda crsr
	sta spalte
	jsr setcr
	jmp up
del	ldy crsr
	beq dede
	dey
dede	iny
	lda rem,y
	dey
	sta rem,y
	iny
	cpy #39
	bcc dede
	lda #32
	sta rem,y
	rts
insert	ldy #39
inin	cpy crsr
	beq is2
	dey
	lda rem,y
	iny
	sta rem,y
	dey
	bpl inin
is2	lda #" "
	sta rem,y
	rts
testlen	ldx #0
tesln	lda rem,x
	beq ofen
	cmp #" "
	beq ofen2
	inx
	bne tesln
ofen	clc
	.byt $24
ofen2	sec
	rts
weiter	plp
	bcc gehtso
	inc sub+1
gehtso	ldy sub+1
	jsr rueck
	ldx cpz
	dex
	stx lastword
	jmp fait
colline	jsr adrx
	jsr farbram
	ldy #39
	lda #0
schwarz	sta (farb),y
	dey
	bpl schwarz
ok	rts
security	lda anz
	bne ok
	ldy #3
secloop	sty temp
	ldx seclin,y
	jsr colline
	ldy temp
	dey
	bpl secloop
	rts
qstart	jsr vicinit
	jsr title
	jsr irqinit
	lda #-1
	sta repkey
	jsr clall
me	lda #<txt2
	ldy #>txt2
	jsr strout
	ldx anz
	jsr xoutc
	jsr speed1
	lda #<txt13
	ldy #>txt13
	jsr strout
	jsr security
	lda #$80
	sta job
wem	jsr get
	beq wem
	sta temp
	ldx #0
sk	lda keys,x
	beq wem
	cmp temp
	beq found
	inx
	bne sk
found	lda #$90
	sta job
	txa
	asl
	tax
	lda keyadr,x
	sta goto+1
	lda keyadr+1,x
	sta goto+2
	jsr waitcl
goto	jsr 0
	jmp me
qtitle	lda #<txt1
	ldy #>txt1
	jmp strout
end	jsr sure
	bcs sowas
	rts
sowas	jsr enddisk
	jsr irqaus
	pla
	pla
	jsr cint
	jsr speed2
	lda #<txt15
	ldy #>txt15
	jmp strout
loesch	jsr sure
	bcs clrmem
	rts
clrmem	lda #0
	sta anz
keidata	rts
show	jsr testdata
	bcs keidata
	jsr title
	ldx printer
	jsr askga
	stx printer
seka	lda #<txt7
	ldy #>txt7
	jsr strout
	ldx psa
	jsr xoutc
	jsr holtab
	jsr getnum
	bcs err2
	bne err2
	ldx byt
	stx psa
	jmp zpz
err2	jsr up
	jmp seka
zpz	lda #<txt8
	ldy #>txt8
	jsr strout
	ldx cpz
	jsr xoutc
	jsr holtab
	jsr getnum
	bcs err3
	bne err3
	ldx byt
	cpx #40
	bcc err3
	stx cpz
	jmp richtig
err3	jsr up
	jmp zpz
richtig	lda #<txt14
	ldy #>txt14
	jsr strout
	jsr input
	cmp #"n"
	beq show
	cmp #"y"
	beq mach
	cmp #"j"
	beq mach
	jsr up
	jsr bsout
	jmp richtig
mach	jsr title
	lda printer
	cmp #3
	beq drei
	lda #<txt29
	ldy #>txt29
	jsr strout
drei	jsr printopen
	ldx #4
	jsr chkout
	lda #<txt30
	ldy #>txt30
	jsr strout
	ldx #0
dinaout	lda dina,x
	cmp #"\xa0"
	beq shiftsp
	jsr bsout
shiftsp	inx
	cpx #16
	bcc dinaout
	jsr quote
	lda cpz
	cmp #61
	bcc rt
	lda #" "
	.byt $2c
rt	lda #cr
	jsr bsout
	lda #<txt31
	ldy #>txt31
	jsr strout
	lda id
	jsr bsout
	lda id+1
	jsr bsout
	lda #<txt21
	ldy #>txt21
	jsr strout
	lda os
	jsr bsout
	lda os+1
	jsr bsout
	lda #<txt32
	ldy #>txt32
	jsr strout
	lda dri
	ora #"0"
	jsr bsout
	jsr return
	ldx free
	lda free+1
	jsr axout
	lda #<txt25
	ldy #>txt25
	jsr strout
	lda #<voll
	sec
	sbc free
	tax
	lda #>voll
	sbc free+1
	jsr axout
	lda #<txt33
	ldy #>txt33
	jsr strout
	ldx anz
	lda #0
	jsr axout
	lda #<txt34
	ldy #>txt34
	jsr strout
	lda #0
	sta count
	sta zaehl
	sta flag2
	lda #<txt39
	ldy #>txt39
	jsr strout
	jsr fillline
main	inc count
	ldx count
	lda #0
	sta flag
	jsr axbuf
	jsr clrlatch
	ldx #2
t1	lda buf,x
	sta latch,x
	dex
	bpl t1
	ldx count
	dex
	txa
	jsr adr
	ldy #18
	jsr sram
t2	lda (tmp),y
	sta latch-14,y
	iny
	cpy #23
	bcc t2
	ldy #0
	lda (tmp),y
	iny
	tax
	lda (tmp),y
	pha
	jsr srom
	pla
	jsr axbuf
	ldx #2
t3	lda buf,x
	sta 10+latch,x
	dex
	bpl t3
	lda #34
	sta latch+14
	jsr sram
	ldy #2
t4	lda (tmp),y
	sta latch+13,y
	cmp #34
	bne t5
	inc flag
t5	iny
	cpy #18
	bcc t4
	lda flag
	bne goon
	lda #34
	sta latch+31
	bne goon
goon	jsr textrem
	jsr srom
	inc first
outit	lda #<latch
	ldy #>latch
	jsr strout
	jsr scroll
	lda left
	beq final
	jsr clrlatch
	jsr remlatch
	jmp outit
final	lda count
	cmp anz
	bcs fertig
	jmp main
fertig	jsr nss
	jsr clrchn
	jsr close4
	jmp endprint
load	jsr inse
	bcc lade
	rts
lade	jsr title
	ldx floppy
	jsr askga
	stx floppy
	lda name+1
	sta txt9a
getdn	lda #<txt9
	ldy #>txt9
	jsr strout
	jsr input
	cmp #"0"
	bcs gr0
dnerr	jsr up
	jmp getdn
gr0	cmp #"2"
	bcs dnerr
	sta name+1
	sta i0+1
	jsr diskinit
	bcs over
wantmask	lda #<txt10
	ldy #>txt10
	jsr strout
	lda #<mask
	ldy #>mask
	jsr strout
	jsr holtab
	ldx #0
holma	jsr input
	cmp #cr
	beq holed
	sta mask,x
	inx
	cpx #18
	bcc holma
holed	txa
	bne iswas
	jsr up
	jmp wantmask
iswas	lda #0
	sta mask,x
	lda anz
	beq noleft
wish	lda #<txt11
	ldy #>txt11
	jsr strout
	jsr input
	cmp #"j"
	beq noleft
	cmp #"y"
	beq noleft
	cmp #"n"
	beq nullanz
	jsr up
	jmp wish
over	jmp errabr
nullanz	lda #0
	sta anz
noleft	lda #<txt14
	ldy #>txt14
	jsr strout
	jsr input
	cmp #"n"
	beq qlade
	cmp #"y"
	beq alrig
	cmp #"j"
	beq alrig
	jsr up
	jsr bsout
	jmp noleft
qlade	jmp lade
alrig	jsr opendir
	jsr errchan
	bcs over
	lda #<txt27
	ldy #>txt27
	jsr strout
	jsr in2
	jsr get
	jsr get
	lda #0
	sta entry
	lda #<txt19
	ldy #>txt19
	jsr strout
	jsr get
	jsr get
	jsr get
	sta dri
	jsr waitqu
	ldx #0
getdina	jsr get
	sta dina,x
	jsr bsout
	inx
	cpx #16
	bcc getdina
	lda #<txt20
	ldy #>txt20
	jsr strout
	jsr get
	jsr wartwas
	jsr bsout
	sta id
	jsr get
	sta id+1
	jsr bsout
	jsr get
	lda #<txt21
	ldy #>txt21
	jsr strout
	jsr get
	jsr bsout
	sta os
	jsr get
	sta os+1
	jsr bsout
	jsr return
	jsr wait0
entryloop	jsr errchan
	bcs qover
	jsr in2
	jsr get
	jsr get
	inc entry
	jsr get
	sta latch
	jsr get
	sta latch+1
	jsr wartwas
	cmp #34
	beq guel
	jmp bfr
qover	jmp over
guel	lda #<txt22
	ldy #>txt22
	jsr strout
	ldx entry
	lda #0
	jsr axout
	lda #9
	sta spalte
	jsr setcr
	lda #18
	jsr bsout
	jsr quote
	ldx #2
getnam	jsr get
	jsr bsout
	sta latch,x
	inx
	cpx #18
	bcc getnam
	lda #<txt23
	ldy #>txt23
	jsr strout
	ldx #5
	lda #32
deltyp	sta latch+18,x
	dex
	bpl deltyp
	jsr get
	jsr wartwas
	ldx #18
	cmp #"*"
	beq stern
	inx
stern	sta latch,x
	jsr get
	beq fine
	inx
	sta latch,x
	bne stern
fine	ldx #18
showtyp	lda latch,x
	jsr bsout
	inx
	cpx #24
	bcc showtyp
	lda latch+1
	ldx latch
	jsr axout
	lda #<txt24
	ldy #>txt24
	jsr strout
	ldx anz
	inx
	jsr xoutc
	jsr up
	jsr up
	jsr putlatch
	jmp entryloop
bfr	jsr enddisk
	ldx #5
retka	jsr return
	dex
	bne retka
	lda #<txt18
	ldy #>txt18
	jsr strout
	lda latch+1
	ldx latch
	sta free+1
	stx free
	jsr axout
	lda #<txt25
	ldy #>txt25
	jsr strout
	lda #<voll
	sec
	sbc latch
	tax
	lda #>voll
	sbc latch+1
	jsr axout
	lda #<txt26
	ldy #>txt26
	jsr strout
	jsr waitkey
	jmp title
enter	jsr testdata
	bcc jad
	rts
jad	jsr title
	lda #<txt35
	ldy #>txt35
	jsr strout
	jsr getnum
	bcs jad
	ldx byt
	beq jad
	cpx anz
	beq oknr2
	bcs jad
oknr2	dex
	txa
	pha
	lda #<txt36
	ldy #>txt36
	jsr strout
	pla
	jsr adr
	ldy #2
	lda #0
	sta flag
tt4	jsr sram
	lda (tmp),y
	pha
	jsr srom
	pla
	jsr bsout
	cmp #34
	bne tt5
	inc flag
tt5	iny
	cpy #18
	bcc tt4
	lda flag
	bne goon2
	jsr quote
	jmp goon2
goon2	lda #<txt37
	ldy #>txt37
	jsr strout
	ldx #39
	lda #32
clrrem	sta rem,x
	dex
	bpl clrrem
	ldy #23
	jsr sram
	lda #0
	sta crsr
	sta key
torem	lda (tmp),y
	beq feddisch
	sta rem-23,y
	iny
	cpy #63
	bcc torem
feddisch	jsr srom
	jsr montre
gek	lda #0
	sta crs1
ggkk	jsr get
	beq ggkk
	ldx #1
	stx crs3
waa	ldx crs2
	bne waa
	inc crs1
	cmp #20
	bne no20
	jsr del
	bne lft
no20	cmp #20+$80
	bne no2
	jsr insert
	bne feddisch
no2	cmp #"\x13"
	bne nohome
	lda #0
	sta crsr
	beq feddisch
nohome	cmp #"\x93"
	bne noclr
	jsr liclr
	jmp feddisch
noclr	cmp #"\x85"
	bne nof1
	jmp title
nof1	cmp #cr
	bne noccr
	jmp takeit
noccr	cmp #"\x1d"
	bne nori
rgt	lda crsr
	cmp #39
	bcs feddisch
	inc crsr
	bne feddisch
nori	cmp #"\x9d"
	bne nole
lft	lda crsr
	beq feddisch
	dec crsr
	bpl feddisch
nole	cmp #"\x86"
	bne nf3
	lda #"\x06"
	bne ausge
nf3	cmp #" "
	bcc gek
	cmp #128
	bcc ausge
	cmp #149
	bcc gek
	cmp #156
	bcc ausge
	cmp #160
	bcc qgek
ausge	ldy crsr
	sta rem,y
	jmp rgt
qgek	jmp gek
takeit	ldy #40
endsu	dey
	lda rem,y
	cmp #" "
	beq endsu
	iny
	lda #0
	sta rem,y
	ldy #23
trarem	lda rem-23,y
	sta (tmp),y
	iny
	cpy #64
	bcc trarem
	jmp title
escape	lda #$90
	sta job
	jsr waitcl
	jmp title
sort	jsr testdata
	bcc sortan
	rts
sortan	jsr title
	lda #<txt40
	ldy #>txt40
	jsr strout
	lda #$80
	sta job
gtk	jsr get
	beq gtk
	cmp #"_"
	beq escape
	sta temp
	ldx #0
sik	lda sortk,x
	beq gtk
	cmp temp
	beq artok
	inx
	bne sik
artok	lda #$90
	sta job
	lda tvon,x
	sta von
	jsr sram
	jsr waitcl
	lda anz
	jsr adr
	lda tmp
	ldy tmp+1
	sta enda
	sty enda+1
	lda #0
	jsr adr
sm1	lda tmp
	cmp enda
	bne ssm1
	lda tmp+1
	cmp enda+1
	bne ssm1
	jsr srom
	jmp title
ssm1	lda tmp
	ldy tmp+1
	sta tmp2
	sty tmp2+1
sm2	lda tmp2
	clc
	adc #64
	sta tmp2
	lda tmp2+1
	adc #0
	sta tmp2+1
	lda tmp2
	cmp enda
	bne ssm2
	lda tmp2+1
	cmp enda+1
	bne ssm2
	lda tmp
	clc
	adc #64
	sta tmp
	lda tmp+1
	adc #0
	sta tmp+1
	bne sm1
ssm2	ldy von
ssm3	lda (tmp),y
	cmp (tmp2),y
	bcc sm2
	bne sm3
	iny
	cpy #64
	bcc ssm3
	bcs sm2
sm3	ldy #63
ssm4	lda (tmp),y
	pha
	lda (tmp2),y
	sta (tmp),y
	pla
	sta (tmp2),y
	dey
	bpl ssm4
	bmi sm2
list	jsr title
	lda #<txt41
	ldy #>txt41
	jsr strout
	ldx #1
	stx upgr
fllp1	jsr flxout
	inx
	cpx #14
	bcc fllp1
fllp8	jsr get
	beq fllp8
	cmp #"\x85"
	bne fllp9
	jmp title
fllp9	cmp #"\x11"
	beq fllp10
	cmp #"\x91"
	bne fllp8
	jsr scrdwn
	dec upgr
	jsr testup
	ldx upgr
	jsr flxout
	jmp fllp8
fllp10	jsr scrup
	inc upgr
	jsr testup
	lda upgr
	clc
	adc #12
	jsr upset
	tax
	jsr flxout
	jmp fllp8
testup	lda upgr
	bne no0
	lda #try-char
setup	sta upgr
rtts	rts
no0	cmp #try-char+1
	bcc rtts
	lda #1
	bne setup
upset	cmp #try-char+1
	bcc rtts
	sec
	sbc #try-char
	jmp upset
flxadr	stx num
	lda #<texte
	ldy #>texte
	sta tmp
	sty tmp+1
fllp2	dex
	bne fllp3
	rts
fllp3	ldy #0
fllp4	lda (tmp),y
	cmp #"\x03"
	beq fllp5
	iny
	bne fllp4
fllp5	iny
	tya
	clc
	adc tmp
	sta tmp
	lda tmp+1
	adc #0
	sta tmp+1
	bne fllp2
flxout	jsr flxadr
	jsr space
	jsr bsout
	jsr bsout
	ldx num
	lda char-1,x
	jsr bsout
	lda #"="
	jsr bsout
	lda tmp
	ldy tmp+1
	jsr strout
	jsr clreol
	jsr return
	ldx num
	rts
scrup	ldx #10
fllp6	jsr xpar
	inx
	jsr adrx
	jsr farbram
	jsr copy39
	cpx #22
	bcc fllp6
	bcs setcoor
scrdwn	ldx #22
fllp7	jsr xpar
	dex
	jsr adrx
	jsr farbram
	jsr copy39
	cpx #10
	bne fllp7
setcoor	stx zeile
	lda #0
	sta spalte
	jmp setcr
ecape	jmp escape
clrn	jsr testdata
	bcc cldata
	rts
cldata	jsr title
	lda #<txt42
	ldy #>txt42
	jsr strout
	lda #$80
	sta job
gmk	jsr get
	beq gmk
	cmp #"_"
	beq ecape
	sta temp
	ldx #0
sij	lda loek,x
	beq gmk
	cmp temp
	beq armok
	inx
	bne sij
armok	lda #$90
	sta job
	lda loen,x
	sta von
	pha
	lda maln,x
	sta mals
	pla
	clc
	adc mals
	sta eoi
	stx upgr
	jsr waitcl
	lda #<txt43
	ldy #>txt43
	jsr strout
	ldx upgr
	beq na
	lda #<txt44
	ldy #>txt44
	bne nat
na	lda #<txt45
	ldy #>txt45
nat	jsr strout
	lda #<txt46
	ldy #>txt46
	jsr strout
	jsr speed2
	ldx #0
nai	jsr input
	cmp #cr
	beq nac
	sta rem,x
	inx
	cpx mals
	bcc nai
nac	lda #0
	sta rem,x
	jsr speed1
	jsr sure
	bcs nclrn
	jmp clrn
nclrn	lda #0
handle	sta count
	jsr darfich
	bcc lassen
	lda count
	jsr dela
	dec count
lassen	inc count
	lda count
	cmp anz
	bcc handle
	jmp title
dela	jsr adr
	lda tmp
	clc
	adc #64
	sta bld
	lda tmp+1
	adc #0
	sta bld+1
dela1	lda bld
	cmp #<vic
	bne dela2
	lda bld+1
	cmp #>vic
	bne dela2
	dec anz
	jmp srom
dela2	jsr sram
	ldy #63
dela3	lda (bld),y
	sta (tmp),y
	dey
	bpl dela3
	lda tmp
	clc
	adc #64
	sta tmp
	lda tmp+1
	adc #0
	sta tmp+1
	lda bld
	clc
	adc #64
	sta bld
	lda bld+1
	adc #0
	sta bld+1
	bne dela1
darfich	jsr adr
	jsr sram
	ldy von
	ldx #0
	lda rem,x
comp	cmp (tmp),y
	beq same
	cmp #"?"
	bne wrong
	lda (tmp),y
	cmp #34
	beq wrong
same	inx
	iny
	lda rem,x
	beq zero
	cmp #"*"
	beq fund
	bne comp
zero	cpy eoi
	bcs fund
	lda (tmp),y
	cmp #34
	bne wrong
fund	sec
	.byt $24
wrong	clc
	php
	jsr srom
	plp
	rts
