ttyint.s,v

来自「TCP-IP红宝书源代码」· S,V 代码 · 共 112 行

S,V
112
字号
head	1.1;
access;
symbols;
locks
	dls:1.1; strict;
comment	@# @;


1.1
date	94.05.08.06.01.42;	author dls;	state Old;
branches;
next	;


desc
@@


1.1
log
@Initial revision
@
text
@|* ttyint.s -  Asm_ttyint


|*------------------------------------------------------------------------
|* ttyint  --  zilog chip interrupt service routine
|*------------------------------------------------------------------------
	.data

ZCONTROLA = 0xfe02004	| A serial line
ZCONTROLB = 0xfe02000	| B serial line
ZCONTROLM = 0xfe00000	| Mouse serial line

	.text
	.globl	_Asm_ttyint


_Asm_ttyint:
	moveml	#0xc1c0, sp@@-		| save d0, d1, d7, a0, a1

|
| read from RR0 of the chip
|
	movl	#ZCONTROLA,a0		| address of A channel
	movb	#0x0,a0@@		| select register 3	

	moveq	#20,d0			| must delay before reading
	movl	_cpudelay,d1
	asrl	d1,d0
1:	subql	#1,d0
	bgts	1b

	movb	a0@@,d7			| d7 = RR0

|
| test for ttyline break
|
	btst	#0x7,d7			| 1xxx xxxx = break detected
	beq	nobreak
break:
	jsr	_ttybreak		| call break routine
nobreak:


|
| read from RR3 of the chip
|
	movl	#ZCONTROLA,a0		| address of A channel
	movb	#0x3,a0@@		| select register 3	

	moveq	#20,d0			| must delay before reading
	movl	_cpudelay,d1
	asrl	d1,d0
1:	subql	#1,d0
	bgts	1b

	movb	a0@@,d7			| d7 = RR3
|
| test for transmit interrupt
|
	btst	#0x4,d7			| xxx1 xxxx = xmit interrupt pending
	beq	noxmit
xmit:
	pea	_tty
	jsr	_ttyoin			| call output interrupt routine
	addqw	#0x4,sp
noxmit:

|
| test for receive interrupt
|
	btst	#0x5,d7			| xx1x xxxx = recv int. pending
	beq	norecv
recv:
	pea	_tty
	jsr	_ttyiin			| call input interrupt routine
	addqw	#0x4,sp
norecv:

|
| now, reset the interrupt and return
|
	movl	#ZCONTROLA,a0		| address of A channel
	movb	#0x38,a0@@		| reset interrupt

ret:
	moveml	sp@@+,#0x0383		| restore d0, d1, d7, a0, a1
	rte				| Return from interrupt
@

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?