;:sys36864
	;.opt oo
frmevl	=$ad9e
chrgot	=$79
adr	=$22
ilquan	=$b248
chkcom	=$aefd
frestr	=$b6a3
strich	=1904
color	=646
video	=$288
irq	=$314
pnt	=$fb
irqvec	=$ea31
farbe	=56176
zehntel	=$dc08
sekunde	=zehntel+1
minute	=sekunde+1
stunde	=minute +1
trigger	=stunde+3
set	=trigger+1
konf	=1
memkonf	=$fdd6
z22a	=$e55f
z23a	=$e508
z23b	=$e6d0
z23c	=$e882
z22b	=$e904
z23d	=$e8c5
z22c	=$e970
z23e	=$e98e
z21a	=$e9aa
mem	=$f7
ramtas	=$fd67
top	=$33
bot	=$31
prg	=157
line	=$39
switch	=1023
errvec	=$300
olderr	=$e38b
zeile	=214
spalte	=211
data	=$3f
clrscr	=$e544
quot	=212
chr	=122
fnadr	=$bb
fnlen	=$b7
shift	=$28d
memirq1	=$fd30
memirq2	=$fd9f
brklin	=$3b
key	=203
	*= $c800
	jmp i
goirq	lda switch
	beq alt
	jsr neuirq
alt	lda key
	cmp lastkey
	beq nof1
	sta lastkey
	cmp #4
	bne nof1
	lda switch
	eor #255
	sta switch
nof1	jmp irqvec
prot	txa
	bmi ready
	stx old
ready	jmp olderr
i	lda trigger
	ora #$80
	sta trigger
	lda set
	and #$7f
	sta set
	jsr chrgot
	beq chgirq
	jsr chkcom
	jsr frmevl
	jsr frestr
	cmp #6
	beq lenok
ill	jmp ilquan
lastkey	.byt 0
tmp	.byt 0
ziffer	.byt!0
liste	.word 1,10,100,1000,10000
old	.byt 0
count	.byt 0
lenok	ldy #0
	lda (adr),y
	sec
	sbc #"0"
	cmp #3
	bcs ill
	asl
	asl
	asl
	asl
	sta tmp
	iny
	lda (adr),y
	sec
	sbc #"0"
	cmp #10
	bcs ill
	ora tmp
	bne nonull
	lda #$92
	bne setstd
nonull	cmp #$24
	bcs ill
	cmp #$13
	bcc setstd
	sec
	sed
	sbc #$12
	cld
	ora #$80
setstd	sta stunde
	jsr get59
	sta minute
	jsr get59
	sta sekunde
	lda #1
	sta zehntel
	sta count
chgirq	lda #<prot
	ldy #>prot
	sta errvec
	sty errvec+1
	lda #0
	sta old
	sei
	lda #<goirq
	sta irq
	lda #255
	sta switch
	lda #>goirq
	sta irq+1
	cli
	jmp system
get59	iny
	lda (adr),y
	sec
	sbc #"0"
	cmp #6
	bcs ill2
	asl
	asl
	asl
	asl
	sta tmp
	iny
	lda (adr),y
	sec
	sbc #"0"
	cmp #10
	bcs ill2
	ora tmp
	rts
ill2	jmp ilquan
neuirq	lda pnt
	pha
	lda pnt+1
	pha
	lda mem
	pha
	lda mem+1
	pha
	jsr faerb
	jsr time
	jsr dataline
	jsr ort
	jsr flag
	jsr fehler
	jsr cursor
	jsr char
	dec count
	bne nofir
	lda #30
	sta count
	jsr po1
	jsr filename
	jsr free
	jsr keys
	jsr break
nofir	pla
	sta mem+1
	pla
	sta mem
	pla
	sta pnt+1
	pla
	sta pnt
	rts
po1	lda #152
	.byt $2c
po2	lda #192
	sta pnt
pointer	lda video
	clc
	adc #3
	sta pnt+1
	rts
time	jsr po2
	ldy #0
	lda stunde
	cmp #$12
	beq nulluhr
	cmp #$80
	bcc stdout
	and #$7f
	cmp #$12
	beq stdout
	sed
	clc
	adc #$12
	cld
	bne stdout
nulluhr	lda #0
stdout	jsr print
	lda minute
	jsr print
	lda sekunde
	jsr print
	lda zehntel
	ora #"0"
	jsr print1
	rts
print	pha
	and #$f0
	lsr
	lsr
	lsr
	lsr
	clc
	adc #"0"
	jsr print1
	pla
	and #$f
	clc
	adc #"0"
	jsr print1
	lda #":"
print1	sta (pnt),y
	iny
	rts
numout	stx mem
	sta mem+1
	ldx #8
nxt	lda #"0"
	sta ziffer
vergl	lda mem+1
	cmp liste+1,x
	bcc ausg
	bne abz
	lda mem
	cmp liste,x
	bcc ausg
abz	sec
	lda mem
	sbc liste,x
	sta mem
	lda mem+1
	sbc liste+1,x
	sta mem+1
	inc ziffer
	bne vergl
ausg	lda ziffer
	sta (pnt),y
	iny
	dex
	dex
	bpl nxt
	rts
free	iny
	lda top
	sec
	sbc bot
	tax
	lda top+1
	sbc bot+1
	jmp numout
ort	iny
	ldx line
	lda line+1
	jmp numout
flag	lda prg
	and #128
	beq prog
	lda #"\x04"
	.byt $2c
prog	lda #"\x10}"
	iny
	jsr print1
	lda quot
	beq norm
	lda #"\x11"
	.byt $2c
norm	lda #"\x0e"
	jmp print1
fehler	lda old
zwei	sta mem
	lda #0
	sta mem+1
	iny
	ldx #2
	jmp nxt
cursor	lda zeile
	jsr zwei
	lda spalte
	jmp zwei
system	lda #55
	sta konf
	jsr clrscr
	lda #160
	jsr put
	lda #224
	jsr put
	jsr better
	lda #53
	sta konf
	sta memkonf
	rts
put	sta adr+1
	ldy #0
	sty adr
	ldx #32
ad	lda (adr),y
	sta (adr),y
	iny
	bne ad
	inc adr+1
	dex
	bne ad
	rts
better	ldx #20
	stx z21a
	inx
	stx z22a
	stx z22b
	stx z22c
	inx
	stx z23a
	stx z23b
	stx z23c
	stx z23d
	stx z23e
	lda #160
	sta ramtas
	sta ramtas+1
	lda #162
	sta ramtas+2
	lda #0
	sta ramtas+3
	lda #76
	sta ramtas+4
	lda #$8d
	sta ramtas+5
	lda #$fd
	sta ramtas+6
	lda irq
	ldy irq+1
	sta memirq1
	sta memirq2
	sty memirq1+1
	sta memirq2+1
	rts
faerb	ldy #119
	lda color
fil	sta farbe,y
	dey
	bpl fil
	ldy #39
	lda #100
st	sta strich,y
	dey
	bpl st
	rts
dataline	lda data+1
	ldx data
	iny
	jmp numout
char	iny
	ldx chr
	lda chr+1
	jmp numout
filename	ldy fnlen
k16	cpy #17
	bcc laenge
	dey
	bne k16
laenge	sty mem
fnget	dey
	bmi end
	lda (fnadr),y
	bpl unt128
	and #127
	cmp #127
	bne nopi
	lda #$5e
nopi	cmp #32
	bcc steu
	jmp e691
steu	ora #$40
	jmp e697
unt128	cmp #32
	bcc e697
	cmp #$60
	bcc e73d
	and #$df
	bne e73f
e73d	and #$3f
e73f	jmp e693
e691	ora #$40
e693	jmp e699
e697	ora #$80
e699	sta (pnt),y
	jmp fnget
end	lda #" "
	ldy mem
fill	cpy #17
	beq yet
	jsr print1
	jmp fill
yet	dey
	rts
keys	lda shift
	iny
	and #1
	beq nosft
	lda #"\x13"
	jsr print1
	lda #"\x06"
	jsr print1
	lda #20
	jsr print1
	jmp cbm
nosft	lda #32
	ldx #2
lp1	jsr print1
	dex
	bpl lp1
cbm	iny
	lda shift
	and #2
	beq nocbm
	lda #"\x03"
	jsr print1
	lda #"="
	jsr print1
	jmp ctrl
nocbm	lda #32
	ldx #1
lp2	jsr print1
	dex
	bpl lp2
ctrl	iny
	lda shift
	and #4
	beq noctrl
	lda #"\x03"
	jsr print1
	lda #20
	jsr print1
	lda #"\x12"
	jsr print1
	lda #"\x0c"
	jsr print1
	rts
noctrl	lda #32
	ldx #3
lp3	jsr print1
	dex
	bpl lp3
	rts
break	lda brklin+1
	ldx brklin
	iny
	jmp numout
