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

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

?? jobcode.inc

?? MMURTL(tm) Computer Operating System Ver x0.8, source code.
?? INC
字號:
;   MMURTL Operating System Source Code
;   Copyright 1991,1992,1993, Richard A. Burgess
;   ALL RIGHTS RESERVED
;   Version x0.8
;=============================================================================
;InitNewJCB is used initially by the OS to fill in the first two
;jobs (Monitor & Debugger)
;
InitNewJCB:
; INPUT :	EAX -- Ptr to JCB that is to be filled in
;			EBX -- Linear Ptr to Page Directory for Job
;			ESI -- pbJobName
;			ECX -- cbJobName
;			EDX -- Pointer to Job Virtual Video Buffer (all jobs have one!)
;
; OUTPUT :	JOB Number in EAX
; USED : 	EAX, EBX, ECX, EDX, EDI, ESI, EFlags
; MODIFIES : JCB pointed to in EBX
;
; This fills in a JCB with new information.  This is used to initilaize
; a new JCB during OS init and when a new Job is loaded and run.
;
		MOV [EAX.JcbPD],EBX	    ;Put Ptr to PD into JCB
		MOV EDI, EAX			;EDI points to JCB
		ADD EDI, sbJobName		;Now to JobName
		MOV BYTE PTR [EDI], CL	;size is filled in
		INC EDI					;first byte of name
		REP MOVSB				;Move it in
		MOV [EAX.pVirtVid], EDX	;Video number is in JCB
		MOV EAX, [EAX.JobNum]
		RETN

;=============================================================================

NewJCB:
; INPUT : NONE
; OUTPUT : EAX
; REGISTERS : EAX,EBX,FLAGS
; MODIFIES : pFreeJCB
;
; This routine will return to the caller a pointer to the next free jcb.
; The data used in this algorithm is the free jcb pointer (pFreeJCB).
; This routine will return in EAX register the address of the next free jcb.
; If none exists, then EAX will contain NIL (0). This routine will also
; update the value of pFreeJCB to point to the next "unused" JCB in
; the free pool.
;
		MOV EAX,pFreeJCB        ;Get OS pointer to JCBs
		CMP EAX,NIL             ;IF pFreeJCB=NIL THEN Return;
		JE NewJCBDone           ;
		MOV EBX,[EAX.NextJCB]   ;Get pointer to next free one
		MOV pFreeJCB,EBX        ;Put it in OS pointer
		DEC _nJCBLeft			;
NewJCBDone:
	    RETN                    ;

;=============================================================================

DisposeJCB:
; INPUT : EAX
; OUTPUT : NONE
; REGISTERS : EBX,FLAGS
; MODIFIES : pFreeJCB
;
; This routine will place the jcb pointed to by EAX back into the free
; pool of JCBs pointed to by (pFreeJCB) if EAX is not NIL.
; This invalidates the JCB by placing 0 in JcbPD.
;
		CMP EAX,NIL             ; If pJCBin = NIL THEN Return;
		JE DispJCBDone          ;
		MOV [EAX.JcbPD], 0		;Invalidate JCB
		MOV EBX,pFreeJCB        ;EBX has OS ptr to free list
		MOV [EAX.NextJCB],EBX   ;Move it into newly freed JCB
		MOV pFreeJCB,EAX        ;Move ptr to newly frred JCB to OS
		INC _nJCBLeft			;
DispJCBDone:
	    RETN                    ;

;============================================================
;
; GetpCrntJCB
; Returns a pointer to the current Job Control Block in EAX.
; This is based on which Task is executing.  All TSSs are
; assigned to a Job.  A Job may have more than one Task.
;
; INPUT:	Nothing
; OUTPUT:	EAX -- Linear Address of current JCB
; USED:		EAX, EFlags
;
GetpCrntJCB:
		MOV EAX, pRunTSS		;Current Task State Segment
		MOV EAX, [EAX.TSS_pJCB]	;Pointer to JCB
		RETN

;============================================================
;
; GetCrntJobNum
; Many OS functions deal with the Job number. The Job number
; is a field in the JCB structure.
; Returns the Job number for the currently executing task.
; This is based on which Task is executing.  All TSSs are
; assigned to a Job!  A Job may have more than one Task.
;
; INPUT:	Nothing
; OUTPUT:	EAX -- Current Job Number
; USED:		EAX, EFlags
;
GetCrntJobNum:
		CALL GetpCrntJCB
		MOV EAX, [EAX.JobNum]			;Current JCB
		RETN

;============================================================
;
; GetpJCB
; Returns a pointer to a Job Control Block identified by number
; in EAX.  All TSSs are assigned to a Job.
;
; INPUT:	EAX -- Job Number of desired pJCB
; OUTPUT:	EAX -- Linear Address of the JCB or 0 for invalid number
; USED:		EAX, EFlags
;
GetpJCB:
		PUSH EDX
		CMP EAX, 1
		JNE GetpJCB1
		MOV EAX, OFFSET	MonJCB
		POP EDX
		RETN
GetpJCB1:
		CMP EAX, 2
		JNE GetpJCB2
		MOV EAX, OFFSET	DbgJCB
		POP EDX
		RETN
GetpJCB2:
		CMP	EAX, nJCBs+2		;Add in two static JCBs
		JLE GetpJCB3			;Within range of JCBs
		XOR EAX, EAX
		POP EDX
		RETN
GetpJCB3:
		SUB EAX, 3				;Take off static JCBs+1 (make it an offset)
		MOV EDX, sJCB
		MUL EDX					;Times size of JCB
		ADD EAX, pJCBs			;Now points to desired JCB
		POP EDX
		RETN					;

;============================================================
;
; GetJobNum
; Many OS functions deal with the Job number. The Job number
; is a field in the JCB structure.
; Returns the Job number for the pJCB in EAX in EAX.
;
; INPUT:	EAX pJCB we want job number from.
; OUTPUT:	EAX -- Current Job Number
; USED:		EAX, EFlags
;
GetJobNum:
		MOV EAX, [EAX.JobNum]			;Current JCB
		RETN

;============================================================
;
; AllocJCB  (NEAR)
; This allocates a new JCB (from the pool).  This is a NEAR
; call to support the public job management calls in high level
; languages.
;
; Procedureal Interface :
;
;		AllocJCB(pdJobNumRet, ppJCBRet):ercType
;
;   pdJobNumRet is the number of the new JCB.
;	pJCBRet is a pointer where you want the pointer to the new JCB is returned.
;
;   ErcNoMoreJCBs will be returned if no more JCBs are avaialble.
;
; pdJobNum		 	EQU [EBP+12]
; pJCBRet		 	EQU [EBP+8]

_AllocJCB PROC NEAR            	;
		PUSH EBP                ;
		MOV EBP,ESP             ;

		CALL NewJCB				; Get a new JCB
		OR EAX, EAX				;
		JNZ SHORT AJCB01		; We got one!
		MOV EAX, ErcNoMoreJCBs	; Sorry, out of them!
		MOV ESP,EBP             ;
		POP EBP                 ;
		RETN 8	                ;

AJCB01:
		MOV ESI, [EBP+8]		;pJCBRet
		MOV [ESI], EAX
		MOV ESI, [EBP+12]		;Job Num
		CALL GetJobNum			;
		MOV [ESI], EAX			;
		XOR EAX, EAX			;No error
		MOV ESP,EBP             ;
		POP EBP                 ;
		RETN 8	                ;
_AllocJCB ENDP

;============================================================
;
; DeAllocJCB  (NEAR)
; This Deallocates a JCB (returns it to the pool).  This is a NEAR
; call to support the public job management calls in high level
; languages in the OS code.
;
; Procedureal Interface :
;
;		DeAllocJCB(pJCB):ercType
;
;	pJCB is a pointer the JCB to be deallocated.
;
;   ErcNoMoreJCBs will be returned if no more JCBs are avaialble.
;
; pJCB		 	EQU [EBP+8]

_DeAllocJCB PROC NEAR          	;
		PUSH EBP                ;
		MOV EBP,ESP             ;

		MOV EAX, [EBP+8]		; pJCB
		CALL DisposeJCB			; Get a new JCB
		XOR EAX, EAX			;
		MOV ESP,EBP             ;
		POP EBP                 ;
		RETN 4	                ;
_DeAllocJCB ENDP

;============================================================
;===== BEGIN PUBLIC JOB CALLS ===============================
;============================================================
;
; GetpJCB
; This PUBLIC returns a pointer to the JCB for the JobNum
; you specifiy.
;
; Procedureal Interface :
;
;		GetpJCB(dJobNum, pJCBRet):ercType
;
;   dJobNum is the number of the JCB you want.
;	pJCBRet is a pointer where you want the JCB returned.
;
;   ErcBadJobNum will be returned if dJobNum is out of range
;
;   ErcBadJobNum will be returned if dJobNum is invalid
;   or 0 will be returned with the data.
;
; dJobNum		 	EQU [EBP+16]
; pJCBRet		 	EQU [EBP+12]

_GetpJCB PROC FAR            	;
		PUSH EBP                ;
		MOV EBP,ESP             ;

		MOV EAX, [EBP+16]		;Job Num
		OR EAX, EAX
		JZ GetpJcbBad			;0 is invalid
		CMP EAX, nJCBs + 2;		;Dynamic + 2 static
		JBE GetpJcbOK
GetpJcbBad:
		MOV EAX, ErcBadJobNum	;
		MOV ESP,EBP             ;
		POP EBP                 ;
		RETF 8	                ;
GetpJcbOk:
		CALL GetpJCB			;puts address of JCB in EAX
		MOV ESI, [EBP+12]		;pJCBRet
		MOV [ESI], EAX
		CMP [EAX.JcbPD], 0		;Is this a valid JCB
		JNE GetpJCBOk1
        MOV EAX, ErcInvalidJCB	;JCB we are pointing to is unused
		MOV ESP,EBP             ;
		POP EBP                 ;
		RETF 8	                ;
GetpJcbOk1:
		XOR EAX, EAX
		MOV ESP,EBP             ;
		POP EBP                 ;
		RETF 8	                ;
_GetpJCB ENDP

;============================================================
;
; GetJobNum
; This PUBLIC returns the number for the current Job. This is
; the job that the task that called this belongs to.
;
; Procedureal Interface :
;
;		GetJobNum(pJobNumRet):ercType
;
;	pJCBRet is a pointer where you want the JCB returned.
;
; pJobNumRet	EQU [EBP+12]

_GetJobNum PROC FAR            	;
		PUSH EBP                ;
		MOV EBP,ESP             ;
        CALL GetCrntJobNum		;Leave jobnum in EAX
		MOV ESI, [EBP+12]		;pJobNumRet
		MOV [ESI], EAX			;
		XOR EAX, EAX			;No Error
		POP EBP                 ;
		RETF 4	                ;
_GetJobNum ENDP


;================= MODULE END =================================

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品蜜桃在线看| 91一区一区三区| 午夜视频久久久久久| 日韩美女久久久| 国产精品沙发午睡系列990531| 2021久久国产精品不只是精品| 日韩欧美综合一区| 日韩欧美综合一区| 久久免费美女视频| 久久久久成人黄色影片| 国产网站一区二区| 国产欧美一区二区三区在线老狼| 久久美女艺术照精彩视频福利播放 | 亚洲欧美国产高清| 一区二区三区国产精品| 亚洲高清一区二区三区| 蜜臀国产一区二区三区在线播放| 日韩高清在线不卡| 国产真实乱对白精彩久久| 国产精品资源在线看| 成人av高清在线| 欧美性感一类影片在线播放| 在线播放国产精品二区一二区四区 | 国产成人免费视频一区| 国产91精品露脸国语对白| 99国产精品久久久久久久久久| 91美女蜜桃在线| 91 com成人网| 日本一区二区视频在线| 亚洲欧美日韩国产中文在线| 婷婷久久综合九色综合绿巨人| 免费视频一区二区| 国产成人综合在线播放| 欧美中文字幕不卡| ww亚洲ww在线观看国产| 亚洲精品高清在线观看| 乱一区二区av| 色狠狠色狠狠综合| 精品日韩一区二区| 一区二区三区在线不卡| 狠狠色狠狠色综合系列| 色噜噜狠狠一区二区三区果冻| 日韩午夜小视频| 亚洲婷婷综合久久一本伊一区| 亚洲成人av一区二区三区| 国产精品一区免费在线观看| 欧美日韩你懂的| 国产精品日日摸夜夜摸av| 三级欧美在线一区| 99久久免费视频.com| 精品美女被调教视频大全网站| 亚洲欧美韩国综合色| 国产在线观看免费一区| 欧美日韩视频在线第一区 | 日韩毛片高清在线播放| 久久精品国产**网站演员| 一本色道亚洲精品aⅴ| 精品久久久久久综合日本欧美| 夜夜精品视频一区二区| 国产福利视频一区二区三区| 日韩一区二区三区免费看| 亚洲免费观看高清完整版在线观看| 国产一二精品视频| 91精品国产综合久久久蜜臀粉嫩| 免费观看日韩电影| k8久久久一区二区三区| 久久久久亚洲综合| 另类小说欧美激情| 欧美一区午夜精品| 亚洲国产aⅴ天堂久久| 91在线免费看| 中文字幕一区二区三| 国产乱人伦偷精品视频不卡| 欧美一级艳片视频免费观看| 天堂蜜桃一区二区三区| 欧美性猛交xxxx乱大交退制版 | 国产亚洲一区字幕| 久久国产欧美日韩精品| 欧美一区二区三区影视| 日韩成人dvd| 日韩一区二区麻豆国产| 日本美女一区二区| 日韩欧美三级在线| 狠狠色狠狠色综合| 久久久www免费人成精品| 极品销魂美女一区二区三区| 日韩欧美激情一区| 国内欧美视频一区二区| 欧美精品一区二| 粉嫩av一区二区三区在线播放 | 成人蜜臀av电影| 中文字幕亚洲精品在线观看| 91丝袜美腿高跟国产极品老师| 最新高清无码专区| 欧美在线999| 免费成人av在线播放| 精品国产乱码久久久久久老虎| 国产一区二三区| 国产精品成人免费精品自在线观看 | 欧美三级日韩在线| 日本va欧美va精品发布| 久久日一线二线三线suv| 岛国精品在线观看| 亚洲在线一区二区三区| 日韩欧美国产电影| 成人精品gif动图一区| 亚洲综合久久av| 久久影院视频免费| 欧美综合久久久| 国产综合久久久久影院| 国产精品成人午夜| 日韩视频一区在线观看| 99久久精品国产导航| 日本在线不卡视频一二三区| 国产肉丝袜一区二区| 欧美在线制服丝袜| 国产一区二区三区日韩| 一区二区在线免费| 久久午夜国产精品| 欧美中文字幕不卡| 成人开心网精品视频| 丝袜亚洲另类欧美| 亚洲欧洲在线观看av| 日韩欧美中文字幕公布| 99久久99久久精品免费观看| 老色鬼精品视频在线观看播放| 日韩毛片视频在线看| 久久亚洲综合色一区二区三区| 在线观看日韩国产| 成人美女视频在线观看| 美女性感视频久久| 一级特黄大欧美久久久| 国产欧美日韩不卡免费| 日韩午夜激情视频| 欧美亚洲动漫精品| 99精品偷自拍| 国产激情精品久久久第一区二区| 午夜国产精品一区| 亚洲女人的天堂| 国产精品免费aⅴ片在线观看| 日韩欧美中文字幕一区| 欧美精品国产精品| 色av成人天堂桃色av| 成人91在线观看| 国产精品456露脸| 精品一区二区三区视频在线观看 | 久久精品国产色蜜蜜麻豆| 一区二区三区四区亚洲| 国产精品久久久久久久岛一牛影视 | 欧美日韩中文字幕一区| 99re在线精品| 成人黄色大片在线观看| 国产激情视频一区二区三区欧美| 国产呦萝稀缺另类资源| 久久精品国产成人一区二区三区| 日韩和欧美一区二区三区| 亚洲一区二区三区不卡国产欧美| 亚洲色图另类专区| 亚洲色图视频网| 亚洲乱码国产乱码精品精98午夜 | 一区二区三区在线视频观看| 国产精品乱人伦| 亚洲欧美色一区| 亚洲午夜久久久久中文字幕久| 亚洲精品视频自拍| 一区二区三区精品视频| 午夜视频在线观看一区| 日精品一区二区三区| 蜜桃久久av一区| 国产在线看一区| av中文字幕不卡| 欧美色综合网站| 日韩亚洲欧美中文三级| 久久久国产午夜精品| 国产精品视频你懂的| 一区二区三区欧美视频| 亚洲成av人片在www色猫咪| 秋霞影院一区二区| 国产电影精品久久禁18| 91网站视频在线观看| 7777精品伊人久久久大香线蕉超级流畅| 91精品国产综合久久久久久久| 日韩午夜激情av| 国产精品网站在线观看| 亚洲女与黑人做爰| 蜜臀av性久久久久蜜臀aⅴ| 国产精品一区二区久久精品爱涩 | 亚洲综合男人的天堂| 日本va欧美va精品发布| 高清国产一区二区| 欧美嫩在线观看| 久久免费偷拍视频| 亚洲一区二区三区三| 极品尤物av久久免费看| 日本高清视频一区二区| 精品理论电影在线| 亚洲综合一区二区三区| 精品一区二区三区免费观看 | 欧美一二区视频| 中文字幕一区二区三区不卡|