extrn   v86r_eax:dword, v86r_ebx:dword, v86r_ecx:dword, v86r_edx:dword
extrn   v86r_esi:dword, v86r_edi:dword, v86r_ebp:dword
extrn   v86r_ah:byte, v86r_al:byte, v86r_bh:byte, v86r_bl:byte
extrn   v86r_ch:byte, v86r_cl:byte, v86r_dh:byte, v86r_dl:byte
extrn   v86r_ax:word, v86r_bx:word, v86r_cx:word, v86r_dx:word
extrn   v86r_si:word, v86r_di:word, v86r_bp:word
extrn   v86r_ds:word, v86r_es:word, v86r_fs:word, v86r_gs:word
extrn   _selcode:word, _seldata:word, _selzero:word, _lomembase:dword
extrn   _lomemtop:dword, _himembase:dword, _himemtop:dword, _pspa:dword
extrn   _code16a:dword, _code32a:dword, _getirqvect:dword, _setirqvect:dword
extrn   _sysbyte0:byte, _setselector:dword, _exitcode:byte

Extrn _Filebufloc:Dword,_Filebuflen:Word,_Closefile:Near,_Createfile:Near,_CreateHiddenfile:Near
Extrn _Openfile:Near,_Deletefile:Near,_Lseekfile:Near,_Filesize:Near
Extrn _Readfile:Near,_Writefile:Near,_Filecopy:Near,_Findfile:Near,_renfile:Near

extrn   _getmem:near, _getlomem:near, _gethimem:near, _lomemsize:near
extrn   _himemsize:near, _ret:near, _exit:near, _getirqmask:near
extrn   _setirqmask:near, _rmpmirqset:near, _rmpmirqfree:near
extrn   _getselector:near, _freeselector:near

; Convert physical pointer to realative pointer
Move    macro reg, ptr
	mov &reg,&ptr
	sub &reg,_code32a
endm

; Convert relative pointer to physical pointer
@php    macro reg, ptr
	mov &reg,&ptr
	add &reg,_code32a
endm

; Output a byte to DX
@outb           macro   val
	mov al,&val
	out dx,al
endm

; Output a word to DX
@outw           macro   val
	mov ax,&val
	out dx,ax
endm


; Get interrupt flag status
@gif    macro
	mov ax,902h
	int 31h
endm

; Get interrupt flag status and clear
@gifc   macro
	mov ax,900h
	int 31h
endm

; Get interrupt flag status and set
@gifs   macro
	mov ax,901h
	int 31h
endm

; Get interrupt flag status and set to AL (0=clear, 1=set)
@gifal  macro
	mov ah,9
	int 31h
endm

