Trailing-Edge
-
PDP-10 Archives
-
bb-m080w-sm_t20_v7_0_02_mon_src_mod
-
monitor-sources/scapar.mac
There are 20 other files named scapar.mac in the archive. Click here to see a list.
; Edit= 8810 to SCAPAR.MAC on 24-Mar-88 by RASPUZZI
;Increase the size of the SCA ring buffer.
; UPD ID= 8613, RIP:<7.MONITOR>SCAPAR.MAC.8, 11-Feb-88 18:29:07 by GSCOTT
;TCO 7.1218 - Update copyright date.
; UPD ID= 182, RIP:<7.MONITOR>SCAPAR.MAC.7, 21-Oct-87 17:19:04 by RASPUZZI
;TCO 7.1076 - Add CLUINI to initialization table and also, make CLUPRI
; be priority for CLUDGR when sending messages.
; UPD ID= 165, RIP:<7.MONITOR>SCAPAR.MAC.6, 19-Oct-87 17:16:33 by LOMARTIRE
;TCO 7.1072 - Put EQSINI in SYSAP initialization table (INITAB)
; UPD ID= 119, RIP:<7.MONITOR>SCAPAR.MAC.5, 21-Sep-87 15:50:48 by RASPUZZI
;TCO 7.1060 - Correct idosyncrosy in PHYKLP by making C%MUDA be 1 less.
; UPD ID= 90, RIP:<7.MONITOR>SCAPAR.MAC.4, 21-Aug-87 17:31:41 by MCCOLLUM
;TCO 7.1043 - SCSJSY is now in XCDSEC, Fix up references to SCSJSY symbols.
; UPD ID= 77, RIP:<7.MONITOR>SCAPAR.MAC.3, 12-Aug-87 14:50:52 by MCCOLLUM
;TCO 7.1037 - Fix up for SCAMPI's move to XCDSEC. Change CIOFF macro, etc.
; UPD ID= 16, RIP:<7.MONITOR>SCAPAR.MAC.2, 3-Jun-87 10:55:25 by RASPUZZI
;TCO 7.1009 - Add C%MUDA.
; UPD ID= 2281, SNARK:<6.1.MONITOR>SCAPAR.MAC.120, 25-Jun-85 15:06:49 by GRANT
;TCO 6.1.1473 - Add PKMAI and PKTYP
; UPD ID= 2179, SNARK:<6.1.MONITOR>SCAPAR.MAC.119, 5-Jun-85 11:01:26 by MCCOLLUM
;TCO 6.1.1406 - Update copyright notice.
; UPD ID= 1595, SNARK:<6.1.MONITOR>SCAPAR.MAC.118, 6-Mar-85 07:21:54 by HAUDEL
;TCO 6.1.1232 - Make connection management symbols reference Monsym.
; UPD ID= 1517, SNARK:<6.1.MONITOR>SCAPAR.MAC.117, 13-Feb-85 12:59:53 by LOMARTIRE
;TCO 6.1.1196 - Fix calculation of C%STIM
; UPD ID= 1454, SNARK:<6.1.MONITOR>SCAPAR.MAC.116, 1-Feb-85 14:20:51 by LOMARTIRE
;Add new symbols to describe the priority used by each SYSAP
; UPD ID= 1060, SNARK:<6.1.MONITOR>SCAPAR.MAC.115, 13-Nov-84 09:06:49 by LOMARTIRE
;Define new priority symbols KLPHI, KLPMED, KLPLOW, KLPDEG
;These replace KLPPR0, KLPPR1, KLPPR2, KLPPR3
;Remove special .MPxxx definitions used in SCAMPI
; UPD ID= 4998, SNARK:<6.MONITOR>SCAPAR.MAC.114, 24-Oct-84 20:03:28 by GRANT
;Add SCAVER
; UPD ID= 4956, SNARK:<6.MONITOR>SCAPAR.MAC.113, 18-Oct-84 14:49:18 by GRANT
;Add .RDNNM to Configuration Data Returned.
;Add .SBNNM to System Block and fix .SBHWV.
;Fix .SRNNM definition.
; UPD ID= 4869, SNARK:<6.MONITOR>SCAPAR.MAC.112, 24-Sep-84 16:14:44 by GRANT
;Add .PKxxx for READ-COUNTERS packet
; UPD ID= 4832, SNARK:<6.MONITOR>SCAPAR.MAC.111, 17-Sep-84 11:21:50 by PURRETTA
;Update copyright notice
; UPD ID= 4694, SNARK:<6.MONITOR>SCAPAR.MAC.110, 15-Aug-84 16:53:24 by CDUNN
;Add vector for .SSRPS (SCSRPS) to function table.
;
; UPD ID= 4672, SNARK:<6.MONITOR>SCAPAR.MAC.109, 10-Aug-84 17:13:38 by CDUNN
;Temporarily add IDPAO and IDPBO MSKSTRs for getting data from RIDSTS. Someday
;these definitions should be moved from PHYKLP.
;
; UPD ID= 4657, SNARK:<6.MONITOR>SCAPAR.MAC.108, 7-Aug-84 16:15:30 by CDUNN
;Change documentation of .SSPBC callback
;
;Add definition of SCSTXN/SCSBXN entry. Also update the table of contents
;
; UPD ID= 4592, SNARK:<6.MONITOR>SCAPAR.MAC.106, 26-Jul-84 22:26:06 by CDUNN
;Remove SINNCO. Remove "delete previous entry" flag from (.METYP). Also, bump
;C%PBCL by one so the data gets transfered.
;
; UPD ID= 4578, SNARK:<6.MONITOR>SCAPAR.MAC.105, 23-Jul-84 09:26:27 by GRANT
;Change defintions of PS.NRB, PS.NRA, and PS.NRE to include the error bit
;
; UPD ID= 4500, SNARK:<6.MONITOR>SCAPAR.MAC.104, 12-Jul-84 19:55:47 by LOMARTIRE
;Rearrange and improve documentation of callbacks.
;Remove .SSCBD, .SSMNT, and .SSNWO and add .SSDDG callbacks.
;Update table of contents.
;
; UPD ID= 4452, SNARK:<6.MONITOR>SCAPAR.MAC.103, 12-Jul-84 08:41:08 by HALL
;Add PPD byte type 6 to the list, and define the maximum value
;
; UPD ID= 4427, SNARK:<6.MONITOR>SCAPAR.MAC.102, 3-Jul-84 14:28:59 by LOMARTIRE
;Remove obsolete and unwanted DEFSTRs from connect and system blocks.
;Fix definitions of SC.RCD data block.
;Remove name SBDESW since it refers to a two word entity.
;
; UPD ID= 4416, SNARK:<6.MONITOR>SCAPAR.MAC.101, 2-Jul-84 10:44:10 by GRANT
; Add PS.CLO, PS.AKA, PS.NKA, PS.NOA, PS.AKB, PS.NKB, and PS.NOB
;
; UPD ID= 4411, SNARK:<6.MONITOR>SCAPAR.MAC.100, 2-Jul-84 07:16:57 by GRANT
;Add SBNTC, SBOKO, and SBWFI to system block
;
; UPD ID= 4383, SNARK:<6.MONITOR>SCAPAR.MAC.99, 25-Jun-84 09:21:17 by LOMARTIRE
;Various changes to ring buffer definitions
;
; UPD ID= 4320, SNARK:<6.MONITOR>SCAPAR.MAC.98, 11-Jun-84 10:47:03 by LOMARTIRE
;Fix definitions of SC.CSP data block
;
; UPD ID= 4315, SNARK:<6.MONITOR>SCAPAR.MAC.97, 11-Jun-84 09:56:24 by HAUDEL
;ADD CDNPW,HDNPW. CHANGE TWO COMMENTS.
; UPD ID= 4288, SNARK:<6.MONITOR>SCAPAR.MAC.96, 4-Jun-84 11:06:26 by HAUDEL
;Add defintions for the Map Descriptor Block, error codes in the Status
;field, and the IDREC Port Functionality word.
; UPD ID= 4287, SNARK:<6.MONITOR>SCAPAR.MAC.95, 2-Jun-84 13:12:22 by HALL
;Add a few bits to the connection block flags word
; UPD ID= 4283, SNARK:<6.MONITOR>SCAPAR.MAC.94, 1-Jun-84 12:20:57 by LOMARTIRE
;Rename CBDSBI to CBDNOD, CDSBI to CDNOD, remove .SBSBI and update pictures.
;
; UPD ID= 4246, SNARK:<6.MONITOR>SCAPAR.MAC.93, 25-May-84 13:47:37 by HALL
;Add 2 words to the connection block
; UPD ID= 4198, SNARK:<6.MONITOR>SCAPAR.MAC.92, 9-May-84 13:18:40 by LOMARTIRE
;Make .CMNxx codes reflect the spec's design for rejection/disconnection
;reason codes. Remove .UCxxx and .RJNOM reason codes.
;Add .CMNDS and .CMNRV reason codes and redefine values of others to conform
;to spec. Update table of contents.
; UPD ID= 4181, SNARK:<6.MONITOR>SCAPAR.MAC.91, 8-May-84 14:03:52 by CDUNN
;Add maximum packet size symbols. (C%MXDP and C%MXMP)
;
; UPD ID= 4153, SNARK:<6.MONITOR>SCAPAR.MAC.90, 30-Apr-84 15:07:16 by HAUDEL
;Add PS.IBN (Invalid Buffer Name) error definition.
;
; UPD ID= 4148, SNARK:<6.MONITOR>SCAPAR.MAC.89, 30-Apr-84 11:24:48 by HAUDEL
;Add .PKBNM definition for the Close Buffer command.
;
; UPD ID= 4137, SNARK:<6.MONITOR>SCAPAR.MAC.88, 25-Apr-84 13:05:18 by LOMARTIRE
;Remove all .SCFxx error codes as they are replaced by SCSxxx error codes
;
; UPD ID= 4109, SNARK:<6.MONITOR>SCAPAR.MAC.87, 23-Apr-84 18:36:14 by CDUNN
;Add definition of packet header sizes in both words and bytes
;
; UPD ID= 4086, SNARK:<6.MONITOR>SCAPAR.MAC.86, 17-Apr-84 08:32:38 by LOMARTIRE
;Rearrange connect block and update picture.
;Remove work queue header since it is no longer used.
;Add comments to each ring buffer feature routine picture.
;
; UPD ID= 4053, SNARK:<6.MONITOR>SCAPAR.MAC.85, 5-Apr-84 16:05:38 by LOMARTIRE
;Make common symbols between SCAPAR and MONSYM refer to the MONSYM ones.
;This includes the connection state definitions, and the MD%ILL symbol.
;
; UPD ID= 3993, SNARK:<6.MONITOR>SCAPAR.MAC.84, 28-Mar-84 10:02:45 by MCLEAN
;PUT BH.PRE BACK AGAIN IT GOT LOST
;
; UPD ID= 3991, SNARK:<6.MONITOR>SCAPAR.MAC.83, 28-Mar-84 01:13:01 by CDUNN
;Add functions .SSGLN and .SSRBS to the SCS% function handler table
;
; UPD ID= 3980, SNARK:<6.MONITOR>SCAPAR.MAC.82, 27-Mar-84 07:31:19 by GRANT
;Add PF.CPE and .PKUCD
;
; UPD ID= 3952, SNARK:<6.MONITOR>SCAPAR.MAC.80, 21-Mar-84 12:44:00 by LOMARTIRE
;Add documentation of feature specific data for the following ring entries:
; SYSAP to SCA, SCA to SYSAP, PI transitions, Packet transactions
;Add CBSWRD structure name to refer to the entire .CBSTS word
;Update table of contents
;
; UPD ID= 3939, SNARK:<6.MONITOR>SCAPAR.MAC.79, 18-Mar-84 09:10:44 by HALL
;Squeeze CBNPO to a half word. Put CBRCNT in other half.
;
; UPD ID= 3919, SNARK:<6.MONITOR>SCAPAR.MAC.78, 13-Mar-84 17:26:19 by HALL
;Add new bit in connection block
;
; UPD ID= 3909, SNARK:<6.MONITOR>SCAPAR.MAC.77, 12-Mar-84 16:27:02 by LOMARTIRE
;Add definitions for new ring buffer
;
; UPD ID= 3905, SNARK:<6.MONITOR>SCAPAR.MAC.76, 12-Mar-84 15:48:04 by HAUDEL
;
; UPD ID= 3876, SNARK:<6.MONITOR>SCAPAR.MAC.75, 7-Mar-84 19:33:05 by CDUNN
;Add .JBUFF to the queue header blocks (for packets only).
;
; UPD ID= 3860, SNARK:<6.MONITOR>SCAPAR.MAC.74, 6-Mar-84 13:53:27 by GRANT
;New PCB format. Add DEFSTRs SRMDG and SRMMG.
;
; UPD ID= 3842, SNARK:<6.MONITOR>SCAPAR.MAC.73, 3-Mar-84 16:35:48 by HALL
;Updated block states to match corporate spec
;ADD .SBOBB to system block
;Add .CBBUF, .CBNWQ, and CBEXPR to connection block
;
; UPD ID= 3789, SNARK:<6.MONITOR>SCAPAR.MAC.72, 28-Feb-84 15:23:56 by HAUDEL
;Change Performance Counter for new format.
;
; UPD ID= 3756, SNARK:<6.MONITOR>SCAPAR.MAC.71, 25-Feb-84 16:55:46 by HALL
;Fix length of system block (it wasn't updated when .SBSST was added)
;Add bit SBFOFL to be set when node is reported offline
;
; UPD ID= 3752, SNARK:<6.MONITOR>SCAPAR.MAC.70, 25-Feb-84 07:58:58 by HALL
;Add bit for v.c. closed
;New connection states
;
; UPD ID= 3718, SNARK:<6.MONITOR>SCAPAR.MAC.69, 21-Feb-84 13:25:58 by LOMARTIRE
;Modify the structure names for the working queue header
;
; UPD ID= 3715, SNARK:<6.MONITOR>SCAPAR.MAC.68, 21-Feb-84 13:03:08 by CDUNN
;Remove old C%xxxx definitions. Also add word length definitions for process
;names and connection data.
;
; UPD ID= 3703, SNARK:<6.MONITOR>SCAPAR.MAC.67, 20-Feb-84 10:08:38 by HAUDEL
;Correct Performance Counter Parameter.
;
; UPD ID= 3685, SNARK:<6.MONITOR>SCAPAR.MAC.66, 11-Feb-84 05:52:59 by GRANT
;Add field definitions for contents of PCB error words
;
; UPD ID= 3682, SNARK:<6.MONITOR>SCAPAR.MAC.65, 10-Feb-84 14:38:27 by LOMARTIRE
;Clean up structure definitions for system block.
;Remove all unwanted structures so that the full word is always used.
;
; UPD ID= 3672, SNARK:<6.MONITOR>SCAPAR.MAC.64, 8-Feb-84 12:18:17 by LOMARTIRE
;Add some structure definitions for message header locations
;
; UPD ID= 3620, SNARK:<6.MONITOR>SCAPAR.MAC.63, 1-Feb-84 13:05:25 by GRANT
;Add SRMBZ field to .SRRSV
;
; UPD ID= 3619, SNARK:<6.MONITOR>SCAPAR.MAC.62, 1-Feb-84 12:53:32 by GRANT
;Not enough 11-land in previous edit
;
; UPD ID= 3618, SNARK:<6.MONITOR>SCAPAR.MAC.61, 1-Feb-84 11:48:18 by GRANT
;Add SRVRS field to .SRRSV offset in START datagram
;
; UPD ID= 3599, SNARK:<6.MONITOR>SCAPAR.MAC.60, 31-Jan-84 12:23:48 by LOMARTIRE
;Add warnings about MSKSTR changes which could cause interlock problems
; These definitions will be marked as "*** Not to be changed ***"
;
; UPD ID= 3588, SNARK:<6.MONITOR>SCAPAR.MAC.59, 30-Jan-84 07:21:08 by GRANT
;Add KLPPR0, KLPPR1, KLPPR2, and KLPPR3 - symbols for packet sending priority
;
; UPD ID= 3586, SNARK:<6.MONITOR>SCAPAR.MAC.58, 29-Jan-84 06:52:50 by GRANT
;DEFSTR PKSRB for the entire software response bits field
;
; UPD ID= 3572, SNARK:<6.MONITOR>SCAPAR.MAC.57, 28-Jan-84 01:36:58 by MCLEAN
;ALSO FIX A LEFT OVER REFERENCE TO CBDGB
;REMOVE ALL P1 REFERENCES
;
; UPD ID= 3491, SNARK:<6.MONITOR>SCAPAR.MAC.56, 20-Jan-84 11:10:20 by CDUNN
;More TCO 6.1127 - Fix monument for PPD header. Also add a word to the
;SCA work queue entry to support buffer deferal.
;
; UPD ID= 3462, SNARK:<6.MONITOR>SCAPAR.MAC.55, 16-Jan-84 11:48:13 by GRANT
;Add .SRNNM to START packet definition
;
; UPD ID= 3441, SNARK:<6.MONITOR>SCAPAR.MAC.54, 12-Jan-84 10:15:21 by HAUDEL
;Add some performance counter definitions.
;
; UPD ID= 3439, SNARK:<6.MONITOR>SCAPAR.MAC.53, 12-Jan-84 08:12:25 by GRANT
;Add .SRRSV to START packet definition
;
; UPD ID= 3436, SNARK:<6.MONITOR>SCAPAR.MAC.52, 11-Jan-84 16:47:55 by GRANT
;Add PP.ERP - PPD byte 5 (error packet)
;
; UPD ID= 3371, SNARK:<6.MONITOR>SCAPAR.MAC.51, 27-Dec-83 08:11:57 by GRANT
;Add DEFSTRs for software fields in .PKVRT
;
; UPD ID= 3323, SNARK:<6.MONITOR>SCAPAR.MAC.50, 14-Dec-83 17:33:35 by MOSER
;TCO 6.1562 - START RUNNING THE MSCP SERVER SYSAP
;
; UPD ID= 3314, SNARK:<6.MONITOR>SCAPAR.MAC.49, 14-Dec-83 06:08:35 by GRANT
;Move VC.xxx to MONSYM
;
; UPD ID= 3302, SNARK:<6.MONITOR>SCAPAR.MAC.48, 13-Dec-83 13:16:32 by CDUNN
;More TCO 6.1127 - Fix the SC.MAP descriptor block definitions
;
; UPD ID= 3293, SNARK:<6.MONITOR>SCAPAR.MAC.47, 12-Dec-83 11:05:38 by HAUDEL
;Change field width of SETCNT's PORT field to 10(octal).
;
; UPD ID= 3290, SNARK:<6.MONITOR>SCAPAR.MAC.46, 11-Dec-83 20:20:57 by GRANT
;System Block - add .SBSST and eliminate .SBPST; define states VC.CLO, VC.STS,
;VC.STR, and VC.OPN for .SBVCS.
;Add PS.PAE, PS.PBE, PS.NRA, PS.NRB, PS.NRE, CK.PBA, and CK.PAA.
;
; UPD ID= 3280, SNARK:<6.MONITOR>SCAPAR.MAC.45, 8-Dec-83 13:51:08 by CDUNN
;More TCO 6.1127 - Fix C%SYMX, again...
;
; UPD ID= 3265, SNARK:<6.MONITOR>SCAPAR.MAC.44, 6-Dec-83 14:58:47 by CDUNN
;More TCO 6.1127 - Fix engineer brain damage. Fix SECMSK to be in the left
;half, not the right half.
;
; UPD ID= 3254, SNARK:<6.MONITOR>SCAPAR.MAC.43, 5-Dec-83 19:15:54 by CDUNN
;More TCO 6.1127 - Fix C%SYMX. Add support for maintainance data sends at JSYS
;level.
;
; UPD ID= 3235, SNARK:<6.MONITOR>SCAPAR.MAC.42, 30-Nov-83 15:26:47 by HAUDEL
;Change/Remove bits for Start Remote System
;
; UPD ID= 3184, SNARK:<6.MONITOR>SCAPAR.MAC.41, 17-Nov-83 16:17:36 by CDUNN
;More TCO 6.1127 - Remove unused definitions before they get used again. Also
;add C%FLGM to define mask for all SCA flags
;
; UPD ID= 2940, SNARK:<6.MONITOR>SCAPAR.MAC.40, 27-Sep-83 09:45:29 by GRANT
;Move KLIPA CDB offsets to PHYPAR
;
; UPD ID= 2875, SNARK:<6.MONITOR>SCAPAR.MAC.39, 2-Sep-83 11:27:49 by CDUNN
;More TCO 6.1127 - Add definition of C%DBIU for number of scratch datagrams
;to keep around...
;
; UPD ID= 2828, SNARK:<6.MONITOR>SCAPAR.MAC.38, 11-Aug-83 15:36:16 by CDUNN
;More TCO 6.1127 - Buffer parameter diddles and fixes to support maintainance
;mode packet sends
;
; UPD ID= 2751, SNARK:<6.MONITOR>SCAPAR.MAC.37, 22-Jul-83 16:42:09 by CDUNN
;More TCO 6.1127 - Add support definitions for the SCAMPI/SCSJSY cleanup.
;
; UPD ID= 2556, SNARK:<6.MONITOR>SCAPAR.MAC.36, 3-Jun-83 17:14:15 by CDUNN
;More TCO 6.1127 - Put the PPD byte definitions where they belong
;
; UPD ID= 2532, SNARK:<6.MONITOR>SCAPAR.MAC.35, 26-May-83 18:08:02 by CDUNN
;More TCO 6.1127 - Add page data block definition for buffer managment.
;
; UPD ID= 2460, SNARK:<6.MONITOR>SCAPAR.MAC.34, 12-May-83 17:14:16 by CDUNN
;More TCO 6.1127 - Add CBFKIL to the CB flags.
;
; UPD ID= 2457, SNARK:<6.MONITOR>SCAPAR.MAC.33, 11-May-83 12:40:54 by CDUNN
;More TCO 6.1127 - Add support definitions for interface bible changes of
;previous edit.
;
; UPD ID= 2421, SNARK:<6.MONITOR>SCAPAR.MAC.32, 4-May-83 13:51:13 by CDUNN
;More TCO 6.1127 - Change interface bible to return message/datagram length
;in packet header rather than in Q1. Update $CALTB to reflect changes in
;SCA callbacks.
;
; UPD ID= 2350, SNARK:<6.MONITOR>SCAPAR.MAC.31, 26-Apr-83 21:51:55 by CDUNN
;More TCO 6.1127 - Add .RGLEN to ring buffer and some random constants.
;
; UPD ID= 2324, SNARK:<6.MONITOR>SCAPAR.MAC.30, 22-Apr-83 01:40:44 by CDUNN
;More TCO 6.1127 - Add byte count to SCA/PPD interface bible on datagrams/msg
;return to SCA.
;
; UPD ID= 2255, SNARK:<6.MONITOR>SCAPAR.MAC.29, 12-Apr-83 23:17:22 by CDUNN
;More TCO 6.1127 - Remove IFNDEF for FTMSCP
;
; UPD ID= 2252, SNARK:<6.MONITOR>SCAPAR.MAC.28, 12-Apr-83 20:07:14 by CDUNN
;More TCP 6.1127 - Fix CIOn and CIOFF to preserve the state of the PI so
;PHYSIO does not get upset.
;
; UPD ID= 2199, SNARK:<6.MONITOR>SCAPAR.MAC.27, 8-Apr-83 05:15:31 by WACHS
;More TCO 6.1127 - Add performance counter definitions
;
; UPD ID= 2197, SNARK:<6.MONITOR>SCAPAR.MAC.26, 8-Apr-83 04:41:04 by CDUNN
;More TCO 6.1127 - Add .RGSBA to the definition of the SCA ring buffer. Also
;add definitions for idle chatter support. Note that this involves words added
;to the end of the system block. Add buffer address and callers PC to SCA
;ring buffer. Also fix CION and CIOFF to no do anything if already in PI 5
;code.
;
; UPD ID= 2163, SNARK:<6.MONITOR>SCAPAR.MAC.25, 4-Apr-83 21:22:08 by CDUNN
;More TCO 6.1127 - Change default to no PI debug
;
; UPD ID= 2156, SNARK:<6.MONITOR>SCAPAR.MAC.24, 4-Apr-83 18:05:27 by CDUNN
;More TCO 6.1127 - Add new performance counter setting definitions
;
; UPD ID= 2153, SNARK:<6.MONITOR>SCAPAR.MAC.23, 4-Apr-83 16:26:21 by CDUNN
;More TCO 6.1127 - Add defintions for idle chatter
;
; UPD ID= 2137, SNARK:<6.MONITOR>SCAPAR.MAC.22, 3-Apr-83 20:36:14 by CDUNN
;More TCO 6.1127 -
;1. Change connection state codes such that zero is no longer valid.
;2. Add ring buffer to CIOFF and CIOFF to aid in finding lost ones. Place
;under special debugging switch PIDBG.
;
; UPD ID= 2120, SNARK:<6.MONITOR>SCAPAR.MAC.21, 29-Mar-83 18:42:48 by CDUNN
;More TCO 6.1127 - Change $SKIP to be a macro and not an OPDEF so does not
;show up in DDT.
;
; UPD ID= 2114, SNARK:<6.MONITOR>SCAPAR.MAC.20, 29-Mar-83 05:50:22 by CDUNN
;More TCO 6.1127 - Fix CION and CIOFF to nest such that only the last CION
;really turns on channel 5.
;
; UPD ID= 2091, SNARK:<6.MONITOR>SCAPAR.MAC.19, 28-Mar-83 09:57:58 by GRANT
;Move MAXNDS to PROLOG
;
; UPD ID= 2089, SNARK:<6.MONITOR>SCAPAR.MAC.18, 28-Mar-83 02:10:33 by CDUNN
;More TCO 6.1127 - Add LOCPRT to interface bible. Also fix block state
;codes such that there is no block state zero. Make zero the clear state
;Also add performance counter definitions
;
; UPD ID= 2065, SNARK:<6.MONITOR>SCAPAR.MAC.17, 23-Mar-83 01:21:11 by CDUNN
;More TCO 6.1127 - Add C%OVHD, length of SCA header in bytes
;
; UPD ID= 2063, SNARK:<6.MONITOR>SCAPAR.MAC.16, 23-Mar-83 00:30:22 by CDUNN
;More TCO 6.1127 - Fix CB to remove .CBDGB and add .CBCDD. Also make pretty
;picture agree with reality...
;
; UPD ID= 2060, SNARK:<6.MONITOR>SCAPAR.MAC.15, 22-Mar-83 08:17:25 by WACHS
;More TCO 6.1127 - KLIPA error reporting
;
; UPD ID= 2056, SNARK:<6.MONITOR>SCAPAR.MAC.14, 22-Mar-83 00:50:12 by CDUNN
;More TCO 6.1127 - Fix event block lengths.
;
; UPD ID= 1982, SNARK:<6.MONITOR>SCAPAR.MAC.13, 11-Mar-83 22:47:09 by CDUNN
;More TCO 6.1127 - Fix definition of .STLST so SNDTAB and RECTAB are the
;correct length
;
; UPD ID= 1976, SNARK:<6.MONITOR>SCAPAR.MAC.12, 11-Mar-83 00:57:02 by CDUNN
;More TCO 6.1127 - Add callback for DMA transfer complete. Also some support
;definitions for DMA code...
; COPYRIGHT (c) DIGITAL EQUIPMENT CORPORATION 1984, 1988.
; ALL RIGHTS RESERVED.
;
; 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 THAT IS NOT SUPPLIED BY DIGITAL.
SUBTTL SCAPAR - Parameters for SCA
SEARCH MONSYM,MACSYM,PROLOG,PHYPAR
UNIVERSAL SCAPAR
;SCAPAR - Systems Communications Architecture Parameters
;
;
; Note:
; Some abbreviations appear EVERYWHERE in this module. They are:
;
; CB - Connection block
; SB - System block
; PB - Port Control Block
; SBI - System block index
; CID - Source connect ID
; PPD - Physical port driver
; BQ - Buffer deferal request queue
Subttl Table of Contents
; Table of Contents for SCAPAR
;
; Section Page
;
;
; 1. Mask definitions
; 1.1 Connect ID format . . . . . . . . . . . . . . 3
; 2. Block formats . . . . . . . . . . . . . . . . . . . . 4
; 2.1 System block . . . . . . . . . . . . . . . . . 5
; 2.2 Buffer header, buffer descriptor . . . . . . . 7
; 2.3 Queue pointer address blocks . . . . . . . . . 9
; 2.4 Configuration data block . . . . . . . . . . . 10
; 2.5 System wide maintainance data wait queue . . . 11
; 2.6 Connection state data . . . . . . . . . . . . 12
; 2.7 JSYS packet buffer "invisible data area" . . . 13
; 2.8 JSYS Buffer list descriptor block . . . . . . 14
; 2.9 Named buffer list block . . . . . . . . . . . 15
; 2.10 Map descriptor block . . . . . . . . . . . . . 16
; 2.11 Common queue header . . . . . . . . . . . . . 17
; 2.12 Event code block header . . . . . . . . . . . 18
; 2.13 DMA queue header . . . . . . . . . . . . . . . 19
; 2.14 SCA ring buffer entry . . . . . . . . . . . . 20
; 2.14.1 Feature data (SYSSCA) . . . . . . . . . 21
; 2.14.2 Feature data (SCASYS) . . . . . . . . . 22
; 2.14.3 Feature data (BUFMAN) . . . . . . . . . 23
; 2.14.4 Feature data (PKTEVT) . . . . . . . . . 24
; 2.14.5 Feature data (PITRAN) . . . . . . . . . 25
; 2.14.6 Feature data (PORTQU) . . . . . . . . . 26
; 2.14.7 Feature data (INTLOK) . . . . . . . . . 27
; 3. OPDEFs . . . . . . . . . . . . . . . . . . . . . . . . 28
; 4. Macros . . . . . . . . . . . . . . . . . . . . . . . . 29
; 4.1 ASCI8 (Generate word aligned 8-Bit ASCII) . . 30
; 4.2 $SCOFF (Get SCA disconnect interlock) . . . . 31
; 4.3 $SYSAP (SYSAP initilization address table) . . 32
; 4.4 $CALTB (Dispatch table for SCA to JSYS calls) 33
; 4.5 $DISPA (Dispatch table generator) . . . . . . 34
; 4.6 $BUILD,$SET,$EOB - Build pre-formed data block 35
; 4.7 $SCSFC . . . . . . . . . . . . . . . . . . . . 36
; 5. Function codes returned by SCA. . . . . . . . . . . . 37
; 6. Connection states . . . . . . . . . . . . . . . . . . 39
; 7. Connection block states . . . . . . . . . . . . . . . 40
; 8. SCA message types and lengths . . . . . . . . . . . . 41
; 9. Message formats
; 9.1 PPD packet definitions . . . . . . . . . . . . 42
; 9.2 Message header . . . . . . . . . . . . . . . . 43
; 9.3 Connect and Accept requests . . . . . . . . . 44
; 10. SCA/PPD Flags . . . . . . . . . . . . . . . . . . . . 45
; 11. Queue of Outstanding Requests . . . . . . . . . . . . 46
; 12. Random cruft for PHYMSC . . . . . . . . . . . . . . . 47
SUBTTL Mask definitions -- Connect ID format
; The following data structure defines the fields within a connect ID.
;There are two fields within the ID. The first field in the ID are bits
;settable by the SYSAP. This comes in handy for connection management, etc...
;The second field is the address of the connection block.
;
MSKSTR (SID,<>,<770000,,0>) ;Define the field for the SYSAP ID
MSKSTR (UBITS,<>,<7777,,760000>) ;Mask for the uniqueness bits
MSKSTR (INDEX,<>,<0,,17760>) ;Mask for CID table index
C%RMBU==^D13 ;Number of bits needed to right justify the
; uniqueness bits
SUBTTL Mask definitions -- Random masks
M%IBIT==17 ;Mask of bits to ignore from the wire
; Masks for bit swapping in outgoing and incoming messages
MSKSTR (M%AMII,<>,<377B31>) ;Incoming, input byte A, MSB
MSKSTR (M%ALII,<>,<377B23>) ;Incoming, input byte A, LSB
MSKSTR (M%BMII,<>,<377B15>) ;Incoming, input byte B, MSB
MSKSTR (M%BLII,<>,<377B7>) ;Incoming, input byte B, LSB
SUBTTL Block formats
SUBTTL Block formats -- Connection block
; +=======================================================+
; .CBANB ! Address of next connect block !
; !-------------------------------------------------------!
; .CBAPB ! Address of previous connect block !
; !-------------------------------------------------------!
; .CBSBA ! System block address !
; !-------------------------------------------------------!
; .CBSBI ! Destination node number ! Expected response !
; !-------------------------------------------------------!
; .CBSTS ! Connect block state ! Connection state !
; !-------------------------------------------------------!
; .CBFLG ! Flags !
; !-------------------------------------------------------!
; .CBSCI ! Source connect ID !
; !-------------------------------------------------------!
; .CBDCI ! Destination connect ID !
; !-------------------------------------------------------!
; .CBADR ! SYSAP callback address !
; !-------------------------------------------------------!
; .CBBUF ! Message buffers to queue ! Datagram buffers to queue !
; !-------------------------------------------------------!
; .CBNWQ ! Next entry on work queue !
; !-------------------------------------------------------!
; .CBSPN \ \
; \ Source process name \
; \ \
; !-------------------------------------------------------!
; .CBDPN \ \
; \ Destination process name \
; \ \
; !-------------------------------------------------------!
; .CBDTA \ \
; \ User supplied connect data \
; \ \
; !-------------------------------------------------------!
; .CBREA ! Dest. disconnect reason ! Source disconnect reason !
; !-------------------------------------------------------!
; .CBMCD ! Minimum send credit ! Minimum receive credit !
; !-------------------------------------------------------!
; .CBSCD ! Send credit !
; !-------------------------------------------------------!
; .CBRCD ! Receive credit !
; !-------------------------------------------------------!
; .CBPRC ! Pending receive credit !
; !-------------------------------------------------------!
; .CBRQC ! Requeue credit !
; !-------------------------------------------------------!
; .CBRTC ! Return credit !
; !-------------------------------------------------------!
; .CBNPO ! Packets on port command Q ! Reaping postponed count !
; !-------------------------------------------------------!
; .CBDGR ! Number of datagram buffers on hardware queue !
; !-------------------------------------------------------!
; .CBCDD ! Number of dropped datagrams !
; !-------------------------------------------------------!
; .CBLCK ! Interlock word for connect state !
; !-------------------------------------------------------!
; .CBPND ! Interlock word for credit_request in progress !
; !-------------------------------------------------------!
; .CBJNB ! Address of next connection block for this fork !
; !-------------------------------------------------------!
; .CBJPB ! Address of previous connection block for this fork !
; !-------------------------------------------------------!
; .CBMGJ ! Number of JSYS message receive buffers queued !
; !-------------------------------------------------------!
; .CBDGJ ! Number of JSYS DG buffers queued !
; !-------------------------------------------------------!
; .CBFRK ! Job number of owner job ! Fork number of owner fork !
; !-------------------------------------------------------!
; .CBTMQ ! Pointer to top of message avilable queue (for JSYS) !
; !-------------------------------------------------------!
; .CBBMQ ! Pointer to bot of message avilable queue (for JSYS) !
; !-------------------------------------------------------!
; .CBTDQ ! Pointer to top of datagram avilable queue (for JSYS) !
; !-------------------------------------------------------!
; .CBBDQ ! Pointer to bot of datagram avilable queue (for JSYS) !
; !-------------------------------------------------------!
; .CBTXQ ! Pointer to top of the DMA xfer complete queue !
; !-------------------------------------------------------!
; .CBBXQ ! Pointer to bot of the DMA xfer complete queue !
; !-------------------------------------------------------!
; .CBTEQ ! Pointer to top of the event queue !
; !-------------------------------------------------------!
; .CBBEQ ! Pointer to bot of the event queue !
; !-------------------------------------------------------!
; .CBTBQ ! Pointer to first buffer descriptor block !
; !-------------------------------------------------------!
; .CBBBQ ! Pointer to last buffer descriptor block !
; !-------------------------------------------------------!
; .CBPS0 ! PSI channel for messages ! PSI channel for datagrams !
; !-------------------------------------------------------!
; .CBPS1 ! PSI channel for DMA ! PSI channel for events !
; +=======================================================+
.CBANB==:0 ;Address of next connection block
.CBAPB==:.CBANB+1 ;Address of previous connection block
.CBSBA==:.CBAPB+1 ;System block address
.CBSBI==:.CBSBA+1 ;Destination node number,,expected response
MSKSTR (CBDNOD,<.CBSBI>,<-1,,0>) ;Dest system block index
MSKSTR (CBEXPR,<.CBSBI>,<0,,-1>) ;Expected response
.CBSTS==:.CBSBI+1 ;Status info
MSKSTR (CBBKST,<.CBSTS>,<-1,,0>) ;Block state
MSKSTR (CBCNST,<.CBSTS>,<0,,-1>) ;Connection state
.CBFLG==:.CBSTS+1 ;Flags
MSKSTR (CBFNNC,<.CBFLG>,<400000,,0>) ;Needs credit notify
MSKSTR (CBFJSY,<.CBFLG>,<200000,,0>) ;CB is for JSYS conn
MSKSTR (CBFABT,<.CBFLG>,<100000,,0>) ;CB has been aborted
MSKSTR (CBFRAP,<.CBFLG>,<040000,,0>) ;CB is to be reaped
MSKSTR (CBFDCL,<.CBFLG>,<020000,,0>) ;This was DC listener
MSKSTR (CBFKIL,<.CBFLG>,<010000,,0>) ;Fork has been killed
MSKSTR (CBFMDC,<.CBFLG>,<004000,,0>) ;Maint data CB
MSKSTR (CBFCVC,<.CBFLG>,<002000,,0>) ;V.C. was closed
MSKSTR (CBFSOB,<.CBFLG>,<001000,,0>) ;Stuck on buffers
MSKSTR (CBFPTC,<.CBFLG>,<000400,,0>) ;Protocol completed
MSKSTR (CBFERR,<.CBFLG>,<000200,,0>) ;SC.ERR deferred
MSKSTR (CBFDIS,<.CBFLG>,<000100,,0>) ;SC.DIS deferred
MSKSTR (CBFDRQ,<.CBFLG>,<000040,,0>) ;SC.DRQ deferred
MSKSTR (CBFSNM,<.CBFLG>,<000020,,0>) ;SC.SNM deferred
MSKSTR (CBFDEF,<.CBFLG>,<000360,,0>) ;All deferred bits
.CBSCI==:.CBFLG+1 ;Source connect ID
MSKSTR (CBSCID,<.CBSCI>,<-1>) ;Source connect ID
.CBDCI==:.CBSCI+1 ;Destination connect ID
MSKSTR (CBDCID,<.CBDCI>,<-1>) ;Destination connect ID
.CBADR==:.CBDCI+1 ;Address at which to call SYSAP on connect cond
.CBBUF==:.CBADR+1 ;Buffer requests
MSKSTR (CBIMB,<.CBBUF>,<-1,,0>) ;Number of message buffers to queue
MSKSTR (CBIDB,<.CBBUF>,<0,,-1>) ;Number of datagram buffers to queue
.CBNWQ==:.CBBUF+1 ;Next entry on work queue
.CBSPN==:.CBNWQ+1 ;Source process name
.CBDPN==:.CBSPN+4 ;Destination process name
.CBDTA==:.CBDPN+4 ;Caller-supplied connection data
.CBREA==:.CBDTA+4 ;Disconnect/reject reasons
MSKSTR (CBDDRE,<.CBREA>,<-1,,0>) ;Dest disconnect reasons
MSKSTR (CBSDRE,<.CBREA>,<0,,-1>) ;Source disconnect reasons
.CBMCD==:.CBREA+1 ;Threshold credit info
MSKSTR (CBMNSC,<.CBMCD>,<-1,,0>) ;Minimum send credit
MSKSTR (CBMNRC,<.CBMCD>,<0,,-1>) ;Minimum receive credit
.CBSCD==:.CBMCD+1 ;Send credit
.CBRCD==:.CBSCD+1 ;Receive credit
.CBPRC==:.CBRCD+1 ;Pending receive credit
.CBRQC==:.CBPRC+1 ;Requeue credit
.CBRTC==:.CBRQC+1 ;Return credit
.CBNPO==:.CBRTC+1 ;Num of packets (msg or dg) still on port cmd Q
MSKSTR (CBNPO,<.CBNPO>,<-1,,0>) ;Number of packets on command queue
MSKSTR (CBRCNT,<.CBNPO>,<0,,-1>) ;Number of times reaping postponed
.CBDGR==:.CBNPO+1 ;Number of DG buffers on hardware queue
.CBCDD==:.CBDGR+1 ;Number of dropped datagrams
MSKSTR (CBCDD,<.CBCDD>,<-1>)
.CBLCK==:.CBCDD+1 ;Interlock for connect state
.CBPND==:.CBLCK+1 ;Flag word for credit_request in progress
.CBJNB==:.CBPND+1 ;Addr of next CB in the job list
MSKSTR (CPJNB,<.CBJNB>,<-1>)
.CBJPB==:.CBJNB+1 ;Addr of previous CB in the job list
MSKSTR (CPJPB,<.CBJPB>,<-1>)
.CBMGJ==:.CBJPB+1 ;Number of JSYS message receive buffers queued
MSKSTR (CBMGJ,<.CBMGJ>,<-1>)
.CBDGJ==:.CBMGJ+1 ;Number of DG buffers in user space
MSKSTR (CBDGJ,<.CBDGJ>,<-1>)
.CBFRK==:.CBDGJ+1 ;Job number,,fork number of who owns connection
MSKSTR (CBFORK,<.CBFRK>,<0,,-1>) ;Fork of connect owner
MSKSTR (CBJOB,<.CBFRK>,<-1,,0>) ;Job of connect owner
.CBTMQ==:.CBFRK+1 ;Pointer to first buffer on message pending Q
MSKSTR (CBTMQ,<.CBTMQ>,<-1>)
.CBBMQ==:.CBTMQ+1 ;Pointer to bottom of message available queue
MSKSTR (CBBMQ,<.CBBMQ>,<-1>)
.CBTDQ==:.CBBMQ+1 ;Pointer to top of datagram available queue
MSKSTR (CBTDQ,<.CBTDQ>,<-1>)
.CBBDQ==:.CBTDQ+1 ;Pointer to bottom of datagram availab queue
MSKSTR (CBBDQ,<.CBBDQ>,<-1>)
.CBTXQ==:.CBBDQ+1 ;Pointer to top of DMA xfer queue
MSKSTR (CBTXQ,<.CBTXQ>,<-1>)
.CBBXQ==:.CBTXQ+1 ;Pointer to bot of DMA xfer queue
MSKSTR (CBBXQ,<.CBBXQ>,<-1>)
.CBTEQ==:.CBBXQ+1 ;Top of event queue
MSKSTR (CBTEQ,<.CBTEQ>,<-1>)
.CBBEQ==:.CBTEQ+1 ;Bot of event queue
MSKSTR (CBBEQ,<.CBBEQ>,<-1>)
.CBTBQ==:.CBBEQ+1 ;Pointer to first buffer list desrciptor block
MSKSTR (CBTBQ,<.CBTBQ>,<-1>)
.CBBBQ==:.CBTBQ+1 ;Pointer to last buffer list desctiptor block
MSKSTR (CBBBQ,<.CBBBQ>,<-1>)
.CBPS0==:.CBBBQ+1 ;First word of PSI channels for the connection
MSKSTR (CBPMG,<.CBPS0>,<-1,,0>) ;PSI for messages
MSKSTR (CBPDG,<.CBPS0>,<0,,-1>) ;PSI for datagrams
.CBPS1==:.CBPS0+1 ;Second word of PSI channels for connection
MSKSTR (CBPDA,<.CBPS1>,<-1,,0>) ;PSI for dta transfer
MSKSTR (CBPEV,<.CBPS1>,<0,,-1>) ;PSI for events
.CBLEN==:.CBPS1+1 ;Length of the connection block
IF2 <IFL <C%MGSZ-.CBLEN>,<PRINTX ?SCAPAR: Connection block to long for a message buffer>>
SUBTTL Block formats -- System block
; !=======================================================!
; .SBANB ! Address of next system block !
; !-------------------------------------------------------!
; .SBAPB ! Address of associated port control block !
; !-------------------------------------------------------!
; .SBACD ! Address of associated channel data block !
; !-------------------------------------------------------!
; .SBVCS ! Closing/opening bits ! Dest vir cir state !
; !-------------------------------------------------------!
; .SBDSP ! Channel number ! Destination port !
; !-------------------------------------------------------!
; .SBDRQ ! Datagram return queue header !
; !-------------------------------------------------------!
; .SBLMB ! Local message buffer header !
; !-------------------------------------------------------!
; .SBFCB ! Pointer to first connection block !
; !-------------------------------------------------------!
; .SBLCB ! Pointer to last connection block !
; !-------------------------------------------------------!
; .SBTWQ ! FLINK for SCA work queue !
; !-------------------------------------------------------!
; .SQBWQ ! BLINK for SCA work queue !
; !-------------------------------------------------------!
; .SBCLC ! Count of locked connections !
; !-------------------------------------------------------!
; .SBQOR ! Pointer to queue of outstanding requests !
; !-------------------------------------------------------!
; .SBDSS \ \
; \ Destination system \
; !-------------------------------------------------------!
; .SBMMS ! Max mess size (bytes) ! Max DG size (Bytes) !
; !-------------------------------------------------------!
; .SBDST ! Destination software type !
; !-------------------------------------------------------!
; .SBDSV ! Destination software version !
; !-------------------------------------------------------!
; .SBDSE ! Destination software edit level !
; !-------------------------------------------------------!
; .SBDHT ! Destination harware type !
; !-------------------------------------------------------!
; .SBDHV \ Destination hardware version \
; \ \
; \ \
; !-------------------------------------------------------!
; .SBNNM \ Destination port name \
; \ \
; !-------------------------------------------------------!
; .SBDPC ! Destination port characteristics !
; !-------------------------------------------------------!
; .SBDCR ! Destination Port Code Revision Level !
; !-------------------------------------------------------!
; .SBDPF ! Destination Port Functionality !
; !-------------------------------------------------------!
; .SBDPS ! Destination Port State !
; !-------------------------------------------------------!
; .SBTIM ! TODCLK at last message from this remote !
; !-------------------------------------------------------!
; .SBFLG ! Flags !
; !-------------------------------------------------------!
; .SBSST ! Start Sequence Timer !
; !-------------------------------------------------------!
; .SBOBB ! Out bound buffer for system block !
; !=======================================================!
;
KDBCID==:KDBDDP+PRTMXU ;Controller ID (8 8-bit bytes)
KDBIAC==:KDBCID+2 ;Saved ACs for use during initing a node
;Note that the system block for a node starts immediately after the KDB
.SBANB==:KDBIAC+10 ;Addr of next system block
.SBAPB==:.SBANB+1 ;Address of associated port control block
.SBACD==:.SBAPB+1 ;Address of associated channel data block
.SBVCS==:.SBACD+1 ;Destiation virtual circuit state
MSKSTR (SBNTC,<.SBVCS>,<1B0>) ;Need to close VC
MSKSTR (SBOKO,<.SBVCS>,<1B1>) ;OK to open VC
MSKSTR (SBWFI,<.SBVCS>,<1B2>) ;Waiting for a new IDREC
MSKSTR (SBVCST,<.SBVCS>,<0,,-1>) ;Virtual circuit state
;(symbols for states in MONSYM)
.SBDSP==:.SBVCS+1 ;Channel number,,Destination port
MSKSTR (SBCHN,<.SBDSP>,<-1,,0>) ;Channel number
MSKSTR (SBDPA,<.SBDSP>,<0,,-1>) ;Destination port address
.SBDRQ==:.SBDSP+1 ;Datagram return queue header
MSKSTR (SBDRQH,<.SBDRQ>,<-1>) ;Datagram return queue header
.SBLMB==:.SBDRQ+1 ;Local message buffer header
MSKSTR (SBLMBH,<.SBLMB>,<-1>) ;Local message buffer header
.SBFCB==:.SBLMB+1 ;Pointer to first connection block
.SBLCB==:.SBFCB+1 ;Pointer to last coonection block
.SBTWQ==:.SBLCB+1 ;FLINK for SCA work queue for this SB
.SBBWQ==:.SBTWQ+1 ;BLINK for SCA work queue for this SB
.SBCLC==:.SBBWQ+1 ;Count of locked connections
.SBQOR==:.SBCLC+1 ;Pointer to queue of outstanding requests
.SBDSS==:.SBQOR+1 ;Destination system
.SBMMS==:.SBDSS+2 ;Maximum message sizes
MSKSTR (SBMXMG,<.SBMMS>,<-1,,0>) ;Maximum message size
MSKSTR (SBMXDG,<.SBMMS>,<0,,-1>) ;Maximum datagram size
.SBDST==:.SBMMS+1 ;Destination software type
MSKSTR (SBDTSW,<.SBDST>,<-1>) ;Destination software type
.SBDSV==:.SBDST+1 ;Destination software version
MSKSTR (SBDVSW,<.SBDSV>,<-1>) ;Destination software version
.SBDSE==:.SBDSV+1 ;Destination software edit level
.SBDHT==:.SBDSE+2 ;Destination hardware type
MSKSTR (SBDTHW,<.SBDHT>,<-1>) ;Destination hardware type
.SBDHV==:.SBDHT+1 ;Destination hardvare version
MSKSTR (SBDVHW,<.SBDHV>,<-1>) ;Destination hardware version
.SBNNM==:.SBDHV+3 ;Destination port name
.SBDPC==:.SBNNM+2 ;Destination port characteristics
.SBDCR==:.SBDPC+1 ;Destination Port Characteristics (from IDREC)
.SBDPF==:.SBDCR+1 ;Destination Port Code Revision Level
.SBDPS==:.SBDPF+1 ;Destination Port Functionality
MSKSTR (SBDPS,<.SBDPS>,<000000,,070000>) ;Port State
MSKSTR (SBDRP,<.SBDPS>,<000000,,007760>) ;Resetting Node
.SBTIM==:.SBDPS+1 ;TODCLK at last received message
.SBFLG==:.SBTIM+1 ;Flags
MSKSTR (SBFLG,<.SBFLG>,<-1>) ;Mask for full flags field
MSKSTR (SBFTMG,<.SBFLG>,<400000,,000000>);Timed message
MSKSTR (SBFOVC,<.SBFLG>,<200000,,000000>);VC needs open
MSKSTR (SBFOFL,<.SBFLG>,<40000,,000000>);Node offline
.SBSST==:.SBFLG+1 ;VC start sequence timer
MSKSTR (SBSST,<.SBSST>,<-1>)
.SBOBB==:.SBSST+1 ;Out bound buffer for system block
MSKSTR (SBOBB,<.SBOBB>,<-1>)
.SBLEN==:.SBOBB+1 ;Length of the system block
; PCB
.PBIWD==0 ;Offset for interlock word
.PBFLI==1 ;Offset for FLINK
.PBBLI==2 ;Offset for BLINK
.PBBDT==0 ;Buffer descriptor table addr
.PBMQE==1 ;Message queue entry length
.PBDQE==2 ;Datagram queue entry length
;WORD 3 IS RESERVED
.PBQ3I==4 ;Queue 3 interlock
.PBQ3F==5 ;Queue 3 FLINK
.PBQ3B==6 ;Queue 3 BLINK
.PBQ2I==7 ;Queue 2 interlock
.PBQ2F==10 ;Queue 2 FLINK
.PBQ2B==11 ;Queue 2 BLINK
.PBQ1I==12 ;Queue 1 interlock
.PBQ1F==13 ;Queue 1 FLINK
.PBQ1B==14 ;Queue 1 BLINK
.PBQ0I==15 ;Queue 0 interlock
.PBQ0F==16 ;Queue 0 FLINK
.PBQ0B==17 ;Queue 0 BLINK
MAXQUE==3 ;Highest QUEUE
.PBRQI==20 ;Response QUEUE interlock
.PBRQF==21 ;Response QUEUE FLINK
.PBRQB==22 ;Response QUEUE BLINK
.PBMFI==23 ;Message FREE queue INTERLOCK
.PBMFF==24 ;Message FREE QUEUE FLINK
.PBMFB==25 ;Message FREE QUEUE BLINK
.PBDFI==26 ;Datagram FREE querue INTERLOCK
.PBDFF==27 ;Datagram FREE QUEUE FLINK
.PBDFB==30 ;Datagram FREE QUEUE BLINK
.PBQND==31 ;End of queue structure in PCB
;WORDS 31-34 ARE RESERVED
.PBER0==35 ;Error word 0 (QUEUE INFORMATION)
DEFSTR (E0CMD,.PBER0,0,1) ;ERROR WHILE READING A COMMAND
DEFSTR (E0QUE,.PBER0,2,2) ;COMMAND QUEUE THAT HAD THE ERROR -
;(VALID ONLY IF E1CMD IS ON)
DEFSTR (E0RES,.PBER0,3,1) ;ERROR WHILE BUILDING A RESPONSE
DEFSTR (E0MBZ,.PBER0,11,5) ;MUST BE ZERO
DEFSTR (E0FLI,.PBER0,35,24) ;FLINK OF ENTRY IN ERROR
.PBER1==36 ;Error word 1 (API FUNCTION WORD)
.PBER2==37 ;Error word 2 (REGISTER DATA)
.PBER3==40 ;Error word 3 (CHANNEL LOGOUT WORD 1)
.PBER4==41 ;Error word 4 (CHANNEL LOGOUT WORD 2)
.PBPBA==42 ;PCB base address
.PBPIA==43 ;PI level
.PBRS5==44 ;Reserved
.PBCCW==45 ;Channel control word
;WORD 46 IS RESERVED
L.PCB==47 ;Length of port control block
SUBTTL Block formats -- Buffer header, buffer descriptor
; Buffer header descriptor
;
; +================+==========================+==+==+==+
; |00<---------->15|16<------------------->|32|33|34|35|
; .BHKEY | KEY | MBZ |P |V |E |W | 0
; +----------------+--------------------------+--+--+--+
; |00<------->11|12<-------------------------------->35|
; .BHBSA | MBZ | FIRST BUFFER SEGMENT DESCRIPTOR ADDR |--+ 1
; +-------------+--------------------------------------+ |
; |00<---------------------------------------------->35| |
; .BHLEN | LENGTH | | 2
; +----------------------------------------------------+ |
; | RESERVED | | 3
; +----------------------------------------------------+ |
; V |
; V |
; V |
; BUFFER SEGMENT DESCRIPTOR # 1 |
; +-------+-------+-------+----------------------------+ |
; |00<->05|06<->07|08<->11|12<---------------------->35|<-+
; .BSADR | MBZ | MODE | MBZ | BUFFER SEGMENT BASE ADDR | 0
; |-------+-------+--+----+----------------------------+
; |00<------------>11|12<--------------------------->35|
; .BSNXT | MBZ | NEXT BUFFER SEGMENT DESCRIPTOR |--+ 1
; |------------------+---------------------------------+ |
; |00<---------------------------------------------->35| |
; .BSLEN | SEGMENT LENGTH | | 2
; |----------------------------------------------------+ |
; | RESERVED | | 3
; +====================================================+ |
; V |
; V |
; V |
; BUFFER SEGMENT DESCRIPTOR # n |
; +=======+=======+=======+============================+ |
; |00<->05|06<->07|08<->11|12<---------------------->35|<-+
; .BSADR | MBZ | MODE | MBZ | BUFFER SEGMENT BASE ADDR | 0
; +-------+-------+-------+----------------------------+
; |00<------------>11|12<--------------------------->35|
; .BSNXT | MBZ | NEXT BUFFER SEGMENT DESCRIPTOR | 1
; |------------------+---------------------------------+
; |00<---------------------------------------------->35|
; .BSLEN | SEGMENT LENGTH | 2
; |----------------------------------------------------+
; | RESERVED | 3
; +====================================================+
;
BHDNUM==140 ;****Number of buffer header descriptor's******
;In the buffer name
BHPIDX==^D31 ;Index into buffer descriptor table
BHSIDX==^D16
;In the BHD/BSD
.BHKEY==0 ;Key
BHPKEY==^D15 ;Position
BHSKEY==^D16 ;Size
BH.PRE==1B32 ;Preserve Valid bit
BH.VAL==1B33 ;Valid bit
BH.ERR==1B34 ;Error bit
BH.WRT==1B35 ;Writable
.BHBSA==.BHKEY+1 ;Addr of buffer segment descriptor
.BHLEN==.BHBSA+1 ;Length (in nibbles) of entire transfer
L.BHD==4 ;Length of a buffer header descriptor
BHDSHF==2 ;Shift to produce L.BHD from index
.BSADR==0 ;Address of segment/mode of segment
BSPMOD==7 ;Position
BSSMOD==2 ;Size of field
BS.ICM==0B7 ;Industry-compatable mode
BS.CDM==1B7 ;Core-dump mode
BS.HDM==2B7 ;High-density mode
BS.ASM==3B7 ;7-bit ASCII mode (not available on KLIPA)
.BSNXT==.BSADR+1 ;Pointer to next segment descriptor
.BSLEN==.BSNXT+1 ;Length (nibbles) of this segment
CDNPW==12 ;Core dump nibbles per word for BHD/BSD
HDNPW==11 ;High density nibbles per word for BHD/BSD
L.BSD==4 ;Length of a buffer segment descriptor
SUBTTL Block formats -- Queue pointer address blocks
; The following is the definition of the block used to pass the addresses of
;queues between routines in SCSJSY. See SCSDEQ in SCSJSY.MAC.
;
; And now, a word from our sponsor:
; The purpose of these blocks is to make it possible for one routine
;to dequeue any type packet from any of the fork and connection queues it is
;on. When deleteing datagrams, events, DMA notifications, or messages from the
;fork and connection queues, the same routine is called. The only information
;that changes between these types of packets, is the addresses of the list
;head and tail pointers. Hence passing the address of one a block like this
;to SCSDEQ tells it all it needs to know...
;
; This is alot cleaner and no more expensive than a hard coded routine for
;each packet type...
;
; !=======================================================!
; .TOPCQ ! Addr of connect Q head pointer !
; !-------------------------------------------------------!
; .BOTCQ ! Addr of connect Q tail pointer !
; !-------------------------------------------------------!
; .TOPFQ ! Addr of fork Q head pointer !
; !-------------------------------------------------------!
; .BOTFQ ! Addr of fork Q tail pointer !
; !-------------------------------------------------------!
; .JBBUF ! Count of these JSYS buffers !
; !=======================================================!
;
.TOPCQ==0
.BOTCQ==.TOPCQ+1
.TOPFQ==.BOTCQ+1
.BOTFQ==.TOPFQ+1
.JBUFF==.BOTFQ+1 ;Note, this field is null for the event and DMA
; queues
QLEN==.JBUFF+1
SUBTTL Block formats -- Configuration data block
; He we find the format of the data returned by a call to SC.RCD.
;
; +=======================================================+
; .RDSTS ! Virtual circuit state ! Port number !
; !-------------------------------------------------------!
; .RDSYS \ \
; \ System address (6 8-bit bytes, word aligned) \
; \ \
; !-------------------------------------------------------!
; .RDMDG ! Maximum destination datagram size !
; !-------------------------------------------------------!
; .RDMMS ! Maximum destination message size !
; !-------------------------------------------------------!
; .RDDST ! Destination software type !
; !-------------------------------------------------------!
; .RDDSV ! Destination software version !
; !-------------------------------------------------------!
; .RDDSI \ \
; \ Destination software incarnation \
; !-------------------------------------------------------!
; .RDDHT ! Destination hardware type !
; !-------------------------------------------------------!
; .RDDHV \ Destination hardware version \
; \ \
; \ \
; !-------------------------------------------------------!
; .RDNNM \ Destination port name \
; \ \
; !-------------------------------------------------------!
; .RDPCH ! Destination Port Characteristics !
; !-------------------------------------------------------!
; .RDPRL ! Destination Port Code Revision Level !
; !-------------------------------------------------------!
; .RDPFC ! Destination Port Functionality !
; !-------------------------------------------------------!
; .RDPST ! Destination Port State !
; +=======================================================+
.RDSTS==0 ;Virtual circuit state and port number
.RDSYS==.RDSTS+1 ;System address
.RDMDG==.RDSYS+2 ;Maximum size datagram destination accepts
.RDMMS==.RDMDG+1 ;Maximum size message destination accepts
.RDDST==.RDMMS+1 ;Destination software type
.RDDSV==.RDDST+1 ;Destination software version
.RDDSI==.RDDSV+1 ;Destination software incarnation
.RDDHT==.RDDSI+2 ;Destination hardware type
.RDDHV==.RDDHT+1 ;Destination hardware version
.RDNNM==.RDDHV+3 ;Destination port name
.RDPCH==.RDNNM+2 ;Destination port characteristics
.RDPRL==.RDPCH+1 ;Destination port code revision level
.RDPFC==.RDPRL+1 ;Destination port functionality
.RDPST==.RDPFC+1 ;Destination port state
.RDLEN==.RDPST+1 ;Define the length of all this
MSKSTR (RDVCST,<.RDSTS>,<-1,,0>) ;Virtual circuit state
MSKSTR (RDPORT,<.RDSTS>,<0,,-1>) ;Port number
MSKSTR (RDMDG,<.RDMDG>,<-1>) ;Max destination datagram size
MSKSTR (RDMMS,<.RDMMS>,<-1>) ;Max destination message size
MSKSTR (RDDST,<.RDDST>,<-1>) ;Dest software type
MSKSTR (RDDSV,<.RDDSV>,<-1>) ;Dest software version
MSKSTR (RDDHT,<.RDDHT>,<-1>) ;Dest hardware type
MSKSTR (RDDHV,<.RDDHV>,<-1>) ;Dest hardware version
SUBTTL Block formats -- System wide maintainance data wait queue
; This queue's sole purpose in life is to associate a buffer name with a
;connect block address. When a maint transfer is requested, a phoney CB
;is created and linked onto the SB lists of the target system. This CB
;allows the JSYS code to use the normal notification mechanism when the
;request completes.
;
; Note that there is a CB for every transfer regardless of the fact that this
;will result in many CBs for the transfers of one fork.
;
; !=======================================================!
; .MQNXT ! Address of next queue entry !
; !-------------------------------------------------------!
; .MQBUF ! Buffer name !
; !-------------------------------------------------------!
; .MQCBA ! Connect block address !
; !=======================================================!
;
.MQNXT==0 ;Address of next entry
.MQBUF==.MQNXT+1 ;Buffer name for maint data transfer
.MQCBA==.MQBUF+1 ;Address of CB for this transfer
.MQLEN==.MQCBA+1 ;Length of this block
SUBTTL Block formats -- Connection state data
; Here we find the format of the data returned by a call to the connection
;state update stuff.
;
; !=======================================================!
; .CDCST ! Connection state !
; !-------------------------------------------------------!
; .CDDCI ! Destination Connect ID !
; !-------------------------------------------------------!
; .CDDPN \ \
; \ Destination process name \
; \ \
; !-------------------------------------------------------!
; .CDNOD ! Destination node !
; !-------------------------------------------------------!
; .CDREA ! Source disconnect reasons ! Dest disconnect reasons !
; !=======================================================!
;
.CDCST==0 ;Connection state
.CDDCI==.CDCST+1 ;Destination connect ID
.CDDPN==.CDDCI+1 ;Destination process name
.CDNOD==.CDDPN+4 ;Node number
.CDREA==.CDNOD+1 ;Disconnect reasons
.CDLEN==.CDREA+1 ;Length of this block
MSKSTR (CDCST,<.CDCST>,<-1>) ;Connection state
MSKSTR (CDDCI,<.CDDCI>,<-1>) ;Destination connect ID
MSKSTR (CDNOD,<.CDNOD>,<-1>) ;Destination node number
MSKSTR (CDSREA,<.CDREA>,<-1,,0>) ;Source disconnect reasons
MSKSTR (CDDREA,<.CDREA>,<0,,-1>) ;Destination disconnect reasons
SUBTTL Block formats -- JSYS packet buffer "invisible data area"
; The following is the format of the "invisible data area" appearing before
;every SCA provided buffer.
;
; !=======================================================!
;-C%BINV \ \
; \ Reserved \
; \ \
; !-------------------------------------------------------!
; .JHFLG ! Flags !
; !-------------------------------------------------------!
; .JHAUB ! Address of user buffer data was copied from !
; !-------------------------------------------------------!
; Word 0 \ \
; \ Port driver header \
; \ \
; !-------------------------------------------------------!
; \ \
; \ SCA header \
; \ \
; !-------------------------------------------------------!
; \ \
; \ Packet text \
; \ \
; !=======================================================!
;
; Note that word zero is the word pointed to whenever an address for this
;buffer is passed. C%BINV is the size of the invisible data area, and
;.JHAUB is the JSYS' pointer to the user buffer associated with this monitor
;buffer.
;
.JHAUB==-1 ;Address of user buffer
.JHFLG==-2 ;Flags
MSKSTR (JH%DGB,<.JHFLG>,<400000,,0>) ;Datagram buffer flag
SUBTTL Block formats -- JSYS Buffer list descriptor block
; The following box describes the format of the buffer list descriptor blocks
;used by the JSYS code to maintain a list of buffers queued by the user.
;
; !=======================================================!
; .BDNXT ! Address of next BSD !
; !-------------------------------------------------------!
; .BDPRE ! Address of previous BSD !
; !-------------------------------------------------------!
; .BDFFD ! Address of first free entry within this BSD !
; !-------------------------------------------------------!
; .BDLFD ! Address of last free entry within this BSD !
; !-------------------------------------------------------!
; .BDFMG ! Address of first message buffer entry !
; !-------------------------------------------------------!
; .BDLMG ! Address of last message buffer entry !
; !-------------------------------------------------------!
; .BDFDG ! Address of first datagram buffer entry !
; !-------------------------------------------------------!
; .BDLDG ! Address of last datagram buffer entry !
; !-------------------------------------------------------!
; .BDBDB \ \
; \ \
; \ Buffer descriptor blocks \
; \ \
; \ \
; !=======================================================!
;
.BDNXT==0 ;Address of next buffer segment descrip block
MSKSTR (BDNXT,<.BDNXT>,<-1>)
.BDPRE==.BDNXT+1 ;Address of previous buffer segment desc block
MSKSTR (BDPRE,<.BDPRE>,<-1>)
.BDFFD==.BDPRE+1 ;Address of first free block
MSKSTR (BDFFD,<.BDFFD>,<-1>)
.BDLFD==.BDFFD+1 ;Address of last free block
MSKSTR (BDLFD,<.BDFFD>,<-1>)
.BDFMG==.BDLFD+1 ;Address of first message buffer block
MSKSTR (BDFMG,<.BDFMG>,<-1>)
.BDLMG==.BDFMG+1 ;Address of the last message buffer block
MSKSTR (BDLMG,<.BDLMG>,<-1>)
.BDFDG==.BDLMG+1 ;Addr of first datagram buffer block
MSKSTR (BDFLD,<.BDFLD>,<-1>)
.BDLDG==.BDFDG+1 ;Addr of last datagram buffer block
MSKSTR (BDLLD,<.BDLLD>,<-1>)
.BDBDB==.BDLDG+1 ;Offset to first buffer descriptor block
;Note: List BLINKs must all be the same number of words from the list FLINK if
;SCSLUB is going to work. This offset (in words) between ALL list FLINKs to the
;list BLINKs is here defined.
;
.BDF2B==1 ;Offset from list FLINKs to list BLINKs
; Buffer descriptor block
;
; !=======================================================!
; .BBNXT ! Next block in list !
; !-------------------------------------------------------!
; .BBUVA ! User virtual address !
; !=======================================================!
;
.BBNXT==0 ;Next block in list
MSKSTR (BBNXT,<.BBNXT>,<-1>)
.BBUVA==.BBNXT+1 ;User virtual address
MSKSTR (BBUVA,<.BBUVA>,<-1>)
.BBLEN==.BBUVA+1 ;Length of an entry
C%NBSD==<C%DGSZ-.BDBDB>/<.BBLEN+1>
SUBTTL Block formats -- Named buffer list block
; The following is the format of an entry on the SCS% JSYS named buffer list.
;The list is used to keep track of the buffer names associated with a fork.
;Since they are only associated with a fork (and not a CB) the list pointers
;are only kept in the PSB (SCSTXN/SCSBXN). Resident free space is used for the
;entries.
;
; !=======================================================!
; .XNNXT ! Address of next entry !
; !-------------------------------------------------------!
; .XNPRV ! Address of previous entry !
; !-------------------------------------------------------!
; .XNNAM ! Buffer name !
; !-------------------------------------------------------!
; .XNSTK ! Address of datagram buffer containing page stack !
; !=======================================================!
;
; Note:
;Many routines depend on .XNNXT being word zero of the entry.
;
.XNNXT==0 ;Address of next entry
MSKSTR (XNNXT,<.XNNXT>,<-1>)
.XNPRV==.XNNXT+1 ;Address of previous entry
MSKSTR (XNPRV,<.XNPRV>,<-1>)
.XNNAM==.XNPRV+1 ;Buffer name
MSKSTR (XNNAM,<.XNNAM>,<-1>)
.XNSTK==.XNNAM+1 ;Page stack address
MSKSTR (XNSTK,<.XNSTK>,<-1>)
.XNLEN==.XNSTK+1 ;Length of an entry
SUBTTL Block formats -- Map descriptor block
; The following is the format of the descriptor block handed to SC.MAP
;as an arg...
;
;
; !=======================================================!
; .MDNXT ! Address of next buffer in chain or zero if none !
; !-------------------------------------------------------!
; .MDFLG ! Flags !
; !-------------------------------------------------------!
; .MDSSD ! Length of buffer segment 0 !
; !-------------------------------------------------------!
; ! Physical address of the segment 0 !
; !-------------------------------------------------------!
; \ \
; \ \
; \ segment descriptor pairs \
; \ \
; \ \
; !-------------------------------------------------------!
; ! Length of buffer segment #n !
; !-------------------------------------------------------!
; ! Physical address of the segment #n !
; !-------------------------------------------------------!
; ! 0 !
; !=======================================================!
;
.MDNXT==0 ;Link to next descriptor block
.MDFLG==.MDNXT+1 ;Flags word
MSKSTR (MD%FLG,<>,<17B35>) ;Mask of defined flag values
MSKSTR (MD%DMD,<>,<SQ%DMD>) ;Mask for mode value
MD%DIC==SQ%DIC ;Industry compatable mode
MD%DCD==SQ%DCD ;Core dump mode (Unsupported)
MD%DHD==SQ%DHD ;High density mode
MD%ILL==SQ%ILL ;The dissallowed value
;THE FOLLOWING TWO DEFINITIONS ARE DEFINED IN MONSYM. ENTERED HERE
;FOR REFERENCE.
; SQ%CVD==:1B32 ;DO NOT CLEAR VALID BIT
; SQ%WRT==:1B33 ;ALLOW WRITING OF BUFFER
.MDSSD==.MDFLG+1 ;START OF SEGMENT DESCRIPTORS
.MDLSD==2 ;LENGTH OF SEGMENT DESCRIPTORS
.MDLEN==0 ;First word of desc block, length of segment
.MDADR==1 ;Address of segment
SUBTTL Block formats -- Common queue header
; The following defines the portion of the queue entry header that is common
;to all queues (message, datagram, DMA, and event queues).
;
; !=======================================================!
; .MEANC ! Pointer to next entry for this connection !
; !-------------------------------------------------------!
; .MEAPC ! Pointer to previous entry for this connection !
; !-------------------------------------------------------!
; .MEANF ! Pointer to next entry for this fork !
; !-------------------------------------------------------!
; .MEAPF ! Pointer to previous entry for this fork !
; !-------------------------------------------------------!
; .MEFRK ! Length of packet ! Fork number !
; !-------------------------------------------------------!
; .METYP ! Flags ! Entry type code !
; !-------------------------------------------------------!
; .MECID ! Connect ID !
; !=======================================================!
;
.MEANC==0 ;Offset to the pointer to next entry word
.MEAPC==.MEANC+1 ;Address of previous entry for this connection
.MEANF==.MEAPC+1 ;Addr of next entry for this fork
.MEAPF==.MEANF+1 ;Addr of previous entry for this fork
.MEFRK==.MEAPF+1 ;Target fork number
MSKSTR (MEFRK,<.MEFRK>,<0,,-1>) ;Mask for target fork number
MSKSTR (MELEN,<.MEFRK>,<-1,,0>) ;Mask for packet length
.METYP==.MEFRK+1 ;Flags and block type
MSKSTR (MEFLG,<.METYP>,<-1,,0>) ;Mask for flag bits
MSKSTR (METYP,<.METYP>,<0,,-1>) ;Mask for entry type code
.ETMSG==1 ;Entry type - Message buffer
.ETDG==2 ;Entry type - Datagram buffer
.ETEVT==3 ;Entry type - Event block
.ETDMA==4 ;Entry type - DMA completion notice
;Warning, if you change an event type code, be sure to
;change PSIXCT in SCSJSY as well...
.MECID==.METYP+1 ;CID this entry is for
MSKSTR (MECID,<.MECID>,<-1>) ;Mask for CID
SUBTTL Block formats -- Event code block header
; The following is the definition of the event queue header appended to the end
;of the common queue header.
;
; !=======================================================!
; \ \
; \ Fork and connection list pointers, \
; \ and target fork words identical to those used \
; \ for JSYS message and datagram queues \
; \ \
; !-------------------------------------------------------!
; .EBCOD ! Length of block ! Event code !
; !-------------------------------------------------------!
; .EBDAT \ \
; \ Event data \
; \ \
; !=======================================================!
;
.EBCOD==.MECID+1 ;LH = Length of block (including this word)
;RH = Event code
MSKSTR (EBLEN,<.EBCOD>,<-1,,0>) ;Mask for length of block
MSKSTR (EBCOD,<.EBCOD>,<0,,-1>) ;Mask for event code
.EBDAT==.EBCOD+1 ;Start of code dependant data area of block
SUBTTL Block formats -- DMA queue header
; The following defines the header appended to the common header for use
;on the DMA queue.
;
; !=======================================================!
; .DMNAM ! 32 bit buffer name !
; !=======================================================!
;
.DMNAM==.MECID+1 ;Name of buffer whos operation completed
.DMLEN==.DMNAM+1 ;Length of this block
SUBTTL Block formats -- SCA ring buffer entry
;The following is the format of an SCA ring buffer entry:
;
; +=======================================================+
; .REHED ! Entry header (-77,,-77) !
; !-------------------------------------------------------!
; .REECL ! Event code ! Length of entry !
; !-------------------------------------------------------!
; .REJRL ! Jacket routine label !
; !-------------------------------------------------------!
; .REFRL ! Feature routine label !
; !-------------------------------------------------------!
; .REPCC ! PC of caller to feature routine !
; !-------------------------------------------------------!
; .RETOD ! TODCLK !
; !-------------------------------------------------------!
; .REFEA \ \
; \ Feature specific data \
; \ \
; !-------------------------------------------------------!
; .RESTR ! Address of start of this entry !
; +=======================================================+
;
; The symbols given are not offsets into the entire ring buffer. They are
;offsets into a particular ring buffer entry. The pointer to the current
;ring buffer position is stored in RNGADR and the address of the most recent
;ring buffer entry is stored in RNGCUR. The top of the ring buffer is
;stored in RNGTOP and the bottom address is in RNGBOT. The total number
;of entries written is in RNGNUM and the total size of the ring buffer is
;in RNGSIZ.
;
; The format of the feature specific data for each defined ring buffer
;entry type follows.
.REHED==:0 ;Start of ring buffer entry
MSKSTR(RNGHED,.REHED,<-1>)
RNG%HC==:<-77,,-77> ;Ring header constant value
.REECL==:.REHED+1 ;Event code and length of entry
MSKSTR(RNGEVC,.REECL,<-1,,0>) ;Event code
MSKSTR(RNGLEN,.REECL,<0,,-1>) ;Length of entry
.REJRL==:.REECL+1 ;Lable of jacket routine
.REFRL==:.REJRL+1 ;Label of feature routine
.REPCC==:.REFRL+1 ;PC of caller to feature routine
.RETOD==:.REPCC+1 ;Time of day of entry
.REFEA==:.RETOD+1 ;Start of feature data
;Note: The following symbol is defined as an offset from the start of
; the next buffer entry. So, if T1 contains the address of the
; start of the next buffer entry:
;
; .RESTR(T1) is the address of the start of the previous entry
.RESTR==:-1 ;Start of this entry
;Adjusted for TOPS-20 development
RBFLEN==:60 ;[8810] Ring buffer size in pages
;Below are the structure names which control which event will be recorded
;in the ring buffer. RNGSW controls which events are recorded.
MSKSTR(RSYSCA,RNGSW,<1B0>) ;Record SYSAP to SCA events
MSKSTR(RSCASY,RNGSW,<1B1>) ;Record SCA to SYSAP events (callbacks)
MSKSTR(RBUFMG,RNGSW,<1B2>) ;Record buffer management events
MSKSTR(RPACKT,RNGSW,<1B3>) ;Record packet events (outgoing and incoming)
MSKSTR(RPITRN,RNGSW,<1B4>) ;Record PI transitions
MSKSTR(RPRTQU,RNGSW,<1B5>) ;Record port queue events
MSKSTR(RINTLK,RNGSW,<1B6>) ;Record interlocks
;Following are the valid event codes for the events which can be recorded:
SYSSCA==1 ;SYSAP to SCA events
SCASYS==2 ;SCA to SYSAP
BUFMAN==3 ;Buffer manipulation
PKTEVT==4 ;Packet transaction
PITRAN==5 ;PI transition
PORTQU==6 ;Port queue manipulation
INTLOK==7 ;Interlocks
EN%CLO==1 ;Smallest valid event code
EN%CHI==7 ;Largest valid event code
SUBTTL Block formats -- SCA ring buffer entry -- Feature data (SYSSCA)
; Below is the format of the feature specific data
;for the SYSAP to SCA ring buffer entry.
;
; +=======================================================+
; .RESNN ! Node number !
; !-------------------------------------------------------!
; .RESCB ! Connect block address !
; !-------------------------------------------------------!
; .RESST ! .CBSTS (Block state,,Connect state) !
; !-------------------------------------------------------!
; .RESFL ! .CBFLG !
; !-------------------------------------------------------!
; .RESSI ! .CBSCI (Source connect ID) !
; !-------------------------------------------------------!
; .RESDI ! .CBDCI (Destination connect ID) !
; +=======================================================+
.RESNN==:.REFEA ;Node number
.RESCB==:.RESNN+1 ;Connect block address
.RESST==:.RESCB+1 ;Connect block state word
.RESFL==:.RESST+1 ;Connect block flag word
.RESSI==:.RESFL+1 ;Source connect ID
.RESDI==:.RESSI+1 ;Destination connect ID
SUBTTL Block formats -- SCA ring buffer entry -- Feature data (SCASYS)
; Below is the format of the feature specific data
;for the SCA to SYSAP (callback) ring buffer entry.
;
; +=======================================================+
; .RECNN ! Node number !
; !-------------------------------------------------------!
; .RECCB ! Connect block address !
; !-------------------------------------------------------!
; .RECCR ! Callback reason code !
; +=======================================================+
.RECNN==:.REFEA ;Node number
.RECCB==:.RECNN+1 ;Connect block address
.RECCR==:.RECCB+1 ;Callback reason code
SUBTTL Block formats -- SCA ring buffer entry -- Feature data (BUFMAN)
; Below is the format of the feature specific data
;for the buffer manipulation ring buffer entry.
;
; +=======================================================+
; .REBCT ! # of Buffers, or refused count, or -1 if returned !
; !-------------------------------------------------------!
; .REBAD ! Address of 1st buffer or -1 if can't allocate !
; !-------------------------------------------------------!
; .REBMC ! FQCNT (number of buffers on message free queue) !
; !-------------------------------------------------------!
; .REBMT ! TOPFQ (pointer to top of message free queue) !
; !-------------------------------------------------------!
; .REBMB ! BOTFQ (pointer to bottom of message free queue) !
; !-------------------------------------------------------!
; .REBDC ! DFQCNT (number of buffers on datagram free queue) !
; !-------------------------------------------------------!
; .REBDT ! TOPDFQ (pointer to top of datagram free queue) !
; !-------------------------------------------------------!
; .REBDB ! BOTDFQ (pointer to bottom of datagram free queue) !
; +=======================================================+
;
; The .REBCT word can contain one of three values. If the buffer is being
;returned, it will contain a -1. If the buffer is being created or allocated
;and it has been obtained successfully, .REBCT will contain the number of
;buffers. If the allocation was not successfull, then .REBCT will contain
;the number of refused requests (RMRCNT for messages, RDRCNT for datagrams).
;Also, on an unsuccessfull allocation attempt, the .REBAD word will contain
;-1 since no buffer was allocated. Otherwise, this word will always contain
;a buffer address. It will be either the address of a newly created/allocated
;buffer chain or the address of a buffer just returned.
.REBCT==:.REFEA ;Buffer count
.REBAD==:.REBCT+1 ;Buffer address
.REBMC==:.REBAD+1 ;Count of buffers on message free queue
.REBMT==:.REBMC+1 ;Pointer to top of message free queue
.REBMB==:.REBMT+1 ;Pointer to bottom of message free queue
.REBDC==:.REBMB+1 ;Count of buffers on datagram free queue
.REBDT==:.REBDC+1 ;Pointer to top of datagram free queue
.REBDB==:.REBDT+1 ;Pointer to bottom of datagram free queue
SUBTTL Block formats -- SCA ring buffer entry -- Feature data (PKTEVT)
; Below is the format of the feature specific data
;for the packet transaction ring buffer entry.
;
; +=======================================================+
; .REPNN ! Node number !
; !-------------------------------------------------------!
; .REPCB ! Connect block address !
; !-------------------------------------------------------!
; .REPAD ! Packet address !
; !-------------------------------------------------------!
; .REPFL ! Flags !
; !-------------------------------------------------------!
; .REPMP ! Message priority ! Packet length !
; !-------------------------------------------------------!
; .REPTY ! MH$TYP (credit,,message type) !
; !-------------------------------------------------------!
; .REPSI ! MH$SCI (Source connect ID) !
; !-------------------------------------------------------!
; .REPDI ! MH$DCI (Destination connect ID) !
; +=======================================================+
;
; The flags word will contain the PPD flag bits (F.RTB, F.SPM, F.RSP).
;It tells you whether the packet was locally or remotely generated (F.RSP)
;which indicates which connect ID is the one from the local system. The
;mode of the packet is indicated by F.SPM.
;
; The message priority is the priority of the packet and ranges from a high
;priority of 0 to a low of 3.
.REPNN==:.REFEA ;Node number
.REPCB==:.REPNN+1 ;Connect block address
.REPAD==:.REPCB+1 ;Packet address
.REPFL==:.REPAD+1 ;Packet flags
.REPMP==:.REPFL+1 ;Message priority,,packet length
.REPTY==:.REPMP+1 ;MH$TYP word from packet header
.REPSI==:.REPTY+1 ;MH$SCI word from packet header
.REPDI==:.REPSI+1 ;MH$DCI word from packet header
SUBTTL Block formats -- SCA ring buffer entry -- Feature data (PITRAN)
; Below is the format of the feature specific data
;for the PI transition ring buffer entry.
;
; +=======================================================+
; .REPIC ! CHNCTL !
; !-------------------------------------------------------!
; .REPIF ! PIFLAG !
; +=======================================================+
.REPIC==:.REFEA ;Value of CHNCTL
.REPIF==:.REPIC+1 ;Value of PIFLAG
SUBTTL Block formats -- SCA ring buffer entry -- Feature data (PORTQU)
; Below is the format of the feature specific data
;for the port queue manipulation ring buffer entry.
;
; +=======================================================+
; .REPQN ! Node number !
; !-------------------------------------------------------!
; .REPQF ! Flags ! Buffer count !
; !-------------------------------------------------------!
; .REPQB ! Buffer address !
; +=======================================================+
;
; The .REPQF word contains flags in the left half. If the RPQFLK bit is
;lit, then a buffer was linked to the port queue. Otherwise, a buffer
;was unlinked from the port queue. If the RPQFMG flag is lit, then the
;buffer was a message buffer. Otherwise, it was a datagram buffer.
;If the buffer is being unlinked from the port queue, and it fails, the
;.REPQM word will be -1.
.REPQN==:.REFEA ;Node number
.REPQF==:.REPQN+1 ;Flags,,buffer count
MSKSTR(RPQFLK,.REPQF,<400000,,0>) ;Link to port queue
MSKSTR(RPQFMG,.REPQF,<200000,,0>) ;Message free queue used
.REPQB==:.REPQF+1 ;Buffer address
SUBTTL Block formats -- SCA ring buffer entry -- Feature data (INTLOK)
; Below is the format of the feature specific data
;for the interlock ring buffer entry.
;
; +=======================================================+
; .REICB ! Connect block address !
; !-------------------------------------------------------!
; .REICL ! Connect block lock value (.CBLCK) !
; !-------------------------------------------------------!
; .REIFL ! Connect block flags (.CBFLG) !
; !-------------------------------------------------------!
; .REISL ! Count of locked connect blocks on system block !
; +=======================================================+
.REICB==:.REFEA ;Connect block address
.REICL==:.REICB+1 ;Connect block lock value
.REIFL==:.REICL+1 ;Connect block flags word
.REISL==:.REIFL+1 ;Count of locked connect blocks for s.b.
; when node goes off-line.
SUBTTL OPDEFs
DEFINE $SKIP,<CAIA> ;Define the fastest SKIP_ALWAYS...
DEFINE CIOFF,<CALL SC.PFF> ;[7.1037]Do this to turn off the CI channel
DEFINE CION,<CALL SC.PON> ;Do this to turn the CI channel back on
OPDEF XCTB17 [XCT 17,] ;PXCT for getting EVERYTHING from user context
SUBTTL Random constants
KLPCHN==7 ;The KLIPA is always on channel 7
;All random constants used localy by SCA are defined here...
PGSIZ==1000 ;Length of a page
C%BINV==^D11 ;Size of invisible space before all buffers
C%MGSZ==^D52 ;Size of message buffer (words)
C%MGPG==PGSIZ/<C%MGSZ+C%BINV> ;The number of message buffers in a page
C%DGSZ==^D158 ;Size of datagram buffers (words)
C%DGPG==PGSIZ/<C%DGSZ+C%BINV> ;Number of datagram buffers in a page
;Interval for SCA clock (Clock granularity: 100ms)
;Calculated as:
;<Num of seconds to timeout * num of millisec in one sec> + rounding factor
;----------------------------------------------------------------------------
; number of cycles before timeout
;
C%STIM==<<5*1000>+<C%SBLL-1>>/C%SBLL
C%OVHD==^D12 ;Overhead byte count for application msg/dg
C%OVHW==^D3 ;Overhead word count for application msg/dg
C%PPDL==2 ;Length in bytes of PPD field
C%MXBF==^D100 ;Max num in 1 Q req for JSYS buffers
C%RAPT==^D10*^D1000 ;Min tim increment bewteen CB reaping runs
C%ALMT==^D60*^D1000 ;Min time increment for memory allocator runs
C%PHAD==77,,777777 ;Physical memory address mask from MAP instr
C%PHYZ==777700,,0 ;Bits to zero in physical addresses
C%NEPW==^D5 ;# of index entries per word, list index ptrs
C%OBPP=^D12 ;# of overhead bytes in application packet
C%MRBL==^D50 ;Length of list pointer tables
C%CIDL==<PGSIZ/2> ;Length of table for connect ID's
C%SYMX==^D16 ;Highest CI node number
C%SBLL==<C%SYMX> ;Length of the system block address list
;Note: If this value changes, SQ%SBL
;in MONSYM must also be changed
C%IND==<1B1> ;Indirect address bit for noninstruction format
C%DTAL==^D16 ;Number of bytes in connection data
C%DTLW==^D4 ;Length of connection data in words
;Note: If this value changes, SQ%CDT
;in MONSYM must also be changed
C%PNMN==^D16 ;Maximum number of bytes in a process name
C%PNLW==^D4 ;Length of process name in words
C%CDMN==^D16 ;Maximum number of bytes in connect data
C%SDTL==^D16 ;Send data length (In bytes)
C%STRL==<<<C%PNMN+3>/4>*2>+<<C%DTAL+3>/4> ;Word Len past three strings
C%BYTM==<C%MGSZ+3>*4 ;Size of max message in bytes
C%WORM==C%MGSZ ;Size of max message in words
C%BYTD==<C%DGSZ+3>*4 ;Size of max datagram in bytes
C%WORD==C%DGSZ ;Size of max datagram in words
C%JDGL==1000 ;Length of datagram buffers for JSYS (in words)
C%NPSI==<0,,-1> ;The "null" PSI channel (for the JSYS)
FWMASK==-1 ;Keep the $BUILD macro happy
SECMSK==777740,,0 ;These should always be off in a section number
.ICLST==^D35 ;Highest valid PSI channel value
; **** Temporary ****
;These symbols are reproduced here since the currently apear only in PHYKLP.
MSKSTR (IDPAO,<RIDSTS>,<1B1>) ;Path A status
MSKSTR (IDPBO,<RIDSTS>,<1B2>) ;Path B status
; Lengths of event queue blocks (for the JSYS)
;
C%VCCL==.EBCOD+2 ;VC broken
C%CTLL==.EBCOD+5 ;Connect to listen
C%CRAL==.EBCOD+5 ;Connection accept
C%CRRL==.EBCOD+2 ;Connection reject
C%MSCL==.EBCOD+2 ;Message/datagram send complete
C%LCLL==.EBCOD+2 ;Little credit left
C%NCOL==.EBCOD+2 ;Net topology change
C%OSDL==.EBCOD+1 ;OK to send data
C%RIDL==.EBCOD+1 ;Remote initiated disconnect
C%PBCL==.EBCOD+2 ;Port broke connection
C%CIAL==.EBCOD+3 ;Credit is available
C%MDCL==.EBCOD+2 ;Maint data xfer complete
; These constants tweek the buffer managment parameters. They control threshold
;and other factors that could VERY significantly effect SCA performance.
;
C%MBPS==C%MGPG ;Number of message buffers per SB for
C%MBCR==^D2 ;Number of message buffers to queue before
;sending a credit request about them
C%MGTR==<C%SBLL*2>+^D10 ;Threshold for message buffers, if we have less
; than this at allocate time, call job 0
C%DGTR==C%SBLL+^D20 ;Threshold for DG buffers, fewer than this at
; allocate time and we call job 0 for more
C%DBPS==C%DGPG*2 ;Number of datagram buffers per SB for thresh
C%LGRQ==3 ;A buffer request larger than this is a large
; request and will not be honored if it puts us
; under threshold
; The following are symbols which tweek the initial values for idle chatter.
;
C%TMGT==^D5*^D1000 ;Make the initial timeout period be 5 seconds
SUBTTL Macros
SUBTTL Macros -- $LDCID (Load a CB address)
; This macro is the result of much pain over the obtaining of connect block
;address from a given connect ID.
;
DEFINE $LDCID(AC,ADDR),<
LOAD AC,INDEX,ADDR ;Get the index from the CID source
ADD AC,CIDTAB ;Add the base address of the CB address table
MOVE AC,(AC) ;Now get the address of the CB
>;End $LDCID definition
SUBTTL Macros -- ASCI8 (Generate word aligned 8-Bit ASCII)
; This macro will generate word aligned 8-Bit ASCII. Simply feed it the string
;and out comes 8 bit ASCII, four bytes per word...
;
DEFINE ASCI8(STRNG),<
..CNT.==3 ;Init the counter
..STR.==0 ;Init the string
IRPC STRNG,<
..CHR.=="STRNG" ;Get the current character
..CHR.==..CHR._<^D8*..CNT.+4> ;Shift it into the right place
..STR.==..STR.!..CHR. ;Add it to the current
..CNT.==..CNT.-1 ;Decrement the four word block counter
IFL ..CNT.,<
EXP ..STR. ;Generate a word of what is left
..CNT.==3 ;Init the four char chunk counter
..STR.==0 ;Init the string
>;End IFL ..CNT.
>;End IPRC STRNG
IFN ..STR., EXP ..STR. ;If there are characters left over, output them
>;End ASCI8 definition
SUBTTL Macros -- $SCOFF (Get SCA disconnect interlock)
; This macro interlocks the completion of SCA disconnect processing. If this
;lock is set then interrupt level will defer the sending of the second half of
;the disconnect protocol.
;
DEFINE $SCOFF,<
; CALL SC.OFF ;Turn off disconnect processing
>;End of $SCOFF definition
SUBTTL Macros -- $SCON (Release SCA disconnect processing)
; This macro release the interlock on SCA disconnect processing.
;
DEFINE $SCON,<
; CALL SC.ON ;Release the disconnect interlock
>;End of $SCON definition
SUBTTL Macros -- $SYSAP (SYSAP initilization address table)
; This macro generates the table of addresses that SCA uses to init all of
;the SYSAPs...
;
DEFINE $SYSAP,<
XWD MSEC1,CFSINI## ;Init the Common file system
XWD MSEC1,MSCINI## ;Init MSCP
XWD MSEC1,MSSINI ;Init the MSCP server
XWD XCDSEC,SCSINI ;[7.1043]Init the SCS% JSYS SYSAP
XWD XCDSEC,CLUINI ;[7.1076] Init CLUDGR SYSYAP
IFN CLEQIN,< ;[7.1072] If cluster ENQ code present
XWD XCDSEC,EQSINI ;[7.1072] Init the ENQSRV SYSAP
> ;[7.1072]
>;End $SYSAP definition
SUBTTL Macros -- $CALTB (Dispatch table for SCA to JSYS calls)
; This macro defines the dispatch table to handle calls from SCA to the SYSAP
;know as the SCS% JSYS...
;
DEFINE $CALTB,<
$BUILD (.SSAFT+1) ;Size of the block
$SET (.SSDGR,,<XCDSEC,,SINDGR>) ;[7.1043]Datagram received
$SET (.SSMGR,,<XCDSEC,,SINMGR>) ;[7.1043]Message received
$SET (.SSPBC,,<XCDSEC,,SINPBC>) ;[7.1043]Port broke connection
$SET (.SSCTL,,<XCDSEC,,SINCTL>) ;[7.1043]Connect to listen
$SET (.SSCRA,,<XCDSEC,,SINCRA>) ;[7.1043]Connect response available
$SET (.SSMSC,,<XCDSEC,,SINPSC>) ;[7.1043]Message/datagram send complete
$SET (.SSDDG,,<MSEC1,,R>) ;Datagram dropped
$SET (.SSLCL,,<XCDSEC,,SINLCL>) ;[7.1043]Little credit left
$SET (.SSNCO,,<MSEC1,,R>) ;Node came online
$SET (.SSOSD,,<XCDSEC,,SINOSD>) ;[7.1043]OK to send data
$SET (.SSRID,,<XCDSEC,,SINRID>) ;[7.1043]Remote initiated disconnect
$SET (.SSCIA,,<XCDSEC,,SINCIA>) ;[7.1043]Credit is available
$SET (.SSDMA,,<XCDSEC,,SINDMA>) ;[7.1043]DMA complete
$EOB
>; End $CALTB definition
SUBTTL Macros -- $DISPA (Dispatch table generator)
; This macro defines the order for the message/datagram dispatch table.
;When a message is received, one simply indexes into this routine to find the
;address of the routine to handle said message. Care must be taken here to
;be sure that this table is in the correct order. The table is built in the
;order that entries appear here. The offsets are given to make sure that
;things happen in the right order.
;
DEFINE $DISPA,<
...FOO==0 ;Init the order checker variable
$ENT (.STORQ,SC.ORQ) ;Connect request
$ENT (.STORS,SC.ORS) ;Connect response
$ENT (.STARQ,SC.ARQ) ;Accept request
$ENT (.STARS,SC.ARS) ;Accept response
$ENT (.STRRQ,SC.RRQ) ;Reject request
$ENT (.STRRS,SC.RRS) ;Reject resonse
$ENT (.STDRQ,SC.DRQ) ;Disconnect request
$ENT (.STDRS,SC.DRS) ;Disconnect response
$ENT (.STCRQ,SC.CRQ) ;Credit request
$ENT (.STCRS,SC.CRS) ;Credit response
$ENT (.STAMG,SC.AMG) ;Application message
$ENT (.STADG,SC.ADG) ;Application datagram
>; End $DISPA definition
SUBTTL Macros -- $ENT (Entry in $DISPA)
; This routine defines one entry in $DISPA.
;
DEFINE $ENT(OFFSET,ADDR),<
IFN ...FOO,<
IFN <OFFSET-...FOO-1>,<IF2 <PRINTX Dispatch table out of order! (OFFSET)>>
>;End IFN ...FOO
...FOO==OFFSET ;Get the current value of OFFSET
XWD XCDSEC,ADDR ;[7.1037]Section six address of a handler routine
>; End $ENT definition
SUBTTL Macros -- $BUILD,$SET,$EOB - Build pre-formed data blocks
;Many thanks to the Galaxy folks from whom this is directly stolen.../CD
; Start off a structure, argument is the size of the structure.
;..STR0 - Process instance of structure usage, single structure case.
DEFINE ..STR0 (OP,AC,STR,Y)<
IFNDEF STR,<PRINTX STR IS NOT DEFINED
OP (<AC>,Y,FWMASK)> ;;RESERVE A WORD, ASSUME WORD MASK
IFDEF STR,<
IFNDEF %'STR,<
OP (<AC>,Y,STR)> ;;ASSUME NO OTHER LOCN
IFDEF %'STR,<
%'STR (OP,<AC>,Y,STR)>>> ;;DO IT
;Put right-justified value into field specified by MASK
DEFINE FLD(VALUE,MASK),<<<<VALUE>B<POS(<MASK>)>>&<MASK>>>
DEFINE $BUILD(SIZE)<
IFDEF ..BSIZ,<PRINTX ?Missing $EOB after a $BUILD>
..BSIZ==0 ;;Start counter
..BLOC==. ;;Remember our starting address
REPEAT SIZE,< ;;For each word in the block
BLD0.(\..BSIZ,0) ;;Zero out it's accumulator
..BSIZ==..BSIZ+1> ;;And step to next
>;End of $BUILD definition
; For each value installed somewhere in the structure, set it into the block
; Arguments are word offset,field in word (optional) and value to set.
DEFINE $SET(OFFSET,STR,VALUE),<
IFNDEF ..BSIZ,<PRINTX ?$SET without previous $BUILD>
IFNB <STR>,<..STR0 (..SET,<VALUE>,STR,OFFSET)>
IFB <STR>,<..STR0 (..SET,<VALUE>,FWMASK,OFFSET)>
> ; End of $SET definition
DEFINE ..SET (VALUE,LOC,MSK) <
IFGE <<<LOC>&777777>-..BSIZ>,<
PRINTX ?WORD offset greater than $BUILD size parameter>
SET0. (\<LOC>,MSK,<VALUE>)
> ;End ..SET definition
; After all values are declared, the block must be closed to do its actual
; creation.
DEFINE $EOB,<
IFNDEF ..BSIZ,<PRINTX ?$EOB without previous $BUILD>
IFN <.-..BLOC>,<PRINTX ?Address change between $BUILD and $EOB>
; XLIST ;;Don't show the block
..T==0
REPEAT ..BSIZ,<
BLD0.(\..T,1) ;;Store each word
..T==..T+1 >
PURGE ..BSIZ,..T,..BLOC ;;Remove symbols
; LIST
>; End of $EOB definition
DEFINE BLD0.(N,WHAT),<
IFE WHAT,<..T'N==0>
IFN WHAT,<EXP ..T'N
PURGE ..T'N>
> ;END OF BLD0. DEFINITION
DEFINE SET0.(LOC,MSK,VALUE),<
IFN <<..T'LOC>&MSK>,<PRINTX ?Initial field not zero in $SET>
..TVAL==<VALUE>
..TMSK==<MSK>
..T'LOC==..T'LOC!<FLD(..TVAL,..TMSK)>
PURGE ..TVAL,..TMSK
>;End of SET0. definition
SUBTTL Macros -- $SCSFC
; $SCSFC
; This macro defines each of the SCS% JSYS function codes and the routines
;that handle these functions. For the most part, function code handlers simply
;massage the callers data into the right format for the internal monitor
;routines.
;
DEFINE $SCSFC,<
$BUILD (.SSLST+1)
$SET (.SSCON,<>,<XCDSEC,,SCSCON>) ;[7.1043]
$SET (.SSLIS,<>,<XCDSEC,,SCSLIS>) ;[7.1043]
$SET (.SSDIS,<>,<XCDSEC,,SCSDIS>) ;[7.1043]
$SET (.SSREJ,<>,<XCDSEC,,SCSREJ>) ;[7.1043]
$SET (.SSSDG,<>,<XCDSEC,,SCSSDG>) ;[7.1043]
$SET (.SSQRD,<>,<XCDSEC,,SCSQRD>) ;[7.1043]
$SET (.SSSMG,<>,<XCDSEC,,SCSSMG>) ;[7.1043]
$SET (.SSQRM,<>,<XCDSEC,,SCSQRM>) ;[7.1043]
$SET (.SSCSP,<>,<XCDSEC,,SCSCSP>) ;[7.1043]
$SET (.SSRCD,<>,<XCDSEC,,SCSRCD>) ;[7.1043]
$SET (.SSSTS,<>,<XCDSEC,,SCSSTS>) ;[7.1043]
$SET (.SSRMG,<>,<XCDSEC,,SCSRMG>) ;[7.1043]
$SET (.SSMAP,<>,<XCDSEC,,SCSMAP>) ;[7.1043]
$SET (.SSUMP,<>,<XCDSEC,,SCSUMP>) ;[7.1043]
$SET (.SSSND,<>,<XCDSEC,,SCSSND>) ;[7.1043]
$SET (.SSREQ,<>,<XCDSEC,,SCSREQ>) ;[7.1043]
$SET (.SSAIC,<>,<XCDSEC,,SCSAIC>) ;[7.1043]
$SET (.SSRPC,<>,<XCDSEC,,SCSRPC>) ;[7.1043]
$SET (.SSRDG,<>,<XCDSEC,,SCSRDG>) ;[7.1043]
$SET (.SSCRD,<>,<XCDSEC,,SCSCRD>) ;[7.1043]
$SET (.SSCRM,<>,<XCDSEC,,SCSCRM>) ;[7.1043]
$SET (.SSACC,<>,<XCDSEC,,SCSACC>) ;[7.1043]
$SET (.SSGDE,<>,<XCDSEC,,SCSGDE>) ;[7.1043]
$SET (.SSEVT,<>,<XCDSEC,,SCSEVT>) ;[7.1043]
$SET (.SSGLN,<>,<XCDSEC,,SCSGLN>) ;[7.1043]
$SET (.SSRBS,<>,<XCDSEC,,SCSRBS>) ;[7.1043]
$SET (.SSRPS,<>,<XCDSEC,,SCSRPS>) ;[7.1043]
$SET (.SSMDR,<>,<MSEC1,,UJSYS>)
$SET (.SSMDS,<>,<MSEC1,,UJSYS>)
$SET (.SSSRS,<>,<MSEC1,,UJSYS>)
$SET (.SSRRS,<>,<MSEC1,,UJSYS>)
$EOB
>; End $SCSFN definitions
SUBTTL Function codes returned by SCA.
;
; The following is the set of defined function codes returned to
;monitor modules which have invoked SCA.
;
; Format of returned information:
; T1/ Function code
; T2/ Function code dependant additional data
; T3/ Function code dependant additional data
; T4/ Function code dependant additional data
;
; Where T2, T3 and T4 contains information that will change from function to
;function code.
;
;Datagram received. SCA is indicating that the CI has filled one of the buffers
;queued for datagram reception with a datagram.
; T1/ .SSDGR
; T2/ Connect ID
; T3/ Address of datagram buffer
; T4/ <FLAGS>B6 ! <Addr of routine to return buffer>B35
; (See F.RTB and friends for flag definitions)
;
; .MHPKL word of datagram buffer/
; Length of the packet (Bytes for industry compatable, words
; for high density)
.SSDGR==:0
;Message received. SCA is indicateing that you have received a message from the
;CI.
; T1/ .SSMGR
; T2/ Connect ID
; T3/ Address of message buffer
; T4/ <FLAGS>B6 ! <Addr of routine to return buffer>B35
; (See F.RTB and friends for flag definitions)
;
; .MHPKL word of msg buffer/
; Length of the packet (Bytes for industry compatable, words
; for high density)
.SSMGR==:1
;Port broke connection. The port hardware detected a fatal error for the
;port virtual circuit on which you had a connection. Thus it broke your
;connection.
; T1/ .SSPBC
; T2/ Connect ID or -1 if no CID is to be returned
; T3/ Node number of port to which connection was lost
; T4/ Unused
.SSPBC==:2
;Connection to listen. The listen for either anyone, or a particular process
;name has had a connection request from a remote node.
; T1/ .SSCTL
; T2/ Connect ID
; T3/ Pointer to connection data from remote system
; (The pointer to the connection data is only guaranteed
; valid for the duration of the callback.)
; T4/ Unused
.SSCTL==:3
;Connection response available. The system to which you sent a connect message
;has responded.
; T1/ .SSCRA
; T2/ Connect ID
; T3/ -1 for accepted, 0 for rejected connection
; T4/ Reject code (If rejected), pointer to connect data if accepted
; (The pointer to the connection data is only guaranteed
; valid for the duration of the callback.)
.SSCRA==:4
;Message/datagram Send complete. The message/datagram which you requested be
;sent, has been. The "buffer address" is the address of the buffer you gave
;SCA to send.
; T1/ .SSMSC
; T2/ Connect ID
; T3/ Address of buffer
; T4/ Unused
;
.SSMSC==:5
;Datagram dropped. A datagram was received and there were no buffers
;queued to place it. The buffer is relinked to the port's datagram
;free queue.
; T1/ .SSDDG
; T2/ Connect ID
; T3/ Unused
; T4/ Unused
;
.SSDDG==:6
;Little credit left. You have just received a message that put you under
;receive credit threshold. It is suggested that you queue at least some buffers
;if you expect to get more messages. Note that you will receive one of these
;calls every time you receieve a message after which you are under threshold.
; T1/ .SSLCL
; T2/ Connect ID
; T3/ Number of credits needed to get you over threshold
; T4/ Unused
;
.SSLCL==7
;Node came online. You requested to be told of nodes coming online.
;It happened and now your being told.
;
; T1/ .SSNCO
; T2/ SBI of system that has come online
; T3/ Unused
; T4/ Unused
;
.SSNCO==10
;OK to send data. The connection has been completed to a remote system and is
;now in the OPEN state. Messages and datagram may be sent...
;
; T1/ .SSOSD
; T2/ Connect ID
; T3/ Unused
; T4/ Unused
;
.SSOSD==11
;Remote initiated disconnect. The host at the other end of your connection
;doesn't want to talk to you anymore and has completed an orderly shutdown of
;your connection.
;
; T1/ .SSRID
; T2/ Connect ID
; T3/ Disconnect reason code
; T4/ Unused
;
.SSRID==12
;Credit is available. Your message send failed for lack of credit. There is
;now more credit available for your send...
;
; T1/ .SSCIA
; T2/ Connect ID
; T3/ Current send credit
; T4/ Current receive credit
;
.SSCIA==13
;DMA operation complete. The DMA operation you requested has been completed.
;Note that you will NOT be told about the completion of passive requests. I.E.
;you will not be notified when a request/send data done by a remote completes.
;
; T1/ .SSDMA
; T2/ Connect ID of connection DMA was cone for
; T3/ 32 bit buffer name of DMA buffer
; T4/ Unused
;
.SSDMA==14
.SSAFT==.SSDMA ;Last defined code
SUBTTL Connection states
; Warning: SC.ABT and SC.CLK assume the connection states to be grouped this
;way. If you add a new state be sure to change SC.ABT and SC.CLK to deal with
;the change.
repeat 0,<
.CSDRE==1 ;Disconnect recieved
.CSDSE==.CSDRE+1 ;Disconnect sent
.CSDAK==.CSDSE+1 ;Disconnect acknowledge
.CSDMC==.CSDAK+1 ;Disconnect match
.CSCLO==.CSDMC+1 ;Closed - by command
.CSCNM==.CSCLO+1 ;Closed - no match
.CSCRJ==.CSCNM+1 ;Closed - rejection
.CSCNR==.CSCRJ+1 ;Closed - no resources
.CSCVC==.CSCNR+1 ;Closed - Port virtual circuit error
.CSLIS==.CSCVC+1 ;Listening
.CSCSE==.CSLIS+1 ;Connect sent
.CSCAK==.CSCSE+1 ;Connect acknowledge
.CSCRE==.CSCAK+1 ;Connect recieved
.CSOPN==.CSCRE+1 ;Connection open
>
;States of a connection. Names in all caps are from corporate spec.
.CSCLO==SQ%CLO ;Closed (CLOSED)
.CSLIS==SQ%LIS ;Listening (LISTENING)
.CSCSE==SQ%CSE ;Connect request was sent (CONNECT_SENT)
.CSCRE==SQ%CRE ;Connect request was received (CONNECT_REC)
.CSCAK==SQ%CAK ;Connect response was received (CONNECT_ACK)
.CSACS==SQ%ACS ;Accept request was sent (ACCEPT_SENT)
.CSRJS==SQ%RJS ;Reject request was sent (REJECT_SENT)
.CSOPN==SQ%OPN ;Connection is open (OPEN)
.CSDSE==SQ%DSE ;Disconnect request was sent (DISCONNECT_SENT)
.CSDRE==SQ%DRE ;Disconnect request received (DISCONNECT_REC)
.CSDAK==SQ%DAK ;Disconnect response received (DISCONNECT_ACK)
.CSDMC==SQ%DMC ;Waiting for disconnect response (DISCONNECT_MATCH)
MXCNST==SQ%HIS ;Highest value for a connect state
SUBTTL Connection block states
.BSFRE==:1 ;Free
.BSALL==:2 ;Allocate
.BSCNP==:3 ;Connect pending
.BSACP==:4 ;Accept pending
.BSRPN==:5 ;Reject pending
.BSCRP==:6 ;Credit pending
.BSDPN==:7 ;Disconnect pending
repeat 0,<
.BSCNP==:1 ;Connect pending
.BSACP==:2 ;Accept pending
.BSALL==:3 ;Allocate
.BSCRP==:4 ;Credit pending
.BSRPN==:5 ;Reject pending
.BSDCP==:6 ;Disconnect credit pending
.BSDPN==:7 ;Disconnect pending
>
SUBTTL SCA message types and lengths
.STORQ==0 ;Connect request
.LNORQ==^D64
.STORS==1 ;Connect response
.LNORS==^D16
.STARQ==2 ;Accept request
.LNARQ==^D64
.STARS==3 ;Accept response
.LNARS==^D16
.STRRQ==4 ;Reject request
.LNRRQ==^D16
.STRRS==5 ;Reject response
.LNRRS==^D12
.STDRQ==6 ;Disconnect request
.LNDRQ==^D16
.STDRS==7 ;Disconnect response
.LNDRS==^D12
.STCRQ==10 ;Credit request
.LNCRQ==^D12
.STCRS==11 ;Credit response
.LNCRS==^D12
.STAMG==12 ;Application message
.STADG==13 ;Application datagram
.STLST==.STADG+1 ;Highest expected message type number
SUBTTL Connection managment symbols
.CMCMT==CM%CMT ;A match was found for the CONNECT_REQUEST
.CMCNM==CM%CNM ;No match was found for the CONNECT_REQUEST
.CMNRE==CM%NRE ;No resources to process CONNECT_REQUEST
.CMNDS==CM%NDS ;Connection has been broken
.CMNRV==CM%NRV ;Reserved
SUBTTL Message formats -- PPD packet definitions
;The general format of a datagram or message is:
;
; +-----------------------------------------------+
; .PKFLI ! FLINK ! 0
; +-----------------------------------------------+
; .PKBLI ! BLINK ! 1
; +-----------------------------------------------+
; .PKRSV ! Reserved for software ! 2
; +---------+---------+---------+---------+-------+
; .PKSTS !00<--->07!08<--->15!16<--->23!24<--->31!32<->35!
; ! Status ! Flags ! Opcode ! Port ! MBZ ! 3
; +---------+---------+---------+---------+-------+
; .PKLEN !00<------------->15!16<--------------------->35!
; ! PPD byte ! Length of text data ! 4
; !-----------------------------------------------+
; ! ! 5
; ! !
; ! !
; ! Text !
; ! !
; ! ! Queue
; ! ! Length
; ! ! - 1
; +-----------------------------------------------+
;Offsets in packet
;
.PKFLI==0 ;FLINK
.PKBLI==.PKFLI+1 ;BLINK
.PKRSV==.PKBLI+1 ;Reserved to software
.PKVRT==.PKRSV ;Virtual address of the packet
DEFSTR (PKSRB,.PKRSV,5,6) ;The software response bits
DEFSTR (PKDRV,.PKRSV,0,1) ;Return packet tof KLIPA drvier
DEFSTR (PKSCA,.PKRSV,1,1) ;Return packet to SCA
DEFSTR (PKVRT,.PKRSV,35,30) ;Virtual address
.PKSTS==.PKRSV+1 ;Status/opcode/flags/node no.
;Bits in status, flags word
;
PKSSTS==^D8 ;Status size
PKPSTS==7 ;Position
PKSFLG==^D8 ;Flags size
PKPFLG==^D15 ;Flags position
PKSOP==^D8 ;Opcode size
PKPOP==^D23 ;Opcode position
PKSNOD==^D8 ;Node no. size
PKPNOD==^D31 ;Node no. position
;Status
;
DEFSTR (.PKSFD,.PKSTS,7,7) ;STATUS FIELD LESS THE ERROR BIT.
PS.ERR==1B0 ;Composite error bit
PS.PAE==1B1 ;Path A error
PS.PBE==1B2 ;Path B error
PS.NRA==304 ;NO RESPONSE ON PATH A
PS.NRB==244 ;NO RESPONSE ON PATH B
PS.NRE==344 ;NO RESPONSE ON EITHER PATH
PS.IBN==2 ;INVALID BUFFER NAME
; Status bits when PS.ERR is off
PS.CLO==1B1 ;CLOSED THE PATH
PS.AKA==1B2 ;PACKET WAS ACKED ON PATH A
PS.NKA==1B3 ;PACKET WAS NAKED AT LEAST ONCE ON PATH A
PS.NOA==1B4 ;PACKET GOT NO RESPONSE AT LEAST ONCE ON PATH A
PS.AKB==1B5 ;PACKET WAS ACKED ON PATH B
PS.NKB==1B6 ;PACKET WAS NAKED AT LEAST ONCE ON PATH B
PS.NOB==1B7 ;PACKET GOT NO RESPONSE AT LEAST ONCE ON PATH B
;Flags
;
PF.SIZ==1B8 ;(Data) 0 if 512 bytes, 1 if 576
PF.FMT==1B8 ;(DG/MSG) 0 if ind compat, 1 if high density
PF.FRC==1B8 ;(Reset remote system) force reset
PF.DSA==1B8 ;(Start remote system)use default starting addr
PF.CPE==1B12 ;CNTRD generated by port (CRAM parity error)
PF.PTH==3B14 ;0=Auto, 1=Path 0, 2=Path 1
PF.PT0==1B14 ;1=Use path 0
PF.PT1==2B14 ;1=Use path 1
PF.RSP==1B15 ;=1 If always generate response
;Length and PPD byte
;
.PKLEN==.PKSTS+1 ;Length of datagram/message
PKSPPD==^D16 ;PPD byte size
PKPPPD==^D15 ;PPD byte position
;Block data service
;
.PKXID==4 ;Transaction ID (2 words)
.PKXLN==6 ;Transaction length
.PKSNM==7 ;Sender name
.PKSOF==10 ;Sender offset
.PKRNM==11 ;Receiver name
.PKROF==12 ;Receiver offset
;Register read
;
.PKREG==.PKLEN ;Register to read
PKSREG==^D8 ;Size
PKPREG==^D23 ;Position
PKSDTA==^D8 ;Data returned (register contents)
PKPDTA==^D7 ;Position
.RGNOD==14 ;Our node number
;ID received
.PKMID==.PKLEN+2 ;Maintenance ID
.PKTYP==6 ;PORT TYPE
PKPID==^D31 ;Position
PKSID==6 ;Size
ID.HSC==4 ;HSC 50
ID.JUP==5 ;Jupiter
ID.KL==6 ;KL10
DEFSTR (PKTYP,.PKTYP,PKPID,PKSID)
.PKCOD==7 ;Code Revision Level
.PKFUN==10 ;Port functionality
.PKPST==11 ;(Destination) port state
PKPPST==^D22 ;Postion
PKSPST==2 ;Size
PS.ENB==2 ;Port is enabled
DEFSTR (PKPRST,.PKPST,23,3) ;State and Maintenance fields
DEFSTR (PKMAI,.PKPST,23,1) ;MAINTENANCE FIELD ONLY
DEFSTR (PKPRND,.PKPST,31,8) ;Resetting Node
PS.UMS==1 ;Unintialized/Maintenance State.
;PORT FUNCTIONALITY BIT DEFINITIONS
PKSMD==1B17 ;SUPPORTS RECEIPT OF A SNTMDAT
PKRMD==1B19 ;SUPPORTS RECEIPT OF A MDATREQ
;Start remote system
;
.PKSAD==6 ;Start address if not using default
;START/START ACKNOWLEGE block
;
.SRSSY==.PKLEN+1 ;Sending system
.SRRSV==.SRSSY+1 ;Reserved
DEFSTR (SRMBZ,.SRRSV,7,8) ;MBZ
DEFSTR (SRVRS,.SRRSV,15,8) ;PROTOCOL VERSION
SCAVER==1 ;CURRENT SCA VERSION
.SRMMS==.SRRSV+1 ;Max message/dg sizes
DEFSTR (SRMMG,.SRMMS,15,16) ;MAXIMUM MESSAGE SIZE (BYTES)
DEFSTR (SRMDG,.SRMMS,31,16) ;MAXIMUM DATAGRAM SIZE (BYTES)
.SRSWT==.SRMMS+1 ;Software type
.SRSWV==.SRSWT+1 ;Software version
.SRSWI==.SRSWV+1 ;Software incarnation
.SRHWT==.SRSWI+2 ;Hardware type
.SRHWV==.SRHWT+1 ;Hardware version
.SRNNM==.SRHWV+3 ;Node name
.SRTOD==.SRNNM+2 ;Time of day (in vax notation)
SR.LEN==^D52 ;Length of a START or ACK message
; SR.LEN==^D60 ;******* In base level 2, when time of day gets added
SR.ALN==4 ;Length of an ACK
;SETCKT
;
.PKCKT==.PKMID ;Word with flags
CK.LST==1B0 ;Load CST, NR, NS
CK.CST==1B1 ;1=VC open, 0=VC closed
CK.LPT==1B4 ;Load path status
CK.PBA==1B5 ;PATH B ALLOWED
CK.PAA==1B6 ;PATH A ALLOWED
CK.PGD==3B6 ;Both paths good
;Set performance counters
;
PNTMSK==777777,,0 ;Mask to clear, enable all possible values
.PKMSK==6 ;Mask for enables/clears, target node
.PKPND==7 ;Target node (set)
PKSCND==10 ;Target node - size
PKPCND==^D31 ;Target node - position
;Read performance counters
;
.PKPDA==.PKXID+2 ;Start of data returned in packet
.PKUCD==.PKPDA ;U-CODE VERSION
.PKPAA==.PKUCD+1 ;PATH A ACKS
.PKPAN==.PKPAA+1 ;PATH A NACKS
.PKANR==.PKPAN+1 ;PATH A NO-RESPONSES
.PKPBA==.PKANR+1 ;PATH B ACKS
.PKPBN==.PKPBA+1 ;PATH B NACKS
.PKBNR==.PKPBN+1 ;PATH B NO-RESPONSES
.PKDGD==.PKBNR+1 ;DATAGRAMS DISCARDED
.PKPXM==.PKDGD+1 ;PACKETS TRANSMITTED
.PKPRC==.PKPXM+1 ;PACKETS RECEIVED
.PKDPT==.PKPRC+1 ;DESIGNATED PORT WORD
.PKCRC==.PKDPT+1 ;PACKETS RECEIVED WITH CRC ERRORS
.PKEW1==.PKCRC+1 ;ERROR WORD 1
.PKEW2==.PKEW1+1 ;ERROR WORD 2
.PKEW3==.PKEW2+1 ;ERROR WORD 3
.PKEW4==.PKEW3+1 ;ERROR WORD 4
.PKEW5==.PKEW4+1 ;ERROR WORD 5
.PKEW6==.PKEW5+1 ;ERROR WORD 6
.PKPDD==.PKEW6-<.PKUCD-1> ;LENGTH OF RETURNED DATA
.PKTGT==.PKPDA+.PKPDD-1 ;End of data returned in packet
;PPD types
;
PP.STA==0 ;START
PP.STK==1 ;STACK
PP.ACK==2 ;ACK a STACK
PP.DG==3 ;DATAGRAM
PP.MSG==4 ;MESSAGE
PP.ERP==5 ;Error packet
PP.SHT==6 ;Shutdown
PP.MAX==PP.SHT ;Highest-numbered known PPD byte
;Close Buffer command (205) definitions
;This command uses the following offsets from the format of the
;datagram or message command ; .PKFLI (FLINK), .PKBLI (BLINK),
;.PKRSV (RESERVED FOR SOFTWARE, and .PKSTS (STATUS,FLAGS,OPCODE,PORT).
.PKBNM==.PKSTS+1 ;Buffer Name
SUBTTL Message formats -- Message header
; General header:
; This header appears on SCA messages. Not all fields are valid for
;every message type, but when they do appear they are in this format.
;
; **** Note ****
; The application message and application datagram do not include the last
;word listed here. I.E. the status and min credit word. Hence when dealing with
;a message or datagram this word is NOT a part of the header but is the first
;word of the message/datagram text...
;
; !=======================================================!
; .MHTYP ! Credit ! Message type !
; !-------------------------------------------------------!
; .MHDCI ! Destination connect ID !
; !-------------------------------------------------------!
; .MHSCI ! Source connect ID !
; !-------------------------------------------------------!
; .MHSTS ! Status ! Minimum credit !
; !-------------------------------------------------------!
; \ \
; \ Message dependant words \
; \ \
; !=======================================================!
;
.MHTYP==.PKLEN+1 ;Message type and credit
MSKSTR (MH$CDT,<.MHTYP>,<-1,,0>) ;Credit field
MSKSTR (MH$MSG,<.MHTYP>,<0,,-1>) ;Message type field
MSKSTR (MH$TYP,<.MHTYP>,<-1>) ;Entire .MHTYP word
.MHDCI==.MHTYP+1 ;Destination connect ID
MSKSTR (MH$DCI,<.MHDCI>,<-1>) ;Destination connect ID mask
.MHSCI==.MHDCI+1 ;Source connect ID
MSKSTR (MH$SCI,<.MHSCI>,<-1>)
.MHSTS==.MHSCI+1 ;Status and min receive credit
MSKSTR (MH$STS,<.MHSTS>,<-1,,0>) ;Status info
MSKSTR (MH$MCR,<.MHSTS>,<0,,-1>) ;Minimum receive credit
MSKSTR (MH$SMC,<.MHSTS>,<-1>) ;Entire .MHSTS word
.MHLEN==.MHSTS+1 ;Length of the message header
.MHPKL==.MHSCI ;Word where packet length is returned to SYSAP
MSKSTR (MH$PKL,<.MHPKL>,<-1>) ;Entire .MHPKL word
.MHUDA==.MHSCI+1 ;Start of user data in appl mess and datagrams
.MHLNW==<.MHSCI-.PKLEN> ;Length of application packet header in words
.MHLNB==<<.MHSCI-.MHTYP+1>*4> ;Length of appl packet header in bytes
;Maximum number of words used for user data is
;<MSG BUFFER - START of USER DATA>
C%MUDA==<<C%MGSZ-.MHUDA>-1> ;[7.1009][7.1060] One less for PHYKLP
; Size of largest message we can handle (in bytes) is
;<MSG BUFFER - PORT OVERHEAD> * 4 (words to bytes convert) + SIZE OF PPD BYTE
C%MXMP==<<C%MGSZ-<.PKLEN+1>>*4>+2
; Size of largest datagram we can handle (in bytes) is
;<DG BUFFER - PORT OVERHEAD> * 4 (words to bytes convert) + SIZE OF PPD BYTE
C%MXDP==<<C%DGSZ-<.PKLEN+1>>*4>+2
SUBTTL Message formats -- Connect and Accept requests
; The following is the definition of the datagram type dependant part of
;the connect request datagram.
;
; !=======================================================!
; \ \
; \ Message header defined above \
; \ \
; !-------------------------------------------------------!
; .MGDPN \ \
; \ Destination process name \
; \ \
; !-------------------------------------------------------!
; .MGSPN \ \
; \ Source process name \
; \ \
; !-------------------------------------------------------!
; .MGSDT \ \
; \ Send data \
; \ \
; !=======================================================!
;
.MGDPN==.MHSTS+1 ;First word of destination process name
.MGSPN==.MGDPN+<C%PNMN/4> ;First word of source process name
.MGSDT==.MGSPN+<C%PNMN/4> ;First data word in message
.MSCRQ==.MGSDT+<C%SDTL/4> ;Size of the connect request datagram
SUBTTL SCA/PPD Flags
; The following are the flags that are passed between SCA and the PPD. Some
;of these flags are also passed to SCA from the SYSAP, these are marked.
;
F.RTB==<1B0> ;1 - return message send buffer to SCA
;0 - return message send buffer to free Q
F.SPM==F.RTB_<-1> ;1 - Send mess/datagram in high den mode
;0 - Send mess/datagram in industry compat mode
F.RSP==F.SPM_<-1> ;1 - Packet was generated locally
;0 - Packet came from CI (remotely generated)
C%FLGM==<F.RTB!F.SPM!F.RSP> ;Mask for all flag bits
SUBTTL Message priorities
; The following are the priorities used for sending messages generated by SCA.
;
; Priorities are as follows:
; 0 - Highest priority
; 3 - Lowest priority
;
KLPHI==0 ;Priority 0 - High
KLPMED==1 ;Priority 1 - Medium
KLPLOW==2 ;Priority 2 - Low
KLPDRG==3 ;Priority 3 - Dregs
; The following are the priorities used by each of the SYSAPs
CFSPRI==KLPHI ;Priority used by CFSSRV
MSCPRI==KLPMED ;Priority used by PHYMSC
MVRPRI==KLPMED ;Priority used by PHYMVR
SCSPRI==KLPLOW ;Priority used by SCSJSY
CIDPRI==KLPLOW ;Priority used by CIDLL
IPCPRI==KLPLOW ;Priority used by IPCIDV
CLUPRI==KLPLOW ;[7.1076] Priority used by CLUDGR
SUBTTL Queue of Outstanding Requests
QORLNK==0 ;LH=PREVIOUS QOR ENTRY, RH=NEXT
QORIRB==1 ;RH=POINTER TO IORB
QORUNI==1 ;LH=UNIT FOR TRANSFER
QORCRF==2 ;COMMAND REFERENCE NUMBER
QORBHD==3 ;BUFFER HEADER DESCRIPTOR
QORLEN==4 ;SIZE OF A QOR ENTRY
SUBTTL Random cruft for PHYMSC
;before csstyp in PHYPAR
PRTMXU==30 ;Max number of units on any CI node
MAXPRT==1 ;Maximum number of CI ports
;****** This must be 6 when we go to Jupiter's
DGLEN==^D96 ;LENGTH OF A DATAGRAM BUFFER
SUBTTL End of SCAPAR
END