;:poke56,20000/256:clr
;:sys36864
	;.opt oo
	*= $c000
tmp	=2
kot	=$8000
tmp2	=4
nam1	=704
nam2	=nam1+20
err	=820
fn	=2
mem	=$a000
endmem	=$c000
to	=247
from	=249
	jsr kotinit
	jmp start
hex	.byte "0123456789abcdef"
	.byte "\x9f\x9f\x9e\x03"
hi	.byte "\x93\x97\x8e unicon  ver.1  nikolaus heusler  05.92"
	.byte "\x1a\x19(\xc0"
	.byte "\x11\x19(\xc0"
	.byte "\x19\x12\x11"
	.byte "\x19(\xc0\x13\x11\x11\x1d\x03"
men1	.byte "main menu"
	.byte "\x1a\x11\x11\x11  - 1 -   convert file"
	.byte "\x1a\x11  - 2 -   edit codetable"
	.byte "\x1a\x11  - 3 -   load codetable"
	.byte "\x1a\x11  - 4 -   save codetable"
	.byte "\x1a\x11  - 5 -   directory"
	.byte "\x1a\x11  - 6 -   quit\x1a"
	.byte "\x19\x06\x11 copyright is most strenuously reserved"
	.byte "\x19\x08\x1dour lawyers are watching!!\x03"
mp1	.byte "edit codetable"
	.byte "\x19\x13"
	.byt 13
	.byte "\x11 enter \x12 f1 \x92 for help\x03"
mp4	.byte "save codetable"
mp4a	.byte "\x1a\x1a enter filename:\x1a\x1a uc-\x03"
mp5	.byte "load codetable\x03"
mp2	.byte "convert file\x1a\x1a enter filenames:\x11\x03"
ty1	.byte "\x1a\x1a source: \x03"
ty2	.byte "\x1a\x1a\x1a target: \x03"
ty3	.byte "\x1a\x1a \x12 p \x92 prg   \x12 s \x92 seq   \x12"
	.byte " u \x92 usr   \x12 _ \x92 quit\x03"
ty4	.byte "\x1a\x91\x91\x91\x19\x1f\x1dtyp: \x03"
ty5	.byte "\x1a\x1a\x1a skip loading addr. ? [y/n/_]\x19\x09\x9d\x03"
di1	.byte "\x13\x19\x17\x11 insert source disk\x19\x0b\x9d"
di2	.byte "\x03arget\x03"
hit	.byte "\x1a any key to continue\x03"
fut	.byte "\x13\x19\x17\x11 out of memory\x03"
mp3	.byte "directory\x03"
disp	.byte "\x13\x19\x17\x11 source\x1a target\x03"
disp2	.byte "\x13\x19\x17\x11 saving\x03"
ht	.byte "\x13\x19\x05\x11 \x12return\x92  when done"
	.byte "\x1a \x120\x92 to \x12f\x92  enter value"
	.byte "\x1a \x12-\x92\x19\x07 delete value"
	.byte "\x1a \x12.\x92\x19\x07 utilize previous line"
	.byte "\x1a \x12ctrl 4\x92  jump to $40"
	.byte "\x1a \x12ctrl 8\x92  jump to $80"
	.byte "\x1a \x12ctrl c\x92  jump to $c0"
	.byte "\x1a \x12crsr\x92\x19\x04 move cursor"
	.byte "\x1a \x12home\x92\x19\x04 top of screen/table"
	.byte "\x1a \x12clr\x92\x19\x05 init table\x03"
oben	brk
line	brk
curlin	brk
brei	brk
spal	brk
xmk	brk
len1	brk
len2	brk
skip	brk
len	brk
speed	brk
hexout	stx xmk
	pha
	lsr
	lsr
	lsr
	lsr
	jsr hex1
	pla
hex1	and #15
	tax
	lda hex,x
	ldx xmk
ascout	cmp #128
	bcs gr128
	cmp #32
	bcc kl32
	cmp #96
	bcc kl96
	and #$df
	.byt $2c
kl96	and #$3f
	.byt $2c
kl32	ora #$80
bsc	sty tmp
	ldy 211
	sta ($d1),y
	lda 646
	sta ($f3),y
	inc 211
	ldy tmp
	rts
gr128	and #$7f
	cmp #$7f
	bne nopi
	lda #$5e
nopi	cmp #$20
	ora #$40
	bcs bsc
	bcc kl32
mask	lda #<hi
	ldy #>hi
strout	sta tmp
	sty tmp+1
sto	ldy #0
	lda (tmp),y
	bne ausgebe
done	rts
ausgebe	cmp #3
	beq done
	cmp #"\x19"
	beq repeat
	cmp #"\x1a"
	bne aus
	lda #13
aus	jsr $ffd2
	inc tmp
	bne sto
	inc tmp+1
	bne sto
repeat	iny
	lda (tmp),y
	tax
	iny
	lda (tmp),y
rep	jsr $ffd2
	dex
	bne rep
	clc
	lda #3
	adc tmp
	sta tmp
	bcc sto
	inc tmp+1
	bne sto
kotaus	lda #5
	sta 214
	jsr 58732
	ldy oben
	lda #16
	sta line
	lda #0
	sta tmp2
ko1	lda #1
	sta 211
	tya
	pha
	jsr hexout
	pla
	inc 211
	jsr ascout
	inc 211
	lda #93
	jsr bsc
	inc 211
	lda kot,y
	sta brei
	ldx #0
	lda #29
	sta tmp+1
ko2	cpx brei
	bcs ko3
	txa
	sec
	adc #>kot
	sta tmp2+1
	lda (tmp2),y
	jsr hexout
	lda 211
	pha
	lda tmp+1
	inc tmp+1
	sta 211
	lda (tmp2),y
	jsr ascout
	pla
	sta 211
	inx
	bne ko2
ko3	ldx 211
	cpx #28
	bcs ko3a
	lda #"-"
	jsr bsc
	jmp ko3
ko3a	sty tmp
	lda brei
	clc
	adc #29
	tay
	lda #32
ko3c	cpy #39
	bcs ko3b
	sta ($d1),y
	iny
	bne ko3c
ko3b	ldy tmp
	jsr $aad7
	iny
	dec line
	bne ko1
	rts
kotinit	ldx #0
ki	lda #1
	sta kot,x
	txa
	sta kot+256,x
	dex
	bne ki
	rts
addr	lda #>kot
	sta tmp2+1
	ldy #0
	lda oben
	clc
	adc curlin
	sta tmp2
	rts
inform	sta tmp
	sty tmp+1
	stx tmp2
	lda 211
	pha
	lda #"\x91"
	jsr $ffd2
	lda #"\xa4"
lio	jsr $ffd2
	dex
	bne lio
	inc 214
	jsr $aad7
	pla
	pha
	sta 211
	ldx tmp2
	lda #"\xa3"
liu	jsr $ffd2
	dex
	bne liu
	pla
	sta 211
	dec 214
	jsr 58732
	ldy #0
	pha
infm	pla
infm1	lda #0
	sta 204
	sty tmp2+1
waka	jsr 65508
	tax
	beq waka
	ldx #2
	stx 205
wacu	ldx 207
	bne wacu
	inc 204
	ldy tmp2+1
	cmp #13
	beq retn
	cmp #20
	beq del
	pha
	and #127
	cmp #32
	bcc infm
	cpy tmp2
	bcs infm
	pla
	sta (tmp),y
	jsr $ffd2
	iny
	bne infm1
del	tya
	beq infm1
	dey
	lda #20
	jsr $ffd2
	bcc infm1
retn	rts
gettyp	jsr 65508
	cmp #"p"
	beq typ
	cmp #"s"
	beq typ
	cmp #"u"
	beq typ
	cmp #"_"
	bne gettyp
typ	cmp #"_"
	rts
dos	ldx #15
	jsr $ffc6
	ldx #0
errin	jsr 65508
	cmp #13
	beq eoe
	sta err,x
	inx
	bne errin
eoe	lda #0
	sta err,x
	jsr $ffcc
	lda err
	cmp #"0"
	beq gut
stoer	jsr clrun
	dex
	stx 214
	lda #1
	sta 211
	jsr 58732
	lda #<err
	ldy #>err
	jsr strout
key	lda #23
	sta 214
	lda #<hit
	ldy #>hit
	jsr strout
	lda #0
	sta 198
kw	cmp 198
	beq kw
	sta 198
	ldx #24
	.byt $2c
loesch	ldx #4
lo1	jsr 59903
	inx
	cpx #22
	bcc lo1
gut	rts
signal	pha
	ldx #0
si1	lda 1953,x
	sta 1952,x
	inx
	cpx #31
	bcc si1
	pla
	pha
	jsr wandel
	sta 1952,x
	pla
	rts
inmem	pha
	ldy #0
	sta (to),y
	inc to
	bne in1
	inc to+1
in1	lda 1993,y
	sta 1992,y
	iny
	cpy #31
	bcc in1
	pla
	jsr wandel
	sta 1992,y
	lda to+1
	cmp #>endmem
	rts
wandel	cmp #128
	bcs gr1282
	cmp #32
	bcc kl322
	cmp #96
	bcc kl962
	and #$df
	.byt $2c
kl962	and #$3f
	.byt $2c
kl322	ora #$80
bsc2	rts
gr1282	and #$7f
	cmp #$7f
	bne nopi2
	lda #$5e
nopi2	cmp #$20
	ora #$40
	bcs bsc2
	bcc kl322
colram	ldx #4
	lda #216
	sta tmp2+1
	ldy #0
	sty tmp2
	lda #11
cra	sta (tmp2),y
	iny
	bne cra
	inc tmp2+1
	dex
	bne cra
	rts
bre	ldx speed
	beq schnell
	ldy #0
pau	dey
	bne pau
	dex
	bne pau
schnell	lda 653
	bne bremse
	lda speed
	beq frei
	dec speed
frei	rts
bremse	lda speed
	cmp #255
	beq frei
	inc speed
	rts
clrun	ldx #23
	jsr 59903
	ldx #24
	jmp 59903
start	jsr 65409
	jsr $ffe7
	lda #15
	sta $d020
	sta $d021
	ldx #8
	lda #15
	tay
	jsr $ffba
	lda #0
	sta $b7
	sta 157
	jsr $ffc0
menu	jsr mask
	lda #<men1
	ldy #>men1
	jsr strout
	lda #0
	sta 198
getm1	jsr 65508
	cmp #"1"
	beq fk1
	cmp #"2"
	beq fk2
	cmp #"3"
	beq fk3
	cmp #"5"
	beq fk5
	cmp #"4"
	beq fk4
	cmp #"6"
	bne getm1
	jmp 64738
fk1	jsr convert
	jmp menu
fk2	jsr edit
	jmp menu
fk3	jsr loadct
	jmp menu
fk4	jsr savect
	jmp menu
fk5	jsr mask
	lda #<mp3
	ldy #>mp3
	jsr strout
dirc	jsr doserr
	lda #"$"
	sta tmp
	ldx #tmp
	ldy #0
	lda #1
	jsr $ffbd
	ldx #8
	lda #fn
	jsr $ffba
	jsr $ffc0
	jsr dos
	bne abdir
	jsr upper
	ldy #3
l1	sty tmp
	ldx #fn
	jsr $ffc6
	jsr $ffa5
	sta tmp2
	ldy 144
	bne eod
	jsr $ffa5
	ldy 144
	bne eod
	ldy tmp
	dey
	bne l1
	ldx tmp2
	inc 211
	jsr $bdcd
	jsr $ab3f
l3	jsr $ffa5
	ldx 144
	bne eod
	tax
	beq l2
	jsr $ffd2
	bcc l3
l2	jsr $aad7
	dec oben
	bne sub
	jsr key
	jsr upper
sub	ldy #2
	bne l1
eod	jsr key
abdir	jsr doserr
	jmp menu
upper	lda #16
	sta oben
	jsr loesch
	lda #4
	sta 214
	jmp $aad7
edit	jsr mask
	lda #<mp1
	ldy #>mp1
	jsr strout
	lda #0
	sta oben
	sta curlin
	jsr colram
ed1	jsr kotaus
ed1a	lda #0
	sta spal
ed1b	lda curlin
	clc
	adc #5
	sta 214
	jsr 58732
getm2	lda #8
	clc
	adc spal
	sta 211
	lda #0
	sta 204
getm2x	jsr 65508
	tax
	beq getm2x
	ldx #1
	stx 205
getm2a	ldx 207
	bne getm2a
	inc 204
	cmp #"\x11"
	beq m1
	cmp #"\x91"
	beq m2
	cmp #"."
	beq m9
	cmp #"\x85"
	beq m10
	cmp #"\x13"
	beq m3
	cmp #13
	beq m4
	cmp #"\x1d"
	beq m6
	cmp #"\x9d"
	beq m7
	cmp #"-"
	beq m8
	cmp #"\x93"
	beq m11
	ldx #19
m	cmp hex,x
	beq m5
	dex
	bpl m
	bmi getm2
m8	jmp m8b
m9	jmp m9b
m10	jmp help
m11	jsr kotinit
	jmp edit
m1	lda curlin
	cmp #15
	bcs m1a
	inc curlin
	bne ed1a
m1a	lda oben
	cmp #255-15
	bcs qed1a
	inc oben
	jmp ed1
m2	lda curlin
	beq m2a
	dec curlin
	jmp ed1a
qed1a	jmp ed1a
m2a	lda oben
	beq qgetm2
	dec oben
qed1	jmp ed1
m3	lda #0
	cmp curlin
	beq m3a
	sta curlin
	bne qed1
m3a	sta oben
	beq qed1
m4	rts
m6	ldy 211
	lda ($d1),y
	cmp #"-"
	beq qgetm2
	cmp #32
	beq qgetm2
	inc spal
	bne qgetm2
m7	lda spal
	beq qgetm2
	dec spal
qgetm2	jmp getm2
m5	cpx #16
	bcs m52
	stx tmp
	jsr addr
	lda spal
	lsr
	pha
	php
	sec
	adc #>kot
	sta tmp2+1
	lda (tmp2),y
	plp
	bcc high
	and #$f0
	jmp low
high	and #15
	asl tmp
	asl tmp
	asl tmp
	asl tmp
low	ora tmp
	sta (tmp2),y
	lda #>kot
	sta tmp2+1
	pla
	clc
	adc #1
	cmp (tmp2),y
	bcc nocg
	sta (tmp2),y
nocg	lda spal
	cmp #19
	bcs nocg1
	inc spal
	bne nocg2
nocg1	lda #18
nocg3	sta spal
nocg2	jsr kotaus
	jmp ed1b
m8b	jsr addr
	lda spal
	lsr
	sta (tmp2),y
	asl
	jmp nocg3
m9b	jsr addr
	beq qgetm2
	dec tmp2
	lda (tmp2),y
	iny
	sta (tmp2),y
	tax
count	dex
	bmi m9c
	inc tmp2+1
	dey
	lda (tmp2),y
	clc
	adc #1
	iny
	sta (tmp2),y
	bne count
m9c	jsr kotaus
	jmp m1
m52	txa
	and #15
	asl
	asl
	asl
	asl
	asl
	asl
	sta oben
	lda #0
	sta curlin
	jmp ed1
help	jsr loesch
	lda #<ht
	ldy #>ht
	jsr strout
	jsr key
	jsr loesch
	jsr colram
	jmp ed1
convert	jsr mask
	lda #<mp2
	ldy #>mp2
	jsr strout
	lda #<ty1
	ldy #>ty1
	jsr strout
	lda #<nam1
	ldy #>nam1
	ldx #16
	jsr inform
	tya
	bne recon
nocon	rts
recon	sty len1
	lda #<ty3
	ldy #>ty3
	jsr strout
	jsr gettyp
	beq nocon
	pha
	ldx #10
	jsr 59903
	lda #<ty4
	ldy #>ty4
	jsr strout
	pla
	ldy len1
	sta nam1+1,y
	jsr $ffd2
	lda #"r"
	sta nam1+3,y
	lda #<ty2
	ldy #>ty2
	jsr strout
	lda #<nam2
	ldy #>nam2
	ldx #16
	jsr inform
	tya
	beq nocon
	sty len2
	lda #<ty3
	ldy #>ty3
	jsr strout
	jsr gettyp
	beq nocon
	pha
	ldx #13
	jsr 59903
	lda #<ty4
	ldy #>ty4
	jsr strout
	pla
	ldy len2
	sta nam2+1,y
	jsr $ffd2
	ldx len1
	lda #","
	sta nam2,y
	sta nam2+2,y
	sta nam1,x
	sta nam1+2,x
	lda #"w"
	sta nam2+3,y
	lda #<ty5
	ldy #>ty5
	jsr strout
getjn	jsr 65508
	tax
	cmp #"y"
	beq yes
	cmp #"_"
	bne nopfe
	rts
nopfe	cmp #"n"
	bne getjn
	lda #0
yes	sta skip
	txa
	jsr $ffd2
	ldx #8
lsch	jsr $ab3f
	dex
	bne lsch
	lda #0
	sta speed
	sta di2
	lda #<di1
	ldy #>di1
	jsr strout
	jsr key
	jsr doserr
	ldx #8
	lda #fn
	tay
	jsr $ffba
	lda len1
	clc
	adc #4
	ldx #<nam1
	ldy #>nam1
	jsr $ffbd
	jsr $ffc0
	jsr dos
	beq okdos
doserr	jsr $ffcc
	lda #fn
	jmp $ffc3
okdos	lda #<disp
	ldy #>disp
	jsr strout
	ldx #fn
	jsr $ffc6
	jsr colram
	lda #<mem
	ldy #>mem
	sta to
	sty to+1
	lda skip
	beq noskip
	jsr 65508
	jsr signal
	jsr inmem
	ldx 144
	bne endfile
	jsr 65508
	jsr signal
	jsr inmem
	ldx 144
	bne endfile
noskip	jsr bre
	jsr 65508
	jsr signal
	tax
	lda kot,x
	sta len
	lda #>kot+256
	sta tmp2+1
	stx tmp2
kotloop	dec len
	bmi coded
	ldy #0
	lda (tmp2),y
	jsr inmem
	bcs full
	inc tmp2+1
	bne kotloop
full	jsr clrun
	lda #<fut
	ldy #>fut
	jsr strout
	jsr key
	jmp endfile
qdoserr	jmp doserr
coded	ldx 144
	beq noskip
endfile	jsr doserr
	jsr dos
	bne qdoserr
	jsr clrun
	lda #"t"
	sta di2
	lda #<di1
	ldy #>di1
	jsr strout
	jsr key
	jsr doserr
	ldx #8
	lda #fn
	tay
	jsr $ffba
	lda len2
	clc
	adc #4
	ldx #<nam2
	ldy #>nam2
	jsr $ffbd
	jsr $ffc0
	jsr dos
	bne qdoserr
	jsr clrun
	lda #<disp2
	ldy #>disp2
	jsr strout
	ldx #fn
	jsr $ffc9
	jsr colram
	lda #<mem
	ldy #>mem
	sta from
	sty from+1
save	sec
	lda from
	sbc to
	lda from+1
	sbc to+1
	bcs alles
	ldy #0
	sei
	lda #54
	sta 1
	lda (from),y
	inc 1
	cli
	jsr $ffd2
	jsr signal
	inc from
	bne save
	inc from+1
	bne save
alles	jsr doserr
	jmp dos
savect	jsr mask
	lda #<mp4
	ldy #>mp4
	jsr strout
	jsr codname
	beq abort
	ldx #0
	stx tmp
	lda #>kot
	sta tmp+1
	
	txa
suchl	cmp kot,x
	bcc act
	bne rec
act	lda kot,x
	stx tmp2
rec	inx
	bne suchl
	clc
	adc #>kot
	tay
	ldx tmp2
	inx
	bne nocy
	iny
nocy	lda #tmp
	jsr $ffd8
	jmp dos
codname	lda #<nam2
	ldy #>nam2
	ldx #13
	jsr inform
	tya
	beq abort
	clc
	adc #3
	ldx #<nam2-3
	ldy #>nam2-3
	jsr $ffbd
	ldx #8
	stx $ba
	lda #"u"
	sta nam2-3
	lda #"c"
	sta nam2-2
	lda #"-"
	sta nam2-1
abort	rts
loadct	jsr mask
	lda #<mp5
	ldy #>mp5
	jsr strout
	lda #<mp4a
	ldy #>mp4a
	jsr strout
	jsr codname
	beq abort
	lda #0
	sta $b9
	tax
	ldy #>kot
	jsr $ffd5
	jmp dos
