;:ifpeek(49155)=76thensys49155
;:sys36864
	;.opt oo
	*= $c000
buff	=631
keyz	=$cf00
tmp	=181
scan	=$ff9f
timend	=240	; ausblendzeit in sekunden
pitch	=60
fl	=8
	jmp anfang
	jmp ende
hi	.byte "\x11\x99   **** memo-keys 1.0  installed ****"
	.byt 13
	.byte "\x11  (c) nikolaus heusler,  nh-230990-arr\x11"
	brk
tx1	.byte "click"
tx2	.byte "scrn sv"
tx3	.byte "repeat"
tx4	.byte "switch"
tx5	.byte "expand"
fukey	.byt 133,137,134,138,135,139,136,140
	.byt 1,21,2,22,3,23,4,24
chrl	.byt <704,<705,<706,<832,<833,<834
	.byt <896,<897,<898,<960,<961,<962,<963
chrh	.byt >704,>705,>706,>832,>833,>834
	.byt >896,>897,>898,>960,>961,>962,>963
siseg	.byt %0111111,%0000110,%1011011,%1001111
	.byt %1100110,%1101101,%1111101,%0000111,%1111111
	.byt %1101111
merk	brk
nextf	brk
lastf	brk
verdreh	brk	; mehrmaliger aufruf von key
car	brk	; zeichen
clickf	=keyz+15
scrnf	=keyz+15+16
lastsft	brk
orgcol	brk	; fuer blanking
orgmod	brk
scronoff	brk
scrtime	brk
scrlow	brk
delayhi	brk
delaylo	brk
memx	brk
memy	brk
expand	=keyz+15+32
irr	brk	;flag cbm/ctrl
old198	brk
encore	brk
akt	brk	; nr der editierten fkey
ich	brk	; flag editoranforderung fkey von anderer fkey
letlist	brk	; flag sft/ctrl erlaubt
z1	=*
	.byt %00111000
	.byt %01100000
	.byt %01100000
	.byt %11110000
	.byt %01100000
	.byt %01100000
	.byt %01100000
	.byt %00000000
z2	=*
	.byt %00001000
	.byt %00001100
	.byt %00001110
	.byt %00001111
	.byt %00001110
	.byt %00001100
	.byt %00001000
	.byt %00000000
z3	=*
	.byt %01100000
	.byt %10000000
	.byt %10000000
	.byt %01100000
	.byt %00001100
	.byt %00001010
	.byt %00001100
	.byt %00001010
scrab	.byte "s:"
name	.byte "memkey.data"
anfang	jsr 65409
	sei
	jsr stell
	jsr sprinit
	sta 53280
	sta 53281
	ldx #24
clrsid	sta 54272,x
	dex
	bpl clrsid
	jsr clrkey
	lda #<hi
	ldy #>hi
	jmp $ab1e
stell	php
	sei
	lda #<neukey
	ldy #>neukey
	sta 655
	sty 656
	lda #<neubas
	ldy #>neubas
	sta 768
	sty 769
	lda #<neuirq
	ldy #>neuirq
	sta 788
	sty 789
	lda #<neuenter
	ldy #>neuenter
	sta 770
	sty 771
	plp
	rts
neubas	jsr stell
	lda #0
	sta nextf
	sta verdreh
	sta letlist
	jmp $e38b
neuenter	lda #0
	sta letlist
	jmp $a483
ende	sei
	jsr 65418
	jsr 58451
	lda #$48
	ldy #$eb
	sta 655
	sty 656
	lda #0
	sta 53269
	cli
	rts
setspr	lda #239
	sta 53249
	sta 53251
	sta 53253
	sta 53255
	lda expand
	bne broad
	sta 53248+29
	lda #136
	sta 53248
	lda #160
	sta 53250
	lda #184
	sta 53252
	lda #208
backs	sta 53254
	lda #11
	sta 2040
	ldx #13
	stx 2041
	inx
	stx 2042
	inx
	stx 2043
	rts
broad	lda #15
	sta 53248+29
	lda #88
	sta 53248
	lda #136
	sta 53250
	lda #184
	sta 53252
	lda #232
	bne backs
sprinit	ldx #63
	lda #0
sin	sta 704,x
	sta 832,x
	sta 896,x
	sta 960,x
	dex
	bpl sin
	rts
get	lda 198
	sta old198
	jsr scan
	lda car
	cmp #133
	bcc un
	cmp #137
	bcc aret
un	lda $c6
	bne chars
	sec
	rts
chars	ldy buff
	ldx #0
rueck	lda buff+1,x
	sta buff,x
	inx
	cpx 198
	bcc rueck
	dec 198
	tya
	sec
	rts
aret	pha
	lda old198
	sta 198
	pla
	clc
	rts
getone	jsr get
	lda 203
	cmp #64
	bne getone
geta	jsr get
	beq geta
	rts
clicke2	lda #40
	sta 54273
	lda #0
	sta 54277
	lda #240
	sta 54278
	lda #15
	sta 54296
	ldx #17
	stx 54276
	ldy #13
keydly	jsr $eeb3
	dey
	bne keydly
	dex
	stx 54276
	rts
clicke	lda 203
	cmp #64
	beq cli00
	cmp 197
	bne clicke2
cli00	lda 653
	cmp lastsft
	beq cli0
	bcs clicke2
cli0	rts
hget	lda encore
	beq guud
	ldx #0
	stx encore
	rts
guud	jmp get
saver	lda scronoff
	beq da
	lda orgcol
	sta 53280
	lda orgmod
	sta 53265
da	lda #0
	sta scrtime
	sta scrlow
	sta scronoff
	rts
mompls	sta delayhi
	sta delaylo
mnt	jsr get
	cmp #"\x03"
	beq rous
	dec delaylo
	bne mnt
	dec delayhi
	bne mnt
rous	rts
clrkey	lda #0
	sta verdreh
	tay
ck	sta keyz,y
	iny
	bne ck
	sta nextf
	dey
	sty lastf
	rts
neukey	jsr saver
	lda clickf
	beq nocli
	jsr clicke
	lda 653
	sta lastsft
nocli	ldy 203
	lda (245),y
	sta car
	lda verdreh
	bne jomp
	inc verdreh
	lda #0
	sta irr
	jsr tasten
	jsr stell
	lda irr
	beq fine
	lda #64
	sta 203
fine	lda #0
	sta verdreh
	jmp $eb48
jomp	lda $28d
	jmp $eb64
tasten	lda 212
	bne no
	lda 216
	bne no
	lda 157
	bpl no
	lda car
	cmp #133
	bcc nof
	cmp #137
	bcc func
nof	lda 653
	cmp #6
	bne nopg
	inc irr
	lda #0
	sta encore
	jmp program
nopg	cmp #5
	bne no
	lda letlist
	bne no
	inc letlist
	jmp contlist
func	jsr calcnr
	cpx lastf
	beq no
	stx lastf
setkey	txa
	asl
	asl
	asl
	asl
	tax
	ldy #0
	sty nextf
copyky	lda keyz,x
	beq endky
	sty merk
	ldy #15
suchfk	cmp fukey,y
	beq function
	dey
	bpl suchfk
	ldy merk
	sta buff,y
	iny
	inx
	cpy #11
	bcc copyky
endky	sty 198
no	rts
function	iny
	sty nextf
	ldy merk
	bpl endky
program	lda #15
	sta 53269
	jsr setspr
	jsr headon
	ldx #10
	jsr cursx
	lda #0
	sta ich
welche	jsr hget
	cmp #"\x03"
	bne weiter
abort	lda #0
	sta 53269
	rts
weiter	cmp #"r"
	beq qrep
	cmp #"s"
	beq qscrn
	cmp #"c"
	beq qclick
	cmp #"l"
	beq qload
	cmp #"o"
	beq qsave
	cmp #"w"
	beq qswitch
	cmp #"e"
	beq qexpd
	cmp #133
	bcc welche
	cmp #141
	bcs welche
	jsr calcnr
	txa
	jsr heada
	jmp enter
qrep	jmp repeat
qscrn	jmp screen
qclick	jmp click
qload	jmp load
qsave	jmp save
qswitch	jmp switch
qexpd	jmp expd
calcnr	sec
	sbc #133
	and #3
	asl
	tax
	lda 653
	and #7
	tay
	and #1
	beq ynosft
	inx
	bne yovers
ynosft	tya
	and #2
	bne ytaxe
	tya
	and #4
	beq yovers
	inx
ytaxe	txa
	ora #8
	tax
yovers	rts
repeat	jsr sprinit
	ldx #5
repa	lda tx3,x
	jsr fontax
	dex
	bpl repa
	jsr get10
	bcs qaus
	sta 650
	jmp onoff
switch	jsr sprinit
	ldx #5
swia	lda tx4,x
	jsr fontax
	dex
	bpl swia
	jsr get10
	bcs qaus
	eor #128
	sta 657
	eor #128
	jmp onoff
click	jsr sprinit
	ldx #4
clia	lda tx1,x
	jsr fontax
	dex
	bpl clia
	jsr get10
	bcs raus
	sta clickf
	sta 54296
	jmp onoff
expd	jsr sprinit
	ldx #5
exia	lda tx5,x
	jsr fontax
	dex
	bpl exia
	jsr get10
	bcs qaus
	sta expand
	jmp onoff
screen	jsr sprinit
	ldx #7
scra	lda tx2,x
	jsr fontax
	dex
	bpl scra
	jsr get10
qaus	bcs raus
	sta scrnf
onoff	pha
	lda #"o"
	ldx #9
	jsr fontax
	inx
	pla
	bne on
	lda #"f"
	jsr fontax
	inx
	lda #"f"
	.byt $2c
on	lda #"n"
	jsr fontax
	lda #55
	jsr mompls
raus	jmp abort
get10	jsr get
	cmp #"\x03"
	beq aus
	cmp #"1"
	beq frei
	cmp #"0"
	bne get10
frei	and #1
	lsr
	ror
aus	rts
enter	sta akt
	asl
	asl
	asl
	asl
	jsr showtxt
	jsr pruef
	bcs darf
	lda ich
	bne schiss
	jmp program
schiss	jmp reklam
darf	jsr headon
	lda akt
	jsr heada
	ldx #0
	lda akt
	asl
	asl
	asl
	asl
	tay
inloop	sty memy
	jsr cursx
	ldy memy
getin	sty memy
	stx memx
	jsr hgetone
	ldx memx
	ldy memy
	bcc funt
	cmp #"\x03"
	beq stopp
	cmp #20
	beq delete
	cpx #10
	bcs getin
	sta keyz,y
	iny
	inx
	inx
	jsr fontax
	dex
	bne inloop
stopp	lda #0
	sta keyz,y
	jmp abort
delete	txa
	beq getin
	dey
	lda #32
	inx
	jsr fontax
	dex
	dex
	bpl inloop
funt	cpx #0
	beq getin
dof	jsr calcnr
	txa
	pha
	lda fukey,x
	ldy memy
	sta keyz,y
	lda #0
	sta keyz+1,y
	pla
	pha
	jsr headon
	pla
	jsr heada
	ldx #1
	stx ich
	jmp enter
reklam	jsr hget
	cmp #"\x03"
	bne dof
	ldy memy
	jmp stopp
showtxt	pha
	ldx #2
	tay
show1	lda keyz,y
	beq trin
	jsr fontax
	iny
	inx
	cpx #12
	bcc show1
trin	ldx #10
	jsr cursx
	pla
	tay
	rts
contlist	cli
	dec $60
	ldy #-1
	lda ($5f),y
	inc $60
	tay
	beq denn
ohe	lda $2b
	sta $5f
	lda $2c
	sta $60
denn	lda #1
	sta $cd
curwat	lda $cf
	bne curwat
	sta verdreh
	inc $cc
	jmp $a6c3
hgetone	lda encore
	beq uki
	ldx #0
	stx encore
	cmp #133
	bcc nofu
	cmp #141
	bcs nofu
	clc
	rts
nofu	sec
	rts
uki	jmp getone
pruef	jsr geta
	sta encore
	bcc achtung
	cmp #"\x03"
	beq huch
	sec
	rts
achtung	jsr calcnr
	cpx akt
	beq pruef
huch	clc
	rts
load	jsr sprinit
	ldx #6
loadout	lda $f107,x
	and #127
	jsr fontax
	dex
	bpl loadout
	lda #30
	jsr mompls
	jsr setpar
	lda #0
	tax
	ldy #>keyz
	jsr $ffd5
dende	lda #128
	sta 157
	jmp abort
save	jsr sprinit
	ldx #5
saveout	lda $f10f,x
	jsr fontax
	dex
	bpl saveout
	lda #30
	jsr mompls
	lda #123
	jsr $ffc3
	ldx #<scrab
	ldy #>scrab
	lda #13
	jsr $ffbd
	lda #15
	tay
	ldx #fl
	jsr $ffba
	jsr $ffc0
	lda #123
	jsr $ffc3
	jsr setpar
	ldx #252
	sty tmp
	ldy #>keyz
	sty tmp+1
	lda #tmp
	jsr $ffd8
	jmp dende
setpar	lda 0
	ora #64
	sta 0
	lda #11
	ldx #<name
	ldy #>name
	jsr $ffbd
	ldx #fl
	ldy #0
	sty 157
	sty 53269
	jmp $ffba
neuirq	jsr irq
	jsr stell
	jmp $ea31
irq	lda 198
	bne action
	lda 203
	cmp #64
	bne dino
	sta lastf
dino	ldx nextf
	beq action
	dex
	jsr setkey
action	lda 0
	ora #128
	sta 0
	lda 646
	sta 53287
	sta 53288
	sta 53289
	sta 53290
	lda 653
	sta lastsft
irqon	lda scrnf
	beq nonsave
	lda scronoff
	bne nonsave
	inc scrlow
	lda scrlow
	cmp #pitch
	bcc nonsave
	lda #0
	sta scrlow
	inc scrtime
	lda scrtime
	cmp #timend
	bcc nonsave
	lda 53280
	sta orgcol
	lda 53265
	sta orgmod
	ldx #0
	stx 53280
	stx 53265
	stx 54296
	inc scronoff
nonsave	rts
headon	jsr sprinit
	ldy #0
	inx
dh	lda z1,y
	sta 704,x
	lda z2,y
	sta 705,x
	inx
	inx
	inx
	iny
	cpy #8
	bcc dh
	rts
heada	pha
	and #15
	tax
	inx
	txa
	cmp #10
	bcc kl10
	sbc #10
	pha
	ldy #4
	ldx #6
ohr	lda 707,x
	ora #2
	sta 707,x
	inx
	inx
	inx
	dey
	bpl ohr
	pla
	tax
kl10	lda siseg,x
	tay
	and #64
	beq off7
	lda 720
	ora #224
	sta 720
off7	tya
	and #1
	beq off1
	lda 714
	ora #224
	sta 714
off1	tya
	and #8
	beq off4
	lda 726
	ora #224
	sta 726
off4	tya
	and #32
	beq off6
	sty merk
	ldy #2
	ldx #10
on6	lda 704,x
	ora #128
	sta 704,x
	inx
	inx
	inx
	dey
	bpl on6
	ldy merk
off6	tya
	and #16
	beq off5
	sty merk
	ldy #2
	ldx #16
on5	lda 704,x
	ora #128
	sta 704,x
	inx
	inx
	inx
	dey
	bpl on5
	ldy merk
off5	tya
	and #4
	beq off3
	sty merk
	ldy #2
	ldx #16
on3	lda 704,x
	ora #32
	sta 704,x
	inx
	inx
	inx
	dey
	bpl on3
	ldy merk
off3	tya
	and #2
	beq off2
	ldy #2
	ldx #10
on2	lda 704,x
	ora #32
	sta 704,x
	inx
	inx
	inx
	dey
	bpl on2
off2	pla
	rts
cursx	txa
	pha
	ldx #9
cul1	lda chrl+2,x
	clc
	adc #30
	sta tmp
	lda chrh+2,x
	sta tmp+1
	ldy #0
	lda #24
	sta (tmp),y
	dex
	bpl cul1
	pla
	tax
	lda chrl+2,x
	clc
	adc #30
	sta tmp
	lda chrh+2,x
	sta tmp+1
	ldy #0
	lda #255
	sta (tmp),y
	rts
fontax	stx merk
	cmp #13
	beq thirt
	cmp #128
	bcs gr128
	cmp #32
	bcc kl32
	cmp #96
	bcc kl96
	and #$df
	.byt $2c
kl96	and #$3f
	.byt $2c
kl32	ora #128
	jmp output
thirt	lda #<z3
	sta tmp
	lda #>z3
	sta tmp+1
	bne draw
gr128	and #127
	cmp #127
	bne nopi
	lda #$5e
nopi	cmp #32
	bcc kl160
	ora #64
	.byt $2c
kl160	ora #192
output	ldx #0
	stx tmp+1
	asl
	rol tmp+1
	asl
	rol tmp+1
	asl
	rol tmp+1
	sta tmp
	lda 53272
	and #14
	cmp #4
	beq rom4
	cmp #6
	beq rom6
	asl
	asl
	.byt $2c
rom4	lda #208
	.byt $2c
rom6	lda #216
	clc
	adc tmp+1
	sta tmp+1
draw	ldx merk
	lda chrl,x
	sta here+1
	lda chrh,x
	sta here+2
	lda 1
	pha
	lda #51
	sta 1
	tya
	pha
	ldy #7
	ldx #21
kopier	lda (tmp),y
here	sta $ffff,x
	dex
	dex
	dex
	dey
	bpl kopier
	pla
	tay
	pla
	sta 1
	ldx merk
	rts
