		.title	test			;
		.list	meb			;
						;
		R0	= %0			;
		R1	= %1			;
		R2	= %2			;
		R3	= %3			;
		R4	= %4			;
		R5	= %5			;
		SP	= %6			;
		PC	= %7			;
						;
		RXCSR	= 177560		;
		RXDAT	= 177562		;
		TXCSR	= 177564		;
		TXDAT	= 177566		;
						;
		TXSIZE	= 128.			;
		RXSIZE	= 16.			;
;_____________________________________________________________________________
;
		.macro	.print	ARG		;
		mov	R0,-(SP)		;
		mov	ARG, R0			;
		jsr	PC, print		;
		mov	(SP)+,R0		;
		.endm				;
						;
;_____________________________________________________________________________
;
		.macro	vect, offset, adr, val	;
		.	= offset		;
	.if	nb, <adr>			;
		.word	adr			;
	.iff					;
		.word	.+2			;
	.endc					;
	.if	nb, <val>			;
		.word	val			;
	.iff					;
		.word	340			;
	.endc					;
		.endm				;
;_____________________________________________________________________________
;
		.asect				; interrupts 0-376
		. = 0				;
						;
		vect	0			;
		vect	4, godt			;
		vect	10			;
		vect	14			;
		vect	20			;
		vect	24, entry		; initial start vector
		vect	30			; for boot mode 0
		vect	34			;
		vect	40			;
		vect	44			;
		vect	50			;
		vect	54			;
		vect	60, isrrx		; rx console
		vect	64, isrtx		; tx console
		vect	70			;
		vect	74			;
		vect	100, isr50		;
		vect	104			;
		vect	110			;
		vect	114			;
		vect	120			;
		vect	124			;
		vect	130			;
		vect	134			;
		vect	140			;
		vect	144			;
		vect	150			;
		vect	154			;
		vect	160			;
		vect	164			;
		vect	170			;
		vect	174			;
		vect	200			;
		vect	204			;
		vect	210			;
		vect	214			;
		vect	220			;
		vect	224			;
		vect	230			;
		vect	234			;
		vect	240			;
		vect	244			;
		vect	250			;
		vect	254			;
		vect	260			;
		vect	264			;
		vect	270			;
		vect	274			;
		vect	300			;
		vect	304			;
		vect	310			;
		vect	314			;
		vect	320			;
		vect	324			;
		vect	330			;
		vect	334			;
		vect	340			;
		vect	344			;
		vect	350			;
		vect	354			;
		vect	360			;
		vect	364			;
		vect	370			;
		vect	374			;
;_____________________________________________________________________________
;
		.rept	100.			;
		.word	0			;
		.endr				;
$stack		=.				;
						;
$ticks:		.word	0			;
						;
$txbeg:		.word	0			;
$txend:		.word	0			;
$txbuf:		.blkb	TXSIZE			;
		.even				;
						;
$rxbeg:		.word	0			;
$rxend:		.word	0			;
$rxbuf:		.blkb	RXSIZE			;
		.even				;
;_____________________________________________________________________________
;
isr50:		inc	$ticks			;
		rti				;
						;
;_____________________________________________________________________________
;
isrrx:		mov	R0, -(SP)		;
		mov	$rxbeg,	R0		;
		movb	@#RXDAT, (R0)+		;
		cmp	R0, #$rxbuf+RXSIZE	;
		blo	1$			;
		mov	#$rxbuf, R0		;
1$:		mov	R0, $rxbeg		;
		mov	(SP)+, R0		;
		rti				;
						;
inkey:		mov	R1, -(SP)		;
		mov	$rxend,	R1		;
		mov	$rxbeg,	R0		;
		sub	R1, R0			;
		bne	1$			;
		mov	(SP)+, R1		;
		sec				;
		rts	PC			;
						;
1$:		movb	(R1)+, R0		;
		cmp	R1, #$rxbuf+RXSIZE	;
		blo	2$			;
		mov	#$rxbuf, R1		;
2$:		mov	R1, $rxend		;
		mov	(SP)+, R1		;
		clc				;
		rts	PC			;
						;
getch:		jsr	PC, inkey		;
		bcs	getch			;
		rts	PC			;
						;
;_____________________________________________________________________________
;
isrtx:		mov	R0, -(SP)		;
		mov	$txend,	R0		;
		cmp	R0, $txbeg		;
		bne	1$			;
		bic	#100, @#TXCSR		;
		mov	(SP)+, R0		;
		rti				;
						;
1$:		movb	(R0)+, @#TXDAT		;
		cmp	R0, #$txbuf+TXSIZE	;
		blo	2$			;
		mov	#$txbuf, R0		;
2$:		mov	R0, $txend		;
		mov	(SP)+, R0		;
		rti				;
						;
putch:						;
;		tstb	@#TXCSR			;
;		bpl	putch			;
;		movb	R0, @#TXDAT		;
;		rts	PC			;
;						;
		mov	R1, -(SP)		;
		mov	$txbeg,	R1		;
		movb	R0, (R1)+		;
		cmp	R1, #$txbuf+TXSIZE	;
		blo	1$			;
		mov	#$txbuf, R1		;
1$:		cmp	R1, $txend		;
		beq	1$			;
		mov	R1, $txbeg		;
		bis	#100, @#TXCSR		;
		mov	(SP)+, R1		;
		rts	PC			;
						;
print:		mov	R1, -(SP)		;
		mov	R0, R1			;
1$:		movb	(R1)+, R0		;
		beq	2$			;
		jsr	PC, putch		;
		br	1$			;
2$:		mov	(SP)+, R1		;
		rts	PC			;
						;
;_____________________________________________________________________________
;
outhex:		mov	R1, -(SP)		;
		mov	R0, -(SP)		;
						;
		bic	#177760, R0		;
		movb	1$(R0),	R1		;
		mov	(SP), R0		;
		asr	R0			;
		asr	R0			;
		asr	R0			;
		asr	R0			;
		bic	#177760, R0		;
		movb	1$(R0),	R0		;
		swab	R0			;
		bis	R0, R1			;
		mov	R1, @#177714		;
						;
		mov	(SP), R0		;
		swab	R0			;
		bic	#177760, R0		;
		movb	1$(R0),	R1		;
		movb	1(SP), R0		;
		asr	R0			;
		asr	R0			;
		asr	R0			;
		asr	R0			;
		bic	#177760, R0		;
		movb	1$(R0),	R0		;
		swab	R0			;
		bis	R0, R1			;
		mov	R1, @#177715		;
						;
		mov	(SP)+, R0		;
		mov	(SP)+, R1		;
		rts	PC			;
						;
1$:		.byte	077, 006, 133, 117	;
		.byte	146, 155, 175, 007	;
		.byte	177, 157, 167, 174	;
		.byte	071, 136, 171, 161	;
						;
;_____________________________________________________________________________
;
entry:		mov	#037546, @#177714	; 3F 66 0 011 111 101 100 110
		mov	#003177, @#177715	; 06 7F 0 000 011 001 111 111
		mov	#$stack, SP		; "1804"
						;
		mov	#$rxbuf, $rxend		;
		mov	#$rxbuf, $rxbeg		;
		mov	#$txbuf, $txend		;
		mov	#$txbuf, $txbeg		;
						;
		mov	R0, @#140000		; bus timeout test
godt:						;
		mov	#100, @#RXCSR		;
		mov	#000, @#TXCSR		;
		clr	R0			;
		mtps	R0			;
						;
;_____________________________________________________________________________
;
start:		.print	#mes1			;
						;
1$:		jsr	PC, getch		;
		jsr	PC, putch		;
		br	1$			;

mes1:	.asciz	<15><12><15><12>"LSI-11 started, echo test....@"<12><15>
;_____________________________________________________________________________
;
		.end


