home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FreeWare Collection 2
/
FreeSoftwareCollection2pd199x-jp.img
/
ms_dos
/
ish
/
ish200s
/
ish200s.lzh
/
DISPLAY.H
< prev
next >
Wrap
Text File
|
1990-03-27
|
5KB
|
274 lines
;
; ish file converter for MS-DOS Ver 2.00 (90/3/27)
;
;
; Copyright (c) 1986, 1987, 1989, 1990 by M. ishizuka
; All rights reserved.
;
;-----------------------------------------------;
; ;
; @@cmpreg instruction, operator, operand1, operand2
; ;
;-----------------------------------------------;
@@cmpreg macro para1, para2, para3, para4
ifidni <para3>, <para4>
else
ifidni <para4>, <ax>
para1 para3, para4
else
ifidni <para4>, <bx>
para1 para3, para4
else
ifidni <para4>, <cx>
para1 para3, para4
else
ifidni <para4>, <dx>
para1 para3, para4
else
ifidni <para4>, <si>
para1 para3, para4
else
ifidni <para4>, <di>
para1 para3, para4
else
ifidni <para4>, <bp>
para1 para3, para4
else
ifidni <para4>, <sp>
para1 para3, para4
else
ifidni <para4>, <cs>
para1 para3, para4
else
ifidni <para4>, <ds>
para1 para3, para4
else
ifidni <para4>, <es>
para1 para3, para4
else
ifidni <para4>, <ss>
para1 para3, para4
else
ifidni <para4>, <ah>
para1 para3, para4
else
ifidni <para4>, <al>
para1 para3, para4
else
ifidni <para4>, <bh>
para1 para3, para4
else
ifidni <para4>, <bl>
para1 para3, para4
else
ifidni <para4>, <ch>
para1 para3, para4
else
ifidni <para4>, <cl>
para1 para3, para4
else
ifidni <para4>, <dh>
para1 para3, para4
else
ifidni <para4>, <dl>
para1 para3, para4
else
para1 para3, para2 para4
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endm
;-----------------------------------------------;
; ;
; @@display reg/offset ;
; ;
; INPUT : para ;
; OUTPUT: NON ;
; ERROR : NON ;
; BREAK : flags, ax, dx ;
; ;
;-----------------------------------------------;
@@display macro para
@@cmpreg mov, offset, dx, para
@@int21_9
endm
;-----------------------------------------------;
; ;
; @@dispchr reg/char ;
; ;
; INPUT : para ;
; OUTPUT: NON ;
; ERROR : NON ;
; BREAK : flags, ax, dl ;
; ;
;-----------------------------------------------;
@@dispchr macro para
@@cmpreg mov,, dl, para
@@int21_2
endm
;-----------------------------------------------;
; ;
; @@display_stdout reg/offset ;
; ;
; INPUT : para ;
; OUTPUT: NON ;
; ERROR : NON ;
; BREAK : flags, ax, dx ;
; ;
;-----------------------------------------------;
@@display_stdout macro para
@@cmpreg mov, offset, dx, para
mov ah, 9
int 21h
endm
;-----------------------------------------------;
; ;
; @@dispchr_stdout reg/char ;
; ;
; INPUT : para ;
; OUTPUT: NON ;
; ERROR : NON ;
; BREAK : flags, ax, dl ;
; ;
;-----------------------------------------------;
@@dispchr_stdout macro para
@@cmpreg mov,, dl, para
mov ah, 2
int 21h
endm
;-----------------------------------------------;
; ;
; @@dispstr_sub ;
; ;
; INPUT : si (string(ASCIZ) address) ;
; OUTPUT: NON ;
; ERROR : NON ;
; BREAK : flags, ax, dl, si ;
; ;
;-----------------------------------------------;
@@dispstr_sub macro
local dispstr_loop, dispstr_ret
cld
dispstr_loop: lodsb
or al, al
jz dispstr_ret
@@dispchr al
jmp dispstr_loop
dispstr_ret:
endm
;-----------------------------------------------;
; ;
; @@dispstr reg/offset ;
; ;
; INPUT : para ;
; OUTPUT: NON ;
; ERROR : NON ;
; BREAK : flags, ax, dl ;
; ;
;-----------------------------------------------;
@@dispstr macro para
push si
@@cmpreg mov, offset, si, para
@@dispstr_sub
pop si
endm
;-----------------------------------------------;
; ;
; @@dispstr2 reg/offset, reg/number ;
; ;
; INPUT : para1, para2 ;
; OUTPUT: NON ;
; ERROR : NON ;
; BREAK : flags, al, cx, dl, si ;
; ;
;-----------------------------------------------;
@@dispstr2 macro para1, para2
local dispstr2_1
@@cmpreg mov, offset, si, para1
@@cmpreg mov,, cx, para2
dispstr2_1: lodsb
@@dispchr al
loop dispstr2_1
endm
;-----------------------------------------------;
; ;
; @@hex_disp ;
; ;
; INPUT : NON ;
; OUTPUT: NON ;
; ERROR : NON ;
; BREAK : flags, ax, cx, dx ;
; ;
;-----------------------------------------------;
@@hex_disp macro para
@@cmpreg mov,, dh, para
@@dispchr '\'
mov cl, 4
mov dl, dh
shr dl, cl
mov cx, 2
hex_disp_1: add dl, 30h
cmp dl, '9' + 1
jc hex_disp_2
add dl, 27h
hex_disp_2: @@dispchr dl
mov dl, dh
and dl, 0fh
loop hex_disp_1
endm