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

📄 newmac.inc

📁 This is a program that I wrote many years ago. It is a floppy disk , disk copy,disk info,and format
💻 INC
📖 第 1 页 / 共 2 页
字号:
.NOLIST

;STANDARD EQUATES:


TRUE    	EQU	0FFFFH          ;TRUE
FALSE   	EQU	0               ;FALSE
BLINK		EQU	10000000b       ;80h

;Standard nonprintable ASCII characters:

NUL     	EQU   00000000b       ;nul
BEL     	EQU   00000111b       ;bell
BS      	EQU   00001000b       ;backspace
HT      	EQU   00001001b       ;horizontal tab
LF      	EQU   00001010b       ;line feed
FF      	EQU   00001100b       ;form feed
CR      	EQU   00001101b       ;carrage return
SUBST   	EQU   00011010b       ;substitute
ESCAPE  	EQU   00011011b       ;escape
SPACE   	EQU   00100000b       ;space
COLON   	EQU   00111010b       ;colon
SCOLON  	EQU   00111011b       ;semicolon
Escp		EQU	1
RETURN		EQU	1ch
_F1     	EQU   3bh
_F2     	EQU   3ch
_F3     	EQU   3dh
_F4     	EQU   3eh
_F5     	EQU   3fh
_F6     	EQU   40h
_F7     	EQU   41h
_F8     	EQU   42h
_F9     	EQU   43h
_F10    	EQU   44h
_F11    	EQU   57h
_F12    	EQU   58h
SHFT_F1     	EQU   54h
SHFT_F2     	EQU   55h
SHFT_F3     	EQU   56h
SHFT_F4     	EQU   57h
SHFT_F5     	EQU   58h
SHFT_F6     	EQU   59h
SHFT_F7     	EQU   5ah
SHFT_F8     	EQU   5bh
SHFT_F9     	EQU   5ch
SHFT_F10    	EQU   5dh
SHFT_F11    	EQU   87h
SHFT_F12    	EQU   88h
CTRL_F1     	EQU   5eh
CTRL_F2     	EQU   5fh
CTRL_F3     	EQU   60h
CTRL_F4     	EQU   61h
CTRL_F5     	EQU   62h
CTRL_F6     	EQU   63h
CTRL_F7     	EQU   64h
CTRL_F8     	EQU   65h
CTRL_F9     	EQU   66h
CTRL_F10    	EQU   67h
CTRL_F11    	EQU   89h
CTRL_F12    	EQU   8ah
ALT_F1     	EQU   68h
ALT_F2     	EQU   69h
ALT_F3     	EQU   6ah
ALT_F4     	EQU   6bh
ALT_F5     	EQU   6ch
ALT_F6     	EQU   6dh
ALT_F7     	EQU   6eh
ALT_F8     	EQU   6fh
ALT_F9     	EQU   70h
ALT_F10    	EQU   71h
ALT_F11    	EQU   8bh
ALT_F12    	EQU   8ch
HOMEKEY 	EQU   47h
UPKEY   	EQU   48h
PGUP    	EQU   49h
LEFT    	EQU   4bh
RIGHT   	EQU   4dh
ENDKEY  	EQU   4fh             ;White end key
DOWN    	EQU   50h
PGDN    	EQU   51h
ALT		EQU	38h
CTRL		EQU	1dh
TAB		EQU	0fh
BACKSPACE	EQU	0eh
LSHIFT		EQU	2ah
RSHIFT		EQU	36h
DEL		EQU	53h
INSERT		EQU	52h
SYSREQ		EQU	54h
SCRLOK		EQU	46h
SHFTLOK		EQU	3ah
NUMLOK		EQU	45h
GREYMIN		EQU	4ah
GREYPLUS	EQU	4eh
MINUS		EQU	0ch
SLASH		EQU	35h
PRTSCRN		EQU	37h
CENTER5		EQU	4ch
A_KEY		EQU	1eh
B_KEY		EQU	30h
C_KEY		EQU	2eh
D_KEY		EQU	20h
E_KEY		EQU	12h
F_KEY		EQU	21h
G_KEY		EQU	22h
H_KEY		EQU	23h
I_KEY		EQU	17h
J_KEY		EQU	24h
K_KEY		EQU	25h
L_KEY		EQU	26h
M_KEY		EQU	32h
N_KEY		EQU	31H
O_KEY		EQU	18H
P_KEY		EQU	19h
Q_KEY		EQU	10H
R_KEY		EQU	13h
S_KEY		EQU	1fh
T_KEY		EQU	14H
U_KEY		EQU	16h
V_KEY		EQU	2fh
W_KEY		EQU	11h
X_KEY		EQU	2dh
Y_KEY		EQU	15h
Z_KEY		EQU	2ch


;;		  ON		  OFF 

;;Pause 	E1 1D 45	E1 9D C5
;;break		E0 1D 46	E0 9D C6
;;Insert	E0 2A E0 52	E0 D2 E0 AA
;;Delete	E0 2A E0 53	E0 D3 E0 AA
;;Home		E0 2A E0 47	E0 C7 E0 AA
;;End		E0 2A E0 4F	E0 CF E0 AA
;;Enter		E0 1C		E0 9C
;;Print Screen	E0 2A E0 37	E0 B7 E0 AA
;;Left		E0 2A E0 4B	E0 CB E0 AA
;;L Control	Normal
;;R Control	E0 1D		E0 9D
;;L Alt		Normal
;;R Alt		E0 38		E0 B8
;;Grey /	E0 35		E0 B5

;;mouse constants

No_Button	EQU	0
Left_Button	EQU	1
Right_Button	EQU	2
Middle_Button	EQU	4

To_ascii	MACRO

		cmp	al,10
		sbb	al,69h
		das

		ENDM

putnop		MACRO	numnop

		REPEAT	numnop

		nop

		ENDM

		ENDM

Para_align	MACRO	paragraph	;;label of begin of segment
		LOCAL	do_rep

do_rep	=	10h - (($ - offset paragraph) AND 15)

		REPT	do_rep	;;force alignment on paragraph
				;;boundary
		byte	?

		ENDM

		ENDM

Print_bin	MACRO	register
		LOCAL	diary

		mov	cx,16
diary:
		mov	ax,730h
		rol	register,1
		adc	al,0
		stosw
		loop	diary

		ENDM

prt_flg		MACRO

		rcl	dx,1
		mov	al,'0'
		adc	al,0
		stosw

		ENDM

prt_flge	MACRO

		rcl	dx,1
		mov	al,'0'
		adc	al,0
		mov	es:[edi],ax

		ENDM

prt_flg1	MACRO

		mov	al,'0'
		adc	al,0
		stosw
	
		ENDM

prt_flg1e	MACRO

		mov	al,'0'
		adc	al,0
		mov	es:[edi],ax
		
		ENDM

prt_eflg	MACRO

		rcl	edx,1
		mov	al,'0'
		adc	al,0
		stosw

		ENDM

prt_eflge	MACRO

		rcl	edx,1
		mov	al,'0'
		adc	al,0
		mov	es:[edi],ax

		ENDM

chg_asc2	MACRO

		shr	al,4
		To_ascii
		stosw

		ENDM

chg_asc		MACRO

		shr	al,1			;hex to ascii routine
		shr	al,1
		shr	al,1
		shr	al,1
		To_ascii
		stosw

		ENDM

chg_asc3	MACRO

		and	al,15
		To_ascii
		stosw

		ENDM

hexc		MACRO

		mov	al,dh
		chg_asc
		mov	al,dh
		chg_asc3
		mov	al,dl
		chg_asc
		mov	al,dl
		chg_asc3

		ENDM

hexo		MACRO

		mov	al,dl
		chg_asc
		mov	al,dl
		chg_asc3

		ENDM

hexd		MACRO

		rol	edx,16
		hexc
		rol	edx,16
		hexc

		ENDM

hexd2		MACRO

		rol	edx,16
		hexc2
		rol	edx,16
		hexc2

		ENDM

hexd2e		MACRO

		rol	edx,16
		mov	al,dh
		shr	al,4
		To_ascii
		mov	es:[edi],ax
		mov	al,dh
		and	al,15
		To_ascii
		mov	es:[edi+2],ax
		mov	al,dl
		shr	al,4
		To_ascii
		mov	es:[edi+4],ax
		mov	al,dl
		and	al,15
		To_ascii
		mov	es:[edi+6],ax
		rol	edx,16
		mov	al,dh
		shr	al,4
		To_ascii
		mov	es:[edi+8],ax
		mov	al,dh
		and	al,15
		To_ascii
		mov	es:[edi+10],ax
		mov	al,dl
		shr	al,4
		To_ascii
		mov	es:[edi+12],ax
		mov	al,dl
		and	al,15
		To_ascii
		mov	es:[edi+14],ax

		ENDM

hexd4e		MACRO

		rol	edx,16
		mov	al,dh
		and	al,15
		To_ascii
		rol	eax,16
		mov	al,dh
		shr	al,4
		To_ascii
		mov	es:[edi],eax
		mov	al,dl
		and	al,15
		To_ascii
		rol	eax,16
		mov	al,dl
		shr	al,4
		To_ascii
		mov	es:[edi+4],eax
		rol	edx,16
		mov	al,dh
		and	al,15
		To_ascii
		rol	eax,16
		mov	al,dh
		shr	al,4
		To_ascii
		mov	es:[edi+8],eax
		mov	al,dl
		and	al,15
		To_ascii
		rol	eax,16
		mov	al,dl
		shr	al,4
		To_ascii
		mov	es:[edi+12],eax

		ENDM

hexc2		MACRO

		mov	al,dh
		shr	al,4
		To_ascii
		stosw
		mov	al,dh
		chg_asc3
		mov	al,dl
		shr	al,4
		To_ascii
		stosw
		mov	al,dl
		chg_asc3

		ENDM

hexc2e		MACRO

		mov	al,dh
		shr	al,4
		To_ascii
		mov	es:[edi],ax
		mov	al,dh
		and	al,15
		To_ascii
		mov	es:[edi+2],ax
		mov	al,dl
		shr	al,4
		To_ascii
		mov	es:[edi+4],ax
		mov	al,dl
		and	al,15
		To_ascii
		mov	es:[edi+6],ax

		ENDM

hexc4e		MACRO

		mov	al,dh
		and	al,15
		To_ascii
		rol	eax,16
		mov	al,dh
		shr	al,4
		To_ascii
		mov	es:[edi],eax
		mov	al,dl
		and	al,15
		To_ascii
		rol	eax,16
		mov	al,dl
		shr	al,4
		To_ascii
		mov	es:[edi+4],eax

		ENDM

hexo2		MACRO

		mov	al,dl
		shr	al,4
		To_ascii
		stosw
		mov	al,dl
		chg_asc3

		ENDM

hexo2e		MACRO

		mov	al,dl
		shr	al,4
		To_ascii
		mov	es:[edi],ax
		mov	al,dl
		and	al,15
		To_ascii
		mov	es:[edi+2],ax

		ENDM

hexo4e		MACRO

		mov	al,dl
		and	al,15
		To_ascii
		rol	eax,16
		mov	al,dl
		shr	al,4
		To_ascii
		mov	es:[edi],eax

		ENDM

callf		MACRO	calgate,caladrs

		byte	9ah	;;same as call far ptr callgate:offset 0

IF (@WordSize - 2)

	IFB <caladrs>
			dword	0	;;masm doesn't like to do this
	ELSE
			dword	offset caladrs
	ENDIF

ELSE

	IFB <caladrs>
			word	0
	ELSE
			word	offset caladrs
	ENDIF

ENDIF
		word	calgate

		ENDM

jmpf		MACRO	jmpgate,jmpadrs

		byte	0eah	;;same as jmp  far ptr jmpgate:offset 0	

IF (@WordSize - 2)

	IFB <jmpadrs>
			dd	0
	ELSE
			dd	offset jmpadrs
	ENDIF

ELSE

	IFB <jmpadrs>
			word	0
	ELSE
			word	offset jmpadrs
	ENDIF

ENDIF
		word	jmpgate

		ENDM

jmpp		MACRO	constant1,constant2

		byte	0eah
		word	constant2
		word	constant1

		ENDM

jmpc		MACRO	jmpcgate,jmpcadrs

		byte	0eah            ;;same as jmp  far ptr jmpgate:offset 0	
IFB <jmpadrs>
		word	0
ELSE
		word	offset jmpcadrs
ENDIF
		word	SEG jmpcgate

		ENDM

break_point	MACRO

		byte	0cch

		ENDM

es_rep_movsw	MACRO

		byte	26h      ;es:  	microsoft assembler will not allow this coding
		rep	movsw			;On a 8088 if this instruction is used to address (speically video)
								;ram interrupts should be cleared before and reset after otherwise
		ENDM					;data fouts will occur!	

es_rep_movsb	MACRO

		byte	26h      ;es:
		rep	movsb

		ENDM

es_rep_movsd	MACRO

		byte	26h      ;es:
		rep	movsd

		ENDM

ss_rep_movsw	MACRO

		byte	36h      ;ss:
		rep	movsw

		ENDM

ss_rep_movsb	MACRO

		byte	36h      ;ss:
		rep	movsb

		ENDM

cs_rep_movsw	MACRO

		byte	2eh      ;cs:
		rep	movsw

		ENDM

cs_rep_movsb	MACRO

		byte	2eh      ;cs:
		rep	movsb

		ENDM

es_movsw	MACRO

		byte	26h      ;es:	es:movsw
		movsw

		ENDM

es_movsb	MACRO

		byte	26h      ;es:	es:movsb
		movsb

		ENDM

ss_movsw	MACRO

		byte	36h      ;ss:	ss:movsw
		movsw

		ENDM

ss_movsd	MACRO

		byte	36h      ;ss:	ss:movsw
		movsd

		ENDM

ss_movsb	MACRO

		byte	36h      ;ss:	ss:movsb
		movsb

		ENDM

cs_movsw	MACRO

		byte	2eh      ;cs:	cs:movsw
		movsw

		ENDM

cs_movsb	MACRO

		byte	2eh     ;cs:	cs:movsb
		movsb

		ENDM

es_lodsw	MACRO

		byte	26h      ;es:	es:lodsw
		lodsw

		ENDM

es_lodsb	MACRO

		byte	26h      ;es:	es:lodsb
		lodsb

		ENDM

gs_lodsb	MACRO

		byte	65h      ;es:	es:lodsb
		lodsb

		ENDM

ss_lodsb	MACRO

		byte	36h      ;es:	es:lodsb
		lodsb

		ENDM

ss_lodsw	MACRO

		byte	36h      ;es:	es:lodsw
		lodsw

		ENDM

fs_lodsb	MACRO

		byte	64h      ;fs:lodsb
		lodsb

		ENDM

cs_lodsb	MACRO

		byte	2eh      ;es:	es:movsw
		lodsb

		ENDM

cs_lodsw	MACRO

		byte	2eh      ;es:	es:movsw
		lodsw

       		ENDM

fs_lodsw	MACRO

		byte	64h      ;es:	es:movsw
		lodsw

       		ENDM

es_repe_cmpsw	MACRO

		byte	26h      ;es:
		repe	cmpsw

		ENDM

es_repe_cmpsb	MACRO

		byte	26h      ;es:
		repe	cmpsb

		ENDM

ss_repe_cmpsw	MACRO

		byte	36h      ;ss:
		repe	cmpsw

		ENDM

ss_repe_cmpsb	MACRO

		byte	36h      ;ss:
		repe	cmpsb

⌨️ 快捷键说明

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