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

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

?? tskems.asm

?? c語言寫的一個多任務內核
?? ASM
字號:
;
;	--- Version 2.2 90-10-12 10:38 ---
;
;	CTask - EMS support
;
;	Public Domain Software written by
;		Thomas Wagner
;		Ferrari electronic Gmbh
;		Beusselstrasse 27
;		D-1000 Berlin 21
;		Germany
;
;	This module contains the EMS interface. CTask version 2.1
;	will save and restore the EMS page map (the LIM 3.2 compatible
;	64k standard frame only) on a task switch if EMS support is 
;	installed.
;
;	If the EMS driver supports it, the LIM 4.0 save/restore
;	partial page map function is used. If this function is not
;	available, the LIM 3.2 full page map save/restore call is used,
;	provided that the space in the TCB (EMS_SAVE_SIZE) can hold
;	the page map information.
;
	name	tskems
;
	include	tsk.mac
;
	IF	DOS AND EMS
;
	.tsk_model
;
	Pubfunc	tsk_install_ems
;
	extrn	tsk_glob_rec: byte
;
;
	.tsk_data
;
emm_name	db	"EMMXXXX0"
;
ems_map		dw	4
		dw	4 dup(?)
;
getfunc		dw	?
setfunc		dw	?
;
	.tsk_edata
	.tsk_code
;
;	tsk_install_ems	installs EMS support if an EMS driver is
;	present, and saving the page map is possible.
;
;	Returns 1 is EMS installed, 0 if no driver, -1 if saving
;	is impossible.
;
Localfunc tsk_install_ems,<uses si di>
;
	IFDEF	LOAD_DS
	push	ds
	mov	ax,@CTASK_DATA
	mov	ds,ax
	ENDIF
	xor	ax,ax
	mov	es,ax
	mov	es,word ptr es:[67h*4+2]
	mov	di,0ah
	mov	si,offset emm_name
	mov	cx,8
	repe cmpsb
	je	ems_there
	jmp	no_ems
;
;	EMS is installed, but the partial map functions failed.
;	Try the full page map save/restore, which is present in
;	LIM 3.2.
;
try_32:
	mov	ax,4e03h	; get size of full page map save array
	int	67h
	or	ah,ah
	jnz	bad_ems		; we can't save if this fails
	cmp	al,EMS_SAVE_SIZE
	ja	bad_ems		; we can't save if array too large
	mov	getfunc,4e00h	; get full map
	mov	setfunc,4e01h	; set full map
	jmp	enter_ok
;
bad_ems:
	mov	ax,-1
	jmp	inst_ems_end
;
;	EMS is installed, check if we can save a partial page
;	map in the reserved space, and if the save partial page map
;	call is implemented at all.
;
ems_there:
	mov	ax,4f02h	; get size of partial page map save array
	mov	bx,4		; for the four standard pages
	int	67h
	or	ah,ah
	jnz	try_32		; if this call fails, we might have LIM 3.2
	cmp	al,EMS_SAVE_SIZE
	ja	bad_ems		; we can't save if array too large
;
;	The partial page map call is available, and the space allocated
;	in the TCB is sufficient. Now we have to build the page table
;	for the get partial map function.
;
;	Get physical pages
;
	mov	ax,5801h	; get number of entries
	int	67h
	or	ah,ah
	jnz	try_32		; if this call fails, we might have LIM 3.2
	mov	al,4
	mul	cl		; space required
	sub	sp,ax		; make room on stack
	mov	di,sp
	push	ax		; save size
	mov	ax,ss
	mov	es,ax
	mov	ax,5800h	; get physical page array
	int	67h
	or	ah,ah
	jz	phys_ok		; if this call fails, we might have LIM 3.2
	pop	ax
	add	sp,ax
	jmp	try_32
;
;	Find the physical page address for the first four pages
;	(the LIM 3.2 64k frame)
;
phys_ok:
	mov	ax,-1
;
first_loop:
	cmp	word ptr es:[di+2],ax	; compare logical page number
	ja	first_next		; skip if above what we already found
	mov	ax,word ptr es:[di+2]	; the new minimum page
	mov	bx,di			; save the index
	mov	dx,cx			; and the remaining entries
	or	ax,ax
	jz	first_found
;
first_next:
	add	di,4
	loop	first_loop
;
;	We found the first logical page. Now copy the physical
;	page numbers for the first four pages to the array.
;
first_found:
	mov	di,offset ems_map
	mov	word ptr [di],4		; four entries
	add	di,2
	mov	cx,4
;
enter_map:
	mov	ax,es:[bx]		; physical page
	mov	[di],ax			; store in map array
	add	bx,4
	add	di,2
	dec	cx
	jz	enter_rdy
	dec	dx
	jnz	enter_map
	mov	bx,sp			; recycle to start of list
	add	bx,2			; SP+2 since we pushed AX
	jmp	enter_map
;
enter_rdy:
	pop	ax
	add	sp,ax
	mov	getfunc,4f00h		; get partial map
	mov	setfunc,4f01h		; set partial map
;
;	Enter the functions into the global variable block
;
enter_ok:
	mov	word ptr tsk_glob_rec.ems_save,offset @ems_savefn
	mov	word ptr tsk_glob_rec.ems_save+2,cs
	mov	word ptr tsk_glob_rec.ems_rest,offset @ems_restfn
	mov	word ptr tsk_glob_rec.ems_rest+2,cs
	mov	word ptr tsk_glob_rec.ems_savetsk,offset @save_ems_tsk
	mov	word ptr tsk_glob_rec.ems_savetsk+2,cs
;
	mov	ax,1
	jmp	short inst_ems_end
;
no_ems:
	xor	ax,ax
;
inst_ems_end:
	IFDEF	LOAD_DS
	pop	ds
	ENDIF
	ret
;
tsk_install_ems	endp
;
;
;	The save and restore routines are called by the scheduler,
;	and are entered with
;		DS    = CTask data segment
;		ES:DI = TCB
;
;	ems_savefn - Save EMS context function
;
@ems_savefn	proc	far
;
	push	si
	push	di
	lea	di,t_ems_map[di]	; destination
	mov	si,offset ems_map	; not used for full map
	mov	ax,getfunc		; get (partial) page map
	int	67h
	pop	di
	pop	si
	ret
;
@ems_savefn	endp
;
;	ems_restfn - Restore EMS context function
;
@ems_restfn	proc	far
;
	mov	ax,setfunc		; set (partial) page map
	push	ds
	push	si
	mov	si,es
	mov	ds,si
	lea	si,t_ems_map[di]	; source
	int	67h
	pop	si
	pop	ds
	ret
;
@ems_restfn	endp
;
;	save_ems_tsk	Save current EMS context in the specified task's TCB
;
@save_ems_tsk	proc	far uses di, task: far ptr
;
	IFDEF	LOAD_DS
	push	ds
	mov	ax,@CTASK_DATA
	mov	ds,ax
	ENDIF
	les	di,task
	call	@ems_savefn
	IFDEF	LOAD_DS
	pop	ds
	ENDIF
	ret
;
@save_ems_tsk	endp
;
	.tsk_ecode
;
	ENDIF
;
	end

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色哟哟一区二区三区| 91精品国产入口| 欧美日韩视频在线第一区| 日韩一级片在线播放| 日韩一区在线看| 国模套图日韩精品一区二区| 欧洲一区在线观看| 国产精品白丝在线| 精品无码三级在线观看视频| 日本高清不卡视频| 国产精品婷婷午夜在线观看| 久久97超碰色| 欧美电影影音先锋| 亚洲地区一二三色| 在线视频一区二区三| 国产精品天干天干在观线| 国产在线播放一区| 欧美一区二区大片| 日日夜夜免费精品| 在线免费不卡电影| 亚洲精品网站在线观看| 91一区二区三区在线观看| 久久午夜免费电影| 国产在线精品一区二区| 欧美大片日本大片免费观看| 日本不卡不码高清免费观看| 欧美日韩视频专区在线播放| 亚洲国产毛片aaaaa无费看| 色婷婷久久久久swag精品| 国产精品乱人伦| 成人网男人的天堂| 国产精品视频一二三| 国产精品一区二区在线播放| 久久夜色精品国产噜噜av| 狠狠色丁香婷婷综合久久片| ww亚洲ww在线观看国产| 国产经典欧美精品| 国产欧美精品一区二区色综合朱莉| 久久99国产精品麻豆| 精品播放一区二区| 国产剧情一区二区三区| 欧美极品aⅴ影院| 成人性视频网站| 亚洲视频1区2区| 在线影院国内精品| 午夜视频在线观看一区二区三区| 欧美午夜在线观看| 日韩av一级片| 精品欧美乱码久久久久久 | 国产成人精品影院| 国产精品久久久久久久久免费相片 | 色综合久久综合网97色综合| 一区二区三区四区中文字幕| 欧美综合久久久| 美女脱光内衣内裤视频久久网站| 精品国产乱码91久久久久久网站| 国产成人小视频| 亚洲视频你懂的| 日韩一区二区三区四区| 国产福利精品导航| 亚洲黄色尤物视频| 欧美大胆一级视频| eeuss影院一区二区三区| 亚洲一区二区视频| 欧美一二三区精品| 99视频热这里只有精品免费| 亚洲成人免费视频| 国产欧美中文在线| 欧美日韩成人高清| 国产成人在线网站| 亚洲一区影音先锋| 精品国产第一区二区三区观看体验| 国产成人免费视| 亚洲电影欧美电影有声小说| 国产婷婷色一区二区三区在线| 色狠狠色噜噜噜综合网| 国产自产v一区二区三区c| 亚洲精品久久久久久国产精华液| 欧美一激情一区二区三区| 波多野结衣视频一区| 免费观看久久久4p| 亚洲精品乱码久久久久久黑人| 精品奇米国产一区二区三区| 欧美在线你懂的| 粉嫩欧美一区二区三区高清影视| 亚洲1区2区3区4区| 综合自拍亚洲综合图不卡区| 欧美电视剧免费全集观看| 91福利区一区二区三区| 国产激情一区二区三区四区| 水野朝阳av一区二区三区| 亚洲视频一区在线观看| 久久久久亚洲综合| 制服丝袜成人动漫| 在线观看亚洲精品视频| 99精品欧美一区二区三区小说| 久久国产成人午夜av影院| 亚洲专区一二三| 亚洲欧洲精品一区二区三区不卡| 久久综合999| 日韩一区二区精品在线观看| 欧美最猛黑人xxxxx猛交| gogogo免费视频观看亚洲一| 国产精品主播直播| 国产一区二区三区免费看 | 欧美国产亚洲另类动漫| 亚洲精品一区二区三区影院| 666欧美在线视频| 555夜色666亚洲国产免| 欧美日韩一区成人| 欧洲av在线精品| 欧美在线综合视频| 欧美午夜精品久久久久久孕妇| 99久久精品免费| www.色精品| 99视频精品全部免费在线| www.亚洲激情.com| 一本一道久久a久久精品| 99精品久久免费看蜜臀剧情介绍| 波多野洁衣一区| 精品三级在线观看| 精品日韩成人av| 国产欧美日韩另类一区| 国产女主播一区| 18成人在线观看| 亚洲欧美激情视频在线观看一区二区三区| 国产精品视频yy9299一区| 国产精品国产a| 伊人婷婷欧美激情| 亚洲电影一级片| 奇米一区二区三区av| 国产一区二区成人久久免费影院 | 成人性色生活片| 99久久夜色精品国产网站| 一本大道综合伊人精品热热| 日本精品裸体写真集在线观看 | 国产黄色精品视频| 99久久精品免费看国产| 欧美日韩情趣电影| 日韩精品一区二区三区视频| 久久久久国色av免费看影院| 综合电影一区二区三区| 婷婷综合另类小说色区| 国产一区999| 99精品视频中文字幕| 8v天堂国产在线一区二区| 国产片一区二区| 视频一区在线播放| 国产91精品在线观看| 欧美日韩精品福利| 久久久久久久av麻豆果冻| 亚洲图片一区二区| 国产98色在线|日韩| 欧美影院一区二区| 久久久精品欧美丰满| 一区二区三区不卡在线观看| 九九视频精品免费| 91理论电影在线观看| 精品国产一区a| 亚洲一级片在线观看| 国产大陆精品国产| 欧美高清www午色夜在线视频| 国产午夜亚洲精品理论片色戒| 亚洲美女淫视频| 国产综合色产在线精品| 欧美午夜精品久久久| 国产色婷婷亚洲99精品小说| 亚洲sss视频在线视频| 成人app在线| 26uuu国产电影一区二区| 午夜影院在线观看欧美| 成人免费视频国产在线观看| 91精品国产色综合久久不卡电影 | 午夜国产精品一区| 99久久免费国产| 久久久久久久精| 狂野欧美性猛交blacked| 国产精品天干天干在观线| 日韩av一级片| 欧美日韩一卡二卡三卡| 国产精品国产三级国产| 韩国精品主播一区二区在线观看| 欧美日韩国产一级片| 亚洲精品五月天| 91在线精品一区二区| 欧美韩日一区二区三区四区| 另类欧美日韩国产在线| 91精品国产福利在线观看| 夜夜精品浪潮av一区二区三区| www.日韩大片| 国产精品久久久久久久浪潮网站| 国产盗摄精品一区二区三区在线 | 欧美主播一区二区三区| 一区二区在线看| 91在线观看污| 成人欧美一区二区三区小说 | 欧美系列亚洲系列| 亚洲黄色小说网站| 欧美性xxxxxxxx| 亚洲国产日韩av|