Monday, November 16, 2015
The Psychotherapy of Racter, or The Descent Into Madness of Sean Conner
When last I left off, I had a more-or-less working Eliza and therefore, I need to turn my attention to Racter.
This is not as easy as it may appear. The version I have is for MS-DOS, which is okay as I can emulate that. But harder is redirecting Eliza's output through the MS-DOS emulator to Racter and redirecting Racter's output from the MS-DOS emulator back to Eliza. And that's key to getting this whole thing working.
The program I'm using is DOSBox.
I thought I could try redirection,
something along the lines of
dosbox <input to see if would work and … nope.
It looks like I'll have to dig into the source code to DOSBox,
intercept keyboard input and video output and kludge something in to get Eliza and Racter “talking.”
Okay … the source is C++ callback hell, what about doing a native compile of the Racter source code?
IV.IF Interview with INRAC IBM 6-4-85 initial transient file 1 2 52 SECTION 1 hello 5 34 SECTION 2 sue 5 18 A :LOADIV :OUTRACTER >2= >3= ?51= />51=Smith # XA Hello, I'm Racter. ?40= \# You are? ?? #*1B X Are you $40 ? ?? # X ?no,not \# >1=R ?i'm,am,is /# Who are you then? ?? :F=0 # X ?yes \# ?-:but /# >1=R #*1B X \# You are $40 $51 ? ?? ?yes /#*2SAME ?i'm,is /# #*1XC B ?i \# >1=R ?don't,won't \# *1COY ?? #*1B X ?a,an,the \?called \?am,i'm,is,me,as,it's \# :F+1 >2=F ?-:2= # X /# ?CAP \# >2=F :F+1 >4=F ?4= \#*1XB #*1DO X /# *1DUH ?? #*1B XB ?CAP+1 />3=F # X >1=2 ?CAP \>2=C,2 # C *1Xcall $2 , then? ?? ?no,not,Q /?-:why /# #*1DO X >1=R ?CAP \# #*1B XC What's your name then? :F=0 ?? #*1B Xcall I may call you Xcall You are Xcall Your name is DO Hello, $2 . I believe you're interviewing me. # X ?2=40 \# >40=40,51 # X ?40= /# Are you continuing $40 <'s interview? # X /# ?? ?no,not,don't /# #*2DIF X ?40= /# Then we'll forget about $40 and start over. # X :ZAP :PUTIV # EXIT >40=2 ?3= \>51=3 What would you like to know? #*2GO COY Come on, what's your name? COY You must have a name - what is it? COY Your name, please . COY I have to call you something - what shall it be? DUH I didn't get that . *1WHO DUH I don't understand . *1WHO DUH Eh? *1COY WHO Who ? WHO Who are you ? DIFA Well, $2 , $40 and I >4=40 >40=2 ?3= \>51=3 #*2A SAME Hi, $40 . >4=You ?52= /# How are things in $52 ? # x We # A ?20= />20=various,things # x were talking about $20 last time. # x ?10=VERBQ \?10= />3=whether \>3=10 # x $4 had just asked D $3 $19 . # CONT Shall we continue? ?? ?z \# #*1XA x ?why /?not /# ?no,not \# #*2QUIT x Excellent! # GO Excuse me a minute while I attend to some # x business - I'll be right back. I'm # x ?42= />42=Oz # x ?19= />19=I,have,to,rest,now # x :PUTIV # X %KEY %VOCAB1 %VOCAB2 %VOCAB3 %BILL %IV1 %RAPT %RAPT2 back. *15A QUIT You want to quit? ?no,not \# Well, goodbye then. X That's good. #*2GO
Oh … right. That's why I'm running an existing executable, because there're only four, count them, four pages on the Intarwebs that even mention INRAC, the langauge Racter is written in. There's this page which is a brief overview of this page, which is page one of a six-page review of the INRAC compiler in a journal that I was unable to locate at the local university. Then there's the Racter FAQ whose description of INRAC doesn't quite match what I have.
And that final page? Deconstructing Racter, which I wrote seven years ago!
But before I go back into unintelligible C++ code, another snippit of conversation between Racter and myself:
- Why are you repetitive?
- Conceivably because subroutines are like that, I guess. And chips are intelligent. Intelligence is good, you know. I don't know many crooked truthsayers. Cough. Next question.
- Should I vote Democrat?
- No. You must be a stuffy right-winger. Cough. Next question.
I have no idea why Racter is suddenly coughing like that. Maybe a computer virus?