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

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

?? jmemdosa.asm

?? 一款最完整的工業組態軟源代碼
?? ASM
字號:
;
; jmemdosa.asm
;
; Copyright (C) 1992, Thomas G. Lane.
; This file is part of the Independent JPEG Group's software.
; For conditions of distribution and use, see the accompanying README file.
;
; This file contains low-level interface routines to support the MS-DOS
; backing store manager (jmemdos.c).  Routines are provided to access disk
; files through direct DOS calls, and to access XMS and EMS drivers.
;
; This file should assemble with Microsoft's MASM or any compatible
; assembler (including Borland's Turbo Assembler).  If you haven't got
; a compatible assembler, better fall back to jmemansi.c or jmemname.c.
;
; To minimize dependence on the C compiler's register usage conventions,
; we save and restore all 8086 registers, even though most compilers only
; require SI,DI,DS to be preserved.  Also, we use only 16-bit-wide return
; values, which everybody returns in AX.
;
; Based on code contributed by Ge' Weijers.
;

JMEMDOSA_TXT	segment byte public 'CODE'

		assume	cs:JMEMDOSA_TXT

		public	_jdos_open
		public	_jdos_close
		public	_jdos_seek
		public	_jdos_read
		public	_jdos_write
		public	_jxms_getdriver
		public	_jxms_calldriver
		public	_jems_available
		public	_jems_calldriver

;
; short far jdos_open (short far * handle, char far * filename)
;
; Create and open a temporary file
;
_jdos_open	proc	far
		push	bp			; linkage
		mov 	bp,sp
		push	si			; save all registers for safety
		push	di
		push	bx
		push	cx
		push	dx
		push	es
		push	ds
		mov	cx,0			; normal file attributes
		lds	dx,dword ptr [bp+10]	; get filename pointer
		mov	ah,3ch			; create file
		int	21h
		jc	open_err		; if failed, return error code
		lds	bx,dword ptr [bp+6]	; get handle pointer
		mov	word ptr [bx],ax	; save the handle
		xor	ax,ax			; return zero for OK
open_err:	pop	ds			; restore registers and exit
		pop	es
		pop	dx
		pop	cx
		pop	bx
		pop	di
		pop	si
		pop 	bp
		ret
_jdos_open	endp


;
; short far jdos_close (short handle)
;
; Close the file handle
;
_jdos_close	proc	far
		push	bp			; linkage
		mov 	bp,sp
		push	si			; save all registers for safety
		push	di
		push	bx
		push	cx
		push	dx
		push	es
		push	ds
		mov	bx,word ptr [bp+6]	; file handle
		mov	ah,3eh			; close file
		int	21h
		jc	close_err		; if failed, return error code
		xor	ax,ax			; return zero for OK
close_err:	pop	ds			; restore registers and exit
		pop	es
		pop	dx
		pop	cx
		pop	bx
		pop	di
		pop	si
		pop 	bp
		ret
_jdos_close	endp


;
; short far jdos_seek (short handle, long offset)
;
; Set file position
;
_jdos_seek	proc	far
		push	bp			; linkage
		mov 	bp,sp
		push	si			; save all registers for safety
		push	di
		push	bx
		push	cx
		push	dx
		push	es
		push	ds
		mov	bx,word ptr [bp+6]	; file handle
		mov	dx,word ptr [bp+8]	; LS offset
		mov	cx,word ptr [bp+10]	; MS offset
		mov	ax,4200h		; absolute seek
		int	21h
		jc	seek_err		; if failed, return error code
		xor	ax,ax			; return zero for OK
seek_err:	pop	ds			; restore registers and exit
		pop	es
		pop	dx
		pop	cx
		pop	bx
		pop	di
		pop	si
		pop 	bp
		ret
_jdos_seek	endp


;
; short far jdos_read (short handle, void far * buffer, unsigned short count)
;
; Read from file
;
_jdos_read	proc	far
		push	bp			; linkage
		mov 	bp,sp
		push	si			; save all registers for safety
		push	di
		push	bx
		push	cx
		push	dx
		push	es
		push	ds
		mov	bx,word ptr [bp+6]	; file handle
		lds	dx,dword ptr [bp+8]	; buffer address
		mov	cx,word ptr [bp+12]	; number of bytes
		mov	ah,3fh			; read file
		int	21h
		jc	read_err		; if failed, return error code
		cmp	ax,word ptr [bp+12]	; make sure all bytes were read
		je	read_ok
		mov	ax,1			; else return 1 for not OK
		jmp	short read_err
read_ok:	xor	ax,ax			; return zero for OK
read_err:	pop	ds			; restore registers and exit
		pop	es
		pop	dx
		pop	cx
		pop	bx
		pop	di
		pop	si
		pop 	bp
		ret
_jdos_read	endp


;
; short far jdos_write (short handle, void far * buffer, unsigned short count)
;
; Write to file
;
_jdos_write	proc	far
		push	bp			; linkage
		mov 	bp,sp
		push	si			; save all registers for safety
		push	di
		push	bx
		push	cx
		push	dx
		push	es
		push	ds
		mov	bx,word ptr [bp+6]	; file handle
		lds	dx,dword ptr [bp+8]	; buffer address
		mov	cx,word ptr [bp+12]	; number of bytes
		mov	ah,40h			; write file
		int	21h
		jc	write_err		; if failed, return error code
		cmp	ax,word ptr [bp+12]	; make sure all bytes written
		je	write_ok
		mov	ax,1			; else return 1 for not OK
		jmp	short write_err
write_ok:	xor	ax,ax			; return zero for OK
write_err:	pop	ds			; restore registers and exit
		pop	es
		pop	dx
		pop	cx
		pop	bx
		pop	di
		pop	si
		pop 	bp
		ret
_jdos_write	endp


;
; void far jxms_getdriver (XMSDRIVER far *)
;
; Get the address of the XMS driver, or NULL if not available
;
_jxms_getdriver	proc	far
		push	bp			; linkage
		mov 	bp,sp
		push	si			; save all registers for safety
		push	di
		push	bx
		push	cx
		push	dx
		push	es
		push	ds
		mov 	ax,4300h		; call multiplex interrupt with
		int	2fh			; a magic cookie, hex 4300
		cmp 	al,80h			; AL should contain hex 80
		je	xmsavail
		xor 	dx,dx			; no XMS driver available
		xor 	ax,ax			; return a nil pointer
		jmp	short xmsavail_done
xmsavail:	mov 	ax,4310h		; fetch driver address with
		int	2fh			; another magic cookie
		mov 	dx,es			; copy address to dx:ax
		mov 	ax,bx
xmsavail_done:	les 	bx,dword ptr [bp+6]	; get pointer to return value
		mov	word ptr es:[bx],ax
		mov	word ptr es:[bx+2],dx
		pop	ds			; restore registers and exit
		pop	es
		pop	dx
		pop	cx
		pop	bx
		pop	di
		pop	si
		pop	bp
		ret
_jxms_getdriver	endp


;
; void far jxms_calldriver (XMSDRIVER, XMScontext far *)
;
; The XMScontext structure contains values for the AX,DX,BX,SI,DS registers.
; These are loaded, the XMS call is performed, and the new values of the
; AX,DX,BX registers are written back to the context structure.
;
_jxms_calldriver 	proc	far
		push	bp			; linkage
		mov 	bp,sp
		push	si			; save all registers for safety
		push	di
		push	bx
		push	cx
		push	dx
		push	es
		push	ds
		les 	bx,dword ptr [bp+10]	; get XMScontext pointer
		mov 	ax,word ptr es:[bx]	; load registers
		mov 	dx,word ptr es:[bx+2]
		mov 	si,word ptr es:[bx+6]
		mov 	ds,word ptr es:[bx+8]
		mov 	bx,word ptr es:[bx+4]
		call	dword ptr [bp+6]	; call the driver
		mov	cx,bx			; save returned BX for a sec
		les 	bx,dword ptr [bp+10]	; get XMScontext pointer
		mov 	word ptr es:[bx],ax	; put back ax,dx,bx
		mov 	word ptr es:[bx+2],dx
		mov 	word ptr es:[bx+4],cx
		pop	ds			; restore registers and exit
		pop	es
		pop	dx
		pop	cx
		pop	bx
		pop	di
		pop	si
		pop 	bp
		ret
_jxms_calldriver 	endp


;
; short far jems_available (void)
;
; Have we got an EMS driver? (this comes straight from the EMS 4.0 specs)
;
_jems_available	proc	far
		push	si			; save all registers for safety
		push	di
		push	bx
		push	cx
		push	dx
		push	es
		push	ds
		mov	ax,3567h		; get interrupt vector 67h
		int	21h
		push	cs
		pop	ds
		mov	di,000ah		; check offs 10 in returned seg
		lea	si,ASCII_device_name	; against literal string
		mov	cx,8
		cld
		repe cmpsb
		jne	no_ems
		mov	ax,1			; match, it's there
		jmp	short avail_done
no_ems:		xor	ax,ax			; it's not there
avail_done:	pop	ds			; restore registers and exit
		pop	es
		pop	dx
		pop	cx
		pop	bx
		pop	di
		pop	si
		ret

ASCII_device_name	db	"EMMXXXX0"

_jems_available	endp


;
; void far jems_calldriver (EMScontext far *)
;
; The EMScontext structure contains values for the AX,DX,BX,SI,DS registers.
; These are loaded, the EMS trap is performed, and the new values of the
; AX,DX,BX registers are written back to the context structure.
;
_jems_calldriver	proc far
		push	bp			; linkage
		mov 	bp,sp
		push	si			; save all registers for safety
		push	di
		push	bx
		push	cx
		push	dx
		push	es
		push	ds
		les 	bx,dword ptr [bp+6]	; get EMScontext pointer
		mov 	ax,word ptr es:[bx]	; load registers
		mov 	dx,word ptr es:[bx+2]
		mov 	si,word ptr es:[bx+6]
		mov 	ds,word ptr es:[bx+8]
		mov 	bx,word ptr es:[bx+4]
		int	67h			; call the EMS driver
		mov	cx,bx			; save returned BX for a sec
		les 	bx,dword ptr [bp+6]	; get EMScontext pointer
		mov 	word ptr es:[bx],ax	; put back ax,dx,bx
		mov 	word ptr es:[bx+2],dx
		mov 	word ptr es:[bx+4],cx
		pop	ds			; restore registers and exit
		pop	es
		pop	dx
		pop	cx
		pop	bx
		pop	di
		pop	si
		pop 	bp
		ret
_jems_calldriver	endp

JMEMDOSA_TXT	ends

		end

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
人人精品人人爱| 蜜臀va亚洲va欧美va天堂| 国产成人99久久亚洲综合精品| 日韩欧美一区二区在线视频| 免费观看成人av| 久久午夜色播影院免费高清| 国产一区不卡视频| 日韩毛片高清在线播放| 欧美日韩国产一级片| 久久激情综合网| 亚洲黄网站在线观看| 日韩欧美亚洲国产另类| 91麻豆国产福利在线观看| 一本大道久久a久久综合| 成人欧美一区二区三区在线播放| 麻豆91精品视频| 日韩女同互慰一区二区| 亚洲一区二区三区激情| 精品在线免费观看| 欧美日韩国产免费| 久久99最新地址| 亚洲国产视频a| 中文字幕av免费专区久久| 欧美人妖巨大在线| 91啪亚洲精品| 蜜臀久久99精品久久久久久9 | 欧美一区二区三区四区久久| 国产一区二区h| 青青草成人在线观看| 亚洲女人****多毛耸耸8| 国产精品女主播av| 久久久国产午夜精品| 精品国产乱码久久久久久牛牛| 在线欧美小视频| 91伊人久久大香线蕉| av在线不卡电影| 99视频超级精品| 99re8在线精品视频免费播放| 高清免费成人av| 国产成人一级电影| 成人免费高清在线| www.日韩大片| 欧美日本国产视频| 日韩精品综合一本久道在线视频| 91久久人澡人人添人人爽欧美| 91亚洲资源网| 欧美午夜免费电影| 一本一本大道香蕉久在线精品| 91在线国内视频| 国产精品69毛片高清亚洲| 亚洲国产中文字幕| 青娱乐精品在线视频| 首页综合国产亚洲丝袜| 青青青伊人色综合久久| 国产曰批免费观看久久久| 国内精品国产三级国产a久久| 国产美女在线观看一区| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 国产不卡在线视频| 91天堂素人约啪| 欧美三级欧美一级| 久久久久久久久久久电影| 国产视频亚洲色图| 亚洲一区二区三区四区中文字幕 | 亚洲摸摸操操av| 亚洲成人动漫一区| 国产成人精品免费| 欧美一区二区在线观看| 中文字幕一区二区三区不卡在线| 中文字幕av一区 二区| 日本aⅴ免费视频一区二区三区 | 亚洲高清在线精品| 99久久国产综合精品女不卡| 亚洲另类中文字| 国产精品久久久久久亚洲伦| 国产精品丝袜黑色高跟| 中文天堂在线一区| 久久精品亚洲乱码伦伦中文| 国产精品久久久久久亚洲伦 | 免费观看一级特黄欧美大片| 国产精品91xxx| 精品伦理精品一区| 视频一区欧美精品| 国产精品中文欧美| 欧美电影一区二区| 亚洲精品videosex极品| 国产最新精品免费| 久久久久综合网| 狠狠色丁香九九婷婷综合五月| 欧美日韩国产首页在线观看| 国产精品久久久久久久久快鸭| 国产黑丝在线一区二区三区| 日韩亚洲欧美中文三级| 一区二区三区在线观看视频| 日本黄色一区二区| 亚洲国产精品自拍| 欧美性大战xxxxx久久久| 亚洲欧美成aⅴ人在线观看| 色嗨嗨av一区二区三区| 亚洲一区二区视频在线| 欧美精品乱码久久久久久按摩| 亚洲午夜激情网站| 26uuu久久综合| 972aa.com艺术欧美| 亚洲欧洲日韩在线| 欧美日韩亚洲综合在线 | 青青青爽久久午夜综合久久午夜| 欧美一区二区视频免费观看| 精品一区二区免费视频| 最新国产の精品合集bt伙计| 久久国产精品72免费观看| 久久精品无码一区二区三区| www.成人网.com| 精品中文av资源站在线观看| 国产精品久久影院| 色国产综合视频| 风间由美性色一区二区三区| 午夜免费久久看| 亚洲激情欧美激情| 亚洲欧美综合另类在线卡通| 97精品久久久午夜一区二区三区| 日本不卡中文字幕| 水野朝阳av一区二区三区| 一区二区三区免费在线观看| 亚洲国产电影在线观看| 国产欧美日韩在线看| 国产日韩视频一区二区三区| 国产婷婷一区二区| 欧美一区二区三区四区五区 | 中文字幕亚洲精品在线观看 | 青青国产91久久久久久 | 国产精品婷婷午夜在线观看| 亚洲精品成人天堂一二三| 91久久精品国产91性色tv| 亚洲欧美视频在线观看| 欧美高清视频在线高清观看mv色露露十八 | 亚洲国产精品久久久久婷婷884| 中文字幕五月欧美| 国产精品国产三级国产aⅴ入口| 国产精品久久网站| 亚洲色欲色欲www| 婷婷开心激情综合| 蜜臀久久久99精品久久久久久| 久久www免费人成看片高清| 成人avav影音| 国产欧美一区二区精品秋霞影院| 天天亚洲美女在线视频| 成人一级片网址| 欧美一级高清大全免费观看| 国产视频一区不卡| 狠狠色丁香久久婷婷综| 91在线免费播放| 欧美va亚洲va香蕉在线| 亚洲精品国产成人久久av盗摄| 亚洲欧美偷拍卡通变态| 国产资源在线一区| 欧美日韩国产在线播放网站| 国产三级一区二区| 日日摸夜夜添夜夜添精品视频 | 极品瑜伽女神91| 欧美日韩你懂的| 一区二区三区欧美| 99re这里都是精品| 欧美一区二区三区四区高清| 精品福利一区二区三区| 肉色丝袜一区二区| 欧美午夜不卡视频| 欧美一区二区二区| 亚洲国产精品99久久久久久久久| 国产呦精品一区二区三区网站| 国产精品私人自拍| 91女人视频在线观看| 亚洲一区精品在线| 日韩欧美国产不卡| 91亚洲永久精品| 日本vs亚洲vs韩国一区三区 | 久久精品国产免费| 日韩欧美一级在线播放| 精品一区二区三区免费毛片爱| 日韩精品综合一本久道在线视频| 精品一区二区免费| 亚洲三级在线观看| 欧美日韩1234| 国产一区二区三区在线观看免费视频 | 欧美日韩一区二区三区免费看| 蜜臀久久久久久久| 亚洲精品福利视频网站| 久久久精品2019中文字幕之3| 欧美性做爰猛烈叫床潮| 国产一区二区不卡| 日韩电影在线免费| 亚洲午夜免费福利视频| 中文字幕精品—区二区四季| 精品欧美黑人一区二区三区| 欧美日本在线一区| 色先锋久久av资源部| 成人h动漫精品一区二区| 国产乱妇无码大片在线观看| 日本亚洲最大的色成网站www| 亚洲精品一二三|