mirror of
https://github.com/PDP-10/stacken.git
synced 2026-03-01 01:19:17 +00:00
1387 lines
44 KiB
Plaintext
1387 lines
44 KiB
Plaintext
UNIVERSAL DTEPRM - PARAMETERS FOR DTE20 PROTOCOL - V072
|
||
SUBTTL E. SOCCI/EVS/EGF/VJB/SSG 12-APR-88
|
||
|
||
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.
|
||
;ALL RIGHTS RESERVED.
|
||
|
||
.CPYRT<1976,1988>
|
||
|
||
|
||
VDTPRM==072 ;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
|
||
.KLETM==^D5 ;MINUTES AFTER THE LAST KL ERROR
|
||
; STATUS MESSAGE TO WAIT BEFORE
|
||
; RELEASING THE FREE CORE BY
|
||
; DISCARDING THE KL ERROR DATA
|
||
|
||
PHASE 0
|
||
|
||
.KEBEG::! ;BEGINNING OF KL ERROR BLOCK
|
||
FIELD.(KE.DEV,9,8) ; DEVICE CODE
|
||
FIELD.(KE.LIN,9,17) ; LINE (UNIT) NUMBER
|
||
FIELD.(KE.CNT,18,35) ; COUNT OF DATA, IN 8 BIT BYTES
|
||
|
||
EWORD.
|
||
;;------------------------------------------------------------------------
|
||
FIELD.(KE.CPU,9,8) ; CPU NUMBER
|
||
FIELD.(KE.DTE,9,17) ; DTE NUMBER
|
||
FIELD.(KE.LNK,18,35) ; LINK TO NEXT BLOCK
|
||
|
||
EWORD.
|
||
;;------------------------------------------------------------------------
|
||
|
||
.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
|
||
|