|
|
1.1 ! root 1: -- $Header: GAP3.cr,v 2.0 85/11/21 07:22:56 jqj Exp $ ! 2: -- $Log: GAP3.cr,v $ ! 3: -- Revision 2.0 85/11/21 07:22:56 jqj ! 4: -- 4.3BSD standard release ! 5: -- ! 6: -- Revision 1.1 85/11/20 14:09:06 jqj ! 7: -- Initial revision ! 8: -- ! 9: ! 10: GAP: PROGRAM 3 VERSION 3 = ! 11: BEGIN ! 12: ! 13: DEPENDS UPON Authentication (14) VERSION 1; ! 14: ! 15: -- types -- ! 16: ! 17: WaitTime: TYPE = CARDINAL; -- in seconds -- ! 18: ! 19: SessionHandle: TYPE = ARRAY 2 OF UNSPECIFIED; ! 20: ! 21: CharLength: TYPE = {five(0), six(1), seven(2), eight(3)}; ! 22: ! 23: Parity: TYPE = {none(0), odd(1), even(2), one(3), zero(4)}; ! 24: ! 25: StopBits: TYPE = {oneStopBit(0), twoStopBits(1)}; ! 26: ! 27: FlowControl: TYPE = RECORD [ ! 28: type: {flowControlNone(0), xOnXOff(1)}, ! 29: xOn: UNSPECIFIED, ! 30: xOFF: UNSPECIFIED ]; ! 31: ! 32: BidReply: TYPE = {wack(0), nack(1), defaultBidReply(2)}; ! 33: ! 34: ExtendedBoolean: TYPE = {true(0), false(1), defaultExtendedBoolean(2)}; ! 35: ! 36: DeviceType: TYPE = {undefined(0), terminal(1), printer(2)}; ! 37: ! 38: -- the following is sometimes called a SessionParamObject -- ! 39: SessionParameterObject: TYPE = CHOICE OF { ! 40: xerox800(0) => RECORD [], ! 41: xerox850(1), xerox860(2) => RECORD [pollProc: UNSPECIFIED], ! 42: system6(3), cmcll(4), imb2770(5), ibm2770Host(6), ! 43: ibm6670(7), ibm6670Host(8) => RECORD [ ! 44: sendBlocksize, receiveBlocksize: CARDINAL ], ! 45: ibm3270(9), ibm3270Host(10) => RECORD [], ! 46: oldTtyHost(11), oldTty(12) => RECORD [ ! 47: charLength: CharLength, ! 48: parity: Parity, ! 49: stopBits: StopBits, ! 50: frameTimeout: CARDINAL ], -- in millisec -- ! 51: otherSessionType(13) => RECORD [], ! 52: unknown(14) => RECORD [], ! 53: ibm2780(15), ibm2780Host(16), ! 54: ibm3780(17), ibm3780Host(18) => RECORD [ ! 55: sendBlocksize, receiveBlocksize: CARDINAL ], ! 56: siemens9750(19), siemens9750Host(20) => RECORD [], ! 57: ttyHost(21), tty(22) => RECORD [ ! 58: charLength: CharLength, ! 59: parity: Parity, ! 60: stopBits: StopBits, ! 61: frameTimeout: CARDINAL, -- in millisec -- ! 62: flowControl: FlowControl ] }; ! 63: ! 64: LineType: TYPE = { ! 65: bitSynchronous(0), byteSynchronous(1), asynchronous(2), ! 66: autoRecognition(3) }; ! 67: ! 68: LineSpeed: TYPE = { ! 69: bps50(0), bps75(1), bps110(2), bps135(3), bps150(4), ! 70: bps300(5), bps600(6), bps1200(7), bps2400(8), bps3600(9), ! 71: bps4800(10), bps7200(11), bps9600(12), ! 72: bps19200(13), bps28800(14), bps38400(15), bps48000(16), ! 73: bps56000(17), bps57600(18) ! 74: }; ! 75: ! 76: Duplexity: TYPE = {fullduplex(0), halfduplex(1)}; ! 77: ! 78: CommParamObject: TYPE = RECORD [ ! 79: accessDetail: CHOICE OF { ! 80: directConn(0) => RECORD [ ! 81: duplex: Duplexity, ! 82: lineType: LineType, ! 83: lineSpeed: LineSpeed ], ! 84: dialConn(1) => RECORD [ ! 85: duplex: Duplexity, ! 86: lineType: LineType, ! 87: lineSpeed: LineSpeed, ! 88: dialMode: {manualDial(0), autoDial(1)}, ! 89: dialerNumber: CARDINAL, ! 90: retryCount: CARDINAL ] } ! 91: ]; ! 92: ! 93: ReserveType: TYPE = { preemptNever(0), preemptAlways(1), ! 94: preemptInactive(2) }; ! 95: ! 96: Resource: TYPE = ARRAY 2 OF UNSPECIFIED; ! 97: ! 98: LineControl: TYPE = { primary(0), secondary(1) }; ! 99: ! 100: ControllerAddress: TYPE = CARDINAL; ! 101: ! 102: TerminalAddress: TYPE = CARDINAL; ! 103: ! 104: TransportObject: TYPE = CHOICE OF { ! 105: rs232c(0) => RECORD [ -- spec doesn't say (0) -- ! 106: commParams: CommParamObject, ! 107: preemptOthers, preemptMe: ReserveType, ! 108: phoneNumber: STRING, ! 109: line: CHOICE OF { -- spec doesn't say (0) -- ! 110: alreadyReserved(0) => RECORD [resource: Resource], ! 111: reserveNeeded(1) => RECORD [lineNumber: CARDINAL] ! 112: } ! 113: ], ! 114: bsc(1) => RECORD [ ! 115: localTerminalID: STRING, ! 116: localSecurityID: STRING, ! 117: lineControl: LineControl, ! 118: authenticateProc: UNSPECIFIED, ! 119: bidReply: BidReply, ! 120: sendLineHoldingEOTs: ExtendedBoolean, ! 121: expectLineHoldingEOTs: ExtendedBoolean ], ! 122: teletype(2) => RECORD [], ! 123: polledBSCController(3), sdlcController(5) => RECORD [ ! 124: hostControllerName: STRING, ! 125: controllerAddress: ControllerAddress, ! 126: portsOnController: CARDINAL ], ! 127: polledBSCTerminal(4), sdlcTerminal(6) => RECORD [ ! 128: hostControllerName: STRING, ! 129: terminalAddress: TerminalAddress ], ! 130: service(7) => RECORD [ ! 131: id: LONG CARDINAL ], ! 132: unused(8) => RECORD [], ! 133: polledBSCPrinter(9), sdlcPrinter(10) => RECORD [ ! 134: hostControllerName: STRING, ! 135: printerAddress: TerminalAddress] ! 136: }; ! 137: ! 138: -- Constants -- ! 139: ! 140: infiniteTime: WaitTime = 177777B; -- LAST[CARDINAL] -- ! 141: ! 142: NopPollProc: UNSPECIFIED = 0B; ! 143: ! 144: unspecifiedTerminalAddr: TerminalAddress = 177777B; ! 145: ! 146: -- Remote Errors -- ! 147: ! 148: unimplemented: ERROR = 0; ! 149: noCommunicationHardware: ERROR = 1; ! 150: illegalTransport: ERROR = 2; ! 151: mediumConnectFailed: ERROR = 3; ! 152: badAddressFormat: ERROR = 4; ! 153: noDialingHardware: ERROR = 5; ! 154: dialingHardwareProblem: ERROR = 6; ! 155: transmissionMediumUnavailable: ERROR = 7; ! 156: inconsistentParams: ERROR = 8; ! 157: tooManyGateStreams: ERROR = 9; ! 158: bugInGAPCode: ERROR = 10; ! 159: gapNotExported: ERROR = 11; ! 160: gapCommunicationError: ERROR = 12; ! 161: controllerAlreadyExists: ERROR = 13; ! 162: controllerDoesNotExist: ERROR = 14; ! 163: terminalAddressInUse: ERROR = 15; ! 164: terminalAddressInvalid: ERROR = 16; ! 165: -- the following are guesses as to the ERROR numbers -- ! 166: serviceTooBusy: ERROR = 17; ! 167: userNotAuthenticated: ERROR = 18; ! 168: userNotAuthorized: ERROR = 19; ! 169: serviceNotFound: ERROR = 20; ! 170: ! 171: ! 172: -- Remote procedures -- ! 173: ! 174: Reset: PROCEDURE = 0; ! 175: ! 176: Create: PROCEDURE [ ! 177: sessionParameterHandle: SessionParameterObject, ! 178: transportList: SEQUENCE OF TransportObject, ! 179: createTimeout: WaitTime, ! 180: credentials: Authentication.Credentials, ! 181: verifier: Authentication.Verifier ] ! 182: RETURNS [ session: SessionHandle ] ! 183: REPORTS [ badAddressFormat, ! 184: controllerAlreadyExists, controllerDoesNotExist, ! 185: dialingHardwareProblem, ! 186: illegalTransport, inconsistentParams, ! 187: mediumConnectFailed, ! 188: noCommunicationHardware, noDialingHardware, ! 189: terminalAddressInUse, terminalAddressInvalid, ! 190: tooManyGateStreams, transmissionMediumUnavailable, ! 191: serviceTooBusy, userNotAuthenticated, userNotAuthorized, ! 192: serviceNotFound ] ! 193: = 2; ! 194: ! 195: Delete: PROCEDURE [ session: SessionHandle ] = 3; ! 196: ! 197: END. ! 198:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.