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

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

?? kernel.asm

?? 這是DOS操作系統啟動的源代碼 里面是匯編語言 包括了部分的驅動程序
?? ASM
?? 第 1 頁 / 共 2 頁
字號:
;
; File:
;			   kernel.asm
; Description:
;			kernel start-up code
;
;		     Copyright (c) 1995, 1996
;			Pasquale J. Villani
;			All Rights Reserved
;
; This file is part of DOS-C.
;
; DOS-C is free software; you can redistribute it and/or
; modify it under the terms of the GNU General public License
; as published by the Free Software Foundation; either version
; 2, or (at your option) any later version.
;
; DOS-C is distributed in the hope that it will be useful, but
; WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See
; the GNU General public License for more details.
;
; You should have received a copy of the GNU General public
; License along with DOS-C; see the file COPYING.  If not,
; write to the Free Software Foundation, 675 Mass Ave,
; Cambridge, MA 02139, USA.
;
; $Header:   C:/dos-c/src/kernel/kernel.asv   1.10   03 Feb 1998 23:30:08   patv  $
;
; $Log:   C:/dos-c/src/kernel/kernel.asv  $
;
;   Rev 1.10   03 Feb 1998 23:30:08   patv
;Added a start-up stack for loadable device drivers.  Need the separate
;stack so that all int 21h functions can be called.
;
;   Rev 1.9   22 Jan 1998  4:09:24   patv
;Fixed pointer problems affecting SDA
;
;   Rev 1.8   06 Jan 1998 20:12:32   patv
;Reduced device driver stack sizes.
;
;   Rev 1.7   04 Jan 1998 17:26:18   patv
;Corrected subdirectory bug
;
;   Rev 1.6   03 Jan 1998  8:36:50   patv
;Converted data area to SDA format
;
;   Rev 1.5   06 Feb 1997 22:43:18   patv
;Reduced stack sizes for block and clock devices.
;
;   Rev 1.4   06 Feb 1997 19:05:48   patv
;Added hooks for tsc command
;
;   Rev 1.3   29 May 1996 21:03:44   patv
;bug fixes for v0.91a
;
;   Rev 1.2   19 Feb 1996  3:24:06   patv
;Added NLS, int2f and config.sys processing
;
;   Rev 1.1   01 Sep 1995 17:54:24   patv
;First GPL release.
;
;   Rev 1.0   02 Jul 1995  9:05:44   patv
;Initial revision.
;
; $EndLog$
;

		page	60,132
		title	kernel start-up code

IFDEF ??version
_TEXT		segment	byte public 'CODE'
DGROUP		group	_FIXED_DATA,_DATA,_BSS,_BSSEND	; small model
		assume	cs:_TEXT,ds:DGROUP,ss:DGROUP
_TEXT		ends

_FIXED_DATA	segment para public 'DATA'
_FIXED_DATA	ends

_DATA		segment word public 'DATA'
_DATA		ends

_BSS		segment word public 'BSS'
_BSS		ends

_BSSEND		segment byte public 'STACK'
_BSSEND		ends

ELSE
_TEXT		segment	byte public 'CODE'
_TEXT		ends

_FIXED_DATA	segment para public 'DATA'
_FIXED_DATA	ends

_DATA		segment word public 'DATA'
_DATA		ends

CONST		segment word public 'CONST'
CONST		ends

_BSS		segment word public 'BSS'
_BSS		ends

_BSSEND		segment byte public 'STACK'
_BSSEND		ends

DGROUP		group	CONST,_DATA,_BSS,_BSSEND	; small/tiny model
		assume	ds:DGROUP, ss:DGROUP
ENDIF


_TEXT		segment	byte public 'CODE'
		assume	cs:_TEXT

		extrn	_main:near
		extrn	_con_driver:near
		extrn	_blk_driver:near
		extrn	_clk_driver:near

STACK_SIZE	equ	384/2		; stack allocated in words

;---------------------------------------------------
;
; Device entry points
;
cmdlen	equ	0			; Length of this command
unit	equ	1			; Subunit Specified
cmd	equ	2			; Command Code
status	equ	3			; Status
media	equ	13			; Media Descriptor
trans	equ	14			; Transfer Address
count	equ	18			; Count of blocks or characters
start	equ	20			; First block to transfer

IFNDEF ??version
 IF STANDALONE EQ 1
PUBLIC	__acrtused 		; trick used by MSC to force in startup
	__acrtused = 9876h
 ENDIF
ENDIF
		;
		;
		page
		;
		;
entry		proc	near
IF STANDALONE EQ 1
		jmp	short kernel_start
ENDIF

		;
		; The "CON" device
		;
		; This device is the standard console device used by
		; XDOS and kernel
		;
		public	_con_dev
_con_dev	label	far
		dd	-1
		dw	8003h		; con device (stdin & stdout)
		dw	offset con_strategy
		dw	offset con_entry
		db	'CON     '

		;
		; Header for device
		;
		public	_blk_dev
_blk_dev	label	far
		dd	-1
		dw	0000h		; block device
		dw	offset blk_strategy
		dw	offset blk_entry
		db	4
		db	0,0,0,0,0,0,0

		;
		; Header for device
		;
		public	_clk_dev
_clk_dev	label	far
		dd	-1
		dw	8004h		; clock device
		dw	offset clk_strategy
		dw	offset clk_entry
		db	'CLOCK$  '

		page
		;
		; kernel start-up
		;
IF STANDALONE EQ 1
kernel_start:	cli			; prevent interrupts while starting
		mov	ax,DGROUP
		mov	ss,ax
		mov	sp,offset DGROUP:tos
		; inititalize entry stack for high water tests
;		mov	di,seg stack_bottom
;		mov	es,di
;		mov	di,offset stack_bottom
;		mov	ax,offset last
;		sub	ax,di
;		sar	ax,1
;		mov	cx,ax
;		mov	ax,09090h
;		cld
;		rep	stosw
		; inititalize api stacks for high water tests
		mov	di,seg apistk_bottom
		mov	es,di
		mov	di,offset apistk_bottom
		mov	ax,offset apistk_top
		sub	ax,di
		sar	ax,1
		mov	cx,ax
		mov	ax,09090h
		cld
		rep	stosw
		; Now set up call frame
		mov	ax,ss
		mov	ds,ax
		mov	es,ax
		mov	bp,sp		; and set up stack frame for c
		sti			; now enable them
		mov	_BootDrive,bx	; tell where we came from
		mov	_NumFloppies,cx	; and how many
		
		mov	ax,ds
		mov	es,ax
		call	_main
		mov	ax,0
		push	ax
		call	_exit
		jmp	$
ENDIF
entry		endp


		;
		; _exit
		;	perform an "exit" and quit
		;
		; exit(code)
		; int code;
		;
IF STANDALONE EQ 1
_exit		proc	near
		public	_exit
		
		cli
		hlt
		jmp	_exit

_exit		endp
ENDIF
		page
		;
		; NUL device strategy
		;
_nul_strtgy	proc	far
		public _nul_strtgy
		mov	word ptr rqhdr,bx	;save rq headr
		mov	word ptr rqhdr+2,es
		ret
_nul_strtgy	endp

		;
		; NUL device interrupt
		;
_nul_intr	proc	far
		public _nul_intr
		push	es
		push	bx
		les	bx,rqhdr		;es:bx--> rqheadr
		or	word ptr es:[bx+3],100h	;set "done" flag
		pop	bx
		pop	es
		ret
_nul_intr	endp

 		page

		;
		; con device strategy
		;
		; NOTE: This code is not standard device driver handlers
		; It is written for sperate code and data space.
		;
con_strategy	proc	far
		push	ds
		push	ax
		; small model
		mov	ax,DGROUP		; small model - cs != ds
		mov	ds,ax
		mov	word ptr DGROUP:con_rp+2,es
		mov	word ptr DGROUP:con_rp,bx
		pop	ax
		pop	ds
		ret	
con_strategy	endp


		;
		; con device interrupt
		;
		; NOTE: This code is not standard device driver handlers
		; It is written for sperate code and data space.
		;
con_entry	proc	far
		push	si
		push	ax
		push	cx
		push	dx
		push	di
		push	bp
		push	ds
		push	es
		push	bx

		; small model
		mov	ax,DGROUP			; correct for segments
		mov	ds,ax				; ax to carry segment
		mov	word ptr DGROUP:con_dos_stk,sp	; use internal stack
		mov	word ptr DGROUP:con_dos_seg,ss
		pushf					; put flags in bx
		pop	bx
		cli					; no interrupts
		mov	ss,ax
		mov	sp,offset DGROUP:con_stk_top
		push	bx
		popf					; restore interrupt flag
		mov	bp,sp				; make a c frame
		push	word ptr con_rp+2
		push	word ptr con_rp
		call	_con_driver
		pop	cx
		pop	cx
		les	bx,dword ptr con_rp		; now return completion code
		mov	word ptr es:[bx].status,ax	; mark operation complete
		pushf
		pop	bx
		cli					; no interrupts
		mov	sp,word ptr DGROUP:con_dos_stk	; use dos stack
		mov	ss,word ptr DGROUP:con_dos_seg
		push	bx
		popf					; restore interrupt flag
		pop	bx
		pop	es
		pop	ds
		pop	bp
		pop	di
		pop	dx
		pop	cx
		pop	ax
		pop	si
		ret	
con_entry	endp

		;
		; block device strategy
		;
		; NOTE: This code is not standard device driver handlers
		; It is written for sperate code and data space.
		;
blk_strategy	proc	far
		push	ds
		push	ax
		; small model
		mov	ax,DGROUP			; small model - cs != ds
		mov	ds,ax
		mov	word ptr DGROUP:blk_rp+2,es
		mov	word ptr DGROUP:blk_rp,bx
		pop	ax
		pop	ds
		ret	
blk_strategy	endp

		;
		; block device interrupt
		;
		; NOTE: This code is not standard device driver handlers
		; It is written for sperate code and data space.
		;
blk_entry	proc	far
		pushf
		push	ax
		push	bx
		push	cx
		push	dx
		push	bp
		push	si
		push	di
		push	ds
		push	es

		; small model
		mov	ax,DGROUP			; correct for segments
		mov	ds,ax				; ax to carry segment
		mov	word ptr DGROUP:blk_dos_stk,sp	; use internal stack
		mov	word ptr DGROUP:blk_dos_seg,ss
		pushf					; put flags in bx
		pop	bx
		cli					; no interrupts
		mov	ss,ax
		mov	sp,offset DGROUP:blk_stk_top
		push	bx
		popf					; restore interrupt flag
		mov	bp,sp				; make a c frame
		push	word ptr blk_rp+2
		push	word ptr blk_rp
		call	_blk_driver
		pop	cx
		pop	cx
		les	bx,dword ptr blk_rp			; now return completion code
		mov	word ptr es:[bx].status,ax	; mark operation complete
		cli					; no interrupts
		mov	sp,word ptr DGROUP:blk_dos_stk	; use dos stack
		mov	ss,word ptr DGROUP:blk_dos_seg
		pop	es
		pop	ds
		pop	di
		pop	si
		pop	bp
		pop	dx
		pop	cx
		pop	bx
		pop	ax
		popf
		ret	
blk_entry	endp


		page

		;
		; clock device strategy
		;
		; NOTE: This code is not standard device driver handlers
		; It is written for sperate code and data space.
		;
clk_strategy	proc	far
		push	ds
		push	ax
		; small model
		mov	ax,DGROUP			; small model - cs != ds
		mov	ds,ax
		mov	word ptr DGROUP:clk_rp+2,es
		mov	word ptr DGROUP:clk_rp,bx
		pop	ax
		pop	ds
		ret	
clk_strategy	endp

		;
		; clock device interrupt
		;
		; NOTE: This code is not standard device driver handlers
		; It is written for sperate code and data space.
		;
clk_entry	proc	far
		pushf
		push	ax
		push	bx
		push	cx
		push	dx
		push	bp
		push	si
		push	di
		push	ds
		push	es

		; small model
		mov	ax,DGROUP			; correct for segments
		mov	ds,ax				; ax to carry segment
		mov	word ptr DGROUP:clk_dos_stk,sp	; use internal stack
		mov	word ptr DGROUP:clk_dos_seg,ss
		pushf					; put flags in bx
		pop	bx
		cli					; no interrupts
		mov	ss,ax
		mov	sp,offset DGROUP:clk_stk_top
		push	bx
		popf					; restore interrupt flag
		mov	bp,sp				; make a c frame
		push	word ptr clk_rp+2
		push	word ptr clk_rp
		call	_clk_driver
		pop	cx
		pop	cx
		les	bx,dword ptr clk_rp		; now return completion code
		mov	word ptr es:[bx].status,ax	; mark operation complete
		cli					; no interrupts
		mov	sp,word ptr DGROUP:clk_dos_stk	; use dos stack

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
韩国成人在线视频| 亚洲午夜在线视频| 成人白浆超碰人人人人| 久久精品一二三| 成人久久18免费网站麻豆| 欧美国产1区2区| 色综合天天综合色综合av| 一区二区三区欧美视频| 51精品国自产在线| 国产一区二区三区四区五区入口 | 成人黄色综合网站| 国产精品久久久久久久久晋中| 国产精品911| 亚洲精品国产无套在线观| 欧美日韩国产经典色站一区二区三区| 免费精品视频最新在线| 久久一夜天堂av一区二区三区| 成人黄色在线网站| 午夜精品一区在线观看| 久久亚洲综合av| 99精品国产99久久久久久白柏| 亚洲午夜激情av| 26uuuu精品一区二区| 国产不卡在线视频| 亚洲国产乱码最新视频| 久久综合久久综合久久| 在线一区二区观看| 狠狠色丁香婷婷综合久久片| 亚洲视频免费在线| 日韩午夜中文字幕| 成人小视频免费在线观看| 日韩精品91亚洲二区在线观看| 欧美极品少妇xxxxⅹ高跟鞋 | 免费人成网站在线观看欧美高清| 久久午夜电影网| 欧美午夜一区二区三区| 国产精品996| 免费在线成人网| 一区二区三区免费| 久久精品亚洲麻豆av一区二区| 欧美性感一区二区三区| 国产99精品在线观看| 天堂av在线一区| 一区二区三区国产精华| 欧美激情综合五月色丁香小说| 6080yy午夜一二三区久久| 色综合色狠狠综合色| 国产精品一线二线三线| 免费在线观看一区| 亚洲图片欧美综合| 国产精品国产三级国产| 久久女同性恋中文字幕| 欧美一区二区三区视频免费| 在线看国产日韩| 不卡在线观看av| 国产精品99久久久久久久女警| 免费视频最近日韩| 无码av免费一区二区三区试看| 亚洲激情自拍偷拍| 国产视频一区在线观看| 欧美成人aa大片| 91精品婷婷国产综合久久竹菊| 91小视频免费看| 成人av电影在线网| 成人黄色软件下载| 国产精品亚洲专一区二区三区| 免费成人在线观看视频| 奇米色一区二区| 奇米888四色在线精品| 日韩主播视频在线| 天堂午夜影视日韩欧美一区二区| 亚洲一区av在线| 亚洲777理论| 亚洲成a人片在线不卡一二三区| 一区二区三区视频在线看| 亚洲精品免费看| 亚洲国产另类av| 天天做天天摸天天爽国产一区| 亚洲电影中文字幕在线观看| 国产suv精品一区二区6| 国产美女精品一区二区三区| 国产一区91精品张津瑜| 国产suv一区二区三区88区| 成人午夜av电影| 99re热视频精品| 欧美中文字幕亚洲一区二区va在线 | 国产精品一级二级三级| 狠狠色综合播放一区二区| 国产91丝袜在线播放九色| www.性欧美| 91福利在线导航| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 欧美色图12p| 日韩欧美国产不卡| 精品福利在线导航| 久久久久久久久99精品| 国产精品久久久久久久第一福利 | 麻豆成人久久精品二区三区小说| 天堂va蜜桃一区二区三区| 美女高潮久久久| 成人精品一区二区三区中文字幕| 99久久伊人网影院| 欧美日本不卡视频| 国产性天天综合网| 中文字幕佐山爱一区二区免费| 亚洲国产精品视频| 九九视频精品免费| 色综合久久精品| 337p亚洲精品色噜噜狠狠| 久久麻豆一区二区| 一区二区三区不卡在线观看| 美女网站视频久久| 成人激情小说乱人伦| 91精品国产综合久久精品app| 精品国产一区二区三区忘忧草| 国产精品久久99| 青青草国产成人av片免费| 成人深夜在线观看| 欧美一级二级在线观看| 一区二区中文字幕在线| 日韩激情一二三区| 国产成人三级在线观看| 日本韩国一区二区| 久久夜色精品国产噜噜av| 一区二区欧美国产| 国产一区二区免费看| 日本韩国欧美一区| 国产午夜精品久久久久久免费视 | 日韩手机在线导航| 一区二区三区四区高清精品免费观看| 日本不卡在线视频| 欧美亚洲一区三区| 国产精品久久三区| 精品无码三级在线观看视频| 日本乱码高清不卡字幕| 国产欧美一区二区精品性色| 午夜天堂影视香蕉久久| 成人毛片视频在线观看| 日韩精品一区二区三区四区视频| 亚洲综合免费观看高清完整版在线| 精品一区中文字幕| 7777精品伊人久久久大香线蕉最新版 | 亚洲欧美日韩中文播放 | 精品久久国产老人久久综合| 亚洲一区二区精品视频| 色婷婷激情综合| 国产精品免费网站在线观看| 国产麻豆一精品一av一免费| 欧美一区二区三区免费视频 | 麻豆精品精品国产自在97香蕉| 欧美无砖专区一中文字| 一区在线观看视频| 成人国产精品免费| 国产日韩精品一区二区浪潮av| 狠狠色丁香婷婷综合| 精品少妇一区二区三区视频免付费 | 黄色小说综合网站| 欧美一区二区三区视频免费| 午夜精品久久久| 欧美日韩精品一二三区| 一区二区三区四区激情| 在线观看三级视频欧美| 一区二区三区在线视频免费| 91免费精品国自产拍在线不卡| 国产精品久久久久久亚洲毛片| 国产a久久麻豆| 国产精品第13页| 91老司机福利 在线| 亚洲精品乱码久久久久久黑人 | 欧美日本一区二区三区| 亚洲成av人片在www色猫咪| 欧美视频精品在线观看| 亚洲大型综合色站| 欧美区在线观看| 另类小说综合欧美亚洲| 欧美精品一区二区在线播放| 精品夜夜嗨av一区二区三区| 久久五月婷婷丁香社区| 成人理论电影网| 亚洲资源中文字幕| 91麻豆精品国产综合久久久久久| 蜜桃精品视频在线观看| 久久女同精品一区二区| jlzzjlzz亚洲日本少妇| 亚洲精品国产精华液| 欧美乱妇15p| 国产在线精品一区二区三区不卡 | 伦理电影国产精品| 国产喂奶挤奶一区二区三区| 99热99精品| 五月激情六月综合| 久久丝袜美腿综合| 色综合天天综合| 青草国产精品久久久久久| 久久精品人人做人人爽97| 91无套直看片红桃| 免费在线观看视频一区| 亚洲欧洲精品天堂一级| 欧美日韩国产系列| 国产成人精品综合在线观看 |