home *** CD-ROM | disk | FTP | other *** search
/ Oakland CPM Archive / oakcpm.iso / sigm / vol247 / z19-mods.lbr / INSERT.A86 < prev    next >
Text File  |  1986-02-27  |  2KB  |  56 lines

  1.  
  2. ;************************************************
  3. ;                        *
  4. ;        Console input Routine            *
  5. ;                        *
  6. ;************************************************
  7.  
  8. conin_0:
  9. ;------
  10. ;    ENTRY:    bx = addr of the Q control block
  11. ;    EXIT:    ah = 0 if characters are being returned.
  12. ;        ah = 0FFH if this is a screen switch code being returned
  13.  
  14.  
  15.     push     bx        ; save the Q control addr
  16.     call     serial_in    ; get the character
  17.     cmp     al,80H        ;is it an 8bit char?
  18.     ja     do8_0        ;if yes, go to 8bit routine
  19.     pop     bx        ; restore the Q control addr
  20.         mov     ah, 0        ; set ah as a character code
  21.     and    al,07fh        ;strip 8th bit if any
  22.     ret
  23.  
  24. ;**********************************************************
  25. ;    8bit conversion routine
  26. ;
  27. do8_0:    and     al,07fh        ;strip the 8th bit
  28.     pop    bx        ;get Q ctl addr
  29.     cmp    al,'S'        ;is it an ' (S)
  30.     jb    do8_1        ;jmp if less than S
  31.     cmp    al,'S'+vcoff-1    ;is it over allowed # of vir cons
  32.     ja    do8_1        ;jmp if over
  33.  
  34. ;    otherwise we DO have a screen switch character
  35.     sub    al,'S'        ;normalize screen # to 0
  36.     mov    ah,0ffh        ;set screen switch return code
  37.     ret
  38.  
  39. ;***********************************************************
  40. ;    convert any other stripped 8bit char with CONTAB
  41. do8_1:
  42.     sbb    al,'#'        ;set table offset cnt to 0
  43.     jb    do8_2        ;too low, can't use
  44.     push    bx        ;save Q ctl addr
  45.     mov    bx,offset contab  ;beg addr of CONTAB
  46.     mov    ah,0        ;set normal return char code
  47.     add    bx,ax        ;determine offset
  48.     mov    al,[bx]        ;converted char from table
  49.     pop    bx        ;get Q ctl addr back
  50.     ret
  51.  
  52. do8_2:
  53.     mov    ax,00        ;force a null
  54.     ret
  55.  
  56.