	if	iodriverbody
	ifund	profile.adm3
profile.adm3	equ	1
	fin	profile.adm3
	ifund	profile.adm3
profile.adm3	equ	1
	fin	profile.adm3
	ifund	profile.adm3
profile.adm3	equ	1
	fin	profile.adm3
	ifund	profile.adm3
profile.adm3	equ	1
	fin	profile.adm3
	ifund	profile.adm3
profile.adm3	equ	1
	fin	profile.adm3
	ifund	profile.adm3
profile.adm3	equ	1
	fin	profile.adm3
	ifund	profile.adm3
profile.adm3	equ	1
	fin	profile.adm3
	ifund	profile.cenlpt
profile.cenlpt	equ	1
	fin	profile.cenlpt
	ifund	profile.rs232lpt
profile.rs232lpt	equ	1
	fin	profile.rs232lpt
	ifund	profile.tvi912c
profile.tvi912c	equ	1
	fin	profile.tvi912c
	ifund	profile.soroc120
profile.soroc120	equ	1
	fin	profile.soroc120
	page	VT Device-Specific Code
	fin	iodriverbody
	if	iodriverinit
reset:$FA00
	ldaa	#%00000011	reset ACIA
	staa	$FA00
	ldaa	#%10010101	in int; 8 D + 1 S; no parity; /16
	staa	$FA00
	ldaa	$FA01	clear any input interrupt
	okrts
	fin	iodriverinit
	if	iodriverbody
ilputdev:$FA00
	staa	$FA01	output data
	ldaa	#%10110101	enable output interrupts
	staa	$FA00
rts:$FA00
	rts
ilgetdev:$FA00
	ldab	$FA00	get the status first (becuz reading data clears it)
	ldaa	$FA01	get the interrupt-causing data
	jmp	ilgetdevstatusfromacia	the rest is common code
tlcheckready:$FA00
	ldaa	$FA00	get the status
	rora		shift *DCD into carry bit
	rora
	rora
	rts
	fin	iodriverbody
	if	iodriverinit
reset:$FA02
	ldaa	#%00000011	reset ACIA
	staa	$FA02
	ldaa	#%10010101	in int; 8 D + 1 S; no parity; /16
	staa	$FA02
	ldaa	$FA03	clear any input interrupt
	okrts
	fin	iodriverinit
	if	iodriverbody
ilputdev:$FA02
	staa	$FA03	output data
	ldaa	#%10110101	enable output interrupts
	staa	$FA02
rts:$FA02
	rts
ilgetdev:$FA02
	ldab	$FA02	get the status first (becuz reading data clears it)
	ldaa	$FA03	get the interrupt-causing data
	jmp	ilgetdevstatusfromacia	the rest is common code
tlcheckready:$FA02
	ldaa	$FA02	get the status
	rora		shift *DCD into carry bit
	rora
	rora
	rts
	fin	iodriverbody
	if	iodriverinit
reset:$FA08
	ldaa	#%00000011	reset ACIA
	staa	$FA08
	ldaa	#%10010101	in int; 8 D + 1 S; no parity; /16
	staa	$FA08
	ldaa	$FA09	clear any input interrupt
	okrts
	fin	iodriverinit
	if	iodriverbody
ilputdev:$FA08
	staa	$FA09	output data
	ldaa	#%10110101	enable output interrupts
	staa	$FA08
rts:$FA08
	rts
ilgetdev:$FA08
	ldab	$FA08	get the status first (becuz reading data clears it)
	ldaa	$FA09	get the interrupt-causing data
	jmp	ilgetdevstatusfromacia	the rest is common code
tlcheckready:$FA08
	ldaa	$FA08	get the status
	rora		shift *DCD into carry bit
	rora
	rora
	rts
	fin	iodriverbody
	if	iodriverinit
reset:$FA0A
	ldaa	#%00000011	reset ACIA
	staa	$FA0A
	ldaa	#%10010101	in int; 8 D + 1 S; no parity; /16
	staa	$FA0A
	ldaa	$FA0B	clear any input interrupt
	okrts
	fin	iodriverinit
	if	iodriverbody
ilputdev:$FA0A
	staa	$FA0B	output data
	ldaa	#%10110101	enable output interrupts
	staa	$FA0A
rts:$FA0A
	rts
ilgetdev:$FA0A
	ldab	$FA0A	get the status first (becuz reading data clears it)
	ldaa	$FA0B	get the interrupt-causing data
	jmp	ilgetdevstatusfromacia	the rest is common code
tlcheckready:$FA0A
	ldaa	$FA0A	get the status
	rora		shift *DCD into carry bit
	rora
	rora
	rts
	fin	iodriverbody
	if	iodriverinit
reset:$FA10
	ldaa	#%00000011	reset ACIA
	staa	$FA10
	ldaa	#%10010101	in int; 8 D + 1 S; no parity; /16
	staa	$FA10
	ldaa	$FA11	clear any input interrupt
	okrts
	fin	iodriverinit
	if	iodriverbody
ilputdev:$FA10
	staa	$FA11	output data
	ldaa	#%10110101	enable output interrupts
	staa	$FA10
rts:$FA10
	rts
ilgetdev:$FA10
	ldab	$FA10	get the status first (becuz reading data clears it)
	ldaa	$FA11	get the interrupt-causing data
	jmp	ilgetdevstatusfromacia	the rest is common code
tlcheckready:$FA10
	ldaa	$FA10	get the status
	rora		shift *DCD into carry bit
	rora
	rora
	rts
	fin	iodriverbody
	if	iodriverinit
reset:$FA12
	ldaa	#%00000011	reset ACIA
	staa	$FA12
	ldaa	#%10010101	in int; 8 D + 1 S; no parity; /16
	staa	$FA12
	ldaa	$FA13	clear any input interrupt
	okrts
	fin	iodriverinit
	if	iodriverbody
ilputdev:$FA12
	staa	$FA13	output data
	ldaa	#%10110101	enable output interrupts
	staa	$FA12
rts:$FA12
	rts
ilgetdev:$FA12
	ldab	$FA12	get the status first (becuz reading data clears it)
	ldaa	$FA13	get the interrupt-causing data
	jmp	ilgetdevstatusfromacia	the rest is common code
tlcheckready:$FA12
	ldaa	$FA12	get the status
	rora		shift *DCD into carry bit
	rora
	rora
	rts
	fin	iodriverbody
	if	iodriverinit
reset:$FA18
	ldaa	#%00000011	reset ACIA
	staa	$FA18
	ldaa	#%10010101	in int; 8 D + 1 S; no parity; /16
	staa	$FA18
	ldaa	$FA19	clear any input interrupt
	okrts
	fin	iodriverinit
	if	iodriverbody
ilputdev:$FA18
	staa	$FA19	output data
	ldaa	#%10110101	enable output interrupts
	staa	$FA18
rts:$FA18
	rts
ilgetdev:$FA18
	ldab	$FA18	get the status first (becuz reading data clears it)
	ldaa	$FA19	get the interrupt-causing data
	jmp	ilgetdevstatusfromacia	the rest is common code
tlcheckready:$FA18
	ldaa	$FA18	get the status
	rora		shift *DCD into carry bit
	rora
	rora
	rts
	fin	iodriverbody
	if	iodriverpoll
	page	VT Interrupt Poll Chain
vt:interruptpollchain	; should be first in poll chain
	ldaa	$FA00	test irq
	bpl	noint:$FA00	b/ no int here
	ldx	#dcb:$FA00	look more closely
	cmpa	#%10000010	handle output interrupts pronto!
	bne	notoutput:$FA00
gotoutput:$FA00
	ldaa	#%10010101	disable output interrupt
	staa	$FA00
	jmp	sdos+sdos:vtoutputint
notoutput:$FA00
	bita	#%00000100	data carrier detect dropped
	beq	notdcddrop:$FA00
	ldab	$FA01	clear interrupt caused by ~dcd
	bita	#%00000010	output requested with ~dcd?
	bne	gotoutput:$FA00	b/ yup!
rti:$FA00
	rti
notdcddrop:$FA00
	bita	#%01110001	receiver register full or error
	beq	notinput:$FA00
	jmp	sdos+sdos:vtinputint
notinput:$FA00
	bita	#%00001000	not CTS
	bne	rti:$FA00	ignore CTS interrupt glitch
	bra	*	wierd condition
noint:$FA00
	ldaa	$FA02	test irq
	bpl	noint:$FA02	b/ no int here
	ldx	#dcb:$FA02	look more closely
	cmpa	#%10000010	handle output interrupts pronto!
	bne	notoutput:$FA02
gotoutput:$FA02
	ldaa	#%10010101	disable output interrupt
	staa	$FA02
	jmp	sdos+sdos:vtoutputint
notoutput:$FA02
	bita	#%00000100	data carrier detect dropped
	beq	notdcddrop:$FA02
	ldab	$FA03	clear interrupt caused by ~dcd
	bita	#%00000010	output requested with ~dcd?
	bne	gotoutput:$FA02	b/ yup!
rti:$FA02
	rti
notdcddrop:$FA02
	bita	#%01110001	receiver register full or error
	beq	notinput:$FA02
	jmp	sdos+sdos:vtinputint
notinput:$FA02
	bita	#%00001000	not CTS
	bne	rti:$FA02	ignore CTS interrupt glitch
	bra	*	wierd condition
noint:$FA02
	ldaa	$FA08	test irq
	bpl	noint:$FA08	b/ no int here
	ldx	#dcb:$FA08	look more closely
	cmpa	#%10000010	handle output interrupts pronto!
	bne	notoutput:$FA08
gotoutput:$FA08
	ldaa	#%10010101	disable output interrupt
	staa	$FA08
	jmp	sdos+sdos:vtoutputint
notoutput:$FA08
	bita	#%00000100	data carrier detect dropped
	beq	notdcddrop:$FA08
	ldab	$FA09	clear interrupt caused by ~dcd
	bita	#%00000010	output requested with ~dcd?
	bne	gotoutput:$FA08	b/ yup!
rti:$FA08
	rti
notdcddrop:$FA08
	bita	#%01110001	receiver register full or error
	beq	notinput:$FA08
	jmp	sdos+sdos:vtinputint
notinput:$FA08
	bita	#%00001000	not CTS
	bne	rti:$FA08	ignore CTS interrupt glitch
	bra	*	wierd condition
noint:$FA08
	ldaa	$FA0A	test irq
	bpl	noint:$FA0A	b/ no int here
	ldx	#dcb:$FA0A	look more closely
	cmpa	#%10000010	handle output interrupts pronto!
	bne	notoutput:$FA0A
gotoutput:$FA0A
	ldaa	#%10010101	disable output interrupt
	staa	$FA0A
	jmp	sdos+sdos:vtoutputint
notoutput:$FA0A
	bita	#%00000100	data carrier detect dropped
	beq	notdcddrop:$FA0A
	ldab	$FA0B	clear interrupt caused by ~dcd
	bita	#%00000010	output requested with ~dcd?
	bne	gotoutput:$FA0A	b/ yup!
rti:$FA0A
	rti
notdcddrop:$FA0A
	bita	#%01110001	receiver register full or error
	beq	notinput:$FA0A
	jmp	sdos+sdos:vtinputint
notinput:$FA0A
	bita	#%00001000	not CTS
	bne	rti:$FA0A	ignore CTS interrupt glitch
	bra	*	wierd condition
noint:$FA0A
	ldaa	$FA10	test irq
	bpl	noint:$FA10	b/ no int here
	ldx	#dcb:$FA10	look more closely
	cmpa	#%10000010	handle output interrupts pronto!
	bne	notoutput:$FA10
gotoutput:$FA10
	ldaa	#%10010101	disable output interrupt
	staa	$FA10
	jmp	sdos+sdos:vtoutputint
notoutput:$FA10
	bita	#%00000100	data carrier detect dropped
	beq	notdcddrop:$FA10
	ldab	$FA11	clear interrupt caused by ~dcd
	bita	#%00000010	output requested with ~dcd?
	bne	gotoutput:$FA10	b/ yup!
rti:$FA10
	rti
notdcddrop:$FA10
	bita	#%01110001	receiver register full or error
	beq	notinput:$FA10
	jmp	sdos+sdos:vtinputint
notinput:$FA10
	bita	#%00001000	not CTS
	bne	rti:$FA10	ignore CTS interrupt glitch
	bra	*	wierd condition
noint:$FA10
	ldaa	$FA12	test irq
	bpl	noint:$FA12	b/ no int here
	ldx	#dcb:$FA12	look more closely
	cmpa	#%10000010	handle output interrupts pronto!
	bne	notoutput:$FA12
gotoutput:$FA12
	ldaa	#%10010101	disable output interrupt
	staa	$FA12
	jmp	sdos+sdos:vtoutputint
notoutput:$FA12
	bita	#%00000100	data carrier detect dropped
	beq	notdcddrop:$FA12
	ldab	$FA13	clear interrupt caused by ~dcd
	bita	#%00000010	output requested with ~dcd?
	bne	gotoutput:$FA12	b/ yup!
rti:$FA12
	rti
notdcddrop:$FA12
	bita	#%01110001	receiver register full or error
	beq	notinput:$FA12
	jmp	sdos+sdos:vtinputint
notinput:$FA12
	bita	#%00001000	not CTS
	bne	rti:$FA12	ignore CTS interrupt glitch
	bra	*	wierd condition
noint:$FA12
	ldaa	$FA18	test irq
	bpl	noint:$FA18	b/ no int here
	ldx	#dcb:$FA18	look more closely
	cmpa	#%10000010	handle output interrupts pronto!
	bne	notoutput:$FA18
gotoutput:$FA18
	ldaa	#%10010101	disable output interrupt
	staa	$FA18
	jmp	sdos+sdos:vtoutputint
notoutput:$FA18
	bita	#%00000100	data carrier detect dropped
	beq	notdcddrop:$FA18
	ldab	$FA19	clear interrupt caused by ~dcd
	bita	#%00000010	output requested with ~dcd?
	bne	gotoutput:$FA18	b/ yup!
rti:$FA18
	rti
notdcddrop:$FA18
	bita	#%01110001	receiver register full or error
	beq	notinput:$FA18
	jmp	sdos+sdos:vtinputint
notinput:$FA18
	bita	#%00001000	not CTS
	bne	rti:$FA18	ignore CTS interrupt glitch
	bra	*	wierd condition
noint:$FA18
*  poll code for $FAA4 should go here
	fin	iodriverpoll
	if	iodriverram
ntimeouts	set	 16+ntimeouts
	page	VT Ring Buffers
ttybuffers
	ifund	outbufsize:$FA00
outbufsize:$FA00	equ	80
	fin
	ifund	linebufsize:$FA00
linebufsize:$FA00	equ	100
	fin
	ifund	inbufsize:$FA00
inbufsize:$FA00	equ	80
	fin
; inbufsize should be less than linebufsize, in order to
; avoid too long typed-ahead line
outbuf:$FA00
	rmb	outbufsize:$FA00
inbuf:$FA00
	rmb	inbufsize:$FA00
linebuf:$FA00
	rmb	linebufsize:$FA00
	ifund	outbufsize:$FA02
outbufsize:$FA02	equ	80
	fin
	ifund	linebufsize:$FA02
linebufsize:$FA02	equ	100
	fin
	ifund	inbufsize:$FA02
inbufsize:$FA02	equ	80
	fin
; inbufsize should be less than linebufsize, in order to
; avoid too long typed-ahead line
outbuf:$FA02
	rmb	outbufsize:$FA02
inbuf:$FA02
	rmb	inbufsize:$FA02
linebuf:$FA02
	rmb	linebufsize:$FA02
	ifund	outbufsize:$FA08
outbufsize:$FA08	equ	80
	fin
	ifund	linebufsize:$FA08
linebufsize:$FA08	equ	100
	fin
	ifund	inbufsize:$FA08
inbufsize:$FA08	equ	80
	fin
; inbufsize should be less than linebufsize, in order to
; avoid too long typed-ahead line
outbuf:$FA08
	rmb	outbufsize:$FA08
inbuf:$FA08
	rmb	inbufsize:$FA08
linebuf:$FA08
	rmb	linebufsize:$FA08
	ifund	outbufsize:$FA0A
outbufsize:$FA0A	equ	80
	fin
	ifund	linebufsize:$FA0A
linebufsize:$FA0A	equ	100
	fin
	ifund	inbufsize:$FA0A
inbufsize:$FA0A	equ	80
	fin
; inbufsize should be less than linebufsize, in order to
; avoid too long typed-ahead line
outbuf:$FA0A
	rmb	outbufsize:$FA0A
inbuf:$FA0A
	rmb	inbufsize:$FA0A
linebuf:$FA0A
	rmb	linebufsize:$FA0A
	ifund	outbufsize:$FA10
outbufsize:$FA10	equ	80
	fin
	ifund	linebufsize:$FA10
linebufsize:$FA10	equ	100
	fin
	ifund	inbufsize:$FA10
inbufsize:$FA10	equ	80
	fin
; inbufsize should be less than linebufsize, in order to
; avoid too long typed-ahead line
outbuf:$FA10
	rmb	outbufsize:$FA10
inbuf:$FA10
	rmb	inbufsize:$FA10
linebuf:$FA10
	rmb	linebufsize:$FA10
	ifund	outbufsize:$FA12
outbufsize:$FA12	equ	80
	fin
	ifund	linebufsize:$FA12
linebufsize:$FA12	equ	100
	fin
	ifund	inbufsize:$FA12
inbufsize:$FA12	equ	80
	fin
; inbufsize should be less than linebufsize, in order to
; avoid too long typed-ahead line
outbuf:$FA12
	rmb	outbufsize:$FA12
inbuf:$FA12
	rmb	inbufsize:$FA12
linebuf:$FA12
	rmb	linebufsize:$FA12
	ifund	outbufsize:$FA18
outbufsize:$FA18	equ	80
	fin
	ifund	linebufsize:$FA18
linebufsize:$FA18	equ	100
	fin
	ifund	inbufsize:$FA18
inbufsize:$FA18	equ	80
	fin
; inbufsize should be less than linebufsize, in order to
; avoid too long typed-ahead line
outbuf:$FA18
	rmb	outbufsize:$FA18
inbuf:$FA18
	rmb	inbufsize:$FA18
linebuf:$FA18
	rmb	linebufsize:$FA18
	ifund	outbufsize:$FAA4
outbufsize:$FAA4	equ	80
	fin
	ifund	linebufsize:$FAA4
linebufsize:$FAA4	equ	100
	fin
	ifund	inbufsize:$FAA4
inbufsize:$FAA4	equ	80
	fin
; inbufsize should be less than linebufsize, in order to
; avoid too long typed-ahead line
outbuf:$FAA4
	rmb	outbufsize:$FAA4
inbuf:$FAA4
	rmb	inbufsize:$FAA4
linebuf:$FAA4
	rmb	linebufsize:$FAA4
	page	VT DCBs
dcbname:$FA00
	fcc	/CONSOLE:/
	fcb	0
	ifund	ttydcb
ttydcb
	fin	ttydcb
dcb:$FA00
	rpt	dcb:vtsize
	fcb	0
	org	dcb:$FA00+dcb:name
	fdb	dcbname:$FA00
	fdb	dcb:$FA02
	fdb	sdos+sdos:vtdispatch
	org	dcb:$FA00+dcb:reset
	jmp	reset:$FA00
	okrts		dump nothing
	if	m6800!m6801
	nop
	fin
	jmp	ilputdev:$FA00
	jmp	ilgetdev:$FA00
	jmp	illdeviceop	no extra control calls defined
	jmp	illdeviceop	no extra status calls defined
	jmp	tlcheckready:$FA00	go check for acia ready
	org	dcb:$FA00+dcb:outputtoblk
	ifund	ttytimeouts
ttytimeouts
	fin	ttytimeouts
outputtoblk:$FA00
	fdb	inputtoblk:$FA00
	fdb	0
	fdb	sdos+sdos:vtoutputto
	fdb	dcb:$FA00
	org	dcb:$FA00+dcb:inputtoblk
inputtoblk:$FA00
	fdb	outputtoblk:$FA02
	fdb	0
	fdb	sdos+sdos:vtinputto
	fdb	dcb:$FA00
	org	dcb:$FA00+dcb:tcb
	fdb	tcb:$FA00
	org	dcb:$FA00+dcb:taskstack
	fdb	tcbstack:$FA00
	org	dcb:$FA00+dcb:ringinbase
	fdb	inbuf:$FA00
	fdb	inbufsize:$FA00
	org	dcb:$FA00+dcb:ringoutbase
	fdb	outbuf:$FA00
	fdb	outbufsize:$FA00
	org	dcb:$FA00+dcb:ringoutthreshold
	fcb	outbufsize:$FA00//10
	org	dcb:$FA00+dcb:linebuf
	fdb	linebuf:$FA00
	org	dcb:$FA00+dcb:linebuflen
	fcb	linebufsize:$FA00
	org	dcb:$FA00+dcb:clearin
	jmp	sdos+sdos:vtclearin
	jmp	sdos+sdos:vtclearout
	jmp	sdos+sdos:vttlputbuf
	jmp	sdos+sdos:vttlgetbuf
	jmp	sdos+sdos:vtilputbuf
	jmp	sdos+sdos:vtilgetbuf
	org	dcb:$FA00+dcb:profile
	fcb	profilenum.adm3	profile name
	org	dcb:$FA00+dcb:doneflag
	fcb	1	device not busy
	org	dcb:$FA00+dcb:oilquiescent
	fcb	1	interrupt not expected
	org	dcb:$FA00+dcb:vtsize
	ifund	ttytcb
ttytcb
	fin	ttytcb
tcb:$FA00
	fdb	tcb:$FA02
	fdb	tcbstack:$FA00
	fdb	0,0,0,0,0,0
	org	tcb:$FA00+tcb:scratchpad+dcbpointer
	fdb	dcb:$FA00
	org	tcb:$FA00+tcb:size
	rmb	env:minstack*2-env:size
tcbstack:$FA00
	rpt	env:size
	fcb	0
	org	*-env:cc
stack:$FA00
	org	tcbstack:$FA00+env:p
	fdb	sdos+sdos:vtedittask
	org	tcbstack:$FA00+env:cc
	fcb	$80*m6809	set 'E' flag for 6809
	org	stack:$FA00+env:cc
dcbname:$FA02
	fcc	/PORT1:/
	fcb	0
	ifund	ttydcb
ttydcb
	fin	ttydcb
dcb:$FA02
	rpt	dcb:vtsize
	fcb	0
	org	dcb:$FA02+dcb:name
	fdb	dcbname:$FA02
	fdb	dcb:$FA08
	fdb	sdos+sdos:vtdispatch
	org	dcb:$FA02+dcb:reset
	jmp	reset:$FA02
	okrts		dump nothing
	if	m6800!m6801
	nop
	fin
	jmp	ilputdev:$FA02
	jmp	ilgetdev:$FA02
	jmp	illdeviceop	no extra control calls defined
	jmp	illdeviceop	no extra status calls defined
	jmp	tlcheckready:$FA02	go check for acia ready
	org	dcb:$FA02+dcb:outputtoblk
	ifund	ttytimeouts
ttytimeouts
	fin	ttytimeouts
outputtoblk:$FA02
	fdb	inputtoblk:$FA02
	fdb	0
	fdb	sdos+sdos:vtoutputto
	fdb	dcb:$FA02
	org	dcb:$FA02+dcb:inputtoblk
inputtoblk:$FA02
	fdb	outputtoblk:$FA08
	fdb	0
	fdb	sdos+sdos:vtinputto
	fdb	dcb:$FA02
	org	dcb:$FA02+dcb:tcb
	fdb	tcb:$FA02
	org	dcb:$FA02+dcb:taskstack
	fdb	tcbstack:$FA02
	org	dcb:$FA02+dcb:ringinbase
	fdb	inbuf:$FA02
	fdb	inbufsize:$FA02
	org	dcb:$FA02+dcb:ringoutbase
	fdb	outbuf:$FA02
	fdb	outbufsize:$FA02
	org	dcb:$FA02+dcb:ringoutthreshold
	fcb	outbufsize:$FA02//10
	org	dcb:$FA02+dcb:linebuf
	fdb	linebuf:$FA02
	org	dcb:$FA02+dcb:linebuflen
	fcb	linebufsize:$FA02
	org	dcb:$FA02+dcb:clearin
	jmp	sdos+sdos:vtclearin
	jmp	sdos+sdos:vtclearout
	jmp	sdos+sdos:vttlputbuf
	jmp	sdos+sdos:vttlgetbuf
	jmp	sdos+sdos:vtilputbuf
	jmp	sdos+sdos:vtilgetbuf
	org	dcb:$FA02+dcb:profile
	fcb	profilenum.adm3	profile name
	org	dcb:$FA02+dcb:doneflag
	fcb	1	device not busy
	org	dcb:$FA02+dcb:oilquiescent
	fcb	1	interrupt not expected
	org	dcb:$FA02+dcb:vtsize
	ifund	ttytcb
ttytcb
	fin	ttytcb
tcb:$FA02
	fdb	tcb:$FA08
	fdb	tcbstack:$FA02
	fdb	0,0,0,0,0,0
	org	tcb:$FA02+tcb:scratchpad+dcbpointer
	fdb	dcb:$FA02
	org	tcb:$FA02+tcb:size
	rmb	env:minstack*2-env:size
tcbstack:$FA02
	rpt	env:size
	fcb	0
	org	*-env:cc
stack:$FA02
	org	tcbstack:$FA02+env:p
	fdb	sdos+sdos:vtedittask
	org	tcbstack:$FA02+env:cc
	fcb	$80*m6809	set 'E' flag for 6809
	org	stack:$FA02+env:cc
dcbname:$FA08
	fcc	/PORT2:/
	fcb	0
	ifund	ttydcb
ttydcb
	fin	ttydcb
dcb:$FA08
	rpt	dcb:vtsize
	fcb	0
	org	dcb:$FA08+dcb:name
	fdb	dcbname:$FA08
	fdb	dcb:$FA0A
	fdb	sdos+sdos:vtdispatch
	org	dcb:$FA08+dcb:reset
	jmp	reset:$FA08
	okrts		dump nothing
	if	m6800!m6801
	nop
	fin
	jmp	ilputdev:$FA08
	jmp	ilgetdev:$FA08
	jmp	illdeviceop	no extra control calls defined
	jmp	illdeviceop	no extra status calls defined
	jmp	tlcheckready:$FA08	go check for acia ready
	org	dcb:$FA08+dcb:outputtoblk
	ifund	ttytimeouts
ttytimeouts
	fin	ttytimeouts
outputtoblk:$FA08
	fdb	inputtoblk:$FA08
	fdb	0
	fdb	sdos+sdos:vtoutputto
	fdb	dcb:$FA08
	org	dcb:$FA08+dcb:inputtoblk
inputtoblk:$FA08
	fdb	outputtoblk:$FA0A
	fdb	0
	fdb	sdos+sdos:vtinputto
	fdb	dcb:$FA08
	org	dcb:$FA08+dcb:tcb
	fdb	tcb:$FA08
	org	dcb:$FA08+dcb:taskstack
	fdb	tcbstack:$FA08
	org	dcb:$FA08+dcb:ringinbase
	fdb	inbuf:$FA08
	fdb	inbufsize:$FA08
	org	dcb:$FA08+dcb:ringoutbase
	fdb	outbuf:$FA08
	fdb	outbufsize:$FA08
	org	dcb:$FA08+dcb:ringoutthreshold
	fcb	outbufsize:$FA08//10
	org	dcb:$FA08+dcb:linebuf
	fdb	linebuf:$FA08
	org	dcb:$FA08+dcb:linebuflen
	fcb	linebufsize:$FA08
	org	dcb:$FA08+dcb:clearin
	jmp	sdos+sdos:vtclearin
	jmp	sdos+sdos:vtclearout
	jmp	sdos+sdos:vttlputbuf
	jmp	sdos+sdos:vttlgetbuf
	jmp	sdos+sdos:vtilputbuf
	jmp	sdos+sdos:vtilgetbuf
	org	dcb:$FA08+dcb:profile
	fcb	profilenum.adm3	profile name
	org	dcb:$FA08+dcb:doneflag
	fcb	1	device not busy
	org	dcb:$FA08+dcb:oilquiescent
	fcb	1	interrupt not expected
	org	dcb:$FA08+dcb:vtsize
	ifund	ttytcb
ttytcb
	fin	ttytcb
tcb:$FA08
	fdb	tcb:$FA0A
	fdb	tcbstack:$FA08
	fdb	0,0,0,0,0,0
	org	tcb:$FA08+tcb:scratchpad+dcbpointer
	fdb	dcb:$FA08
	org	tcb:$FA08+tcb:size
	rmb	env:minstack*2-env:size
tcbstack:$FA08
	rpt	env:size
	fcb	0
	org	*-env:cc
stack:$FA08
	org	tcbstack:$FA08+env:p
	fdb	sdos+sdos:vtedittask
	org	tcbstack:$FA08+env:cc
	fcb	$80*m6809	set 'E' flag for 6809
	org	stack:$FA08+env:cc
dcbname:$FA0A
	fcc	/PORT3:/
	fcb	0
	ifund	ttydcb
ttydcb
	fin	ttydcb
dcb:$FA0A
	rpt	dcb:vtsize
	fcb	0
	org	dcb:$FA0A+dcb:name
	fdb	dcbname:$FA0A
	fdb	dcb:$FA10
	fdb	sdos+sdos:vtdispatch
	org	dcb:$FA0A+dcb:reset
	jmp	reset:$FA0A
	okrts		dump nothing
	if	m6800!m6801
	nop
	fin
	jmp	ilputdev:$FA0A
	jmp	ilgetdev:$FA0A
	jmp	illdeviceop	no extra control calls defined
	jmp	illdeviceop	no extra status calls defined
	jmp	tlcheckready:$FA0A	go check for acia ready
	org	dcb:$FA0A+dcb:outputtoblk
	ifund	ttytimeouts
ttytimeouts
	fin	ttytimeouts
outputtoblk:$FA0A
	fdb	inputtoblk:$FA0A
	fdb	0
	fdb	sdos+sdos:vtoutputto
	fdb	dcb:$FA0A
	org	dcb:$FA0A+dcb:inputtoblk
inputtoblk:$FA0A
	fdb	outputtoblk:$FA10
	fdb	0
	fdb	sdos+sdos:vtinputto
	fdb	dcb:$FA0A
	org	dcb:$FA0A+dcb:tcb
	fdb	tcb:$FA0A
	org	dcb:$FA0A+dcb:taskstack
	fdb	tcbstack:$FA0A
	org	dcb:$FA0A+dcb:ringinbase
	fdb	inbuf:$FA0A
	fdb	inbufsize:$FA0A
	org	dcb:$FA0A+dcb:ringoutbase
	fdb	outbuf:$FA0A
	fdb	outbufsize:$FA0A
	org	dcb:$FA0A+dcb:ringoutthreshold
	fcb	outbufsize:$FA0A//10
	org	dcb:$FA0A+dcb:linebuf
	fdb	linebuf:$FA0A
	org	dcb:$FA0A+dcb:linebuflen
	fcb	linebufsize:$FA0A
	org	dcb:$FA0A+dcb:clearin
	jmp	sdos+sdos:vtclearin
	jmp	sdos+sdos:vtclearout
	jmp	sdos+sdos:vttlputbuf
	jmp	sdos+sdos:vttlgetbuf
	jmp	sdos+sdos:vtilputbuf
	jmp	sdos+sdos:vtilgetbuf
	org	dcb:$FA0A+dcb:profile
	fcb	profilenum.adm3	profile name
	org	dcb:$FA0A+dcb:doneflag
	fcb	1	device not busy
	org	dcb:$FA0A+dcb:oilquiescent
	fcb	1	interrupt not expected
	org	dcb:$FA0A+dcb:vtsize
	ifund	ttytcb
ttytcb
	fin	ttytcb
tcb:$FA0A
	fdb	tcb:$FA10
	fdb	tcbstack:$FA0A
	fdb	0,0,0,0,0,0
	org	tcb:$FA0A+tcb:scratchpad+dcbpointer
	fdb	dcb:$FA0A
	org	tcb:$FA0A+tcb:size
	rmb	env:minstack*2-env:size
tcbstack:$FA0A
	rpt	env:size
	fcb	0
	org	*-env:cc
stack:$FA0A
	org	tcbstack:$FA0A+env:p
	fdb	sdos+sdos:vtedittask
	org	tcbstack:$FA0A+env:cc
	fcb	$80*m6809	set 'E' flag for 6809
	org	stack:$FA0A+env:cc
dcbname:$FA10
	fcc	/PORT4:/
	fcb	0
	ifund	ttydcb
ttydcb
	fin	ttydcb
dcb:$FA10
	rpt	dcb:vtsize
	fcb	0
	org	dcb:$FA10+dcb:name
	fdb	dcbname:$FA10
	fdb	dcb:$FA12
	fdb	sdos+sdos:vtdispatch
	org	dcb:$FA10+dcb:reset
	jmp	reset:$FA10
	okrts		dump nothing
	if	m6800!m6801
	nop
	fin
	jmp	ilputdev:$FA10
	jmp	ilgetdev:$FA10
	jmp	illdeviceop	no extra control calls defined
	jmp	illdeviceop	no extra status calls defined
	jmp	tlcheckready:$FA10	go check for acia ready
	org	dcb:$FA10+dcb:outputtoblk
	ifund	ttytimeouts
ttytimeouts
	fin	ttytimeouts
outputtoblk:$FA10
	fdb	inputtoblk:$FA10
	fdb	0
	fdb	sdos+sdos:vtoutputto
	fdb	dcb:$FA10
	org	dcb:$FA10+dcb:inputtoblk
inputtoblk:$FA10
	fdb	outputtoblk:$FA12
	fdb	0
	fdb	sdos+sdos:vtinputto
	fdb	dcb:$FA10
	org	dcb:$FA10+dcb:tcb
	fdb	tcb:$FA10
	org	dcb:$FA10+dcb:taskstack
	fdb	tcbstack:$FA10
	org	dcb:$FA10+dcb:ringinbase
	fdb	inbuf:$FA10
	fdb	inbufsize:$FA10
	org	dcb:$FA10+dcb:ringoutbase
	fdb	outbuf:$FA10
	fdb	outbufsize:$FA10
	org	dcb:$FA10+dcb:ringoutthreshold
	fcb	outbufsize:$FA10//10
	org	dcb:$FA10+dcb:linebuf
	fdb	linebuf:$FA10
	org	dcb:$FA10+dcb:linebuflen
	fcb	linebufsize:$FA10
	org	dcb:$FA10+dcb:clearin
	jmp	sdos+sdos:vtclearin
	jmp	sdos+sdos:vtclearout
	jmp	sdos+sdos:vttlputbuf
	jmp	sdos+sdos:vttlgetbuf
	jmp	sdos+sdos:vtilputbuf
	jmp	sdos+sdos:vtilgetbuf
	org	dcb:$FA10+dcb:profile
	fcb	profilenum.adm3	profile name
	org	dcb:$FA10+dcb:doneflag
	fcb	1	device not busy
	org	dcb:$FA10+dcb:oilquiescent
	fcb	1	interrupt not expected
	org	dcb:$FA10+dcb:vtsize
	ifund	ttytcb
ttytcb
	fin	ttytcb
tcb:$FA10
	fdb	tcb:$FA12
	fdb	tcbstack:$FA10
	fdb	0,0,0,0,0,0
	org	tcb:$FA10+tcb:scratchpad+dcbpointer
	fdb	dcb:$FA10
	org	tcb:$FA10+tcb:size
	rmb	env:minstack*2-env:size
tcbstack:$FA10
	rpt	env:size
	fcb	0
	org	*-env:cc
stack:$FA10
	org	tcbstack:$FA10+env:p
	fdb	sdos+sdos:vtedittask
	org	tcbstack:$FA10+env:cc
	fcb	$80*m6809	set 'E' flag for 6809
	org	stack:$FA10+env:cc
dcbname:$FA12
	fcc	/PORT5:/
	fcb	0
	ifund	ttydcb
ttydcb
	fin	ttydcb
dcb:$FA12
	rpt	dcb:vtsize
	fcb	0
	org	dcb:$FA12+dcb:name
	fdb	dcbname:$FA12
	fdb	dcb:$FA18
	fdb	sdos+sdos:vtdispatch
	org	dcb:$FA12+dcb:reset
	jmp	reset:$FA12
	okrts		dump nothing
	if	m6800!m6801
	nop
	fin
	jmp	ilputdev:$FA12
	jmp	ilgetdev:$FA12
	jmp	illdeviceop	no extra control calls defined
	jmp	illdeviceop	no extra status calls defined
	jmp	tlcheckready:$FA12	go check for acia ready
	org	dcb:$FA12+dcb:outputtoblk
	ifund	ttytimeouts
ttytimeouts
	fin	ttytimeouts
outputtoblk:$FA12
	fdb	inputtoblk:$FA12
	fdb	0
	fdb	sdos+sdos:vtoutputto
	fdb	dcb:$FA12
	org	dcb:$FA12+dcb:inputtoblk
inputtoblk:$FA12
	fdb	outputtoblk:$FA18
	fdb	0
	fdb	sdos+sdos:vtinputto
	fdb	dcb:$FA12
	org	dcb:$FA12+dcb:tcb
	fdb	tcb:$FA12
	org	dcb:$FA12+dcb:taskstack
	fdb	tcbstack:$FA12
	org	dcb:$FA12+dcb:ringinbase
	fdb	inbuf:$FA12
	fdb	inbufsize:$FA12
	org	dcb:$FA12+dcb:ringoutbase
	fdb	outbuf:$FA12
	fdb	outbufsize:$FA12
	org	dcb:$FA12+dcb:ringoutthreshold
	fcb	outbufsize:$FA12//10
	org	dcb:$FA12+dcb:linebuf
	fdb	linebuf:$FA12
	org	dcb:$FA12+dcb:linebuflen
	fcb	linebufsize:$FA12
	org	dcb:$FA12+dcb:clearin
	jmp	sdos+sdos:vtclearin
	jmp	sdos+sdos:vtclearout
	jmp	sdos+sdos:vttlputbuf
	jmp	sdos+sdos:vttlgetbuf
	jmp	sdos+sdos:vtilputbuf
	jmp	sdos+sdos:vtilgetbuf
	org	dcb:$FA12+dcb:profile
	fcb	profilenum.adm3	profile name
	org	dcb:$FA12+dcb:doneflag
	fcb	1	device not busy
	org	dcb:$FA12+dcb:oilquiescent
	fcb	1	interrupt not expected
	org	dcb:$FA12+dcb:vtsize
	ifund	ttytcb
ttytcb
	fin	ttytcb
tcb:$FA12
	fdb	tcb:$FA18
	fdb	tcbstack:$FA12
	fdb	0,0,0,0,0,0
	org	tcb:$FA12+tcb:scratchpad+dcbpointer
	fdb	dcb:$FA12
	org	tcb:$FA12+tcb:size
	rmb	env:minstack*2-env:size
tcbstack:$FA12
	rpt	env:size
	fcb	0
	org	*-env:cc
stack:$FA12
	org	tcbstack:$FA12+env:p
	fdb	sdos+sdos:vtedittask
	org	tcbstack:$FA12+env:cc
	fcb	$80*m6809	set 'E' flag for 6809
	org	stack:$FA12+env:cc
dcbname:$FA18
	fcc	/PORT6:/
	fcb	0
	ifund	ttydcb
ttydcb
	fin	ttydcb
dcb:$FA18
	rpt	dcb:vtsize
	fcb	0
	org	dcb:$FA18+dcb:name
	fdb	dcbname:$FA18
	fdb	dcb:$FAA4
	fdb	sdos+sdos:vtdispatch
	org	dcb:$FA18+dcb:reset
	jmp	reset:$FA18
	okrts		dump nothing
	if	m6800!m6801
	nop
	fin
	jmp	ilputdev:$FA18
	jmp	ilgetdev:$FA18
	jmp	illdeviceop	no extra control calls defined
	jmp	illdeviceop	no extra status calls defined
	jmp	tlcheckready:$FA18	go check for acia ready
	org	dcb:$FA18+dcb:outputtoblk
	ifund	ttytimeouts
ttytimeouts
	fin	ttytimeouts
outputtoblk:$FA18
	fdb	inputtoblk:$FA18
	fdb	0
	fdb	sdos+sdos:vtoutputto
	fdb	dcb:$FA18
	org	dcb:$FA18+dcb:inputtoblk
inputtoblk:$FA18
	fdb	outputtoblk:$FAA4
	fdb	0
	fdb	sdos+sdos:vtinputto
	fdb	dcb:$FA18
	org	dcb:$FA18+dcb:tcb
	fdb	tcb:$FA18
	org	dcb:$FA18+dcb:taskstack
	fdb	tcbstack:$FA18
	org	dcb:$FA18+dcb:ringinbase
	fdb	inbuf:$FA18
	fdb	inbufsize:$FA18
	org	dcb:$FA18+dcb:ringoutbase
	fdb	outbuf:$FA18
	fdb	outbufsize:$FA18
	org	dcb:$FA18+dcb:ringoutthreshold
	fcb	outbufsize:$FA18//10
	org	dcb:$FA18+dcb:linebuf
	fdb	linebuf:$FA18
	org	dcb:$FA18+dcb:linebuflen
	fcb	linebufsize:$FA18
	org	dcb:$FA18+dcb:clearin
	jmp	sdos+sdos:vtclearin
	jmp	sdos+sdos:vtclearout
	jmp	sdos+sdos:vttlputbuf
	jmp	sdos+sdos:vttlgetbuf
	jmp	sdos+sdos:vtilputbuf
	jmp	sdos+sdos:vtilgetbuf
	org	dcb:$FA18+dcb:profile
	fcb	profilenum.adm3	profile name
	org	dcb:$FA18+dcb:doneflag
	fcb	1	device not busy
	org	dcb:$FA18+dcb:oilquiescent
	fcb	1	interrupt not expected
	org	dcb:$FA18+dcb:vtsize
	ifund	ttytcb
ttytcb
	fin	ttytcb
tcb:$FA18
	fdb	tcb:$FAA4
	fdb	tcbstack:$FA18
	fdb	0,0,0,0,0,0
	org	tcb:$FA18+tcb:scratchpad+dcbpointer
	fdb	dcb:$FA18
	org	tcb:$FA18+tcb:size
	rmb	env:minstack*2-env:size
tcbstack:$FA18
	rpt	env:size
	fcb	0
	org	*-env:cc
stack:$FA18
	org	tcbstack:$FA18+env:p
	fdb	sdos+sdos:vtedittask
	org	tcbstack:$FA18+env:cc
	fcb	$80*m6809	set 'E' flag for 6809
	org	stack:$FA18+env:cc
dcbname:$FAA4
	fcc	/LPT:/
	fcb	0
	ifund	ttydcb
ttydcb
	fin	ttydcb
dcb:$FAA4
	rpt	dcb:vtsize
	fcb	0
	org	dcb:$FAA4+dcb:name
	fdb	dcbname:$FAA4
	fdb	nextdevicedcb
	fdb	sdos+sdos:vtdispatch
	org	dcb:$FAA4+dcb:reset
	jmp	reset:$FAA4
	okrts		dump nothing
	if	m6800!m6801
	nop
	fin
	jmp	ilputdev:$FAA4
	jmp	ilgetdev:$FAA4
	jmp	illdeviceop	no extra control calls defined
	jmp	illdeviceop	no extra status calls defined
	jmp	tlcheckready:$FAA4	go check for acia ready
	org	dcb:$FAA4+dcb:outputtoblk
	ifund	ttytimeouts
ttytimeouts
	fin	ttytimeouts
outputtoblk:$FAA4
	fdb	inputtoblk:$FAA4
	fdb	0
	fdb	sdos+sdos:vtoutputto
	fdb	dcb:$FAA4
	org	dcb:$FAA4+dcb:inputtoblk
inputtoblk:$FAA4
	fdb	nexttimeout
nexttimeout	set	ttytimeouts
	fdb	0
	fdb	sdos+sdos:vtinputto
	fdb	dcb:$FAA4
	org	dcb:$FAA4+dcb:tcb
	fdb	tcb:$FAA4
	org	dcb:$FAA4+dcb:taskstack
	fdb	tcbstack:$FAA4
	org	dcb:$FAA4+dcb:ringinbase
	fdb	inbuf:$FAA4
	fdb	inbufsize:$FAA4
	org	dcb:$FAA4+dcb:ringoutbase
	fdb	outbuf:$FAA4
	fdb	outbufsize:$FAA4
	org	dcb:$FAA4+dcb:ringoutthreshold
	fcb	outbufsize:$FAA4//10
	org	dcb:$FAA4+dcb:linebuf
	fdb	linebuf:$FAA4
	org	dcb:$FAA4+dcb:linebuflen
	fcb	linebufsize:$FAA4
	org	dcb:$FAA4+dcb:clearin
	jmp	sdos+sdos:vtclearin
	jmp	sdos+sdos:vtclearout
	jmp	sdos+sdos:vttlputbuf
	jmp	sdos+sdos:vttlgetbuf
	jmp	sdos+sdos:vtilputbuf
	jmp	sdos+sdos:vtilgetbuf
	org	dcb:$FAA4+dcb:profile
	fcb	profilenum.cenlpt	profile name
	org	dcb:$FAA4+dcb:doneflag
	fcb	1	device not busy
	org	dcb:$FAA4+dcb:oilquiescent
	fcb	1	interrupt not expected
	org	dcb:$FAA4+dcb:vtsize
	ifund	ttytcb
ttytcb
	fin	ttytcb
tcb:$FAA4
	fdb	nexttcb
	fdb	tcbstack:$FAA4
	fdb	0,0,0,0,0,0
	org	tcb:$FAA4+tcb:scratchpad+dcbpointer
	fdb	dcb:$FAA4
	org	tcb:$FAA4+tcb:size
	rmb	env:minstack*2-env:size
tcbstack:$FAA4
	rpt	env:size
	fcb	0
	org	*-env:cc
stack:$FAA4
	org	tcbstack:$FAA4+env:p
	fdb	sdos+sdos:vtedittask
	org	tcbstack:$FAA4+env:cc
	fcb	$80*m6809	set 'E' flag for 6809
	org	stack:$FAA4+env:cc
	fin	iodriverram
