Trailing-Edge
-
PDP-10 Archives
-
BB-P363B-SM_1985
-
mcb/mcb/scsys.req
There are no other files named scsys.req in the archive.
! COPYRIGHT (c) 1980, 1981, 1982
! DIGITAL EQUIPMENT CORPORATION
! Maynard, Massachusetts
!
! This software is furnished under a license and may be used
! and copied only in accordance with the terms of such license
! and with the inclusion of the above copyright notice. This
! software or any other copies thereof may not be provided or
! otherwise made available to any other person. No title to
! and ownership of the software is hereby transferred.
!
! The information in this software is subject to change
! without notice and should not be construed as a commitment
! by DIGITAL EQUIPMENT CORPORATION.
!
! DIGITAL assumes no responsibility for the use or reliability
! of its software on equipment which is not supplied by
! DIGITAL.
!+
! *** Start of SCSYS ***
! System Interface Parameters
!-
%if not %declared (XPO$K_VERSION) %then library 'MCB:XPORTX' %fi;
$show (all);
!+
! Function modifier codes for the System User Interface
!-
literal
S$CON = 0, ! Connect
S$ACC = 2, ! Accept
S$REJ = 4, ! Reject
S$SND = 6, ! Send data segment
S$MRQ = 8, ! Data message request
S$DRQ = 10, ! Data segment request
S$SNI = 12, ! Send interrupt
S$IRQ = 14, ! Interrupt request
S$DIS = 16, ! Disconnect
S$ABO = 18, ! Abort
S$GLN = 20, ! Get local node info
S$CNR = 0, ! Connect received
S$DAT = 2, ! Return data segment
S$INT = 4, ! Return interrupt data segment
S$DSR = 6, ! Disconnect received
S$XHI = S$GLN, ! Highest XME modifier
S$RHI = S$DSR; ! Highest RCE modifier
!+
! Miscellaneous Flags/Values
!-
literal
S$PSEG = 1, ! Segment flow control
S$PMSG = 2, ! Message flow control
S$PBOM = 1, ! Beginning of message
S$PMOM = 2, ! Middle of message
S$PEOM = 4; ! End of message
!+
! Status codes
!-
literal
S_EHI = 1, ! Highest code
S_SSUC = 1, ! Operation successful
! The following codes may appear in reject and disconnect data,
! but in their positive form. For the first two values, since
! there is no negative zero, a synonym value of 20 is used.
! The zero values are seen by SC only.
! S_ERBO = 0, ! Rejected by object
! S_EDBO = 0, ! Disconnect by object
S_ERES = -1, ! Insufficient network resources
S_EUNN = -2, ! Unrecognized node name
S_ERNS = -3, ! Remote node shut down
S_EURO = -4, ! Unrecognized object
S_EIOF = -5, ! Invalid object name format
S_EOTB = -6, ! Object too busy
S_EABS = -7, ! Abort by remote Session Control
S_EABM = -8, ! Abort by management
S_EABO = -9, ! Abort by object
S_EINF = -10, ! Invalid node name format
S_ELNS = -11, ! Local node shut down
S_ECBE = -12, ! Connect block format error
S_EERR = -13, ! General, unspecified error
S_EIDM = -14, ! Invalid data mode
S_ELST = -15, ! Data lost buffer too small
S_ELWS = -16, ! Link in wrong state
S_EMTL = -17, ! Message too long
S_ENSL = -18, ! No such link
S_EABL = -19, ! Abort by local SC
S_ERBO = -20, ! Rejected by object
S_EDBO = -20, ! Disconnect by object
S_ETMI = -21, ! Too many interrupt messages requested
S_EACR = -34, ! Access control rejection
S_ENRO = -38, ! No response from object
S_ENOF = -38, ! Node or object failed
S_ENUR = -39, ! Node unreachable
S_ELO = -39; ! Lowest code
!+
! System Interface Macros
!-
macro ! First, a support macro or two
$SC$LO_BYTE = 0,0,bits_byte,0 %,
$SC$HI_BYTE = 0,bits_byte,bits_byte,0 %,
$SC$QUE (fnc, mdf) =
%if not %null (fnc) %then $SC$CCB [C_FNC] = fnc; %fi
%if not %null (mdf) %then $SC$CCB [C_MOD] = mdf; %fi
LLCRS$ ($SC$CCB) %,
$SC$CND (val, loc) =
%if not %null (val) %then loc = val; %fi %,
$SC$BUF (bias, addr, count) =
$SC$CND (bias, $SC$CCB [C_BIAS])
$SC$CND (addr, $SC$CCB [C_ADDR])
$SC$CND (count, $SC$CCB [C_CNT]) %,
!+
! Structure Access Macros
!-
$SC_GET_LLA (ccb, lla) =
begin
bind $SC$CCB = ccb: block field (C_FIELDS);
lla = .$SC$CCB [C_LIX]
end %,
$SC_GET_ULA (ccb, ula) =
begin
bind $SC$CCB = ccb: block field (C_FIELDS);
ula = .$SC$CCB [$sub_field (C_PRM1, $SC$LO_BYTE)]
end %,
!+
! Interface Macros
!-
$SC_ABORT (ccb, pix, ula, buf) =
begin
bind $SC$CCB = ccb: block field (C_FIELDS);
$SC$CND (pix, $SC$CCB [C_PIX])
$SC$CND (ula, $SC$CCB [$sub_field (C_PRM1, $SC$LO_BYTE)])
$SC$BUF (%remove (buf))
$SC$QUE (FC_XME, S$ABO)
end %,
$SC_ACCEPT (ccb, pix, lla, ula, flg, buf) =
begin
bind $SC$CCB = ccb: block field (C_FIELDS);
$SC$CND (pix, $SC$CCB [C_PIX])
$SC$CND (lla, $SC$CCB [C_LIX])
$SC$CND (ula, $SC$CCB [$sub_field (C_PRM1, $SC$LO_BYTE)])
$SC$CND (flg, $SC$CCB [$sub_field (C_PRM1, $SC$HI_BYTE)])
$SC$BUF (%remove (buf))
$SC$QUE (FC_XME, S$ACC)
end %,
$SC_CONNECT (ccb, pix, ula, flg, buf) =
begin
bind $SC$CCB = ccb: block field (C_FIELDS);
$SC$CND (pix, $SC$CCB [C_PIX])
$SC$CND (ula, $SC$CCB [$sub_field (C_PRM1, $SC$LO_BYTE)])
$SC$CND (flg, $SC$CCB [$sub_field (C_PRM1, $SC$HI_BYTE)])
$SC$BUF (%remove (buf))
$SC$QUE (FC_XME, S$CON)
end %,
$SC_CONNECT_RECEIVED (ccb, ula, sts) =
begin
bind $SC$CCB = ccb: block field (C_FIELDS);
$SC$CND (ula, $SC$CCB [$sub_field (C_PRM1, $SC$LO_BYTE)])
$SC$CND (sts, $SC$CCB [C_STS])
$SC$QUE (FC_RCE)
end %,
$SC_DATA_SEGMENT_RETURN (ccb) =
begin
bind $SC$CCB = ccb: block field (C_FIELDS);
$SC$QUE (FC_RCE)
end %,
$SC_DATA_MESSAGE_REQUEST (ccb, pix, lla, ula, buf) =
begin
bind $SC$CCB = ccb: block field (C_FIELDS);
$SC$CND (pix, $SC$CCB [C_PIX])
$SC$CND (lla, $SC$CCB [C_LIX])
$SC$CND (ula, $SC$CCB [$sub_field (C_PRM1, $SC$LO_BYTE)])
$SC$BUF (%remove (buf))
$SC$QUE (FC_XME, S$MRQ)
end %,
$SC_DATA_SEGMENT_REQUEST (ccb, pix, lla, ula, num) =
begin
bind $SC$CCB = ccb: block field (C_FIELDS);
$SC$CND (pix, $SC$CCB [C_PIX])
$SC$CND (lla, $SC$CCB [C_LIX])
$SC$CND (ula, $SC$CCB [$sub_field (C_PRM1, $SC$LO_BYTE)])
$SC$CND (num, $SC$CCB [$sub_field (C_PRM1, $SC$HI_BYTE)])
$SC$QUE (FC_XME, S$DRQ)
end %,
$SC_DATA_SEGMENT_TRANSMIT (ccb, pix, lla, ula, flg, buf) =
begin
bind $SC$CCB = ccb: block field (C_FIELDS);
$SC$CND (pix, $SC$CCB [C_PIX])
$SC$CND (lla, $SC$CCB [C_LIX])
$SC$CND (ula, $SC$CCB [$sub_field (C_PRM1, $SC$LO_BYTE)])
$SC$CND (flg, $SC$CCB [$sub_field (C_PRM1, $SC$HI_BYTE)])
$SC$BUF (%remove (buf))
$SC$QUE (FC_XME, S$SND)
end %,
$SC_DISCONNECT (ccb, pix, lla, ula, buf) =
begin
bind $SC$CCB = ccb: block field (C_FIELDS);
$SC$CND (pix, $SC$CCB [C_PIX])
$SC$CND (lla, $SC$CCB [C_LIX])
$SC$CND (ula, $SC$CCB [$sub_field (C_PRM1, $SC$LO_BYTE)])
$SC$BUF (%remove (buf))
$SC$QUE (FC_XME, S$DIS)
end %,
$SC_DISCONNECTED (ccb) =
begin
bind $SC$CCB = ccb: block field (C_FIELDS);
$SC$QUE (FC_RCE)
end %,
$SC_INTERRUPT_REQUEST (ccb, pix, lla, ula, num) =
begin
bind $SC$CCB = ccb: block field (C_FIELDS);
$SC$CND (pix, $SC$CCB [C_PIX])
$SC$CND (lla, $SC$CCB [C_LIX])
$SC$CND (ula, $SC$CCB [$sub_field (C_PRM1, $SC$LO_BYTE)])
$SC$CND (num, $SC$CCB [$sub_field (C_PRM1, $SC$HI_BYTE)])
$SC$QUE (FC_XME, S$IRQ)
end %,
$SC_INTERRUPT_RETURN (ccb) =
begin
bind $SC$CCB = ccb: block field (C_FIELDS);
$SC$QUE (FC_RCE)
end %,
$SC_INTERRUPT_TRANSMIT (ccb, pix, lla, ula, buf) =
begin
bind $SC$CCB = ccb: block field (C_FIELDS);
$SC$CND (pix, $SC$CCB [C_PIX])
$SC$CND (lla, $SC$CCB [C_LIX])
$SC$CND (ula, $SC$CCB [$sub_field (C_PRM1, $SC$LO_BYTE)])
$SC$BUF (%remove (buf))
$SC$QUE (FC_XME, S$SNI)
end %,
$SC_LOCAL_NODE_INFO (ccb, pix, flg, buf) =
begin
bind $SC$CCB = ccb: block field (C_FIELDS);
$SC$CND (pix, $SC$CCB [C_PIX])
$SC$CND (flg, $SC$CCB [C_PRM1])
$SC$BUF (%remove (buf))
$SC$QUE (FC_XME, S$GLN)
end %,
$SC_REJECT (ccb, pix, lla, rej, buf) =
begin
bind $SC$CCB = ccb: block field (C_FIELDS);
$SC$CND (pix, $SC$CCB [C_PIX])
$SC$CND (lla, $SC$CCB [C_LIX])
$SC$CND (rej, $SC$CCB [C_PRM2])
$SC$BUF (%remove (buf))
$SC$QUE (FC_XME, S$REJ)
end %;
!+
! Field mapping for the Connect Block
!-
$field CB_FIELDS =
set
CB_NODE = [$byte_string (6)], ! Destination node name
CB_DFMT = [$byte], ! Destination object format
CB_DOBJ = [$byte], ! " " type
CB_DST = [$byte_string (18)], ! " " descriptor
CB_SFMT = [$byte], ! Source object format
CB_SOBJ = [$byte], ! " " type
CB_SRC = [$byte_string (18)], ! " " descriptor
CB_RQDL = [$short_integer], ! Requester ID length
CB_RQID = [$byte_string (16)], ! " "
CB_PASL = [$short_integer], ! Password length
CB_PASW = [$byte_string (8)], ! "
CB_ACTL = [$short_integer], ! Accounting data length
CB_ACNT = [$byte_string (16)], ! " "
CB_OPDL = [$short_integer], ! Optional data length
CB_OPTD = [$byte_string (16)], ! " "
CB_ENDD = [$sub_block (0)], ! End marker
$overlay (CB_DST) ! Format 1
CB_DPL1 = [$short_integer], ! Destination process name length
CB_DPR1 = [$byte_string (16)], ! " " "
$continue
$overlay(CB_DST) ! Format 2
CB_DGRP = [$short_integer], ! Destination group code
CB_DUSR = [$short_integer], ! " user "
CB_DPL2 = [$short_integer], ! " process name length
CB_DPR2 = [$byte_string (12)], ! " " "
$continue
$overlay(CB_SRC) ! Format 1
CB_SPL1 = [$short_integer], ! Source process name length
CB_SPR1 = [$byte_string (16)], ! " " "
$continue
$overlay(CB_SRC) ! Format 2
CB_SGRP = [$short_integer], ! Source group code
CB_SUSR = [$short_integer], ! " user "
CB_SPL2 = [$short_integer], ! " process name length
CB_SPR2 = [$byte_string (12)] ! " " "
$continue
tes;
literal
CB_SIZE = $field_set_size;
!+
! Field mapping for either source or destination sub_blocks
!-
$field CBSD_FIELDS =
set
CB_FMT = [$byte], ! Format
CB_OBJ = [$byte], ! Object type
CB_DES = [$byte_string (18)], ! Descriptor
$overlay (CB_DES) ! Format #1
CB_LEN = [$short_integer],
CB_NAM = [$byte_string (16)],
$continue
$overlay (CB_DES) ! Format #2
CB_GRP = [$short_integer],
CB_USR = [$short_integer],
CB_LN2 = [$short_integer],
CB_NM2 = [$byte_string (12)]
$continue
tes;
!+
! *** End of SCSYS ***
!-