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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? power.asm

?? DOS 源碼 系列之 BIOS ,上傳與大家分享
?? ASM
?? 第 1 頁(yè) / 共 5 頁(yè)
字號(hào):
Pwr_i25_next    dw      Pwr_i25_lab
		dw      Bios_Data
Pwr_i25_lab:
	pop     ds
	jmp     dword ptr cs:I25_Vec

Pwr_i26_next    dw      Pwr_i26_lab
		dw      Bios_Data
Pwr_i26_lab:
	pop     ds
	jmp     dword ptr cs:I26_Vec

Pwr_i6c_next    dw      Pwr_i6c_lab     ;M080
		dw      Bios_Data       ;M080
Pwr_i6c_lab:                            ;M080
	pop     ds                      ;M080
	jmp     dword ptr cs:I6c_Vec    ;M080

End_Data        label   near

	tocode                  ;Bios_Code segment starts

IFDEF   POWERALONE              ; device header needed here only for
				; standalone version - in MSBIO1 for resident
	assume  ds:nothing

	org 0
DEV_HDR dd CDEV_HDR             ; address of next driver in chain
	dw 8000H                ; character device      ; M003
	dw DEV_STRATEGY         ; DOS entry points to driver
	dw DEV_INTERRUPT        ;
	db 'POWER$  '           ; driver name

CDEV_HDR        dd      -1      ; address of next dev hdr in chain
	dw      8008h           ; CLOCK device (& character)
	dw      DEV_STRATEGY
	dw      CDEV_INTERRUPT
	db      'CLOCK$  '      ; driver name

;*************** DOS DEVICE REQUEST DEFINITIONS **************

; void DEV_STRATEGY( ES:BX.DOS_REQUEST_HEADER)
; purpose:   Store DOS REQUEST HEADER (ES:BX) for
;            DEV_INTERRUPT routine

DEV_STRATEGY proc far
	push    ds
	mov     ds,cs:Bios_Data_Word
	assume  ds:Bios_Data
	mov     word ptr [RHPTR]+0,bx
	mov     word ptr [RHPTR]+2,es
	pop     ds
	assume  ds:nothing
	ret
DEV_STRATEGY endp

; void DEV_INTERRUPT( [REQHDR].DOS_REQUEST_HEADER)
; purpose:   Executes DOS request; only one fuction is  ; M003
;               supportted by this driver: INIT         ; M003

DEV_INTERRUPT proc far
	push    ax
	push    dx
	push    bx
	push    es
	push    ds

	mov     ds,cs:Bios_Data_Word
	assume  ds:Bios_Data
	les     bx,[RHPTR]
	cmp     es:[bx].RH_B_CMD,DEVINIT        ; DEVICE INIT?
	jne     dstot0
	call    far ptr Power_Init
	jmp     short dstex0

; M003 : remove ioctl support
dstot0: 
;       cmp     es:[bx].RH_B_CMD,DEVRDIOCTL     ; DEVICE IOCTL READ?
;       jne     dstxxx
;       call    Power_IOCTL_Read
;       jmp     short dstex0
;
; M003: END

dstxxx: mov     ax,STERR+03H            ; RETURN DEVICE ERROR,
					; ILLEGAL COMMAND
dstex0: les     bx,[RHPTR]
	mov     es:[bx].RH_W_STATUS,ax
	pop     ds
	assume  ds:nothing
	pop     es
	pop     bx
	pop     dx
	pop     ax
	ret
DEV_INTERRUPT endp

Bios_Data_Word  dw      Bios_Data               ; Our data segment

	extrn   tim_read:near
	extrn   tim_writ:near

	extrn   P_UpdFromCMOS:far               ; M081

	public  tim_table

tim_table       label   byte
	db      (((offset tim_table_end) - (offset tim_table) -1)/2)
	dw      Normal_exit     ; 00    init
	dw      Normal_exit     ; 01
	dw      Normal_exit     ; 02
	dw      Cldev_cmderr    ; 03
	dw      tim_read        ; 04
	dw      Cldev_BusyErr   ; 05
	dw      Normal_exit     ; 06
	dw      Normal_exit     ; 07
	dw      tim_writ        ; 08
	dw      tim_writ        ; 09
tim_table_end:


CDEV_INTERRUPT  proc    far
	assume  cs:Bios_Code,ds:nothing
	push    si
	push    ax
	push    bx
	push    cx
	push    dx
	push    di
	push    ds
	push    es

	lea     si,tim_table

	mov     ds,cs:Bios_Data_Word
	assume  ds:Bios_Data
	
	les     bx,[RHPTR]
	mov     al,es:[bx].RH_B_CMD             ; al = cmd
	cmp     al,cs:[si]
	jae     Cldev_cmd_error
	or      al,al                   ; is it init call
	jz      Cldev_Init

	cbw                             ; note that al <= 15 means ok
	shl     ax,1

	add     si,ax

	les     di, es:[bx].trans       ; M082
	cld                             ; ***** always clear direction
	call    cs:word ptr [si+1]      ;go do command
	assume  ds:nothing
	jc      Cldev_set_stat          ; if function returned status, don't
Cldev_Success:
	mov     ah,1                    ;  load with normal completion

Cldev_set_stat:
	mov     ds,Bios_Data_Word       ; cas///// note: shouldn't be needed!
	assume  ds:Bios_Data
	les     bx,[RHPTR]
	mov     word ptr es:[bx].status,ax ;mark operation complete

	pop     es
	pop     ds
	pop     di
	pop     dx
	pop     cx
	pop     bx
	pop     ax
	pop     si
	ret

Cldev_cmd_error:
	mov     ax,STERR+03H            ; RETURN DEVICE ERROR,
					; ILLEGAL COMMAND
	jmp     short Cldev_set_stat

Cldev_Init:
	call    far ptr Clock_Init

IFDEF   POWERALONE                      ; M085
	; Return DEVICE DRIVER end address
	les     bx,[RHPTR]
	mov     word ptr es:[bx].RH_D_BREAKPTR+0,offset Bios_Data:End_Data
	mov     word ptr es:[bx].RH_D_BREAKPTR+2,ds
ENDIF                                   ; M085
	jmp     short Cldev_Success

CDEV_INTERRUPT  endp

Cldev_cmderr    proc    near
	mov     al,3            ; unknown command error
	mov     ah,81h          ; error return
Cldev_Ret:
	stc                     ; indicate abnormal end
	ret

Cldev_BusyErr   label   near
	mov     ah,3            ; indicate busy status
	jmp     short Cldev_Ret

Cldev_cmderr    endp

ELSE                                            ; resident driver version

	extrn   Bios_Data_Word:word             ; supplied externally

	public  power_table
power_table:
	db      (((offset power_table_end) - (offset power_table) - 1) / 2)
	dw      Normal_exit
	dw      Normal_exit
	dw      Normal_exit
; M003 : BEGIN ; remove ioctl support
;       dw      Power_ioctl_read
	dw      Normal_exit
; M003 : END

power_table_end:


ENDIF                                           ; resident driver version

Normal_exit      proc    near

	clc
	ret

Normal_exit      endp
;
; M003: BEGIN ; remove ioctl support
;

IF 0

Power_ioctl_read proc near
	assume  ds:Bios_Data
	push    es
	push    di
	cmp     es:[bx].RH_W_XFERCNT,32 ; get transfer size
	je      dirot0

	mov     es:[bx].RH_W_XFERCNT,0  ; invalid size non-transfered
	jmp     short dirxxx

dirot0: les     di,es:[bx].RH_D_XFERPTR ; address of read block
	mov     word ptr es:[di].PIB_ENTRY_OFFSET,offset EntryPoint 
	mov     word ptr es:[di].PIB_ENTRY_SEG,ds
	mov     byte ptr es:[di].PIB_VERSION,POW_VERSION

dirxxx: pop     di
	pop     es

	clc
	ret

power_ioctl_read endp


PUBLIC  Pow_control
Pow_control proc far
	assume  ds:nothing, es:nothing
; M001 - NSM all these functions except IDLE_INFO have been replaced
; by equivalent INT 2f functions 
	cmp     ah,POW_GET_CONTROL_INFO        ; return CONTROL_INFO pointer
	jnz     pclot0
	mov     dx,cs:Bios_Data_Word
	mov     ax,offset CONTROL
	mov     cx,size CONTROL_INFO
	jmp     short pclex0

pclot0: cmp     ah,POW_GET_STATS               ; return IDLE_INFO pointer
	jne     pclot1
	mov     dx,cs:Bios_Data_Word
	mov     ax,offset INFO
	mov     cx,size IDLE_INFO
	jmp     short pclex0


pclot1: cmp     ah,POW_DO_IDLE                 ; return call DO_IDLE direct
	jne     pclot2

	push    ds
	mov     ds,cs:Bios_Data_Word
	assume  ds:Bios_Data

	call    CheckV86        ; AVOID IN V86
	pop     ds
	assume  ds:nothing
	jnz     pclex0
	push    ds
	mov     ds,cs:Bios_Data_Word
	assume  ds:Bios_Data
	call    DO_IDLE         ; return CY set if idle
	pop     ds
	assume  ds:nothing
	jmp     short pclxxx

; M001 -nsm - commented out
pclot2: cmp     ah,0feh         ; Return POWER_DATA
	jne     pclerr          ; address ES:BX
	mov     es,cs:Bios_Data_Word       ; special function for cstat
	mov     bx,offset POWER_DATA

pclex0: clc                     ; return no error
	ret

pclot2:                         ; falls through to error
pclerr: mov     ax,-1           ; INVALID OPERATION
	stc

pclxxx: ret


Pow_control endp

ENDIF   ; the code above is commented out - M003 END

;******************** INT 2F routine for POWER services *************
;  Entry: AL = function code
;       0       Install check
;       
;               EXIT:
;               BX = 504dH (PM) signature if installed  /* M087 */
;
;       1       GET/(Enable/Disable) Power management
;               BH = 0  -> get POWER enabled status
;                  = 1 -> ENABLE DISABLE POWER
;                  BL:bit 0 =T enable Idle detection
;                           =F disable Idle detection
;                  BL:bit 1 =T enable FW/APM 
;                           =F disable FW/APM
;               EXIT:
;                  BH = Prev. Power status (bit 0 & 1 as defined above)
;                  BL = Current power status
;                  CY set if function failed
;
;       2       Get/Set Idle Detection Alg
;               BH = 0 -> Get Current idle detection alg.       
;                  = 1 -> set Current alg.
;                    BL:bit 0 -> T - AUTO SELECT
;                       bit 1 -> T - App Idle (int 2f 1680)
;                       bit 2 -> T - Dos Yield (int 28)
;                       bit 3 -> T - Keyboard idle (int 16)
;                    BL = 0 -> disable Idle detecion
;               EXIT:
;                       BL = current alg if Get_ALG
;
;       80      Get/Set Idle Detection Tuning parameters
;               BX = 0 -> get 
;               else Set
;               CX = size of buffer 
;               DS:SI -> ptr to buffer
;       81      Get Statistics
;               CX = size of buffer
;               DS:SI -> ptr to buffer
;
;       82      Get/Set APM polling count
;               BX = 0 -> get APM polling count
;               else new polling count to be set
;               EXIT:
;                       BL = new polling count
;
; M001: Created - NSM
;
Pwr_Services    proc    near

	push    ds

	cmp     al,I2F_PW_INSTALL_CHK           ; install check
	je      PS_Install_Chk
;
	cmp     al,I2F_PW_GET_SET_PWSTATE       ; enable/disable PW MGMT
	jne     PS_Chk_SelAlg
	jmp     PS_GetSet_PWState
;
PS_Chk_SelAlg:
	cmp     al,I2F_PW_SELECT_ALG            ; select Idle Detection Alg
	je      PS_Select_Alg
;
	cmp     al,I2f_PW_TUNE_PARM             ; Idle detect. parm. Get/Set
	je      PS_Parm_Tune
;
	cmp     al,I2F_PW_APM_POLLCOUNT         ; Get/Set APM poll count
	je      PS_APM_PollCount
;
	cmp	al,I2F_PW_GETSET_BASELINE
	jne	PS_ChkGetStat
	jmp	PS_GetSet_BaseLine
;
PS_ChkGetStat:
	cmp     al,I2F_PW_GET_STATS             ; Get Idle Detect stats
	je      PS_Get_Stats
;
	mov     ax,ERROR_PM_FUNCTION_NOT_SUPPORTED
PS_FRet:
	stc
	jmp     PS_Ret


PS_Install_Chk:
	mov     bx,504dH                ; "PM"  ;M087
	mov     ah,POW_MAJ_VERSION      ; M084 major version no
	mov     al,POW_MIN_VERSION      ; M084
	clc                             ; M084
	jmp     PS_Ret                  ; M084

;
PS_Select_Alg:
	mov     ds,cs:Bios_Data_Word
	assume  ds:Bios_Data

IFDEF DEBUG
	cmp     bl,80h          ; SOUND toggle
	je      PS_Toggle_Sound
ENDIF
	or      bh,bh           ; get current algorithm
	je      PS_Get_Alg
	test    bl,ALG_RESERVED_BITS
	jnz     PS_Inv_Parm_Err
;
PS_Alg_OK:
	xor     bh,bh
	shl     bx,1                    ; rotate the given alg.bits to the IDLE_FLG format
	shl     bx,1
	and     [CONTROL].IDLE_FLG,NOT ( AUTO_ACTIVE+APP_ACTIVE+DOS_ACTIVE+KYC_ACTIVE)
	or      [CONTROL].IDLE_FLG,bx

; M094 - Fall through to return the current algorithm in BL

PS_Get_Alg:
	mov     bx,[CONTROL].IDLE_FLG   
	and     bx,( AUTO_ACTIVE+APP_ACTIVE+DOS_ACTIVE+KYC_ACTIVE)      ; M075
	shr     bx,1                    ; put this info into the desired 
	shr     bx,1                    ; API output format
	jmp     short PS_SRet

IFDEF DEBUG                     ;Toggle sound only for DEBUG VERSION
PS_Toggle_Sound:
	xor     [CONTROL].IDLE_FLG,SOUND_ACTIVE ; toggle the sound flag
	jmp     short PS_SRet
ENDIF

PS_APM_PollCount:                               ; 7 change APM poll count
	call    Do_APM_GetSet_PollCount
	jmp     short PS_SRet 

	assume  ds:nothing
;
PS_Parm_Tune:                           ; 4 Tune various POWER.SYS parameters
	cmp     cx, size CONTROL_INFO - SWITCH_DLY
	jb      PS_Buff_Ovf_Err
	push    si                      ; M086
	push    di
	push    es
	mov     es,Bios_Data_Word
	assume  es:Bios_Data
	lea     di,[CONTROL].SWITCH_DLY
	assume  es:nothing
	or      bx,bx                   ; get parm or set parm ?
	jnz     PS_DoCopy               ; if set parm 
	mov     bx,-1
PS_Exch_ESDS_SIDI:
	push    es
	push    ds
	pop     es
	pop     ds
	xchg    si,di
	or              bx,bx
	jz      PS_EndCopy
PS_DoCopy:
	rep     movsb                   ; transfer data
	inc     bx
	jz      PS_Exch_ESDS_SIDI
PS_EndCopy:

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美视频日韩视频| 欧美中文字幕亚洲一区二区va在线 | 99久久精品免费| 成人免费在线播放视频| 91欧美激情一区二区三区成人| 国产精品久久久久精k8| 99精品久久久久久| 亚洲一二三四久久| 欧美久久久久久蜜桃| 美女视频黄 久久| 精品国一区二区三区| 国产v日产∨综合v精品视频| 中文字幕av一区 二区| 在线观看欧美黄色| 日本不卡一区二区| 久久久久久免费毛片精品| thepron国产精品| 亚洲成人动漫av| 日韩精品中午字幕| 成人高清免费观看| 日韩中文字幕区一区有砖一区| 精品国产一区二区三区久久久蜜月 | 波波电影院一区二区三区| 一区二区视频在线| 精品乱码亚洲一区二区不卡| 成人性色生活片免费看爆迷你毛片| 一区二区三区在线免费播放| 欧美电视剧免费全集观看| av资源网一区| 麻豆精品久久精品色综合| 中文字幕日韩精品一区| 欧美一区二区三区四区视频 | 国产精品国产三级国产普通话三级| 日本韩国精品在线| 国产一区二区精品久久99| 亚洲精品国产a| 久久精品亚洲乱码伦伦中文| 欧美影院一区二区| 成人免费看的视频| 蜜臀av性久久久久av蜜臀妖精| 国产精品国产三级国产普通话99| 欧美三区在线视频| 成人的网站免费观看| 奇米影视一区二区三区| 亚洲欧美激情在线| 国产日韩亚洲欧美综合| 91精选在线观看| 欧美性感一区二区三区| 不卡视频一二三四| 国产九九视频一区二区三区| 香蕉成人伊视频在线观看| 国产精品日韩成人| 欧美变态口味重另类| 4438成人网| 欧美日韩一本到| 日本乱码高清不卡字幕| 国产91高潮流白浆在线麻豆| 国产做a爰片久久毛片| 日韩精品免费视频人成| 亚洲午夜在线电影| 亚洲三级在线免费| 国产精品福利影院| 亚洲国产视频一区二区| 亚洲美女屁股眼交3| 国产精品免费网站在线观看| 久久亚洲免费视频| 日韩精品一区二区三区在线观看 | 日韩免费一区二区三区在线播放| 欧美偷拍一区二区| 欧美综合天天夜夜久久| 91国内精品野花午夜精品| 99久久久精品| aaa国产一区| 91蜜桃免费观看视频| 91免费小视频| 91国偷自产一区二区开放时间| 色婷婷av久久久久久久| 97精品国产露脸对白| 成人爱爱电影网址| 91丨porny丨中文| 一本大道久久a久久综合婷婷| 99久久免费精品高清特色大片| 97国产一区二区| 91在线视频观看| 91色在线porny| 欧美在线色视频| 欧美妇女性影城| 日韩欧美国产精品| 久久亚洲精华国产精华液 | 成人av网站免费| 99精品欧美一区二区蜜桃免费| 99久久久久免费精品国产| 91啪亚洲精品| 欧美精品色综合| 欧美电视剧在线观看完整版| 国产视频视频一区| 亚洲人成伊人成综合网小说| 亚洲久草在线视频| 全国精品久久少妇| 成人一区在线观看| 色哟哟一区二区在线观看| 欧美视频在线一区二区三区| 欧美一区二区三区在线电影| 久久久美女毛片| 最新久久zyz资源站| 视频一区视频二区中文| 极品少妇xxxx精品少妇偷拍| av高清不卡在线| 精品视频一区 二区 三区| 亚洲欧洲在线观看av| 一区二区三区国产| 久久99精品久久久久久久久久久久| 成人免费看黄yyy456| 欧美卡1卡2卡| 中文字幕成人在线观看| 亚洲成人午夜电影| 国产精品一品二品| 欧美婷婷六月丁香综合色| 337p粉嫩大胆噜噜噜噜噜91av| 中文字幕一区不卡| 免费在线一区观看| 日本精品裸体写真集在线观看 | 一本一本久久a久久精品综合麻豆| 欧美日韩aaaaaa| 国产人成亚洲第一网站在线播放| 亚洲乱码日产精品bd| 秋霞国产午夜精品免费视频| 91美女蜜桃在线| 久久久综合视频| 午夜av电影一区| 99久久精品免费看| 久久蜜桃一区二区| 日韩av在线发布| 色综合久久久久综合99| 久久日一线二线三线suv| 亚洲va欧美va人人爽午夜| 成人av网站在线| 久久麻豆一区二区| 狂野欧美性猛交blacked| 欧美性极品少妇| 最新不卡av在线| 国产激情91久久精品导航| 4438亚洲最大| 五月天中文字幕一区二区| 不卡av电影在线播放| 久久女同性恋中文字幕| 美女被吸乳得到大胸91| 欧美三级日韩在线| 亚洲女爱视频在线| 成人app在线| 国产区在线观看成人精品| 久久精品国产亚洲高清剧情介绍| 欧美日韩一区三区四区| 亚洲精品一卡二卡| 波多野结衣中文字幕一区二区三区| 精品国产免费一区二区三区四区 | 精品久久人人做人人爽| 视频一区免费在线观看| 欧美剧在线免费观看网站| 亚洲一区二区在线视频| 色婷婷综合久久久| 中文av一区特黄| 夫妻av一区二区| 国产丝袜欧美中文另类| 国产在线播精品第三| 亚洲精品一区二区三区四区高清 | 亚洲在线视频网站| 日本丰满少妇一区二区三区| 中文字幕亚洲电影| av一区二区三区| 亚洲日本一区二区| 色哟哟一区二区三区| 一区二区三区美女| 一本到不卡精品视频在线观看| 亚洲视频在线观看三级| 99re热这里只有精品视频| 亚洲欧美偷拍三级| 欧美综合天天夜夜久久| 午夜精品久久久久久久99樱桃| 亚洲国产高清在线| 波多野结衣亚洲一区| 中文av一区二区| 在线国产电影不卡| 性做久久久久久久免费看| 欧美精品久久一区| 久久av资源站| 中文字幕av免费专区久久| 99re在线精品| 亚洲午夜精品在线| 欧美一区二区三区视频| 国产在线观看免费一区| 国产精品不卡在线观看| 欧美三级电影在线看| 毛片av中文字幕一区二区| 国产亚洲欧洲997久久综合| 不卡的av中国片| 午夜电影网亚洲视频| 国产亚洲一区二区三区四区 | 欧美精品一区二区久久婷婷| 国产成人在线看|