Machine-Independent MDL for TOPS-20 and VAX.
[pdp10-muddle.git] / mim / development / mim / vax / vaxdefault.mud
1 ; "For now, I$DEF-CHANNEL is just a PUT FOO DECL hack."
2 %<NEWSTRUC I$DEF-CHANNEL (VECTOR)
3   DC-IJFN FIX
4   DC-DEV <OR ATOM STRING FALSE>
5   DC-SNM <OR ATOM STRING FALSE>
6   DC-NM1 <OR STRING FALSE>
7   DC-NM2 <OR STRING FALSE>
8   DC-DSN <OR STRING FALSE>
9   DC-STATUS FIX
10   DC-OJFN FIX
11   DC-IBUF <OR STRING FALSE>
12   DC-IBC FIX>
13
14 <DEFINE X$DEF-GET-MODE (CHANNEL OPER "AUX" (DATA <T$CHANNEL-DATA .CHANNEL>)
15                         (STS <DC-STATUS .DATA>))
16   #DECL ((CHANNEL) T$CHANNEL (DATA) I$DEF-CHANNEL)
17   <COND (<NOT <0? <ANDB .STS ,STATUS-WRITE>>>
18          <COND (<0? <ANDB .STS ,STATUS-RACC>>
19                 "APPEND")
20                (T
21                 "MODIFY")>)
22         (T
23           "READ")>>
24
25 <DEFINE X$DEF-GET-BYTE-SIZE (CHANNEL OPER "AUX" (DATA <T$CHANNEL-DATA .CHANNEL>)
26                          (BSZ <LHW <DC-STATUS .DATA>>))
27   #DECL ((CHANNEL) T$CHANNEL (DATA) I$DEF-CHANNEL)
28   <COND (<==? .BSZ ,BS-ASCII> "ASCII")
29         (<==? .BSZ ,BS-8BIT> "8BIT")
30         (<==? .BSZ ,BS-BINARY> "BINARY")>>
31
32 <DEFINE X$DEF-HACK-DATE (CHANNEL OPER "OPTIONAL" NEW
33                           "AUX" (DATA <T$CHANNEL-DATA .CHANNEL>)
34                                 UV ST NM)
35   #DECL ((CHANNEL) T$CHANNEL (DATA) I$DEF-CHANNEL (OPER) T$ATOM
36          (NEW) FIX (UV) <UVECTOR [REST FIX]>)
37   <COND (<NOT <ASSIGNED? NEW>>
38          <COND (<==? <DC-IJFN .DATA> -1>
39                 <SET NM <T$STANDARD-NAME <T$CHANNEL-OP .CHANNEL T$NAME>>>
40                 <SET ST <T$FILE-STAT .NM>>)
41                (T
42                 <SET ST <T$FILE-STAT <DC-IJFN .DATA>>>)>
43          <COND (<==? .OPER T$READ-DATE>
44                 <T$STAT-FIELD .ST ,ATIME-OFFS ,ATIME-SIZE>)
45                (T
46                 <T$STAT-FIELD .ST ,MTIME-OFFS ,MTIME-SIZE>)>)
47         (T
48          <COND (<NOT <GASSIGNED? TIMEU>> <SETG TIMEU <UVECTOR 0 0>>)>
49          <SET UV ,TIMEU>
50          <COND (<==? .OPER T$READ-DATE>
51                 <1 .UV .NEW>
52                 <2 .UV <X$DEF-HACK-DATE .CHANNEL T$WRITE-DATE>>)
53                (T
54                 <2 .UV .NEW>
55                 <1 .UV <X$DEF-HACK-DATE .CHANNEL T$READ-DATE>>)>
56          <SET NM <T$STANDARD-NAME <T$CHANNEL-OP .CHANNEL T$NAME>>>
57          <COND (<CALL SYSCALL UTIMES .NM .UV>
58                 .NEW)>)>>
59
60 <DEFINE I$DEF-SHORT-NAME (CHN OPER "AUX" (DAT <T$CHANNEL-DATA .CHN>)
61                           (NM1 <DC-NM1 .DAT>) (NM2 <DC-NM2 .DAT>))
62   #DECL ((CHN) T$CHANNEL (DAT) I$DEF-CHANNEL)
63   <COND (<AND .NM1 .NM2>
64          <STRING .NM1 !\. .NM2>)
65         (.NM1)
66         (.NM2
67          <STRING !\. .NM2>)
68         (<I$DEF-NAME .CHN .OPER>)>>
69
70 <DEFINE I$DEF-FILE-HANDLE (CHN OPER "AUX" (DAT <T$CHANNEL-DATA .CHN>))
71   #DECL ((CHN) T$CHANNEL (DAT) I$DEF-CHANNEL)
72   <DC-IJFN .DAT>>
73
74 <DEFINE I$DEF-DEV (CHN OPER "AUX" (DAT <T$CHANNEL-DATA .CHN>)
75                    (STR <DC-DEV .DAT>))
76   #DECL ((CHN) T$CHANNEL (DAT) I$DEF-CHANNEL)
77   <COND (<TYPE? .STR ATOM>
78          <T$PARSE-DIR <> <> <REST .DAT 1> <> <>>
79          <DC-DEV .DAT>)
80         (.STR)>>
81
82 <DEFINE I$DEF-SNM (CHN OPER "AUX" (DAT <T$CHANNEL-DATA .CHN>)
83                    (STR <DC-SNM .DAT>))
84   #DECL ((CHN) T$CHANNEL (DAT) I$DEF-CHANNEL)
85   <COND (<TYPE? .STR ATOM>
86          <T$PARSE-DIR <> <> <REST .DAT 1> <> <>>
87          <DC-SNM .DAT>)
88         (.STR)>>
89
90 <DEFINE I$DEF-NM1 (CHN OPER "AUX" (DAT <T$CHANNEL-DATA .CHN>))
91   #DECL ((CHN) T$CHANNEL (DAT) I$DEF-CHANNEL)
92   <DC-NM1 .DAT>>
93
94 <DEFINE I$DEF-NM2 (CHN OPER "AUX" (DAT <T$CHANNEL-DATA .CHN>))
95   #DECL ((CHN) T$CHANNEL (DAT) I$DEF-CHANNEL)
96   <DC-NM2 .DAT>>
97
98 <DEFINE I$DEF-NAME (CHN OPER "OPT" (BITS *37*) "AUX" (DAT <T$CHANNEL-DATA .CHN>)
99                     (STOR <ITUPLE 5 <>>))
100   #DECL ((CHN) T$CHANNEL (DAT) I$DEF-CHANNEL (STOR) TUPLE)
101   <1 .STOR <DC-DEV .DAT>>
102   <2 .STOR <DC-SNM .DAT>>
103   <3 .STOR <DC-NM1 .DAT>>
104   <4 .STOR <DC-NM2 .DAT>>
105   <5 .STOR <DC-DSN .DAT>>
106   <I$UNPARSE-SPEC .STOR .BITS>>
107