From 3c2f52304a69bcf12c2d14612a89b2095bcef70c Mon Sep 17 00:00:00 2001 From: Lars Brinkhoff Date: Thu, 23 Aug 2018 07:46:22 +0200 Subject: [PATCH] Make TENTH run under ITS. --- build/misc.tcl | 4 ++++ src/aap/{tenth.2 => tenth.3} | 29 +++++++++++++++++++++++++++-- 2 files changed, 31 insertions(+), 2 deletions(-) rename src/aap/{tenth.2 => tenth.3} (97%) diff --git a/build/misc.tcl b/build/misc.tcl index 6bb7f3d9..48ac2b10 100644 --- a/build/misc.tcl +++ b/build/misc.tcl @@ -1165,6 +1165,10 @@ respond "*" ":kill\r" # TENTH, toy Forth for KS10. respond "*" ":midas .; @ tenth_aap; tenth\r" expect ":KILL" +respond "*" ":midas /t aap; ts tenth_tenth\r" +respond "end input with ^C" "TS==1\r" +respond "\n" "\003" +expect ":KILL" # 11BOOT respond "*" ":midas /t sys3;ts 11boot_syseng;11boot\r" diff --git a/src/aap/tenth.2 b/src/aap/tenth.3 similarity index 97% rename from src/aap/tenth.2 rename to src/aap/tenth.3 index 5e34c903..8185536a 100644 --- a/src/aap/tenth.2 +++ b/src/aap/tenth.3 @@ -2,13 +2,21 @@ TITLE TENTH EXPUNGE .SWAP,.BEGIN,.END,.ELSE,.I +IFNDEF TS,TS==0 + X=14 ; pointer into code/parameter field PC=15 ; the interpreter's program counter PP=16 ; parameter stack pointer P=17 ; return stack pointer +IFE TS,[ APR=0 CTYIN=32 CTYOUT=33 +] +IFN TS,[ +TYIC==1 +TYOC==2 +] PDLLEN=100 PDL: .=.+PDLLEN @@ -22,7 +30,18 @@ WORDBUF: 0 ? .=.+10 WORDBP: 440700,,WORDBUF+1 START: - SETZM CTYIN +IFE TS, SETZM CTYIN +IFN TS,[ + .OPEN TYIC,[.UAI,,'TTY] + .LOSE + .OPEN TYOC,[.UAO,,'TTY] + .LOSE + .CALL [ SETZ ; turn off echoing + SIXBIT /TTYSET/ + MOVEI TYIC + MOVE [030202,,020202] + SETZ [030202,,020202] ] +] MOVE P,RSP MOVE PP,PSP MOVEI PC,[.QUIT] @@ -34,12 +53,15 @@ START: ; print ASCII character in AC 0 - changes AC 0 PUTCHAR: +IFE TS,[ IORI 0,400 ; valid bit MOVEM 0,CTYOUT CONO APR,12000 ; 10000 = set flags, 2000 = interrupt flag SKIPE CTYOUT ; wait for transmission to complete JRST .-1 - CAIE 0,400\^J +] +IFN TS, .IOT TYOC,0 + CAIE 0,IFE TS,[400\]^J POPJ P, MOVEI 0,^M JRST PUTCHAR @@ -99,12 +121,15 @@ PRNTNSP: ; reads one character into AC 0 GETCH: +IFE TS,[ CONO APR,12000 ; 10000 = set flags, 2000 = interrupt flag MOVE 0,CTYIN CAIN 0,0 JRST .-2 SETZM CTYIN TRZ 0,400 +] +IFN TS, .IOT TYIC,0 CAIN 0,^M MOVEI 0,^J POPJ P,