summaryrefslogtreecommitdiff
path: root/system/ruc-terminal/unknown/src
diff options
context:
space:
mode:
Diffstat (limited to 'system/ruc-terminal/unknown/src')
-rw-r--r--system/ruc-terminal/unknown/src/SCCPARAM.ELA144
-rw-r--r--system/ruc-terminal/unknown/src/SETUP.ELA257
-rw-r--r--system/ruc-terminal/unknown/src/Terminal108(ascii)121
-rw-r--r--system/ruc-terminal/unknown/src/Terminal108(deutsch)122
-rw-r--r--system/ruc-terminal/unknown/src/ructerm.apl-german125
-rw-r--r--system/ruc-terminal/unknown/src/ructerm.ascii94
6 files changed, 863 insertions, 0 deletions
diff --git a/system/ruc-terminal/unknown/src/SCCPARAM.ELA b/system/ruc-terminal/unknown/src/SCCPARAM.ELA
new file mode 100644
index 0000000..2a6ab19
--- /dev/null
+++ b/system/ruc-terminal/unknown/src/SCCPARAM.ELA
@@ -0,0 +1,144 @@
+(* Uebertragungsparameter fuer Kanal 2 und 3 (SCC) setzen *)
+(* Vers. 1.2 : 'setup'-Prozedur / 03.02.86, M.Staubermann *)
+
+PACKET scc DEFINES baudrate,
+ setup ,
+
+ channel a,
+ channel b,
+ no parity,
+ even parity,
+ odd parity,
+
+ read port,
+ write port,
+ register,
+ quartz :
+
+BOOL CONSTchannel a :: TRUE ,
+ channel b :: FALSE ;
+INT CONST no parity :: 0,
+ even parity :: 3,
+ odd parity :: 1;
+
+REAL VAR clk frequency := 12288000.0 ; (* Oszillatorfrequenz *)
+LET offset = 0 ;
+
+PROC quartz (REAL CONST wert) :
+ clk frequency := wert
+ENDPROC quartz ;
+
+REAL PROC quartz :
+ clk frequency
+ENDPROC quartz ;
+
+PROC setup (BOOL CONST channel, INT CONST parity,
+ REAL CONST stopbits, INT CONST bits,
+ BOOL CONST dtr, rts, auto dtr, auto cts) :
+
+(* Parameter mssen zusammen gesetzt werden, da die Register keine
+ Read-Register sind. Alte Werte mssen ausserhalb des SCC's gespeichert
+ werden. *)
+
+ INT VAR value := 64 ;
+ value INCR parity value ;
+ value INCR stopbit value ;
+
+ register (channel, 3, 0) ;
+ register (channel, 5, 32 * bits value) ;
+ register (channel,14, 2) ;
+
+ register (channel, 4, value) ;
+ register (channel, 5, 8 + dtr value + rts value + 32 * bits value) ;
+ register (channel,14, 3 + auto dtr value) ;
+ register (channel, 3, 1 + 64 * bits value + auto cts value) .
+
+bits value :
+ IF bits <= 5 THEN 0
+ ELIF bits >= 8 THEN 3
+ ELIF bits = 6 THEN 2
+ ELSE 1
+ FI .
+
+parity value :
+ IF parity >= 0 AND parity <= 3 THEN parity ELSE 0 FI .
+
+stopbit value :
+ IF stopbits = 1.0 THEN 4
+ ELIF stopbits = 1.5 THEN 8
+ ELIF stopbits = 2.0 THEN 12
+ ELSE 4
+ FI .
+
+dtr value :
+ IF dtr THEN 128 ELSE 0 FI .
+
+rts value :
+ IF rts THEN 2 ELSE 0 FI .
+
+auto cts value :
+ IF auto cts THEN 32 ELSE 0 FI .
+
+auto dtr value :
+ IF auto dtr THEN 4 ELSE 0 FI .
+
+ENDPROC setup ;
+
+PROC baudrate (BOOL CONST channel, REAL CONST rate) :
+ INT CONST time constant :: int (clk frequency / (64.0 * rate) + 0.5) - 2 ;
+ register (channel, 13, time constant DIV 256) ;
+ register (channel, 12, time constant AND 255)
+ENDPROC baudrate ;
+
+REAL PROC baudrate (BOOL CONST channel) :
+ INT CONST time constant ::
+ register (channel, 12) + 256 * register (channel, 13) ;
+ round (clk frequency / (real (time constant + 2) * 64.0), 1)
+ENDPROC baudrate ;
+
+
+(*********************************************************************)
+(********* S C C - Z u g r i f f s p r o z e d u r e n ********)
+(*********************************************************************)
+
+
+INT PROC read port (INT CONST port) :
+ INT VAR value ;
+ control (-1, offset + port, -1, value) ;
+ IF value = -1 THEN errorstop ("SCC - Read failed") ; 0
+ ELSE value
+FI .
+
+ENDPROC read port ;
+
+PROC write port (INT CONST port, value) :
+ INT VAR rcode, my channel := channel ;
+ continue (32) ;
+ control (-1, offset + port, value, r code) ;
+ continue (my channel) ;
+ IF r code = -1 THEN errorstop ("SCC - Write failed") FI
+ENDPROC write port ;
+
+INT PROC register (BOOL CONST is channel a, INT CONST register x) :
+ INT VAR value ;
+ IF is channel a
+ THEN write port (1, registerx) ;
+ read port (1)
+ ELSE write port (0, registerx) ;
+ read port (0)
+ FI
+ENDPROC register ;
+
+
+PROC register (BOOL CONST is channel a, INT CONST register x, wert):
+ IF is channel a
+ THEN write port (1, register x) ;
+ write port (1, wert)
+ ELSE write port (0, register x) ;
+ write port (0, wert)
+ FI
+ENDPROC register ;
+
+ENDPACKET scc ;
+
+
diff --git a/system/ruc-terminal/unknown/src/SETUP.ELA b/system/ruc-terminal/unknown/src/SETUP.ELA
new file mode 100644
index 0000000..3e2f3e7
--- /dev/null
+++ b/system/ruc-terminal/unknown/src/SETUP.ELA
@@ -0,0 +1,257 @@
+PACKET setup DEFINES setup : (* 02.03.86, M.Staubermann *)
+
+LET separator = "|" ,
+ old option mark = " " , (* ""16"" , *)
+ choice mark = ""15"" ,
+ end mark = ""14"" ,
+ left = ""8"" ,
+ right = ""2"" ,
+ bottom = ""6""21""0"" ,
+ clr line = ""13""5"" ,
+ home = ""1"" ;
+
+PROC selektor (TEXT CONST options, INT VAR option number,BOOL CONST warten) :
+ TEXT VAR zeichen ;
+ INT VAR i ,
+ last separator pos ,
+ new separator pos := 0 ,
+ old option := option number ,
+ max options := 0 ;
+ REP
+ new separator pos := pos (options, separator, new separator pos +1) ;
+ max options INCR 1
+ UNTIL new separator pos = 0 PER ;
+ out (""13"") ;
+ REP
+ i := 0 ;
+ last separator pos := 0 ;
+ REP
+ i INCR 1 ;
+ new separator pos := pos (options, separator, last separator pos + 1) ;
+ IF new separator pos = 0
+ THEN new separator pos := LENGTH options + 1
+ FI ;
+ IF i = option number
+ THEN out (choice mark)
+ ELIF i = old option
+ THEN out (old option mark)
+ ELSE out (end mark)
+ FI ;
+ out subtext (options, last separator pos + 1, new separator pos - 1) ;
+ out (end mark) ;
+ last separator pos := new separator pos
+ UNTIL last separator pos = LENGTH options + 1 PER ;
+ out (""13"") ;
+ IF warten
+ THEN inchar (zeichen) ;
+ IF zeichen = ""27""
+ THEN option number := old option
+ ELIF zeichen = left AND option number = 1
+ THEN option number := max options
+ ELIF zeichen = left
+ THEN option number DECR 1
+ ELIF zeichen = right AND option number = max options
+ THEN option number := 1
+ ELIF zeichen = right
+ THEN option number INCR 1
+ FI
+ ELSE zeichen := ""13""
+ FI
+ UNTIL zeichen = ""13"" OR zeichen = ""27"" PER
+ENDPROC selektor ;
+
+LET std datenbits = 4 , (* 8 *)
+ std stopbits = 1 , (* 1.0 *)
+ std flowmode = 1 , (* xon/xoff *)
+ std parity = 1 , (* no parity *)
+ std fixed = 4 , (* RTS ON, DTR ON *)
+
+ setup text = "Ende|Kanal|Baudrate|Datenbits|Stopbits|Parity|Fluákontrolle",
+ ende text = "Žndern|Abbruch" ,
+ kanal text = "2|3" ,
+ datenbits text= "5|6|7|8" ,
+ stopbits text = "1.0|1.5|2.0" ,
+ parity text = "no|even|odd" ,
+ fixed text = "DTR OFF/RTS OFF|DTR OFF/RTS ON|DTR ON/RTS OFF|DTR ON/RTS ON" ,
+ flowmode text = "xon/xoff|dtr|rts/cts|dtr/rts/cts|fixed" ;
+
+INT VAR old session := 0 ;
+ROW 2 INT VAR datenbits, stopbits, parity, flowmode , fixed ;
+ROW 2 REAL VAR baudrates ;
+
+PROC init params :
+ datenbits := ROW 2 INT:(std datenbits , std datenbits) ;
+ stopbits := ROW 2 INT:(std stopbits , std stopbits) ;
+ parity := ROW 2 INT:(std parity , std parity) ;
+ flowmode := ROW 2 INT:(std flowmode , std flowmode) ;
+ fixed := ROW 2 INT:(std fixed, std fixed) ;
+ baudrates := ROW 2REAL:(baudrate (channelb), baudrate (channela)) ;
+ENDPROC init params ;
+
+PROC setup :
+ INT VAR kanal := aktueller kanal ,
+ setup choice := 1 ;
+ BOOL VAR x dtr, x rts, x auto dtr, x cts ;
+ page ;
+ init setup (kanal, setup choice) ;
+ select setup choice ;
+ cursor (1, 19) ;
+ setup choice := 2 ;
+ selektor (ende text, setup choice, TRUE) ;
+ out (bottom) ;
+ IF setup choice = 1
+ THEN kanal := 1 ;
+ x flowmode ;
+ setup (kanal bool, x parity, x stopbits, x datenbits,
+ x dtr, x rts, x auto dtr, x cts) ;
+ baudrate (kanal bool, baudrates (kanal)) ;
+ kanal := 2 ;
+ x flowmode ;
+ setup (kanal bool, x parity, x stopbits, x datenbits,
+ x dtr, x rts, x auto dtr, x cts) ;
+ baudrate (kanal bool, baudrates (kanal))
+ FI .
+
+x flowmode :
+ x dtr := FALSE ;
+ x rts := FALSE ;
+ SELECT flowmode (kanal) OF
+ CASE 1 : x auto dtr := FALSE ; (* XON/XOFF *)
+ x cts := FALSE
+ CASE 2 : x auto dtr := TRUE ; (* DTR *)
+ x cts := FALSE
+ CASE 3 : x auto dtr := FALSE ; (* RTS/CTS *)
+ x cts := TRUE
+ CASE 4 : x auto dtr := TRUE ; (* RTS/CTS/DTR *)
+ x cts := TRUE
+ CASE 5 : x auto dtr := FALSE ; (* fixed *)
+ x cts := FALSE ;
+ SELECT fixed (kanal) OF
+ CASE 1 : x dtr := FALSE ; (* wie XON/XOFF *)
+ x rts := FALSE
+ CASE 2 : x dtr := FALSE ; (* RTS=1 *)
+ x rts := TRUE
+ CASE 3 : x dtr := TRUE ; (* DTR=1 *)
+ x rts := FALSE
+ CASE 4 : x dtr := TRUE ; (* RTS=1,DTR=1 *)
+ x rts := TRUE
+ ENDSELECT
+ENDSELECT.
+
+x parity :
+ SELECT parity (kanal) OF
+ CASE 2 : even parity
+ CASE 3 : odd parity
+ OTHERWISE no parity
+ ENDSELECT.
+
+x stopbits :
+ SELECT stopbits (kanal) OF
+ CASE 2 : 1.5
+ CASE 3 : 2.0
+ OTHERWISE 1.0
+ ENDSELECT.
+
+x datenbits :
+ datenbits (kanal) + 4.
+
+select setup choice :
+ REP
+ cursor (1, 5) ;
+ selektor (setup text, setup choice, TRUE) ;
+ SELECT setup choice OF
+ CASE 1 : LEAVE select setup choice
+ CASE 2 : select kanal choice
+ CASE 3 : select baudrate choice
+ CASE 4 : select datenbits choice
+ CASE 5 : select stopbits choice
+ CASE 6 : select parity choice
+ CASE 7 : select flowmode choice
+ ENDSELECT
+ PER .
+
+select kanal choice :
+ INT VAR save kanal := kanal ;
+ cursor (1, 7) ;
+ selektor (kanal text, kanal, TRUE) ;
+ init setup (kanal, setup choice) .
+
+select baudrate choice :
+ cursor (1, 9) ;
+ TEXT VAR t := text (baudrates (kanal)) + " " ;
+ out (" ") ;
+ editget (t) ;
+ baudrates (kanal) := real (t) .
+
+select datenbits choice :
+ cursor (1, 11) ;
+ selektor (datenbits text, datenbits (kanal), TRUE) .
+
+select stopbits choice :
+ cursor (1, 13) ;
+ selektor (stopbits text, stopbits (kanal), TRUE) .
+
+select parity choice :
+ cursor (1, 15) ;
+ selektor (parity text, parity (kanal), TRUE).
+
+select flowmode choice :
+ cursor (1, 17) ;
+ selektor (flowmode text, flowmode (kanal), TRUE) ;
+ IF flowmode (kanal) = 5
+ THEN cursor (1, 19) ;
+ selektor (fixed text, fixed (kanal), TRUE) ;
+ out (clr line)
+ FI .
+
+aktueller kanal :
+ IF channel = 2 THEN 1
+ ELIF channel = 3 THEN 2
+ ELSE 1
+ FI .
+
+kanal bool :
+ IF kanal = 1 THEN channel b ELSE channel a FI .
+
+ENDPROC setup ;
+
+PROC init setup (INT VAR kanal, setup choice) :
+ IF session <> old session
+ THEN init params ;
+ old session := session
+ FI ;
+ out (home) ;
+ putline (" ----------------------------- V 2 4 - S E T U P ---------------------------") ;
+ line ;
+ putline (" Verlassen 'ESC', Aussuchen 'LEFT' und 'RIGHT', Einstellen 'RETURN'") ;
+ line ;
+ selektor (setup text, setup choice, FALSE) ;
+ line ;
+ line ;
+ selektor (kanal text, kanal, FALSE) ;
+ line ;
+ line ;
+ out (" ") ; put (baudrates (kanal)) ; out (" ") ;
+ line ;
+ line ;
+ selektor (datenbits text, datenbits (kanal), FALSE) ;
+ line ;
+ line ;
+ selektor (stopbits text, stopbits (kanal), FALSE) ;
+ line ;
+ line ;
+ selektor (parity text, parity (kanal), FALSE) ;
+ line ;
+ line ;
+ selektor (flowmode text, flowmode (kanal), FALSE) ;
+ line ;
+ line ;
+ line ;
+ line ;
+ putline (" --------------------------------------------------------------------------") ;
+ out (home) .
+ENDPROC init setup ;
+
+ENDPACKET setup ;
+
+
diff --git a/system/ruc-terminal/unknown/src/Terminal108(ascii) b/system/ruc-terminal/unknown/src/Terminal108(ascii)
new file mode 100644
index 0000000..71e335c
--- /dev/null
+++ b/system/ruc-terminal/unknown/src/Terminal108(ascii)
@@ -0,0 +1,121 @@
+ (* Terminaltyp: Terminal108 *)
+ (* Keyboard : Deutsch *)
+ (* Zeichensatz: ASCII *)
+ (* Stand : 28.04.86 *)
+
+forget ("Terminal108(ascii)", quiet) ;
+new type ("Terminal108(ascii)") ;
+
+cursor logic (32, ""30"", "", "") ;
+
+(* Nicht im EUMEL-Zeichensatz definierte Steuerzeichen *)
+illegal (11, 12) ;
+illegal (16, 31) ;
+illegal (128, 213) ;
+illegal (224, 250) ;
+illegal (252, 255) ;
+
+enter outcode ( 1, 25) ; (* Cursor Home *)
+enter outcode ( 2, 28) ; (* Cursor right *)
+enter outcode ( 3, 31) ; (* Cursor up *)
+enter outcode ( 4, 11) ; (* Clear EOP *)
+enter outcode ( 5, 29) ; (* Clear EOL *)
+enter outcode ( 7, 7) ; (* Bell *)
+enter outcode (14, 0, " "14"") ; (* Norm Vid *)
+enter outcode (15, 0, ""15" ") ; (* Inv Vid *)
+
+enter outcode (214, 193) ; (* Inv A *)
+enter outcode (215, 207) ; (* Inv O *)
+enter outcode (216, 213) ; (* Inv U *)
+enter outcode (217, 225) ; (* Inv a *)
+enter outcode (218, 239) ; (* Inv o *)
+enter outcode (219, 245) ; (* Inv u *)
+enter outcode (220, 235) ; (* Inv k *)
+enter outcode (221, 173) ; (* Inv - *)
+enter outcode (222, 163) ; (* Inv # *)
+enter outcode (223, 160) ; (* Inv Blank *)
+enter outcode (251, 194) ; (* Inv B *)
+
+enter outcode (64, 0, ""1"B"64"") ; (* ""1"B" = ASCII *)
+enter outcode (91, 0, ""1"B"91"") ;
+enter outcode (92, 0, ""1"B"92"") ;
+enter outcode (93, 0, ""1"B"93"") ;
+enter outcode (123,0, ""1"B"123"") ;
+enter outcode (124,0, ""1"B"124"") ;
+enter outcode (125,0, ""1"B"125"") ;
+enter outcode (126,0, ""1"B"126"") ;
+(*
+enter outcode (12, 12) ; (* CLR SCRN *)
+enter outcode (16, 2) ; (* Cursor Mode <mode> *)
+enter outcode (17, 1) ; (* Zeichensatz <switch> : Bit 0..3 *)
+enter outcode (18, 18) ; (* Insert Line *)
+enter outcode (19, 26) ; (* Erase (nicht Delete) Line *)
+enter outcode (20, 5) ; (* xpos := 80 *)
+enter outcode (22, 22) ; (* Select Screen <nr> : Bit 0 *)
+enter outcode (23, 23) ; (*SetWindow <left><top><right+1><bottom+1> (+128)*)
+*)
+enter incode ( 1, ""192"") ; (* Home : Cursorblock mitte *)
+enter incode ( 2, ""149"") ; (* Cursor right: Cursorblock mitte rechts *)
+enter incode ( 3, ""139"") ; (* Cursor up : Cursorblock oben mitte *)
+(*enter incode (4, ""21"") ; (* Info usw. : Cursorblock unten rechts*) *)
+enter incode ( 7, ""194"") ; (* SV - Call : Funktionstaste F2 *)
+enter incode ( 8, ""136"") ; (* Cursor left : Cursorblock mitte links *)
+enter incode ( 10, ""138"") ; (* Cursor down : Cursorblock unten mitte *)
+enter incode ( 11, ""142"") ; (* RUBIN/Insert: Cursorblock oben links *)
+enter incode ( 12, ""127"") ; (* RUBOUT/Delete:DELETE-Taste *)
+enter incode ( 16, ""143"") ; (* MARK : Cursorblock oben rechts *)
+enter incode ( 17, ""193"") ; (* Stop : Funktionstaste F1 *)
+enter incode ( 23, ""195"") ; (* Weiter : Funktionstaste F3 *)
+enter incode ( 31, ""8"") ; (* Backspace : (2x) gerahmter Linkspfeil *)
+
+enter incode (214, ""91"") ;
+enter incode (215, ""92"") ;
+enter incode (216, ""93"") ;
+enter incode (217, ""123"") ;
+enter incode (218, ""124"") ;
+enter incode (219, ""125"") ;
+enter incode (251, ""126"") ;
+
+enter incode ( 0, ""24"") ; (* CE *)
+enter incode ( 5, ""196"") ; (* F4 *)
+enter incode ( 6, ""197"") ; (* F5 *)
+enter incode (14, ""198"") ; (* F6 *)
+enter incode (15, ""199"") ; (* F7 *)
+enter incode (18, ""200"") ; (* F8 *)
+enter incode (19, ""201"") ; (* F9 *)
+enter incode (20, ""202"") ; (* F10 *)
+enter incode (21, ""203"") ; (* F11 *)
+enter incode (22, ""204"") ; (* F12 *)
+enter incode (24, ""205"") ; (* F13 *)
+enter incode (25, ""206"") ; (* F14 *)
+enter incode (26, ""207"") ; (* F15 *)
+enter incode (28, ""209"") ; (* SHIFT F1 *)
+enter incode (29, ""210"") ; (* SHIFT F2 *)
+enter incode (30, ""211"") ; (* SHIFT F3 *)
+
+enter incode (126,""165"") ; (* CTRL F5 *)
+enter incode (91, ""166"") ; (* CTRL F6 *)
+enter incode (92, ""167"") ; (* CTRL F7 *)
+enter incode (93, ""168"") ; (* CTRL F8 *)
+enter incode (123,""169"") ; (* CTRL F9 *)
+enter incode (124,""170"") ; (* CTRL F10 *)
+enter incode (125,""171"") ; (* CTRL F11 *)
+
+enter incode (251, ""213"") ; (* SHIFT F5 = á *)
+ (* SHIFT F6 = „
+Andere incodes schon Hardware- SHIFT F7 = ”
+m„áig implementiert: SHIFT F8 = 
+ SHIFT F9 = Ž
+ SHIFT F10= ™
+ SHIFT F11= š
+ SHIFT F12= Trenn-k ( k )
+ SHIFT F13= Trenn-Strich ( - )
+ SHIFT F14= Geschtztes Fis ( # )
+ SHIFT F15= Geschtztes Blank ( ) *)
+
+PROC illegal (INT CONST from, to) :
+ INT VAR i ;
+ FOR i FROM from UPTO to REP
+ enter outcode (i, 127)
+ PER
+ENDPROC illegal ;
diff --git a/system/ruc-terminal/unknown/src/Terminal108(deutsch) b/system/ruc-terminal/unknown/src/Terminal108(deutsch)
new file mode 100644
index 0000000..b6fcfcf
--- /dev/null
+++ b/system/ruc-terminal/unknown/src/Terminal108(deutsch)
@@ -0,0 +1,122 @@
+ (* Terminaltyp: Terminal108 *)
+ (* Keyboard : Deutsch *)
+ (* Zeichensatz: Deutsch *)
+ (* Stand : 28.04.86 *)
+
+forget ("Terminal108(deutsch)", quiet) ;
+new type ("Terminal108(deutsch)") ;
+
+cursor logic (32, ""30"", "", "") ;
+
+(* Nicht im EUMEL-Zeichensatz definierte Steuerzeichen *)
+illegal (11, 12) ;
+illegal (16, 31) ;
+illegal (128, 213) ;
+illegal (224, 250) ;
+illegal (252, 255) ;
+
+enter outcode (91, 0, ""15"("14"") ;
+enter outcode (92, 0, ""15"/"14"") ;
+enter outcode (93, 0, ""15")"14"") ;
+enter outcode (123, 0, ""15"<"14"") ;
+enter outcode (124, 0, ""15"!"14"") ;
+enter outcode (125, 0, ""15">"14"") ;
+enter outcode (126, 0, ""15"`"14"") ;
+
+enter outcode (214, 0, ""1"D"91"") ; (* ""1"D" = Deutsch *)
+enter outcode (215, 0, ""1"D"92"") ;
+enter outcode (216, 0, ""1"D"93"") ;
+enter outcode (217, 0, ""1"D"123"") ;
+enter outcode (218, 0, ""1"D"124"") ;
+enter outcode (219, 0, ""1"D"125"") ;
+enter outcode (220, 235) ; (* Inv k *)
+enter outcode (221, 173) ; (* Inv - *)
+enter outcode (222, 163) ; (* Inv # *)
+enter outcode (223, 160) ; (* Inv Blank *)
+enter outcode (251, 0, ""1"D"126"") ;
+
+enter outcode ( 1, 25) ; (* Cursor Home *)
+enter outcode ( 2, 28) ; (* Cursor right *)
+enter outcode ( 3, 31) ; (* Cursor up *)
+enter outcode ( 4, 11) ; (* Clear EOP *)
+enter outcode ( 5, 29) ; (* Clear EOL *)
+enter outcode ( 7, 7) ; (* Bell *)
+enter outcode (14, 0, " "14"") ; (* Norm Vid *)
+enter outcode (15, 0, ""15" ") ; (* Inv Vid *)
+(*
+enter outcode (12, 12) ; (* CLR SCRN *)
+enter outcode (16, 2) ; (* Cursor Mode <mode> *)
+enter outcode (17, 1) ; (* Zeichensatz <switch> : Bit 0..3 *)
+enter outcode (18, 18) ; (* Insert Line *)
+enter outcode (19, 26) ; (* Erase (nicht Delete) Line *)
+enter outcode (20, 5) ; (* xpos := 80 *)
+enter outcode (22, 22) ; (* Select Screen <nr> : Bit 0 *)
+enter outcode (23, 23) ; (*SetWindow <left><top><right+1><bottom+1> (+128)*)
+*)
+enter incode ( 1, ""192"") ; (* Home : Cursorblock mitte *)
+enter incode ( 2, ""149"") ; (* Cursor right: Cursorblock mitte rechts *)
+enter incode ( 3, ""139"") ; (* Cursor up : Cursorblock oben mitte *)
+(*enter incode (4, ""21"") ; (* Info usw. : Cursorblock unten rechts*) *)
+enter incode ( 7, ""194"") ; (* SV - Call : Funktionstaste F2 *)
+enter incode ( 8, ""136"") ; (* Cursor left : Cursorblock mitte links *)
+enter incode ( 10, ""138"") ; (* Cursor down : Cursorblock unten mitte *)
+enter incode ( 11, ""142"") ; (* RUBIN/Insert: Cursorblock oben links *)
+enter incode ( 12, ""127"") ; (* RUBOUT/Delete:DELETE-Taste *)
+enter incode ( 16, ""143"") ; (* MARK : Cursorblock oben rechts *)
+enter incode ( 17, ""193"") ; (* Stop : Funktionstaste F1 *)
+enter incode ( 23, ""195"") ; (* Weiter : Funktionstaste F3 *)
+enter incode ( 31, ""8"") ; (* Backspace : (2x) gerahmter Linkspfeil *)
+
+enter incode (214, ""91"") ;
+enter incode (215, ""92"") ;
+enter incode (216, ""93"") ;
+enter incode (217, ""123"") ;
+enter incode (218, ""124"") ;
+enter incode (219, ""125"") ;
+enter incode (251, ""126"") ;
+
+enter incode ( 0, ""24"") ; (* CE *)
+enter incode ( 5, ""196"") ; (* F4 *)
+enter incode ( 6, ""197"") ; (* F5 *)
+enter incode (14, ""198"") ; (* F6 *)
+enter incode (15, ""199"") ; (* F7 *)
+enter incode (18, ""200"") ; (* F8 *)
+enter incode (19, ""201"") ; (* F9 *)
+enter incode (20, ""202"") ; (* F10 *)
+enter incode (21, ""203"") ; (* F11 *)
+enter incode (22, ""204"") ; (* F12 *)
+enter incode (24, ""205"") ; (* F13 *)
+enter incode (25, ""206"") ; (* F14 *)
+enter incode (26, ""207"") ; (* F15 *)
+enter incode (28, ""209"") ; (* SHIFT F1 *)
+enter incode (29, ""210"") ; (* SHIFT F2 *)
+enter incode (30, ""211"") ; (* SHIFT F3 *)
+
+enter incode (126,""165"") ; (* CTRL F5 *)
+enter incode (91, ""166"") ; (* CTRL F6 *)
+enter incode (92, ""167"") ; (* CTRL F7 *)
+enter incode (93, ""168"") ; (* CTRL F8 *)
+enter incode (123,""169"") ; (* CTRL F9 *)
+enter incode (124,""170"") ; (* CTRL F10 *)
+enter incode (125,""171"") ; (* CTRL F11 *)
+
+enter incode (251, ""213"") ; (* SHIFT F5 = á *)
+ (* SHIFT F6 = „
+Andere incodes schon Hardware- SHIFT F7 = ”
+m„áig implementiert: SHIFT F8 = 
+ SHIFT F9 = Ž
+ SHIFT F10= ™
+ SHIFT F11= š
+ SHIFT F12= Trenn-k ( k )
+ SHIFT F13= Trenn-Strich ( - )
+ SHIFT F14= Geschtztes Fis ( # )
+ SHIFT F15= Geschtztes Blank ( ) *)
+
+PROC illegal (INT CONST from, to) :
+ INT VAR i ;
+ FOR i FROM from UPTO to REP
+ enter outcode (i, 127)
+ PER
+ENDPROC illegal ;
+
+
diff --git a/system/ruc-terminal/unknown/src/ructerm.apl-german b/system/ruc-terminal/unknown/src/ructerm.apl-german
new file mode 100644
index 0000000..9b4bdf1
--- /dev/null
+++ b/system/ruc-terminal/unknown/src/ructerm.apl-german
@@ -0,0 +1,125 @@
+ (* Terminaltyp: ructerm *)
+ (* Keyboard : Deutsch *)
+ (* Zeichensatz: Universal*)
+ (* Stand : 08.10.86 *)
+ (* Mit 'info'-Taste auf => *)
+
+forget ("ructerm.apl/german", quiet) ;
+new type ("ructerm.apl/german") ;
+
+enter outcode (11, 253) ; (* links Pfeil *)
+enter outcode (12, 221) ; (* rechts Pfeil *)
+enter outcode (16, 240) ;
+enter outcode (17, 241) ;
+enter outcode (18, 242) ;
+enter outcode (19, 243) ;
+enter outcode (20, 244) ;
+enter outcode (21, 245) ;
+enter outcode (22, 246) ;
+enter outcode (23, 247) ;
+enter outcode (24, 248) ;
+
+cursor logic (32, ""27"=", "", "") ;
+
+(* Ausgabe Codes : *)
+enter outcode ( 1, 30) ; (* Cursor Home : <CTRL-^> *)
+enter outcode ( 2, 12) ; (* Cursor right: <CTRL-L> *)
+enter outcode ( 3, 11) ; (* Cursor up : <CTRL-K> *)
+enter outcode ( 4, 0, ""27"Y"27"z7") ; (* CLEOP und Zeichensatz : <ESC> Y *)
+enter outcode ( 5, 0, ""27"T") ; (* CLEOL : <ESC> T *)
+enter outcode ( 8, 8) ; (* Cursor left : <CTRL-H> *)
+enter outcode ( 10, 10) ; (* Cursor down : <LF> *)
+enter outcode ( 13, 13) ; (* CR : <CR> *)
+enter outcode ( 14, 175) ; (* END MARK : Spitz. Klammer zu *)
+enter outcode ( 15, 192) ; (* BEGIN MARK : Spitz. Klammer auf *)
+
+enter outcode (214, 91) ; (* Ae *)
+enter outcode (215, 92) ; (* Oe *)
+enter outcode (216, 93) ; (* Ue *)
+enter outcode (217, 123) ; (* ae *)
+enter outcode (218, 124) ; (* oe *)
+enter outcode (219, 125) ; (* ue *)
+enter outcode (220, 235) ; (* Trenn-k *)
+enter outcode (221, 191) ; (* Trennstrich *)
+enter outcode (222, 188) ; (* Fest-# = Raute *)
+enter outcode (223, 160) ; (* Fest-Blank *)
+enter outcode (251, 126) ; (* sz *)
+enter outcode (252, 64) ; (* paragraph *)
+
+enter outcode (64, 131) ; (* At-Sign *)
+enter outcode (91, 252) ; (* Eck. Klammer auf *)
+enter outcode (92, 223) ; (* Backslash *)
+enter outcode (93, 251) ; (* Eck. Klammer zu *)
+enter outcode (123, 167) ; (* Geschw. Klammer auf *)
+enter outcode (124, 205) ; (* Senkr. Strich *)
+enter outcode (125, 163) ; (* Geschw. Klammer zu *)
+enter outcode (126, 212) ; (* Tilde *)
+
+enter outcode (144, 214) ; (* Zeichen mit Umlautcodes *)
+enter outcode (145, 215) ; (* verlegen *)
+enter outcode (146, 216) ;
+enter outcode (147, 217) ;
+enter outcode (148, 218) ;
+enter outcode (149, 219) ;
+enter outcode (150, 220) ;
+enter outcode (151, 221) ;
+enter outcode (152, 222) ;
+
+enter incode ( 1, ""192"") ; (* Home : Cursorblock mitte *)
+enter incode ( 2, ""149"") ; (* Cursor right: Cursorblock mitte rechts *)
+enter incode ( 3, ""139"") ; (* Cursor up : Cursorblock oben mitte *)
+enter incode ( 4, ""21"") ; (* Info usw. : Cursorblock unten rechts *)
+enter incode ( 7, ""194"") ; (* SV - Call : Funktionstaste F2 *)
+enter incode ( 8, ""136"") ; (* Cursor left : Cursorblock mitte links *)
+enter incode ( 10, ""138"") ; (* Cursor down : Cursorblock unten mitte *)
+enter incode ( 11, ""142"") ; (* RUBIN/Insert: Cursorblock oben links *)
+enter incode ( 12, ""127"") ; (* RUBOUT/Delete:DELETE-Taste *)
+enter incode ( 16, ""143"") ; (* MARK : Cursorblock oben rechts *)
+enter incode ( 17, ""193"") ; (* Stop : Funktionstaste F1 *)
+enter incode ( 23, ""195"") ; (* Weiter : Funktionstaste F3 *)
+enter incode ( 31, ""8"") ; (* Backspace : (2x) gerahmter Linkspfeil *)
+
+enter incode (214, ""91"") ;
+enter incode (215, ""92"") ;
+enter incode (216, ""93"") ;
+enter incode (217, ""123"") ;
+enter incode (218, ""124"") ;
+enter incode (219, ""125"") ;
+enter incode (251, ""126"") ;
+
+enter incode ( 0, ""24"") ; (* CE *)
+enter incode ( 5, ""196"") ; (* F4 *)
+enter incode ( 6, ""197"") ; (* F5 *)
+enter incode (14, ""198"") ; (* F6 *)
+enter incode (15, ""199"") ; (* F7 *)
+enter incode (18, ""200"") ; (* F8 Insert Line *)
+enter incode (19, ""201"") ; (* F9 *)
+enter incode (20, ""202"") ; (* F10 *)
+enter incode (21, ""203"") ; (* F11 *)
+enter incode (22, ""204"") ; (* F12 *)
+enter incode (24, ""205"") ; (* F13 *)
+enter incode (25, ""206"") ; (* F14 *)
+enter incode (26, ""207"") ; (* F15 *)
+enter incode (28, ""209"") ; (* SHIFT F1 *)
+enter incode (29, ""210"") ; (* SHIFT F2 *)
+enter incode (30, ""211"") ; (* SHIFT F3 *)
+
+enter incode (126,""165"") ; (* CTRL F5 *)
+enter incode (91, ""166"") ; (* CTRL F6 *)
+enter incode (92, ""167"") ; (* CTRL F7 *)
+enter incode (93, ""168"") ; (* CTRL F8 *)
+enter incode (123,""169"") ; (* CTRL F9 *)
+enter incode (124,""170"") ; (* CTRL F10 *)
+enter incode (125,""171"") ; (* CTRL F11 *)
+
+ (* SHIFT F6 = „
+Andere incodes schon Hardware- SHIFT F7 = ”
+m„áig implementiert: SHIFT F8 = 
+ SHIFT F9 = Ž
+ SHIFT F10= ™
+ SHIFT F11= š
+ SHIFT F12= Trenn-k ( k )
+ SHIFT F13= Trenn-Strich ( - )
+ SHIFT F14= Geschtztes Fis ( # )
+ SHIFT F15= Geschtztes Blank ( ) *)
+
diff --git a/system/ruc-terminal/unknown/src/ructerm.ascii b/system/ruc-terminal/unknown/src/ructerm.ascii
new file mode 100644
index 0000000..4b5cddd
--- /dev/null
+++ b/system/ruc-terminal/unknown/src/ructerm.ascii
@@ -0,0 +1,94 @@
+ (* Terminaltyp: ructerm *)
+ (* Keyboard : Deutsch *)
+ (* Zeichensatz: Ascii *)
+ (* Stand : 08.10.86 *)
+ (* Mit 'info'-Taste auf => *)
+
+forget ("ructerm.ascii", quiet) ;
+new type ("ructerm.ascii") ;
+
+cursor logic (32, ""27"=", "", "") ;
+
+(* Ausgabe Codes : *)
+enter outcode ( 1, 30) ; (* Cursor Home : <CTRL-^> *)
+enter outcode ( 2, 12) ; (* Cursor right: <CTRL-L> *)
+enter outcode ( 3, 11) ; (* Cursor up : <CTRL-K> *)
+enter outcode ( 4, 0, ""27"Y") ; (* CLEOP : <ESC> Y *)
+enter outcode ( 5, 0, ""27"T") ; (* CLEOL : <ESC> T *)
+enter outcode ( 8, 8) ; (* Cursor left : <CTRL-H> *)
+enter outcode ( 10, 10) ; (* Cursor down : <LF> *)
+enter outcode ( 13, 13) ; (* CR : <CR> *)
+enter outcode ( 14, 0, " "27"(") ; (* END MARK : <ESC> ( *)
+enter outcode ( 15, 0, ""27") ") ; (* BEGIN MARK : <ESC> ) *)
+
+enter outcode (214, 193) ; (* Ae *)
+enter outcode (215, 207) ; (* Oe *)
+enter outcode (216, 213) ; (* Ue *)
+enter outcode (217, 225) ; (* ae *)
+enter outcode (218, 239) ; (* oe *)
+enter outcode (219, 245) ; (* ue *)
+enter outcode (220, 235) ; (* Trenn-k *)
+enter outcode (221, 173) ; (* Trennstrich *)
+enter outcode (222, 163) ; (* Fest-# *)
+enter outcode (223, 160) ; (* Fest-Blank *)
+enter outcode (251, 194) ; (* sz *)
+enter outcode (252, 192) ; (* paragraph *)
+
+enter incode ( 1, ""192"") ; (* Home : Cursorblock mitte *)
+enter incode ( 2, ""149"") ; (* Cursor right: Cursorblock mitte rechts *)
+enter incode ( 3, ""139"") ; (* Cursor up : Cursorblock oben mitte *)
+enter incode ( 4, ""21"") ; (* Info usw. : Cursorblock unten rechts *)
+enter incode ( 7, ""194"") ; (* SV - Call : Funktionstaste F2 *)
+enter incode ( 8, ""136"") ; (* Cursor left : Cursorblock mitte links *)
+enter incode ( 10, ""138"") ; (* Cursor down : Cursorblock unten mitte *)
+enter incode ( 11, ""142"") ; (* RUBIN/Insert: Cursorblock oben links *)
+enter incode ( 12, ""127"") ; (* RUBOUT/Delete:DELETE-Taste *)
+enter incode ( 16, ""143"") ; (* MARK : Cursorblock oben rechts *)
+enter incode ( 17, ""193"") ; (* Stop : Funktionstaste F1 *)
+enter incode ( 23, ""195"") ; (* Weiter : Funktionstaste F3 *)
+enter incode ( 31, ""8"") ; (* Backspace : (2x) gerahmter Linkspfeil *)
+
+enter incode (214, ""91"") ;
+enter incode (215, ""92"") ;
+enter incode (216, ""93"") ;
+enter incode (217, ""123"") ;
+enter incode (218, ""124"") ;
+enter incode (219, ""125"") ;
+enter incode (251, ""126"") ;
+
+enter incode ( 0, ""24"") ; (* CE *)
+enter incode ( 5, ""196"") ; (* F4 *)
+enter incode ( 6, ""197"") ; (* F5 *)
+enter incode (14, ""198"") ; (* F6 *)
+enter incode (15, ""199"") ; (* F7 *)
+enter incode (18, ""200"") ; (* F8 Insert Line *)
+enter incode (19, ""201"") ; (* F9 *)
+enter incode (20, ""202"") ; (* F10 *)
+enter incode (21, ""203"") ; (* F11 *)
+enter incode (22, ""204"") ; (* F12 *)
+enter incode (24, ""205"") ; (* F13 *)
+enter incode (25, ""206"") ; (* F14 *)
+enter incode (26, ""207"") ; (* F15 *)
+enter incode (28, ""209"") ; (* SHIFT F1 *)
+enter incode (29, ""210"") ; (* SHIFT F2 *)
+enter incode (30, ""211"") ; (* SHIFT F3 *)
+
+enter incode (126,""165"") ; (* CTRL F5 *)
+enter incode (91, ""166"") ; (* CTRL F6 *)
+enter incode (92, ""167"") ; (* CTRL F7 *)
+enter incode (93, ""168"") ; (* CTRL F8 *)
+enter incode (123,""169"") ; (* CTRL F9 *)
+enter incode (124,""170"") ; (* CTRL F10 *)
+enter incode (125,""171"") ; (* CTRL F11 *)
+
+ (* SHIFT F6 = „
+Andere incodes schon Hardware- SHIFT F7 = ”
+m„áig implementiert: SHIFT F8 = 
+ SHIFT F9 = Ž
+ SHIFT F10= ™
+ SHIFT F11= š
+ SHIFT F12= Trenn-k ( k )
+ SHIFT F13= Trenn-Strich ( - )
+ SHIFT F14= Geschtztes Fis ( # )
+ SHIFT F15= Geschtztes Blank ( ) *)
+