Machine-Independent MDL for TOPS-20 and VAX.
[pdp10-muddle.git] / mim / development / mim / vax / nvs / keymap.mud
1 <PACKAGE "KEYMAP">
2
3 <ENTRY DEFINE-NORMAL-KEY DEFINE-FUNCTION-KEY WRITE-MAPS>
4
5 <INCLUDE "KEYDEFS" "VSTYPES" "VSDEFS" "VSKEYDEFS">
6 <USE "VSINPUT">
7
8 <DEFINE WRITE-MAPS ("OPT" (WHERE:STRING ,X-DEFAULT-KEYMAP)
9                     "AUX" NM2:<SPECIAL STRING> 
10                     CH:<OR <CHANNEL 'DISK> FALSE>
11                     KN:FIX)
12    <COND
13     (<GASSIGNED? NORMAL-KEYS>
14      <SET NM2 "NORMAL">
15      <COND (<SET CH <GEN-OPEN .WHERE "CREATE" "BINARY" DISK>>
16             <SET KN ,KEY-MIN-NORM>
17             <CHANNEL-OP .CH WRITE-BYTE <LENGTH ,NORMAL-KEYS:VECTOR>>
18             <CHANNEL-OP .CH WRITE-BYTE .KN>
19             <MAPF <>
20              <FUNCTION (NK:<OR KEY FALSE>)
21                 <COND (.NK
22                        <CHANNEL-OP .CH WRITE-BYTE .KN>
23                        <CHANNEL-OP .CH WRITE-BUFFER .NK>)>
24                 <SET KN <+ .KN 1>>>
25              ,NORMAL-KEYS:VECTOR>
26             <CLOSE .CH>)
27            (T
28             <ERROR CANT-WRITE-KEY-FILE!-ERRORS <SYS-ERR .CH .WHERE T>
29                    WRITE-MAPS>)>)>
30    <COND
31     (<GASSIGNED? FUNCTION-KEYS>
32      <SET NM2 "FUNCTION">
33      <COND (<SET CH <GEN-OPEN .WHERE "CREATE" "BINARY" DISK>>
34             <SET KN ,KEY-MIN-FCN>
35             <CHANNEL-OP .CH WRITE-BYTE <LENGTH ,FUNCTION-KEYS:VECTOR>>
36             <CHANNEL-OP .CH WRITE-BYTE .KN>
37             <MAPF <>
38              <FUNCTION (NK:<OR KEY FALSE>)
39                 <COND (.NK
40                        <CHANNEL-OP .CH WRITE-BYTE .KN>
41                        <CHANNEL-OP .CH WRITE-BUFFER .NK>)>
42                 <SET KN <+ .KN 1>>>
43              ,FUNCTION-KEYS:VECTOR>
44             <CLOSE .CH>)
45            (T
46             <ERROR CANT-WRITE-KEY-FILE!-ERRORS <SYS-ERR .CH .WHERE T>
47                    WRITE-MAPS>)>)>>
48              
49
50 <DEFINE DEFINE-NORMAL-KEY (WHICH:ATOM NORM:CHARACTER SHIFT:CHARACTER "OPT"
51                            (LOCK?:<OR ATOM FALSE> T) 
52                            (CONTROL:<OR CHARACTER FALSE> <>)
53                            (CONTROL-SHIFT:<OR CHARACTER FALSE> <>)
54                            "AUX" KEYNO (NK <CHTYPE <IUVECTOR 5> KEY>))
55    <COND (<NOT <GASSIGNED? NORMAL-KEYS>>
56           <SETG NORMAL-KEYS <IVECTOR <+ 1 <- ,KEY-MAX-NORM ,KEY-MIN-NORM>>
57                                      <>>>)>
58    <COND (<OR <NOT <GASSIGNED? .WHICH>>
59               <NOT <TYPE? <SET KEYNO ,.WHICH> FIX>>>
60           <ERROR NO-SUCH-KEY!-ERRORS .WHICH DEFINE-NORMAL-KEY>)
61          (T
62           <SET KEYNO ,.WHICH>
63           <KD-NORM .NK <CHTYPE .NORM FIX>>
64           <KD-SHIFT .NK <CHTYPE .SHIFT FIX>>
65           <COND (.LOCK?
66                  <KD-LOCK .NK <CHTYPE .SHIFT FIX>>)
67                 (T
68                  <KD-LOCK .NK <CHTYPE .NORM FIX>>)>
69           <COND (.CONTROL
70                  <KD-CTRL .NK <CHTYPE .CONTROL FIX>>)
71                 (T
72                  <KD-CTRL .NK <ANDB *37* <ASCII .NORM>>>)>
73           <COND (.CONTROL-SHIFT
74                  <KD-CS .NK <CHTYPE .CONTROL-SHIFT FIX>>)
75                 (T
76                  <KD-CS .NK <KD-CTRL .NK>>)>
77           <PUT ,NORMAL-KEYS <- .KEYNO ,KEY-MIN-NORM -1>
78                .NK>)>>
79
80 <DEFINE DEFINE-FUNCTION-KEY (WHICH:ATOM NORM:<OR FIX CHARACTER>
81                              SHIFT:<OR FIX CHARACTER> "AUX" NK KEYNO)
82    <COND (<NOT <GASSIGNED? FUNCTION-KEYS>>
83           <SETG FUNCTION-KEYS <IVECTOR <- ,KEY-MAX-FCN ,KEY-MIN-FCN -1> <>>>)>
84    <COND (<OR <NOT <GASSIGNED? .WHICH>>
85               <NOT <TYPE? <SET KEYNO ,.WHICH> FIX>>>
86           <ERROR NO-SUCH-FUNCTION-KEY!-ERRORS .WHICH DEFINE-FUNCTION-KEY>)
87          (T
88           <SET NK <CHTYPE <IUVECTOR 5 0> KEY>>
89           <COND (<TYPE? .NORM FIX>
90                  <KD-NORM .NK <- .NORM>>)
91                 (T
92                  <KD-NORM .NK <CHTYPE .NORM FIX>>)>
93           <COND (<TYPE? .SHIFT FIX>
94                  <KD-SHIFT .NK <- .SHIFT>>)
95                 (T
96                  <KD-SHIFT .NK <CHTYPE .SHIFT FIX>>)>
97           <KD-LOCK .NK <KD-NORM .NK>>
98           <KD-CTRL .NK <KD-NORM .NK>>
99           <KD-CS .NK <KD-SHIFT .NK>>
100           <PUT ,FUNCTION-KEYS <- .KEYNO ,KEY-MIN-FCN -1> .NK>)>>
101
102 <COND
103  (<GASSIGNED? DEFINE-NORMAL-KEY>
104   <DEFINE-NORMAL-KEY KEY-RUBOUT <ASCII 127> <ASCII 127> <> <ASCII 127> <ASCII 127>>
105   <DEFINE-NORMAL-KEY KEY-RETURN <ASCII 13> <ASCII 13> <> <ASCII 13> <ASCII 13>>
106   <DEFINE-NORMAL-KEY KEY-TAB <ASCII 9> <ASCII 9> <> <ASCII 9> <ASCII 9>>
107   <DEFINE-NORMAL-KEY KEY-BACKQUOTE <ASCII 27> <ASCII 27> <> <ASCII 27> <ASCII 27>>
108   <DEFINE-NORMAL-KEY KEY-1 !\1 !\! <> !\1 !\!>
109   <DEFINE-NORMAL-KEY KEY-Q !\q !\Q T !\\11 <>>
110   <DEFINE-NORMAL-KEY KEY-A !\a !\A T !\\ 1 <>>
111   <DEFINE-NORMAL-KEY KEY-Z !\z !\Z T !\\1a <>>
112   <DEFINE-NORMAL-KEY KEY-2 !\2 !\@ <> !\2 !\@>
113   <DEFINE-NORMAL-KEY KEY-W !\w !\W T !\\17 <>>
114   <DEFINE-NORMAL-KEY KEY-S !\s !\S T !\\13 <>>
115   <DEFINE-NORMAL-KEY KEY-X !\x !\X T !\\18 <>>
116   <DEFINE-NORMAL-KEY KEY-3 !\3 !\# <> !\3 !\#>
117   <DEFINE-NORMAL-KEY KEY-E !\e !\E T !\\ 5 <>>
118   <DEFINE-NORMAL-KEY KEY-D !\d !\D T !\\ 4 <>>
119   <DEFINE-NORMAL-KEY KEY-C !\c !\C T !\\ 3 <>>
120   <DEFINE-NORMAL-KEY KEY-4 !\4 !\$ <> !\4 !\$>
121   <DEFINE-NORMAL-KEY KEY-R !\r !\R T !\\12 <>>
122   <DEFINE-NORMAL-KEY KEY-F !\f !\F T !\\ 6 <>>
123   <DEFINE-NORMAL-KEY KEY-V !\v !\V T !\\16 <>>
124   <DEFINE-NORMAL-KEY KEY-SPACE !\  !\  T <ASCII 0> <>>
125   <DEFINE-NORMAL-KEY KEY-5 !\5 !\% <> !\5 !\%>
126   <DEFINE-NORMAL-KEY KEY-T !\t !\T T !\\14 <>>
127   <DEFINE-NORMAL-KEY KEY-G !\g !\G T !\\a <>>
128   <DEFINE-NORMAL-KEY KEY-B !\b !\B T !\\ 2 <>>
129   <DEFINE-NORMAL-KEY KEY-6 !\6 !\^ <> !\\1e <>>
130   <DEFINE-NORMAL-KEY KEY-Y !\y !\Y T !\\19 <>>
131   <DEFINE-NORMAL-KEY KEY-H !\h !\H T !\\b <>>
132   <DEFINE-NORMAL-KEY KEY-N !\n !\N T !\\ e <>>
133   <DEFINE-NORMAL-KEY KEY-7 !\7 !\& <> !\7 !\&>
134   <DEFINE-NORMAL-KEY KEY-U !\u !\U T !\\15 <>>
135   <DEFINE-NORMAL-KEY KEY-J !\j !\J T <ASCII 10> <>>
136   <DEFINE-NORMAL-KEY KEY-M !\m !\M T <ASCII 13> <>>
137   <DEFINE-NORMAL-KEY KEY-8 !\8 !\* <> !\8 !\*>
138   <DEFINE-NORMAL-KEY KEY-I !\i !\I T <ASCII 9> <>>
139   <DEFINE-NORMAL-KEY KEY-K !\k !\K T !\\v <>>
140   <DEFINE-NORMAL-KEY KEY-COMMA !\, !\< <> !\, !\<>
141   <DEFINE-NORMAL-KEY KEY-9 !\9 !\( <> !\9 !\(>
142   <DEFINE-NORMAL-KEY KEY-O !\o !\O T !\\ f <>>
143   <DEFINE-NORMAL-KEY KEY-L !\l !\L T !\\f <>>
144   <DEFINE-NORMAL-KEY KEY-DOT !\. !\> <> !\. !\>>
145   <DEFINE-NORMAL-KEY KEY-0 !\0 !\) <> !\0 !\)>
146   <DEFINE-NORMAL-KEY KEY-P !\p !\P T <> <>>
147   <DEFINE-NORMAL-KEY KEY-SEMI !\; !\: <> !\; !\:>
148   <DEFINE-NORMAL-KEY KEY-SLASH !\/ !\? <> !\/ !\?>
149   <DEFINE-NORMAL-KEY KEY-EQUAL !\= !\+ <> !\= !\+>
150   <DEFINE-NORMAL-KEY KEY-RIGHT-SQUARE !\] !\} <> !\\1d <>>
151   <DEFINE-NORMAL-KEY KEY-BACKSLASH !\\ !\| <> !\\1c <>>
152   <DEFINE-NORMAL-KEY KEY-DASH !\- !\_ <> !\\1f <>>
153   <DEFINE-NORMAL-KEY KEY-LEFT-SQUARE !\[ !\{ <> !\\e <>>
154   <DEFINE-NORMAL-KEY KEY-QUOTE !\' !\" <> !\' !\">
155   <DEFINE-NORMAL-KEY KEY-ANGLE !\` !\~ <> !\` !\~>
156   <DEFINE-FUNCTION-KEY KEY-F1 ,X-F1 ,X-F1>
157   <DEFINE-FUNCTION-KEY KEY-F2 ,X-F2 ,X-F2>
158   <DEFINE-FUNCTION-KEY KEY-F3 ,X-F3 ,X-F3>
159   <DEFINE-FUNCTION-KEY KEY-F4 ,X-F4 ,X-F4>
160   <DEFINE-FUNCTION-KEY KEY-F5 ,X-F5 ,X-F5>
161   <DEFINE-FUNCTION-KEY KEY-F6 ,X-F6 ,X-F6>
162   <DEFINE-FUNCTION-KEY KEY-F7 ,X-F7 ,X-F7>
163   <DEFINE-FUNCTION-KEY KEY-F8 ,X-F8 ,X-F8>
164   <DEFINE-FUNCTION-KEY KEY-F9 ,X-F9 ,X-F9>
165   <DEFINE-FUNCTION-KEY KEY-F10 ,X-F10 ,X-F10>
166   <DEFINE-FUNCTION-KEY KEY-F14 ,X-F14 ,X-F14>
167   <DEFINE-FUNCTION-KEY KEY-F15 ,X-HELP ,X-HELP>
168   <DEFINE-FUNCTION-KEY KEY-F16 ,X-F16 ,X-F16>
169   <DEFINE-FUNCTION-KEY KEY-F17 ,X-F17 ,X-F17>
170   <DEFINE-FUNCTION-KEY KEY-F18 ,X-F18 ,X-F18>
171   <DEFINE-FUNCTION-KEY KEY-F19 ,X-F19 ,X-F19>
172   <DEFINE-FUNCTION-KEY KEY-F20 ,X-F20 ,X-F20>
173   <DEFINE-FUNCTION-KEY KEY-E1 ,X-E1 ,X-E1>
174   <DEFINE-FUNCTION-KEY KEY-E2 ,X-E2 ,X-E2>
175   <DEFINE-FUNCTION-KEY KEY-E3 ,X-E3 ,X-E3>
176   <DEFINE-FUNCTION-KEY KEY-E4 ,X-E4 ,X-E4>
177   <DEFINE-FUNCTION-KEY KEY-E5 ,X-E5 ,X-E5>
178   <DEFINE-FUNCTION-KEY KEY-E6 ,X-E6 ,X-E6>
179   <DEFINE-FUNCTION-KEY KEY-N0 ,X-NP0 !\0>
180   <DEFINE-FUNCTION-KEY KEY-NDOT ,X-NPDOT !\.>
181   <DEFINE-FUNCTION-KEY KEY-ENTER ,X-ENTER <ASCII 13>>
182   <DEFINE-FUNCTION-KEY KEY-N1 ,X-NP1 !\1>
183   <DEFINE-FUNCTION-KEY KEY-N2 ,X-NP2 !\2>
184   <DEFINE-FUNCTION-KEY KEY-N3 ,X-NP3 !\3>
185   <DEFINE-FUNCTION-KEY KEY-N4 ,X-NP4 !\4>
186   <DEFINE-FUNCTION-KEY KEY-N5 ,X-NP5 !\5>
187   <DEFINE-FUNCTION-KEY KEY-N6 ,X-NP6 !\6>
188   <DEFINE-FUNCTION-KEY KEY-N7 ,X-NP7 !\7>
189   <DEFINE-FUNCTION-KEY KEY-N8 ,X-NP8 !\8>
190   <DEFINE-FUNCTION-KEY KEY-N9 ,X-NP9 !\9>
191   <DEFINE-FUNCTION-KEY KEY-NCOMMA ,X-NPCOMMA !\,>
192   <DEFINE-FUNCTION-KEY KEY-NDASH ,X-NPDASH !\->
193   <DEFINE-FUNCTION-KEY KEY-PF1 ,X-PF1 ,X-PF1>
194   <DEFINE-FUNCTION-KEY KEY-PF2 ,X-PF2 ,X-PF2>
195   <DEFINE-FUNCTION-KEY KEY-PF3 ,X-PF3 ,X-PF3>
196   <DEFINE-FUNCTION-KEY KEY-PF4 ,X-PF4 ,X-PF4>
197   <DEFINE-FUNCTION-KEY KEY-LEFT ,X-LEFT ,X-LEFT>
198   <DEFINE-FUNCTION-KEY KEY-RIGHT ,X-RIGHT ,X-RIGHT>
199   <DEFINE-FUNCTION-KEY KEY-UP ,X-UP ,X-UP>
200   <DEFINE-FUNCTION-KEY KEY-DOWN ,X-DOWN ,X-DOWN>
201   <DEFINE-FUNCTION-KEY KEY-F11 !\\e !\\e>
202   <DEFINE-FUNCTION-KEY KEY-F12 !\\b !\\b>
203   <DEFINE-FUNCTION-KEY KEY-F13 <ASCII 10> <ASCII 10>>)>
204
205 <ENDPACKAGE>