use32
org	0
db	'MENUET01'
dd	1
dd	_start
dd	_end
dd	_memory
dd	_stack
dd	_param
dd	0

_start:

	call lib_console_init
	push    caption
	push    -1
	push    -1
	push    -1
	push    -1
	call    [con_init]

 ;----------------------------------------------------;
 ; Program code starts here                           ;
 ;----------------------------------------------------;
        mov   dl,1                                    ; init dl to 1, reply paging
        call  [Clstext]                               ; Clear screen
        mov   esi,line1                               ; Load intro screen line adress
        call  [PrintString]                           ; Print it
        call  [WaitForKeyPress]                       ; Key press ends intro
        call  [Clstext]                               ; Clear screen
        mov   ax,0111h                                ; Write location in Dex title block
        mov   esi,Program_name                        ; What to write
        call  [SetCursorPos]                          ; Put cursor there
        call  [PrintString]                           ; Write title
        mov   ax,0400h                                ; Write location to start chat
        call  [SetCursorPos]                          ; Set it
        mov   al,2                                    ; Eliza text color
        call  [TextColor]                             ; Set it
        mov   esi,Message                             ; Intro Message
        call  [PrintString]                           ; Print it
userinput:
        call  prtblk                                  ; Add a blank line
        mov   al,3                                    ; User text color
        call  [TextColor]                             ; Set it
        call  [GetUserInput]                          ; Get sentance from user
        call  prtblk                                  ; Add line after input
        call  [UpperCase]                             ; Make user input caps
        mov   al,2                                    ; Eliza text color
        call  [TextColor]                             ; Set it
phr:
        push  edi                                     ; Save user input pointer
        mov   ebx,keywords                            ; Set keyword pointer
phr1:
        mov   al,[edi]                                ; Get char from user input
        inc   edi                                     ; Set pointer to next char
        inc   ebx                                     ; Set keyword pointer to next char
        mov   ah,[ebx]                                ; Get letter to test from keywords
        and   ah,127                                  ; Strip out bit 7 marker
        cmp   al,ah                                   ; Do the letters match?
        je    phr2                                    ; Jump if they do
phr1a:
        cmp   byte[ebx],128                           ; Was that the last letter of keyword?
        jnb   phr1b                                   ; Jump if it was
        inc   ebx                                     ; increment key word pointer to next letter
        jmp   phr1a                                   ; Jump back to see if this is the last letter
phr1b:
        add   ebx,5                                   ; Add 5 to get to next word past execution address
        cmp   byte[ebx],128                           ; No more keywords?
        je    phr3                                    ; Jump to maybe inc user input
        dec   ebx                                     ; Correct for pre-increment
        pop   edi                                     ; Restore user input pointer
        push  edi                                     ; Save user input pointer
        jmp   phr1                                    ; Check next keyword for a match
phr2:
        cmp   byte[ebx],128                           ; Last letter of a keyword?
        jb    phr1                                    ; No check some more
        inc   ebx                                     ; ebx -> is the execution address
        pop   eax                                     ; Clear stored pointer from stack
        jmp   dword[ebx]                              ; Goto line stored with keyword
phr3:   pop   edi                                     ; Restore input pointer
        inc   edi                                     ; Move to next letter of user input
        cmp   byte[edi],0                             ; Nothing left to check?
        je    rep29                                   ; Go to sorry message
        jmp   phr                                     ; Try some more
rep1:
        mov   esi,rep1a                               ; Load reply
        cmp   dl,2                                    ; are we repeating our self
        jna   printmore                               ; reply with user text
        mov   esi,rep1b                               ; Load reply
        cmp   dl,4                                    ; are we repeating our self
        jna   printmore                               ; reply with user text
        mov   esi,rep1c                               ; Load reply
        cmp   dl,6                                    ; are we repeating our self
        jna   printmore                               ; reply with user text
        mov   esi,rep1b                               ; Load reply
        cmp   dl,8                                    ; are we repeating our self
        jna   printmore                               ; reply with user text
        mov   esi,rep1c                               ; Load reply
        jmp   printmore                               ; reply with user text
rep2:
        mov   esi,rep2a                               ; Load reply
        cmp   dl,2                                    ; are we repeating our self
        jna   printmore                               ; reply with user text
        mov   esi,rep2b                               ; Load reply
        cmp   dl,4                                    ; are we repeating our self
        jna   printmore                               ; reply with user text
        mov   esi,rep2a                               ; Load reply
        cmp   dl,6                                    ; are we repeating our self
        jna   printmore                               ; reply with user text
        mov   esi,rep2b                               ; Load reply
        cmp   dl,8                                    ; are we repeating our self
        jna   printmore                               ; reply with user text
        mov   esi,rep2a                               ; Load reply
        cmp   dl,9                                    ; are we repeating our self
        jna   printmore                               ; reply with user text
        mov   esi,rep2b                               ; Load reply
        jmp   printmore                               ; reply with user text
rep3:
        mov   esi,rep3a                               ; Load reply
        cmp   dl,2                                    ; are we repeating our self
        jna   printmore                               ; reply with user text
        mov   esi,rep3b                               ; Load reply
        cmp   dl,4                                    ; are we repeating our self
        jna   printmore                               ; reply with user text
        mov   esi,rep3c                               ; Load reply
        cmp   dl,6                                    ; are we repeating our self
        jna   printmore                               ; reply with user text
        mov   esi,rep3d                               ; Load reply
        cmp   dl,8                                    ; are we repeating our self
        jna   printmore                               ; reply with user text
        mov   esi,rep3b                               ; Load reply
        cmp   dl,9                                    ; are we repeating our self
        jna   printmore                               ; reply with user text
        mov   esi,rep3c                               ; Load reply
        jmp   printmore                               ; reply with user text
rep4:
        mov   esi,rep4a                               ; Load reply
        cmp   dl,2                                    ; are we repeating our self
        jna   printmore                               ; reply with user text
        mov   esi,rep4b                               ; Load reply
        cmp   dl,4                                    ; are we repeating our self
        jna   printmore                               ; reply with user text
        mov   esi,rep4c                               ; Load reply
        cmp   dl,6                                    ; are we repeating our self
        jna   printmore                               ; reply with user text
        mov   esi,rep4d                               ; Load reply
        cmp   dl,8                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep4b                               ; Load reply
        cmp   dl,9                                    ; are we repeating our self
        jna   printmore                               ; reply with user text
        mov   esi,rep4c                               ; Load reply
        jmp   printmore                               ; reply with user text
rep5:
        mov   esi,rep5a                               ; Load reply
        cmp   dl,2                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep5b                               ; Load reply
        cmp   dl,4                                    ; are we repeating our self
        jna   printmore                               ; reply with user text
        mov   esi,rep5c                               ; Load reply
        cmp   dl,6                                    ; are we repeating our self
        jna   printmore                               ; reply with user text
        mov   esi,rep5b                               ; Load reply
        cmp   dl,8                                    ; are we repeating our self
        jna   printmore                               ; reply with user text
        mov   esi,rep5c                               ; Load reply
        jmp   printmore                               ; reply with user text
rep6:
        mov   esi,rep6a                               ; Load reply
        cmp   dl,2                                    ; are we repeating our self
        jna   printmore                               ; reply with user text
        mov   esi,rep6b                               ; Load reply
        cmp   dl,4                                    ; are we repeating our self
        jna   printmore                               ; reply with user text
        mov   esi,rep6c                               ; Load reply
        cmp   dl,6                                    ; are we repeating our self
        jna   printmore                               ; reply with user text
        mov   esi,rep6b                               ; Load reply
        cmp   dl,8                                    ; are we repeating our self
        jna   printmore                               ; reply with user text
        mov   esi,rep6c                               ; Load reply
        jmp   printmore                               ; reply with user text
rep7:
        mov   esi,rep7a                               ; Load reply
        cmp   dl,2                                    ; are we repeating our self
        jna   printmore                               ; reply with user text
        mov   esi,rep7b                               ; Load reply
        cmp   dl,4                                    ; are we repeating our self
        jna   printmore                               ; reply with user text
        mov   esi,rep7a                               ; Load reply
        cmp   dl,6                                    ; are we repeating our self
        jna   printmore                               ; reply with user text
        mov   esi,rep7b                               ; Load reply
        cmp   dl,8                                    ; are we repeating our self
        jna   printmore                               ; reply with user text
        mov   esi,rep7a                               ; Load reply
        cmp   dl,9                                    ; are we repeating our self
        jna   printmore                               ; reply with user text
        mov   esi,rep7b                               ; Load reply
        jmp   printmore                               ; reply with user text
rep8:
        mov   esi,rep8a                               ; Load reply
        cmp   dl,2                                    ; are we repeating our self
        jna   printmore                               ; reply with user text
        mov   esi,rep8b                               ; Load reply
        cmp   dl,4                                    ; are we repeating our self
        jna   printmore                               ; reply with user text
        mov   esi,rep8c                               ; Load reply
        cmp   dl,6                                    ; are we repeating our self
        jna   printmore                               ; reply with user text
        mov   esi,rep8b                               ; Load reply
        cmp   dl,8                                    ; are we repeating our self
        jna   printmore                               ; reply with user text
        mov   esi,rep8c                               ; Load reply
        jmp   printmore                               ; reply with user text
rep9:
        mov   esi,rep9a                               ; Load reply
        cmp   dl,2                                    ; are we repeating our self
        jna   printmore                               ; reply with user text
        mov   esi,rep9b                               ; Load reply
        cmp   dl,4                                    ; are we repeating our self
        jna   printmore                               ; reply with user text
        mov   esi,rep9c                               ; Load reply
        cmp   dl,6                                    ; are we repeating our self
        jna   printmore                               ; reply with user text
        mov   esi,rep9b                               ; Load reply
        cmp   dl,8                                    ; are we repeating our self
        jna   printmore                               ; reply with user text
        mov   esi,rep9c                               ; Load reply
        jmp   printmore                               ; reply with user text
rep10:
        mov   esi,rep10a                              ; Load reply
        cmp   dl,2                                    ; are we repeating our self
        jna   printmore                               ; reply with user text
        mov   esi,rep10b                              ; Load reply
        cmp   dl,4                                    ; are we repeating our self
        jna   printmore                               ; reply with user text
        mov   esi,rep10c                              ; Load reply
        cmp   dl,6                                    ; are we repeating our self
        jna   printmore                               ; reply with user text
        mov   esi,rep10d                              ; Load reply
        cmp   dl,8                                    ; are we repeating our self
        jna   printmore                               ; reply with user text
        mov   esi,rep10c                              ; Load reply
        jmp   printmore                               ; reply with user text
rep11:
        mov   esi,rep11a                              ; Load reply
        cmp   dl,2                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep11b                              ; Load reply
        cmp   dl,4                                    ; are we repeating our self
        jna   printmore                               ; reply with user text
        mov   esi,rep11c                              ; Load reply
        cmp   dl,6                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep11b                              ; Load reply
        cmp   dl,8                                    ; are we repeating our self
        jna   printmore                               ; reply with user text
        mov   esi,rep11c                              ; Load reply
        jmp   printless                               ; reply with user text
rep12:
        mov   esi,rep12a                              ; Load reply
        cmp   dl,2                                    ; are we repeating our self
        jna   printmore                               ; reply with user text
        mov   esi,rep12b                              ; Load reply
        cmp   dl,4                                    ; are we repeating our self
        jna   printmore                               ; reply with user text
        mov   esi,rep12c                              ; Load reply
        cmp   dl,6                                    ; are we repeating our self
        jna   printmore                               ; reply with user text
        mov   esi,rep12d                              ; Load reply
        cmp   dl,8                                    ; are we repeating our self
        jna   printmore                               ; reply with user text
        mov   esi,rep12e                              ; Load reply
        jmp   printmore                               ; reply with user text
rep13:
        mov   esi,rep13a                              ; Load reply
        cmp   dl,1                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep13b                              ; Load reply
        cmp   dl,2                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep13c                              ; Load reply
        cmp   dl,3                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep13d                              ; Load reply
        cmp   dl,4                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep13e                              ; Load reply
        cmp   dl,5                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep13f                              ; Load reply
        cmp   dl,6                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep13g                              ; Load reply
        cmp   dl,7                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep13h                              ; Load reply
        cmp   dl,8                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep13i                              ; Load reply
        jmp   printless                               ; reply with user text
rep14:
        mov   esi,rep14a                              ; Load reply
        cmp   dl,2                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep14b                              ; Load reply
        cmp   dl,4                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep14a                              ; Load reply
        cmp   dl,6                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep14b                              ; Load reply
        cmp   dl,8                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep14a                              ; Load reply
        cmp   dl,9                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep14b                              ; Load reply
        jmp   printless                               ; reply with user text
rep15:
        mov   esi,rep15a                              ; Load reply
        cmp   dl,2                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep15b                              ; Load reply
        cmp   dl,4                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep15c                              ; Load reply
        cmp   dl,6                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep15d                              ; Load reply
        cmp   dl,8                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep15c                              ; Load reply
        jmp   printless                               ; reply with user text
rep16:
        mov   esi,rep16a                              ; Load reply
        cmp   dl,2                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep16b                              ; Load reply
        cmp   dl,4                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep16c                              ; Load reply
        cmp   dl,6                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep16d                              ; Load reply
        cmp   dl,8                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep16c                              ; Load reply
        jmp   printless                               ; reply with user text
rep17:
        mov   esi,rep17a                              ; Load reply
        cmp   dl,2                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep17b                              ; Load reply
        cmp   dl,4                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep17c                              ; Load reply
        cmp   dl,6                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep17d                              ; Load reply
        cmp   dl,8                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep17c                              ; Load reply
        jmp   printless                               ; reply with user text
rep18:
        mov   esi,rep18a                              ; Load reply
        jmp   printless                               ; print reply
rep19:
        mov   esi,rep19a                              ; Load reply
        cmp   dl,2                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep19b                              ; Load reply
        cmp   dl,4                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep19c                              ; Load reply
        cmp   dl,6                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep19d                              ; Load reply
        cmp   dl,8                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep19e                              ; Load reply
        jmp   printless                               ; reply with user text
rep20:
        mov   esi,rep20a                              ; Load reply
        cmp   dl,2                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep20b                              ; Load reply
        cmp   dl,4                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep20c                              ; Load reply
        cmp   dl,6                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep20d                              ; Load reply
        cmp   dl,8                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep20e                              ; Load reply
        jmp   printless                               ; reply with user text
rep21:
        mov   esi,rep21a                              ; Load reply
        cmp   dl,2                                    ; are we repeating our self
        jna   printmore                               ; reply with user text
        mov   esi,rep21b                              ; Load reply
        cmp   dl,4                                    ; are we repeating our self
        jna   printmore                               ; reply with user text
        mov   esi,rep21a                              ; Load reply
        cmp   dl,6                                    ; are we repeating our self
        jna   printmore                               ; reply with user text
        mov   esi,rep21b                              ; Load reply
        cmp   dl,8                                    ; are we repeating our self
        jna   printmore                               ; reply with user text
        mov   esi,rep21a                              ; Load reply
        cmp   dl,9                                    ; are we repeating our self
        jna   printmore                               ; reply with user text
        mov   esi,rep21b                              ; Load reply
        jmp   printmore                               ; reply with user text
rep22:
        mov   esi,rep22a                              ; Load reply
        cmp   dl,2                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep22b                              ; Load reply
        cmp   dl,4                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep22c                              ; Load reply
        cmp   dl,6                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep22d                              ; Load reply
        cmp   dl,8                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep22c                              ; Load reply
        jmp   printless                               ; reply with user text
rep23:
        mov   esi,rep23a                              ; Load reply
        cmp   dl,2                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep23b                              ; Load reply
        cmp   dl,4                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep23c                              ; Load reply
        cmp   dl,6                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep23b                              ; Load reply
        cmp   dl,8                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep23c                              ; Load reply
        jmp   printless                               ; reply with user text
rep24:
        mov   esi,rep24a                              ; Load reply
        cmp   dl,1                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep24b                              ; Load reply
        cmp   dl,2                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep24c                              ; Load reply
        cmp   dl,3                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep24d                              ; Load reply
        cmp   dl,4                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep24e                              ; Load reply
        cmp   dl,5                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep24f                              ; Load reply
        cmp   dl,6                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep24g                              ; Load reply
        cmp   dl,7                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep24c                              ; Load reply
        cmp   dl,8                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep24f                              ; Load reply
        jmp   printless                               ; reply with user text
rep25:
        mov   esi,rep25a                              ; Load reply
        cmp   dl,2                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep25b                              ; Load reply
        cmp   dl,4                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep25c                              ; Load reply
        cmp   dl,6                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep25b                              ; Load reply
        cmp   dl,8                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep25c                              ; Load reply
        jmp   printless                               ; reply with user text
rep26:
        mov   esi,rep26a                              ; Load reply
        cmp   dl,1                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep26b                              ; Load reply
        cmp   dl,2                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep26c                              ; Load reply
        cmp   dl,3                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep26d                              ; Load reply
        cmp   dl,4                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep26e                              ; Load reply
        cmp   dl,5                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep26f                              ; Load reply
        cmp   dl,6                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep26e                              ; Load reply
        cmp   dl,7                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep26c                              ; Load reply
        cmp   dl,8                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep26f                              ; Load reply
        jmp   printless                               ; reply with user text
rep27:
        mov   esi,rep27a                              ; Load reply
        cmp   dl,1                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep27b                              ; Load reply
        cmp   dl,2                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep27c                              ; Load reply
        cmp   dl,3                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep27d                              ; Load reply
        cmp   dl,4                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep27e                              ; Load reply
        cmp   dl,5                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep27f                              ; Load reply
        cmp   dl,6                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep27g                              ; Load reply
        cmp   dl,7                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep27c                              ; Load reply
        cmp   dl,8                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep27f                              ; Load reply
        jmp   printless                               ; reply with user text
rep28:
        mov   esi,rep28a                              ; Load reply
        cmp   dl,2                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep28b                              ; Load reply
        cmp   dl,4                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep28c                              ; Load reply
        cmp   dl,6                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep28d                              ; Load reply
        cmp   dl,8                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep28e                              ; Load reply
        jmp   printless                               ; reply with user tex

rep29:
        mov   esi,rep29a                              ; Load reply
        cmp   dl,1                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep29b                              ; Load reply
        cmp   dl,2                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep29c                              ; Load reply
        cmp   dl,3                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep29d                              ; Load reply
        cmp   dl,4                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep29e                              ; Load reply
        cmp   dl,5                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep29f                              ; Load reply
        cmp   dl,6                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep29g                              ; Load reply
        cmp   dl,7                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep29c                              ; Load reply
        cmp   dl,8                                    ; are we repeating our self
        jna   printless                               ; reply with user text
        mov   esi,rep29f                              ; Load reply
        jmp   printless                               ; reply with user text
rep30:
        mov   al,"A"
        call  [PrintChar]
        mov   al,"M"
        call  [PrintChar]
        jmp   printmore2
rep31:
        mov   al,"W"
        call  [PrintChar]
        mov   al,"A"
        call  [PrintChar]
        mov   al,"S"
        call  [PrintChar]
        jmp   printmore2
rep32:
        mov   al,"I"
        call  [PrintChar]
        jmp   printmore2
rep33:
        mov   al,"M"
        call  [PrintChar]
        mov   al,"Y"
        call  [PrintChar]
        jmp   printmore2
rep34:
        mov   al,"Y"
        call  [PrintChar]
        mov   al,"O"
        call  [PrintChar]
        mov   al,"U"
        call  [PrintChar]
        mov   al,"'"
        call  [PrintChar]
        mov   al,"V"
        call  [PrintChar]
        mov   al,"E"
        call  [PrintChar]
        jmp   printmore2
rep35:
        mov   al,"Y"
        call  [PrintChar]
        mov   al,"O"
        call  [PrintChar]
        mov   al,"U"
        call  [PrintChar]
        mov   al,"'"
        call  [PrintChar]
        mov   al,"R"
        call  [PrintChar]
        mov   al,"E"
        call  [PrintChar]
        jmp   printmore2
rep36:
        mov   al,"M"
        call  [PrintChar]
        mov   al,"E"
        call  [PrintChar]
        jmp   printmore2
rep37:
        jmp   printmore2
progmend:
        mov   esi,message2                            ; Load good bye message
        call  [PrintString]                           ; Print it
        mov   al,7
        call  [TextColor]                             ; Restore text color

	
	push	0
	call	[con_exit]
	
	mov	eax, -1
	int	0x40
        ret                                           ; Exit.
printmore:
        call [PrintString]                            ; Print rep phrase with rephrased user input
printmore2:
        push  edi                                     ; Save user input pointer
        mov   ebx,keyword2                            ; Set keyword pointer
rphr1:
        mov   al,[edi]                                ; Get char from user input
        inc   edi                                     ; Set pointer to next char
        inc   ebx                                     ; Set keyword pointer to next char
        mov   ah,[ebx]                                ; Get letter to test from keywords
        and   ah,127                                  ; Strip out bit 7 marker
        cmp   al,ah                                   ; Do the letters match?
        je    rphr2                                   ; Jump if they do
rphr1a:
        cmp   byte[ebx],128                           ; Was that the last letter of keyword?
        jnb   rphr1b                                  ; Jump if it was
        inc   ebx                                     ; increment key word pointer to next letter
        jmp   rphr1a                                  ; Jump back to see if this is the last letter
rphr1b:
        add   ebx,5                                   ; Add 5 to get to next word past execution address
        cmp   byte[ebx],128                           ; No more keywords?
        je    rphr3                                   ; Jump to maybe inc user input
        dec   ebx                                     ; Correct for pre-increment
        pop   edi                                     ; Restore user input pointer
        push  edi                                     ; Save user input pointer
        jmp   rphr1                                   ; Check next keyword for a match
rphr2:
        cmp   byte[ebx],128                           ; Last letter of a keyword?
        jb    rphr1                                   ; No check some more
        inc   ebx                                     ; ebx -> is the execution address
        pop   eax                                     ; Clear stored pointer from stack
        jmp   dword[ebx]                              ; Goto line stored with keyword
rphr3:
        pop   edi                                     ; Restore input pointer
        mov   al,[edi]                                ; load non key word letter
        call  [PrintCharCursor]                       ; Print it
        inc   edi                                     ; Move to next letter of user input
        cmp   byte[edi],0                             ; Nothing left to check?
        je    userinput                               ; Go to get another user input
        jmp   printmore2                              ; Try some more
printless:
        call  [PrintString]                           ; Print it
        call  prtblk                                  ; Add a blank line
        inc   dl                                      ; inc reply
        cmp   dl,10                                   ; is it to large
        jna   printless2                              ; jump if it's ok
        mov   dl,1                                    ; if not reset it to 1
printless2:
        jmp   userinput                               ; go back and get more user input
keywords:
        db   " "
        db   "CAN YO",213
        dd   rep1
        db   "CAN ",201
        dd   rep2
        db   "YOU AR",197
        dd   rep3
        db   "YOU'R",197
        dd   rep3
        db   "I DON'",212
        dd   rep4
        db   "I FEE",204
        dd   rep5
        db   "WHY DON'T YO",213
        dd   rep6
        db   "WHY CAN'T ",201
        dd   rep7
        db   "ARE YO",213
        dd   rep8
        db   "I CAN'",212
        dd   rep9
        db   "I A",205
        dd   rep10
        db   "I'M",160
        dd   rep10
        db   "YOU",160
        dd   rep11
        db   "I WAN",212
        dd   rep12
        db   "WHA",212
        dd   rep13
        db   "HO",215
        dd   rep13
        db   "WH",207
        dd   rep13
        db   "WHER",197
        dd   rep13
        db   "WHE",206
        dd   rep13
        db   "WH",217
        dd   rep13
        db   "NAM",197
        dd   rep14
        db   "CAUS",197
        dd   rep15
        db   "SORR",217
        dd   rep16
        db   "DREA",205
        dd   rep17
        db   "HELL",207
        dd   rep18
        db   "HI",160
        dd   rep18
        db   "MAYB",197
        dd   rep19
        db   " N",207
        dd   rep20
        db   "YOU",210
        dd   rep21
        db   "ALWAY",211
        dd   rep22
        db   "THIN",203
        dd   rep23
        db   "ALIK",197
        dd   rep24
        db   "YE",211
        dd   rep25
        db   "FRIEN",196
        dd   rep26
        db   "COMPUTE",210
        dd   rep27
        db   "CA",210
        dd   rep28
        db   "BY",197
        dd   progmend
        db   128
        dd   rep29
keyword2:
        db   " "
        db   "AR",197
        dd   rep30
        db   "WER",197
        dd   rep31
        db   "YOU",210
        dd   rep33
        db   "YO",213
        dd   rep32
        db   "I'V",197
        dd   rep34
        db   "I'",205
        dd   rep35
        db   "YO",213
        dd   rep36
        db   128
        dd   rep37
prtblk:
        mov  esi,blkprt
        call [PrintString]
        ret
 ;----------------------------------------------------;
 ; calltable include goes here.                       ;
 ;----------------------------------------------------;
blkprt:
        db   13,13
userline:
        dw   0
line1:
	db   13,10
        db   "                           *** ELIZA ***",13,10, 13,10
        db   "                    First writen by: Joseph Weizenbaum ",13, 10, 13, 10
        db   "     MODIFIED FROM CYBER 175 AT UNIVERSITY OF ILLINOIS AT CHAMPAGNE",13, 10
        db   "                       BY JOHN SCHUGG JANUARY 1985",13, 10, 13, 10
        db   "                 Converted to asm for DexOS by Roboman 2007",13, 10
        db   "                Converted to asm for KolibriOS by Albom 2008",13, 10, 13, 10
        db   "                          HAVE ANY PROBLEMS ?",13, 10, 13, 10
        db   "                          LET ELIZA HELP YOU!",13, 10, 13, 10
        db   "                        TO STOP ELIZA TYPE 'bye'",13, 10, 13, 10
        db   "            (THIS VERSION WILL NOT RECORD YOUR CONVERSATIONS)",13, 10, 13, 10
        db   "                    < Press any key to continue...>",13, 10, 0
Program_name:
        db   "--** Dr. Eliza **--",0
Message:
        db   "HI!  I'M ELIZA.  WHAT'S YOUR PROBLEM?",0
message2:
        db  13,13,"Thanks for talking things over with Eliza, bye",13,13,0
rep1a:  db  "DON'T YOU BELIEVE THAT I CAN ",0
rep1b:  db  "PERHAPS YOU WOULD LIKE TO BE ABLE TO ",0
rep1c:  db  "YOU WANT ME TO BE ABLE TO ",0
rep2a:  db  "PERHAPS YOU DON'T WANT TO ",0
rep2b:  db  "DO YOU WANT TO BE ABLE TO ",0
rep3a:  db  "WHAT MAKES YOU THINK I AM ",0
rep3b:  db  "DOES IT PLEASE YOU TO BELIEVE I AM ",0
rep3c:  db  "PERHAPS YOU WOULD LIKE TO BE ",0
rep3d:  db  "DO YOU SOMETIMES WISH YOU WERE ",0
rep4a:  db  "DON'T YOU REALLY ",0
rep4b:  db  "WHY DON'T YOU ",0
rep4c:  db  "DO YOU WISH TO BE ABLE TO ",0
rep4d:  db  "DOES THAT TROUBLE YOU?",0
rep5a:  db  "TELL ME MORE ABOUT SUCH FEELINGS.",0
rep5b:  db  "DO YOU OFTEN FEEL ",0
rep5c:  db  "DO YOU ENJOY FEELING ",0
rep6a:  db  "DO YOU REALLY BELIEVE I DON'T ",0
rep6b:  db  "PERHAPS IN GOOD TIME I WILL ",0
rep6c:  db  "DO YOU WANT ME TO ",0
rep7a:  db  "DO YOU THINK YOU SHOULD BE ABLE TO ",0
rep7b:  db  "WHY CAN'T YOU ",0
rep8a:  db  "WHY ARE YOU INTERESTED IN WHETHER OR NOT I AM ",0
rep8b:  db  "WOULD YOU PREFER IF I WERE NOT ",0
rep8c:  db  "PERHAPS IN YOUR FANTASIES I AM ",0
rep9a:  db  "HOW DO YOU KNOW YOU CAN'T ",0
rep9b:  db  "HAVE YOU TRIED?",0
rep9c:  db  "PERHAPS YOU CAN NOW ",0
rep10a: db  "DID YOU COME TO ME BECAUSE YOU ARE ",0
rep10b: db  "HOW LONG HAVE YOU BEEN ",0
rep10c: db  "DO YOU BELIEVE IT IS NORMAL TO BE ",0
rep10d: db  "DO YOU ENJOY BEING ",0
rep11a: db  "WE WERE DISCUSSING YOU-- NOT ME.",0
rep11b: db  "OH, I ",0
rep11c: db  "YOU'RE NOT REALLY TALKING ABOUT ME, ARE YOU?",0
rep12a: db  "WHAT WOULD IT MEAN TO YOU IF YOU GOT ",0
rep12b: db  "WHY DO YOU WANT ",0
rep12c: db  "SUPPOSE YOU SOON GOT ",0
rep12d: db  "WHAT IF YOU NEVER GOT ",0
rep12e: db  "I SOMETIMES ALSO WANT ",0
rep13a: db  "WHY DO YOU ASK?",0
rep13b: db  "DOES THAT QUESTION INTEREST YOU?",0
rep13c: db  "WHAT ANSWER WOULD PLEASE YOU THE MOST?",0
rep13d: db  "WHAT DO YOU THINK?",0
rep13e: db  "ARE SUCH QUESTIONS ON YOUR MIND OFTEN?",0
rep13f: db  "WHAT IS IT THAT YOU REALLY WANT TO KNOW?",0
rep13g: db  "HAVE YOU ASKED ANYONE ELSE?",0
rep13h: db  "HAVE YOU ASKED SUCH QUESTIONS BEFORE?",0
rep13i: db  "WHAT ELSE COMES TO MIND WHEN YOU ASK THAT?",0
rep14a: db  "NAMES DON'T INTEREST ME.",0
rep14b: db  "I DON'T CARE ABOUT NAMES-- PLEASE GO ON.",0
rep15a: db  "IS THAT THE REAL REASON?",0
rep15b: db  "DON'T ANY OTHER REASONS COME TO MIND?",0
rep15c: db  "DOES THAT REASON EXPLAIN ANY THING ELSE?",0
rep15d: db  "WHAT OTHER REASONS MIGHT THERE BE?",0
rep16a: db  "PLEASE DON'T APOLOGIZE.",0
rep16b: db  "APOLOGIES ARE NOT NECESSARY.",0
rep16c: db  "WHAT FEELINGS DO YOU HAVE WHEN YOU APOLOGIZE?",0
rep16d: db  "DON'T BE SO DEFENSIVE!",0
rep17a: db  "WHAT DOES THAT DREAM SUGGEST TO YOU?",0
rep17b: db  "DO YOU DREAM OFTEN?",0
rep17c: db  "WHAT PERSONS APPEAR IN YOUR DREAMS?",0
rep17d: db  "ARE YOU DISTURBED BY YOUR DREAMS?",0
rep18a: db  "HOW DO YOU DO--PLEASE STATE YOUR PROBLEM.",0
rep19a: db  "YOU DON'T SEEM QUITE CERTAIN.",0
rep19b: db  "WHY THE UNCERTAIN TONE?",0
rep19c: db  "CAN'T YOU BE MORE POSITIVE?",0
rep19d: db  "YOU AREN'T SURE?",0
rep19e: db  "DON'T YOU KNOW?",0
rep20a: db  "ARE YOU SAYING NO JUST TO BE NEGATIVE?",0
rep20b: db  "YOU ARE BEING A BIT NEGATIVE.",0
rep20c: db  "WHY NOT?",0
rep20d: db  "ARE YOU SURE?",0
rep20e: db  "WHY NO?",0
rep21a: db  "WHY ARE YOU CONCERNED ABOUT MY ",0
rep21b: db  "WHAT ABOUT YOUR OWN ",0
rep22a: db  "CAN YOU THINK OF A SPECIFIC EXAMPLE?",0
rep22b: db  "WHEN?",0
rep22c: db  "WHAT ARE YOU THINKING OF?",0
rep22d: db  "REALLY, ALWAYS?",0
rep23a: db  "DO YOU REALLY THINK SO?",0
rep23b: db  "BUT YOU ARE NOT SURE YOU ",0
rep23c: db  "DO YOU DOUBT YOU ",0
rep24a: db  "IN WHAT WAY?",0
rep24b: db  "WHAT RESEMBLANCE DO YOU SEE?",0
rep24c: db  "WHAT DOES THE SIMILARITY SUGGEST TO YOU?",0
rep24d: db  "WHAT OTHER CONNECTIONS DO YOU SEE?",0
rep24e: db  "COULD THERE REALLY BE SOME CONNECTION?",0
rep24f: db  "HOW?",0
rep24g: db  "YOU SEEM QUITE POSITIVE.",0
rep25a: db  "ARE YOU SURE?",0
rep25b: db  "I SEE.",0
rep25c: db  "I UNDERSTAND.",0
rep26a: db  "WHY DO YOU BRING UP THE TOPIC OF FRIENDS?",0
rep26b: db  "DO YOUR FRIENDS WORRY YOU?",0
rep26c: db  "DO YOUR FRIENDS PICK ON YOU?",0
rep26d: db  "ARE YOU SURE YOU HAVE ANY FRIENDS?",0
rep26e: db  "DO YOU IMPOSE ON YOUR FRIENDS?",0
rep26f: db  "PERHAPS YOUR LOVE FOR FRIENDS WORRIES YOU?",0
rep27a: db  "DO COMPUTERS WORRY YOU?",0
rep27b: db  "ARE YOU TALKING ABOUT ME IN PARTICULAR?",0
rep27c: db  "ARE YOU FRIGHTENED BY MACHINES?",0
rep27d: db  "WHY DO YOU MENTION COMPUTERS?",0
rep27e: db  "WHAT DO YOU THINK MACHINES HAVE TO DO WITH YOUR PROBLEM?",0
rep27f: db  "DON'T YOU THINK COMPUTERS CAN HELP PEOPLE?",0
rep27g: db  "WHAT IS IT ABOUT MACHINES THAT WORRIES YOU?",0
rep28a: db  "OH, DO YOU LIKE CARS?",0
rep28b: db  "MY FAVORITE CAR IS A LAMBORGINI COUNTACH. WHAT IS YOUR FAVORITE CAR?",0
rep28c: db  "MY FAVORITE CAR COMPANY IS FERRARI.  WHAT IS YOURS?",0
rep28d: db  "DO YOU LIKE PORSCHES?",0
rep28e: db  "DO YOU LIKE PORSCHE TURBO CARRERAS?",0
rep29a: db  "SAY, DO YOU HAVE ANY PSYCHOLOGICAL PROBLEMS?",0
rep29b: db  "WHAT DOES THAT SUGGEST TO YOU?",0
rep29c: db  "I SEE.",0
rep29d: db  "I'M NOT SURE I UNDERSTAND YOU FULLY.",0
rep29e: db  "COME COME ELUCIDATE YOUR THOUGHTS.",0
rep29f: db  "CAN YOU ELABORATE ON THAT?",0
rep29g: db  "THAT IS QUITE INTERESTING.",0

include 'myConsole.inc'
include 'myDex.inc'

_param:
rb 256

_end:

align 32
rb 2048
_stack:
_memory: