home *** CD-ROM | disk | FTP | other *** search
/ FreeWare Collection 2 / FreeSoftwareCollection2pd199x-jp.img / ms_dos / ish / ish200s / display.h < prev    next >
Text File  |  1990-06-14  |  5KB  |  274 lines

  1. ;
  2. ;        ish file converter for MS-DOS  Ver 2.00 (90/3/27)
  3. ;
  4. ;
  5. ;        Copyright (c) 1986, 1987, 1989, 1990  by  M. ishizuka
  6. ;        All rights reserved.
  7. ;
  8.  
  9.  
  10.  
  11. ;-----------------------------------------------;
  12. ;                        ;
  13. ;    @@cmpreg    instruction, operator, operand1, operand2
  14. ;                        ;
  15. ;-----------------------------------------------;
  16.  
  17. @@cmpreg    macro    para1, para2, para3, para4
  18.         ifidni    <para3>, <para4>
  19.         else
  20.         ifidni    <para4>, <ax>
  21.             para1    para3, para4
  22.         else
  23.         ifidni    <para4>, <bx>
  24.             para1    para3, para4
  25.         else
  26.         ifidni    <para4>, <cx>
  27.             para1    para3, para4
  28.         else
  29.         ifidni    <para4>, <dx>
  30.             para1    para3, para4
  31.         else
  32.         ifidni    <para4>, <si>
  33.             para1    para3, para4
  34.         else
  35.         ifidni    <para4>, <di>
  36.             para1    para3, para4
  37.         else
  38.         ifidni    <para4>, <bp>
  39.             para1    para3, para4
  40.         else
  41.         ifidni    <para4>, <sp>
  42.             para1    para3, para4
  43.         else
  44.         ifidni    <para4>, <cs>
  45.             para1    para3, para4
  46.         else
  47.         ifidni    <para4>, <ds>
  48.             para1    para3, para4
  49.         else
  50.         ifidni    <para4>, <es>
  51.             para1    para3, para4
  52.         else
  53.         ifidni    <para4>, <ss>
  54.             para1    para3, para4
  55.         else
  56.         ifidni    <para4>, <ah>
  57.             para1    para3, para4
  58.         else
  59.         ifidni    <para4>, <al>
  60.             para1    para3, para4
  61.         else
  62.         ifidni    <para4>, <bh>
  63.             para1    para3, para4
  64.         else
  65.         ifidni    <para4>, <bl>
  66.             para1    para3, para4
  67.         else
  68.         ifidni    <para4>, <ch>
  69.             para1    para3, para4
  70.         else
  71.         ifidni    <para4>, <cl>
  72.             para1    para3, para4
  73.         else
  74.         ifidni    <para4>, <dh>
  75.             para1    para3, para4
  76.         else
  77.         ifidni    <para4>, <dl>
  78.             para1    para3, para4
  79.         else
  80.             para1    para3, para2 para4
  81.         endif
  82.         endif
  83.         endif
  84.         endif
  85.         endif
  86.         endif
  87.         endif
  88.         endif
  89.         endif
  90.         endif
  91.         endif
  92.         endif
  93.         endif
  94.         endif
  95.         endif
  96.         endif
  97.         endif
  98.         endif
  99.         endif
  100.         endif
  101.         endif
  102.         endm
  103.  
  104.  
  105.  
  106. ;-----------------------------------------------;
  107. ;                        ;
  108. ;    @@display    reg/offset        ;
  109. ;                        ;
  110. ;    INPUT :    para                ;
  111. ;    OUTPUT:    NON                ;
  112. ;    ERROR :    NON                ;
  113. ;    BREAK : flags, ax, dx            ;
  114. ;                        ;
  115. ;-----------------------------------------------;
  116.  
  117. @@display    macro    para
  118.         @@cmpreg    mov, offset, dx, para
  119.         @@int21_9
  120.         endm
  121.  
  122.  
  123.  
  124. ;-----------------------------------------------;
  125. ;                        ;
  126. ;    @@dispchr    reg/char        ;
  127. ;                        ;
  128. ;    INPUT :    para                ;
  129. ;    OUTPUT:    NON                ;
  130. ;    ERROR :    NON                ;
  131. ;    BREAK : flags, ax, dl            ;
  132. ;                        ;
  133. ;-----------------------------------------------;
  134.  
  135. @@dispchr    macro    para
  136.         @@cmpreg    mov,, dl, para
  137.         @@int21_2
  138.         endm
  139.  
  140.  
  141.  
  142. ;-----------------------------------------------;
  143. ;                        ;
  144. ;    @@display_stdout    reg/offset    ;
  145. ;                        ;
  146. ;    INPUT :    para                ;
  147. ;    OUTPUT:    NON                ;
  148. ;    ERROR :    NON                ;
  149. ;    BREAK : flags, ax, dx            ;
  150. ;                        ;
  151. ;-----------------------------------------------;
  152.  
  153. @@display_stdout    macro    para
  154.         @@cmpreg    mov, offset, dx, para
  155.         mov    ah, 9
  156.         int    21h
  157.         endm
  158.  
  159.  
  160.  
  161. ;-----------------------------------------------;
  162. ;                        ;
  163. ;    @@dispchr_stdout    reg/char    ;
  164. ;                        ;
  165. ;    INPUT :    para                ;
  166. ;    OUTPUT:    NON                ;
  167. ;    ERROR :    NON                ;
  168. ;    BREAK : flags, ax, dl            ;
  169. ;                        ;
  170. ;-----------------------------------------------;
  171.  
  172. @@dispchr_stdout    macro    para
  173.         @@cmpreg    mov,, dl, para
  174.         mov    ah, 2
  175.         int    21h
  176.         endm
  177.  
  178.  
  179.  
  180. ;-----------------------------------------------;
  181. ;                        ;
  182. ;    @@dispstr_sub                ;
  183. ;                        ;
  184. ;    INPUT :    si (string(ASCIZ) address)    ;
  185. ;    OUTPUT:    NON                ;
  186. ;    ERROR :    NON                ;
  187. ;    BREAK : flags, ax, dl, si        ;
  188. ;                        ;
  189. ;-----------------------------------------------;
  190.  
  191. @@dispstr_sub    macro
  192.         local    dispstr_loop, dispstr_ret
  193.         cld
  194. dispstr_loop:    lodsb
  195.         or    al, al
  196.         jz    dispstr_ret
  197.         @@dispchr    al
  198.         jmp    dispstr_loop
  199.  
  200. dispstr_ret:
  201.         endm
  202.  
  203.  
  204.  
  205. ;-----------------------------------------------;
  206. ;                        ;
  207. ;    @@dispstr    reg/offset        ;
  208. ;                        ;
  209. ;    INPUT :    para                ;
  210. ;    OUTPUT:    NON                ;
  211. ;    ERROR :    NON                ;
  212. ;    BREAK : flags, ax, dl            ;
  213. ;                        ;
  214. ;-----------------------------------------------;
  215.  
  216. @@dispstr    macro    para
  217.         push    si
  218.         @@cmpreg    mov, offset, si, para
  219.         @@dispstr_sub
  220.         pop    si
  221.         endm
  222.  
  223.  
  224.  
  225. ;-----------------------------------------------;
  226. ;                        ;
  227. ;    @@dispstr2    reg/offset, reg/number    ;
  228. ;                        ;
  229. ;    INPUT :    para1, para2            ;
  230. ;    OUTPUT:    NON                ;
  231. ;    ERROR :    NON                ;
  232. ;    BREAK : flags, al, cx, dl, si        ;
  233. ;                        ;
  234. ;-----------------------------------------------;
  235.  
  236. @@dispstr2    macro    para1, para2
  237.         local    dispstr2_1
  238.         @@cmpreg    mov, offset, si, para1
  239.         @@cmpreg    mov,, cx, para2
  240. dispstr2_1:    lodsb
  241.         @@dispchr    al
  242.         loop    dispstr2_1
  243.         endm
  244.  
  245.  
  246.  
  247. ;-----------------------------------------------;
  248. ;                        ;
  249. ;    @@hex_disp                ;
  250. ;                        ;
  251. ;    INPUT :    NON                ;
  252. ;    OUTPUT:    NON                ;
  253. ;    ERROR :    NON                ;
  254. ;    BREAK :    flags, ax, cx, dx        ;
  255. ;                        ;
  256. ;-----------------------------------------------;
  257.  
  258. @@hex_disp    macro    para
  259.         @@cmpreg    mov,, dh, para
  260.         @@dispchr    '\'
  261.         mov    cl, 4
  262.         mov    dl, dh
  263.         shr    dl, cl
  264.         mov    cx, 2
  265. hex_disp_1:    add    dl, 30h
  266.         cmp    dl, '9' + 1
  267.         jc    hex_disp_2
  268.         add    dl, 27h
  269. hex_disp_2:    @@dispchr    dl
  270.         mov    dl, dh
  271.         and    dl, 0fh
  272.         loop    hex_disp_1
  273.         endm
  274.