;:sys58451:sys36864
	;.opt oo
	*= $c000
basvec	=776
nmivec	=792
stopvec	=$328
oldnmi	=$fe56
orgpitch	=9852  	; 1/100 sekunde
strout	=$ab1e
chrget	=115
chrgot	=121
chr	=122
oldbef	=$a7e7
addy	=$a8fb
inter	=$a7ae
axout	=$bdcd
crlf	=$aad7
frmnum	=$ad8a
integer	=$b7f7
print	=65490
initbas	=58451
initnmi	=65418
illquan	=$b248
lo	=$14
hi	=lo+1
cia	=$dd00
icr	=cia+13
timera	=cia+4
timerb	=cia+6
cra	=cia+14
crb	=cra+1
undefd	=$a8e3
getzei	=$a96b
getadr	=$a613
komma	=$aefd
stacktest	=$a3fb
stopold	=$f6ed
lineadr	=$5f
lineno	=$39
gosub	=$8d
irqoff	=$febc
unfunc	=$b3ae
	jmp visit
hello	.byt 13
	.byte "visit ver.1 installed"
	.byt 13
	.byte "by n.heusler, 8 muc 71"
	.byt 13,0
pa1	.byt 13
	.byte "params are"
	.byt 13
	.byte " visit  o"
	brk
pa2	.byt 13
	.byte " line-# "
	brk
pa3	.byt 13
	.byte " time   "
	brk
pa4	.byt 13
	.byte " pitch  "
	brk
flag	brk
pitch	.word 0
befnr	brk
spring	.byt 76
goto	.word 0
onoff	brk
perline	.word 0
period	.word 0
peradr	.word 0
beftab	.byte "visit"
	brk
	.byte "cancel"
	brk
	.byte "pitch"
	brk
	.byte "off"
	brk
	.byte "param"
	brk
	.byte "again"
	brk
	brk
befadr	.word bvisit,bcancel,bpitch,boff,bparam
	.word bagain
	.byte "\x03\x03\x03\x03visit v1"
	.byte " nikolaus heusler, zwengauerweg 18"
	.byte ", 8000 muenchen 71\x03\x03\x03\x03"
visit	lda #<neubef
	ldy #>neubef
	sta basvec
	sty basvec+1
	jsr bcancel
	lda #<orgpitch
	ldy #>orgpitch
	sta pitch
	sty pitch+1
	lda #<hello
	ldy #>hello
	jmp strout
neubef	jsr chrget
	ldx #0
	stx befnr
	dex
bef1	ldy #-1
bef2	iny
	inx
	lda beftab,x
	beq bef3
	cmp (chr),y
	beq bef2
	inc befnr
bef4	inx
	lda beftab,x
	bne bef4
	beq bef1
bef3	tya
	bne bef5
	jsr chrgot
	jmp oldbef
bef5	ldx befnr
	txa
	asl
	tax
	lda befadr,x
	sta goto
	lda befadr+1,x
	sta goto+1
	jsr addy
	jsr spring
	jmp inter
bvisit	jsr frmnum
	jsr integer
	ora lo
	bne fritz
	jmp illquan
fritz	sty timerb
	lda hi
	sta timerb+1
	sty period
	sta period+1
	jsr komma
	jsr getzei
	lda lo
	ldy hi
	sta perline
	sty perline+1
nochmal	jsr getadr
	bcs found
	jmp undefd
found	lda lineadr
	sec
	sbc #1
	sta peradr
	lda lineadr+1
	sbc #0
	sta peradr+1
	lda pitch
	ldy pitch+1
	sta timera
	sty timera+1
	lda #$11
	sta cra
	lda #$51
	sta crb
	lda icr
	lda #$82
	sta icr
	lda #<neustop
	ldy #>neustop
	sta stopvec
	sty stopvec+1
	lda #<neunmi
	ldy #>neunmi
	sta nmivec
	sty nmivec+1
	inc onoff
	rts
neunmi	pha
	txa
	pha
	tya
	pha
	lda icr
	tay
	and #2
	bne zeitnmi
	jmp oldnmi
zeitnmi	sta flag
	jmp irqoff
neustop	lda flag
	bne routine
	jmp stopold
routine	pla
	pla
	lda #0
	sta flag
	lda #3
	jsr stacktest
	lda chr+1
	pha
	lda chr
	pha
	lda lineno+1
	pha
	lda lineno
	pha
	lda #gosub
	pha
	lda peradr
	ldy peradr+1
	sta chr
	sty chr+1
	jmp inter+3
bpitch	jsr frmnum
	jsr integer
	sty pitch
	sta pitch+1
	rts
boff	jsr initbas
bcancel	lda #0
	sta onoff
	lda #127
	sta icr
	jmp initnmi
bparam	lda #<pa1
	ldy #>pa1
	jsr strout
	lda onoff
	bne ison
	lda #"f"
	jsr print
	.byt $2c
ison	lda #"n"
	jsr print
	lda #<pa2
	ldy #>pa2
	jsr strout
	ldx perline
	lda perline+1
	jsr axout
	lda #<pa3
	ldy #>pa3
	jsr strout
	ldx period
	lda period+1
	jsr axout
	lda #<pa4
	ldy #>pa4
	jsr strout
	ldx pitch
	lda pitch+1
	jsr axout
	jmp crlf
bagain	ldy period
	tya
	ora period+1
	bne geht
	jmp unfunc
geht	lda period+1
	sty timerb
	sta timerb+1
	lda perline
	ldy perline+1
	sta lo
	sty hi
	jmp nochmal
