|
|
1.1 root 1: -- $Header: GAP2.cr,v 2.0 85/11/21 07:22:54 jqj Exp $
2: -- $Log: GAP2.cr,v $
3: -- Revision 2.0 85/11/21 07:22:54 jqj
4: -- 4.3BSD standard release
5: --
6: -- Revision 1.1 85/11/20 14:09:05 jqj
7: -- Initial revision
8: --
9:
10: GAP: PROGRAM 3 VERSION 2 =
11: BEGIN
12:
13: -- types --
14:
15: WaitTime: TYPE = CARDINAL; -- in seconds --
16:
17: SessionHandle: TYPE = ARRAY 2 OF UNSPECIFIED;
18:
19: CharLength: TYPE = {five(0), six(1), seven(2), eight(3)};
20:
21: Parity: TYPE = {none(0), odd(1), even(2), one(3), zero(4)};
22:
23: StopBits: TYPE = {oneStopBit(0), twoStopBits(1)};
24:
25: -- the following is sometimes called a SessionParamObject --
26: SessionParameterObject: TYPE = CHOICE OF {
27: xerox800(0) => RECORD [], -- spec doesn't say (0) --
28: xerox850(1), xerox860(2) => RECORD [pollProc: UNSPECIFIED],
29: system6(3), cmcll(4), imb2770(5), ibm2770Host(6),
30: ibm6670(7), ibm6670Host(8) => RECORD [
31: sendBlocksize, receiveBlocksize: CARDINAL ],
32: ibm3270(9), ibm3270Host(10) => RECORD [],
33: ttyHost(11), tty(12) => RECORD [
34: charLength: CharLength,
35: parity: Parity,
36: stopBits: StopBits,
37: frameTimeout: CARDINAL ], -- in millisec --
38: other(13) => RECORD [],
39: unknown(14) => RECORD [] };
40:
41:
42: LineType: TYPE = {
43: bitSynchronous(0), byteSynchronous(1), asynchronous(2),
44: autoRecognition(3) };
45:
46: LineSpeed: TYPE = {
47: bps50(0), bps75(1), bps110(2), bps135(3), bps150(4),
48: bps300(5), bps600(6), bps1200(7), bps2400(8), bps3600(9),
49: bps4800(10), bps7200(11), bps9600(12) };
50:
51: Duplexity: TYPE = {fullduplex(0), halfduplex(1)};
52: CommParamObject: TYPE = RECORD [
53: duplex: Duplexity,
54: lineType: LineType,
55: lineSpeed: LineSpeed,
56: accessDetail: CHOICE OF {
57: directConn(0) => RECORD [], -- spec doesn't say (0) --
58: dialConn(1) => RECORD [ -- spec doesn't say (1) --
59: dialMode: {manualDial(0), autoDial(1)},
60: dialerNumber: CARDINAL,
61: retryCount: CARDINAL ] }
62: ];
63:
64: ReserveType: TYPE = { preemptNever(0), preemptAlways(1),
65: preemptInactive(2) };
66:
67: Resource: TYPE = ARRAY 2 OF UNSPECIFIED;
68:
69: LineControl: TYPE = { primary(0), secondary(1) };
70:
71: ControllerAddress: TYPE = CARDINAL;
72:
73: TerminalAddress: TYPE = CARDINAL;
74:
75: TransportObject: TYPE = CHOICE OF {
76: rs232c(0) => RECORD [ -- spec doesn't say (0) --
77: commParams: CommParamObject,
78: preemptOthers, preemptMe: ReserveType,
79: phoneNumber: STRING,
80: line: CHOICE OF { -- spec doesn't say (0) --
81: alreadyReserved(0) => RECORD [resource: Resource],
82: reserveNeeded(1) => RECORD [lineNumber: CARDINAL]
83: }
84: ],
85: bsc(1) => RECORD [
86: localTerminalID: STRING,
87: localSecurityID: STRING,
88: lineControl: LineControl,
89: authenticateProc: UNSPECIFIED ],
90: teletype(2) => RECORD [],
91: -- I am very uncertain about (4) and (5) --
92: polledBSCController(3), polledSDLCController(5) => RECORD [
93: hostControllerName: STRING,
94: controllerAddress: ControllerAddress,
95: portsOnController: CARDINAL ],
96: polledBSCTerminal(4), polledSDLCTerminal(6) => RECORD [
97: hostControllerName: STRING,
98: terminalAddress: TerminalAddress ]
99: };
100:
101: CallBackType: TYPE = { callOnAutoRecognition(0), callOnActive(1),
102: dontCall(2) };
103:
104: -- Constants --
105:
106: infiniteTime: WaitTime = 177777B; -- LAST[CARDINAL] --
107:
108: NopPollProc: UNSPECIFIED = 0B;
109:
110: unspecifiedTerminalAddr: TerminalAddress = 177777B;
111:
112: -- Remote Errors --
113:
114: unimplemented: ERROR = 0;
115: noCommunicationHardware: ERROR = 1;
116: illegalTransport: ERROR = 2;
117: mediumConnectFailed: ERROR = 3;
118: badAddressFormat: ERROR = 4;
119: noDialingHardware: ERROR = 5;
120: dialingHardwareProblem: ERROR = 6;
121: transmissionMediumUnavailable: ERROR = 7;
122: inconsistentParams: ERROR = 8;
123: tooManyGateStreams: ERROR = 9;
124: bugInGAPCode: ERROR = 10;
125: gapNotExported: ERROR = 11;
126: gapCommunicationError: ERROR = 12;
127: controllerAlreadyExists: ERROR = 13;
128: controllerDoesNotExist: ERROR = 14;
129: terminalAddressInUse: ERROR = 15;
130: terminalAddressInvalid: ERROR = 16;
131:
132:
133: -- Remote procedures --
134:
135: Reset: PROCEDURE = 0;
136:
137: IAmStillHere: PROCEDURE [ resource: Resource ] = 1;
138:
139: Create: PROCEDURE [
140: sessionParameterHandle: SessionParameterObject,
141: transportList: SEQUENCE OF TransportObject,
142: createTimeout: WaitTime ]
143: RETURNS [ session: SessionHandle ]
144: REPORTS [ badAddressFormat, controllerAlreadyExists,
145: controllerDoesNotExist, dialingHardwareProblem,
146: illegalTransport, inconsistentParams,
147: mediumConnectFailed,
148: noCommunicationHardware, noDialingHardware,
149: terminalAddressInUse, terminalAddressInvalid,
150: tooManyGateStreams, transmissionMediumUnavailable ]
151: = 2;
152:
153: Delete: PROCEDURE [ session: SessionHandle ] = 3;
154:
155: Reserve: PROCEDURE [
156: transport: TransportObject,
157: completionProcedure: UNSPECIFIED,
158: callBack: CallBackType ]
159: RETURNS [resource: Resource]
160: REPORTS [
161: bugInGAPCode, gapCommunicationError, gapNotExported,
162: illegalTransport, inconsistentParams, noCommunicationHardware,
163: tooManyGateStreams, transmissionMediumUnavailable ]
164: = 4;
165:
166: AbortReserve: PROCEDURE [ resource: Resource ] = 5;
167:
168: UseMediumForOISCP: PROCEDURE [ transport: TransportObject ] = 8;
169:
170: END.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.