123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- % main7.red : Small READ-EVAL-PRINT Loop WITH IO
- % Needs IO, SUB2, SUB3, SUB4, SUB5, SUB6,SUB7
- IN "xxx-header.red"$
- in "pt:stubs3.red"$
- in "pt:stubs4.red"$
- in "pt:stubs5.red"$
- in "pt:stubs6.red"$
- in "pt:stubs7.red"$
- in "pt:psl-timer.sl"$
- on syslisp;
- Compiletime GLOBAL '(DEBUG IN!* OUT!* !$EOF!$ !*PVAL);
- Procedure FirstCall;
- Begin scalar x, Done, Hcount;
- INIT();
- InitHeap();
- InitEval();
- Prin2t '"MINI-PSL with File I/O";
- Prin2T '" Type (IOTEST) to test basic file I/O";
- Prin2T '" Future tests will be READ in this way";
- Prin2T '" !*RAISE and !*PVAL set T";
- LispVar(DEBUG) := 'NIL; % For nice I/O
- InitRead();
- LispVar(!*RAISE) := 'T; % Upcase Input IDs
- LispVar(!*PVAL) := 'T; % Print VALUEs
- LispVar(!$EOF!$) := MKID Char EOF; % Check for EOF
- Hcount :=0;
- Prin2t " .... Now we test INITCODE";
- InitCode();
- LISPVAR(IN!*):=0;
- LISPVAR(OUT!*):=1;
- Hcount :=0;
- ClearIo();
- While Not Done do
- <<Hcount:=Hcount+1;
- Prin2 Hcount; Prin2 '" lisp> ";
- x:=READ();
- if x EQ !$EOF!$ then
- <<Terpri();
- Prin2T " *** Top Level EOF *** ">>
- else if x eq 'QUIT then Done := 'T
- else <<Terpri();
- x:=EVAL x;
- if Lispvar(!*PVAL) then Print x>>;
- >>;
- Quit;
- End;
- %---- File Io tests ----
- Off syslisp;
- Procedure Iotest;
- Begin scalar InFile, OutFile,Ch,S,InString,OutString;
- Prin2T "---- Test of File IO";
- IN!*:=0;
- Out!*:=1;
- Prin2T " Test CLEARIO";
- A: Prin2T " Input String for Input File";
- Instring:=Read();
- Terpri();
- If not StringP Instring then goto A;
- B: Prin2T " Input String for OutPut File";
- OutString:=Read();
- Terpri();
- If not StringP Outstring then goto B;
- Infile:=Open(InString,'Input);
- prin2 " Input File Opened on ";
- Prin2 Infile;
- PRIN2T ", copy to TTY ";
- While Not ((ch:=IndependentReadChar(InFILE)) eq 26) do PutC Ch;
- Close Infile;
- Prin2T " File Closed, Input test done";
- Infile:=Open(InString,'Input);
- OutFile:=Open(OutString,'OutPut);
- prin2 " Input File on ";
- Prin2 Infile;
- PRIN2 ", copy to Output File on";
- Prin2T OutFile;
- While Not ((ch:=IndependentReadChar(InFILE)) eq 26)
- do IndependentWriteChar(outFile,Ch);
- Close Infile;
- Close OutFile;
- Prin2 "Both Files Closed, Inspect File:";
- Prin2T OutString;
- End;
- End;
|