Annotation of 43BSD/contrib/xns/examples/gap/GAP3.cr, revision 1.1.1.1

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: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.