Trailing-Edge
-
PDP-10 Archives
-
BB-JR93K-BB_1990
-
10,7/mon/dteprm.mac
There are 12 other files named dteprm.mac in the archive. Click here to see a list.
UNIVERSAL DTEPRM - PARAMETERS FOR DTE20 PROTOCOL - V073
SUBTTL E. SOCCI/EVS/EGF/VJB/SSG 26-SEP-89
SEARCH F,S
;THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED
; OR COPIED ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE.
;
;COPYRIGHT (c) DIGITAL EQUIPMENT CORPORATION
; 1976,1977,1978,1979,1980,1982,1984,1986,1988,1990.
;ALL RIGHTS RESERVED.
.CPYRT<1976,1990>
VDTPRM==073 ;VERSION OF DTEPRM GOES IN UNIVERSAL SYMBOL TABLE
;NOTE:
; BE SURE TO INCREMENT THIS VERSION NUMBER EVERY TIME THE FILE IS
; CHANGED TO ENSURE THAT ALL MODULES REQUIRING THE CHANGE WILL
; SEE THE PROPER VERSION NUMBER
;THIS UNIVERSAL FILE IS ASSEMBLED BEFORE COMDEV OR DTESER IS
; ASSEMBLED. IT CONTAINS SYMBOL AND MACRO DEFINITIONS RELATED
; TO THE OPERATION OF DTESER. MACROS FROM DTEPRM ARE
; CALLED FROM COMDEV TO GENERATE THE COMMUNICATIONS REGION AND
; THE DTE CONTROL BLOCKS.
;DEFINITIONS ADDED FOR QUEUED PROTOCOL VERSION 2 ON 11 JUL 80
SUBTTL 10/11 DTE COMMUNICATIONS REGION
IFDEF TTDBUG,< XLIST>
;MACRO TO COMPUTE THE WIDTH OF A MASK
; "WID" RETURNS THE LENGTH OF THE LEFTMOST STRING OF
; CONSECUTIVE ONES IN THE WORD.
DEFINE WID(MASK),<<^L<-<<MASK>_<^L<MASK>>>-1>>>
;MACRO TO COMPUTE THE POSITION OF A MASK
DEFINE POS(MASK),<<^L<MASK>+^L<-<<MASK>_<^L<MASK>>>-1>-1>>
;MACRO TO BUILD A POINTER TO A MASKED QUANTITY
; POINTR LOCATION,MASK
DEFINE POINTR(LOC,MASK),<<POINT WID(MASK),LOC,POS(MASK)>>
;MACRO TO BUILD A MASK "WID" BITS WIDE, WITH ITS RIGHTMOST BIT
; IN THE BIT POSITION "POS". (I.E. A MASK FOR THE BYTE
; POINTED TO BY THE BYTE POINTER "POINT WID,LOC,POS")
DEFINE MASK.(WID,POS),<<<<1_<WID>>-1>B<POS>>>
;MACRO TO DEFINE A SYMBOL WITH ONLY ONE BIT ON, IN THE SAME POSITION AS
; THE RIGHTMOST BIT IN "MASK" (OR 0, IF "MASK" = 0)
DEFINE RGHBT.(MASK),<<<MASK>&-<MASK>>>
SUBTTL SIMPLE STRUCTURE AND LOAD/STORE
;MACROS TO DEFINE AND LOAD/STORE A BYTE LOCATION
;MACRO DEFST. (BYTE NAME, WORD LOCATION, MASK)
; DEFINES THE LOCATION AND SIZE OF THE BYTE
DEFINE DEFST.(NAM$,LOC$,MASK$),<
..OLD==10
..TYP==3
IFE <MASK$>+1,..TYP==0
IFE <MASK$>-^O777777,..TYP==1
IFE <MASK$>-^O777777B17,..TYP==2
..POS==POS(<MASK$>)
..WID==WID(<MASK$>)
RADIX 10
DF%%ST (\..TYP,NAM$,<LOC$>,\..POS,\..WID)
PURGE ..OLD,..TYP,..POS,..WID>
; THIS IS A HELPER MACRO FOR INTERNAL USE
DEFINE DF%%ST (TYP$,NAM$,LOC$,POS$,WID$),<
RADIX ..OLD
DEFINE NAM$ (OPS,AC,E),<
..C==0
IRP OPS,<
IFE TYP$-..C,<
STOPI
IFN 3-..C, OPS <AC>,LOC$''E
IFE 3-..C, OPS <AC>,[POINT WID$,LOC$''E,POS$]
>
..C==..C+1>
PURGE ..C>
>
;MACRO LOAD. (AC, BYTE NAME, OPTIONAL LOC)
; WILL LOAD AC WITH THE CONTENTS OF THE BYTE. IF AND ONLY
; NO LOCATION WAS GIVEN IN DEFST., GIVE IT IN LOAD.
;MACRO STOR. IS IDENTICAL EXCEPT THE AC IS STORED INTO THE BYTE.
;MACRO ZERO. IS IDENTICAL (FIRST ARG IGNORED) EXCEPT ZERO IS STORED
DEFINE LOAD. (AC$,STR$,E$),< STR$ (<MOVE,HRRZ,HLRZ,LDB>,<AC$>,<E$>)>
DEFINE STOR. (AC$,STR$,E$),< STR$ (<MOVEM,HRRM,HRLM,DPB>,<AC$>,<E$>)>
DEFINE ZERO. (AC$,STR$,E$),< STR$ (<SETZM,HLLZS,HRRZS,<PRINTX ?CAN'T ZERO BYTE>>,<AC$>,<E$>)>
SUBTTL DTE 10/11 COMMUNICATIONS REGION
;MACRO TO DEFINE A DATA STRUCTURE FOR A GIVEN FIELD.
; CALL IS: FIELD.(NAME,WIDTH,POSITION,<OPTIONAL VALUE>,<OPTIONAL LOCATION>
; ARGUMENTS:
; NAME SIX CHARACTER DATA STRUCTURE NAME
; WIDTH SIZE OF FIELD IN BITS.
; POSITION POSITION OF RIGHTMOST BIT OF FIELD, DECIMAL
; VALUE OPTIONAL, IF SPECIFIED WILL GENERATE A LOCATION
; IF USED WITH EWORD., WITH VALUE "VALUE".
; LOCATION OPTIONAL, IF SPECIFIED WILL GENERATE A LOCATION
; IF USED WITH EWORD., WITH "VALUE"
; AS THE CONTENTS
;
; FIELDS OF GREATER THAN LENGTH 1 (BYTE MASKS) CALL DEFST. TO DEFINE
; A MACRO THAT CAN BE USED WITH LOAD./STOR.
;
; FIELDS OF LENGTH 1 DO NOT USE DEFST., BUT DIRECTLY ASSIGN THE 36
; BIT VALUE OF THE BIT POSITION TO THE SYMBOL "NAME". THIS IS BECAUSE
; THE "TX" MACROS CANNOT BE USED, BECAUSE THEY DO NOT HANDLE EXTERNAL
; SYMBOLS CORRECTLY AND WOULD HAVE TO BE MIXED WITH REGULAR TEST INSTRUCTIONS.
; THEREFORE, DO NOT USE LOAD./STOR. FOR SINGLE BIT VALUES! USE LOAD./STOR.
; TO FETCH THE WORD, AND DO A REGULAR TEST INSTRUCTION USING THE BIT
; VALUE. IF THE VALUE IS IN THE LEFT HALF, USE "()" TO SWAP IT.
; ALTERNATIVELY, ONE CAN DEFINE WORD NAMES (EXAMPLE, ETDSTS) IN ORDER
; TO DO "TDXX" INSTRUCTIONS.
;
; THE SYMBOL ZZ00 (LEVEL 0, TEMP SYMBOL 0) IS USED TO ACCUMULATE
; VALUES FOR A GIVEN WORD. THE MACRO EWORD. WILL CAUSE THESE ACCUMULATED
; VALUES TO BE PLACED IN A LOCATION. IF NO FIELD. MACRO GENERATED A VALUE
; FOR THE CURRENT WORD, THEN EWORD. WILL GENERATE A "BLOCK 1". SEE
; THE EWORD. MACRO FOR FURTHER DETAILS.
;
; "LOCATION" IS USED ONLY FOR BYTE FIELDS AS AN ARGUMENT TO DEFST.
; FIELDS OF LENGTH 1 (BIT ASSIGNMENTS) ARE SIMPLY DEFINED AS VALUES
DEFINE FIELD.(NAME,WID,POS,VAL,LOC),<MLIST.(S,S) ;;LEVEL 0
IFB <LOC> <ZZ01==.>
IFNB <LOC> <ZZ01==LOC>
ZZ02==MASK.(^D'WID,^D'POS)
IFN ^D'WID-1,< DEFST.(NAME,\ZZ01,\ZZ02)>;;ONLY FOR FIELDS GREATER THAN 1 BIT
IFE ^D'WID-1,< NAME==:ZZ02>;;FOR SINGLE BITS, JUST THE BIT NAME
IFNB <VAL> <IF2,<PDEBUG(*NAME='VAL)>>
IFNB <VAL> <
IFNDEF ZZ00,<ZZ00==0>
ZZ00==ZZ00+<VAL>B<POS>>;;END IFNB <VAL>
MLIST.(R)
>;END FIELD. MACRO DEFINITION
;MACRO TO END A WORD WITHIN A DATA STRUCTURE
; ASSUMES ACCUMULATED VALUES HAVE BEEN STORED IN VARIABLE ZZ00
; (LEVEL 0, VARIABLE 0). IF NO VALUES HAVE BEEN ACCUMULATED FOR A WORD,
; THEN A "BLOCK 1" IS GENERATED.
IFDEF ZZ00,<
PURGE ZZ00 ;ASSUMPTION IS MADE THAT IF ZZ00
>;END IFDEF ZZ00
; IS DEFINED, THEN A VALUE FOR A FIELD HAS BEEN SPECIFIED (EVEN IF
; THAT VALUE IS ZERO) SO WE MUST PURGE ZZ00 TO MAKE SURE ITS NOT
; DEFINED THE FIRST TIME EWORD. IS USED. ZZ00 IS PURGED AFTER EVERY
; CALL TO EWORD. LISTING CONTROL MACRO MLIST. IS USED TO SUPPRESS
; EWORD. MACRO EXPANSION IN LISTING, AND OLD LISTING CONTROL IS RESTORED
; AFTER MACRO DOES ITS WORK.
; EWORD. IS USED IN CONJUNCTION WITH FIELD.
DEFINE EWORD.<MLIST.(S,S) ;;LEVEL 0
IFNDEF ZZ00,<BLOCK 1>
IFDEF ZZ00,< ZZ00
PURGE ZZ00>
MLIST.(R)
>
;MACRO TO CONVERT FROM A BYTE COUNT OF ONE SIZE TO A BYTE COUNT
; OF ANOTHER SIZE. DEFAULT ORIGINAL SIZE IS 8 BITS. NEW SIZE MUST
; BE LARGER THAN ORIGINAL SIZE.
;
;MACRO GENERATES VALUE OF NEW BYTE COUNT
DEFINE SIZE(THING,NEWSIZ,OLDSIZ<8>)
<<THING+<^D'NEWSIZ/^D'OLDSIZ-1>>/<^D'NEWSIZ/^D'OLDSIZ>>
;MACRO TO CONTROL MACRO EXPANSION LEVEL
; CONTAINS FEATURE TO TEMPORARILY SALL AN UNINTERESTING LOW LEVEL
; MACRO EXPANSION. THIS FEATURE WORKS FOR ONE LEVEL ONLY. TO
; RESTORE THE SAVED LEVEL, CALL IS MLIST.(R). TO SAVE THE LEVEL,
; CALL IS MLIST(ARG,S).
; VALUES FOR FIRST ARGUMENT:
; X XALL
; S SALL
; L LALL
; R RESTORE LAST LISTING LEVEL (ONE LEVEL ONLY)
; VALUES FOR SECOND ARGUMENT
; (BLANK) DON'T SAVE CURRENT LEVEL
; (NON-BLANK) SAVE CURRENT LEVEL
DEFINE MLIST.(ARG,SAVE)<SALL
IFNB <SAVE>, <%.MLST==%.MCUR>
IFIDN <ARG> <S>, <%.MCUR==<'SALL'>>
IFIDN <ARG> <L>, <%.MCUR==<'LALL'>>
IFIDN <ARG> <X>, <%.MCUR==<'XALL'>>
IFIDN <ARG> <R>, <%.MCUR==%.MLST>
IFE %.MCUR^!<'SALL'>,<DEFINE MLST1.<SALL>>
IFE %.MCUR^!<'XALL'>,<DEFINE MLST1.<XALL>>
IFE %.MCUR^!<'LALL'>,<DEFINE MLST1.<LALL>>
MLST1.>;END MLIST. MACRO DEFINITION
;DEFINE INITIAL LEVEL OF MACRO LISTING
DEFINE %.MSET(ARG),<ARG
%.MLST==''ARG''
%.MCUR==''ARG''>;END %.MSET MACRO DEFINITION
IFNDEF DEBUG,<%.MSET(SALL)>
IFDEF DEBUG,<%.MSET(LALL)>
;MACRO TO DO A PRINTX IF DEBUG SYMBOL IS DEFINED
DEFINE PDEBUG(TEXT),<IFDEF DEBUG,<MLIST.(L)
PRINTX TEXT
MLIST.(R)
>;;END IFDEF DEBUG
IFDEF TTDBUG,<MLIST.(L)
;'TEXT
MLIST.(R)
>;;END IFDEF TTDBUG
>;END PDEBUG MACRO DEFINITION
;MACRO TO CALL A MACRO FOR EACH OF A NUMBER OF PROCESSORS
; ARGUMENTS:
; X NUMBER OF PROCESSORS
; DO WORKER MACRO. MAY REFERENCE COUNTING VARIABLE, IF
; ARGUMENT Y (SEE BELOW) IS SPECIFIED NON-BLANK
; Y IF NON-BLANK, THE NAME OF THE ARGUMENT IS ACCESSIBLE
; TO THE WORKER MACRO
; XBACK IF SPECIFIED NON-BLANK, WILL CAUSE NUMBERING TO GO BACKWARDS
DEFINE ETPDOX(X,DO,Y,XBACK)<
IFNB <Y> <
IFB <XBACK> <Y==0>
IFNB <XBACK> <Y==<X-1>>
>;;END IFNB Y
REPEAT X,<
DO
IFNB <Y> <
IFB <XBACK> <Y==Y+1>
IFNB <XBACK> <Y==Y-1>
>;;END IFNB Y
>;;END REPEAT X
>;END ETPDOX MACRO DEFINITION
;MACRO TO DEFINE THE COMMUNICATIONS REGION HEADER
; ALSO GENERATE SYMBOLS ETNM"X""Y" EQUAL TO PROTOCOL PROCESSOR NUMBER
; WHERE X IS 10 PROCESSOR AND Y IS EITHER 0 (REPRESENTING 10 PROCESSOR)
; OR NONZERO (REPRESENTING 11). THESE SYMBOLS HELP BUILD THE REST
; OF THE COMM REGION BY SERVING AS A MAP FROM 10 PROCESSOR - DTE
; TO PROTOCOL PROCESSOR NUMBER
; CALLED ONLY ONCE WHEN DEFINING COMMUNICATIONS REGION
DEFINE ETHEAD< ;;LEVEL 5
PDEBUG(****BEGIN REGION HEADER)
ETCHED::ETPDOX(M.CPU,<ETHED1(\ZZ43)>,ZZ43,1)
PDEBUG(****END REGION HEADER)
PDEBUG()
>;END ETHEAD DEFINITION
DEFINE ETHED1(N10)< ;;LEVEL 3
ETPDOX(<M'N10'DTEN+1>,<ETHED2(\ZZ43,\ZZ24)>,ZZ24,1)
>;END ETHED1 MACRO DEFINITION
DEFINE ETHED2(N10,N11)< ;;LEVEL 1
DEFINE X(A)<ZZ10==ETO'A> ;;CONVERT PROTOCOL PROCESSOR NUMBER TO
;; RELATIVE ADDRESS OF AREA
IF2,<;;ETNM'N10'N11 IS NOT DEFINED UNTIL ETREGN IS CALLED
X(\ETNM'N10'N11)
FIELD.(EH.PRN,8,11,ETNM'N10'N11,0) ;; PROCESSOR NUMBER
FIELD.(EH.RLA,22,35,ZZ10,0) ;; RELATIVE ADDRESS OF THIS
;; PROCESSORS COMM AREA
>;;END IF2
EWORD.
>;END ETHED2 MACRO DEFINITION
;MACRO TO DEFINE A COMPLETE COMMUNICATIONS REGION
; THIS MACRO AND ETHEAD COMPLETELY GENERATE THE COMPLETE
; COMMUNICATIONS REGION. SYMBOLS THAT MUST BE DEFINED BY
; MONGEN:
; M.CPU NUMBER OF CPUS
; M"X"DTEN NUMBER OF DTES ON CPU "X"
DEFINE ETREGN< ;;LEVEL 8
PDEBUG(****BEGIN REGION)
ETCRGN::ZZ80==0 ;;ZZ80 WILL ALLOCATE PROTOCOL PROCESSOR NUMBERS
ETPDOX(M.CPU,<ETREG1(\ZZ70)>,ZZ70)
PDEBUG(****END REGION)
PDEBUG()
ETCEND::!ETCSIZ==:.-ETCRGN ;;SIZE OF COMM REGION IN WORDS
>;END ETREGN MACRO DEFINITION
DEFINE ETREG1(N10)< ;;LEVEL 6
ETPDOX(<M'N10'DTEN+1>,<ETAREA(N10,\ZZ50)>,ZZ50)
>;END ETREG1 MACRO DEFINITION
;MACRO TO DEFINE A COMPLETE COMMUNICATIONS AREA
; THIS MACRO IS CALLED FOR EACH 10 OR 11 PROCESSOR IN THE
; SYSTEM TO GENERATE ITS COMM AREA.
DEFINE ETAREA(N10,N11)< ;;LEVEL 4
PDEBUG(***BEGIN 10#'N10 11#'N11 AREA)
ETNM'N10'N11==ZZ80 ;;ZZ80 IS ETREGN'S PROCESSOR COUNTER
ZZ80==ZZ80+1 ;;NEXT PROCESSOR NUMBER
ZZ40==M'N10'DTEN+1
IFE N11,<ETOSEC(1,\ZZ40,\ETNM'N10'N11,N10)>
IFN N11,<ETOSEC(0,2,\ETNM'N10'N11,N10)>
IFE N11,<ETPDOX(<M'N10'DTEN>,<ETARE1(N10,\ZZ33+1,\ZZ33)>,ZZ33)>
IFN N11,<;;ASSUMES EACH 11 IS CONNECTED TO ONE AND ONLY ONE DTE20/KL10
ET2SEC(1,1,N11-1,\ETNM'N10'0)
>;;END IFN N11
PDEBUG(***END 10#'N10 11#'N11 AREA)
PDEBUG()
>;END ETAREA MACRO DEFINITION
DEFINE ETARE1(N10,N11,NDTE)< ;;LEVEL 2
ET2SEC(0,1,NDTE,\<ETNM'N10'N11>)
>;END ETARE1 DEFINITION
;MACRO TO DEFINE THE OWNING PROCESSOR'S SECTION OF
; A COMMUNICATIONS AREA
;ARGUMENTS:
; TEN NON-ZERO IF THIS AREA IS OWNED BY A TEN
; NUMPRO NUMBER OF PROCESSORS REPRESENTED IN THIS AREA,
; INCLUDING OWNING PROCESSOR
; PRONUM PROTOCOL PROCESSOR NUMBER OF OWNING PROCESSOR
DEFINE ETOSEC(TEN,NUMPRO,PRONUM,N10)< ;;LEVEL 1
PDEBUG(**BEGIN OWNING SECTION)
ETO'PRONUM==.-ETCRGN
DEFINE X(A)<ETO'A>
PHASE 0
ETCREA::! ;;START OF EACH AREA
ETCPID::! ;;OWNING PROCESSOR'S ID WORD
FIELD.(EC.OIX,1,0,TEN) ;; OWNING PROCESSOR IS A TEN
FIELD.(EC.CVR,3,3) ;; COMMUNICATIONS AREA VERSION NUMBER
FIELD.(EC.PVR,6,11) ;; PROTOCOL VERSION NUMBER
FIELD.(EC.NPR,5,16,NUMPRO) ;; NUMBER OF PROCESSORS REPRESENTED IN THIS
;; AREA, INCLUDING OWNING PROCESSOR
FIELD.(EC.OSZ,3,19,ETOSIZ+<NUMPRO-1>*ET2SIZ)
;; SIZE OF ENTIRE OWNERS AREA, IN 8 WORD BLOCKS
FIELD.(EC.ONM,16,35) ;; NAME OF OWNING PROCESSOR (SERIAL NUMBER)
EWORD.
;;------------------------------------------------------------------------
ETCNCA::!
IF2,<;;CAN ONLY GENERATE LINKS ON PASS 2
ZZ10=='PRONUM+1
DEFINE X(A),<IFNDEF ETO'A,<ZZ11==ETO0> ;;FOR LAST LINK
IFDEF ETO'A,<ZZ11==ETO'A>>;;END X MACRO DEFINITION
X(\ZZ10) ;; GET VALUE OF ETO SOMETHING
;; INTO ZZ11
FIELD.(EC.NCA,18,35,\ZZ11) ;; REGION RELATIVE POINTER TO NEXT COMM AREA
;; (CIRCULAR LIST)
>;;END IF2
EWORD.
;;------------------------------------------------------------------------
ETCCPN::! ;;CPU NUMBER ALA SMP, BUT PLUS ONE.
;; NOW, PDP-11 CAN EXAMINE IT'S
;; "OWN" AREA AND FIND OUT WHICH CPU
;; IT IS ON
;;ALSO CONTAINS SYSTEM TYPE (ALA TOPS10,
;; TOPS20, ITS, ETC), SO THAT RSX20F
;; CAN KNOW...
.CNT10==1 ;;NICE MNEMONIC
FIELD.(EC.SST,4,3,.CNT10) ;;LET RSX KNOW WE ARE A TOPS-10
FIELD.(EC.CPN,8,35,N10+1)
EWORD.
;;------------------------------------------------------------------------
EWORD. ;;UNUSED
;;------------------------------------------------------------------------
EWORD. ;;UNUSED
;;------------------------------------------------------------------------
ETCKAC::! ;;KEEP ALIVE COUNT THAT THIS
;; PROCESSOR INCREMENTS
EWORD.
;;------------------------------------------------------------------------
EWORD. ;;UNUSED
;;------------------------------------------------------------------------
EWORD. ;;UNUSED
;;------------------------------------------------------------------------
BLOCK ^D8 ;;ANOTHER 8 WORD BLOCK IS REQUIRED
;;------------------------------------------------------------------------
ETOSIZ==<<.-ETCREA+^D7>/^D8> ;;SIZE OF OWNED SECTION IN 8 WORD BLOCKS
DEPHASE
PDEBUG(**END OWNING SECTION)
PDEBUG()
>;END ETOSEC MACRO DEFINITION
;MACRO TO DEFINE MULTIPLE NUMBER OF SECTIONS WITHIN AN AREA.
; CALLED FOR EACH TO-PROCESSOR SECTION OF A COMM AREA.
; MUST BE USED AT LEAST ONCE IMMEDIATELY AFTER ETOSEC MACRO TO COMPLETE A
; COMMUNICATIONS AREA. CHANGES IN THE COMM AREA FOR QPR V2 ARE INDICATED
; BY A (QP2) FOLLOWING THE COMMENT.
; ARGUMENTS:
; TEN NON-ZERO IF THIS IS FOR A 10
; DTECON NON-ZERO IF THERE IS A DTE CONNECTION BETWEEN
; THIS PROCESSOR AND OWNING PROCESSOR
; DTENUM DTE NUMBER IF DTECON IS NON-ZERO
; FORNUM NUMBER OF THE TO PROCESSOR
DEFINE ET2SEC(TEN,DTECON,DTENUM,FORNUM),< ;;LEVEL 1
PDEBUG(**BEGIN TO SECTION)
PHASE 0
ETCSEC::! ;;STARTING TO SECTION
FIELD.(EC.TIX,1,0,TEN) ;; TO-PROCESSOR IS A TEN BIT
FIELD.(EC.DCE,1,1,DTECON) ;; NON-ZERO IF DTE CONNECTS THESE
;; TWO PROCESSORS
FIELD.(EC.DTN,2,3,DTENUM) ;; DTE NUMBER OF DTE, IF ANY
FIELD.(EC.PRT,5,16) ;; PROTOCOL TO BE USED (QP2)
FIELD.(EC.SSZ,3,19,ET2SIZ) ;; SIZE OF THIS SECTION, IN 8
;; WORD BLOCKS
FIELD.(EC.TPN,16,35,FORNUM) ;; TO PROCESSOR NUMBER
EWORD.
;;------------------------------------------------------------------------
ETC2PA::!FIELD.(EC.2PA,18,35,ETO'FORNUM) ;;TO-PROCESSORS COMM AREA POINTER
;; RELATIVE TO COMM REGION ORIGIN
EWORD.
;;------------------------------------------------------------------------
ETCSTS::! ;;STATUS WORD FOR TRANSFERS TO
;; "TO-PROCESSOR"
FIELD.(EC.PWF,1,0) ;; "OUR POWER FAILED" BIT
FIELD.(EC.LOD,1,1) ;; "LOAD ME" BIT
FIELD.(EC.INI,1,2) ;; "INITIALIZE" HANDSHAKING BIT (QP2)
FIELD.(EC.VEX,1,3,1) ;; "VALID EXAMINE" BIT, 11 CHECKS
;; THIS WORD ON EVERY EXAMINE OF STATUS,
;; IF ITS ZERO GOES TO SECONDARY
;; PROTOCOL IF POSSIBLE (PRIVILEGED)
FIELD.(EC.QIU,1,13) ;; QUEUED PROTOCOL IN USE
FIELD.(EC.16B,1,17) ;; TO-PROCESSOR TRANSFER IS IN
;; 16 BIT MODE
FIELD.(EC.IND,1,18) ;; CURRENT TO-PROCESSOR TRANSFER IS
;; INDIRECT.
FIELD.(EC.2IT,1,19) ;; TO-PROCESSOR TRANSFER IS IN PROGRESS
FIELD.(EC.RCV,1,19) ;; KNOWN AS RCV IN QPR V2. (QP2)
FIELD.(EC.10C,8,27) ;; TO10IC, INCREMENTED AT START
;; OF EVERY TO-10 TRANSFER IN 11 COMM AREA
FIELD.(EC.11C,8,35) ;; TO11IC, INCREMENTED AT START OF
;; EVERY TO-11 TRANSFER IN 10 AREA
;; THE FOLLOWING TWO FIELDS ARE ANALOGOUS TO EC.11C & EC.10C, BUT THEY ARE
;; FOR QP2 ONLY.
FIELD.(EC.CPQ,8,27) ;; CPQCNT, OWNING PROCESSOR'S COPY OF
;; THIS TO-PROCESSOR'S QCOUNT
FIELD.(EC.QCT,8,35) ;; QCOUNT, INCREMENTED BY OWNING
;; PROCESSOR AT START OF NEW XFER
EWORD.
;;------------------------------------------------------------------------
ETCQSZ::! ;;TO-PROCESSOR QUEUE SIZE
FIELD.(EC.TMD,4,3) ;; TRANSFER MODE TYPE (QP2)
FIELD.(EC.PSZ,16,19) ;; ENTIRE PACKET SIZE (QP2)
FIELD.(EC.QSZ,16,35) ;; QUEUE SIZE FIELD
FIELD.(EC.CSZ,16,35) ;; CURRENT TRANSFER SIZE (QP2)
EWORD.
;;------------------------------------------------------------------------
ETCRLD::! ;;MEMORY FOR RELOAD PLACE FOR
;; TO-PROCESSOR
FIELD.(EC.RLD,35,35) ;; BIT 0 DOES NOT BELONG TO THIS FIELD
EWORD.
;;------------------------------------------------------------------------
ETCCKA::! ;;OWNING PROCESSORS COPY OF
;; KEEP ALIVE COUNT IN TO PROCESSORS
;; AREA.
FIELD.(EC.CKA,35,35) ;; THE FIELD.
EWORD.
;;------------------------------------------------------------------------
BLOCK 2 ;;REMAINDER UNUSED.
ET2SIZ==<<.-ETCSEC+^D7>/^D8> ;;SIZE OF THIS SECTION IN 8 WORD BLOCKS
DEPHASE
PDEBUG(**END TO SECTION)
PDEBUG()
>;END ET2SEC MACRO DEFINITION
SUBTTL FRONT END DEVICE CONTROL BLOCK DEFINITION
.FEALC==^D256 ;FE ALLOCATION IS 128 8 BIT BYTES LONG
.FEISZ==.FEALC*2/2 ;SIZE OF FED INPUT BUFFER IN 16 BIT BYTES.
; NOTE THAT IT IS TWICE AS BIG AS THE
; ALLOCATION TO SOLVE RACE CONDITION MENTIONED
; IN FEDSER.
.FEOSZ==.FEALC/2 ;OUTPUT FED BUFFER SIZE IN 16 BIT BYTES
IFGE <.FEOSZ*2>-400,<
.FEOSZ==374/2 ;CAN'T SEND OVER MORE THAN 255 BYTES
>;END IFGE .FEOSZ*2-400
IFN <.FEOSZ/2*2>-.FEOSZ,<.FEOSZ==.FEOSZ-1>
;BUFFER SIZE MUST BE EVEN TO RELIEVE
; OUTPUT UUO CODE FROM HAVING TO
; CARRY AN ODD BYTE WHILE WAITING
; FOR MORE BUFFER SPACE
.FEMXU==4-1 ;MAXIMUM OF 4 FRONT END DEVICES ON FRONT END
.FESMS==3 ;NUMBER OF 16 BIT BYTES TO TAKE ON STATUS
DEFINE FEDGEN<
ETPDOX(M.CPU,<FEDGN1(\ZZ60)>,ZZ60)
>;END FEDGEN MACRO DEFINITION
DEFINE FEDGN1(N10)<
ETPDOX(<M'N10'DTEN>,<FEDGN2(N10,\ZZ40)>,ZZ40)
>;END FEDGN1 MACRO DEFINITION
DEFINE FEDGN2(N10,NDTE)<
DEFINE X(A)<NDL M.FD'N10''A,2
ZZ30==M.FD'N10''A>
X(\<NDTE+1>)
ETPDOX(<ZZ30>,<FEDBLK(N10,NDTE,\ZZ20)>,ZZ20)
>;END FEDGN2 MACRO DEFINITION
DEFINE FEDBLK(N10,NDTE,UNI)<
FED'N10'NDTE'UNI'::!
PHASE 0
FEDSTS::! ;;STATUS WORD
FIELD.(FE.EOF,1,0) ;; EOF BIT.
FIELD.(FE.MIP,1,1) ;; MESSAGE IN PROGRESS (SET INT,TST UUO)
FIELD.(FE.OAE,1,2) ;; BUFFER AVAILABLE FOR OUTPUT TO 11.
;; SET BY UUO LEVEL, CLEARED BY INTERRUPT LEVEL
FIELD.(FE.FER,1,3) ;; FATAL ERROR FOR FRONT END DEVICE
FE.CLR==FE.EOF!FE.OAE!FE.FER!FE.MIP ;;BITS TO CLEAR
FIELD.(FE.CPN,3,20,N10) ;; CPU NUMBER
FIELD.(FE.DTN,3,23,NDTE) ;; DTE NUMBER
FIELD.(FE.UNI,3,26,UNI) ;;FRONT END DEVICE UNIT NUMBER
EWORD.
;;------------------------------------------------------------------------
FIELD.(FE.JCH,18,17) ;; JCH NUMBER OWNING FED
FIELD.(FE.BAO,9,26) ;; BYTES AVAILABLE FOR OUTPUT TO 11
EWORD.
;;------------------------------------------------------------------------
FEDTPT::! BLOCK 1 ;;POINTER USED TO TAKE DATA FROM
;; FED INPUT BUFFER
;;------------------------------------------------------------------------
FEDPPT::! BLOCK 1 ;;POINTER TO PUT DATA INTO FED
;; INPUT BUFFER
;;------------------------------------------------------------------------
FEDTCT::! BLOCK 1 ;;NUMBER OF BYTES AVAIL TO TAKE
;;------------------------------------------------------------------------
FEDFBI::! BLOCK 1 ;;NUMBER OF BYTES FREE IN FED INPUT BUFFER
;;------------------------------------------------------------------------
IF2,<
DEFINE X(A,B)<
IFLE M.FD'N10''A-<UNI+1>,<ZZ10==0>
IFG M.FD'N10''A-<UNI+1>,<ZZ10==FED'N10'NDTE''B>
>;;END X MACRO DEFINITION
X(\<NDTE+1>,\<UNI+1>)
>;;END IF2
FIELD.(FE.LNK,18,17,ZZ10) ;; LINK TO NEXT FED ON THIS FRONT END
EWORD.
;;------------------------------------------------------------------------
FEDIBF::!BLOCK 1 ;; ADDRESS OF FED INPUT BUFFER
;;------------------------------------------------------------------------
FEDOBF::!BLOCK 1 ;; ADDRESS OF FED OUTPUT BUFFER
;;------------------------------------------------------------------------
FEDSOB::!BLOCK .FESMS/<^D36/^D16>
;;------------------------------------------------------------------------
DEPHASE
>;END FEDBLK MACRO DEFINITION
SUBTTL KL ERROR CORE CHUNK DEFINITIONS
PHASE .EBHDR ;OFFSETS INTO SYSTEM ERROR BLOCK
.KEBEG::! ;BEGINNING OF KL ERROR BLOCK
BLOCK 4 ;JUNK FOR XFRSEB TO FILL
;;------------------------------------------------------------------------
.KEDEV::!
FIELD.(KE.LIN,18,17) ; LINE (UNIT) NUMBER
FIELD.(KE.DEV,18,35) ; DEVICE CODE
EWORD.
;;------------------------------------------------------------------------
.KEPTR::!
BLOCK 1 ;RELATIVE AOBJN POINTER TO DATA
EWORD.
;;------------------------------------------------------------------------
.KEDTE::!
FIELD.(KE.CPU,18,17) ; CPU NUMBER
FIELD.(KE.DTE,18,35) ; DTE NUMBER
EWORD.
;;------------------------------------------------------------------------
.KECNT::!
FIELD.(KE.CNT,18,35) ; COUNT OF DATA, IN 8 BIT BYTES
EWORD.
;;------------------------------------------------------------------------
.KEDAT::!
.KEHDL==<.-.KEBEG>*<^D36/^D8> ;SIZE OF HEADER IN 8 BIT BYTES
FIELD.(KE.1WD,16,15) ; FIRST 16 BIT BYTE
EWORD.
;;------------------------------------------------------------------------
DEPHASE
SUBTTL DTE DEFINITIONS
;DTE DEVICE CODES
DTE0==200
DTE1==204
DTE2==210
DTE3==214
;EPT LOCATIONS
PHASE 140
DTEHBG: ;BEGINNING OF DTE20 HARDWARE EPT LOCATIONS
DTEEBP: BLOCK 1 ;TO-11 BYTE POINTER
DTETBP: BLOCK 1 ;TO-10 BYTE POINTER
DTEDII: BLOCK 1 ;INTERRUPT LOCATION
BLOCK 1 ;UNUSED
DTEEPW: BLOCK 1 ;EXAMINE PROTECTION WORD
DTEERW: BLOCK 1 ;EXAMINE RELOCATION WORD
DTEDPW: BLOCK 1 ;DEPOSIT PROTECTION WORD
DTEDRW: ;DEPOSIT RELOCATION WORD
DTEHBE: BLOCK 1 ;END OF DTE20 HARDWARE EPT LOCATIONS
DEPHASE
;DTE20 CONO BITS (NAMES FROM KL10 EFS CHAP 4.3)
TO11DB==1B22 ;TO -11 DOOR BELL
CR11B==1B23 ;CLEAR RELOAD -11 BUTTO0
SR11B==1B24 ;SET RELOAD -11 BUTTON
CL11PT==1B26 ;CLEAR -11 REQUESTING A 10 INTERRUPT BIT
TO11ER==1B27 ;TO -11 ERROR
CLTO11==1B29 ;CLEAR TO -11 NORMAL TERMINATION FLAG (TO11DN)
CLTO10==1B30 ;CLEAR TO -10 NORMAL TERMINATION FLAG (TO10DN)
PILDEN==1B31 ;ENABLE LOADING PIA
PI0ENB==1B32 ;PI0 ENABLE
PIA==7B35 ;PIA
;DTE20 CONI BITS
RM==1B20 ;RESTRICTED MODE 11
DEAD11==1B21 ;11 POWER FAILURE
TO11DB==1B22 ;TO -11 DOORBELL PRESSED
TO10DB==1B26 ;TO -10 DOORBELL
TO11ER==1B27 ;ERROR OCCURRED DURING TO-11 XFER (CLEARED BY CLTO11)
TO11DN==1B29 ;TO -11 NORMAL TERMINATION
TO10DN==1B30 ;TO -10 NORMAL TERMINATION
TO10ER==1B31 ;TO -10 ERROR
PI0ENB==1B32 ;PI0 ENABLE
PIA==7B35 ;PIA
;DTE20 DATAO DEFINITIONS
TO10IB==1B23 ;"I" BIT, SAYS INTERRUPT 11 AFTER XFER
TO10BC==7777B35 ;TO-10 BYTE COUNT FIELD
CLRDTE==CR11B+CL11PT+CLTO11+CLTO10 ;CLEAR OUT A DTE WITH CONO THESE BITS
SUBTTL SECONDARY PROTOCOL DEFINITIONS
;SECONDARY PROTOCOL COMMAND FIELDS
DT.MTO==10B27 ;CTY OUTPUT
DT.ESP==11B27 ;ENTER SECONDARY PROTOCOL
DT.LSP==12B27 ;LEAVE SECONDARY PROTOCOL
DT.RST==1B35 ; WHEN LEAVING SECONDARY PROTOCOL,
; THIS BIT SET TO INDICATE COMM REGIONS WERE RESET
DT.GDT==13B27 ;GET DATE/TIME
;BITS 4-19 ARE EPT OFFSET TO STORE RESULT (3 WORDS)
;TO PROVIDE FOR EXTENDING SECONDARY PROTOCOL WITHOUT CRASHING PRIOR
;VERSIONS OF -20F, DTEMTD (ALWAYS DEFINED AS NON-ZERO WHEN TTY OUTPUT DONE)
;HAS BEEN REDEFINED AS FOLLOWS:
DF.GDT==1B35 ;ZERO IF DT.GDT SUPPORTED
DF.CSH==1B34 ;CACHE WAS ENABLED BY KLI
DF.8BA==1B33 ;ZERO IF 8-BIT ENABLE/DISABLE SUPPORTED
;32-19 ;RESERVED FOR NEW FEATURES
DF.ODN==1B20 ;TERMINAL OUTPUT DONE
PHASE 444 ;START OF SECONDARY PROTOCOL EPT LOCATIONS
DTEFLG: BLOCK 1 ;COMMAND COMPLETE FLAG
BLOCK 3 ;UNUSED
DTEF11: BLOCK 1 ;FROM 11 DATA
DTECMD: BLOCK 1 ;COMMAND WORD
BLOCK 3 ;UNUSED
DTEMTD: BLOCK 1 ;OUTPUT DONE FLAG
DTEMTI: BLOCK 1 ;INPUT READY FLAG
DEPHASE
SUBTTL DTE CONTROL BLOCK GENERATION MACRO
DEFINE ETDGEN<
ETPDOX(M.CPU,<ETDGN1(\ZZ40)>,ZZ40)
>;END ETDGEN MACRO DEFINITION
DEFINE ETDGN1(N10)<
ETPDOX(<M'N10'DTEN>,<DTEBLK(N10,\<ZZ20+1>)>,ZZ20)
>;END ETDGN1 MACRO DEFINITION
SUBTTL DTE CONTROL BLOCK MACRO DEFINITION
DEFINE DTEBLK(N10,N11),<
IFN N11,<
PDEBUG(**BEGIN DTE BLOCK 'N10'N11)
ETD'N10'N11'B::
PHASE 0
ETDINT::!0
0
EXP IC.UOU
EXP ETD'N10'N11'B+.-ETDINT+1
DMOVEM F,D'N10'N11'SAC##+F
DMOVE F,ETD'N10'N11'B+ETDINT
DMOVEM F,D'N10'N11'CHL##
DMOVE F,D'N10'N11'SAC+F
JSR D'N10'N11'SAV## ;SAVE AC'S
MOVEI F,ETD'N10'N11'B
PJRST DTEINT## ;;PROCESS INTERRUPT
ETDNAM::!FIELD.(ED.NAM,36,35,<SIXBIT/DTE'N10'N11/>)
EWORD.
;;------------------------------------------------------------------------
ETDSTS::! ;;GENERAL STATUS OF DTE
FIELD.(ED.2ES,3,2) ;; TO-11 DTE STATE CODE
ED.EID==0 ;; TO-11 IDLE
ED.EDB==1 ;; WAITING FOR TO-11 DONE FOR
;; A DIRECT TRANSFER
;; (USED FOR MCB PROTOCOL ALSO)
ED.EIB==2 ;; WAITING FOR TO-11 DONE
;; FOR AN INDIRECT TRANSFER
FIELD.(ED.2TS,2,5) ;; TO-10 DTE STATE CODE
ED.TID==0 ;; TO-10 IDLE
ED.TDB==1 ;; WAITING FOR TO-10 DONE FOR
;; A DIRECT TRANSFER
ED.TWD==2 ;; WAITING FOR TO-10 DOORBELL
;; INDICATING 11 HAS SETUP
;; FOR A TO-10 INDIRECT XFER
ED.TIB==3 ;; WAITING FOR TO-10 DONE ON
;; INDIRECT TRANSFER
;; IN QUEUED PROTOCOL VERSION 2, THESE VALUES MEAN:
;; ED.TIB==0 ;; TO-10 IDLE
;; ED.TDB==1 ;; WAITING FOR TO-10 DONE FOR A
;; NON-SCATTER READ XFER OR
;; WAITING FOR TO-10 DONE ON LAST
;; XFER IN A SCATTER READ
;; ED.TWD=2 ;; WAITING FOR DOORBELL SO WE CAN
;; GET NEXT CHUNK IN A SCATTER
;; READ XFER.
;; ED.TIB==3 ;; WAITING FOR TO-10 DONE FOR A
;; SCATTER READ XFER THAT IS NOT
;; THE LAST ONE
;;NOTE THAT THE ORDER OF ED.DTX THROUGH ED.RLD IS IMPORTANT TO DTELDR
;; AND OTHER USERS OF THE DTE. GET STATUS UUO.
FIELD.(ED.DTX,1,6) ;; DTE EXISTS. SET BY DTEINI
FIELD.(ED.DTM,1,7) ;; THIS DTE HAS MASTER 11 ON IT
FIELD.(ED.PPC,1,8) ;; PRIMARY PROTOCOL IS RUNNING
FIELD.(ED.SPC,1,9) ;; SECONDARY PROTOCOL IS RUNNING
FIELD.(ED.RLD,1,10) ;; THIS FRONT END NEEDS RELOADING
FIELD.(ED.RBF,1,11) ;; WHICH BUFFER IS IN USE FOR RSX-20F
FIELD.(ED.BFR,1,11) ;; INDICATES INPUT BUFFER HAS VALID
;; DATA WHEN IN MAINTENANCE MODE.
;; NO CONFLICT WITH ED.RBF, CAUSE RSX
;; NEVER RUNS THRU THIS CODE
FIELD.(ED.MAI,1,12) ;; IN MOP PROTOCOL
FIELD.(ED.RLP,1,13) ;; 11 RELOAD IN PROGRESS
FIELD.(ED.IPU,1,14) ;; GIVE PROTOCOL UP AT INTERRUPT LEVEL
FIELD.(ED.DBG,1,15) ;; RSX20F IS IN DEBUG MODE
FIELD.(ED.LLS,1,16) ;; LAST LINE STATE REPORTED TO DTE USER
;; 0 = LINE DOWN; 1 = LINE UP
FIELD.(ED.PPP,1,17) ;; PROTOCOL PAUSE MODE IF LIT
FIELD.(ED.SAL,1,18) ;;STXPPC CALLED FROM STAPPC (FOR MCB)
ED.CST==ED.DTX+ED.DTM+ED.PPC+ED.SPC+ED.RLD+ED.MAI+ED.RLP+ED.MAI+ED.IPU+ED.PPP
;;BITS TO CLEAR OUT ON INIT
;; ALSO MUST MAKE STATE CODES IDLE
FIELD.(ED.CPN,3,33,N10) ;; CPU NUMBER THAT THIS DTE IS ON
FIELD.(ED.DTN,2,35,N11-1) ;; DTE20 NUMBER (0-3)
EWORD.
;;------------------------------------------------------------------------
ETDAAD::! ;;AREA ADDRESSES
DEFINE X(A,B)<A==ETCRGN+ETO'B>
X(ZZ10,\ETNM'N10'0) ;;THIS 10'S OWNED AREA
X(ZZ11,\ETNM'N10'N11) ;; ADDRESS OF THIS 10'S 11'S OWNED AREA
ZZ12==ZZ11+ETOSIZ*^D8 ;; ADDRESS OF THIS 10'S TO SECTION
;; IN THE 11'S AREA
ZZ13==ZZ10+ETOSIZ*^D8+<N11-1>*ET2SIZ*^D8
;; ADDRESS OF THIS 11'S TO SECTION
;; IN THIS 10'S AREA
FIELD.(ED.10A,18,17,ZZ10) ;; ADDRESS OF THIS 10'S OWNED AREA
FIELD.(ED.11A,18,35,ZZ11) ;; ADDRESS OF THE CONNECTED 11'S AREA
EWORD.
;;------------------------------------------------------------------------
ETDSAD::! ;;TO-PROCESSOR SECTION ADDRESSES
FIELD.(ED.210,18,17,ZZ12) ;; TO-10 SECTION OF 11S AREA
FIELD.(ED.211,18,35,ZZ13) ;; TO-11 SECTION OF 10S AREA
EWORD.
;;------------------------------------------------------------------------
ETDQUE::! ;;TO-11 QUEUE WORD
FIELD.(ED.QUE,36,35) ;; POINTER TO FIRST ITEM OF QUEUE
EWORD.
;;------------------------------------------------------------------------
ETDLST::!
FIELD.(ED.LST,36,35) ;; POINTER TO TAIL OF TO-11 QUEUE
EWORD.
;;------------------------------------------------------------------------
ETDMSP::! ;;TO-10 MESSAGE POINTER WORD
FIELD.(ED.MSP,36,35) ;; THE POINTER, USED FOR EXTRACING BYTES
;; FROM THE TO-10 MESSAGE
;; REFERENCED BY LOAD./STOR. AND ILDB
EWORD.
;;------------------------------------------------------------------------
ETDNMP::! ;;NEXT MESSAGE POINTER, COMPUTED
;; EVERY TIME A MESSAGE IS TAKEN
;; FROM A TO-10 PACKET. NEEDED
;; BECAUSE THE ONLY WAY TO FIND
;; NEXT MESSAGE IS TO REMEMBER
;; HOW LONG CURRENT MESSAGE WAS
;; BEFORE ITS GIVEN TO DRIVER
FIELD.(ED.NMP,36,35) ;; 36 BIT FIELD
EWORD.
;;------------------------------------------------------------------------
ETDCUR::! ;;CURRENT TO-11 QUEUE ENTRY
FIELD.(ED.CUR,36,35) ;; WHEN AN ENTRY IS BEING SENT,
;; IT IS NO LONGER IN THE QUEUE,
;; BUT ITS ADDRESS IS IN THIS FIELD.
EWORD.
;;------------------------------------------------------------------------
ETDICT::! ;; INITIAL TO-10 INDIRECT BYTE COUNT
FIELD.(ED.ICT,18,17) ;; USED TO REMEMBER HOW MUCH
;; DATA DRIVER WANTS FROM TO-10
;; INDIRECT MESSAGE FROM TO-10
;; DONE FOR DIRECT PART OF MESSAGE
;; TO TIME DOORBELL COMES IN
DEFINE X(A),<NDL M.FD'N10'N11,2
IFG M.FD'N10'N11,<ZZ10==FED'N10''A'0>
IFLE M.FD'N10'N11,<ZZ10==0>>
X(\<N11-1>)
FIELD.(ED.FED,18,35,ZZ10) ;; ADDRESS OF FIRST FRONT END DEVICE BLOCK FOR THIS FRONT END
EWORD.
;;------------------------------------------------------------------------
ETDPKC::!BLOCK 1 ;;PACKET COUNT, INITIALLY CONTAINS
;; QSIZE FROM THE TO-10 SECTION OF
;; THE COMM REGION, IS DECREMENTED
;; AS MESSAGES ARE TAKEN FROM THE
;; PACKET.
;; NO FIELD, ARITHMETIC IS DONE TO THIS LOCATION.
;;------------------------------------------------------------------------
ETDIBL::! ;;NUMBER OF INDIRECT BYTES LEFT
;; IN CURRENT TO-10 MESSAGE WITHIN
;; PACKET
FIELD.(ED.IBL,18,17) ;; THE FIELD
ETDIPS::! ;;POST ADDRESS TO TRANSFER TO
;; WHEN THE INDIRECT PART OF AN INDIRECT
;; TO-10 MESSAGE IS RECEIVED,
;; SETUP BY DRIVER AT TIME
;; THE DIRECT PART OF THAT
;; MESSAGE IS RECEIVED.
FIELD.(ED.IPS,18,35) ;; 18 BIT ADDRESS FIELD
EWORD.
;;------------------------------------------------------------------------
ETDPNP::! ;;PROCESSOR PROTOCOL NUMBERS
FIELD.(ED.KTN,9,8,1) ;;DLS LINE NUMBER FOR KLINIK
FIELD.(ED.CTN,9,17) ;; DLS LINE NUMBER OF CTY ON MASTER DTE
FIELD.(ED.PNT,9,26,<ETNM'N10'0>);; PROTOCOL NUMBER FOR TEN
FIELD.(ED.PNE,9,35,<ETNM'N10'N11>);; PROTOCOL NUMBER FOR 11
EWORD.
;;------------------------------------------------------------------------
ETDATN::! ;;WORD CONTAINING # ASYNC TERMINALS ON THIS DTE
;; DRIVEN DIRECTLY THRU RSX20
FIELD.(ED.ATN,8,35) ;; THE ATN FIELD (FILLED IN LATER)
EWORD.
;;------------------------------------------------------------------------
ETDXDI::! ;;WORD FOR TO-10 INDIRECT MESSAGES
;; USED TO REMEMBER INFO ABOUT MESSAGE BETWEEN
;; TIME DIRECT PART COMES AND
;; TIME INDIRECT PART COMES TO-10
FIELD.(ED.XDV,9,8) ;; TO-10 DEVICE CODE
FIELD.(ED.XLN,9,17) ;; TO-10 LINE NUMBER
FIELD.(ED.XFN,18,35) ;; TO-10 FUNCTION CODE
EWORD.
;;------------------------------------------------------------------------
ETDTBP::!DTETBP+.E'N10'EPT##+^D8*<N11-1> ;;ADDRESS OF TO-10 BYTE POINTER IN EPT
;;------------------------------------------------------------------------
ETDEBP::!DTEEBP+.E'N10'EPT##+^D8*<N11-1> ;;ADDRESS OF TO-11 BYTE POINTER IN EPT
;;------------------------------------------------------------------------
DEFINE X(A)<ZZ10==DTE'A> ;;SO WE CAN SUBTRACT ONE FROM N11
X(\<N11-1>) ;;SUBTRACT ONE FROM N11 AND GET DTE DEVICE CODE
ETDCNO::!CONO ZZ10,(T1)
;;------------------------------------------------------------------------
ETDCNI::!CONI ZZ10,T1
;;------------------------------------------------------------------------
ETDCSO::!CONSO ZZ10,(T1)
;;------------------------------------------------------------------------
ETDCSZ::!CONSZ ZZ10,(T1)
;;------------------------------------------------------------------------
ETDDTO::!DATAO ZZ10,T1
;;------------------------------------------------------------------------
ETDBUF::! ;;TO-10 BUFFER SPACE
FIELD.(ED.TBA,1,0) ;; TO-10 BUFFER IS ALLOCATED
;; (KEEP OLD ADDRESS AROUND FOR DEBUGGING)
FIELD.(ED.BSZ,17,17) ;; SIZE OF ALLOCATED TO-10 BUFFER
FIELD.(ED.BUF,18,35) ;; EVA OF ALLOCATED TO-10 BUFFER
EWORD.
;;------------------------------------------------------------------------
ETDKAR::!BLOCK 1 ;;KEEP ALIVE REMEMBRANCE PLACE
;;------------------------------------------------------------------------
.EDKAE==:^D6 ;;NUMBER OF SECONDS KEEP ALIVE IS
;; ALLOWED TO REMAIN UNCHANGED
ETDKAN::!BLOCK 1 ;;NUMBER OF SECONDS KEEP ALIVE HAS NOT
;; CHANGED
;;------------------------------------------------------------------------
ETDLCP::!BLOCK 1 ;;LAST PC ON AN -11 RELOAD
;;------------------------------------------------------------------------
ETDCNT::! ;;SOME COUNTERS
FIELD.(ED.RMN,18,17) ;; BYTE COUNT REMAINING FOR SUBSEQ
FIELD.(ED.LBC,18,35) ;; LAST TRANSFER'S BYTE COUNT
EWORD.
;;------------------------------------------------------------------------
ETDUSR::! ;;CURRENT USER OF LINE
FIELD.(ED.USR,36,35) ;; HANDY FIELD DEFINITION
EWORD.
;;------------------------------------------------------------------------
ETDDDB::! ;;DDB FOR DTE: DEVICE
FIELD.(ED.DDB,36,35) ;;HANDY FIELD DEF
EWORD.
;;------------------------------------------------------------------------
ETDLBK::!BLOCK 1 ;;POINTER TO RTR'S LINE BLOCK
;;------------------------------------------------------------------------
ETDOBK::!FIELD.(ED.OBK,36,35) ;;POINTER TO BLOCK OF FREE
;; CORE FOR NON-GATHER READ Q.P. V2
;; TRANSFERS
EWORD.
;;------------------------------------------------------------------------
ETDIBK::!FIELD.(ED.IBK,36,35) ;;POINTER TO BLOCK OF FREE
;; CORE FOR NON-GATHER READ Q.P. V2
;; TRANSFERS
EWORD.
;;------------------------------------------------------------------------
ETDMBP::!BLOCK 1 ;;POINTER TO CURRENT INPUT MESSAGE BLOCK
;;------------------------------------------------------------------------
ETDDLX::!EXP <CONC(DS'N10,\<N11-1>,BS##)> ;;CORRESPONDING BASE TABLE
;;------------------------------------------------------------------------
ETDFEK::!EXP <CONC(S'N10,\<N11-1>,FEK##)> ;;CORRESPONDING FEK ADDRESS
;;------------------------------------------------------------------------
DEPHASE
>;;END IFN N11
>;END DTEBLK MACRO DEFINITION
SUBTTL MACRO TO GENERATE DTE CONTROL TABLE
;MACRO TO GENERATE TABLES WHICH MAP 10 CPU# AND DTE# INTO DTE
; CONTROL BLOCK ADDRESS. CALLED FROM COMDEV.
; ROUTINE TO CONVERT 10CPU AND DTE NUMBERS INTO DTE CONTROL BLOCK
; ADDRESS:
; MOVE T1,<10 CPU NUMBER>
; MOVE F,<DTE NUMBER (0-3)>
; MOVE F,@ETDTAB(T1)
DEFINE ETDTBX,<;;LEVEL 5
ETDTAB::
ETPDOX(M.CPU,<ETDTBA(\ZZ40)>,ZZ40) ;;TABLE OF TABLE ADDRESSES,
;;ONE ENTRY PER CPU
ETPDOX(M.CPU,<ETDTBB(\ZZ40)>,ZZ40) ;;GENERATE PER CPU TABLE OF DTE CONTROL BLOCK ADDRESSES
>;END ETDTBX MACRO
DEFINE ETDTBA(N10)<;;LEVEL 3
IFIW ETDTB'N10(F) ;;ADDRESS OF 10#'N10'S DTE TABLE
>;END ETDTBA MACRO DEFINITION
DEFINE ETDTBB(N10)<;;LEVEL 3
ETDTB'N10::
ETPDOX(<M'N10'DTEN>,<ETDTBC(N10,\<ZZ20+1>)>,ZZ20)
>;END ETDTBB MACRO DEFINITION
DEFINE ETDTBC(N10,N11)<
ETD'N10'N11'B
>;END ETDTBC MACRO DEFINITION
SUBTTL TO-11 QUEUE AND TO-11 DTE PROTOCOL MESSAGE FORMAT
;THE TO-11 QUEUE ENTRY FORMAT CONSISTS OF A HEADER, FOLLOWED
; BY THE ACTUAL MESSAGE TO BE SENT THROUGH THE DTE20. THIS SETUP
; IMPLIES THAT ONLY ONE MESSAGE PER DTE20 PROTOCOL PACKET CAN BE
; SENT TO THE 11.
;TO-11 QUEUE HEADER DEFINITIONS
PHASE 0
ETQBEG::! ;FIRST WORD OF TO-11 QUEUE HEADER
ETQLNK::!FIELD.(EQ.LNK,36,35) ; ADDRESS OF NEXT ITEM IN TO-11 QUEUE
EWORD.
;;------------------------------------------------------------------------
ETQSTS::! ;ENTRY STATUS BITS
FIELD.(EQ.STS,9,8) ; QUARTERWORD OF STATUS
FIELD.(EQ.16B,1,0) ; TO-11 INDIRECT TO BE SENT IN 16 BIT MODE
FIELD.(EQ.ELN,9,17) ; TO-11 LINE, SAVED FOR TO-11 POST
EWORD.
;;------------------------------------------------------------------------
ETQCNT::! ;COUNT TO SET DTE BYTE COUNT TO
; FOR TO-11 INDIRECT DATA
FIELD.(EQ.CNT,18,17) ; THE FIELD
ETQPST::! ;POST ADDRESS FOR QUEUE REQUEST
FIELD.(EQ.PST,18,35) ; DITTO
EWORD.
;;------------------------------------------------------------------------
ETQPTR::! ;BYTE POINTER TO TO-11 INDIRECT
; DATA. IF SIZE IN POINTER IS
; GREATER THAN 16 BITS, HIGH
; ORDER UNUSED BITS MUST BE ZERO,,
; OR ELSE DTE WILL GET PARITY ERRORS
FIELD.(EQ.PTR,36,35) ; WHOLE WORD.
EWORD.
;;------------------------------------------------------------------------
ETQDRD::! ;DRIVER'S DATA
FIELD.(EQ.DRD,18,17) ; THE FIELD
ETQSIZ::!FIELD.(EQ.SIZ,18,35) ; SIZE OF THIS ENTIRE BLOCK OF CORE
; IN 36 BIT WORDS
EWORD.
;;------------------------------------------------------------------------
ETQMBP::!BLOCK 1 ;POINTER TO ASSOCIATED MESSAGE BLOCK
;;------------------------------------------------------------------------
.EQLEN==<.-ETQBEG>*<^D36/^D8> ;SIZE OF QUEUE HEADER
; IN 8 BIT BYTES
DEPHASE
;TO-11 MESSAGE FORMAT
; NOTE: BYTES ARE SWAPPED FOR THE CORRESPONDING TO-10 MESSAGES, SO
; REFRAIN FROM USING LOAD./STOR. WITH THESE DATA STRUCTURE DEFINITIONS
; FOR TO-10 MESSAGES.
PHASE 0
ETMBEG::! ;BEGINNING OF TO-11 MESSAGE
FIELD.(EM.CNT,16,15) ; MESSAGE COUNT, IN 8 BIT BYTES
FIELD.(EM.FNC,16,31) ; FUNCTION CODE
FIELD.(EM.16B,1,19) ; USED BY DRIVERS, NOT SEEN IN MESSAGES
FIELD.(EM.IND,1,20) ; SUBFIELD OF EM.FNC, SAYS
; MESSAGE IS INDIRECT
;HERE ARE PROTOCOL FUNCTION CODES.
.EM2EI==1 ;TO-11 INITIAL MESSAGE FUNCTION
FIELD.(EM.50C,1,20) ; 50 HZ BIT IN THIS MESSAGE
.EM2TI==2 ;TO-10 INITIAL MESSAGE
.EMSTR==3 ;STRING DATA
.EMLNC==4 ;LINE-CHAR, LINE-CHAR
.EMRDS==5 ;REQUEST DEVICE STATUS
.EMSDS==6 ;SET DEVICE STATUS
.EMHDS==7 ;HERE IS DEVICE STATUS
;THE FOLLOWING BIT DEFINITIONS ARE WITH RESPECT TO THE STATUS
; BYTE AS IT APPEARS AFTER A -10 BYTE INSTRUCTION
FIELD.(EM.CFG,1,24) ; CONFIGURATION INFORMATION
FIELD.(EM.LIN,1,25) ; LOST INTERRUPT ENABLE
FIELD.(EM.HNG,1,26) ; HUNG DEVICE
FIELD.(EM.F11,1,27) ; FILES-11
FIELD.(EM.FER,1,28) ; FATAL ERROR
FIELD.(EM.ELR,1,29) ; ERROR LOGGING REQUEST
FIELD.(EM.EOF,1,30) ; END OF FILE
FIELD.(EM.IOP,1,31) ; I/O IN PROGRESS
FIELD.(EM.SER,1,32) ; SOFT ERROR
FIELD.(EM.HER,1,33) ; HARD ERROR
FIELD.(EM.OFL,1,34) ; OFF LINE
FIELD.(EM.NXD,1,35) ; NON-EXISTANT DEVICE
;#10 UNIMPLEMENTED
.EMRDT==11 ;REQUEST DATE/TIME
.EMHDT==12 ;HERE IS DATE/TIME
.EMDTS==^D10 ; SIZE OF DATE/TIME INDIRECT MESSAGE
; IN 8 BIT BYTES
.EMFLO==13 ;FLUSH OUTPUT (^O)
.EMSNA==14 ;SEND ALL (TTYS)
.EMDSC==15 ;DATASET CONNECTED
.EMHUD==16 ;HANG UP DATASET
.EMACK==17 ;ACKNOWLEDGE (DEVICE LINE ALLOCATION FREE)
.EMXOF==20 ;XOFF TTY LINE
.EMXON==21 ;XON TTY LINE
.EMHLS==22 ;HERE ARE LINE SPEEDS FOR TTYS
.EMHLA==23 ;HERE ARE LINE ALLOCATIONS
.EMRBI==24 ;TO-10 REBOOT INFORMATION
.EMAKA==25 ;ACK ALL
.EMTDO==26 ;TURN DEVICE (ON/OFF)
.EMEDR==27 ;ENABLE/DISABLE REMOTES
.EMLDR==30 ;LOAD LP RAM
.EMLDV==31 ;LOAD LP VFU
.EMD6D==32 ;DAS60 DATA
.EMKPS==33 ;KLINIK PARAMETER STATUS
.EMAXF==34 ;ENABLE/DISABLE AUTO-XOFF
.EMBTC==35 ;TO-11 BREAK THROUGH CHARACTER DATA
.EMDBN==36 ;TO-11 TURN ON DEBUGGING-KL MODE
.EMDBF==37 ;TO-11 TURN OFF DEBUG MODE
.EMDSN==40 ;TO-10 DRIVE SERIAL NUMBERS
.EM8BE==41 ;8-BIT ENABLE (TTY)
.EM8BD==42 ;8-BIT DISABLE (TTY)
.EMMXF==42 ;MAXIMUM PROTOCOL FUNCTION
EWORD.
;;------------------------------------------------------------------------
FIELD.(EM.DEV,16,15) ; PROTOCOL DEVICE CODE
.EMCTY==1 ;DEVICE CODE FOR CTY
.EMDL1==2 ;DL11
.EMDH1==3 ;DH11 #1
.EMDLS==4 ;DLS (ALL TTYS COMBINED)
.EMLPT==5 ;FRONT END LPT
.EMCDR==6 ;CDR
.EMCLK==7 ;CLOCK
.EMFED==10 ;FRONT END DEVICE
.EMNCL==11 ;NCL DEVICE (DN87S)
.EMD60==12 ;DN60
.EMMXD==12 ;MAXIMUM DEVICE CODE (EXCEPT FOR WAY OUT ONES BELOW)
.EMCPU==200 ;KL10 CPU
.EMKLE==201 ;KLERR
.EMD20==202 ;DTE-20
.EMRPX==203 ;RH-11 RP04/RP06
.EMKLI==210 ;KLINIK
FIELD.(EM.SPR,16,31) ; SPARE, UNUSED
EWORD.
;;------------------------------------------------------------------------
.EMHBL==<.-ETMBEG>*<^D36/^D8> ;LENGTH OF FIRST PART OF HEADER,
; IN 8 BIT BYTES
FIELD.(EM.1WD,16,15) ; FIRST WORD (PART OF HEADER)
FIELD.(EM.DAT,16,35) ; FIRST DATA WORD (ALSO PART OF HEADER)
EWORD.
;;------------------------------------------------------------------------
.EMHDL==<.-ETMBEG>*<^D36/^D8> ;LENGTH OF ENTIRE HEADER IN
; 8 BIT BYTES
DEPHASE
IFDEF TTDBUG,<LIST>
;NEGATIVE FUNCTIONS USED ONLY BY DTESER FOR INTERNAL COMMUNICATION
; TO DRIVERS. SYMBOLS ARE 18 BIT NEGATIVE, FOR MOVEI.
.EMXML==-1&777777 ;SAYS THAT THE FRONT END HAS CRASHED
; WHILE A DRIVER WAS WAITING FOR INDIRECT
; DATA, THUS POSSIBLY NEEDS TO DEALLOCATE
; A BUFFER
SUBTTL SYMBOL DEFINITIONS
;GENERATE SYMBOLS FOR DTESER AND FRIENDS TO REFER TO
M.CPU==1
M0DTEN==1 ;NUMBER OF DTES ON CPU0
M.AT01==1 ;# ASYNCHRONOUS LINES ON RSX20
M.FD01==1 ;# FRONT END DEVICES ON DTE FE #0
SUBTTL DECNET DEFINTIONS
;THE FOLLOWING VALUE OF MAXIMUM MESSAGE BLOCK LENGTH (KNOWN AS THE USER
; DATA SEGMENT TO DECNET-36) MUST BE THE SAME AS THE VALUE IN D36COM.
UBLSIZ==^D590/4 ;MAXIMUM SIZE IS 590 BYTES
SUBTTL DEFINITIONS FOR DTE DEVICE
;LOCAL BITS FOR DEVIOS
IOSMAI==400 ;LINE SHOULD BE USED IN MAINT MODE
IOSSRM==200 ;START MODE WAS RCVD IN MAINT MODE
IOSMRN==100 ;NORMAL MESSAGE RCVED IN MAINT MODE
;OTHER DTE DEVICE RELATED PARAMETERS
DTEMMS==1240 ;MAXIMUM MESSAGE SIZE (JUST PICK ONE)
DTEMXQ==3 ;MAXIMUM NUMBER OF BUFFERS TO QUEUE UP
;THIS IS THE INTERLOCK FOR DTESER
OPDEF DTEOFF [CONO PI,NETPIF##]
OPDEF DTEON [CONO PI,NETPIN##]
.NODDT DTEOFF,DTEON
SUBTTL COMM SECTIONS FIELD DEFINITIONS
;OWNING SECTION'S PROTCOL VERSION DEFINITIONS
.PV20F==0 ;VERSION USED ON RSX-20F AND ANF-10
.PVMCB==1 ;VERSION USED FOR MCB
;OWNING SECTION'S COMM AREA VERSION DEFINITIONS
.CV20F==0 ;COMM AREA USED ON RSX-20F AND ANF-10
.CVMCB==2 ;COMM AREA USED FOR MCB
;"TO" SECTION'S "TMODE" (TRANSFER MODE) DEFINITIONS
.TMBYT==0 ;BYTE MODE TRANSFERS
.TMBWD==1 ;BYTES IN WORD MODE TRANSFERS
.TMWRD==2 ;WORD MODE TRANSFERS
;"TO" SECTION'S "PROTYP" (PROTOCOL TYPE) DEFINITIONS
.M20F==0 ;PROTOCOL USED ON RSX-20F
.MMCB==1 ;PROTOCOL USED FOR MCB
SUBTTL SYMBOL GENERATION
.XCREF
;GENERATE FRONT END DEVICE CONTROL BLOCKS FIRST, DTE CONTROL BLOCKS
; POINT TO THEM
FEDGEN
;GENERATE COMM REGION SYMBOLS BY CALLING THEIR MACROS
; FOR A CONFIGURATION OF ONE TEN AND ONE ELEVEN.
ETHEAD
ETREGN
;NOW GENERATE SYMBOLS FOR DTE CONTROL BLOCK BY CALLING THE MACRO ONCE
ETDGEN
.CREF
PURGE ETCRGN,ETCSIZ,ETCHED ;SO NO ERRORS IN DTESER.
PURGE M.CPU,M.AT01,DTE0NM ; GET RID OF PHONEY CONFIG SYMBOLS
PURGE M.FD01,M0DTEN
; DTEDEV DEFINES THESE
; FOR REAL
SUBTTL MESSAGE DISPATCH TABLE GENERATION
;MACRO TO DEFINE THE DTE MESSAGE DISPATCH TABLE AND FILL IN DUMMY
;ENTRIES FOR THOSE FUNCTIONS NOT SUPPORTED. THE MACRO TAKES TWO
;ARGUMENTS. THE FIRST IS THREE CHARACTER NMEMONIC FOR THE FUNCTION
;IN QUESTION, AND THE SECOND IS A PROCESSING ROUTINE ADDRESS. WHEN
;THE MACRO IS INVOKED WITH NO ARGUMENTS, IT WILL FILL IN DUMMY
;ENTRIES FOR EACH FUNCTION.
DEFINE DTEFNC (CODE,ADDR,%X),<
XLIST
IFB <CODE>,<
IF2,<IFNDEF EATMSG,<EXTERN EATMSG>>
%X==[PJRST EATMSG]
REPEAT <.EMMXF+1>,<IFIW %X>
> ;;END IFB <CODE>
IFNB <CODE>,<
.ORG .-<.EMMXF+1>+.EM'CODE
IFIW ADDR
.ORG ;;.-.EM'CODE+<.EMMXF+1>-1
> ;;END IFNB <CODE>
LIST
> ;END DEFINE DTEFNC
SUBTTL END
END