home *** CD-ROM | disk | FTP | other *** search
/ Power Programming / powerprogramming1994.iso / progtool / editor / j414src.arc / GETCH.ASM < prev    next >
Assembly Source File  |  1987-10-07  |  2KB  |  188 lines

  1. ;    Static Name Aliases
  2. ;
  3.     TITLE   getch
  4.  
  5. GETCH_TEXT    SEGMENT  BYTE PUBLIC 'CODE'
  6. GETCH_TEXT    ENDS
  7. _DATA    SEGMENT  WORD PUBLIC 'DATA'
  8. _DATA    ENDS
  9. CONST    SEGMENT  WORD PUBLIC 'CONST'
  10. CONST    ENDS
  11. _BSS    SEGMENT  WORD PUBLIC 'BSS'
  12. _BSS    ENDS
  13.  
  14. DGROUP    GROUP    CONST,    _BSS,    _DATA
  15.     ASSUME  CS: GETCH_TEXT, DS: DGROUP, SS: DGROUP, ES: DGROUP
  16.  
  17. EXTRN    _UpdModLine:WORD
  18.  
  19.  
  20. IFDEF    MSDOS ;    ------------------ generic MSDOS
  21.  
  22. _DATA      SEGMENT
  23. minutes    DB    0
  24. last    DB  0
  25. _DATA      ENDS
  26.  
  27. GETCH_TEXT      SEGMENT
  28.  
  29.     PUBLIC    _getrawinchar
  30.  
  31. _getrawinchar    PROC FAR
  32.     push    bp
  33.     mov    bp,sp
  34.  
  35.     cmp last, 0
  36.     je gnext
  37.     mov al, last
  38.     mov last, 0
  39.     jmp ghome
  40.  
  41. gnext:
  42.     mov dl, 0ffh
  43.     mov ah, 06h
  44.     int 21h
  45.     jnz git
  46.     call waitfun
  47.     jmp gnext
  48. git:
  49.     cmp al, 0
  50.     jne ghome
  51.     mov al, 0ffh
  52. gread:
  53. ghome:
  54.     mov ah, 0
  55.     mov    sp,bp
  56.     pop    bp
  57.     ret    
  58. _getrawinchar    ENDP
  59.  
  60.     PUBLIC    _rawkey_ready
  61.  
  62. _rawkey_ready    PROC FAR
  63.     push    bp
  64.     mov    bp,sp
  65.  
  66.     cmp last, 0
  67.     jne ky
  68.     mov dl, 0ffh
  69.     mov ah, 06h
  70.     int 21h
  71.     jz kn
  72.     cmp al, 0
  73.     jne ks
  74.     mov al, 0ffh
  75. ks:    mov last, al
  76.  
  77. ky:    mov ax, 1
  78.     mov    sp,bp
  79.     pop    bp
  80.     ret
  81.  
  82. kn: mov ax, 0
  83.     mov    sp,bp
  84.     pop    bp
  85.     ret
  86. _rawkey_ready    ENDP
  87.  
  88. waitfun    PROC near
  89.     ; use bios call again for pc version
  90.     mov ah, 2ch
  91.     int 21h
  92.     cmp cl, minutes
  93.     je skip
  94.     mov minutes, cl
  95.     mov _UpdModLine, 1
  96. skip:
  97.     ret
  98. waitfun    ENDP
  99.  
  100. GETCH_TEXT    ENDS
  101.  
  102. ELSE    ;--------------------------     IBMPC code
  103.  
  104. EXTRN    _UpdModLine:WORD
  105.  
  106. _DATA      SEGMENT
  107. minutes    DW    0
  108. last    DB      0
  109. _DATA      ENDS
  110.  
  111. GETCH_TEXT      SEGMENT
  112.  
  113.     PUBLIC    _getrawinchar
  114.  
  115. _getrawinchar    PROC FAR
  116.     push    bp
  117.     mov    bp,sp
  118.  
  119.     cmp last, 0
  120.     je gnext
  121.     mov al, last
  122.     mov last, 0
  123.     jmp ghome
  124. gnext:
  125.     mov ah, 1
  126.     int 16h
  127.     jnz git
  128.     call waitfun
  129.     jmp gnext
  130. git:
  131. gread:
  132.     mov ah, 0
  133.     int 16h
  134.     cmp al, 0
  135.     jnz ghome
  136.     mov last, ah
  137.     mov al, 0ffh
  138. ghome:
  139.     mov ah, 0
  140.     mov    sp,bp
  141.     pop    bp
  142.     ret    
  143. _getrawinchar    ENDP
  144.  
  145.     PUBLIC    _rawkey_ready
  146.  
  147. _rawkey_ready    PROC FAR
  148.     push    bp
  149.     mov    bp,sp
  150.  
  151.     cmp last, 0
  152.     jne kt
  153.     mov ah, 1
  154.     int 16h
  155.     jz kf
  156. kt:    mov ax, 1
  157.     mov    sp,bp
  158.     pop    bp
  159.     ret
  160. kf: mov ax, 0
  161.     mov    sp,bp
  162.     pop    bp
  163.     ret
  164. _rawkey_ready    ENDP
  165.  
  166. waitfun    PROC near
  167.     mov ah, 0
  168.     int 1ah
  169.     mov cx, dx
  170.     cmp dx, minutes
  171.     jb update
  172.     sub dx, 444h
  173. ;    jb update
  174.     cmp dx, minutes
  175.     ja update
  176.     ret
  177. update:
  178.     mov minutes, cx
  179.     mov _UpdModLine, 1
  180.     ret
  181. waitfun    ENDP
  182.  
  183. GETCH_TEXT    ENDS
  184.  
  185. ENDIF
  186.  
  187. END
  188.