From Whatis.inc:

DECLARE FUNCTION KeyboardLine$()

From Whatis1.bas:

' uses direct keyboard input to get an input line
FUNCTION KeyboardLine$
 Var$ = ""
 DO
    IF KeyIS THEN ' check keyboard
       ' check control-break key
       IF BreakIS THEN
          EXIT DO
       END IF
       Var2$ = KeyboardChar$ ' get character
       SELECT CASE Var2$
       CASE CHR$(0) ' extended character
          ' nul
       CASE CHR$(13) ' return
          EXIT DO
       CASE CHR$(8) ' backspace
          IF LEN(Var$) > 0 THEN
             Var$ = LEFT$(Var$, LEN(Var$) - 1)
             IF POS(0) > 1 THEN ' check cursor location
                LOCATE CSRLIN, POS(0) - 1, 0
                PRINT " ";
                LOCATE CSRLIN, POS(0) - 1, 1
             ELSE ' line-wrap
                LOCATE CSRLIN - 1, 80, 0
                PRINT " ";
                LOCATE CSRLIN - 1, 80, 1
             END IF
          END IF
       CASE ELSE ' store input
          PRINT Var2$;
          LOCATE , , 1
          Var$ = Var$ + Var2$
       END SELECT
    END IF
 LOOP

 ' return input line
 KeyboardLine$ = Var$
END FUNCTION

From Whatis.bas Case "filesize"

          ' restore directory search dta
          InregsX.AX = &H1A00
          InregsX.DS = VARSEG(DTAfile)
          InregsX.DX = VARPTR(DTAfile)
          CALL InterruptX(&H21, InregsX, OutregsX)
          ' find first filename
          InregsX.AX = &H4E00
          InregsX.CX = &H27
          InregsX.DS = VARSEG(ASCIIZ)
          InregsX.DX = VARPTR(ASCIIZ)
          CALL InterruptX(&H21, InregsX, OutregsX)
          ' check findfirst error
          IF (OutregsX.Flags AND &H1) = &H0 THEN
             ' store file size
             Temp# = Dfalse
             Temp# = Temp# + ASC(MID$(DTAfile.FileSize, 4, 1))
             Temp# = Temp# * &H100 + ASC(MID$(DTAfile.FileSize, 3, 1))
             Temp# = Temp# * &H100 + ASC(MID$(DTAfile.FileSize, 2, 1))
             Temp# = Temp# * &H100 + ASC(MID$(DTAfile.FileSize, 1, 1))
          END IF
          ' restore basic dta
          InregsX.AX = &H1A00
          InregsX.DS = BASIC.DTA.SEG
          InregsX.DX = BASIC.DTA.OFF
          CALL InterruptX(&H21, InregsX, OutregsX)

From Whatis.bas: Error.Routine;

'    PRINT "Critical error: '" + MakeQBerr$(Error.Mode) + "' in Whatis."

From Whatis1.bas Function BreakIS;

 ' check break flag
 IF Redirected.Input THEN
    DEF SEG = &H40
    X = PEEK(&H71)
    DEF SEG
    IF X = 64 THEN
       Var = True
    END IF
 END IF
 ' check keystroke
 IF KeyIS THEN
    ' control-break returns 0, 0
    IF OutregsX.AX = 0 THEN
       Var = True
       ' set break flag
       DEF SEG = &H40
       POKE &H71, 64
       DEF SEG
    END IF
 END IF
 ' return break flag
 BreakIS = Var

-end-
