;:poke56,112:clr
;:poke672,112:poke671,.
;:sys36864
	*= $7000
	;.opt oo
d	= 64738
dl	=$d020
irqvec	=$314
irqold	=$ea31
dahi	=$ee97
daca	=$eea9
clhi	=$ee85
cllo	=$ee8e
port	=$dd00
byte	=$95
dalo	=$eea0
nbit	=$a3
time	=$dc07
sett	=$dc0f
timg	=$dc0d
left	=$94
chrvec	=$326
chrold	=$f1ca
outdev	=$9a
puffer	=$c000
read	=247
write	=249
endpuf	=$d000
listen	=$ed11
seclist	=$edb9
unlist	=$edfe
nbyt	=$a5
	jmp anfang
printer	.byt 4
char	brk
s	.byt 1
anfang	sei
	lda #<irqneu
	ldy #>irqneu
	sta irqvec
	sty irqvec+1
	lda #<bsneu
	ldy #>bsneu
	sta chrvec
	sty chrvec+1
	lda #<puffer
	ldy #>puffer
	sta read
	sty read+1
	sta write
	sty write+1
	cli
	rts
irqneu	jsr irqout
	jmp irqold
pout	pha
	lda #$24
	jsr listen
	lda #$60
	sta $b9
	jsr seclist
	pla
	jsr outbyt
	jmp unlist
outbyt	bit left
	bmi ja
	sec
	ror left
	bne nein
ja	pha
	jsr druck
	pla
nein	sta byte
	clc
	rts
druck	jmp d
	jsr dahi
	jsr daca
	jsr clhi
	bit nbit
	bpl l1
	lda #5
	sta dl
	inc dl
l2	jsr daca
	bcc l2
	lda #1
	sta dl
l3	jsr daca
	bcs l3
	lda #2
	sta dl
l1	jsr daca
	bcc l1
	lda #0
	sta dl
	jsr cllo
	lda #8
	sta nbyt
	lda #1
	sta dl+1
	jmp 64738
l4	lda port
	cmp port
	bne l4
	asl
	sec
	ror byte
	bcs l5
	jsr dalo
	bne l6
l5	jsr dahi
l6	jsr clhi
	nop
	nop
	nop
	nop
	lda port
	and #$df
	ora #$10
	sta port
	dec nbyt
	bne l4
	lda #0
	sta dl+1
	lda #4
	sta time
	lda #$19
	sta sett
	lda timg
l7	lda timg
	jsr daca
	bcs l7
	rts
bsneu	pha
	lda outdev
	cmp printer
	beq neu
	pla
	jmp chrold
neu	pla
	sta char
	pha
	txa
	pha
	tya
	pha
wait	lda write
	clc
	adc #1
	php
	cmp read
	bne platz
	lda write+1
	plp
	adc #0
	cmp #>endpuf
	bcc pl3
	lda #>puffer
pl3	cmp read+1
	beq wait
	php
platz	plp
	ldy #0
	lda char
	sta (write),y
	inc write
	bne pl2
	inc write+1
	lda write+1
	cmp #>endpuf
	bcc pl2
	lda #>puffer
	sta write+1
pl2	pla
	tay
	pla
	tax
	pla
	clc
	rts
irqout	lda read
	cmp write
	bne busy
	lda read+1
	cmp write+1
	bne busy
	rts
busy	ldy #0
	lda (read),y
	inc read
	bne bu1
	inc read+1
	ldy read+1
	cpy #>endpuf
	bcc bu1
	ldy #>puffer
	sta read+1
bu1	sta $400
	jsr pout
	rts
