亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? sccvec.s

?? 這是新華龍(www.xhl.xom.xn)開發的
?? S
字號:
; Modified from the PE1CHL version to work with NOS.
; This file cannot be used with the PE1CHL sources.

include asmglobal.h
	extrn	Stktop,Spsave,Sssave,doret:proc,scctim:proc,eoi:proc
	extrn	porg:proc
	extrn	Sccvecloc,Sccpolltab,Sccmaxvec:byte

ifdef	LARGEDATA
	extrn	Sccchan:dword
else
	extrn	Sccchan:word
endif
	
	.CODE
dbase	dw	@Data		; save loc for ds (must be in code segment)

; sccvec is the interrupt handler for SCC interrupts using INTACK

	public sccvec
	label	sccvec	far

	cli			; this code is not re-entrant, so make sure it
				; is not interrupted. some multi-taskers
				; intercept interrupt handlers, so be careful!


	cld
	push	ds		; save on user stack

	mov	ds,cs:dbase

	mov	Sssave,ss	; stash user stack context
	mov	Spsave,sp

	mov	ss,cs:dbase		; set up interrupt stack
	lea	sp,Stktop

	PUSHALL
	push	es
	call	eoi
ifndef	LARGEDATA
	mov	es,ax		; small data assumes ES == DS
endif
	cld			; in case "movsb" or "movsw" is used


; Read SCC interrupt vector and check it

sccint: mov	dx,Sccvecloc
	out	dx,al			; Generate INTACK
	jmp	short d1		; Delay
d1:	jmp	short d2
d2:	jmp	short d3
d3:	in	al,dx			; Read the vector
	cmp	al,Sccmaxvec		; Check for a legal vector
	jnc	clrret			; It should not be >= the maximum
					; If it is, ignore the interrupt

; Extract channel number and status from vector. Determine handler address.

	mov	bl,al			; Copy vector (need it later for status)
	shr	bl,1			; Discard least significant bit
	jc	clrret			; It should not be a 1
	and	bx,7ch			; Isolate channel number (and make word)
	xor	bl,04h			; Toggle A/B channel bit
ifdef	LARGEDATA
	les	si,Sccchan[bx]	; Read address of channel structure
else
	shr	bl,1			; Discard another bit
	mov	si,Sccchan[bx]		; Read address of channel structure
endif
ifdef	LARGEDATA		; Test for NULL
	push	ax
	mov		ax,es
	test	ax,ax
	pop		ax
	jne	nn0
endif
	test	si,si			; Test for NULL
	je	clrret			; No channel struct, ignore it
nn0:
	and	ax,06h			; Isolate status info from vector
	add	ax,ax			; Make index in FAR PTR array
	mov	bx,ax			; It must be in BX

; Call the handler (defined in C), with Sccchan struct as a parameter

	push	es
	push	si			; Put channel struct as a parameter
ifdef	LARGEDATA
	call	dword ptr es:[bx+si]	; Call the handler
else
	call	dword ptr [bx+si]	; Call the handler
endif
	pop	si			; Get channel struct back
	pop	es

; Reset highest priority interrupt

ifdef	LARGEDATA
	mov	dx,es:16[si]		; Get control register address
else
	mov	dx,16[si]		; Get control register address
endif
	mov	al,38h			; "Reset Highest IUS" opcode
	out	dx,al			; to WR0
	jmp	short d4	; settling delay
d4:	jmp	short d5
d5:

; Determine if more interrupt requests are coming in from the SCCs

	jmp	sccint			; keep trying until no vector returned

; Clear the ISR bit in the PIC and return from interrupt

clrret:	
	mov	ax,0		; clear chain vector value (4/92 KA9Q)
	mov	dx,0
	jmp	doret			; execute code in pcint.asm

;	sccvec	endproc

; sccnovec is the interrupt handler for SCC interrupts using polling

	public sccnovec
	label sccnovec far
	
	cli			; this code is not re-entrant, so make sure it
				; is not interrupted. some multi-taskers
				; intercept interrupt handlers, so be careful!


	push	ds		; save on user stack
	mov	ds,cs:dbase

	mov	Sssave,ss	; stash user stack context
	mov	Spsave,sp

	mov	ss,cs:dbase		; set up interrupt stack
	lea	sp,Stktop

	PUSHALL
	push	es
	call	eoi
ifndef	LARGEDATA
	mov	es,ax		; small data assumes ES == DS
endif

	cld			; in case "movsb" or "movsw" is used


; Find the SCC generating the interrupt by polling all attached SCCs
; reading RR3A (the interrupt pending register)

sccintnv:
	lea	si,Sccpolltab		; Point to polling table
sccpoll:
	mov	dx,[si]			; Get chan A CTRL address
	inc	si
	inc	si
	test	dx,dx			; End of table without finding it
	je	clrret			; Then return from interrupt
	mov	al,3			; Select RR3A
	out	dx,al
	jmp	short d6	; Delay
d6:	jmp	short d7
d7:	jmp	short d8
d8:	in	al,dx
	test	al,al			; Test if a nonzero IP here
	jnz	sccip			; Yes, handle it
	inc	si			; No, next A CTRL
	inc	si
	jmp	sccpoll

; Read SCC interrupt vector from RR2B, it should always be correct
; Extract channel number and status from vector. Determine handler address.

sccip:	mov	dx,[si]			; Read B CTRL address
	mov	al,2			; Select RR2B
	out	dx,al
	jmp	short d9	; Delay
d9:	jmp	short d10
d10:	jmp	short d11
d11:	in	al,dx		; Read the vector
	mov	bl,al			; Copy vector (need it later for status)
	shr	bl,1			; Discard least significant bit
	and	bx,7ch			; Isolate channel number (and make word)
	xor	bl,04h			; Toggle A/B channel bit
ifdef	LARGEDATA
	les si,Sccchan[bx]
else
	shr	bl,1			; Discard another bit (Sccchan=words)
	mov	si,Sccchan[bx]		; Read address of channel structure
endif
ifdef	LARGEDATA		; Test for NULL
	push	ax
	mov		ax,es
	test	ax,ax
	pop		ax
	jne nn1
endif
	test	si,si			; Test for NULL
	je	clrret			; No channel struct, ignore it
nn1:
	and	ax,06h			; Isolate status info from vector
	add	ax,ax			; Make index in FAR PTR array
	mov	bx,ax			; It must be in BX

; Call the handler (defined in C), with Sccchan struct as a parameter

	push	es
	push	si			; Put channel struct as a parameter
ifdef	LARGEDATA
	call	dword ptr es:[bx+si]	; Call the handler
else
	call	dword ptr [bx+si]	; Call the handler
endif
	pop	si			; Remove parameter from stack
	pop	es

; Check for more interrupt pending bits

	jmp	sccintnv

;	sccnovec	endproc

	end

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产欧美精品一区aⅴ影院 | 亚洲图片欧美激情| 欧美成人精品福利| 538在线一区二区精品国产| 91理论电影在线观看| 大陆成人av片| av毛片久久久久**hd| 91同城在线观看| 91天堂素人约啪| 91福利社在线观看| 欧美揉bbbbb揉bbbbb| 欧美日韩高清影院| 日韩三级.com| 久久久亚洲精品一区二区三区 | 日本一区二区成人| 国产精品天干天干在观线| 国产精品人妖ts系列视频| 亚洲精品中文字幕乱码三区 | 91精品国产综合久久小美女| 3d动漫精品啪啪一区二区竹菊| 7777精品伊人久久久大香线蕉的 | 麻豆一区二区99久久久久| 奇米777欧美一区二区| 国产一区福利在线| 91麻豆国产福利精品| 欧美视频一区二区在线观看| 日韩一区二区免费在线电影| 久久久精品国产99久久精品芒果| 国产精品久久久久久亚洲毛片| 亚洲宅男天堂在线观看无病毒| 男人操女人的视频在线观看欧美| 国产91精品一区二区麻豆亚洲| 91久久奴性调教| 久久久五月婷婷| 亚洲制服欧美中文字幕中文字幕| 国产一区日韩二区欧美三区| 91成人在线观看喷潮| 欧美精品一区视频| 亚洲精品视频免费观看| 韩国成人在线视频| 日韩中文字幕亚洲一区二区va在线| 日韩精品福利网| 国产精品一卡二卡| 欧美三区在线视频| 久久久久国产精品厨房| 天天综合网天天综合色| 菠萝蜜视频在线观看一区| 欧美一级片在线观看| 亚洲天天做日日做天天谢日日欢| 免费久久99精品国产| 色噜噜狠狠色综合中国| 国产视频一区二区三区在线观看| 亚洲成av人片在www色猫咪| 成人午夜免费视频| 日韩视频一区二区| 亚洲大片在线观看| 色网综合在线观看| 久久久99久久| 国产在线播精品第三| 欧美一区二区三区系列电影| 亚洲最新视频在线观看| 99久久精品99国产精品| 久久久高清一区二区三区| 天堂成人免费av电影一区| 色婷婷久久一区二区三区麻豆| 久久久精品免费观看| 国产一本一道久久香蕉| 精品国产乱码久久久久久久久| 丝袜脚交一区二区| 欧美电影一区二区| 午夜欧美视频在线观看| 欧美亚洲一区二区在线观看| 亚洲精选在线视频| 精品视频999| 亚洲人成网站精品片在线观看| 成人av动漫网站| 亚洲人成小说网站色在线| 97精品国产97久久久久久久久久久久| 欧美精三区欧美精三区 | 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 一级中文字幕一区二区| 色综合久久99| 一个色妞综合视频在线观看| 色婷婷狠狠综合| 亚洲成在线观看| 91精品国产综合久久蜜臀| 免费成人av资源网| 精品国产乱码久久久久久浪潮| 国产精品一二一区| 亚洲视频资源在线| 91福利视频久久久久| 免费成人在线视频观看| 久久夜色精品国产欧美乱极品| 国产乱码精品一区二区三| 中文在线资源观看网站视频免费不卡| 成人av在线播放网站| 亚洲综合无码一区二区| 欧美一区二区三区系列电影| 国内成人精品2018免费看| 日韩一区欧美小说| 欧美日韩国产美女| 国产精品538一区二区在线| 中文字幕在线不卡国产视频| 欧美日韩一卡二卡三卡 | 亚洲精品国产a| 91麻豆精品91久久久久久清纯| 国产一区二区在线观看免费| 国产精品久久久久天堂| 在线不卡免费欧美| 丰满少妇久久久久久久| 天天综合色天天综合| 国产欧美视频一区二区| 欧美系列在线观看| 国产a精品视频| 亚洲6080在线| 国产精品久久久一区麻豆最新章节| 91成人国产精品| 国产精品一二三区| 午夜视频一区二区| √…a在线天堂一区| 日韩欧美国产高清| 欧美在线一二三| 国产成人啪午夜精品网站男同| 天天综合网天天综合色| 亚洲日本护士毛茸茸| 久久嫩草精品久久久精品一| 欧美日韩aaa| 99久久精品一区二区| 国内精品写真在线观看 | 日韩欧美一卡二卡| 欧美午夜精品久久久久久孕妇| 国产91精品欧美| 麻豆成人免费电影| 亚洲成av人影院| 亚洲午夜羞羞片| 1区2区3区精品视频| 国产精品视频线看| 国产区在线观看成人精品 | 福利电影一区二区| 国产一区二区久久| 国产又粗又猛又爽又黄91精品| 日韩av不卡在线观看| 亚洲成年人网站在线观看| 亚洲视频狠狠干| 国产精品久久久久久久久果冻传媒| 精品剧情v国产在线观看在线| 777精品伊人久久久久大香线蕉| 在线观看亚洲精品视频| 在线观看视频欧美| 欧美最猛性xxxxx直播| 色综合久久久久久久久久久| 91老司机福利 在线| 一本一道波多野结衣一区二区| 99热国产精品| 一本大道久久a久久综合婷婷| 91婷婷韩国欧美一区二区| av电影在线观看不卡| 一本色道久久加勒比精品| 成人毛片在线观看| 91猫先生在线| 在线观看日产精品| 欧美另类z0zxhd电影| 91精品在线一区二区| 久久久久久久综合色一本| 久久久久久日产精品| 国产精品美女久久久久aⅴ国产馆| 国产精品国产精品国产专区不蜜 | 蓝色福利精品导航| 精品一区二区三区视频在线观看| 国内成人自拍视频| 91在线免费播放| 欧美三级韩国三级日本一级| 91精品国产91热久久久做人人| 精品久久久久一区二区国产| 欧美激情在线一区二区三区| 中文字幕亚洲不卡| 天天免费综合色| 国内精品视频一区二区三区八戒 | 美女任你摸久久| 国产成人精品三级| 在线日韩国产精品| 精品美女在线观看| 亚洲天堂2014| 日本不卡123| 成人av午夜影院| 欧美日韩国产另类一区| 欧美成人午夜电影| 亚洲精品美国一| 国产一区中文字幕| 欧美日韩的一区二区| 中文字幕欧美三区| 亚洲地区一二三色| 99久久精品99国产精品| 日韩精品一区二区三区视频| 亚洲欧洲国产专区| 黄色日韩网站视频| 欧美剧情片在线观看| 国产精品久久夜| 国产一区福利在线| 日韩精品一区二区三区在线观看|