D O C T O R (THE COMPUTERIZED ANALYST) ABSTRACT: THE PROGRAM "DOCTOR" IS A VERSION OF THE OLD "ELIZA" PROGRAM WRITTEN TO RUN IN TECO. IT IS LESS POWERFUL THAN THE ORIGINAL LISP PROGRAM, BUT REQUIRES ONLY A VERSION OF TECO TO RUN. IT CAUSES THE COMPUTER TO RESPOND TO YOUR STATEMENTS AS WOULD (?) A PSYCHO- ANALYST, AND ATTEMPTS TO CARRY OUT A CONVERSATION WITH THE USER. PROGRAM DESCRIPTION: DOCTOR IS IMPLEMENTED IN 4 FILES: DOCTOR.TEC IS THE COMMAND FILE (I.E., THE "PROGRAM") DOCTOR.KEY IS THE LIST OF KEY WORDS/PHRASES LOOKED FOR IN YOUR COMMENTS DOCTOR.NUM IS THE LIST OF OFFSETS INTO ITS REPLY LIST OF REPLIES DOCTOR.RPL IS THE LIST OF CANNED REPLIES TO YOUR QUESTIONS. DURING EXECUTION, DOCTOR.KEY RESIDES IN Q-REGISTER K, DOCTOR.NUM RESIDES IN Q-REGISTER N, DOCTOR.RPL RESIDES IN Q-REGISTER R, AND BY CONVENTION (THOUGH IT NEED NOT BE SO), DOCTOR.TEC RESIDES IN Q-REGISTER Z. IF YOUR TECO DOES NOT HAVE ENOUGH BUFFER SPACE TO HOLD ALL THESE (PLUS A SECOND COPY OF THE REPLY LIST, WHICH IS THE LARGEST), YOU NEED TO ADD SPACE SOMEHOW TO USE THIS PROGRAM, OR RE-WRITE IT ENOUGH SO THAT IT SEEKS REPLIES OFF DISK INSTEAD OF BY LOADING Q-REGISTER R FOR REPLIES. (THE OTHER LISTS ARE SHORT ENOUGH THAT THEY SHOULD CAUSE LITTLE TROUBLE.) IN RSX11D, A TECO WITH 8000 WORDS OF STACK IS BIG ENOUGH; WITH 6000 IT MAY BE, BUT IS NOT TRIED. WITH OTHER SYSTEMS, GOOD LUCK! DOCTOR SHOULD RUN PRETTY MUCH INDEPENDENTLY OF THE OPERATING SYSTEM OR TECO DIALECT. THE PROGRAM IS REALLY VERY SIMPLE IN ITS OPERATION. IT WORKS ON YOUR INPUT LIKE THIS: 1. READ IN A SENTENCE OF TEXT FROM THE USER, REMOVING ANY "'" CHARACTERS AS THEY ARE READ IN. UPON RECEIPT OF CARRIAGE RETURN, STORE THE LINE AND PROCEED. 2. PULL IN ONE LINE OF THE KEYWORD LIST AT A TIME AND SEE IF ANY OF ITS STRINGS ARE FOUND IN THE SENTENCE READ. CONTINUE UNTIL EITHER A KEYWORD IS FOUND OR THE LIST IS EXHAUSTED. 3. STORE THE NUMBER OF LINES INTO THE KEYWORD LIST YOU HAVE GONE, AND SAVE FOR LATER. 4. STORE THE PART OF THE SENTENCE READ THAT IS AFTER THE KEYWORD FOUND. 5. TRANSLATE PERSONAL PRONOUNS (E.G. "YOU" TO "I", "YOUR" TO "MY", ETC.) IN THE SENTENCE PART STORED IN STEP 4 SO THAT THEY CAN BE USED IN POSSIBLE REPLIES. 6. LOAD THE LIST OF NUMERIC OFFSETS AND SKIP DOWN THE SAME NUMBER OF LINES SKIPPED TO FIND THE KEYWORD. CONVERT THE NUMBERS TO BINARY AND SAVE THEM. THE FIRST IS THE NUMBER OF LINES INTO THE REPLY BLOCK THE FIRST REPLY FOR THIS KEYWORD IS, AND THE SECOND IS THE NUMBER OF REPLIES FOR THIS KEYWORD. 7. LOAD THE LIST OF REPLY STATEMENTS. SKIP DOWN BY THE NUMBER OF LINES TO THE FIRST REPLY FOR YOUR KEYWORD. THEN SKIP DOWN BY THE NUMBER OF SENTENCES READ, MODULO THE NUMBER OF REPLIES ALLOWED FOR THIS KEYWORD. (THUS, YOU SKIP AN EXTRA 0 TO N-1 LINES, WHERE THERE ARE N LINES ALLOWED FOR THIS KEYWORD.) 8. SAVE THE REPLY STATEMENT AND ERASE THE REST OF THE BLOCK. 9. IF THE REPLY CONTAINS A "*" CHARACTER, REPLACE IT WITH A SPACE FOLLOWED BY THE TRANSLATED PART OF THE ORIGINAL SENTENCE AFTER THE KEYWORD. 10. TYPE IT OUT AND GO ON. THIS CONTINUES UNTIL "GOODBYE" IS SEEN, AT WHICH POINT A CLOSING MESSAGE IS TYPED AND TECO EXITS.