home *** CD-ROM | disk | FTP | other *** search
/ Microsoft Programmer's Library 1.3 / Microsoft-Programers-Library-v1.3.iso / sampcode / dos_ency / 6 / engine.asm < prev    next >
Encoding:
Assembly Source File  |  1988-08-11  |  2.2 KB  |  83 lines

  1.         TITLE   engine
  2.  
  3. CODE    SEGMENT PUBLIC 'CODE'
  4.  
  5.         ASSUME  CS:CODE,DS:CODE,ES:CODE,SS:CODE
  6.  
  7.         ORG     0100h
  8.  
  9. START:  mov     dx,offset devnm ; open named device (ASY1)
  10.         mov     ax,3d02h
  11.         int     21h
  12.         mov     handle,ax       ; save the handle
  13.         jc      quit
  14. alltim: call    getmdm          ; main engine loop
  15.         call    putcrt
  16.         call    getkbd
  17.         call    putmdm
  18.         jmp     alltim
  19. quit:   mov     ah,4ch          ; come here to quit
  20.         int     21h
  21.  
  22. getmdm  proc                    ; get input from modem
  23.         mov     cx,256
  24.         mov     bx,handle
  25.         mov     dx,offset mbufr
  26.         mov     ax,3F00h
  27.         int     21h
  28.         jc      quit
  29.         mov     mdlen,ax
  30.         ret
  31. getmdm  endp
  32.  
  33. getkbd  proc                    ; get input from keyboard
  34.         mov     kblen,0         ; first zero the count
  35.         mov     ah,11           ; key pressed?
  36.         int     21h
  37.         inc     al
  38.         jnz     nogk            ; no
  39.         mov     ah,7            ; yes, get it
  40.         int     21h
  41.         cmp     al,3            ; was it Ctrl-C?
  42.         je      quit            ; yes, get out
  43.         mov     kbufr,al        ; no, save it
  44.         inc     kblen
  45.         cmp     al,13           ; was it Enter?
  46.         jne     nogk            ; no
  47.         mov     byte ptr kbufr+1,10 ; yes, add LF
  48.         inc     kblen
  49. nogk:   ret
  50. getkbd  endp
  51.  
  52. putmdm  proc                    ; put output to modem
  53.         mov     cx,kblen
  54.         jcxz    nopm
  55.         mov     bx,handle
  56.         mov     dx,offset kbufr
  57.         mov     ax,4000h
  58.         int     21h
  59.         jc      quit
  60. nopm:   ret
  61. putmdm  endp
  62.  
  63. putcrt  proc                    ; put output to CRT
  64.         mov     cx,mdlen
  65.         jcxz    nopc
  66.         mov     bx,1
  67.         mov     dx,offset mbufr
  68.         mov     ah,40h
  69.         int     21h
  70.         jc      quit
  71. nopc:   ret
  72. putcrt  endp
  73.  
  74. devnm   db      'ASY1',0        ; miscellaneous data and buffers
  75. handle  dw      0
  76. kblen   dw      0
  77. mdlen   dw      0
  78. mbufr   db      256 dup (0)
  79. kbufr   db      80 dup (0)
  80.  
  81. CODE    ENDS
  82.         END     START
  83.