⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 osspec.asm

📁 dos 1.0 其中包含quick basic源代码、内存管理himem emm386 发展历史
💻 ASM
字号:
;*
;*	CW : Character Windows
;*
;*	osspec.asm : jump table for OS specific routines (DUAL only)

	include cmacros.inc
	include version.inc
	include _osspec.inc			;* defines OSSPEC_ENTRIES

;*****************************************************************************

sBegin	DATA

externW	fProtectMode

sEnd	DATA

;*****************************************************************************


OSSPEC_DEF	MACRO	label,os		;* external refernces
	externFP	<label&os>
ENDM


OSSPEC_LABEL	MACRO	label,os		;* jump table, exported labels
	PUBLIC	label
label:
	jmp	label&os
ENDM


OSSPEC_NOLABEL	MACRO	label,os		;* alternate jump table
	jmp	label&os
ENDM


OSSPEC_OS2PROC	MACRO	label,os		;* protect mode only procedure
	PUBLIC	label
label:
IFDEF	DEBUG
	mov	cx,fProtectMode
	jcxz	@F
	jmp	label&OS2
@@:
	jmp	os2_only
ELSE	;!DEBUG
	jmp	label&OS2
ENDIF	;!DEBUG
ENDM


OSSPEC_DOS3PROC	MACRO	label,os		;* real mode only procedure
	PUBLIC	label
label:
IFDEF	DEBUG
	mov	cx,fProtectMode
	jcxz	@F
	jmp	dos3_only
@@:
ENDIF	;DEBUG
	jmp	label&DOS3
ENDM


;*****************************************************************************

createSeg   OSSPEC_TEXT,OSSPEC_TEXT,BYTE,PUBLIC,CODE


;* externFP	CowAssertFailed ;* in _osspec.inc already


OSSPEC_ENTRIES	OSSPEC_DEF,OS2
OSSPEC_ENTRIES	OSSPEC_DEF,DOS3

OSSPEC_OS2ONLY	OSSPEC_DEF,OS2
OSSPEC_DOS3ONLY	OSSPEC_DEF,OS2
OSSPEC_DOS3ONLY	OSSPEC_DEF,DOS3

sBegin	OSSPEC_TEXT
	assumes CS,OSSPEC_TEXT
	assumes DS,DATA

	PUBLIC	rgfnosspec,rgfnosspec3

;*	* rgfnosspec must preceed rgfnosspec3 and the two tables must be
;*	* contiguous!!

rgfnosspec:

;*	General code
	OSSPEC_ENTRIES	OSSPEC_LABEL,OS2

;*	OS/2 only procs
	OSSPEC_OS2ONLY	OSSPEC_LABEL,OS2

;*	Stubs for OS/2 (see stubs.asm)
	OSSPEC_DOS3ONLY	OSSPEC_LABEL,OS2

rgfnosspec3:

;*	General code
	OSSPEC_ENTRIES	OSSPEC_NOLABEL,DOS3

;*	Stubs for DOS3 (see stubs.asm)
	OSSPEC_OS2ONLY	OSSPEC_NOLABEL,DOS3

;*	DOS3 only procs
	OSSPEC_DOS3ONLY	OSSPEC_NOLABEL,DOS3

;*	* mode specific entry points

IFDEF	DEBUG
os2_only:
	cCall	CowAssertFailed
	DB	"Protect mode only proc called during real mode!$"
ENDIF	;DEBUG


IFDEF	DEBUG
dos3_only:
	cCall	CowAssertFailed
	DB	"Real mode only proc called during protect mode!$"
ENDIF	;DEBUG


sEnd	OSSPEC_TEXT

;*****************************************************************************

	END

⌨️ 快捷键说明

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