home *** CD-ROM | disk | FTP | other *** search
/ C!T ROM 5 / ctrom5b.zip / ctrom5b / DOS / UTILITY / DIVERSEN / KWIKHELP / MACROS.INC < prev    next >
Text File  |  1994-12-01  |  3KB  |  190 lines

  1. .NOLIST
  2. ;------------------------------------------------------------
  3. ;  MACROS.LIB -- JT. Last time here: 18 June 1994
  4. ;------------------------------------------------------------
  5.  
  6. dosf    equ    int 21h
  7. system    equ    int 20h
  8. scout    equ    int 29h
  9.     
  10. null    equ    0
  11. nul    equ    0
  12. bell    equ    7
  13. tab    equ    9
  14. lf    equ    10
  15. ff    equ    12
  16. cr    equ    13
  17. eof    equ    26        
  18. esc    equ    27
  19. eom    equ    '$'
  20. space    equ    ' '
  21. block    equ    254
  22.  
  23. ; This is needed if linking to a library
  24.  
  25. HEADER MACRO
  26. sseg    segment byte stack 'prog'
  27. sseg    ends
  28. cseg    segment byte public 'prog'
  29.     org    100h
  30.     main:
  31.     #em
  32.  
  33. PROMPT MACRO
  34.     push    ax,dx
  35.     mov    dx,offset #1
  36.     mov    ah,9
  37.     int    21h
  38.     pop    dx,ax
  39.     #em
  40.  
  41. WRITE MACRO
  42.     push    si,ax,dx
  43.     mov    si,OFFSET #1
  44. l101:    lodsb
  45.     or    al,al
  46.     jz    >l102
  47.     mov    dl,al
  48.     mov    ah,2
  49.     int    21h    
  50.     jmp    l101
  51. l102:    pop    dx,ax,si
  52.     #em
  53.  
  54. CLEAR MACRO
  55.     mov    #1,0
  56.     #em
  57.  
  58. SAY MACRO
  59.     call    print
  60.     db    #1,#2,#3,#4,0
  61.     #em
  62.  
  63. SAY@ MACRO
  64.     call    print
  65.     db    #1,#2,#3,#4,cr,lf,0
  66.     #em
  67.  
  68. GOODEXIT MACRO
  69.     mov    ax,4C00h
  70.     int    21h
  71.     #em
  72.  
  73. BADEXIT    MACRO
  74.     mov    ax,4C01h
  75.     int    21h
  76.     #em
  77.  
  78. PUSHALL MACRO
  79.     push    ax,bx,cx,dx,si,di,ds,es
  80.     #em
  81.  
  82. POPALL MACRO
  83.     pop    es,ds,di,si,dx,cx,bx,ax
  84.     #em
  85.  
  86. JMP_FAR MACRO
  87.     db    0EAh
  88.     #em
  89.  
  90. @PBX4HC MACRO
  91.         @sixteen dw 16
  92. PBX4HC:        push    ax,cx,dx
  93.         mov    ax,bx
  94.         mov    cx,4
  95. L101:        xor    dx,dx        ; clear remainder
  96.         div    @sixteen    ; div AX by 16
  97.         push    dx        ; save remainder
  98.         loop    l101
  99.  
  100.         mov    cx,4
  101. L102:        pop    ax        ; loop and print em
  102.         add    al,'0'
  103.         cmp    al,'9'
  104.         jbe    >l103
  105.         add    al,7
  106. L103:        mov    ah,2
  107.         mov    dl,al
  108.         int    21h
  109.         loop    l102
  110.         pop    dx,cx,ax
  111.         ret
  112.         #EM
  113.  
  114. @PBX5DC MACRO
  115.         @ten    dw 10
  116. PBX5DC:        push    ax,cx,dx
  117.         mov    ax,bx
  118.         xor    cx,cx
  119. L101:        inc    cx        ; count the loops
  120.         xor    dx,dx        ; clear remainder
  121.         div    @ten        ; div AX by 10
  122.         push    dx        ; save remainder
  123.         or    ax,ax        ; any quotient?
  124.         jnz    l101        ; yes
  125.  
  126. L102:        pop    ax        ; loop and print em
  127.         add    al,'0'        ; make it ascii
  128.         mov    ah,2
  129.         mov    dl,al
  130.         int    21h
  131.         loop    l102
  132.         pop    dx,cx,ax
  133.         ret
  134.         #EM
  135.  
  136. @PRINT MACRO
  137. AXREG        dw    0
  138. BXREG        dw    0
  139. DXREG        dw    0
  140.  
  141. PRINT:        mov    axreg,ax
  142.         mov    bxreg,bx
  143.         mov    dxreg,dx
  144.         mov    bp,sp        ; stack ptr is first char
  145.         xchg    bx,[bp]
  146.         mov    ah,2
  147.  
  148. L101:        mov    al,[bx]        ; get char
  149.         inc    bx        ; point to next char
  150.         test    al        ; done if 0
  151.         jz    >l102
  152.         mov    dl,al
  153.         int    21h
  154.         jmp    l101
  155.  
  156. L102:        mov    bp,sp
  157.         xchg    bx,[bp]
  158.         mov    ax,axreg
  159.         mov    bx,bxreg
  160.         mov    dx,dxreg
  161.         ret
  162.         #EM
  163.  
  164. @CAPS MACRO
  165. CAPS:        cmp    al,'a'
  166.         jb    >l101
  167.         cmp    al,'z'
  168.         ja    >l101
  169.         and    al,5Fh
  170. L101:        ret
  171.         #EM
  172.  
  173. @MESSAGE MACRO
  174. MESSAGE:    mov    ah,9
  175.         int    21h
  176.         ret
  177.         #EM
  178.  
  179. @CRLF MACRO
  180. CRLF:        push    ax,dx
  181.         mov    ah,2
  182.         mov    dl,13
  183.         int    21h
  184.         mov    dl,10
  185.         int    21h
  186.         pop    dx,ax
  187.         ret
  188.         #EM
  189. .LIST
  190.