;:poke56,128:clr
;:sys36864
	;.opt oo
	*=$8000
crlf	=$aad7
setnam	=$ffbd
clrchn	=$ffcc
stop	=$ffe1
clall	=$ffe7
strout	=$ab1e
right	 = $ab42
integer	=$bc49
axout	=$bdcd
intout	=$bdd1
facasc	=$bddf
bsout	=$e10c
basin	=$e112
chkin	=$e11e
get	=$e124
open	=$e1c1
close	=$e1cc
aut	=$e385
setcol	=$e4dd
cursor	=$e50c
clrx	=$e9ff
stoptest	=$f6bc
setpar	=$fe00
number	=$100
text	=$200
curscol	=$286
repeat	=$28a
platz	=$2
count	=$7
adr	=$14
fac	=$62
st	=$90
rvs	=$c7
bild	=$d1
farb	=$f3
spalte	=$d3
quote	=$d4
zeile	=$d6
char	=$d7
bildmsb	=$d9
free	=$fb
namlgt	=$b7
chkout	=$ffc9
space	=$ab3f
start	jsr clall
	lda #15
	sta $d020
	sta $d021
	lda #<title
	ldy #>title
	jsr strout
action	lda #<ntxt
	ldy #>ntxt
	jsr strout
	ldy #$ff
	sty repeat
enter	jsr basin
	iny
	cmp #13
	beq endin
	sta text,y
	bne enter
endin	jsr crlf
	jsr crlf
	ldx #0
	stx adr
	stx adr+1
	tya
	bne eing
	jmp aut
eing	ldy #2
	jsr setnam
	lda #1
	ldy text
	cpy #"$"
	beq nil
	ldy #2
	.byt $2c
nil	ldy #0
	ldx #8
	jsr setpar
	jsr open
	jsr in1
	lda text
	cmp #"$"
	bne nodir
catalog	ldx #$06
skip	sta fac+1
	jsr basin
	sta fac
	ldy st
	bne abbr
	dex
	bne skip
	jsr intout
	lda #$20
	ldy #$1a
dirloop	jsr ascout
	jsr basin
	dey
	bne dirloop
	tay
	jsr crlf
	ldx #4
	tya
	beq skip
	jsr stop
	bne catalog
abbr	jsr clrchn
	lda #1
	jsr close
	jmp action
nopri	lda #<bri
	ldy #>bri
	jsr strout
nodir	jsr clrchn
	lda #<anf
	ldy #>anf
	jsr strout
getprt	jsr get
	cmp #"\x03"
	beq abbr
	cmp #"n"
	beq drucke
	cmp #"j"
	bne getprt
	jsr popen
	php
	jsr pri0
	plp
	bcs nopri
	lda #128
	.byt $2c
drucke	lda #0
	sta flagprt
	lda #<anf2
	ldy #>anf2
	jsr strout
getsta	jsr get
	cmp #"\x03"
	beq abbr
	cmp #"j"
	beq starta
	cmp #"n"
	bne getsta
	lda #0
starta	pha
	jsr in1
	pla
	beq ort
	jsr basin
	sta adr
	jsr basin
	sta adr+1
ort	jsr crlf
main	lda spalte
	beq erst
	cmp #40
	bne ort
erst	jsr newline
	jsr stop
	beq menue
	jmp weiter
menue	lda #<unter
	ldy #>unter
	jsr strout
nocont	ldx #12
modelp	ldy bscpos,x
	lda flagasc,x
	rol
	php
	lda (bild),y
	rol
	plp
	ror
	sta (bild),y
	dex
	bpl modelp
waitunt	jsr get
	ldx #12
suchunt	cmp keys,x
	beq legal
	dex
	bpl suchunt
	bmi waitunt
legal	txa
	cmp #4
	beq ende
	tax
	lda flagasc,x
	eor #$80
	sta flagasc,x
	lda #0
	sta flagbsc+1
	cpx #2
	bne nocont
	jsr allow
	bpl nocont
	bmi noend
ende	jsr allow
	bpl nocont
	lda #1
	jsr close
	jmp start
allow	lda flagasc
	ora flagbsc
	ora flagbin
	ora flaghex
	rts
noend	jsr in1
	jsr newline
weiter	lda #0
	sta free
	lda flagadr2
	bpl noadr2
	lda adr+1
	jsr hexout
	lda adr
	jsr hexout
	jsr right
noadr2	lda flagadr1
	bpl noadr1
	ldx adr
	lda adr+1
	sta fac
	stx fac+1
	ldx #$90
	sec
	jsr integer
	jsr facasc
	ldx #0
such0	inx
	lda number,x
	bne such0
	txa
	pha
	lda #0
	jsr strout
	pla
	tax
rechts	jsr right
	inx
	cpx #6
	bcc rechts
	lda platz
	sbc #6
	sta platz
noadr1	lda flagjot
	bpl nojot
	lda spalte
	beq links
	lda #20
	jsr bsout
links	lda #":"
	jsr bsout
	jsr right
nojot	lda #41
	sec
	sbc spalte
	sta platz
pll1	ldx #8
pll3	lda flagasc,x
	bpl aus
	cmp #$81
	bcc aus
	ldy free
	beq pll4
	ldy flaggap
	bpl nogap
	cmp #$c1
	bcc nogap
pll4	dec platz
nogap	and #$3f
	eor #$ff
	sec
	adc platz
	sta platz
aus	dex
	bpl pll3
	lda platz
	bmi pll2
	inc free
	bne pll1
pll2	ldy free
lesen	jsr basin
	sta text-1,y
	inc adr
	bne noinc
	inc adr+1
noinc	dey
	bne lesen
	lda flaghex
	bpl nohex
	jsr next
	beq nohex
hexout	pha
	lsr
	lsr
	lsr
	lsr
	jsr hex1
	pla
hex1	and #$f
	cmp #10
	bcc letter
	adc #6
	adc flaggro
letter	adc #"0"
	jsr bsout
	sec
	rts
;
nohex	lda flagbin
	bpl nobin
	jsr next
	beq nobin
binout	ldy #8
binloop	asl
	pha
	lda #"."
	bcc zero
	lda #"*"
zero	jsr bsout
	pla
	dey
	bne binloop
	sec
	rts
;
nobin	lda flagasc
	bpl noasc
	jsr next
	beq noasc
ascout	pha
	sta char
	lda rvs
	pha
	lda char
	cmp #32
	bcc kl32
	cmp #128
	bcc kl128
	cmp #160
	bcs kl128
kl32	lda rvs
	eor #18
	sta rvs
	lda char
	adc #64
kl128	jsr bsout
	lda #0
	sta quote
	pla
	sta rvs
	pla
	rts
;
noasc	lda flagbsc
	bpl nobsc
	jsr next
	beq nobsc
bscout	ldy spalte
	sta (bild),y
	lda curscol
	sta (farb),y
	jmp right
;
nobsc	lda #20
	jsr bsout
	lda st
	pha
	jsr nadel
	pla
	bne stoer
	jmp main
;
stoer	jsr zu1
	lda #<callret
	ldy #>callret
	jsr strout
wk	jsr get
	cmp #13
	bne wk
	jmp start
nadel	lda flagprt
	bmi raus
	rts
raus	jsr popen
	ldx #7
rand	jsr space
	dex
	bne rand
	ldy #0
hcopy	lda (bild),y
	and #127
	cmp #32
	bcs gro32
kle96	ora #64
	bne convd
gro32	cmp #64
	bcc convd
	cmp #96
	bcs kle96
	ora #128
convd	jsr bsout
	iny
	cpy #40
	bcc hcopy
	jsr crlf
	jsr pri0
	jmp in1
popen	jsr clrchn
	lda #4
	tax
	ldy #7
	jsr setpar
	lda #0
	sta namlgt
	jsr open
	ldx #4
	jmp chkout
newline	ldx zeile
	lda bildmsb,x
	ora #$80
	sta bildmsb,x
	jsr clrx
	iny
	jmp cursor
;
next	ldx free
	stx count
gap0	pla
	tax
	pla
	tay
	pha
	txa
	pha
	jsr byte
	lda flagcol
	beq nochg
	lda curscol
	eor #7
	sta curscol
nochg	dec count
	beq neues
	bcc gap0
	lda flaggap
	bpl gap0
neues	lda #11
	sta curscol
	jsr right
	lda count
	bne gap0
	rts
;
byte	tya
	pha
	txa
	pha
	ldx count
	php
	lda text-1,x
	plp
	rts
in1	ldx #1
	jmp chkin
zu1	jsr clrchn
	lda #1
	bne qclose
pri0	jsr clrchn
	lda #4
qclose	jmp close
keys	.byte "abcdesghojrpx"
ntxt	.byt 13
	.byte "Dateiname: $\x9d"
	brk
unter	.byte "\x98Asc Bsc Cnt Dual End pOS GaP HeX pRt J:\x97"
	brk
bscpos	.byt 0,4,10,12,20,23,25,29,22,37,34,27,31
flagasc	.byt $81
flagbsc	.byt $1,0
flagbin	.byt $48,0
flagadr1	brk
flaggap	.byt $80
flaghex	.byt $c2
flagadr2	.byt $80
flagjot	.byt $80
flagprt	brk
flagcol	.byt $80
flaggro	brk
title	.byt 13
	.byte "\x97\x0e\x93\x12  FLEXibler FileLISTer rev1\xba   nh 3.92\xa0\xa0"
	.byt 13
	.byte "\x11    von N. Heusler    nach V. Hilbig\x11"
	.byt 13,0
anf	.byte "Drucker? (J/N)"
	.byt 13,0
anf2	.byte "\x11Startadresse? (J/N)"
	.byt 13,0
bri	.byte "\x11Nicht bereit!\x11"
	.byt 13,0
callret	.byt 13
	.byte "\x98(return)"
	brk
