'===========================================================================
' Subject: NO BRAIN (LIKE HUGO) GAME          Date: Year of 1995           
'  Author: The ABC Programmer                 Code: QB, QBasic, PDS        
'  Origin: NO,BRAIN,LIKE,HUGO,GAME          Packet: DEMOS.ABC
'===========================================================================
'===================================================
'  NOBRAIN.BAS  By William Yu (1994)   EGA Required
'  Game is incomplete, please finish.
'  Like HUGO, but without the moving dweeb.
'
'  The person you are directing has been brainwashed
'  You must find food and money in order to survive
'  So you must break into the store, then find the
'  whereabouts of Mr. BumbScum who brainwashed him.
'
'  HINTS:
'     View SUB Hints if you are stuck and have no
'     idea as to what to do next.
'===================================================

DEFINT A-Z
DECLARE SUB ScrollUp ()
DECLARE SUB ScrollDown ()
DECLARE SUB LONE ()
DECLARE SUB LTWO ()
DECLARE SUB MBOX (Nlines%)
DECLARE SUB PAUSE (SECS!)
DECLARE SUB parseit ()
DECLARE SUB EmptyChar ()

CONST True = 1
CONST False = 0

DO
    ve = ve + 1
    READ in$
LOOP UNTIL in$ = "end"
DO
    no = no + 1
    READ in$
LOOP UNTIL in$ = "end"
DO
    pl = pl + 1
    READ in$
LOOP UNTIL in$ = "end"

RESTORE
DIM SHARED Verb$(ve), noun$(no), place$(pl), UserInput$, v$, n$, p$, v, n, p

FOR count = 1 TO ve
    READ Verb$(count)
NEXT
FOR count = 1 TO no
    READ noun$(count)
NEXT
FOR count = 1 TO pl
    READ place$(count)
NEXT


' Declare Variables
' ---------------------------------------
' ve = Verbs
' ne = Nouns
' Count, etc. = Counters
' UserInput$ = Command to Parse
' True = 1  False = 0
' CMD = Command Executed
' Location = Current Location on MAP
' Apples = Apples Available
' WindowBroken = If Window has been Broken
' Apples.Inv = Apples in Inventory
' ---------------------------------------

CLS
SCREEN 7, 0, 0, 0
LOCATION = 1
APPLES = -1
APPLES.INV = 0
WindowBroken = False
CALL LONE
PCOPY 0, 1
MBOX (7)
COLOR 15, 0
LOCATE 6, 5: PRINT "You are  standing just  outside a"
LOCATE 7, 5: PRINT "store.  It is night, no one seems"
LOCATE 8, 5: PRINT "to be around.  You must find some"
LOCATE 9, 5: PRINT "way  to  break  into  the  store."
LOCATE 10, 5: PRINT "A large fence  blocks  my passage"
LOCATE 11, 5: PRINT "to the south."
LOCATE 12, 5: PRINT "Exits: East, West"
A$ = INPUT$(1)
PCOPY 1, 0

TypeCommand:
LINE (-1, 194)-(320, 180), 9, B
A = 3: I = 1: CMD = 0
LOCATE 24, 1: PRINT SPACE$(40);
LOCATE 24, 1: COLOR 15: PRINT "> "; : COLOR 10: PRINT CHR$(95);
REDIM WORD$(40)
DO
  IF A = 39 THEN LOCATE 24, A: PRINT CHR$(95); : A = A - 1: I = I - 1
  DO
    A$ = INKEY$
  LOOP UNTIL LEN(A$) > 0
  IF A$ = CHR$(8) AND A = 3 THEN A = A - 1: I = I - 1: GOTO CNT
  IF A$ = CHR$(13) THEN EXIT DO
  IF A$ = CHR$(27) THEN EXIT DO
  IF A$ = CHR$(8) AND A = 38 THEN LOCATE 24, A: PRINT "  ";
  IF A$ = CHR$(8) AND A > 3 THEN A = A - 1: I = I - 1: A$ = " ": LOCATE 24, A: PRINT CHR$(95); "  "; : A = A - 1: I = I - 1: GOTO CNT
  IF ASC(A$) > 30 AND A >= 3 THEN
    LOCATE 24, A: COLOR 10: PRINT A$; CHR$(95); " ";
    WORD$(I) = WORD$(I - 1) + A$
  ELSE
    A = A - 1: I = I - 1
  END IF
CNT:
  A = A + 1
  I = I + 1
LOOP
I = I - 1
v$ = "": n$ = "": p$ = "": v = 0: n = 0: p = 0
UserInput$ = LTRIM$(RTRIM$(WORD$(I)))
BackUp$ = UserInput$
IF UserInput$ = "" THEN PCOPY 0, 1: CALL MBOX(2): COLOR 15: LOCATE 6, 5: PRINT "      Don't just sit there!": LOCATE 7, 5: PRINT "        Type Something!!!": A$ = INPUT$(1): PCOPY 1, 0: GOTO TypeCommand
parseit
IF v = 11 THEN END
GOSUB Commands
'PRINT "Verb:"; v$, "Noun:"; n$
'PRINT "Verb#"; v, "Noun#"; n
'PRINT "Place"; p, "Place"; p$
GOTO TypeCommand

Commands:
 
  SELECT CASE v

    CASE 1 TO 5, 21      ' Hit, Kick, Punch, Shake, Break, Bust
      IF n = 1 AND LOCATION = 1 THEN         ' Shake the Tree
        IF APPLES = -1 THEN                  ' Shake the Apples
          LINE (260, 35)-(300, 67), 2, BF
          LOCATE 24, 3: PRINT SPACE$(37);
          PCOPY 0, 2
          LOCATE 24, 3: PRINT BackUp$;
          CIRCLE (266, 160), 4, 12: PAINT (266, 160), 12: LINE (266, 157)-(266, 156), 0
          CIRCLE (277, 143), 4, 12: PAINT (277, 143), 12: LINE (277, 140)-(277, 139), 0
          CIRCLE (293, 162), 4, 12: PAINT (293, 162), 12: LINE (293, 159)-(293, 158), 0
          PCOPY 0, 1
          MBOX (2)
          COLOR 15
          LOCATE 6, 5: PRINT "The tree shakes violently and"
          LOCATE 7, 5: PRINT "down comes three red apples."
          APPLES = True
          A$ = INPUT$(1)
          PCOPY 1, 0
          CMD = True
        ELSE                  ' No Apples on tree
          PCOPY 0, 1
          MBOX (2)
          COLOR 15
          LOCATE 6, 5: PRINT "The tree shakes some more but"
          LOCATE 7, 5: PRINT "nothing unusual happens."
          A$ = INPUT$(1)
          PCOPY 1, 0
          CMD = True
        END IF
      END IF
        IF n = 3 AND LOCATION = 1 THEN
          PCOPY 0, 1
          MBOX (2)
          COLOR 15
          LOCATE 6, 5: PRINT "You attempt to break the window"
          LOCATE 7, 5: PRINT "but you don't have enough force."
          A$ = INPUT$(1)
          PCOPY 1, 0
          CMD = True
        END IF
        IF n = 4 AND LOCATION = 1 THEN
          PCOPY 0, 1
          MBOX (2)
          COLOR 15
          LOCATE 6, 6: PRINT "The door is made of steel!"
          LOCATE 7, 6: PRINT "You can't bust that down."
          A$ = INPUT$(1)
          PCOPY 1, 0
          CMD = True
        END IF
        IF LEN(RTRIM$(BackUp$)) <= 5 AND CMD <> True THEN
          PCOPY 0, 1
          MBOX (1)
          COLOR 15: LOCATE 6, 16: PRINT UCASE$(v$); " what?"
          A$ = INPUT$(1)
          PCOPY 1, 0
          CMD = True
        END IF
        IF CMD <> True THEN
          PCOPY 0, 1
          MBOX (1)
          COLOR 15: LOCATE 6, 10: PRINT "Stop being so voilent!"
          A$ = INPUT$(1)
          PCOPY 1, 0
          CMD = True
        END IF

    CASE 10
      IF n = 6 AND LOCATION = 1 OR n = 7 AND LOCATION = 1 OR n = 8 AND LOCATION = 1 THEN
        IF WindowBroken = True THEN
          PCOPY 3, 1
          CALL ScrollUp
          CALL LTWO
          CALL ScrollDown
          PCOPY 0, 1
          MBOX (3)
          COLOR 15
          LOCATE 6, 5: PRINT "You enter  the store finding it"
          LOCATE 7, 5: PRINT "pitch dark.  You can hardly see"
          LOCATE 8, 5: PRINT "a single thing."
          A$ = INPUT$(1)
          PCOPY 1, 0
          CMD = True
          LOCATION = 2
        ELSE
          PCOPY 0, 1
          MBOX (1)
          COLOR 15: LOCATE 6, 8: PRINT "There's no visible way in."
          A$ = INPUT$(1)
          PCOPY 1, 0
          CMD = True
        END IF
      END IF

    CASE 12 TO 15     ' Get, Pick, Take, Grab
      IF n = 2 AND APPLES = False OR n = 9 AND APPLES = False THEN ' Get Apples When you already have them
        PCOPY 0, 1
        MBOX (1)
        COLOR 15: LOCATE 6, 9: PRINT "They're in your backpack!"
        A$ = INPUT$(1)
        PCOPY 1, 0
        CMD = True
      END IF

      IF LOCATION = 1 THEN
      IF n = 2 AND APPLES = True OR n = 9 AND APPLES = True THEN ' Get Apples (on Ground)
        PCOPY 2, 0
        LOCATE 24, 3: PRINT BackUp$;
        PCOPY 0, 1
        MBOX (2)
        COLOR 15
        LOCATE 6, 5: PRINT "You pick up the apples and stuff"
        LOCATE 7, 5: PRINT "them into your backpack."
        A$ = INPUT$(1)
        PCOPY 1, 0
        APPLES = False
        APPLES.INV = 3
        CMD = True
      END IF
      END IF

      IF LOCATION = 1 THEN
      IF n = 2 AND APPLES = -1 OR n = 9 AND APPLES = -1 THEN ' Get Apples (On Tree)
        PCOPY 0, 1
        MBOX (1)
        COLOR 15: LOCATE 6, 8: PRINT "They're out of your reach."
        A$ = INPUT$(1)
        PCOPY 1, 0
        CMD = True
      END IF
      END IF
      IF LEN(RTRIM$(BackUp$)) <= 4 AND CMD <> True THEN         ' Noun not found
        PCOPY 0, 1
        MBOX (1)
        COLOR 15: LOCATE 6, 17: PRINT UCASE$(v$); " what?"
        A$ = INPUT$(1)
        PCOPY 1, 0
        CMD = True
      END IF
      IF n > 0 AND CMD <> True THEN ' Noun found but not in data
        PCOPY 0, 1
        MBOX (1)
        COLOR 15: LOCATE 6, 9: PRINT "You can't get the "; n$; "!"
        A$ = INPUT$(1)
        PCOPY 1, 0
        CMD = True
      END IF
      IF CMD <> True THEN ' Noun found but not in data
        PCOPY 0, 1
        MBOX (1)
        COLOR 15: LOCATE 6, 5: PRINT "You can't get that in this game."
        A$ = INPUT$(1)
        PCOPY 1, 0
        CMD = True
      END IF

    CASE 16, 23        ' Look, See
      IF n = 1 AND LOCATION = 1 THEN
        PCOPY 0, 1
        IF APPLES = -1 THEN MBOX (5) ELSE MBOX (3)
        COLOR 15
        LOCATE 6, 5: PRINT "The tree seems to be quite old."
        LOCATE 7, 5: PRINT "It doesn't look as if it has a"
        LOCATE 8, 5: PRINT "sturdy foundation either."
        IF APPLES = -1 THEN
          LOCATE 9, 5: PRINT "You notice three red apples"
          LOCATE 10, 5: PRINT "hanging from it."
        END IF
        A$ = INPUT$(1)
        PCOPY 1, 0
        CMD = True
      END IF
      IF n > 0 AND CMD <> True AND LOCATION = 1 THEN
        PCOPY 0, 1
        MBOX (2)
        COLOR 15
        LOCATE 6, 5: PRINT "The "; n$; " looks remarkably"
        LOCATE 7, 5: PRINT "similar to a "; n$
        A$ = INPUT$(1)
        PCOPY 1, 0
        CMD = True
      END IF
      IF CMD <> True AND LOCATION = 2 THEN
        PCOPY 0, 1
        MBOX (2)
        COLOR 15
        LOCATE 6, 5: PRINT "It's too dark to see very much."
        LOCATE 7, 5: PRINT "Exits: Outside"
        A$ = INPUT$(1)
        PCOPY 1, 0
        CMD = True
      END IF
      IF CMD <> True AND LOCATION = 1 THEN      ' Survey Area
        PCOPY 0, 1
        L = 5
        IF APPLES = True THEN L = L + 1
        IF WindowBroken = True THEN L = L + 1
        MBOX (L)
        COLOR 15, 0
        LOCATE 6, 5: PRINT "You are  standing just  outside a"
        LOCATE 7, 5: PRINT "store.  It is night, no one seems"
        LOCATE 8, 5: PRINT "to  be  around.   A  large  fence"
        LOCATE 9, 5: PRINT "blocks my  passage to  the south."
        IF APPLES = True THEN LOCATE 10, 5: PRINT "Three apples are on the ground.": K = K + 1
        IF WindowBroken = True THEN LOCATE 10, 5: PRINT "A window has been broken."
        IF L = 6 THEN LOCATE 11, 5 ELSE LOCATE 10, 5
        PRINT "Exits: East, West";
        IF WindowBroken = True THEN PRINT ", Inside"
        A$ = INPUT$(1)
        PCOPY 1, 0
        CMD = True
      END IF

    CASE 17, 18        ' Throw, Chuck
      IF n = 2 AND p = 1 OR n = 9 AND p = 1 THEN
        IF APPLES.INV = 0 THEN      ' Not carrying any apples
          PCOPY 0, 1
          MBOX (2)
          COLOR 15
          LOCATE 6, 5: PRINT "You don't have any apples to"
          LOCATE 7, 5: PRINT "throw with."
          A$ = INPUT$(1)
          PCOPY 1, 0
          CMD = True
        ELSE                         ' Has Apples in BackPack
         IF WindowBroken = False THEN
          X = 20
          DO
            PCOPY 0, 1
            CIRCLE (160, 85), X, 12: PAINT (160, 85), 12
            PAUSE (.01)
            PCOPY 1, 0
            X = X - 2
          LOOP UNTIL X = 0
          LINE (186, 75)-(182, 75), 11: LINE (186, 75)-(186, 85), 11
          LINE (140, 85)-(133, 75), 0: LINE (133, 75)-(150, 84), 0
          LINE (150, 84)-(160, 76), 0: LINE (160, 76)-(168, 80), 0
          LINE (168, 80)-(175, 74), 0: LINE (175, 74)-(185, 79), 0
          LINE (185, 79)-(180, 95), 0: LINE (180, 95)-(188, 106), 0
          LINE (188, 106)-(181, 104), 0: LINE (181, 104)-(181, 101), 0
          LINE (181, 101)-(139, 101), 0: LINE (139, 101)-(139, 104), 0
          LINE (139, 104)-(134, 108), 0: LINE (134, 108)-(132, 100), 0
          LINE (132, 100)-(140, 85), 0: PAINT (160, 80), 0
          PCOPY 0, 1
          MBOX (1)
          COLOR 15: LOCATE 6, 18: PRINT "CRASH!!!"
          PAUSE (1)
          PCOPY 1, 0
          MBOX (6)
          COLOR 15
          LOCATE 6, 5: PRINT "You take a  step back,  and with"
          LOCATE 7, 5: PRINT "the arm of Nolan Ryan, you throw"
          LOCATE 8, 5: PRINT "the  apple at  the  window  with"
          LOCATE 9, 5: PRINT "great accuracy and force that it"
          LOCATE 10, 5: PRINT "completely  shatters the window."
          LOCATE 11, 5: PRINT "Not to mention the apple."
          EmptyChar
          A$ = INPUT$(1)
          PCOPY 1, 0
          CMD = True
          WindowBroken = True
         ELSE
          PCOPY 0, 1
          MBOX (2)
          COLOR 15
          LOCATE 6, 5: PRINT "The window is already broken."
          LOCATE 7, 5: PRINT "No sense in wasting another one."
          A$ = INPUT$(1)
          PCOPY 1, 0
          CMD = True
         END IF
        END IF
      END IF

    CASE 19        ' Open
      IF n = 3 AND LOCATION = 1 THEN
        PCOPY 0, 1
        MBOX (2)
        COLOR 15
        LOCATE 6, 5: PRINT "The window can't be opened from"
        LOCATE 7, 5: PRINT "the outside."
        A$ = INPUT$(1)
        PCOPY 1, 0
        CMD = True
      END IF
      IF n = 4 AND LOCATION = 1 THEN
        PCOPY 0, 1
        MBOX (4)
        COLOR 15
        LOCATE 6, 5: PRINT "If it  was only  that  easy you"
        LOCATE 7, 5: PRINT "could pass this game in no less"
        LOCATE 8, 5: PRINT "than  two  minutes!   Nice  try"
        LOCATE 9, 5: PRINT "anyways but the door is locked."
        A$ = INPUT$(1)
        PCOPY 1, 0
        CMD = True
      END IF

    CASE 20       ' Read
      IF n = 5 AND LOCATION = 1 THEN   ' Read Sign
        PCOPY 0, 1
        MBOX (2)
        COLOR 15
        LOCATE 6, 5: PRINT "What are you, blind?!"
        LOCATE 7, 5: PRINT "The sign clearly reads "; CHR$(34);
        COLOR 12: PRINT "CLOSED"; : COLOR 15: PRINT CHR$(34)
        A$ = INPUT$(1)
        PCOPY 1, 0
        CMD = True
      END IF
      IF n > 0 AND LOCATION = 1 AND CMD <> True THEN
        PCOPY 0, 1
        MBOX (1)
        COLOR 15
        LOCATE 6, 6: PRINT "How can you read a "; n$; "?!"
        A$ = INPUT$(1)
        PCOPY 1, 0
        CMD = True
      END IF
      IF LEN(RTRIM$(BackUp$)) = 4 AND CMD <> True THEN
        PCOPY 0, 1
        MBOX (1)
        COLOR 15
        LOCATE 6, 17: PRINT "READ what?"
        A$ = INPUT$(1)
        PCOPY 1, 0
        CMD = True
      END IF
      IF CMD <> True THEN
        PCOPY 0, 1
        MBOX (1)
        COLOR 15
        LOCATE 6, 7: PRINT "Can't read that in this game."
        A$ = INPUT$(1)
        PCOPY 1, 0
        CMD = True
      END IF

    CASE 22           ' Pull
      IF n = 10 AND LOCATION = 2 OR n = 11 AND LOCATION = 2 THEN
          PAINT (100, 10), 15, 0: PAINT (10, 100), 7, 0: PAINT (100, 150), 14, 0
          PAINT (170, 26), 10, 0
          CIRCLE (170, 30), 30, 10, .1, 3.05, 1 / 2
          CIRCLE (169, 30), 30, 0, .1, 3.05, 1 / 2
          CIRCLE (180, 29), 10, 15, .5, 1.5, 1
          CIRCLE (179, 29), 10, 15, .5, 1.4, 1
          LINE (47, 30)-(320, 145), 8, BF: LINE (166, 8)-(174, 15), 7, BF
          LINE (160, 33)-(155, 44), 14: LINE (150, 32)-(140, 47), 14
          LINE (170, 33)-(170, 40), 14
          LINE (180, 33)-(185, 44), 14: LINE (190, 32)-(200, 47), 14
          LINE (178, 29)-(178, 55), 15
          CIRCLE (178, 56), 1, 12: PAINT (178, 56), 12
        PCOPY 0, 1
        MBOX (1)
        LOCATE 6, 5: COLOR 15: PRINT " WOW!!! AWESOME, light at last!"
        A$ = INPUT$(1)
        PCOPY 1, 0
        LIGHT = True
        CMD = True
      END IF
  END SELECT

  IF CMD <> True THEN      ' Verb not found in DATA
    PCOPY 0, 1
    MBOX (3)
    COLOR 15
    LOCATE 6, 5: PRINT "I'm sorry but I don't know how to"
    LOCATE 7, 5: COLOR 11: PRINT LCASE$(LEFT$(BackUp$, 33))
    LOCATE 8, 5: COLOR 10: PRINT "For a list of commands type HELP"
    A$ = INPUT$(1)
    PCOPY 1, 0
  END IF
RETURN

'---------
'Verb data
'---------
DATA shake,hit,break,kick,punch,knock,read,climb,look,go
DATA quit,get,grab,pick,take,look,throw,chuck,open,read
DATA bust,pull,see
DATA end

'---------
'Noun data
'---------
DATA tree,apples,window,door,sign,store,in,inside,fruit,cord
DATA string
DATA end

'-------------
'Location data
'-------------
DATA window
DATA end

ENDGAME:
SCREEN 0, 0, 0, 0: WIDTH 80, 25: COLOR 7, 0: CLS
END

SUB EmptyChar

DO
LOOP UNTIL INKEY$ = ""

END SUB

SUB Hints

' HINTS (Type as shown):
' 
'     HIT TREE
'     GET APPLES
'     THROW APPLE AT WINDOW
'     GO IN
'     PULL CORD
'     QUIT

END SUB

DEFSNG A-Z
SUB LONE
DIM SIGN(120)
PALETTE 15, 0
LOCATE 1, 1: PRINT "CONVIENCE STORE"
GET (0, 0)-(118, 7), SIGN
LOCATE 1, 1: PRINT SPACE$(40)
PALETTE 15, 15
LINE (0, 177)-(319, 125), 10, BF
LINE (0, 0)-(319, 120), 1, BF
LINE (0, 120)-(319, 125), 2, BF
CIRCLE (300, 10), 16, 14
PAINT (300, 10), 14
DO
  RANDOMIZE TIMER
  A = INT(RND * 319) + 1
  B = INT((176 - 125 + 1) * RND + 125)
  LINE (A - 100, B)-(A + A, B + 1), 2, B
  LINE (A - 100, B - 120)-(A + A, B - 121), 9, B
  C = C + 1
LOOP UNTIL C = 60
LINE (20, 130)-(220, 60), 14, BF
LINE (10, 60)-(230, 59), 6, BF
LINE (11, 59)-(30, 35), 6
LINE (229, 59)-(210, 35), 6
LINE (210, 35)-(30, 35), 6
PAINT (100, 45), 6
PUT (57, 50), SIGN, OR
LINE (35, 130)-(72, 70), 0, B
LINE (73, 130)-(110, 70), 0, B
PAINT (40, 120), 12, 0: PAINT (100, 80), 12, 0
LINE (35, 131)-(15, 177), 8
LINE (110, 131)-(130, 177), 8
LINE (35, 131)-(110, 131), 8
LINE (130, 177)-(15, 177), 8
PAINT (80, 150), 7, 8
LINE (130, 177)-(15, 177), 7
LINE (69, 97)-(67, 103), 7, BF
LINE (76, 97)-(78, 103), 7, BF
LINE (130, 72)-(190, 110), 0, B
LINE (131, 73)-(189, 109), 11, BF
LINE (186, 75)-(182, 75), 15
LINE (186, 75)-(186, 85), 15
LINE (134, 107)-(134, 105), 15
LINE (134, 107)-(135, 107), 15
LINE (140, 109)-(180, 102), 12, BF
CIRCLE (145, 106), 3, 15, 1.7, 4.6
LINE (148, 104)-(148, 108), 15: LINE (148, 108)-(151, 108), 15
CIRCLE (156, 106), 2, 15
LINE (161, 104)-(164, 104), 15
LINE (160, 104)-(160, 106), 15: LINE (161, 106)-(164, 106), 15
LINE (163, 108)-(160, 108), 15: LINE (164, 108)-(164, 107), 15
LINE (167, 104)-(167, 108), 15: LINE (167, 104)-(170, 104), 15
LINE (167, 108)-(170, 108), 15: LINE (167, 106)-(169, 106), 15
LINE (173, 104)-(173, 108), 15: CIRCLE (174, 106), 3, 15, 4.7, 1.5

LINE (290, 133)-(270, 60), 6, BF
LINE (286, 66)-(285, 126), 8: LINE (281, 77)-(279, 110), 8
LINE (290, 133)-(310, 140), 6: LINE (270, 133)-(250, 140), 6
LINE (310, 140)-(280, 135), 6: LINE (280, 135)-(250, 140), 6
PAINT (277, 134), 6
CIRCLE (260, 56), 25, 2: PAINT (260, 50), 2
CIRCLE (280, 45), 33, 2: PAINT (290, 45), 2
CIRCLE (303, 53), 22, 2: PAINT (315, 53), 2

'Draw Apples
CIRCLE (266, 60), 4, 12: PAINT (266, 60), 12: LINE (266, 57)-(266, 56), 0
CIRCLE (277, 43), 4, 12: PAINT (277, 43), 12: LINE (277, 40)-(277, 39), 0
CIRCLE (293, 62), 4, 12: PAINT (293, 62), 12: LINE (293, 59)-(293, 58), 0


END SUB

SUB LTWO
LINE (0, 0)-(320, 178), 0, BF
LINE (47, 30)-(319, 145), 8, B
LINE (45, 30)-(45, 145), 8
LINE (45, 29)-(0, 0), 8
LINE (47, 28)-(320, 28), 8
LINE (47, 28)-(4, 0), 8
LINE (3, 0)-(320, 0), 8
LINE (319, 0)-(319, 28), 8
LINE (0, 0)-(0, 177), 8
LINE (0, 177)-(45, 146), 8
LINE (47, 147)-(320, 147), 8
LINE (47, 147)-(3, 177), 8
LINE (3, 177)-(320, 177), 8
LINE (319, 177)-(319, 147), 8
PAINT (100, 10), 7, 8: PAINT (10, 100), 8: PAINT (100, 150), 6, 8
LINE (165, 7)-(175, 15), 0, B
LINE (166, 8)-(174, 15), 8, BF
CIRCLE (170, 30), 30, 8, .1, 3.05, 1 / 2
CIRCLE (169, 30), 30, 8, .1, 3.05, 1 / 2
PAINT (170, 26), 2, 8
CIRCLE (170, 30), 30, 0, .1, 3.05, 1 / 2
CIRCLE (169, 30), 30, 0, .1, 3.05, 1 / 2
CIRCLE (180, 29), 10, 7, .5, 1.5, 1
CIRCLE (179, 29), 10, 7, .5, 1.4, 1
LINE (178, 28)-(178, 55), 7
CIRCLE (178, 56), 1, 4: PAINT (178, 56), 4

END SUB

SUB MBOX (Nlines%)
IF Nlines% > 3 THEN n = 10 * Nlines% - Nlines% ELSE n = 10 * Nlines%
IF Nlines% = 1 THEN n = 12
LINE (23, 37)-(300, 37 + n), 7, B
LINE (24, 38)-(299, 36 + n), 0, BF
LINE (26, 38 + n)-(301, 39 + n), 8, BF
LINE (301, 40)-(302, 39 + n), 8, BF
END SUB

DEFINT A-Z
SUB parseit
UserInput$ = LCASE$(UserInput$) + " "
'--------------
'Parse sentence
'-----------------------------
'The first 3 letters of a verb
'and the first 4 letters of a
'noun is all that is needed.
'-----------------------------
DO WHILE LEN(UserInput$)
  FOR ve = 1 TO LEN(UserInput$)
    Char$ = MID$(UserInput$, ve, 1)
    IF Char$ = " " OR Char$ = "!" OR Char$ = "." OR Char$ = "," + "" THEN
        VrbHold$ = LEFT$(UserInput$, ve - 1)
        UserInput$ = MID$(UserInput$, ve + 1)
        Count1 = 1
        Count2 = 1
        Count3 = 1

        DO  'get verb
        IF LEFT$(VrbHold$, 5) = LEFT$(Verb$(Count1), 5) THEN
            v$ = Verb$(Count1)
            v = Count1
            ve = 1
        END IF
        Count1 = Count1 + 1
        IF Verb$(Count1) = "end" THEN EXIT DO
        LOOP

        IF n = 0 THEN
        DO  'get noun
            IF LEFT$(VrbHold$, 4) = LEFT$(noun$(Count2), 4) THEN
                n$ = noun$(Count2)
                n = Count2
                ve = 1
                EXIT DO
            END IF
            Count2 = Count2 + 1
            IF noun$(Count2) = "end" THEN EXIT DO
        LOOP
        END IF

        IF n > 0 THEN
        DO  'get location
            IF LEFT$(VrbHold$, 4) = LEFT$(place$(Count3), 4) THEN
                p$ = place$(Count3)
                p = Count3
                EXIT SUB
            END IF
            Count3 = Count3 + 1
            IF place$(Count3) = "end" THEN EXIT DO
        LOOP
        END IF
    END IF
  NEXT
LOOP
END SUB

DEFSNG A-Z
SUB PAUSE (SECS!)
BEGIN! = TIMER
DO
LOOP UNTIL TIMER - BEGIN! > SECS!
END SUB

DEFINT A-Z
SUB ScrollDown
FOR I% = 8240 TO 0 STEP -80
M% = FIX(I% / 256): L% = I% - (M% * 256)
OUT &H3D4, 12: OUT &H3D5, M%: OUT &H3D4, 13: OUT &H3D5, L%
WAIT &H3DA, 8: 'waits for vertical retrace
FOR DELAY = 0 TO 100: NEXT: 'Adjust for different scroll speed
NEXT
END SUB

SUB ScrollUp
FOR I% = 0 TO 8240 STEP 80
REM M% stands for MSB and L%=LSB
M% = FIX(I% / 256): L% = I% - (M% * 256)
OUT &H3D4, 12: OUT &H3D5, M%: OUT &H3D4, 13: OUT &H3D5, L%
WAIT &H3DA, 8 'Wait for vertical retrace
FOR D = 0 TO 100: NEXT: 'Adjust for different scroll speed
NEXT
END SUB

