home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 10 / 10.iso / l / l440 / 2.ddi / CHAP7 / DOSIO.ASM < prev    next >
Encoding:
Assembly Source File  |  1990-05-28  |  1.1 KB  |  82 lines

  1.     include    dos.inc
  2.  
  3. LineLen    =    132
  4.  
  5.     .model    small
  6.     .code
  7.     .data
  8.  
  9.     public    LineBuf
  10.  
  11. DosLineBuf    db    LineLen,0
  12. LineBuf        db    LineLen dup(0)
  13.  
  14. DGroup    group    _TEXT,_DATA
  15.  
  16.     .code
  17.  
  18.     public    InBuf, OutCh, InCh, CrLf
  19.  
  20. InCh:
  21.     DOS    InCharNoEcho
  22.     ret
  23.  
  24. ;Get input line
  25.  
  26. InBuf:
  27.     mov    dx,offset DGroup:DosLineBuf    ;Input buffer
  28.     DOS    InputLine        ;Get input line from console
  29.  
  30. ;Convert unquoted input to upper case
  31.     mov    si,offset DGroup:LineBuf
  32.     mov    di,si
  33. CaseChk:
  34.     lodsb
  35.     cmp    al,"a"
  36.     jb    NoConv
  37.     cmp    al,"z"
  38.     ja    NoConv
  39.     sub    al,"a"-"A"        ;Convert to upper case
  40. NoConv:
  41.     stosb                ;Put it back where we got it
  42.     cmp    al,13            ;End of line?
  43.     jz    InDone
  44.     cmp    al,'"'
  45.     jz    QuotScan
  46.     cmp    al,"'"
  47.     jnz    CaseChk
  48. QuotScan:
  49.     mov    ah,al            ;Remember which quote mark
  50. KillStr:
  51.     lodsb
  52.     stosb
  53.     cmp    al,13
  54.     jz    InDone
  55.     cmp    al,ah
  56.     jnz    KillStr
  57.     jmp    CaseChk
  58.  
  59. InDone:
  60.     mov    si,offset DGroup:LineBuf    ;Set up SI for command processing
  61.  
  62. ;Output CR/LF sequence
  63.  
  64. CrLf:
  65.     mov    al,13
  66.     call    OutCh
  67.     mov    al,10
  68.  
  69. ;Console output of character in AL
  70.  
  71. OutCh:
  72.     push    ax        ;Character to output on stack
  73.     push    dx
  74.     and    al,7FH
  75.     mov    dl,al
  76.     DOS    OutChar
  77.     pop    dx
  78.     pop    ax
  79.     ret
  80.  
  81. end
  82.