Trailing-Edge
-
PDP-10 Archives
-
BB-J696A-BM_1980
-
dngen/netlib.mac
Click dngen/netlib.mac to
see without markup as text/plain
There are 4 other files named netlib.mac in the archive. Click here to see a list.
.MACRO ABODF$,L,B
S.COAD='B'0.
S.CSGF='B'2.
S.CBPT='B'4.
S.CIOT='B'6.
S.CILI='B'8.
S.CEMT='B'10.
S.CTRP='B'12.
S.CFLT='B'14.
S.CSST='B'16.
S.CAST='B'18.
S.CABO='B'20.
S.CLRF='B'22.
S.CCRF='B'24.
S.IOMG='B'26.
S.PRTY='B'28.
T.NDNR='B'0
T.NDSE='B'2
T.NCWF='B'4
T.NCRE='B'6
T.NDMO='B'8.
T.NLDN='B'12.
T.NLUP='B'14.
.MACRO ABODF$ X,Y
.ENDM
.ENDM
.MACRO ABTW$ LUN,EFN,IOST,AST,PRMLST
.MCALL QDPB$
QDPB$ 3,16010,LUN,EFN,,IOST,AST,<PRMLST>
.ENDM ABTW$
.MACRO ABTW$E LABEL,LUN,EFN,IOST,AST,PRMLST
.MCALL QDPB$E
QDPB$E LABEL,3,#16010,LUN,EFN,,IOST,AST,<PRMLST>
.ENDM ABTW$E
.MACRO ABTW$S LUN,EFN,IOST,AST,PRMLST
.MCALL QDPB$S
QDPB$S 3,#16010,LUN,EFN,,IOST,AST,<PRMLST>
.ENDM ABTW$S
.MACRO ABT$ LUN,EFN,IOST,AST,PRMLST
.MCALL QDPB$
QDPB$ 1,16010,LUN,EFN,,IOST,AST,<PRMLST>
.ENDM ABT$
.MACRO ABT$E LABEL,LUN,EFN,IOST,AST,PRMLST
.MCALL QDPB$E
QDPB$E LABEL,1,#16010,LUN,EFN,,IOST,AST,<PRMLST>
.ENDM ABT$E
.MACRO ABT$S LUN,EFN,IOST,AST,PRMLST
.MCALL QDPB$S
QDPB$S 1,#16010,LUN,EFN,,IOST,AST,<PRMLST>
.ENDM ABT$S
.MACRO ACCW$ LUN,EFN,IOST,AST,PRMLST
.MCALL $CON$
$CON$ 3,15410,LUN,EFN,IOST,AST,98.,PRMLST
.ENDM ACCW$
.MACRO ACCW$E LABEL,LUN,EFN,IOST,AST,PRMLST
.MCALL $CON$E
$CON$E LABEL,3,#15410,LUN,EFN,IOST,AST,PRMLST
.ENDM ACCW$E
.MACRO ACCW$S LUN,EFN,IOST,AST,PRMLST
.MCALL $CON$S
$CON$S 3,#15410,LUN,EFN,IOST,AST,#98.,PRMLST
.ENDM ACCW$S
.MACRO ACC$ LUN,EFN,IOST,AST,PRMLST
.MCALL $CON$
$CON$ 1,15410,LUN,EFN,IOST,AST,98.,PRMLST
.ENDM ACC$
.MACRO ACC$E LABEL,LUN,EFN,IOST,AST,PRMLST
.MCALL $CON$E
$CON$E LABEL,1,#15410,LUN,EFN,IOST,AST,PRMLST
.ENDM ACC$E
.MACRO ACC$S LUN,EFN,IOST,AST,PRMLST
.MCALL $CON$S
$CON$S 1,#15410,LUN,EFN,IOST,AST,#98.,PRMLST
.ENDM ACC$S
.MACRO ASCII$ TEXT
.ASCII /'TEXT'/
.ENDM
.MACRO ASL$ COUNT,REGISTER
.IF DF R$$11D ! I$$AS ! R$$EIS
ASH #'COUNT',REGISTER
.IFF
.REPT COUNT
ASL REGISTER
.ENDR
.ENDC
.ENDM ASL$
.MACRO ASR$ COUNT,REGISTER
.IF DF R$$11D ! I$$AS ! R$$EIS
ASH #-'COUNT',REGISTER
.IFF
.REPT COUNT
ASR REGISTER
.ENDR
.ENDC
.ENDM ASR$
.MACRO A1$ LB
.BYTE 5. , 0 ; OPCODE, COUNT
.ENDM
.MACRO A10$ LB,ROW,COL,VA,STRING
.BYTE 14. ; OPCODE
.BYTE LB'C ; COUNT
LB: .BYTE ROW,COL ; ROW AND COLLUMN
.BYTE LB'C-4 ; LENGTH OF TEXT
.IF B,VA
.BYTE V.N ; DEFAULT
.IFF
.BYTE VA
.ENDC
.ASCII STRING
LB'C= .-LB
.ENDM
.MACRO A11$ LB,ROW,COL,VA,STRING
.BYTE 15. ; OPCODE
.BYTE LB'C ; COUNT
LB: .BYTE ROW,COL ; ROW AND COLLUMN
.BYTE LB'C-4 ; LENGTH OF TEXT
.IF B,VA
.BYTE V.N ; DEFAULT
.IFF
.BYTE VA
.ENDC
.ASCII STRING
LB'C= .-LB
.ENDM
.MACRO A2$ LB,VA,STRING
.BYTE 6 ; OP CODE
.BYTE LB'C ; COUNT
LB:
.IF B,VA
.BYTE V.N ; DEFAULT
.IFF
.BYTE VA
.ENDC
.ASCII STRING
LB'C= .-LB
.ENDM
.MACRO A3$ LB,VA,STRING
.BYTE 7. ; OPCODE
.BYTE LB'C ; COUNT
LB:
.IF B,VA
.BYTE V.N ; DEFAULT
.IFF
.BYTE VA
.ENDC
.ASCII STRING ; TEXT TO BE WRITTEN
LB'C= .-LB
.ENDM
.MACRO A4$ LB,RW,CL,VA,STRING
.BYTE 8. ; OPCODE
.BYTE LB'C ; COUNT
LB: .BYTE RW,CL ; ROW AND COLLUMN
.BYTE LB'C-4 ; LENGTH OF TEXT
.IF B,VA
.BYTE V.N ; DEFAULT
.IFF
.BYTE VA
.ENDC
.ASCII STRING
LB'C= .-LB
.ENDM
.MACRO A5$ LB,ROW,COL,VA,STRING
.BYTE 9. ; OPCODE
.BYTE LB'C ; COUNT
LB: .BYTE ROW,COL ; ROW, COLLUMN
.BYTE LB'C-4 ; LENGTH OF TEXT
.IF B,VA
.BYTE V.N ; DEFAULT
.IFF
.BYTE VA
.ENDC
.ASCII STRING
LB'C= .-LB
.ENDM
.MACRO A6$ LB
.BYTE 10., 0 ; OP CODE, COUNT
.ENDM
.MACRO A7$ LB
.BYTE 11. , 0 ; OPCODE, COUNT
.ENDM
.MACRO A8$ LB,VA,STRING
.BYTE 12. ; OPCODE
.BYTE LB'C ; COUNT
LB:
.IF B,VA
.BYTE V.N ; DEFAULT
.IFF
.BYTE VA
.ENDC
.ASCII STRING
LB'C= .-LB
.ENDM
.MACRO A9$ LB,VA,STRING
.BYTE 13. ; OPCODE
.BYTE LB'C ; COUNT
LB:
.IF B,VA
.BYTE V.N ; DEFAULT
.IFF
.BYTE VA
.ENDC
.ASCII STRING
LB'C= .-LB
.ENDM
.MACRO BITDF$
BIT0 = 1
BIT1 = 2
BIT2 = 4
BIT3 = 10
BIT4 = 20
BIT5 = 40
BIT6 = 100
BIT7 = 200
BIT8 = 400
BIT9 = 1000
BIT10 = 2000
BIT11 = 4000
BIT12 = 10000
BIT13 = 20000
BIT14 = 40000
BIT15 = 100000
.MACRO BITDF$
.ENDM
.ENDM
.MACRO BUF$DF CCB,SCCB,NRDB,SRDB,NSDB,SSDB,THR,PSH,W,X,Y,Z
DEF$DF ; DEFINE ALL DEFAULT VALUES
CCB.NB=CCB ; USER DEFINED NUMBER OF CCBS'S
CCB.SZ=SCCB ; USER DEFINED SIZE OF CCB'S
RDB.NB=NRDB ; USER DEFINED NUMBER OF RDB'S
RDB.SZ=SRDB ; USER DEFINED SIZE OF RDB'S
SDB.NB=NSDB ; USER DEFINED NUMBER OF SDB'S
SDB.SZ=SSDB ; USER DEFINED SIZE OF SDB'S
TR=THR ; FAIL TO ALLOCATE LDB'S HERE
XM=PSH ; STACK THIS MANY TRANSMIT BUFFERS
.ENDM BUF$DF
.MACRO BYTADF
.MACRO PSHSTK,SRC
CLR -(SP)
MOVB SRC,(SP)
.ENDM PSHSTK
.MACRO POPSTK,DST
MOV (SP)+,DST
.ENDM POPSTK
.MACRO ADDSTK
ADD (SP)+,(SP)
.ENDM ADDSTK
.MACRO SUBSTK
SUB (SP)+,(SP)
.ENDM SUBSTK
.ENDM BYTADF
.MACRO CALLC LABEL
.IF DF RSX11D
CALL LABEL
.IFF
.IF DF M$$MGE
CALLX LABEL,PD$NSP
.IFF
CALL LABEL
.ENDC
.ENDC
.ENDM
.MACRO CALLX LABEL,PDV
.IF DF M$$MGE!RSX11D
JSR R5,$CALLX ; TRANSFER TO INTERMEDIATE ROUTINE
.WORD LABEL ; ADDRESS OF SUBROUTINE TO CALL
.WORD PDV ; PDV INDEX OF TARGET PROCESS
.IFF
CALL LABEL ; CALL SUBROUTINE DIRECTLY
.ENDC
.ENDM CALLX
.MACRO CASE
.IF GT $$CSTA
$$ELSE
$$TRNM=$$TRNM-2
.IFF
$$CSTA=1
.ENDC
.ENDM
.MACRO CCBDF$,L,B,LST
.IIF NB,LST, .LIST
; COMMUNICATIONS CONTROL BLOCK FORMAT
;
;
; ---------------------------------
; ! C.LNK ! 000
; !-------------------------------!
; ! C.BID ! C.RSV ! 002
; !-------------------------------!
; ! C.NSP ! 004
; !-------------------------------!
; ! C.STA ! C.LIN ! 006
; !-------------------------------!
; ! C.MOD ! C.FNC ! 010
; !-------------------------------!
; ! C.STS ! 012
; !-------------------------------!
; ! ! 014
; !- C.BUF1 -!
; ! ! 016
; !-------------------------------!
; ! C.CNT1 ! 020
; !-------------------------------!
; ! C.FLG1 ! 022
; !-------------------------------!
; ! ! 024
; !- C.BUF2 -!
; ! ! 026
; !-------------------------------!
; ! C.CNT2 ! 030
; !-------------------------------!
; ! C.FLG2 ! 032
; ---------------------------------
.ASECT
.=0
C.LNK:'L' .BLKW 1 ;FORWARD LINK
C.RSV:'L' .BLKB 1 ;RESERVED CELL FOR ALLOCATOR OF CCB
C.BID:'L' .BLKB 1 ;BUFFER ID
C.NSP:'L' .BLKW 1 ;NSP RESERVED CELL
C.LIN:'L' .BLKB 1 ;LINE NUMBER
C.STA:'L' .BLKB 1 ;STATION NUMBER
C.FNC:'L' .BLKB 1 ;FUNCTION CODE
C.MOD:'L' .BLKB 1 ;FUNCTION CODE MODIFIER
C.STS:'L' .BLKW 1 ;STATUS WORD
;FIRST BUFFER DESCRIPTOR
C.BUF1:'L'
C.BUF:'L' .BLKW 2 ;BUFFER ADDRESS DOUBLEWORD
C.CNT1:'L'
C.CNT:'L' .BLKW 1 ;BUFFER COUNT
C.FLG1:'L'
C.FLG:'L' .BLKW 1 ;BUFFER FLAGS
;SECOND BUFFER DESCRIPTOR
C.BUF2:'L' .BLKW 2 ;BUFFER ADDRESS DOUBLEWORD
C.CNT2:'L' .BLKW 1 ;BUFFER COUNT
C.FLG2:'L' .BLKW 1 ;BUFFER FLAGS
.PSECT
;
; CCB BUFFER ID DEFINITONS
;
CB.CCB='B' 000002 ; COMMON POOL CCB
CB.RDB='B' 000004 ; LARGE/RECEIVE DATA BUFFER CCB
;
; CCB STATUS WORD BIT DEFINITIONS (C.STS) DDM > DLC
;
CS.EOF='B' 000001 ;END OF FILE
CS.DEV='B' 000002 ;HARD DEVICE ERROR (I.E. NXM)
CS.ROV='B' 000004 ;RECEIVER OVERRUN
CS.RNG='B' 000010 ;RING DETECT
CS.ENB='B' 000020 ;CONNECTION ESTABLISHED
CS.DIS='B' 000040 ;DISCONNECT DETECTED
CS.ABO='B' 000100 ;MESSAGE ABORTED
CS.BUF='B' 000200 ;PREVIOUS BUFFER ALLOCATION FAILED & DEVICE RESYNC
CS.DCR='B' 000400 ;DATA CRC ERROR
CS.HFE='B' 002000 ;HEADER FORMAT ERROR
CS.MTL='B' 004000 ;MESSAGE TO LONG
CS.RSN='B' 010000 ;RECEIVER RESYNCED BEFORE THIS MESSAGE
CS.TMO='B' 020000 ;TIMEOUT ERROR (CLOCK LOSS)
CS.LST='B' 040000 ;LAST CCB IN MESSAGE CHAIN (USED BY COMM EXEC)
CS.ERR='B' 100000 ;INCLUSIVE OR OF ALL ERRORS
;
; CCB STATUS WORD BIT DEFINITIONS (C.STS)
; DLC (DDCMP OR DMC11) > LLC (NSP)
;
CE.RTE='B' 100376 ;RECEIVE THRESHOLD EXCEEDED
CE.TMO='B' 100374 ;REP THRESHOLD EXCEEDED
CE.MOP='B' 100372 ;MOP MESSAGE RECEIVED
CE.ERR='B' 100370 ;GENERAL ERROR
CE.DIS='B' 100366 ;DISCONNECT
CE.SRC='B' 100364 ;START RECEIVED
CE.ABO='B' 100362 ;OPERATION ABORTED
CE.NTE='B' 100361 ;NAK THRESHOLD EXCEEDED
CS.SUC='B' 000001 ;OPERATION SUCCESSFUL
;
; BUFFER FLAGS WORD BIT DEFINITIONS (C.FLG)
;
CF.EOM='B' 000004 ;END OF MESSAGE
CF.SOM='B' 000010 ;START OF MESSAGE
CF.HDR='B' 000020 ;BUFFER IS A HEADER
CF.SYN='B' 000040 ;PRECEED BUFFER BY SYNCS
CF.TRN='B' 000100 ;LIST MARKER FOR TURN AROUND
CF.LB='B' 100000 ;LAST BUFFER IN THIS LINK
;
; PROCESS OPERATION FUNCTION CODE DEFINITIONS
;
FC.XME='B' 0 ;TRANSMIT ENABLE
FC.RCE='B' 2 ;RECEIVE ENABLE (BUFFER RETURN)
FC.KIL='B' 4 ;KILL I/O
FC.CTL='B' 6 ;CONTROL
FC.TIM='B' 10 ;TIMEOUT
FC.XCP='B' 12 ;TRANSMIT COMPLETE
FC.RCP='B' 14 ;RECEIVE COMPLETE
FC.KCP='B' 16 ;KILL COMPLETE
FC.CCP='B' 20 ;CONTROL COMPLETE
;
; RECEIVE ENABLE SUBFUNCTION CODES
;
FS.RTN='B' 2*400 ;BUFFER FROM BUFFER WAIT REQUEST
;
; RECEIVE COMPLETE SUBFUNCTION CODES
;
FS.DVC='B' 2*400 ;DEVICE CHECKS CRC (CHECK C.STS FOR ERROR INDICATION)
FS.CIB='B' 4*400 ;CRC IS IN RECEIVE BUFFER
;
; KILL SUBFUNCTION CODES
;
FS.KIL='B' 0*400 ;RECEIVE & TRANSMIT KILL
FS.CRA='B' 2*400 ;RECEIVE KILL
FS.XKL='B' 4*400 ;TRANSMIT KILL
;
; CONTROL SUBFUNCTION CODES
;
FS.AST='B' 0*400 ;ASYNCHRONOUS EVENT (COMPLETION ONLY)
FS.INI='B' 0*400 ;INITIALIZE
FS.STR='B' 2*400 ;START
FS.STP='B' 4*400 ;STOP
FS.TRM='B' 6*400 ;TERMINATE
FS.MNT='B' 10*400 ;MAINTAINANCE
FS.SET='B' 12*400 ;SET CHARACTERISTICS
FS.GET='B' 14*400 ;GET CHARACTERISTICS
FS.XON='B' 16*400 ;XON
FS.XOF='B' 20*400 ;XOFF
;MODEM CONTROL: LLC > DLC > MDMCTL > DDM
FS.RNG='B' 22*400 ;LOOK FOR RING
;MODEM CONTROL: DLC > MDMCTL > DDM
FS.ENB='B' 24*400 ;ENABLE LINE
FS.DIS='B' 26*400 ;DISABLE LINE
;MODEM CONTROL: MDMCTL > DDM
FS.MSN='B' 30*400 ;SENSE MODEM STATUS
;
; TIMEOUT SUBFUNCTION CODES
;
FS.STM='B' 0*400 ;SHORT TIMEOUT (50 MSEC)
FS.LTM='B' 2*400 ;LONG TIMEOUT (1 SEC)
.IF NB LST
.NLIST
.IFF
.MACRO CCBDF$,X,Y
.ENDM
.ENDC
.ENDM
.MACRO CHADF$
CH.DUP = 000001
CH.ECH = 000002
CH.SYN = 000004
CH.TYP = 000010
CH.MDT = 000020
CH.STA = 000040
CH.PAR = 000100
CH.PRM = 000200
.ENDM CHADF$
.MACRO CLKDF$,L,B
C.MRKT='B'0
C.SCHD='B'2
C.SSHT='B'4
C.SYST='B'6
C.SYTK='B'8.
C.CSTP='B'10.
.ASECT
.=0
C.LNK:'L' .BLKW 1
C.RQT:'L' .BLKB 1
C.EFN:'L' .BLKB 1
C.TCB:'L' .BLKW 1
C.TIM:'L' .BLKW 2
.=C.TIM+4
C.AST:'L' .BLKW 1
C.SRC:'L' .BLKW 1
C.DST:'L' .BLKW 1
.=C.TIM+4
C.RSI:'L' .BLKW 2
C.UIC:'L' .BLKW 1
.=C.TIM+4
.BLKW 2
.BLKW 1
.=C.TIM+4
C.SUB:'L' .BLKW 1
C.AR5:'L' .BLKW 1
.BLKW 1
C.LGTH='B'.
.PSECT
.MACRO CLKDF$ X,Y
.ENDM
.ENDM
.MACRO CLSW$ LUN,EFN,IOST,AST
.MCALL QDPB$
.IF B <LUN>
QDPB$ 3,16410,<.MBXLU>,EFN,,IOST,AST
.IFF
QDPB$ 3,16410,LUN,EFN,,IOST,AST
.ENDC
.ENDM CLSW$
.MACRO CLSW$E LABEL,LUN,EFN,IOST,AST
.MCALL QDPB$E
QDPB$E LABEL,3,#16410,LUN,EFN,,IOST,AST
.ENDM CLSW$E
.MACRO CLSW$S LUN,EFN,IOST,AST
.MCALL QDPB$S
.IF B <LUN>
QDPB$S 3,#16410,<#.MBXLU>,EFN,,IOST,AST
.IFF
QDPB$S 3,#16410,LUN,EFN,,IOST,AST
.ENDC
.ENDM CLSW$S
.MACRO CLS$ LUN,EFN,IOST,AST
.MCALL QDPB$
.IF B <LUN>
QDPB$ 1,16410,<.MBXLU>,EFN,,IOST,AST
.IFF
QDPB$ 1,16410,LUN,EFN,,IOST,AST
.ENDC
.ENDM CLS$
.MACRO CLS$E LABEL,LUN,EFN,IOST,AST
.MCALL QDPB$E
QDPB$E LABEL,1,#16410,LUN,EFN,,IOST,AST
.ENDM CLS$E
.MACRO CLS$S LUN,EFN,IOST,AST
.MCALL QDPB$S
.IF B <LUN>
QDPB$S 1,#16410,<#.MBXLU>,EFN,,IOST,AST
.IFF
QDPB$S 1,#16410,LUN,EFN,,IOST,AST
.ENDC
.ENDM CLS$S
.MACRO CMDMDF
.PSECT CMDDAT,RW,D,GBL,REL,OVR
CMIPHD: .WORD 0
CMIPTL: .WORD CMIPHD
DFLCNT: .WORD 0
DFLNAM: .WORD 0,0,0
.PSECT
.ENDM
.MACRO CMIMDF
TERINP = 1.
.PSECT CMIDAT,RW,D,GBL,REL,OVR
CMIFLG: .BYTE 0
.PSECT
.ENDM
.MACRO CMOMDF
.PSECT CMODAT,RW,D,GBL,REL,OVR
CMLOCK: .BYTE 0
.PSECT
.ENDM
.MACRO CNBDF$,L,B
.ASECT
.=0
N.CTL:'L' .BLKW 1 ;TEMPORARY LINK ADDRESS
;
N.SEGZ:'L'.BLKW 1 ;SEGMENT SIZE
N.DFM:'L' .BLKB 1 ;DESTINATION DESCRIPTOR FORMAT
N.DOT:'L' .BLKB 1 ; " OBJECT TYPE
;FORMAT 0 -
.BLKB 18. ; [UNUSED]
.=.-18. ;FORMAT 1 -
N.DDEC:'L' .BLKW 1 ; DESTINATION PROCESS BYTE COUNT
N.DDE:'L' .BLKB 16. ; " "
.=.-18. ;FORMAT 2 -
N.DGP:'L' .BLKW 1 ; DESTINATION GROUP
N.DUS:'L' .BLKW 1 ; " USER
N.DNMC:'L' .BLKW 1 ; " NAME BYTE COUNT
N.DNM:'L' .BLKB 12. ; " "
;
N.SND:'L' .BLKB 6 ;SOURCE NODE NAME
N.SFM:'L' .BLKB 1 ; " DESCRIPTOR FORMAT
N.SOT:'L' .BLKB 1 ; " OBJECT TYPE
;FORMAT 0 -
.BLKB 18. ; [UNUSED]
.=.-18. ;FORMAT 1 -
N.SDEC:'L' .BLKW 1 ; SOURCE PROCESS NAME BYTE COUNT
N.SDE:'L' .BLKB 16. ; " " "
.=.-18. ;FORMAT 2 -
N.SGP:'L' .BLKW 1 ; SOURCE GROUP
N.SUS:'L' .BLKW 1 ; " USER
N.SNMC:'L' .BLKW 1 ; " NAME BYTE COUNT
N.SNM:'L' .BLKB 12. ; " "
;
N.CIDC:'L' .BLKW 1 ;SOURCE TASK ID BYTE COUNT
N.CID:'L' .BLKB 16. ; " " "
N.CPSC:'L' .BLKW 1 ;PASSWORD BYTE COUNT
N.CPS:'L' .BLKB 8. ; "
N.CACC:'L' .BLKW 1 ;ACCOUNTING INFORMATION BYTE COUNT
N.CAC:'L' .BLKB 16. ; " "
N.CDAC:'L' .BLKW 1 ;OPTIONAL DATA BYTE COUNT
N.CDA:'L' ; " " BUFFER
;
N.CBL='B'.-N.CTL ;LENGTH OF CNB (WITHOUT ANY DATA)
.PSECT
.MACRO CNBDF$,X,Y
.ENDM CNBDF$
.ENDM CNBDF$
.MACRO CNFDF
TGNMAD = 0.
SVNMAD = 4.
SVLNID = 8.
LDFLAD = 12.
LDPRAD = 16.
BTPSAD = 20.
DMFLAD = 24.
ENTLEN = 28.
.MACRO CNFDF
.ENDM
.ENDM
.MACRO CNFMAC
NODLEN = 6.
BPSLEN = 8.
FILLEN = 30.
PARLEN = 30.
.MACRO CNFBEG
CNFDB::
.ENDM
.MACRO CNFEND
CNFDBE::
.EVEN
.ENDM
.MACRO CNFENT NODE,SERVER,LOAFIL,LOAPAR,BOOPAS,DUMFIL
STRENT NODE,NODLEN
SERENT SERVER
STRENT LOAFIL,FILLEN
PARENT LOAPAR
STRENT BOOPAS,BPSLEN
STRENT DUMFIL,FILLEN
.ENDM
.MACRO STRENT STRNG,MAXLEN
.PSECT CNFSTR,RW,D,LCL,REL,OVR
$$ADDR = .
.ASCII /'STRNG'/
$$LEN = .-$$ADDR
.PSECT
.IF LT MAXLEN-$$LEN
.ERROR
.ENDC
.WORD $$ADDR
.WORD $$LEN
.ENDM
.MACRO SERENT NAME,DEV,CON,LIN,STA
STRENT NAME,NODLEN
.BYTE DEV,CON,LIN,STA
.ENDM
.MACRO PARENT NAME,NUMBER,HOST
.PSECT CNFSTR,RW,D,LCL,REL,OVR
$$ADDR = .
NODPAR NAME,1
NUMPAR NUMBER,2
NODPAR HOST,3
.BYTE 0
$$LEN = .-$$ADDR
.PSECT
.IF LT PARLEN-$$LEN
.ERROR
.ENDC
.WORD $$ADDR
.WORD $$LEN
.ENDM
.MACRO NODPAR NODNAM,CODE
.IF NB NODNAM
.BYTE CODE
.NCHR $$LEN,<NODNAM>
.IF LT 6-$$LEN
.ERROR
.ENDC
.BYTE $$LEN
.ASCII /'NODNAM'/
.ENDC
.ENDM
.MACRO NUMPAR NUMBER,CODE
.IF NB NUMBER
.BYTE CODE,2
.IF LE NUMBER-377
.BYTE NUMBER
.BYTE 0
.IFF
.BYTE NUMBER&377
.BYTE NUMBER/400
.ENDC
.ENDC
.ENDM
.ENDM
.MACRO CNT$ LB
LB'C = .-1$
.ENDM
.MACRO CNT$DF A,B,C,D,E,F,G,H,I,J,K,L,M
.ENDM CNT$DF
.MACRO CONB$$ NODNAM,OBJ,FMT,DSCRIP,RQID,PASS,ACNT
$$$LOC=.
.IF NB <NODNAM>
.NCHR $$$,<NODNAM>
.IF GE 6-$$$
.ASCII ''NODNAM''
.REPT 6-$$$
.BYTE '
.ENDR
.IFF
.ERROR NODE ;NODE NAME TOO LONG
.ENDC
.IFF
.BLKB 6
.ENDC
.IF NB <FMT>
$$$FMT=FMT
.IF LE $$$FMT-2
.BYTE FMT
.IFF
.ERROR FMT ;ILLEGAL FORMAT NUMBER
.ENDC
.IFF
$$$FMT=0
.BLKB 1
.ENDC
.IF NB <OBJ>
.BYTE OBJ
.IFF
.BLKB 1
.ENDC
.IF NB <DSCRIP>
.IF EQ $$$FMT
.ERROR DSCRIP ;FORMAT 0 DESCRIPTOR NOT ALLOWED
.ENDC
.IF EQ 1-$$$FMT
.NCHR $$$,<DSCRIP>
.IF GE 16.-$$$
.WORD $$$
.ASCII ''DSCRIP''
.BLKB 16.-$$$
.IFF
.ERROR DSCRIP ;FORMAT 1 DESCRIPTOR TOO LONG
.ENDC
.ENDC
.IF EQ $$$FMT-2
$$$=0
.IRP A,<DSCRIP>
$$$=$$$+1
.ENDM
.IF GE 3-$$$
$$$=0
.IRP B,<DSCRIP>
$$$=$$$+1
.IF GE 2-$$$
.IF NB <B>
.WORD B
.IFF
.BLKW 1
.ENDC
.ENDC
.IF EQ 3-$$$
.NCHR $$$,<B>
.IF GE 12.-$$$
.WORD $$$
.ASCII ''B''
.BLKB 12.-$$$
.IFF
.ERROR B ;FORMAT 2 DESCRIPTOR NAME TOO LONG
.ENDC
.ENDC
.ENDM
.IFF
.ERROR $$$ ;ILLEGAL FORMAT 2 DESCRIPTOR
.ENDC
.ENDC
.IFF
.BLKB 18.
.ENDC
.IF NB <RQID>
.NCHR $$$,<RQID>
.IF GE 16.-$$$
.WORD $$$
.ASCII ''RQID''
.BLKB 16.-$$$
.IFF
.ERROR RQID ;REQUESTOR ID TOO LONG
.ENDC
.IFF
.BLKB 18.
.ENDC
.IF NB <PASS>
$$$=0
.IRP A,<PASS>
$$$=$$$+1
.ENDM
.IF GE 8.-$$$
.WORD $$$
.BYTE PASS
.BLKB 8.-$$$
.IFF
.ERROR PASS ;PASSWORD TOO LONG
.ENDC
.IFF
.BLKB 10.
.ENDC
.IF NB <ACNT>
.NCHR $$$,<ACNT>
.IF GE 16.-$$$
.WORD $$$
.ASCII ''ACNT''
.BLKB 16.-$$$
.IFF
.ERROR ACNT ;ACCOUNTING INFORMATION TOO LONG
.ENDC
.IFF
.BLKB 18.
.ENDC
.ENDM CONB$$
.MACRO CONDF
C$RLCI = 0.
C$RLBF = 1.
C$RLCB = 2.
C$CLCO = 3.
C$CLFL = 4.
C$CLLN = 5.
C$NOPN = 25.
C$NORD = 26.
C$ALBF = 26.
C$ALCB = 27.
C$OPCO = 28.
C$RDCM = 29.
C$WRCM = 30.
C$STPR = 31.
C$STPS = C$STPR
C$RDIN = 32.
C$RDIS = C$RDIN
C$OPIN = 33.
C$OPOT = 34.
C$RDBK = 35.
C$WRBK = 36.
C$OPLN = 37.
C$TRBK = 38.
C$RCBK = 39.
C$RCEV = 40.
C$OPLK = 41.
C$CLLK = 42.
C$TRMS = 43.
C$RCMS = 44.
C$STBK = 45.
C$OPIR = 46.
C$OPOR = 47.
C$RDRC = 48.
C$WRRC = 49.
C$RCIN = 50.
C$TRIN = 51.
C$ZRCN = 52.
C$WRCL = 53.
C$OPCL = 54.
C$CLCL = 55.
C$ORD = 101.
C$TRMA = 101.
C$RCMA = 102.
C$PROC = 128.
CS$SUC = 1.
CS$ACK = 2.
CS$NCH = 3.
CS$LKE = 1.
CS$LNA = 2.
CS$LOG = 3.
CE$FUN = -1.
CE$ADR = -2.
CE$LEN = -3.
CE$FAI = -4.
CE$GEN = CE$FAI
CE$NWE = -5.
CE$REJ = -6.
CE$DIS = -7.
CE$CON = -8.
CE$EOF = -9.
CE$LID = -10.
CE$NOD = -11.
CE$OVR = -12.
CE$PAR = -13.
CE$TMO = -14.
CE$OPN = -15.
CE$IO = -16.
CE$IND = -17.
CE$FIL = -18.
CE$NSD = -19.
CE$NST = -20.
CE$ACP = -21.
CE$LST = -22.
CE$PRO = -23.
CE$OBJ = -24.
C.PTR = 0.
C.SERV = 2.
C.CTXT = 4.
C.FUNC = 6.
C.PROC = 7.
C.RET = 8.
C.LEN = 10.
C.ADDR = 12.
C.LINE = C.ADDR
C.BKNM = C.ADDR
C.TYPE = 14.
C.PROM = C.TYPE
C.TASK = C.TYPE
C.PRID = 15.
C.LUN = 16.
C.LKNM = C.LUN
C.WAIT = C.LUN
C.MODE = 17.
C.SAVE = 18.
C$LEN = 22.
RI$LCC = 1.
RI$LCS = 2.
RI$RML = 3.
RI$RMC = 4.
RI$RMS = 5.
RI$LNL = 6.
RI$LNC = 7.
RI$LNS = 8.
RI$ZLC = 9.
RI$ZRM = 10.
RI$ZLN = 11.
SP$LST = 1.
SP$LHO = 2.
SP$DHO = 3.
SP$RRP = 4.
SP$RTP = 5.
SP$NST = 6.
SP$DRP = 7.
SP$DTP = 8.
SP$LLP = 9.
SP$LOF = 10.
SP$NDO = 11.
SP$NDM = 12.
SP$LNO = 13.
SP$LNM = 14.
.MACRO CONDF
.ENDM
.ENDM
.MACRO CONMDF
.MCALL CONFIG
.PSECT CONDAT,RW,D,GBL,REL,OVR
CONFIG
CBLEN = 22.
CBLIST: .REPT F$CB-1
.WORD .+CBLEN
.BLKB CBLEN-2
.ENDM
.WORD 0
.BLKB CBLEN-2
FSTCB = CBLIST
LSTCB = F$CB-1
LSTCB = LSTCB*CBLEN+FSTCB
CBHEAD: .WORD CBLIST
.PSECT
.ENDM
.MACRO CONW$ LUN,EFN,IOST,AST,PRMLST
.MCALL $CON$
$CON$ 3,15400,LUN,EFN,IOST,AST,72.,PRMLST
.ENDM CONW$
.MACRO CONW$E LABEL,LUN,EFN,IOST,AST,PRMLST
.MCALL $CON$E
$CON$E LABEL,3,#15400,LUN,EFN,IOST,AST,PRMLST
.ENDM CONW$E
.MACRO CONW$S LUN,EFN,IOST,AST,PRMLST
.MCALL $CON$S
$CON$S 3,#15400,LUN,EFN,IOST,AST,#72.,PRMLST
.ENDM CONW$S
.MACRO CON$ LUN,EFN,IOST,AST,PRMLST
.MCALL $CON$
$CON$ 1,15400,LUN,EFN,IOST,AST,72.,PRMLST
.ENDM CON$
.MACRO CON$E LABEL,LUN,EFN,IOST,AST,PRMLST
.MCALL $CON$E
$CON$E LABEL,1,#15400,LUN,EFN,IOST,AST,PRMLST
.ENDM CON$E
.MACRO CON$S LUN,EFN,IOST,AST,PRMLST
.MCALL $CON$S
$CON$S 1,#15400,LUN,EFN,IOST,AST,#72.,PRMLST
.ENDM CON$S
.MACRO CPH$ CODE
.IF B,CODE
.BYTE 0 ;DEFAULT CPH CODE TO ZERO
.IFF
.BYTE CODE
.ENDC
.ENDM
.MACRO CRBDF$,L,B
.ASECT
.=0
N.RND:'L' .BLKB 6 ;DESTINATION NODE NAME
N.RFM:'L' .BLKB 1 ; " DESCRIPTOR FORMAT
N.ROT:'L' .BLKB 1 ; " OBJECT TYPE
;FORMAT 0 -
.BLKB 18. ; [UNUSED]
.=.-18. ;FORMAT 1 -
N.RDEC:'L' .BLKW 1 ; DESTINATION PROCESS BYTE COUNT
N.RDE:'L' .BLKB 16. ; " "
.=.-18. ;FORMAT 2 -
N.RGP:'L' .BLKW 1 ; DESTINATION GROUP
N.RUS:'L' .BLKW 1 ; " USER
N.RNMC:'L' .BLKW 1 ; " NAME BYTE COUNT
N.RNM:'L' .BLKB 12. ; " "
;
N.RIDC:'L' .BLKW 1 ;REQUESTING PROCESS ID BYTE COUNT
N.RID:'L' .BLKB 16. ; " " "
N.RPSC:'L' .BLKW 1 ;REQUESTING PASSWORD BYTE COUNT
N.RPS:'L' .BLKB 8. ; " "
N.RACC:'L' .BLKW 1 ;ACCOUNTING INFORMATION BYTE COUNT
N.RAC:'L' .BLKB 16. ; " "
;
N.RQL='B'.-N.RND ;LENGTH OF RDB
.PSECT
.MACRO CRBDF$,X,Y
.ENDM CRBDF$
.ENDM CRBDF$
.MACRO CRDLT$ L,B
.MCALL TMPDF$
TMPDF$
;
; NURD CR11 DEVICE DRIVER LINE TABLE TEMPLATE
;
.ASECT
.=0
C.TIMC:'L .BLKB 1 ;TWO BYTE TIMER ENTRY, CURRENT VALUE
C.TIMI:'L .BLKB 1 ; AND INITIAL TIMER VALUE
C.CALL:'L .INT ;INTERRUPT DISPATCH CALL
C.PRI:'L .PRI ;SCHEDULING PRIORITY
;DDM LEVEL DATA BASE
;ORDER FOR THIS SECTION IS CRITICAL
C.CSR:'L .CSR ;ONE WORD CSR POINTER
C.RST:'L .BLKW 1 ;CR11 STATUS READ AT INTERRUPT
C.COLC:'L .BLKB 1 ;PHYSICAL COLUMN COUNT
C.HUNG:'L .BLKB 1 ;DEVICE HUNG TIMER
C.PUBP:'L .BLKW 2 ;BUFFER PTR DOUBLEWORD
C.SGHD:'L .BLKW 1 ;CURRENT SEGMENT HEADER ADDRESS
C.LDAT:'L .BLKW 1 ;LAST DATA ITEM READ
C.PUBS:'L .BLKW 1 ;BUFFER INPUT COUNTER
C.NRDA:'L .BLKW 1 ;BEG OF NURD MESSAGE(ADDRESS)
C.DDMQ:'L .LSTHD ;CCB'S QUEUED FOR INPUT
C.ASTS:'L .BLKW 1 ;ACTION STATUS BIT MAP
CA.CLO ='B 1 ;CLOSED
CA.PAU ='B 2 ;PAUSED
CA.ADN ='B 4 ;ABORT WHEN DONE WITH DDM QUEUE
CA.ABO ='B 10 ;ABORTING
CA.ABE ='B 20 ;CLEAR ABORT ON EOF (ELSE ON CLEAR)
CA.EOF ='B 40 ;CURRENT MESSAGE HAS EOF
CA.HOP ='B 100 ;HOPPER CHECK - EMPTY INPUT OR FULL OUTPUT
CA.MOT ='B 200 ;MOTION CHECK - PICK FAIL,STACK FAIL,MOTION ERROR
CA.TER ='B 400 ;TIMING ERROR - DATA OVERRUN CONDITION
CA.ERR='B CA.HOP!CA.MOT!CA.TER ;SUMMARY - HARD ERROR
CA.OFL ='B 1000 ;READER OFFLINE
CA.IVP ='B 2000 ;INVALID PUNCH - MULTIPUNCH
CA.TMO ='B 4000 ;DEVICE TIME OUT
CA.XOF ='B 100000 ;READER XOF'D
C.CDCT:'L .BLKW 1 ;PHYSICAL CARD COUNT
;MISCELLANEOUS ITEMS
.EVEN
C.SLN:'L .SLNW ;DEVICE SYSTEM LINE NUMBER
C.IOCN:'L .BLKW 1 ;OUTSTANDING IO COUNT
C.IOWT:'L .BLKW 1 ;CLOSE WAIT FLAG = CLOSE CCB
;CONTROL MESSAGE PROCESSING DATA BASE
.EVEN
C.CMSQ:'L .LSTHD ;CONTROL MESSAGE QUEUE
C.RECO:'L .BLKB 1 ;CONTROL MESSAGE RESOURCE ERROR FLAG
C.RATT:'L .BLKB 1 ;PENDING ATTENTION MESSAGE FLAG - REASON CODE
C.CAPP:'L .BLKB 1 ;PENDING CAPABILITIES MESSAGE FLAG
C.STRT:'L .BLKB 1 ;PENDING READ START
;DATA & FEATURES PROCESSING DATA BASE
.EVEN
C.DLCQ:'L .LSTHD ;CCB'S QUEUED INTO DLC
C.MFLG:'L .BLKB 1 ;CURRENT NURD MESSAGE FLAGS
C.CAPN:'L .BLKB 1 ;CURRENT INDEX INTO CAPABILITIES LIST
C.NFSP:'L .BLKB 1 ;NO. FEATURE SPECS IN CURRENT MSG
.EVEN
C.DMAD:'L .BLKW 2 ;DATA MSG ADDRESS DOUBLEWORD (PTR)
C.DMBS:'L .BLKW 1 ;DATA MSG BUFFER SIZE
C.DMSQ:'L .BLKB 2 ;LAST GOOD, CURRENT DATA SEQ NUMBERS
C.PBRC:'L .BLKB 1 ;TEMP BYTE
.EVEN
C.MSGQ:'L .LSTHD ;OUTGOING MSG QUEUE
C.MSGA:'L .BLKW 2 ;CURRENT MSG BUFFER ADDRESS DOUBLEWORD
C.MSGS:'L .BLKW 1 ;CURRENT MSG BUFFER SIZE
;DATA/FEATURES PROCESS HYBER CONTEXT
C.DWAK:'L .BLKB 1 ;WAKE CONDITION
DWAKS ='B 1 ;WAKE WHEN NEW MESSAGE SEGMENT RECEIVED
DWAKP ='B 2 ;WAKE WHEN PHYSICAL BUFFER RETURNED TO QUEUE
DWAKT ='B 3 ;WAKE ON CLOCK TOCK
DWAKR ='B 4 ;WAKE WHEN RESUME CONTROL FCN DONE
C.DTXL:'L .BLKB 1 ;NO. WORDS ON STACK AT SLEEP TIME
.EVEN
C.DFSP:'L .BLKW 1 ;STACK ORIGIN
DTXTSZ ='B 16. ;DATA/FEATURES PROCESS CONTEXT ALLOCATED
C.DTXT:'L .BLKW DTXTSZ ;CONTEXT BLOCK FOR DA/FEATURES PROCESS
;FEATURE CRUFT
C.CFET:'L ;LP11 COMMON FEATURE LIST
.BLKB 1 ;NUMBER OF COMMON FEATURES
.BLKB 1 ;FEATURE FE.DAT SUPPORTED
.BLKB 1 ;FEATURE FE.SER NOT SUPPORTED
.BLKB 1 ;FEATURE FE.LCR NOT SUPPORTED
.BLKB 1 ;FEATURE FE.FWD NOT SUPPORTED
.BLKB 1 ;FEATURE FE.EOF SUPPORTED
.BLKB 1 ;FEATURE FE.DVT NOT SUPPORTED
.BLKB 1 ;FEATURE FE.TRN NOT SUPPORTED
.BLKB 1 ;FEATURE FE.FNM NOT SUPPORTED
.BLKB 1 ;FEATURE FE.DWD SUPPORTED
CCFETL ='B .-C.CFET-1
C.DFET:'L .BLKB 1 ;NUMBER OF DEVICE SPECIFIC FEATURES
.BLKB 1 ;FEATURE 129 NOT DEFINED
.BLKB 1 ;FEATURE CD.CWD SUPPORTED
CDFETL ='B .-C.DFET-1
;FEATURE BLOCKS
F.FSB ='B 0 ;(BM)FEATURES STATUS BYTE
FB.CL0 ='B 0 ;CLASS 0 FEATURE => <BIT> FORM
FB.CL1 ='B 1 ;CLASS 1 FEATURE => <CNT><...> FORM
FB.WRD ='B 2 ;FEATURE IS A WORD AND
; F.FCV IS A DLT OFFSET TO IT
FB.STR ='B 4 ;FEATURE IS A STRING
;F.FCV IS THE LENGTH
;CURRENT VALUE BEGINS AT F.FCV+1
;STANDARD VALUE(IF ANY) BEGINS AT F.FCV+1+(F.FCV)
FB.STE ='B 10 ;STANDARD VALUE EXISTS
FB.SST ='B 20 ;STANDARD IS SET
FB.CP ='B 40 ;CHANGE PENDING
FB.CA ='B 100 ;CHANGE ALLOWED
F.FCV ='B 1 ;FEATURE CURRENT VALUE BYTE
F.FSV ='B 2 ;FEATURE STANDARD VALUE BYTE
CR.DAT:'L ;DATA MODE
.BLKB 1
CRDATS ='B FB.CL1!FB.CA!FB.SST!FB.STE ;INITIAL STATUS OF LE.DOF LE.DAT
.BLKB 1 ;ASCII
.BLKB 1 ;ASCII IS STD
;CR.SER:'L ;SERIAL NUMBER
;CR.LCR:'L ;LOWER CASE RAISE
;CR.FWD:'L ;FORM WIDTH
CR.EOF:'L ;EOF RECOGNITION
.BLKB 1
CREOFS ='B FB.CL1!FB.CA ;INITIAL STATUS OF CR.EOF
.BLKB 1
;CR.DVT:'L ;DEVICE TYPE
;CR.TRN:'L ;RECORD TRUNCATION
;CR.FNM:'L ;FORM NAME
CR.DWD:'L ;DEVICE WIDTH
.BLKB 1
.BLKB 1 ;STD WIDTH
; DEVICE SPECIFIC FEATURES
CR.CWD:'L ;CARD WIDTH
.BLKB 1
CRCWDS ='B FB.CL1!FB.CA!FB.STE!FB.SST ;INITIAL STATUS OF CR.CWD
.BLKB 1
.BLKB 1
.PSECT
.ENDM CRDLT$
.MACRO CUCDF$ X,Y
.ASECT
.= U.CW2+2
U.ACUR:'X .BLKW 1
U.NSYN:'X .BLKB 1
U.NSYC:'X .BLKB 1
.= U.VCB+2
U.PHDR:'X .BLKW 1
U.RCHK:'X .BLKW 1
U.QSYN:'X
U.RCAC:'X .BLKW 1
U.RBUF:'X .BLKW 2
U.RCNT:'X .BLKW 1
U.SVC:'X .BLKW 1
U.TXCT:'X
U.INTP:'X .BLKW 1
U.SYNC:'X .BLKB 1
U.MPN:'X .BLKB 1
U.RFRK:'X .BLKW 1
U.RFPC:'X .BLKW 1
U.RFR5:'X .BLKW 1
U.RFR4:'X .BLKW 1
U.RFCT='Y U.TXCT+1
.PSECT
U2.HDX='Y 100000
U2.LIN='Y 40000
U2.CTS='Y 20000
U2.SWC='Y 10000
U2.ONL='Y 4000
U2.HPT='Y 1000
U2.HRC='Y 400
U2.RCV='Y 200
U2.ACU='Y 100
U2.MPT='Y 40
U2.FTM='Y 20
U2.SFL='Y 10
U2.RFK='Y 4
U2.SYC='Y 3
U2.TXA='Y 2
U2.SNC='Y 1
US.SYN='Y 1
U3.LOK='Y 100000
U3.RPD='Y 400
U3.RAC='Y 200
U3.SND='Y 1
.MACRO CUCDF$ A,B
.ENDM
.ENDM
.MACRO CVCDF$ X,Y
.ASECT
.= V.IFWI
V.CPRT:'X .BLKW 1
V.CLUN:'X .BLKB 1
V.CMPN:'X .BLKB 1
V.CSTS:'X .BLKW 1
V.CST1:'X .BLKB 1
V.CNID:'X .BLKB 1
V.CUCB:'X .BLKW 1
V.CMPL:'X .BLKW 1
V.CNPN:'X .BLKW 1
V.CMBC:'X .BLKW 1
V.CRED:'X .BLKW 1
V.CNHD:'X .BLKW 1
V.CTBL:'X .BLKW 1
V.CRBL:'X .BLKW 1
V.NXHD:'X .BLKW 1
V.CDBC:'X .BLKW 1
V.CIAD:'X .BLKW 1
V.CICT:'X .BLKW 1
V.CSAD:'X .BLKW 1
V.CSCT:'X .BLKW 1
V.CMXI:'X .BLKW 1
V.CMXO:'X .BLKW 1
V.CTDH:'X .BLKW 1
V.CTDT:'X .BLKW 1
V.CSTQ:'X .BLKW 2
V.CLMT:'X .BLKB 1
V.CTMA:'X .BLKB 1
V.CLMR:'X .BLKB 1
V.CRMA:'X .BLKB 1
V.CMCT:'X .BLKW 2
V.CRPC:'X .BLKB 1
V.CRPL:'X .BLKB 1
V.CRTM:'X .BLKW 1
V.CREP:'X .BLKW 1
V.CBCC:'X .BLKW 1
V.CDCC:'X .BLKW 1
V.CURH:'X .BLKW 1
V.CDLE:'X .BLKW 1
V.COVR:'X .BLKW 1
V.CRST:'X .BLKW 1
V.CALF:'X .BLKW 1
V.CREA:'X .BLKB 1
.BLKB 1
.IF DF C$$ACU
V.CTPN:'X .BLKB 12.
.ENDC
V.CLEN:'X .BLKW 1
.PSECT
VS.SEL='Y 100000
VS.FIN='Y 40000
VS.REP='Y 20000
VS.RTR='Y 10000
VS.STK='Y 4000
VS.STR='Y 2000
VS.ACK='Y 1000
VS.NAK='Y 400
VS.MPT='Y 200
VS.DIS='Y 200
VS.CTL='Y 100
VS.DAT='Y 40
VS.SYN='Y 20
VS.POL='Y 10
VS.ONL='Y 4
VS.BOO='Y 2
VS.TRN='Y 1
.MACRO CVCDF$ A,B
.ENDM
.ENDM
.MACRO CVLMDF
.PSECT CVLDAT,RW,D,GBL,REL,OVR
CONTAB:
.REPT 40.
.WORD 0
.ENDR
ENDIX = .-CONTAB
.MCALL DVTMDF
.MACRO XXX NAM,DSP,NUM,ARG4,ARG5,ARG6,ARG7
.IIF LE,<40.*2-'NUM'>,.ERROR 'NUM';DEVICE INDEX TOO LARGE
.IF EQ $$$PAS
$$$'NUM'=0
.IFF
.IF EQ $$$'NUM'
$$$'NUM'=1
.=CONTAB+'NUM'
.RAD50 /'NAM'/
.ENDC
.ENDC
.ENDM XXX
.IF NDF $$$PAS
$$$PAS=0
.IFF
$$$PAS=1
.ENDC
DVTMDF XXX
.PSECT
.ENDM
.MACRO C1$ LB,TIME
LB: .BYTE 50.,1 ; OPCODE, COUNT
.BYTE TIME
.ENDM
.MACRO C2$ LB,STRNG
; LB - LABEL
; STRING - UP TO 4 CHAR ID
LB: .BYTE 51. ; OPCODE
.BYTE LB'C ; COUNT
1$: .ASCII STRNG
LB'C= .-1$
.ENDM
.MACRO C3$ LB
LB: .BYTE 52.,0 ; OPCODE, COUNT
.ENDM
.MACRO C4$ LB
LB: .BYTE 53.,0 ; OPCODE, COUNT
.ENDM
.MACRO DADF$ LST
.IIF NB,LST, .LIST
.MCALL TMPDF$
TMPDF$
.ASECT
.=0
.INT
.=-<.+2>
T.VCT: .INT ;SPACE FOR $INTSX SAVE'S ETC.
.PRI ;DEVICE PRIORITY
T.OFFS==.-T.VCT
T.TIMR: .BLKB 1 ;TIMER CELL
T.TIME: .BLKB 1 ;TIMOUT TIME IN SECONDS
T.DR: .CSR ;DEVICE REGISTER ADDRESS
T.FL: .BLKW 1 ;FLAGS WORD
T.RA: .BLKW 1 ;RECEIVE BUFFER AVAILABLE
T.RC: .BLKW 1 ;RECEIVE BUFFER WAITING FOR COMPLETION
T.XW: .LSTHD ;XMIT BUFFERS WAITING QUEUE
T.XC: .BLKW 1 ;XMIT BUFFER WAITING FOR COMPLETION
T.SP: .BLKW 1 ;STOP PENDING CCB
T.LN: .SLNW ;LINE NUMBER
T.ER: .BLKW 1 ;ASYNC ERROR PENDING
T.XMT: .BLKW 1 ;NUMBER OF BLOCKS TRANSMITTED
T.RCV: .BLKW 1 ;NUMBER OF BLOCKS RECEIVED
T.TLZ: .BLKW 1 ;TIME COUNTS WERE LAST ZEROED
.PSECT
.IIF NB,LST, .NLIST
.ENDM
.MACRO DCBDF$,L,B
.ASECT
.=0
D.LNK:'L' .BLKW 1
D.UCB:'L' .BLKW 1
D.NAM:'L' .BLKW 1
D.UNIT:'L' .BLKB 1
.BLKB 1
D.UCBL:'L' .BLKW 1
D.DSP:'L' .BLKW 1
D.MSK:'L' .BLKW 1
.BLKW 1
.BLKW 1
.BLKW 1
.BLKW 1
.BLKW 1
.BLKW 1
.BLKW 1
D.PCB:'L' .BLKW 1
.PSECT
D.VINI='B'0
D.VCAN='B'2
D.VOUT='B'4
D.VPWF='B'6
.MACRO DCBDF$,X,Y
.ENDM
.ENDM
.MACRO DCLW$S LUN,EFN,IOST,AST,UAST
.IF B LUN
.ERROR ;DCLW$S - A LOGICAL UNIT # MUST BE SPECIFIED
.MEXIT
.ENDC
.IF B UAST
.PRINT ;DCLW$S WARNING - TRAP ADDRESS NOT SPECIFIED
.IFTF
MOV R0,-(SP) ;GET A REGISTER TO WORK WITH
.IFF
MOV UAST,-(SP) ;GET THE UAST
.ENDC
.IF NB IOST
MOV IOST,-(SP) ;AND THE IOST
.ENDC
MOV LUN,-(SP) ;AND FINALLY THE LUN
MOV #$ASTBL,R0 ;GET THE AST TABLE ADDRESS
TST (R0) ;WHAT'S THIS LOCATION'S STATUS?
.IF B IOST
.IF B UAST
BMI .+14 ;IF MI, THERE'S NO MORE ROOM
;IN THE TABLE
.IFF
BMI .+22 ;.
.ENDC
.IFF
.IF B UAST
BMI .+24 ;.
.IFF
BMI .+32 ;.
.ENDC
.ENDC
.IF NB UAST
BEQ .+12 ;IF EQ, THIS IS A FREE LOCATION
.IFTF
CMP (SP),(R0)+ ;IS THIS THE WANTED LUN?
.IFF
BEQ .+6 ;IF EQ, YES
.IFT
BEQ .+10 ;.
.IFTF
TST (R0)+ ;GET TO THE NEXT TABLE ENTRY
.IFF
BR .-12 ;TRY AGAIN
.IFT
BR .-14 ;.
.IFF
CLR -(R0) ;DELETE THE TABLE ENTRY
.IFT
MOV (SP),(R0)+ ;STORE THE LUN #
.IF B IOST
MOV 2(SP),(R0) ;AND IT'S AST ADDRESS
.IFF
MOV 4(SP),(R0) ;.
.ENDC
.ENDC
.IF NB IOST
MOV #1,@2(SP) ;INDICATE SUCCESS
BR .+10 ;BRANCH AROUND ERROR CODE
MOV #-1,@2(SP) ;SET THE ERROR CODE
CMP (SP)+,(SP)+ ;POP OFF THE LUN AND IOST
;STORAGE LOCATIONS
.IFF
TST (SP)+ ;POP THE LUN STORAGE LOCATION
.ENDC
.IF NB UAST
TST (SP)+ ;POP OFF THE UAST STORAGE
;LOCATION
.ENDC
MOV (SP)+,R0 ;RESTORE R0
.ENDM
.MACRO DDCDF$ L
;
.ASECT
;
; DDCMP LINE TABLE OFFSETS
.=0
L.CTMO: .BLKB 1 ;CURRENT TIMEOUT VALUE
L.ITMO: .BLKB 1 ;LINK TIMER INITIAL VALUE
L.STS: .BLKW 1 ;LINE STATUS WORD
L.PTXQ: .BLKW 2 ;PRE TRANSMIT MESSAGE QUEUE
L.TDNQ: .BLKW 2 ;TRANSMIT DONE QUEUE
L.FCNL: .BLKW 2 ;CONTROL FUNCTION QUEUE
L.STAL: .BLKW 2 ;STATIONS LIST
L.CRST: .BLKW 1 ;POINTER TO CURRENT STATION
L.HDR: .BLKW 1 ;LIST OF CCBS FOR HEADERS
.IF DF,M$$MGE
L.CRC: .BLKW 2 ;POINTER TO CRC LIBRARY ROUTINE
.IFF
L.CRC: .BLKW 1 ;POINTER TO CRC LIBRARY ROUTINE
.ENDC
L.CHAR: .BLKW 2 ;DEVICE CHARTERISTICS
L.ENA: .BLKB 1 ;LINE ENABLE COUNTER (MPT ONLY)
L.STIC: .BLKB 1 ;MPT ONLY
L.STCC: .BLKB 1 ;MPT ONLY
L.NAST: .BLKB 1 ;NUMBER OF ACTIVE STATIONS ON THIS LINE
L.HCCB: .BLKB 1 ;NUMBER OF CCB'S TO ASSIGN AS HEADERS
L.MOTD: .BLKB 1 ;NUMBER OF CCB'S AVAILABLE FOR HEADERS
L.LNUM: .BLKB 1 ;SYSTEM LINE NO. THIS LINE
.EVEN
L.STBL:'L' ;START OF STATION TABLES FOR LINE
; DEFINITIONS OF BITS IN LINE STATUS WORD
LS.LEN=1 ;SET IF LINE IS ENABLED
LS.MPM=2 ;SET IF MULTIPOINT MASTER
LS.MPS=4 ;SET IF MULTIPOINT SLAVE
LS.HDX=10 ;SET IF LINK IS HALF DUPLEX
LS.OLD=20 ;SET IF LINK COMPATIBLE WITH RELEASE 1
LS.PLW=40 ;SET IF POLLING SUSPENDED
LS.TRT=100 ;SET IF TURNAROUND TIMER SET
LS.HRC=200 ;SET IF DEVICE HAS HARDWARE CRC
LS.RSN=400 ;SET IF LINE IN RESYNC STATE
LS.RSA=1000 ;SET IF CCB OUTSTANDING FOR A RESYNC
LS.CTL=2000 ;SET IF CONTROL MESSAGE OUTSTANDING
LS.MPT=LS.MPM!LS.MPS ;MASK FOR MULTIPOINT STATION
; DEFINITIONS FOR STATIONS TABLE OFFSETS
.=0
S.LNK: .BLKW 1 ;STATION TABLE THREAD WORD
S.STS: .BLKW 1 ;STATION STATUS WORD
S.PTXQ: .BLKW 2 ;SLAVE-ONLY PRETRANSMIT QUEUE
S.MOPQ: ;MOP MESSAGE QUEUE
S.TAKQ: .BLKW 2 ;WAITING FOR ACKNOWLEDGE QUEUE
S.FCNL: .BLKW 1 ;FUNCTION PENDING LIST
S.SLAN: .BLKB 1 ;STATION LOGICAL ADDRESS NUMBER
S.SPAN: .BLKB 1 ;STATION PHYSICAL ADDRESS NUMBER
S.STE: .BLKB 1 ;STATUS EXTENSION BYTE
S.RXEN: .BLKB 1 ;RECEIVE ENABLE COUNTER
S.MOTD: .BLKB 1 ;NO. OF MESSAGES OUTSTANDING TO DRIVER
S.LTM: .BLKB 1 ;NO. OF LAST TRANSMITTED MESSAGE
S.LTMR: .BLKB 1 ;NO. OF LAST TX MESSAGE RETURNED
S.LTMA: .BLKB 1 ;NO. OF LAST TX MESSAGE ACKNOWLEDGED
S.HTNA: .BLKB 1 ;HIGHEST TRANSMIT NUMBER ASSIGNED
S.TNRP: .BLKB 1 ;TX NO. FOR REP RESPONSE
S.LRM: .BLKB 1 ;NO. OF LAST RECEIVED MESSAGE
S.RMA: .BLKB 1 ;NO. OF LAST RECEIVED MESSAGE ACKED
S.SIPC: .BLKB 1 ;STATION'S INITIAL PRIORITY VALUE
S.SCPC: .BLKB 1 ;STATION'S CURRENT PRIORITY COUNTER
S.NKRE: .BLKB 1 ;NAK REASON TO BE SENT IN NAK MESSAGE
; COUNTERS FOR VARIOUS STATISTICS
S.RCVE: .BLKB 1 ;RECEIVE ERRORS
S.TMOE: .BLKB 1 ;RECEIVE TIMEOUTS AND SELECTION ERRORS
S.RSTE: .BLKB 1 ;RECEIVE SYSTEM RESOURCE ERRORS
S.XMTE: .BLKB 1 ;TRANSMITTER ERRORS (FROM NAKS)
S.DSTE: .BLKB 1 ;DESTINATION SYSTEM ERRORS (FROM NAKS)
; THRESHOLD COUNTERS
S.STRC: .BLKB 1 ;START AND RESTART COUNTER
S.REPS: .BLKB 1 ;NO. OF REP MESSAGES SENT TO STATION
S.RETH: .BLKB 1 ;RECEIVER ERROR THRESHOLD COUNTER
S.RPTH: .BLKB 1 ;REPS SENT THRESHOLD ERROR COUNTER
S.NAKT: .BLKB 1 ;NAKS RECEIVED THRESHOLD COUNTER
;WORD COUNTERS FOR VARIOUS STATISTICS
.EVEN
S.TIM: .BLKW 1 ;TIME WHEN STATISTICS ZEROED
S.RCV: .BLKW 1 ;NUMBER OF MESSAGES RECEIVED
S.XMT: .BLKW 1 ;NUMBER OF MESSAGES TRANSMITTED
S.STLG:'L' ;LENGTH OF STATION TABLE
; VALUES OF BITS IN STATION STATUS WORD
SS.STR=1 ;STATION IN START MODE
SS.STK=2 ;STATION IN STACK MODE
SS.ONL=4 ;STATION IS ONLINE
SS.MOP=10 ;STATION IN MOP MODE
SS.HLT=20 ;STATION IS BEING HALTED
SS.RTX=40 ;RETRANSMISSION IS REQUESTED
SS.SHU=100 ;SET IF STATION BEING SHUT DOWN
SS.SEL=200 ;SET IF THIS STATION SELECTED
SS.REP=400 ;SET IF STATION IN REP MODE
SS.FLO=1000 ;SET IF STATION IS FLOW CONTROLLED
SS.MDC=^C<SS.FLO> ;OR OF STATUS STATE BITS
; VALUES OF BITS IN STATION STATUS EXTENSION BYTE
SE.SSK=1 ;SET IF SEND STACK MESSAGE
SE.SST=2 ;SET IF SEND START MESSAGE
SE.SNK=4 ;SET IF SEND NAK MESSAGE
SE.SRP=10 ;SET IF SEND REP MESSAGE
SE.SAK=20 ;SET IF SEND ACK MESSAGE
SE.SSL=40 ;SET IF SEND SELECT ON THIS MESSAGE
SE.CMS=^C<SE.SAK!SE.SSL> ;MASK FOR DDCMP CONTROL MESSAGES
; OFFSETS FOR RECEIVE MESSAGE PROCESSING
.=0
R.HDR1: .BLKB 1 ;FIRST BYTE OF DDCMP HEADER
R.HDR2: .BLKB 1 ;SECOND BYTE OF DDCMP HEADER
R.HDR3: .BLKB 1 ;THIRD BYTE OF DDCMP HDR
R.HDR4: .BLKB 1 ;FOURTH BYTE OF HEADER
R.HDR5: .BLKB 1 ;FIFTH BYTE OF HEADER
R.HDR6: .BLKB 1 ;SIXTH BYTE OF HEADER
R.HDR7: .BLKB 1 ;SEVENTH BYTE OF HEADER
R.HDR8: .BLKB 1 ;EIGTH BYTE OF HEADER
; ASCII COMMUNICATION CHARACTERS
CM.ENQ=005 ;ENQUIRE (CONTROL MESSAGE)
CM.SOH=201 ;START OF HEADER (DATA MESSAGE)
CM.DLE=220 ;DATA LINK ESCAPE (BOOT MESSAGE)
CM.SYN=226 ;SYN CHARACTER
; CONTROL MESSAGE TYPES
MT.ACK=001 ;ACKNOWLEDGE
MT.NAK=002 ;NEGATIVE ACKNOWLEDGE
MT.REP=003 ;REPLY
MT.RES=004 ;RESET
MT.RSK=005 ;RESET ACKNOWLEDGE
MT.STR=006 ;START
MT.STK=007 ;START ACKNOWLEDGE
; DDCMP DEFINED NAK REASON ERROR CODES
RN.HBC=1 ;HEADER BLOCK CHECK ERROR
RN.DBC=2 ;DATA BLOCK CHECK ERROR
RN.REP=3 ;REP RESPONSE
RN.BUF=10 ;RECEIVER BUFFER ALLOCATION FAILRE
RN.ROV=11 ;RECEIVER OVERRUN FLIALURE
RN.MTL=20 ;RECEIVED MESSAGE TOO LONG
RN.HFE=21 ;RECEIVED HEADER FORMAT ERROR
; SPECIAL HEADER BITS
DD.QSN=100 ;DDCMP FINAL OR QSYNC BIT
DD.SEL=200 ;DDCMP SELECT BIT
.PSECT
.ENDM
.MACRO DDM$DF NAM,FLG,PRI
NAM'PR=PRI
NAM'FL=FLG
.ENDM DDM$DF
.MACRO DEF$DF
SLN=-1 ; INTERNAL COUNTER
STATBL=0 ; TOTAL NUMBER OF STATIONS
;
; DEFINE SYMBOLS NEEDED DURING PART 1
;
SLTDF$
PDVDF$
;
; PROCESSOR PRIORITIES
;
PR0=0
PR1=40
PR2=100
PR3=140
PR4=200
PR5=240
PR6=300
PR7=340
.ENDM DEF$DF
.MACRO DEVDF
.MCALL DVTMDF
.MACRO XXX NAM,DSP,NUM,ARG4,ARG5,ARG6,ARG7
'NAM'='NUM'
.ENDM XXX
DVTMDF XXX
.MACRO DEVDF
.ENDM
.ENDM
.MACRO DEVDF$,L,B
.MCALL DCBDF$
DCBDF$ <L>,<B>
.MCALL UCBDF$
UCBDF$ <L>,<B>
.MCALL SCBDF$
SCBDF$ <L>,<B>
.MCALL LCBDF$
LCBDF$ <L>,<B>
.MACRO DEVDF$,X,Y
.ENDM
.ENDM
.MACRO DHTDF$ PS
.ASECT
.= 0
DHDLT: ; DH11 DEVICE LINE TABLE OFFSETS
DRCV: .BLKW 7 ; RECIEVE INTERRUPT ENTRY
DRPRI: .BLKW 1 ; RCV PRIORITY
DRNCR: .BLKW 1 ; ADDR OF DH11 NCR
DTRN: .BLKW 7 ; TRANSMIT INTERRUPT ENTRY
DTPRI: .BLKW 1 ; TRN PRIORITY
DTBAR: .BLKW 1 ; ADDR OF DH11 BUFFER ACTIVE REG
DTCTR: .BLKW 1 ; CURRENT TRN ACTIVE BITS (C0=B0)
DMDM: .BLKW 7 ; NO MODEM INTERRUPT ENTRY
DMPRI: .BLKW 1 ; MODEM INTERUPT PRIORITY
DMCSR: .BLKW 1 ; DM11-BB CSR ADDRESS
DHSCR: .BLKW 1 ; ADDR OF DH11 SCR
DHHDR: .BLKW 2 ; HEADER LIBRARY POINTER
DHCRC: .BLKW 2 ; CRC LIBRARY POINTER
DHACT: .BLKB 0 ; ACTIVE LINE COUNT
DHFLG: .BLKW 1 ; DH FLAGS
DHTIM: .BLKW 2 ; SHORT TIMER CONTROL
;
; TABLE OF 16 ENTRIES, ONE ENTRY PER DH LINE (CHANNEL)
;
DHCTB:
.= 0
DCLTW: .BLKW 1 ; LONG TIMER WORD
DCTCR: .BLKW 1 ; CURRENT TRN CCB ENTRY
DCTQH: .BLKW 1 ; CURRENT TRN CCB QUEUE
DCRAD: .BLKW 1 ; RCV BUFFER MAPPING BIAS
DCRPT: .BLKW 1 ; RCV BUFFER BYTE POINTER
DCRCT: .BLKW 1 ; RCV BUFFER BYTE COUNTER
DCRQH: .BLKW 1 ; RCV BUFFER QUEUE
DCLPR: .BLKW 1 ; DH11 DEV LINE PARAM VALUE
DCDLP: .BLKW 1 ; STANDARD DEV LINE PARAM VALUE
DCDFL: .BLKW 1 ; DEFAULT DEV LINE PARAM VALUE
DCSWT: .BLKW 1 ; LINE SWITCHES
DCPST: .BLKW 1 ; PROTOCOL STATUS BITS
DCCHN: .BLKB 1 ; CHANNEL NUMBER
DCSLN: .BLKB 1 ; SYSTEM LINE NUMBER
.EVEN
DHCTS= . ;SIZE OF ENTRY
.PSECT
.ENDM DHTDF$
.MACRO DLC$DF NAM,FLG,PRI
NAM'PR=PRI
NAM'FL=FLG
.ENDM DLC$DF
.MACRO DLPDF$ L,X
.IIF B,L, .NLIST
LP....= 0
.IF NB,X
.IIF EQ,''X-'M, LP....= 1
.IIF EQ,''X-'B, LP....= -1
.ENDC
.IF GE,LP....
.LIST
;
; MASK DEFINITIONS FOR STANDARD DEVICE LINE PARAMETER WORD
;
LP.DUP= 000001 ;DUPLEX MODE (0=FULL, 1=HALF)
LP.ECO= 000002 ;HARDWARE AUTO-ECHO SWITCH (1=ENABLE)
LP.SAD= 000004 ;SECONDARY ADDRESS PRESENT FOR SET CHARACTERISTICS
LP.CLN= 000030 ;CHARACTER LENGTH (SEE BELOW)
LP.STP= 000040 ;STOP CODE (0=1 BIT, 1=1.5 OR 2 BITS)
LP.PAR= 000300 ;PARITY MODE (SEE BELOW)
LP.TRN= 007400 ;TRANSMIT SPEED (OR TRN+RCV SPEED FOR SINGLE
; SPEED DEVICES) (SEE BELOW)
LP.RCV= 170000 ;RECEIVE SPEED (SEE BELOW)
.NLIST
.ENDC
.IF LE,LP....
.LIST
;
; BIT DEFINITIONS FOR MULTI-BIT MASKS
;
LB.CL5= 000000 ;CHARACTER LENGTH = 5 BITS
LB.CL6= 000010 ;CHARACTER LENGTH = 6 BITS
LB.CL7= 000020 ;CHARACTER LENGTH = 7 BITS
LB.CL8= 000030 ;CHARACTER LENGTH = 8 BITS
LB.PRN= 000000 ;PARITY = NONE
LB.PRE= 000100 ;PARITY = EVEN
LB.PRO= 000300 ;PARITY = ODD
LB.T00= 000000 ;TRN SPEED = 50 BAUD
LB.T01= 000400 ;TRN SPEED = 75 BAUD
LB.T02= 001000 ;TRN SPEED = 110 BAUD
LB.T03= 001400 ;TRN SPEED = 134.5 BAUD
LB.T04= 002000 ;TRN SPEED = 150 BAUD
LB.T05= 002400 ;TRN SPEED = 300 BAUD
LB.T06= 003000 ;TRN SPEED = 600 BAUD
LB.T07= 003400 ;TRN SPEED = 1200 BAUD
LB.T08= 004000 ;TRN SPEED = 1800 BAUD
LB.T09= 004400 ;TRN SPEED = 2000 BAUD
LB.T10= 005000 ;TRN SPEED = 2400 BAUD
LB.T11= 005400 ;TRN SPEED = 3600 BAUD
LB.T12= 006000 ;TRN SPEED = 4800 BAUD
LB.T13= 006400 ;TRN SPEED = 7200 BAUD
LB.T14= 007000 ;TRN SPEED = 9600 BAUD
LB.T15= 007400 ;TRN SPEED = EXTERNAL INPUT
LB.R00= 000000 ;RCV SPEED = 50 BAUD
LB.R01= 010000 ;RCV SPEED = 75 BAUD
LB.R02= 020000 ;RCV SPEED = 110 BAUD
LB.R03= 030000 ;RCV SPEED = 134.5 BAUD
LB.R04= 040000 ;RCV SPEED = 150 BAUD
LB.R05= 050000 ;RCV SPEED = 300 BAUD
LB.R06= 060000 ;RCV SPEED = 600 BAUD
LB.R07= 070000 ;RCV SPEED = 1200 BAUD
LB.R08= 100000 ;RCV SPEED = 1800 BAUD
LB.R09= 110000 ;RCV SPEED = 2000 BAUD
LB.R10= 120000 ;RCV SPEED = 2400 BAUD
LB.R11= 130000 ;RCV SPEED = 3600 BAUD
LB.R12= 140000 ;RCV SPEED = 4800 BAUD
LB.R13= 150000 ;RCV SPEED = 7200 BAUD
LB.R14= 160000 ;RCV SPEED = 9600 BAUD
LB.R15= 170000 ;RCV SPEED = EXTERNAL INPUT
.NLIST
.ENDC
.IIF B,L, .LIST
.ENDM DLPDF$
.MACRO DLTDF$ PS
.NLIST
....PS= 0
.IF NB,PS
.IIF NE,PS, ....PS= 1
.ENDC
.LIST
.ASECT
.= 0
DLDLT: ;DL11 DEVICE LINE TABLE OFFSETS
DLLTM: .BLKW 1 ;LONG TIMEOUT CONTROL
DRCV: .INT ;RCV INTERRUPT RE-VECTORING
.PRI ;RCV PRIORITY
DRBUF: .BLKW 1 ;RCV RBUF REGISTER ADDRESS
.IF NE,....PS
DPSTS: .BLKW 1 ;PROTOCOL STATUS HOLDER
DRBAD: .IF DF,M$$MGE
.BLKW 1 ;RCV BUFFER MAPPING BIAS
.IFTF
DRPNT: .BLKW 1 ;RCV BUFFER BYTE POINTER
DRCNT: .BLKW 1 ;RCV BUFFER BYTE COUNTER
DRQHD: .BLKW 1 ;RCV CCB QUEUE HEAD
.ENDC
.ENDC
DTRN: .INT ;TRN INTERRUPT RE-VECTORING
.PRI ;TRN PRIORITY
DTBAD: .IF DF,M$$MGE
.BLKW 1 ;TRN BUFFER MAPPING BIAS
.ENDC
DTPNT: .BLKW 1 ;TRN BUFFER BYTE POINTER
DTBUF: .BLKW 1 ;TRN TBUF REGISTER ADDRESS
DTCNT: .BLKW 1 ;TRN BUFFER BYTE COUNTER
DTCCE: .BLKW 1 ;TRN CURRENT CCB ENTRY
DTQHD: .BLKW 1 ;TRN CCB QUEUE HEAD
DLTCR: .BLKW 1 ;TRN CONTROL REGISTER ADDRESS
TCRC: .LIBR ;STCRC POINTER
DLSLN: .BLKW 1 ;SYSTEM LINE NUMBER
DLSWT: .BLKW 1 ;SWITCHES
DLDLP: .BLKW 2 ;DEVICE LINE PARAMETERS
DLTLN==.
.PSECT
.ENDM DLTDF$
.MACRO DLXDF
;+
; NICE FUNCTIONS IN DLX
;
NX.NIC =36*400+50 ; NICE QIO FUNCTION CODE
;
; SUB-FUNCTIONS IN PARAM(3)
;
NX$RNN =0 ; READ NODE NAMES
NX$RNS =2 ; READ NODE STATUS
NX$RNC =4 ; READ NODE COUNTERS
NX$ZNC =6 ; ZERO NODE COUNTERS
NX$SNS =10 ; SET NODE STATUS
NX$RLN =12 ; READ LINE IDENTIFIERS
NX$RLS =14 ; READ LINE STATUS
NX$RLC =16 ; READ LINE COUNTERS
NX$ZLC =20 ; ZERO LINE COUNTERS
NX$SLS =22 ; SET LINE STATE
NX$SNH =24 ; SET HOST NODE
NX$SLH =26 ; SET HOST FOR LINE
NX$XMT =30 ; SET XMT PASSWORD FOR NODE
NX$RCV =32 ; SET RCV PASSWORD FOR NODE
NX$SNO =34 ; SET OPERATOR STATE FOR LOCAL NODE
NX$SNM =36 ; SET MAINTENANCE STATE FOR LOCAL NODE
NX$SLO =40 ; SET OPERATOR STATE FOR LINE
NX$SLM =42 ; SET MAINTENANCE STATE FOR LINE
; =44 ; (UNUSED)
NX$DEP =46 ; DEPOSIT MEMORY
NX$EXM =50 ; EXAMINE MEMORY
;
; NODE TYPE CODES
;
N$XLCL =1 ; LOCAL NODE
N$XADJ =2 ; ADJACENT NODE
N$XINT =3 ; INTERCEPT NODE
N$XRMT =4 ; REMOTE NODE
;
;-
.MACRO DLXDF
.ENDM DLXDF
.ENDM DLXDF
.MACRO DLXDF$
;
; LINE PARAMETER BLOCK OFFSET DEFINITIONS:
;
.ASECT
.=0
TNAM: .BLKW 1 ; RAD50 PROCESS NAME
TCTL: .BLKB 1 ; CONTROLLER NUMBER
TLIN: .BLKB 1 ; LINE NUMBER ON CONTROLLER
TSTA: .BLKB 1 ; MULTIPOINT STATION ADDRESS
.BLKB 1 ; RESERVED
TFLG: .BLKB 1 ; PROCESS FLAGS
TPDV: .BLKB 1 ; PROCESS INDEX
TSLN: .BLKW 1 ; SYSTEM LINE NUMBER AND LOGICAL STATION
TSLF: .BLKW 1 ; SYSTEM LINE TABLE FLAGS
TDDM: .BLKB 1 ; DDM PROCESS INDEX
TDLC: .BLKB 1 ; DLC PROCESS INDEX
TASN: .BLKW 1 ; CURRENT ASSIGNMENT (PDV & CHAN)
;
; NODE PARAMETER BLOCK OFFSET DEFINITIONS:
;
.=0
NNOD: .BLKW 1 ; NODE NAME DESCRIPTOR ADDRESS
NNUM: .BLKW 1 ; NODE NUMBER
NPWD: .BLKW 1 ; PASSWORD BLOCK ADDRESS
NSTA: .BLKW 1 ; STATISTICS PARAMETER BLOCK ADDRESS
;
; DEVICE SERVICES DISPATCH TABLE
;
.=0
S.SLG: .BLKW 1 ; SET LOGGING STATE
S.RLG: .BLKW 1 ; READ LOGGING STATE
S.RCN: .BLKW 1 ; READ LINE COUNTERS
S.ZCN: .BLKW 1 ; ZERO LINE COUNTERS
.PSECT
.MACRO PROCESS .NM,SLG,RCN,ZCN,RLG
.PSECT
$$$ =.
.IRP .AD,<SLG,RLG,RCN,ZCN>
.IF NB .AD
.WORD .AD
.IFF
.WORD $NXNOP
.ENDC
.ENDR
.PSECT $$DSP1,D,GBL
.WORD $$$
.PSECT $$NAM1,D,GBL
.RAD50 \.NM\
.PSECT
.ENDM PROCESS
.ENDM DLXDF$
.MACRO DMCDF$ L,B,LST
.IIF NB <LST>, .LIST
.MCALL TMPDF$
TMPDF$
.ASECT
.=0
.INT
..OFF.=-<<.*2>+20>
.=..OFF.
D.IVCT:'L' ; INPUT INTERRUPT TRANSFER VECTOR
.INT ; INPUT INTERRUPT TRANSFER VECTOR
.PRI ; ^C< DEVICE PRIORITY >
D.SEL0:'L' .CSR ; ADDRESS OF DMC SEL0 REGISTER
.BLKW 1 ; OFFSET TO INTERRUPT SERVICE DISPATCH TABLE
D.OFFI='B' -.
.BLKW 1 ; OFFSET TO START OF LINE TABLE
D.OVCT:'L' ; OUTPUT INTERRUPT TRANSFER VECTOR
.INT ; OUTPUT INTERRUPT TRANSFER VECTOR
.PRI ; ^C< DEVICE PRIORITY >
D.SEL2:'L' .CSR ; ADDRESS OF DMC SEL2 REGISTER
.BLKW 1 ; OFFSET TO INTERRUPT SERVICE DISPATCH TABLE
D.OFFO='B' -.
.BLKW 1 ; OFFSET TO START OF LINE TABLE
D.OFFS='B' .-D.IVCT
D.TIMR:'L' .BLKB 1 ; LINE TABLE TIMER CELL
D.TIME:'L' .BLKB 1 ; TIMER RESET VALUE CELL
D.RAQC:'L' .BLKB 1 ; MINUS THE CURRENT NUMBER OF RECV BUFFERS ASSIG
D.RBFC:'L' .BLKB 1 ; MINUS THE MAXIMUM NUMBER OF RECV BUFFERS ASSIG
D.RAWQ:'L' .LSTHD ; RECV BUFFERS AWAITING ASSIGNMENT QUEUE
D.RASQ:'L' .LSTHD ; RECV BUFFERS ASSIGNED TO DMC QUEUE
D.XAQC:'L' .BLKB 1 ; MINUS THE CURRENT NUMBER OF XMIT BUFFERS ASSIG
D.XBFC:'L' .BLKB 1 ; MINUS THE MAXIMUM NUMBER OF XMIT BUFFERS ASSIG
D.XAWQ:'L' .LSTHD ; XMIT BUFFERS AWAITING ASSIGNMENT QUEUE
D.XASQ:'L' .LSTHD ; XMIT BUFFERS ASSIGNED TO DMC QUEUE
D.LINE:'L' .BLKW 1 ; SYSTEM LINE NUMBER
D.LBIA:'L' .IF DF M$$MGE
.BLKW 1 ;DMC LINE TABLE BIAS ADDRESS
.ENDC
D.LVA:'L' .BLKW 1 ; DMC LINE TABLE VIRTUAL ADDRESS
D.ERRS:'L' .BLKW 1 ; PENDING STATUS WORD
D.CFNC:'L' .BLKW 1 ; CONTROL FUNCTION IN PROGRESS
D.PFNC:'L' .LSTHD ; PENDING CONTROL FUNCTION QUEUE
D.STAT:'L' .BLKW 1 ; STATE FLAGS
D.PLEX:'L' .DVCHA ; DEVICE CHARACTERISTICS
D.TLZ:'L' .BLKW 1 ; THE TIME COUNTERS WHERE LAST ZEROED
D.XMT:'L' .BLKW 1 ; NUMBER OF BLOCKS TRANSMITTED
D.RCV:'L' .BLKW 1 ; NUMBER OF BLOCKS RECEIVED
D.LREC:'L' .BLKB 6. ; ERROR COUNTER VALUES FROM LAST READ OF BASE TA
D.LOGG:'L' .BLKW 1 ; EVENT LOGGING DESTINATION
D.LEN='B'.-..OFF.
.PSECT
.IIF NB <LST>, .NLIST
.ENDM DMCDF$
.MACRO DMEMDF
.MCALL CONFIG
CONFIG
.PSECT DYNMEM,RW,D,GBL,REL,OVR
.MACRO $$DFBF BEGLAB,LEN,CNT
BEGLAB':
.IF GT CNT
.REPT CNT-1
.WORD .+LEN
.BLKB LEN-2
.ENDM
.WORD 0
.BLKB LEN-2
.ENDC
.ENDM
$$DFBF BG550,550.,F$550
$$DFBF BG300,300.,F$300
$$DFBF BG150,150.,F$150
$$DFBF BG50,50.,F$50
BFMAX =.-2
BFHEAD:
.WORD BG50
.WORD BG150
.WORD BG300
.WORD BG550
BFLEN:
.WORD 50.
.WORD 150.
.WORD 300.
.WORD 550.
BFBEG:
.WORD BG50
.WORD BG150
.WORD BG300
.WORD BG550
BFPCNT = 4.
.PSECT
.ENDM
.MACRO DMXB
LINLEN = 5.
NODLEN = 6.
ADCINC = 010
BADBIT = 360
FILINC = 004
IDTYPE = 003
RESBIT = 001
SRVINC = 002
X.CB = 0.
X.CB2 = 2.
X.ADDR = 4.
X.CNT = 8.
X.DBUF = 12.
X.DLEN = 14.
X.DFIL = 16.
X.LLBF = 18.
X.LLEN = 20.
X.LLPR = 22.
X.CPU = 24.
X.FLGS = 25.
X.SLIN = 26.
X.SIMG = 31.
X.SNOD = 32.
X.STAT = 38.
X.LKNM = 40.
X.LLUN = 42.
X.DLUN = 44.
X.OSTE = 46.
X.ERR = 48.
.ASECT
.=50.
X.TNOD: .BLKB NODLEN+1
.EVEN
X.DSD: .BLKW 6
X.DFNB: .BLKW 15.
X.SPEC: .BLKB 32.
X$LEN = .
.PSECT
XF$DSA = 1
XF$DSC = 2
XF$LRA = 4
XF$LRC = 10
XF$LWA = 20
XF$LWC = 40
XF$EOD = 100
XF$SAD = 200
GTNXCB = 1.
ODFSLL = 2.
WDUMLB = 3.
XMSPRD = 4. ;SEND MESSAGE
ABORT = 6.
FINISH = 97.
GTDKBF = 98.
BUFSZ4 = 512.
.MACRO DMXB
.ENDM
.ENDM
.MACRO DO
THEN
.ENDM
.MACRO DQDF$ LST
.IIF NB,LST, .LIST
.MCALL TMPDF$
TMPDF$
.ASECT
.=0
TIME: .BLKB 1 ;TIMER BYTE
TIMS: .BLKB 1 ;TIME OUT TIME IN SECONDS
DQREG: .CSR ;CSR VALUE (CSR + 5 IN TEMPLATE)
RTINS: .INT ;RECEIVE INTERRUPT ENTRY POINT
RPRI: .PRI ;RECEIVE PRIORITY
RINS: .BLKW 1 ;ROUTINE TO CALL ON NEXT REC INTERRUPT
RFLAG: .BLKW 1 ;RECEIVER FLAGS
RSTAT: .BLKW 1 ;RECEIVER STATUS
.IF DF M$$MGE
RBIAS: .BLKW 1 ;RELOCATION BIAS
.ENDC
RADD: .BLKW 1 ;VIRTUAL ADDRESS OF REC BUFFER
RBUF1: .BLKW 1 ;BUFFER TO RETURN RECEIVE COMPLETE ON
RBUF2: .BLKW 1 ;BUFFER THAT IS BEING SET UP
TTINS: .INT ;TRANSMIT INTERRUPT ENTRY POINT
TPRI: .PRI ;TRANSMITTER PRIORITY
TFLAG: .BLKW 1 ;FLAGS FROM BUFFER DESCRIPTOR
TBUFP: .BLKW 1 ;BUFFER IN PRIMARY XMIT REGISTER
TBUFS: .BLKW 1 ;BUFFER IN SECONDARY XMIT REGISTER
TQUE: .LSTHD ;QUEUE OF BUFFERS TO TRANSMIT
KICCB: .BLKW 1 ;CCB ADDRESS FOR A KILL
LINE: .SLNW ;SYSTEM LINE NUMBER
DQCHA: .DVCHA ;DEVICE CHARACTERISTICS
DDHAR: .LIBR ;DDHAR LIBRARY CALL
CLCRC: .LIBR ;STCRC LIBRARY CALL
.PSECT
.IIF NB,LST, .NLIST
.ENDM
.MACRO DSCW$ LUN,EFN,IOST,AST,PRMLST
.MCALL QDPB$
QDPB$ 3,16000,LUN,EFN,,IOST,AST,<PRMLST>
.ENDM DSCW$
.MACRO DSCW$E LABEL,LUN,EFN,IOST,AST,PRMLST
.MCALL QDPB$E
QDPB$E LABEL,3,#16000,LUN,EFN,,IOST,AST,<PRMLST>
.ENDM DSCW$E
.MACRO DSCW$S LUN,EFN,IOST,AST,PRMLST
.MCALL QDPB$S
QDPB$S 3,#16000,LUN,EFN,,IOST,AST,<PRMLST>
.ENDM DSCW$S
.MACRO DSC$ LUN,EFN,IOST,AST,PRMLST
.MCALL QDPB$
QDPB$ 1,16000,LUN,EFN,,IOST,AST,<PRMLST>
.ENDM DSC$
.MACRO DSC$E LABEL,LUN,EFN,IOST,AST,PRMLST
.MCALL QDPB$E
QDPB$E LABEL,1,#16000,LUN,EFN,,IOST,AST,<PRMLST>
.ENDM DSC$E
.MACRO DSC$S LUN,EFN,IOST,AST,PRMLST
.MCALL QDPB$S
QDPB$S 1,#16000,LUN,EFN,,IOST,AST,<PRMLST>
.ENDM DSC$S
.MACRO DTEDF$ LST
.IIF NB <LST>, .LIST
.MCALL TMPDF$
TMPDF$
.ASECT
.=0
L.TIM: .BLKB 1 ;COMM/EXEC TIMER
L.UNT: .BLKB 1 ;DTE20 NUMBER
.EVEN
;
; *** DO NOT CHANGE ORDER OF L.IVC THROUGH L.ICB ***
; (USED BY INTERRUPT SERVICE)
;
L.IVC: .INT $DTEIS ;INTERRUPT VECTOR CONTROL BLOCK
L.ICB: .BLKW 1 ;INTERRUPT CCB FOR DDM ==> DLC
L.CST: .BLKW 1 ;EXTERNAL PAGE ADDRESS OF CSTAT REGISTER
L.STS: .BLKW 1 ;LINE STATUS:
LS.RUN=^O100000 ; LINE IS RUNNING NORMAL PROTOCOL *** MUST BE SIGN BIT ***
LS.INI=^O040000 ; LINE IS DOING AN INITIALIZE SEQUENCE
LS.ICB=^O020000 ; LINE HAS AN INTERRUPT CCB
L.SLN: .BLKW 1 ;SYSTEM LINE NUMBER
L.PSW: .BLKW 1 ;PENDING STATUS WORD (FOR $ASCMP) OR ZERO
L.LOG: .BLKW 1 ;EVENT LOGGING DESTINATION
L.PCQ: .LSTHD ;PENDING CONTROL FUNCTION QUEUE
L.MPN: .BLKB 1 ;MY PROTOCOL PROCESSOR #
L.HPN: .BLKB 1 ;HIS PROTOCOL PROCESSOR #
.EVEN
L.EHG: .BLKW 1 ;EXAMINE HIS GENERAL OFFSET
L.EHM: .BLKW 1 ;EXAMINE HIS TO-ME
L.EMG: .BLKW 1 ;EXAMINE MY GENERAL
;EXAMINE MY TO-HIM IS (L.EMG)+(L.DMH)
;DEPOSIT MY GENERAL IS ALWAYS 0
L.DMH: .BLKW 1 ;DEPOSIT MY TO-HIM
;
L.HKA: .BLKW 1 ;HIS KEEP-ALIVE
L.MKA: .BLKW 1 ;MY KEEP-ALIVE
;
; RECEIVE CONTROL BLOCK ** DO NOT CHANGE ORDER OF L.RST THRU L.RTM **
;
L.RST: .BLKW 3 ;TO-ME STATUS WORD
L.RFQ: .LSTHD ;FREE RECEIVE BUFFER QUEUE
L.RCB: .BLKW 1 ;CCB ADDRESS OF CURRENT BUFFER
L.RBA: ;RECEIVE BUSS ADDRESS:
.BLKW 1 ; BITS 17-16, STORED IN BITS 15-14
L.RLA: .BLKW 1 ; BITS 15-0
L.RCT: .BLKW 1 ;RECEIVE BYTE COUNT
L.RBZ: .BLKW 1 ;RECEIVE BUFFER SIZE
L.RQZ: ;TO-ME QSIZE WORD:
L.RCZ: .BLKW 1 ; SIZE OF THIS TRANSFER
L.RPZ: .BLKW 1 ; SIZE OF THIS MESSAGE
L.RTM: .BLKW 1 ; TRNASFER MODE
;
; TRANSMIT CONTROL BLOCK ** DO NOT CHANGE THE ORDER OF L.XST THRU L.XTM **
;
L.XST: .BLKW 3 ;TO-HIM STATUS WORD
L.XMQ: .LSTHD ;TRANSMIT QUEUE
L.XCB: .BLKW 1 ;CCB ADDRESS OF CURRENT TRANSMIT
L.XBA: ;TRANSMIT BUSS ADDRESS
.BLKW 1 ; BITS 17-16, STORED IN BITS 15-14
L.XLA: .BLKW 1 ; BITS 15-0
L.XQZ: ;TO-HIM QSIZE WORD:
L.XCT: .BLKW 1 ; TRANSMIT BYTE COUNT
L.XBZ: .BLKW 1 ; TRANSMIT BUFFER SIZE
L.XTM: .BLKW 1 ; TRANSFER MODE
; LINE COUNTERS
L.TLZ: .BLKW 1 ; SECONDS SINCE LINE COUNTERS ZEROED
L.RCV: .BLKW 1 ; BLOCKS SUCCESSFULLY RECEIVED
L.XMT: .BLKW 1 ; " " TRANSMITTED
L.TMO: .BLKB 1 ; RECEIVE TIMEOUTS
L.RES: .BLKB 1 ; RESOURCE ALLOC ERRORS
;
$DTELZ==. ;SIZE OF DTE20 LINE TABLE
.PSECT
.IIF NB <LST>, .NLIST
.ENDM DTEDF$
.MACRO DUPDF$ LST
.IIF NB <LST>, .LIST
.MCALL TMPDF$
TMPDF$
;
; DEVICE LINE TABLE OFFSET DEFINITIONS
;
.ASECT
.=0
TIME: .BLKB 1 ; DEVICE DRIVER TIMER CELL
TIMS: .BLKB 1 ; DEVICE DRIVER INITIAL TIMEOUT
RINS: .INT ; RECEIVE TRANSFER INSTRUCTION
RDBF: .BLKW 1 ; RECEIVE DATA ADDRESS
.IF DF M$$MGE
RBIAS: .BLKW 1 ; RELOCATION BIAS
.IFTF
RADD: .BLKW 1 ; VIRTUAL ADDRESS
RCNT: .BLKW 1 ; REMAINING COUNT
RPRI: .PRI ; PRIORITY
RTHRD: .BLKW 1 ; POINTER TO CURRENT BUFFER IN CCB
RFLAG: .BLKW 1 ; FLAGS WORD
RPRIM: .BLKW 1 ; PRIMARY CCB (CURRENT)
RSTAT: .BLKW 1 ; DEVICE STATUS
RPCNT: .BLKW 1 ; SIZE OF DATA IN NUMBERED MESSAGE
TINS: .INT ; TRANSMIT TRANSFER INSTRUCTION
TCSR: .BLKW 1 ; CSR ADDRESS
.IFT
TBIAS: .BLKW 1 ; RELOCATION BIAS
.IFTF
TADD: .BLKW 1 ; VIRTUAL ADDRESS
TCNT: .BLKW 1 ; REMAINING COUNT
TPRI: .PRI ; PRIORITY
TSTAT: .BLKW 1 ; NEXT STATE
TTHRD: .BLKW 1 ; POINTER TO CURRENT BUFFER IN CCB
TPRIM: .BLKW 1 ; PRIMARY CCB (CURRENT)
TSEC: .BLKW 1 ; SECONDARY CCB CHAIN
KICCB: .BLKW 1 ; ADDRESS OF CCB USED IN KILL
LINE: .BLKW 1 ; DEVICE SYSTEM LINE NUMBER
DUPCH: .DVCHA ; DEVICE CHA. (LOADED BY .DVCHA) ONLY THE
; FULL/HALF DUPLEX INDICATOR IS USED
DUPLG: .BLKW 1 ; EVENT LOGGING DESTINATION
HDRA: .LIBR
.ENDC
DUPLN==.
.PSECT
.IIF NB <LST>, .NLIST
.ENDM DUPDF$
.MACRO DVBDF$,L,B
.ASECT
.=0
V.TRCT:'L' .BLKW 1 ;VOLUME TRANSACTION COUNT (RESERVED FOR RSX)
V.TIMR:'L' .BLKB 1 ;CURRENT TIMER VALUE
V.TIME:'L' .BLKB 1 ;RESET TIME VALUE
V.CULT:'L' .BLKW 1 ;CURRENT USER LINK TABLE ADDRESS
V.ULT:'L' .BLKW 1 ;POINTER TO START OF USER LINK TABLE
V.ULTE:'L' .BLKW 1 ;POINTER TO END OF USER LINK TABLE
V.MBXQ:'L' .BLKW 2 ;USER TASK MAILBOX LISTHEAD
V.GENQ:'L' .BLKW 2 ;GENERAL DELIVERY CCB QUEUE LISTHEAD
V.1CPQ:'L' .BLKW 2 ;VERSION 1 CONNECT PENDING QUEUE LISTHEAD
;
V.VBL='B'.-V.TRCT ;LENGTH OF DECNET (V2) VOLUME CONTROL BLOCK
.PSECT
.MACRO DVBDF$,X,Y
.ENDM DVBDF$
.ENDM DVBDF$
.MACRO DVTMDF MCRO
'MCRO' DP,DP,0,<DV$NET!DV$LOD>,15.,0,255. ;** MOP
'MCRO' DU,DU,2,<DV$NET!DV$LOD>,15.,0,255. ;** MOP
'MCRO' DUV,DUV,2,<DV$NET!DV$LOD>,15.,0,255. ;** MOP
'MCRO' DL,DL,4,<DV$NET!DV$LOD>,15.,0,255. ;** MOP
'MCRO' DLV,DLV,4,<DV$NET!DV$LOD>,0.,0,255. ;** MOP
'MCRO' DQ,DQ,6,<DV$NET!DV$LOD>,15.,0,255. ;** MOP
'MCRO' DA,DA,10,<DV$NET!DV$LOD>,1.,0,0. ;** MOP
'MCRO' DUP,DUP,12,<DV$NET!DV$LOD>,15.,0,255. ;** MOP
'MCRO' DMC,DMC,14,<DV$NET!DV$LOD>,7.,0,0. ;** MOP
'MCRO' DLA,DLA,20,,0.,0.,0. ;OUR DEFINITION
'MCRO' DTE,DTE,24,<DV$NET>,0.,0,0. ;** MOP
'MCRO' DV,DV,26,<DV$NET!DV$LOD>,3.,15.,255. ;MAYNARD DEFINITION
'MCRO' DZ,DZ,30,<DV$NET!DV$LOD>,7.,7.,255. ;MAYNARD DEFINITION
'MCRO' KDP,KDP,34,<DV$NET!DV$LOD>,0.,15.,255. ;MAYNARD DEFINITION
'MCRO' KDZ,KDZ,36,<DV$NET!DV$LOD>,2.,47.,255. ;MAYNARD DEFINITION
'MCRO' KL,KL,40,<DV$NET>,15.,0,255. ;** MOP
'MCRO' DH,DH,42,<DV$NET!DV$LOD>,7.,15.,255. ;OUR DEFINITION
'MCRO' CR,CR,44,,0.,0.,0. ;OUR DEFINITION
'MCRO' LE,LE,46,,0.,0.,0. ;OUR DEFINITION
.ENDM DVTMDF
.MACRO DZTDF$ PS
.MCALL TMPDF$
TMPDF$
.NLIST
....PS= 0
.IF NB,PS
.IIF NE,PS, ....PS= 1
.ENDC
.LIST
.ASECT
.= 0
DZDLT: ;DZ11 DEVICE LINE TABLE OFFSETS
DRCV: .INT ;NTL .INT & .PRI OPERATOR
.PRI
DRDBR: .BLKW 1 ;RCV DATA BUF REG ADDR
DTRN: .INT ;NTL .INT & .PRI OPERATOR
.PRI
DTDBR: .BLKW 1 ;XMT DATA BUF REG ADDR
DZCSR: .BLKW 1 ;DZ11 CSR ADDRESS
DTIM: .BLKW 2 ;2 WORD ENTRY FOR TIMER QUEUE
DFLG: .BLKB 1 ;REMOVED: FREE TO ALL TAKERS
DCNT: .BLKB 1 ;ACTIVE CHANNEL COUNT
DCRC: .LIBR ;CRC ROUTINE POINTER
DTMSTP: .BLKW 1 ;STORAGE FOR STOP CCB WHILE
;TIMER STOPS
DTTAB:: ;TABLE OF 8 CHN ENTRIES
.= 0 ;OFFSETS INTO TABLE ENTRIES
DTTLT: .BLKW 1 ;TIMEOUT COUNT, MUST BE FIRST
DTTAD: .IF DF,M$$MGE
.BLKW 1 ;TRN CHAR BUFFER RELOC BIAS
.ENDC
DTTPT: .BLKW 1 ;TRN CHAR BUFF POINTER
DTTCT: .BLKW 1 ;TRN CHARACTER COUNT
DTTCE: .BLKW 1 ;TRN CCB BUFFER ENTRY POINTER
DTTQH: .BLKW 1 ;TRN CCB Q HEAD AND CURRENT CCB
DTLOG: .BLKW 1 ;EVENT LOGGING DESTINATION
.IF NE,....PS
DTPST: .BLKW 1 ;PROTOCOL I/O STATUS BITS
DTRAD: .IF DF,M$$MGE
.BLKW 1 ;RCV CHAR BUFFER RELOC BIAS
.ENDC
DTRPT: .BLKW 1 ;RCV CHAR BUFFER POINTER
DTRCT: .BLKW 1 ;RCV CHARACTER COUNT
DTRQH: .BLKW 1 ;RCV CURRENT CCB
.ENDC
DTFLG: .BLKB 1 ;DZ11 CHANNEL'S FLAGS
DTSLN: .BLKB 1 ;SYSTEM LINE NUMBER
DTTLS: .DVCHA ;LPR (LINE PARAM REG) INIT VALUE
DTLIN: .BLKB 1 ;SPACE FOR LINE NO (0-7)
;USED ONLY BY START CODE TO INIT
;3 LSB IN LINE CHA. WORDS
.EVEN
DTTLN== . ;LEN OF TABLE ENTRY
.PSECT
.ENDM DZTDF$
.MACRO D1$ LB,D
; L - LABEL
; D - DISPLAY END
.BYTE 1.,1 ; OPCODE, COUNT
.BYTE D ; LINE AT WHICH DISPLAY AREA ENDS
.ENDM
.MACRO D2F$ ROW,COL,LEN,VA,IC,FA
; FIELD DEFINATIONS
.BYTE ROW,COL,LEN
.IF B,VA
.BYTE V.N ; DEFAULT TO NORMAL VIDEO
.IFF
.BYTE VA
.ENDC
.IF B,IC
.BYTE I.S ; DEFAULT TO SPACES
.IFF
.BYTE IC
.ENDC
.BYTE FA & 377 ; 1ST BYTE
; LOW BYTE - DATA TYPE, EMPTY-FULL BITS
.BYTE FA/400 & 377 ; 2ND BYTE
; HIGH BYTE - RJ, MODIFIER BITS
.ENDM
.MACRO D2H$ LB
; SET OPCODE, RESERVE BYTE FOR COUNT
.BYTE 2 ; OPCODE
.BYTE LB'C & 177 ! 200 ; 1ST BYTE OF BYTE COUNT
.BYTE LB'C / 200 ; 2ND BYTE
LB: ; LABEL USED TO COMPUTE COUNT
.ENDM
.MACRO D2T$ LB
; COMPUTE COUNT AND LENGTH
LB'C= .-LB
.ENDM
.MACRO D2$ LB,R,COL,LEN,V,IC,F
; *** THIS MACRO USED FOR DEFINE ONE AND ONLY ONE FIELD ***
; FOR MULTIPLE FIELDS USE D2H$, D2F$, D2T$
; LB - LABEL
; FIELD DEFINITIONS
; <ROW>
; <COLUMN>
; <LENGTH>
; <VIDEO ATTRIBUTES>
; <INITIALIZATION CHAR>
; <FIELD ATTRIBUTES>
.BYTE 2. ; OPCODE
.BYTE LB'C ; COUNT
LB: .BYTE R,COL,LEN ; ROW, COLUMN, LENGHT
.BYTE V ; VIDEO ATTRIBUTES
.BYTE IC ; INIT CHAR
.BYTE F & 377 ; 1ST BYTE
; LOW BYTE - CONTAINS DATA TYPE, EMPTY-FULL BITS
.BYTE F/400&377 ; 2ND BYTE OF ATTRIBUTES
; HIGH BYTE - CONTAINS RJ, MODIFIER BITS
LB'C= .-LB
.ENDM
.MACRO D3F$ ROW,COL,LEN,VA
; SET FIELD DEFINATIONS
.BYTE ROW,COL,LEN
.IF B,VA
.BYTE V.N ; DEFAULT
.IFF
.BYTE VA
.ENDC
.ENDM
.MACRO D3H$ LB
; SET OPCODE, RESERVE BYTE FOR COUNT
.BYTE 3 ; OPCODE
.BYTE LB'C&177!200 ;COUNT LOW BYTE
.BYTE LB'C/200 ;HIGH BYTE
LB: ; LABEL USED TO COMPUTE COUNT
.ENDM
.MACRO D3T$ LB
; COMPUTE COUNT
LB'C= .-LB
.ENDM
.MACRO D3$ LB,ROW,COL,LEN,VA
; *** THIS MACRO USED FOR DEFINING ONE AND ONLY ONE FIELD ***
; FOR MULTIPLE FIELDS USE D3H$, D3F$, D3T$
; LB - LABEL
; VA - VIDEO ATTRIBUTES
.BYTE 3 ; OP CODE
.BYTE LB'C ; COUNT
LB: .BYTE ROW, COL, LEN
.BYTE VA
LB'C= .-LB
.ENDM
.MACRO D4$ LB,MSG,VA,STRING
; LB - LABEL
; MSG - MESSAGE NUMBER (1-32)
.BYTE 4 ; OP CODE
.BYTE LB'C ; COUNT
LB: .BYTE MSG
.IF B,VA
.BYTE V.N ; DEFAULT
.IFF
.BYTE VA
.ENDC
.ASCII STRING
LB'C= .-LB
.ENDM
.MACRO ELSE
$$ELSE
$$TRNM=11
.ENDM
.MACRO EMBDF$,L,B
EC.INI='B'40
EC.DVC='B'1
EC.DTO='B'140
EC.NSI='B'141
EC.LOA='B'4
EC.UNL='B'10
.ASECT
.=0
E.SIZE:'L' .BLKW 1
E.CODE:'L' .BLKB 1
.BLKB 1
E.TIME:'L' .BLKB 6
E.SEQ:'L'.BLKW 1
E.ABM:'L'.BLKW 1
.=E.ABM+2
E.VCTR:'L' .BLKB 1
E.LOST:'L' .BLKB 1
E.OPS:'L'.BLKW 1
E.OPC:'L' .BLKW 1
.=E.ABM+2
E.RTRY:'L' .BLKB 2
.BLKB 1
E.IOC:'L'.BLKB 1
E.TASK:'L' .BLKW 2
E.PAR:'L'.BLKW 1
E.UIC:'L'.BLKW 1
E.UCB:'L'.BLKW 1
E.FCN:'L'.BLKB 2
E.PRM:'L'.BLKW 1
.BLKW 6
E.RCNT:'L' .BLKB 1
.BLKB 1
E.REGS='B'.
E.LGTH='B'.
.=E.TIME+<9.*2>
E.WHY:'L'.BLKW 1
.=.+2
E.NAME:'L'.BLKW 1
.PSECT
.MACRO EMBDF$ X,Y
.ENDM
.ENDM
.MACRO EMSG$ NUMBER,REG
.IF NB REG
MOV #$ERR'NUMBER',REG
CALL @(REG)+
.IFF
MOV #$ERR'NUMBER',R0
CALL @(R0)+
.ENDC
.ENDM EMSG$
.MACRO EMSG$R NUMBER,REG
.IF NB REG
MOV #$ERR'NUMBER',REG
JMP @(REG)+
.IFF
MOV #$ERR'NUMBER',R0
JMP @(R0)+
.ENDC
.ENDM EMSG$R
.MACRO ENABL$
.IF DF L$$SI1
MTPS (SP)+ ;;; RESTORE PREVIOUS PRIORITY
.IFF
MOVB (SP)+,@#PS ;;; RESTORE PREVIOUS PRIORITY
.ENDC
.ENDM
.MACRO ENDCASE
$$POP $$CSTA
.IF NE $$TRNM-11
$$LAB \$$STNM,10
.ENDC
ENDIF
.ENDM
.MACRO ENDIF
$$LAB \$$STNM,\$$TRNM-1
$$POP $$TRNM
$$POP $$STNM
.ENDM
.MACRO ENDPROC
.IF EQ $$SUB
$$GEN1 ,RTS,PC
.ENDC
.ENDM
.MACRO ENDSYSTATE
.IF DF,R$$11D!I$$AS
.ENB0
.ENDC
.IF NDF,R$$11M
MOV (SP)+,R5
MOV (SP)+,R4
MOV (SP)+,R3
MOV (SP)+,R2
MOV (SP)+,R1
MOV (SP)+,R0
.IFF
$$GEN1 ,RTS,PC
$$LAB \$$STNM,10
ENDIF
.ENDC
.ENDM
.MACRO ENDWHILE
$$BGNN R,\$$STNM,10
ENDIF
.ENDM
.MACRO END$DF
SLTTOT=SLN+1
PDVTOT=PDN+1
.ENDM END$DF
.MACRO ERBLK$ AA,BB
.BYTE 0 ; TERMINATE STRING
$$=-1 ; FORCE NEW ADDRESS TO BE SAVED IN ERMSG$
.EVEN
$$$$=.
.IF NB AA
AA':
.ENDC
.WORD $$$ ; ADDRESS OF INPUT ASCIZ STRING
.IF NB <BB>
.IRP CC,<BB>
.WORD CC
.ENDR
.ENDC
.ENDM ERBLK$
.MACRO ERMSG$ AA
.IF NDF $$
$$=-1
.ENDC
.IIF EQ,$$+1, $$$=.
$$=+1
.ASCII ^AA^
.ENDM ERMSG$
.MACRO ERRPT$ AA,BB,CC
.IF B AA
MOV #$$$$,R2 ; ADDRESS ARGUMENT BLOCK
.IFF
MOV #'AA,R2 ; ADDRESS OF ARGUMENT BLOCK
.ENDC
.IF NB BB
.IF NB CC
MOV #'CC,R1 ; PASS OPTIONAL WORD
.ENDC
CALL BB ; CALL USER SUBROUTINE
.IFF
.ERROR ERRPT$ MACRO MUST BE SUPPLIED WITH USER SUBROUTINE
.ENDC
.ENDM ERRPT$
.MACRO EVDF
SIDLEN = 16.
NODLEN = 6.
.ASECT
.=0
CMLKNM: .BLKW 1
MESBUF: .BLKW 1
MEMLEN: .BLKW 2
ORIGCB: .BLKW 1
EXTCB: .BLKW 1
STATE: .BLKB 1
FLAGS: .BLKB 1
LINE: .BLKB 4
MODE: .BLKB 1
BOODEV: .BLKB 1
REQPRO: .BLKB 1
SOFTID: .BLKB SIDLEN+1
REQTYP: .BLKB 1
ERRFUN: .BLKB 1
ERRCOD: .BLKB 1
CTXTLN = .
.PSECT
LOGPRO = 1.
LINPRO = 2.
LNKPRO = 3.
FINISH = 4.
LINSWI = 001
FINMES = 002
OPTSPE = 004
TRAPEN = 010
RECPEN = 020
MAINT = 0.
LOAD = 1.
DUMP = 2.
.MACRO EVDF
.ENDM
.ENDM
.MACRO EXPALL NAM,CNT,UNT,SLN,DLCLST
EXPFLG \S'SLN'SF,NAM,\S'SLN'CN,\SLN ; EXPAND FLAG LINE
.RADIX 10
EXPDDM \PD$'NAM,NAM
.RADIX 8
;
; SPECIAL CASE OF DDM=DLC ( SUCH AS DMC )
;
.IF EQ S'SLN'DD-S'SLN'DL
.RADIX 10
EXPDLC \PD$'NAM,NAM
.RADIX 8
EXPWRD NAM,NAM,\S'SLN'CN,\S'SLN'UN
.IFF
;
; NORMAL DLC PROCESSES
;
.IRP NAMDL,<DLCLST>
.IF EQ NAMDL-S'SLN'DL
.RADIX 10
EXPDLC \PD$'NAMDL,NAMDL
.RADIX 8
EXPWRD NAM,NAMDL,\S'SLN'CN,\S'SLN'UN
.MEXIT
.ENDC
.ENDM
.ENDC
.ENDM EXPALL
.MACRO EXPATS AT,PD,ST,SL
ATLL'AT=PD ; CHANNEL AT LLC PDI
ATSL'AT=SL ; CHANNEL AT SLN
ATST'AT=ST ; CHANNEL AT STATION NUMBER
.ENDM EXPATS
.MACRO EXPATT AT,NAM
EXPATU \ATLL'AT,\ATSL'AT,\ATST'AT,NAM,\AT
.ENDM EXPATT
.MACRO EXPATU LL,SL,ST,NAM,AT
.IF LE AT-ATS ; IF NOT INTO EXENDED TABLE SPACE
.IF EQ LL-PD$'NAM ; AND THIS CHANNEL BELONGS TO THIS LLC
.LIST
.BYTE SL,ST ; (A) ; CHANNEL AT': SLN'SL,STATION ST
.NLIST
.IFF ; IF IT BELONGS TO SOME OTHER LLC
.LIST
.BYTE 0,200 ; (A) ; CHANNEL AT': NOT ASSIGNED TO THIS LLC
.NLIST
.ENDC
.IFF ; IF INTO EXTENDED SPACE
.LIST
.BYTE 0,200 ; (A) ; CHANNEL AT': UNASSIGNED CHANNEL
.NLIST
.ENDC
.ENDM EXPATU
.MACRO EXPBFT
.LIST
;
; COMMUNICATION SYSTEM COMMON DATA BASE
; ( ORDERING IMPACTS VNP )
;
;
;
;
;
.NLIST
.RADIX 10
EXPTAB \SLTTOT,\PDVTOT
EXPBUF \CCB.NB,\CCB.SZ,\RDB.NB,\RDB.SZ,\SDB.NB,\SDB.SZ,\TR,\XM
.RADIX 8
.LIST
$CMPDV::.WORD 0 ; (R) ; PDV INDEX OF CURRENT DISPATCHED PROCESS
.IF DF R$$11D!I$$AS
$PRQUE::.WORD 0 ; (R) ; QUEUE LISTHEAD
.WORD .-2 ; (R) ; POINTER TO LAST CCB IN QUEUE
.ENDC
.IF DF R$$11M!X$$MCB
$CMFRK::.WORD $SQSRV ; (R) ; INITIAL LINK MARKS FORK BLOCK FREE
.WORD $SQSRV ; (R) ; ADDRESS OF FORK PROCESS
.WORD 0 ; (R) ; FORK PROCESS QUEUE
.WORD .-2 ; (R) ; IS INITIALLY EMPTY
.ENDC
$CCBLH::.WORD 0 ; (D) ; POINTER TO FIRST FREE CCB
$SDBLH::.WORD 0 ; (D) ; POINTER TO FIRST FREE SMALL DATA BUFFER
.WORD 0 ; (D) ; SECOND HALF OF ADDRESS DOUBLEWORD
$RDBLH::.WORD 0 ; (D) ; POINTER TO FIRST FREE RECEIVE BUFFER
$RDQSL::.WORD 0 ; (R) ; SYSTEM LINE NUMBER TO CHECK ON NEXT BUFFER RETURN
$RDQCT::.WORD 0 ; (R) ; NUMBER OF BUFFER WAIT REQUESTS AND FLAG
$NTLPT::.WORD 0 ; (D) ; NTL POINTER TO IMPURE AREA IN NTPOOL
.IF DF R$$11D!I$$AS
$EVFLG::.WORD 0 ; (D) ; POINTER TO FIRST 16 LOCAL EVENT FLAGS
.ENDC
.IF NDF M$$MGE
.WORD 77 ; (A) ; GLITCH FOR ALLOCATION ROUTINES
$QBIAS::.WORD 0 ; (R) ; START OF COMMUNICATION BUFFER POOL
.WORD 0 ; (R) ; SECOND WORD OF $QBIAS LISTHEAD
$PUMA:: .WORD 0 ; (R) ; FREE WORD ON UNMAPPED SYSTEMS
.IFF
$NBIAS::.WORD 0 ; (R) ; POINTER TO NON-UMR MAPPED PORTION OF POOL
$QBIAS::.WORD 0 ; (R) ; POINTER TO UMR-MAPPED PORTION OF POOL
$QSTRT::.WORD 0 ; (R) ; ORIGINAL BIAS OF UMR-MAPPED PORTION OF POOL
$PUMR:: .WORD 0 ; (D) ; STARTING UMR BIAS
.ENDC
.IF DF,R$$11D!I$$AS
$XUMR:: .WORD 0 ; (D) ; STARTING UMR BIAS OF SCOM AREA
$POOLB::.WORD 0 ; (D) ; BASE ADDRESS OF NETWORK POOL
$POOLS::.WORD 0 ; (D) ; SIZE OF NETWORK POOL
.ENDC
.NLIST
.ENDM EXPBFT
.MACRO EXPBUF NCCB,SCCB,NRDB,SRDB,NSDB,SSDB,THRESH,XMIT
.LIST
$CCBNM::.WORD NCCB'. ; (D) ; # OF CCB'S ALLOCATED
$CCBSZ::.WORD SCCB'. ; (A) ; # BYTES / CCB
$RDBNM::.WORD NRDB'. ; (D) ; # OF RDB'S ALLOCATED
$RDBSZ::.WORD SRDB'. ; (D) ; # BYTES / RDB
$SDBNM::.WORD NSDB'. ; (D) ; # OF SDB'S ALLOCATED
$SDBSZ::.WORD SSDB'. ; (D) ; # BYTES / SDB
$CCBCT::.WORD NCCB'. ; (D) ; COUNTER OF CURRENT # OF CCBS IN POOL
$RDBCT::.WORD NRDB'. ; (D) ; COUNTER OF CURRENT # OF RDBS IN POOL
$SDBCT::.WORD NSDB'. ; (D) ; COUNTER OF CURRENT # OF SDBS IN POOL
$CCBAF::.WORD 0 ; (D) ; COUNTER OF # OF CCB ALLOCATION FAILURES
$RDBAF::.WORD 0 ; (D) ; COUNTER OF # OF RDB ALLOCATION FAILURES
$LDBAF::.WORD 0 ; (D) ; COUNTER OF # OF LDB ALLOCATION FAILURES
$SDBAF::.WORD 0 ; (D) ; COUNTER OF # OF SDB ALLOCATION FAILURES
$RDBTH::.WORD THRESH'. ; (D) ; POOL THRESHOLD FOR LARGE DATA BUFFER ALLOCATON FAILURE
$XMTBF::.WORD XMIT'. ; (D) ; # OF XMITS/LINK TO STACK
.NLIST
.ENDM EXPBUF
.MACRO EXPCHN NCHAN,NAM
.LIST
.BYTE NCHAN'. ; (A) ; NUMBER OF CHANNELS ALLOCATED FOR NAM
.NLIST
.ENDM EXPCHN
.MACRO EXPDDM DDMIND,NAM
.LIST
.BYTE DDMIND'. ; (D) ; NAM OFFSET IN PDVTB::
.NLIST
.ENDM EXPDDM
.MACRO EXPDLC DLCIND,NAM
.LIST
.BYTE DLCIND'. ; (D) ; NAM OFFSET IN PDVTB::
.NLIST
.ENDM EXPDLC
.MACRO EXPFLG FLG,NAM,NUM,SLNN
.LIST
.IF EQ SSL'SLNN
; SLN'SLNN NAM'NUM
.IFF
; SLN'SLNN NAM'NUM *** MULTIDROP ***
.ENDC
.WORD FLG ; (D) ; FLAG FOR NAM'NUM
.NLIST
.ENDM EXPFLG
.MACRO EXPLLL CHAN,PDI,SL,NAM,AT
.IF LE SSL'SL-1
.IF NDF X$$ATS
.LIST
.BYTE CHAN,PDI ; (A) ; SLN'SL': CHANNEL CHAN-NAM
.NLIST
NAM'CHAN=SL ; GENERATE SYMBOL FOR LLC CHANNEL TABLE
.IFF
.LIST
.BYTE AT,PDI ; (A) ; SLN'SL': CHANNEL AT-NAM
.NLIST
ATLL'AT=PDI ; CHANNEL AT LLC PDI
ATSL'AT=SL ; CHANNEL AT SLN
ATST'AT=0 ; CHANNEL AT STATION NUMBER
ATS=ATS+1 ; ONE MORE ATS CHANNEL ( GLOBAL TOTAL )
.ENDC
.IFF
.LIST
.WORD <ST'SL-.>/2!100000 ; (A) ; SLN'SL: MULTIDROP
.NLIST
M'NAM'CHAN=SL ; GENERATE SYMBOL FOR LLC MULTIDROP ENTRY
NAM'CNT=NAM'CNT+SSL'SL-1 ; # CHANNELS/LLC
SSN'SL=CHAN ; STARTING CHANNEL # BY SLN
.IF DF X$$ATS
STA=0 ; START WITH STATION ZERO
SSN'SL=ATS ; STARTING CHANEL NUMBER / SLN
.REPT SSL'SL ; GENERATE SYMBOLS FOR EACH CHANNEL
EXPATS \ATS,\PDI,\STA,\SL ; GERNERATE SYMBOLS
STA=STA+1
ATS=ATS+1 ; NUMBER ATS CHANNELS CONSECUTIVELY
.ENDR
.ENDC
.ENDC
.ENDM EXPLLL
.MACRO EXPLLN SLN,LST
.IRP NAM,<LST>
.IF EQ NAM-S'SLN'LL
NAM'CNT=NAM'CNT+1 ; INCREMENT REFERENCE COUNTER
EXPLLL \NAM'CNT,\PD$'NAM,\SLN,NAM,\ATS
.MEXIT
.ENDC
.ENDR
.ENDM EXPLLN
.MACRO EXPLLR SL,CHAN,STA
.IF B STA
.LIST
.BYTE 0,200 ; (A) ; CHANNEL CHAN': UNASSIGNED
.NLIST
.IFF
.LIST
.BYTE SL',STA ; (A) ; CHANNEL CHAN': SLN'SL,STATION STA
.NLIST
.ENDC
.ENDM EXPLLR
.MACRO EXPLLS SL,NAM,CHA
.IF GE NAM'CNT-CHA
.IF DF NAM'CHA
STA=0
EXPLLR \NAM'CHA,\CHA,\STA
.ENDC
.IF DF M'NAM'CHA
CHAN=CHA-1
STA=-1
.REPT SSL'SL
STA=STA+1
CHAN=CHAN+1
EXPLLR SL,\CHAN,\STA
.ENDR
.ENDC
.IFF
STA=0
EXPLLR 0,CHA
.ENDC
.ENDM EXPLLS
.MACRO EXPLLT LST
.PAGE
.LIST
.IF NE STATBL
;
; SYSTEM LINE TABLE ( EXTENSION )
;
; THIS TABLE IS INDEXED BY SYSTEM LINE NUMBER AND
; ASSOCIATES EACH SYSTEM LINE WITH AN:
;
; 1 - LLC PROCESS AND A CHANNEL NUMBER WITHIN THAT PROCESS
; OR 2 - ADDRESS OF A STATION TABLE FOR A MULTIDROP LINE
.IFF
;
; SYSTEM LINE TABLE ( EXTENSION )
;
; THIS TABLE IS INDEXED BY SYSTEM LINE NUMBER AND
; ASSOCIATES EACH SYSTEM LINE WITH AN LLC PROCESS
; AND A CHANNEL NUMBER WITHIN THAT PROCESS.
.ENDC
$LLCTB::
.NLIST
SLN=-1
ATS=0 ; COUNT TOTAL NUMBER OF CHANNELS
.REPT SLTTOT
SLN=SLN+1
EXPLLN \SLN,<LST>
.ENDR
ATS=ATS-1 ; DECREMENT TO TRUE COUNT
.ENDM EXPLLT
.MACRO EXPNOD ARG1,ARG2,ARG3,ARG4=1
.NLIST BEX
.LIST
$NSPNM::.WORD 'ARG4' ; (X) ; LOCAL NODE NUMBER
$NTNAM::.ASCII /'ARG1'/ ; (D) ; LOCAL NODE NAME
$HOST:: .ASCII / / ; (D) ; HOST SYSTEM ID ( SET WITH VNP )
.NLIST
.NCHR $$TMP,<ARG2>
.LIST
$NODID::.WORD $$TMP ; (D) ; LOCAL NODE IDENTIFICATION
.ASCII @'ARG2'@
.NLIST
.LIST BEX
.BLKB 32.-$$TMP
.ENDM
.MACRO EXPPDL NAM,NUM,LDRFLG,XXX
.IF EQ LDRFLG&ZF.MFL ; DON'T LOAD PROCESS
.LIST
.WORD NAM'PDV ; NAM XXX NUM'. NO ; (A) ;
.NLIST
.IFF ; LOAD PROCESS
.LIST
.WORD NAM'PDV ; NAM XXX NUM'. YES ; (A) ;
.NLIST
.ENDC
.ENDM EXPPDL
.MACRO EXPPDN LST,XXX
.IRP NAM,<LST>
PDN=PDN+1
.RADIX 10
EXPPDL NAM,\PDN*2,NAM'FL,XXX
.RADIX 8
.ENDM
.ENDM EXPPDN
.MACRO EXPPDT LLCLST,DLCLST,DDMLST
.LIST
;
; PROCESS DESCRIPTOR ADDRESS TABLE
;
; EACH ENTRY IS THE ADDRESS OF THE CORRESPONDING
; PROCESS DESCRIPTOR VECTOR ( BELOW ).
;
; PROCESS PROCESS PROCESS PROCESS
; NAME LEVEL INDEX MFL
$PDVTB::
.NLIST
PDN=-1
EXPPDN <LLCLST>,LLC
EXPPDN <DLCLST>,DLC
EXPPDN <DDMLST>,DDM
.LIST
$PDVND::
.NLIST
.ENDM EXPPDT
.MACRO EXPPVL NAM,FLG,PRI,PDN,XXX
.LIST
;
; NAM - PROCESS DESCRIPTOR VECTOR # 'PDN'
.IF DIF XXX,LLC
; THIS IS A XXX PROCESS
.IFF
;
; THIS IS AN XXX PROCESS
.ENDC
;
.NLIST
.LIST
NAM'PDV::
.IF DF M$$MGE
.WORD 0 ; (I) ; RELOCATION BIAS
.IFF
.WORD 0 ; (I) ; UNUSED WORD ON UNMAPPED SYSTEMS
.ENDC
.WORD 0 ; (I) ; DISPATCH TABLE ADDRESS
.IF DF X$$MCB
.WORD 0 ; (R) ; RESERVED WORD
.ENDC
.WORD ^C<PR'PRI'>&PR7 ; (D) ; PRIORITY PRI
.RAD50 /'NAM'/ ; (D) ; PROCESS NAME
.IF DF NAM'CHN
.IF NE NAM'CHN
.IF NDF X$$ATS
.NLIST
.IIF GT,NAM'CNT-NAM'CHN, NAM'CHN=NAM'CNT
.LIST
.IFF
.NLIST
.IIF GT,ATS-NAM'CHN, NAM'CHN=ATS
.LIST
.ENDC
.ENDC
.IFT
.IF NE NAM'CHN
.NLIST
.RADIX 10
.IF NDF X$$ATS
EXPCHN \NAM'CHN+1,NAM ; NUMBER OF CHANNELS ( EXCLUDING CHANNEL 0 )
.IFF
EXPCHN \NAM'CHN,NAM
.ENDC
.RADIX 8
.LIST
.IFF
.BYTE 0 ; (R) ; AVAILABLE BYTE
.ENDC
.IFF
.BYTE 0 ; (R) ; AVAILABLE BYTE
.ENDC
.BYTE FLG ; (D) ; FLAG BYTE
.IF DF R$$11M
.WORD 0 ; (I) ; LOADED PROCESS PCB POINTER
.ENDC
.IF DF R$$11D!I$$AS
.WORD 0 ; (I) ; GCD POINTER
.ENDC
.NLIST
.IF DF NAM'CHN
.LIST
.WORD 0 ; (I) ; VIRTUAL ADDRESS OF LLC DATA BASE
.NLIST
.IF NE NAM'CHN
.IF NDF X$$ATS
.LIST
.BYTE 0,300 ; (A) ; CHANNEL 0: RESERVED FOR LOOPBACK
.NLIST
CHAN=0
SLN=-1
.REPT NAM'CHN
SLN=SLN+1
CHAN=CHAN+1
EXPLLS \SLN,NAM,\CHAN
.IIF EQ,NAM'CHN-CHAN, .MEXIT ; EXIT NOW IF ENOUGH CHANNELS ARE ALLOCATED
.ENDR
.IFF
AT=-1 ; START WITH CHANNEL 0
.REPT NAM'CHN
AT=AT+1
EXPATT \AT,NAM
.ENDR
.ENDC
.ENDC
.ENDC
.ENDM EXPPVL
.MACRO EXPPVN LST,XXX
.IRP NAM,<LST>
PDN=PDN+1
EXPPVL NAM,\NAM'FL,\NAM'PR,\PDN,XXX
.ENDR
.ENDM EXPPVN
.MACRO EXPPVT LLCLST,DLCLST,DDMLST
PDVDF$ ,,LST ; LIST PDV OFFSETS AND FLAG VALUES
.RADIX 8
PDN=-1
EXPPVN <LLCLST>,LLC
EXPPVN <DLCLST>,DLC
EXPPVN <DDMLST>,DDM
.ENDM EXPPVT
.MACRO EXPSLN NAM,CNT,UNT,DLCLST
.IF DF NAM'CNT'UNT
SLN=SLN+1
EXPALL NAM,\CNT,\UNT,\SLN,<DLCLST>
.IFF
EXITUN=1
.ENDC
.ENDM EXPSLN
.MACRO EXPSLT DLCLST,DDMLST
SLTDF$ ,,LST ; LIST SLT OFFSETS AND FLAG WORD BIT VALUES
.LIST
;
; SYSTEM LINE TABLE
;
$SLTTB::
.NLIST
SLN=-1
.IRP NAM,<DDMLST>
CNT=-1
.REPT 8.
CNT=CNT+1
EXITUN=0
UNT=-1
.REPT 48.
UNT=UNT+1
EXPSLN NAM,\CNT,\UNT,<DLCLST>
.IIF EQ,EXITUN-1, .MEXIT
.ENDR
.ENDR
.ENDM
.LIST
$SLTND::
.NLIST
.ENDM EXPSLT
.MACRO EXPSTA SL,CHAN,CHANN
EXPSTS \SL,\CHAN,\S'SL'C'CHANN
.ENDM EXPSTA
.MACRO EXPSTN SLN
.IF GT SSL'SLN-1
.LIST
ST'SLN:
.NLIST
CHANN=-1
.REPT SSL'SLN
CHANN=CHANN+1
EXPSTA \SLN,\SSN'SLN,\CHANN
SSN'SLN=SSN'SLN+1
.ENDR
.LIST
.WORD -1 ; (D) ; END OF TABLE
.NLIST
.ENDC
.ENDM EXPSTN
.MACRO EXPSTS SL,CHAN,PDI
.LIST
.BYTE CHAN,PDI ; (D) ; SLN'SL: CHANNEL,LLC
.NLIST
.ENDM EXPSTS
.MACRO EXPSTT
.LIST
.IF NE STATBL
;
; STATION TABLE ORDERED BY SYSTEM LINE NUMBER
; ( INDEXED THROUGH $LLCTB )
;
.IFF
;
; NO STATIONS IN THIS CONFIGURATION
;
.ENDC
.NLIST
SLN=-1
.REPT SLTTOT
SLN=SLN+1
EXPSTN \SLN
.ENDR
.ENDM EXPSTT
.MACRO EXPTAB SLTN,PDVN
.LIST
$PDVTA::.WORD $PDVTB ; (A) ; ADDRESS OF PDV ADDRESS TABLE
$SLTTA::.WORD $SLTTB ; (A) ; ADDRESS OF SYSTEM LINE TABLE
$LLCTA::.WORD $LLCTB ; (A) ; ADDRESSS OF LLC REVERSE MAPPING TABLE
$PDVNM::.WORD PDVN'. ; (A) ; NUMBER OF PDV ENTRIES
$SLTNM::.WORD SLTN'. ; (A) ; NUMBER OF SYSTEM LINES
.NLIST
.ENDM EXPTAB
.MACRO EXPWRD NAMPL,NAMDL,CNTN,UNTN
.LIST
.WORD 0 ; (I) ; NAMPL LINE TABLE ADDRESS
.WORD 0 ; (I) ; NAMDL LINE TABLE BIAS
.WORD 0 ; (I) ; NAMDL LINE TABLE ( VIRTUAL ) ADDRESS
.BYTE CNTN ; (D) ; CONTROLLER NUMBER ( NAMPL'CNTN )
.BYTE UNTN ; (D) ; MULTIPLEXER UNIT NUMBER
.NLIST
.ENDM EXPWRD
.MACRO FALSE,COMP,OP1,OP2
$$GNCM COMP,<OP1>,<OP2>,1
.ENDM
.MACRO FALSEB,COMP,OP1,OP2
$$GNCM COMP,<OP1>,<OP2>,1,B
.ENDM
.MACRO FLUDF
INUSE = 0.
LUN = 1.
ADDR = 2.
FILOPE = 1.
DEVATT = 2.
ENTLEN = 4.
.ENDM
.MACRO FLUMDF
.MCALL CONFIG,SRDF,FDBDF$,FDRC$A,FDBK$A,FDOP$A,FDAT$A
.PSECT FLUDAT,RW,D,GBL,REL,OVR
CONFIG
SRDF
$$LUN = FILLUN-1
FDBS:
INFDBS: .REPT F$INLU
$$LUN = $$LUN+1
FDBDF$
FDRC$A FD.RWM
FDBK$A ,512.,,,,SRAST
FDOP$A $$LUN,,,FO.RD
.ENDR
IRFDBS: .REPT F$IRLU
$$LUN = $$LUN+1
FDBDF$
FDOP$A $$LUN,,,FO.RD
.ENDR
OTFDBS: .REPT F$OTLU
$$LUN = $$LUN+1
FDBDF$
FDRC$A FD.RWM
FDBK$A ,512.,,,,SRAST
FDOP$A $$LUN,,,FO.WRT
.ENDR
ORFDBS: .REPT F$ORLU
$$LUN = $$LUN+1
FDBDF$
FDAT$A R.VAR,FD.CR
FDOP$A $$LUN,,,FO.WRT
.ENDR
$$LUN = FILLUN-1
LUNDB:
ILUNDB: .REPT F$INLU
$$LUN = $$LUN+1
.BYTE 0
.BYTE $$LUN
.WORD FDBS+<S.FDB*<$$LUN-FILLUN>>
.ENDR
ILUNEN = .
IRLUDB: .REPT F$IRLU
$$LUN = $$LUN+1
.BYTE 0
.BYTE $$LUN
.WORD FDBS+<S.FDB*<$$LUN-FILLUN>>
.ENDR
IRLUEN = .
OLUNDB: .REPT F$OTLU
$$LUN = $$LUN+1
.BYTE 0
.BYTE $$LUN
.WORD FDBS+<S.FDB*<$$LUN-FILLUN>>
.ENDR
OLUNEN = .
ORLUDB: .REPT F$ORLU
$$LUN = $$LUN+1
.BYTE 0
.BYTE $$LUN
.WORD FDBS+<S.FDB*<$$LUN-FILLUN>>
.ENDR
ORLUEN = .
.PSECT
.ENDM
.MACRO F1$ LB,F
; LB - LABEL
; F - FIELD NUMBER(S)
.BYTE 19. ; OPCODE
.BYTE LB'C ; COUNT
LB: .BYTE F ; FIELD NUMBERS
LB'C= .-LB
.ENDM
.MACRO F11DF$
.ASECT
.=0
V.TRCT: .BLKW 1
V.IFWI: .BLKW 1
.IF DF,R$$11D
V.STD: .BLKW 1
.ENDC
V.FCB: .BLKW 2
V.IBLB: .BLKB 1
V.IBSZ: .BLKB 1
.BLKW 1
V.FMAX: .BLKW 1
V.WISZ: .BLKB 1
V.SBCL: .BLKB 1
V.SBSZ: .BLKW 1
V.SBLB: .BLKB 1
V.FIEX: .BLKB 1
.BLKW 1
.IF DF,R$$11M
V.VOWN: .BLKW 1
V.VPRO: .BLKW 1
V.VCHA: .BLKW 1
.IFTF
V.FPRO: .BLKW 1
.IFT
V.VFSQ: .BLKW 1
.IFF
.BLKW 1
.ENDC
V.FRBK: .BLKB 1
V.LRUC: .BLKB 1
.BLKW 1
.IF DF,R$$11D
V.LABL: .BLKB 12.
.ENDC
V.STAT: .BLKB 1
VC.IFW= 1
VC.BMW= 2
V.FFNU: .BLKB 1
V.LGTH:
.ASECT
.=0
F.LINK: .BLKW 1
.IF DF,R$$11D
F.FEXT: .BLKW 1
F.STD: .BLKW 1
.ENDC
F.FNUM: .BLKW 1
F.FSEQ: .BLKW 1
.BLKB 1
F.FSQN: .BLKB 1
F.FOWN: .BLKW 1
F.FPRO: .BLKW 1
F.UCHA: .BLKB 1
F.SCHA: .BLKB 1
F.HDLB: .BLKW 2
F.LBN: .BLKW 2
F.SIZE: .BLKW 2
F.NACS: .BLKB 1
F.NLCK: .BLKB 1
S.STBK=.-F.LBN
F.STAT:
F.NWAC: .BLKB 1
.BLKB 1
FC.WAC=100000
FC.DIR=40000
FC.CEF=20000
FC.FCO=10000
F.DREF: .BLKW 1
F.DRNM: .BLKW 1
.IF DF,R$$11M
F.FEXT: .BLKW 1
.ENDC
F.FVBN: .BLKW 2
F.LKL: .BLKW 1
F.LGTH:
.ASECT
.=0
W.CTL: .BLKW 1
WI.RDV=400
WI.WRV=1000
WI.EXT=2000
WI.LCK=4000
WI.DLK=10000
WI.EXL=40000
WI.BPS=100000
.IF DF,R$$11M
W.VBN: .BLKB 1
W.WISZ: .BLKB 1
.BLKW 1
W.FCB: .BLKW 1
.ENDC
.IF DF,R$$11D
W.FCB: .BLKW 1
W.STD: .BLKW 1
W.VBN: .BLKB 1
W.WISZ: .BLKB 1
.BLKW 1
.ENDC
W.LKL: .BLKW 1
W.RTRV:
.ASECT
.=0
L.LNK: .BLKW 1
L.WI1: .BLKW 1
.IF DF,R$$11D
L.STD: .BLKW 1
L.VB1: .BLKW 2
L.VB2: .BLKW 2
L.CNT: .BLKB 1
.BLKB 1
.IFF
L.VB1: .BLKB 1
L.CNT: .BLKB 1
.BLKW 1
.ENDC
L.LGTH:
.PSECT
.MACRO F11DF$
.ENDM F11DF$
.ENDM F11DF$
.MACRO F2$ LB,F,STRNG
; LB - LABEL
; F - FIELD NUMBER (ONLY 1 ACCEPTED)
; STRING - TEXT TO BE WRITTEN IN FIELD
.ENABL LSB
.BYTE 20. ; OPCODE
.BYTE LB'C ; COUNT
LB: .BYTE F ; FIELD NUMBER
.BYTE LB'C-2 ; SIZE OF TEXT
.ASCII STRNG
LB'C= .-LB
.DSABL LSB
.ENDM
.MACRO F3$ LB,STRING
.BYTE 21. ; OPCODE
.BYTE LB'C ; COUNT
LB: .ASCII STRING
LB'C= .-LB
.ENDM
.MACRO F4$ LB,FIELDS
; IF MORE THAN 1 FIELD IS USED, THEY MUST BE ENCLOSED IN <>'S
.BYTE 22. ; OPCODE
.BYTE LB'C ; COUNT
LB: .BYTE FIELDS
LB'C= .-LB
.ENDM
.MACRO F5$ LB,FIELDS
; IF MORE THAN 1 FIELD IS USED, THEY MUST BE ENCLOSED IN <>'S
.BYTE 23. ; OPCODE
.BYTE LB'C ; COUNT
LB: .BYTE FIELDS
LB'C= .-LB
.ENDM
.MACRO F6$ LB,A,F
; LB - LABEL
; A - AREA
; F - FIELD
.BYTE 24.,2 ; OPCODE, COUNT
.BYTE A ; AREA
.BYTE F ; FIELD NUMBER
.ENDM
.MACRO GCDF
IS$INZ = 1.
IS$INP = 2.
IS$SEL = 3.
IS$ABO = 4.
IS$FIN = 5.
.MACRO GCDF
.ENDM
.ENDM
.MACRO GCLDF$ AA,AF,BB,CC,DD,EE,FF,GG,HH
; MACRO CALLS
.IF NB AA ; ASSEMBLE FOR ROOT SECTION ONLY
.IF NB AF
EF=AF ; USE SPECIFIED EVENT FLAG
.IFF
EF=AA ; OR DEFAULT TO LUN
.ENDC
.PSECT $$$GCL ; NAME PSECT ( GENERATE DATA OUT OF LINE )
.MCALL GMCR$,WTSE$,QIO$,ALUN$,FDBDF$,FDOP$A,FDRC$A,NMBLK$,CSI$,SETF$
.GLOBL G.MCRB,Q.IOAE,Q.IOFN,Q.IOPL,Q.IOSB
$CLMCR::GMCR$ ; GET MCR COMMAND LINE DPB
$CLQIO::QIO$ 0,AA,EF,,$CLMCR+G.MCRB+72.,,<0,0> ; QIO DPB
$CLWEF::WTSE$ EF ; WAIT FOR FLAG DPB ( I/O COMPLETION )
$CLSEF::SETF$ EF ; SET FLAG DPB ( AFTER GET$ )
$CLASN::ALUN$ AA,TI,0 ; REASSIGN LUN DPB
$CLAST::.WORD 0 ; AST SERVICE ROUTINE POINTER
$PSHPT::.WORD $CLMCR+G.MCRB ; POINTER TO TOP OF STACK OF FILES
$CLEVL::.BYTE 0 ; START AT TI:/MCR LEVEL
.BYTE 0 ; FLAG FOR QUEUED FILES
$ASTLV::.BYTE 0 ; AST LEVEL ( 0 = NO ASTS PENDING )
.EVEN
CSI$ ; DEFINE C.SIZE
$CLCSI::.BLKB C.SIZE ; CSI CONTROL BLOCK
$CLFDB::FDBDF$ ; INPUT FILE FDB
FDOP$A AA,$CLCSI+C.DSDS,DFLTNB ; ASSIGN LUN
DFLTNB: NMBLK$ BB,CMD,,SY,0 ; DEFAULT VALUES
.IF NB CC
.IF NB DD
FDRC$A ,CC,DD-1 ; USER SPECIFIED BUFFER AND SIZE
.IFF
.ERROR IF USER SPECIFIES BUFFER, THEN SIZE MUST ALSO BE SPEC'ED
.ENDC
.IFF
.IF NB DD
FDRC$A ,BUFFER,DD-1 ; USER SPECIFIED SIZE OF INTERNAL BUFFER
.IFF
FDRC$A ,BUFFER,80. ; DEFAULT BUFFER AND SIZE
.ENDC
.ENDC
$CLBUF ==$CLFDB+F.URBD+2 ; POINTER TO DATA BUFFER
$CLSIZ ==$CLFDB+F.URBD ; BUFFER SIZE IN BYTES
$CLIOS ==$CLQIO+Q.IOSB ; GCL I/O STATUS BLOCK ( IOS/LENGTH )
DEFFLG=CL.CMT!CL.IND!CL.EXT!CL.ATT!CL.LCC ; DEFAULT FLAG VLAUES
.IF NB EE
.IF NB FF
$CLFLG::.WORD DEFFLG!EE&^C<FF>; USER DEFINED OPTIONS
.IFF
$CLFLG::.WORD DEFFLG!EE ; USE DESIRED EXTRAS
.ENDC
.IFF
.IF NB FF
$CLFLG::.WORD DEFFLG&^C<FF> ; USER DOESN'T WANT THESE OPTIONS
.IFF
$CLFLG::.WORD DEFFLG ; DEFAULT ALL THE WAY
.ENDC
.ENDC
.IF NB BB
$CLPMT::.WORD $CLPRM ; POINTER TO USER SPECIFIED DEFAULT PROMPT
.IFF
$CLPMT::.WORD 0 ; POINTER TO PROMPT STRING
.ENDC
.IF NB GG
$CLSRV::.WORD GG ; AST SERVICE SUBROUTINE
.IFF
$CLSRV::.WORD $CLRTN ; POINT AT A FAKE AST SERVICE ROUTINE
.ENDC
.IF B CC
.IF B DD
BUFFER: .BLKB 80. ; INTERNALLY GENERATED BUFFER
BUFLEN=79.
.IFF
BUFFER: .BLKB DD ; USER SPECIFIED BUFFER SIZE
BUFLEN=.-BUFFER-1
.ENDC
.ENDC
.EVEN
.IF NB BB
$CLPRM: .BYTE 12,15 ; LINE FEED, CARRIAGE RETURN
.ASCII "BB" ; USER DEFINED DEFAULT PROMPT STRING
.ASCIZ ">"
DFTLEN=.-$CLPRM
.ENDC
.EVEN
.PSECT HH ; BACK TO USER PSECT
.ENDC ; END OF ROOT SEGMENT DATA
.MCALL DIR$,GCL$ ; ALWAYS .MCALL THESE
; FLAG WORD BIT DEFINITIONS ( COMMAND LINE RETURNED W/O MODS UNLESS
; A MODIFIER BIT IS SET )
CL.CMT=1 ; ENABLE COMMENT LINES
CL.IND=2 ; ENABLE INDIRECTION INDICATOR "@"
CL.RNE=4 ; READ WITHOUT ECHOING
CL.EXT=10 ; ENABLE EXTENDED COMMAND LINE SUPPORT
CL.LCC=20 ; CONVERT TO UPPER CASE
CL.EIF=40 ; ECHO INDIRECT PROMPTS AND RESPONSES (IF CL.RNE CLEAR)
CL.OPN=100 ; LEAVE INDIRECT FILES OPEN
CL.ATT=200 ; ATTACH TI: WHENEVER POSSIBLE USING LUN ASSIGNED TO GCL
CL.AST=4000 ; ENABLE ASYCHRONOUS COMPLETION
CL.CAS=20000 ; INTERNAL STATE ( MULTIPLE ASTS IN PROGRESS )
CL.EXN=40000 ; INTERNAL STATE ( EXTENDED COMMAND LINE MODE )
CL.XIT=100000 ; INTERNAL STATE ( EXIT NEXT TIME WE GET TO LEVEL 0 )
.ENDM GCLDF$
.MACRO GCL$ AA,BB,CC,DD
.IF NB AA
MOV AA,$CLPMT ; USER SPECIFIED NEW PROMPT STRING
.ENDC
.IF NB BB
MOV BB,$CLBUF ; USER SPECIFIED DESTINATION
.IF B CC
.ERROR GCL$ MACRO "BUFFER SIZE" ARGUMENT MUST BE INCLUDED
.IFF
MOV CC,$CLSIZ ; SIZE OF USER SPECIFIED BUFFER
.ENDC
.ENDC
.IF NB DD
MOV DD,$CLIOS
.ENDC
CALL $GCLEP ; CALL SUBROUTINE
.ENDM GCL$
.MACRO GCMDF
.MCALL CONFIG
.PSECT GCDAT,RW,D,GBL,REL,OVR
MODULE = 0.
STATE = 2.
CONFIG
CBADDR: .WORD 0
CMDSOR: .WORD 0
WINDUP: .WORD 0
CTEXT:
NCLKIX = .-CTEXT
.IF NE FS$NET
.WORD CTNTCM
.ENDC
INCMIX = .-CTEXT
.IF NE FS$INT
.WORD CTINCM
.ENDC
CTEXTE = .-CTEXT
.IF NE FS$INT
CTINCM: .WORD GCINCM
ISTATE: .WORD 0
IBUFAD: .WORD 0
IBUFLN: .WORD 300.
ICMDNM: .WORD 1.
.ENDC
.IF NE FS$NET
CTNTCM: .WORD GCNTCM
NSTATE: .WORD 0
.ENDC
.PSECT
.ENDM
.MACRO GETAD ADDR,SIZE,BLOCK
.MCALL RAND
.IF NB BLOCK
MOV BLOCK,$RBLCK
.ENDC
RAND $GETAD,ADDR,SIZE
.ENDM
.MACRO GETRC ADDR,SIZE
.MCALL RAND
RAND $GETRC,ADDR,SIZE
.ENDM
.MACRO GETRV ADDR,SIZE
.MCALL RAND
RAND $GETRV,ADDR,SIZE
.ENDM
.MACRO GLNW$ LUN,EFN,IOST,AST,PRMLST
.MCALL QDPB$
.IF B <LUN>
QDPB$ 3,16670,<.MBXLU>,EFN,,IOST,AST,<PRMLST>
.IFF
QDPB$ 3,16670,LUN,EFN,,IOST,AST,<PRMLST>
.ENDC
.ENDM GLNW$
.MACRO GLNW$E LABEL,LUN,EFN,IOST,AST,PRMLST
.MCALL QDPB$E
QDPB$E LABEL,3,#16670,LUN,EFN,,IOST,AST,<PRMLST>
.ENDM GLNW$E
.MACRO GLNW$S LUN,EFN,IOST,AST,PRMLST
.MCALL QDPB$S
.IF B <LUN>
QDPB$S 3,#16670,<#.MBXLU>,EFN,,IOST,AST,<PRMLST>
.IFF
QDPB$S 3,#16670,LUN,EFN,,IOST,AST,<PRMLST>
.ENDC
.ENDM GLNW$S
.MACRO GLN$ LUN,EFN,IOST,AST,PRMLST
.MCALL QDPB$
.IF B <LUN>
QDPB$ 1,16670,<.MBXLU>,EFN,,IOST,AST,<PRMLST>
.IFF
QDPB$ 1,16670,LUN,EFN,,IOST,AST,<PRMLST>
.ENDC
.ENDM GLN$
.MACRO GLN$E LABEL,LUN,EFN,IOST,AST,PRMLST
.MCALL QDPB$E
QDPB$E LABEL,1,#16670,LUN,EFN,,IOST,AST,<PRMLST>
.ENDM GLN$E
.MACRO GLN$S LUN,EFN,IOST,AST,PRMLST
.MCALL QDPB$S
.IF B <LUN>
QDPB$S 1,#16670,<#.MBXLU>,EFN,,IOST,AST,<PRMLST>
.IFF
QDPB$S 1,#16670,LUN,EFN,,IOST,AST,<PRMLST>
.ENDC
.ENDM GLN$S
.MACRO GNDMDF
.MCALL NETDF$
NETDF$
.PSECT GNDDAT,RW,D,GBL,REL,OVR
IOSB: .WORD 0,0
GNDCNT: .WORD 0
CONBLK: .BLKB N.CBL
GNDSTA: .BYTE 0
LUNSAV: .BYTE 0
.PSECT
.ENDM
.MACRO GNDW$ LUN,EFN,IOST,AST,PRMLST,FLAG
.MCALL QDPB$,$GNDF$
$GNDF$ FLAG
.IF B <LUN>
QDPB$ 3,<$$$FLG>,<.MBXLU>,EFN,,IOST,AST,<PRMLST>
.IFF
QDPB$ 3,<$$$FLG>,LUN,EFN,,IOST,AST,<PRMLST>
.ENDC
.ENDM GNDW$
.MACRO GNDW$E LABEL,LUN,EFN,IOST,AST,PRMLST,FLAG
.MCALL QDPB$E,$GNDF$
$GNDF$ FLAG
QDPB$E LABEL,3,<#$$$FLG>,LUN,EFN,,IOST,AST,<PRMLST>
.ENDM GNDW$E
.MACRO GNDW$S LUN,EFN,IOST,AST,PRMLST,FLAG
.MCALL QDPB$S,$GNDF$
$GNDF$ FLAG
.IF B <LUN>
QDPB$S 3,<#$$$FLG>,<#.MBXLU>,EFN,,IOST,AST,<PRMLST>
.IFF
QDPB$S 3,<#$$$FLG>,LUN,EFN,,IOST,AST,<PRMLST>
.ENDC
.ENDM GNDW$S
.MACRO GND$ LUN,EFN,IOST,AST,PRMLST,FLAG
.MCALL QDPB$,$GNDF$
$GNDF$ FLAG
.IF B <LUN>
QDPB$ 1,<$$$FLG>,<.MBXLU>,EFN,,IOST,AST,<PRMLST>
.IFF
QDPB$ 1,<$$$FLG>,LUN,EFN,,IOST,AST,<PRMLST>
.ENDC
.ENDM GND$
.MACRO GND$E LABEL,LUN,EFN,IOST,AST,PRMLST,FLAG
.MCALL QDPB$E,$GNDF$
$GNDF$ FLAG
QDPB$E LABEL,1,<#$$$FLG>,LUN,EFN,,IOST,AST,<PRMLST>
.ENDM GND$E
.MACRO GND$S LUN,EFN,IOST,AST,PRMLST,FLAG
.MCALL QDPB$S,$GNDF$
$GNDF$ FLAG
.IF B <LUN>
QDPB$S 1,<#$$$FLG>,<#.MBXLU>,EFN,,IOST,AST,<PRMLST>
.IFF
QDPB$S 1,<#$$$FLG>,LUN,EFN,,IOST,AST,<PRMLST>
.ENDC
.ENDM GND$S
.MACRO GTCNT$ RQCNT
.MCALL $$GETB
$$GETB C.NSP(R4),RQCNT
.ENDM
.MACRO GTLLA$ LLA
.MCALL $$GETB
$$GETB C.NSP(R4),LLA
.ENDM
.MACRO GTSEG$ SEGSIZ
MOV C.FLG1(R4),SEGSIZ
.ENDM
.MACRO GTULA$ ULA
.MCALL $$GETB
$$GETB C.LIN(R4),ULA
.ENDM
.MACRO HDRDF$,L,B
.ASECT
.=0
H.CSP:'L'.BLKW 1
H.HDLN:'L'.BLKW 1
H.EFLM:'L'.BLKW 2
H.CUIC:'L'.BLKW 1
H.DUIC:'L'.BLKW 1
H.IPS:'L'.BLKW 1
H.IPC:'L'.BLKW 1
H.ISP:'L'.BLKW 1
H.ODVA:'L'.BLKW 1
H.ODVL:'L'.BLKW 1
H.TKVA:'L'.BLKW 1
H.TKVL:'L'.BLKW 1
H.PFVA:'L'.BLKW 1
H.FPVA:'L'.BLKW 1
H.RCVA:'L'.BLKW 1
H.EFSV:'L'.BLKW 1
H.FPSA:'L'.BLKW 1
H.WND:'L'.BLKW 1
H.DSW:'L'.BLKW 1
H.FCS:'L'.BLKW 1
H.FORT:'L'.BLKW 1
H.OVLY:'L'.BLKW 1
H.VEXT:'L'.BLKW 1
H.SPRI:'L'.BLKB 1
H.NML:'L'.BLKB 1
H.RRVA:'L'.BLKW 1
.BLKW 3
H.GARD:'L'.BLKW 1
H.NLUN:'L'.BLKW 1
H.LUN:'L'.BLKW 2
.=0
W.BPCB:'L'.BLKW 1
W.BLVR:'L'.BLKW 1
W.BHVR:'L'.BLKW 1
W.BATT:'L'.BLKW 1
W.BSIZ:'L'.BLKW 1
W.BOFF:'L'.BLKW 1
W.BFPD:'L'.BLKB 1
W.BNPD:'L'.BLKB 1
W.BLPD:'L'.BLKW 1
W.BLGH:'L'
.PSECT
.MACRO HDRDF$ X,Y
.ENDM
.ENDM
.MACRO HLDDF$
.ASECT
.=0
.BLKW 1 ; LINK WORD
H$OVR: .BLKW 1 ; OVERLAY ENTRY POINT ADDRESS
H$ERX: .BLKB 1 ; ERROR INDEX
H$ERC: .BLKB 1 ; ERROR CODE
H$NODE: .BLKW 3 ; NODE NAME IN ASCII
; CONNECT PARAMETERS
H$TASK: .BLKW 2 ; TASK NAME
EB$LEN = .+2
H$PBAS: .BLKW 1 ; PARTITION BASE ADDRESS (0=MAPPED)
H$PSIZ: .BLKW 1 ; PARTITION SIZE (BLOCKS MAPPED, BYTES UNMAPPED)
H$GP: .BLKB 1 ; SLD2 G/P SUPPORT (0=NO)
H$TYP: .BLKB 1 ; TRANSFER TYPE (0=LOAD, 1=CKP READ, 2=CKP)
; WORD FIELDS
H$ACSB: .BLKW 2 ; CONNECT ACCEPT IOSB
H$DISK: .BLKW 1 ; DISK BLOCKS REMAINING TO BE TRANSFERRED
H$LBN: .BLKW 2 ; LOGICAL BLOCK NUMBER
H$LUN: .BLKW 1 ; FIRST LUN BLOCK LBN
H$MBX: .BLKW 1 ; COPY OF FIRST WORD OF MAILBOX
H$NET: .BLKW 1 ; NETWORK BLOCKS REMAINING TO BE TRANSFERRED
H$STAT: .BLKW 1 ; STATUS
HS$ACC = 1 ; CONNECTION HAS BEEN ACCEPTED
HS$DIO = 2 ; DISK I/O'S STILL PENDING
HS$DR1 = 4 ; FIRST DISK READ HAS BEEN DONE
HS$DSC = 10 ; LINK HAS BEEN DISCONNECTED
HS$ERR = 20 ; ERROR OF SOME SORT HAS OCCURRED
HS$FIL = 40 ; "HTASK$" CAME FROM MAPPING FILE, NOT TASK
HS$GP = 100 ; "HTASK$" CAME FROM GENERAL-PURPOSE LIST
HS$LB1 = 200 ; DISK LUN BLOCK 1 TRANSFER STILL PENDING
HS$LB2 = 400 ; DISK LUN BLOCK 2 TRANSFER STILL PENDING
HS$LFX = 1000 ; LUN FIXING NEEDED
HS$NIO = 2000 ; NETWORK I/O'S STILL PENDING
HS$NL1 = 4000 ; NETWORK LUN BLOCK 1 TRANSFER STILL PENDING
HS$NL2 = 10000 ; NETWORK LUN BLOCK 2 TRANSFER STILL PENDING
HS$TRM = 20000 ; LINK HAS BEEN TERMINATED
HS$ACT = HS$DIO ! HS$LB1 ! HS$LB2 ! HS$NIO ! HS$NL1 ! HS$NL2
; BYTE FIELDS
H$DLU: .BLKB 1 ; DISK LUN NUMBER
H$IOC: .BLKB 1 ; ACTIVE I/O COUNT
H$NBF: .BLKB 1 ; BUFFERING LEVEL
H$NLU: .BLKB 1 ; NETWORK LUN NUMBER
.EVEN
H$EMB: .BLKB EB$LEN ; ERROR MESSAGE BLOCK
H$LEN: .BLKW 1 ; CONTROL BLOCK ADDRESS (LENGTH OF FIXED PART)
H$BUF: .BLKW 1 ; BUFFER ADDRESS
H$IOSB: .BLKW 2 ; IOSB
.PSECT
.ENDM HLDDF$
.MACRO HLDTB$ TYPE
.MCALL HNODE$,HTASK$
.MACRO LABEL$ A,B
A'B:
.ENDM LABEL$
.MACRO THRED$ A,B
.IF DF A'B
.WORD A'B
.IFF
.WORD 0
.ENDC
.ENDM THRED$
.NODES=0
.TASKS=0
.IIF NDF,.GPTSK, .GPTSK=0
.IF NB TYPE
.IF IDN TYPE,<TASK>
.PSECT .HTSK
$HTSK:: CLR R4
JMP $FFS
.IFF
.ERROR ; ILLEGAL ARGUMENT
.ENDC
.ENDC
.PSECT .HTAB
.HLDTB::.RAD50 "HLD"
.WORD .GPTSK
THRED$ ND,\.NODES
.ENDM HLDTB$
.MACRO HNODE$ NODNAM
LABEL$ ND,\.NODES
.NODES=.NODES+1
.TASKS=.TASKS+1
THRED$ ND,\.NODES
THRED$ TK,\.TASKS
.ASCII "NODNAM"
.NCHR .SIZE,NODNAM
.IF GT .SIZE-6
.ERROR ; NODE NAME TOO LONG
.ENDC
.REPT 6-.SIZE
.ASCII " "
.ENDR
.ENDM HNODE$
.MACRO HOSDF
ENTLEN = 11.
TABBEG = 7.
.ENDM
.MACRO HOSMAC
.MCALL CONFIG
CONFIG
NODLEN = 6.
.MACRO HOSBEG DEFHOS
HOSDB::
NODENT DEFHOS
.ENDM
.MACRO HOSEND
.REPT F$EXHO
HOSENT
.ENDR
HOSDBE::
.EVEN
.ENDM
.MACRO HOSENT DEVICE,CONT,LINE,STAT,HOST
.IF NB DEVICE
.BYTE DEVICE,CONT,LINE,STAT
NODENT <HOST>
.IFF
.BYTE -1,0,0,0
NODENT
.ENDC
.ENDM
.MACRO NODENT NAME
.NCHR $$TEMP,<NAME>
.BYTE $$TEMP
.ASCII /'NAME'/
$$TEMP = NODLEN-$$TEMP
.IF LT $$TEMP
.ERROR
.IFF
.REPT $$TEMP
.BYTE 0
.ENDR
.ENDC
.ENDM
.ENDM
.MACRO HTASK$ TSKNAM,FILNAM,TYPE
.IIF EQ,.NODES, .GPTSK=.GPTSK+1
LABEL$ TK,\.TASKS
.TASKS=.TASKS+1
THRED$ TK,\.TASKS
.RAD50 "TSKNAM"
.NCHR .SIZE,TSKNAM
.IF GT .SIZE-6
.ERROR ; TASK NAME TOO LONG
.ENDC
.IF LE .SIZE-3
.WORD 0
.ENDC
.IF B TYPE
.BYTE 0
.IFF
.IF EQ .NODES
.IF IDN TYPE,<MAP>
.BYTE 0
.IFF
.IF IDN TYPE,<UNM>
.BYTE 1
.IFF
.ERROR ; ILLEGAL THIRD ARGUMENT
.ENDC
.ENDC
.IFF
.IF IDN TYPE,<LUN>
.BYTE 1
.IFF
.ERROR ; ILLEGAL THIRD ARGUMENT
.ENDC
.ENDC
.ENDC
.ASCIZ "FILNAM"
.EVEN
.ENDM HTASK$
.MACRO HWDDF$,L,B
MPCSR='B'177746
MPAR='B'172100
PIRQ='B'177772
PR0='B'0
PR1='B'40
PR4='B'200
PR5='B'240
PR6='B'300
PR7='B'340
PS='B'177776
SWR='B'177570
TPS='B'177564
.IF DF E$$EAE
AC='B'177302
MQ='B'177304
SC='B'177310
.ENDC
.IF DF M$$MGE
KDSAR0='B'172360
KDSDR0='B'172320
KISAR0='B'172340
KISAR5='B'172352
KISAR6='B'172354
KISAR7='B'172356
KISDR0='B'172300
KISDR6='B'172314
KISDR7='B'172316
SISDR0='B'172200
UDSAR0='B'177660
UDSDR0='B'177620
UISAR0='B'177640
UISAR4='B'177650
UISAR5='B'177652
UISAR6='B'177654
UISAR7='B'177656
UISDR0='B'177600
UISDR4='B'177610
UISDR5='B'177612
UISDR6='B'177614
UISDR7='B'177616
UBMPR='B'170200
CMODE='B'140000
PMODE='B'30000
SR0='B'177572
SR3='B'172516
.ENDC
FE.EXT='B'1
FE.MUP='B'2
FE.EXV='B'4
FE.DRV='B'10
FE.PLA='B'20
FE.CAL='B'40
FE.PKT='B'100
FE.EXP='B'200
FE.LSI='B'400
FE.MXT='B'40000
FE.NLG='B'100000
.MACRO HWDDF$ X,Y
.ENDM
.ENDM
.MACRO IBUFDF
B$TLEN = 8.
B$NLEN = 6.
B$CLEN = 82.
B$PLEN = 128.
B$PNTR = 0.
B$CPTR = B$PNTR+2
B$CLLN = B$CPTR+2
B$CRNM = B$CLLN+2
B$PPTR = B$CRNM+2
B$PCNT = B$PPTR+2
B$TYPE = B$PCNT+2
B$TCNT = B$TYPE+2
B$TNAM = B$TCNT+2
B$ECNT = B$TNAM+B$TLEN
B$ENAM = B$ECNT+2
B$CBUF = B$ENAM+B$NLEN
B$PBUF = B$CBUF+B$CLEN
B$STA = B$PBUF+B$PLEN
B$NPTR = B$STA+2
B$LINK = B$NPTR+2
B$BCNT = B$LINK+2
B$BTYP = B$BCNT+2
B$BSTA = B$BTYP+2
B$BADR = B$BSTA+2
B$BLEN = B$BADR+2
B$TBUF = B$BLEN+2
.ENDM
.MACRO IF
$$PUSH $$STNM
$$STNM=$$PRST+1
$$PRST=$$STNM
$$PUSH $$TRNM
$$TRNM=77
.ENDM
.MACRO INHIB$
.IF DF L$$SI1
MFPS -(SP) ; SAVE CURRENT PRIORITY
MTPS #PR7 ;;; DISABLE INTERRUPTS
.IFF
MOV @#PS,-(SP) ; SAVE CURRENT PRIORITY
MOVB #PR7,@#PS ;;; DISABLE INTERRUPTS
.ENDC
.ENDM
.MACRO INTCFG
YES = 1
NO = 0
O$TELL = YES ;AP0001
O$TRNS = YES ;AP0001
O$DROP = YES ;AP0001
O$LPAR = YES ;AP0001
O$LBCK = YES ;AP0001
O$NOFF = YES ;AP0001
I$HELP = YES
I$STEX = O$TELL
I$STST = YES
I$STLG = YES ;AP0001
I$STHS = YES
I$STPW = YES
I$STLN = YES
I$STPC = YES
I$STLL = YES
.IF DF R$$11D!I$$AS
I$STCX = NO
.IFF
I$STCX = YES
.ENDC
I$CLHS = YES
I$CLPW = YES
I$CLLN = YES
I$CLPC = YES
.IF DF R$$11D!I$$AS
I$CLCX = NO
.IFF
I$CLCX = YES
.ENDC
I$LDRM = YES
I$LDVI = YES
I$LDKN = NO
I$LPRM = YES
I$LPLN = YES
I$SHCT = YES
I$SHST = YES
I$SHEX = YES ;AP0001
I$SHQU = NO
I$SHLK = NO
I$ZERO = YES
I$EXIT = YES
I$SET = I$STEX+I$STST+I$STLG+I$STHS+I$STPW+I$STLN+I$STPW+I$STLL+I$STCX
I$CLR = I$CLHS+I$CLPW+I$CLLN+I$CLPC+I$CLCX
I$LOAD = I$LDRM+I$LDVI+I$LDKN
I$LOOP = I$LPRM+I$LPLN
I$SHOW = I$SHCT+I$SHST+I$SHEX+I$SHQU+I$SHLK
K$CEX = NO
K$CLR = NO
K$CNT = NO
K$CNTS = NO
K$CSR = NO
K$DSAB = NO
K$ECHO = NO
K$ENAB = NO
K$EXEC = NO
K$EXIT = NO
K$FDX = NO
K$FOR = NO
K$FROM = NO
K$HDX = NO
K$HELP = NO
K$HOST = NO
K$INCR = NO
K$KNOW = NO
K$LENG = NO
K$LINE = NO
K$LINS = NO
K$LNKS = NO
K$LOAD = NO
K$LOCL = NO
K$LOGG = NO
K$LOOP = NO
K$LBCK = NO
K$MAIN = NO
K$MIXD = NO
K$NAME = NO
K$NONE = NO
K$NMBR = NO
K$OBJ = NO
K$OFF = NO
K$ON = NO
K$ONES = NO
K$OPER = NO
K$PAR = NO
K$PART = NO
K$PASS = NO
K$PRI = NO
K$PROC = NO
K$QUE = NO
K$RCEV = NO
K$REMT = NO
K$REMS = NO
K$SET = NO
K$SHOW = NO
K$SHUT = NO
K$STA = NO
K$STAT = NO
K$TELL = O$TELL
K$TO = NO
K$TOP = NO
K$XMIT = NO
K$VECT = NO
K$VIA = NO
K$WITH = NO
K$ZERO = NO
K$ZROS = NO
.MACRO CMDFLG FLAG,KYFLGS
.IF NE FLAG
.IRP KEYFLG,<KYFLGS>
K$'KEYFLG=K$'KEYFLG+1
.ENDM
.ENDC
.ENDM
CMDFLG I$HELP,<HELP>
CMDFLG I$STEX,<EXEC,SET>
CMDFLG I$STST,<KNOW,LINE,LINS,LOCL,LBCK,MAIN,OFF,ON,SET,SHUT,STA>
CMDFLG I$STLG,<KNOW,LINE,LINS,LOCL,LOGG,MAIN,OFF,ON,OPER,SET,STA>
CMDFLG I$STHS,<FOR,HOST,SET>
CMDFLG I$STPW,<PASS,RCEV,SET,XMIT>
CMDFLG I$STLN,<CSR,ECHO,FDX,HDX,LINE,PRI,SET,TOP,VECT>
CMDFLG I$STPC,<ECHO,INCR,PART,PROC,SET,TOP>
CMDFLG I$STLL,<DSAB,ENAB,LBCK,LOCL,SET>
CMDFLG I$STCX,<CEX,SET>
CMDFLG I$CLHS,<CLR,FOR,HOST>
CMDFLG I$CLPW,<CLR,PASS,RCEV,XMIT>
CMDFLG I$CLLN,<CLR,LINE>
CMDFLG I$CLPC,<CLR,PROC>
CMDFLG I$CLCX,<CEX,CLR>
CMDFLG I$LDRM,<FROM,HOST,LOAD,NAME,NONE,NMBR,PAR,PASS,REMT,VIA>
CMDFLG I$LDVI,<FROM,HOST,LOAD,NAME,NONE,NMBR,PAR,PASS,VIA>
CMDFLG I$LDKN,<KNOW,LOAD>
CMDFLG I$LPRM,<CNT,LENG,LOOP,MIXD,REMT,ONES,WITH,ZROS>
CMDFLG I$LPLN,<CNT,LENG,LINE,LOOP,MIXD,ON,ONES,WITH,ZROS>
CMDFLG I$SHCT,<CNTS,KNOW,LINE,LINS,LOCL,REMT,REMS,SHOW,TO>
CMDFLG I$SHST,<KNOW,LINE,LINS,LOCL,REMT,REMS,SHOW,STAT,TO>
CMDFLG I$SHEX,<EXEC,SHOW>
CMDFLG I$SHQU,<SHOW,QUE>
CMDFLG I$SHLK,<LNKS,NMBR,OBJ,REMT,SHOW>
CMDFLG I$ZERO,<KNOW,LINE,LINS,LOCL,REMT,REMS,ZERO>
CMDFLG I$EXIT,<EXIT>
.ENDM
.MACRO ITBDF$ L,B,SYSDEF
.IF DF A$$TRP
.MCALL PKTDF$
PKTDF$
.ENDC
.ASECT
.=0
X.LNK:'L' .BLKW 1
X.JSR:'L' JSR R5,@#0
X.PSW:'L' .BLKB 1
.BLKB 1
X.ISR:'L' .BLKW 1
X.FORK:'L'
.BLKW 1
.BLKW 1
.BLKW 1
.BLKW 1
.IF DF M$$MGE
X.REL:'L' .BLKW 1
.ENDC
X.DSI:'L' .BLKW 1
X.TCB:'L' .BLKW 1
.IF NB SYSDEF
.IF DF A$$TRP
.BLKW 1
X.AST:'L' .BLKB A.PRM
.ENDC
X.VEC:'L' .BLKW 1
X.VPC:'L' .BLKW 1
X.LEN:'L'
.ENDC
.PSECT
.MACRO ITBDF$ X,Y,Z
.ENDM ITBDF$
.ENDM ITBDF$
.MACRO I1$ LB,FLAGS,FNKYS
.BYTE 25. ; OPCODE
.BYTE LB'C ; COUNT
LB: .BYTE FLAGS
.IF B,<FNKYS>
.IFF
.BYTE FNKYS ; FUNCTION KEYS ENABLED
.ENDC
LB'C= .-LB
.ENDM
.MACRO I2$ LB
.BYTE 26. , 0 ; OPCODE, COUNT
.ENDM
.MACRO I3$ LB
.BYTE 27. , 0 ; OPCODE, COUNT
.ENDM
.MACRO I4$ LB
.BYTE 28. , 0 ; OPCODE, COUNT
.ENDM
.MACRO I5$ LB,KEY,FIELDS
; IF MORE THAN 1 FIELD IS TO BE MODIFIED, THEY MUST BE ENCLOSED IN <>'S
.BYTE 29. ; OP CODE
.BYTE LB'C ; COUNT
LB: .BYTE KEY ; FUNCTION-KEY
.BYTE FIELDS
LB'C= .-LB
.ENDM
.MACRO I6$ LB,KEY,FIELDS
; IF MORE THAN 1 FIELD IS TO BE MODIFIED, THEY MUST BE ENCLOSED IN <>'S
LB: .BYTE 30. ; OPCODE
.BYTE LB'C ; COUNT
1$: .BYTE KEY ; FUNCTION-KEY
.BYTE FIELDS
LB'C= .-1$
.ENDM
.MACRO JMPPROC NAME
$$GEN1 ,JMP,NAME
.ENDM
.MACRO KDPDF$ LST
.IIF NB <LST>, .LIST
.MCALL TMPDF$
TMPDF$
.ASECT
;---------------------------------------------------------------;
; K M C - 1 1 D E V I C E L I N E T A B L E ;
;---------------------------------------------------------------;
.=0
CMIRI: .INT1 $CDIRI ; INPUT INTERRUPT CALL SEQUENCE
CMIPR: .PRI ; INPUT DEVICE PRIORITY FOR $INTSX
CMORI: .INT2 $CDORI ; OUTPUT INTERRUPT CALL SEQUENCE
CMOPR: .PRI ; OUTPUT DEVICE PRIORITY FOR $INTSX
CMCSR: .CSR ; KMC-11 CSR ADDRESS [SEL 0]
CMSWT: .BLKW 1 ; KMC-11 CONTROL SWITCHES
CMIQH: .LSTHD ; KMC-11 INPUT INTERRUPT REQUEST QUEUE
CMKQH: .LSTHD ; KMC-11 KILL I/O IN PROGRESS QUEUE
CMLEN:: ; KMC-11 DEVICE TABLE LENGTH
;---------------------------------------------------------------;
; D U P - 1 1 D E V I C E L I N E T A B L E ;
;---------------------------------------------------------------;
.=0
CTLTW: .BLKW 1 ; LONG TIMER WORD
CTCSR: .SECSR ; DUP-11 CSR ADDRESS [SEL 0]
CTFLG: .BLKW 1 ; DUP-11 CONTROL FLAGS
CTDUP: .UNB ; DUP-11 NUMBER (0-17 OCTAL)
CTSLN: .SLNB ; DUP-11 SYSTEM LINE NUMBER
CTCHR: .DVCHA ; DUP-11 LINE CHARACTERISTICS (TWO WORDS)
CTLOG: .BLKW 1 ; EVENT LOGGING DESTINATION
CTCTL: .BLKW 1 ; STATION ADDRESS + CONTROL-IN FLAGS
CTITQ: .LSTHD ; INACTIVE TRANSMIT CCB QUEUE
CTTA1: .BLKW 1 ; TRANSMIT CCB ACTIVE ON DESCRIPTOR #1
CTTD1: .BLKW 3 ; TRANSMIT BUFFER DESCRIPTOR #1
CTTA2: .BLKW 1 ; TRANSMIT CCB ACTIVE ON DESCRIPTOR #2
CTTD2: .BLKW 3 ; TRANSMIT BUFFER DESCRIPTOR #2
CTRA1: .BLKW 1 ; RECEIVE CCB ACTIVE ON DESCRIPTOR #1
CTRD1: .BLKW 3 ; RECEIVE BUFFER DESCRIPTOR #1
CTRA2: .BLKW 1 ; RECEIVE CCB ACTIVE ON DESCRIPTOR #2
CTRD2: .BLKW 3 ; RECEIVE BUFFER DESCRIPTOR #2
.IF DF X$$ITO
CTITM: .BLKB 1 ; TEMP STORAGE TIMER MUX.
.ENDC
.EVEN
CTLEN:: ; DUP-11 DEVICE LINE TABLE LENGTH
.PSECT
.IIF NB <LST>, .NLIST
.ENDM KDPDF$
.MACRO KZTDF$
.MCALL TMPDF$
TMPDF$
.ASECT
.=0
;
; COMIOP MAIN LINE TABLE, FOR COMIOP KMC/DZ
;
CZDLT: ;COMIOP LINE TABLE
CMIRI: .INT1 ;INPUT RELATED INTERUPT RE-VECTOR
.PRI ;INPUT INTERUPT PRIORITY
CMORI: .INT2 ;OUTPUT RELATED INTERUPT RE-VECTOR
.PRI ;OUTPUT INTERUPT PRIORITY
CMCSR: .CSR ;ADDRESS OF COMIOP SEL 0
CMSWT: .BLKB 1 ;COMIOP CONTROL SWITCHES
CMARB: .BLKB 1 ;ASSIGN DUMMY RECEIVE BUFFER COUNT
CMIQH: .LSTHD ;COMIOP INPUT INTERUPT REQUEST QUEUE
CMKQH: .LSTHD ;COMIOP KILL I/O IN PROGRESS QUEUE
CMDRB: .BLKW 3 ;DUMMY RECEIVE BUFFER DESCRIPTOR
;
; LIST OF ADDRESSES OF EXTERNAL TABLES, FORM = "MAPPING,DISPLACEMENT"
;
CMETA: ;BASE FOR EXTERNAL TABLE ADDRESS LIST
CMCWT: .CORE ;COMIOP CORE WORK TABLE ADDRESS
CMPMT: .BIN ;DDCMP MODE TABLE ADDRESS
.IF NE P$$V52
CMVMT: .BIN ;VT52 CONTROL MODE TABLE ADDRESS
.ENDC
CMNET= <.-CMETA>/4 ;NUMBER OF EXTERNAL TABLES IN LIST
;
; LIBRARY CALLS
;
CMCRC: .LIBR ;STCRC ROUTINE
CMLEN= .
CTCLT: ;START OF DZ TABLES (48 ALLOWED)
;
; DZ CHANNEL SPECIFIC LINE TABLE OFFSETS, FOR COMIOP/DZ
;
.=0
CTLTW: .BLKW 1 ;LONG TIMER WORD
CTCSR: .SECSR ;ADDRESS OF DZ11 CSR
CTLIN: .UNB ;LINE NUMBER (0-57 OCTAL)
CTSLN: .SLNB ;SYSTEM LINE NUMBER
CTTFL: .BLKW 1 ;TRANSMIT AND CONTROL FLAGS
CTITQ: .BLKW 1 ;QUEUE OF INACTIVE TRN CCB'S
CTATQ: .BLKW 1 ;QUEUE OF ACTIVE TRN CCB'S
CTTD1: .BLKW 6 ;TRN BUFFER DESCRIPTOR 1
CTTD2: .BLKW 6 ;TRN BUFFER DESCRIPTOR 2
CTRFL: .BLKB 1 ;RECEIVE FLAGS
CTHDR: .BLKB 1 ;DDCMP HEADER CHARACTER
CTARQ: .BLKW 1 ;QUEUE OF ACTIVE RCV CCB'S
CTRD1: .BLKW 3 ;RCV BUFFER DESCRIPTOR 1
CTRD2: .BLKW 3 ;RCV BUFFER DESCRIPTOR 2
CTDLP: .DVCHA ;CURRENT DEVICE LINE PARAMETERS
CTDFP: .DVCHA ;DEFAULT DEVICE LINE PARAMETERS
CTLOG: .BLKW 1 ;EVENT LOGGING DESTINATION
CTLEN= .
.PSECT
.ENDM KZTDF$
.MACRO LBLDF$ L,B
.ASECT
.=0
R$LNAM:'L'.BLKW 2
R$LSA:'L' .BLKW 1
R$LHGV:'L'.BLKW 1
R$LMXV:'L'.BLKW 1
R$LLDZ:'L'.BLKW 1
R$LMXZ:'L'.BLKW 1
R$LOFF:'L'.BLKW 1
R$LWND:'L'.BLKW 1
R$LSEG:'L'.BLKW 1
R$LFLG:'L'.BLKW 1
R$LDAT:'L'.BLKW 3
R$LSIZ:'L'.BLKW 0
LD$ACC='B'100000
LD$RSV='B'040000
LD$REL='B'000004
.=0
L$BTSK:'L'.BLKW 2
L$BPAR:'L'.BLKW 2
L$BSA:'L' .BLKW 1
L$BHGV:'L'.BLKW 1
L$BMXV:'L'.BLKW 1
L$BLDZ:'L'.BLKW 1
L$BMXZ:'L'.BLKW 1
L$BOFF:'L'.BLKW 1
L$BWND:'L'.BLKW 1
L$BSEG:'L'.BLKW 1
L$BFLG:'L'.BLKW 1
L$BDAT:'L'.BLKW 3
L$BLIB:'L'.BLKW <7.*<R$LSIZ/2>>+1
L$BPRI:'L'.BLKW 1
L$BXFR:'L'.BLKW 1
L$BEXT:'L'.BLKW 1
L$BSGL:'L'.BLKW 1
L$BHRB:'L'.BLKW 1
L$BBLK:'L'.BLKW 1
L$BLUN:'L'.BLKW 1
.BLKW <512.-.>/2
L$BASG:'L'.BLKW 0
TS$PIC='B'100000
TS$NHD='B'040000
TS$ACP='B'020000
TS$PMD='B'010000
TS$SLV='B'004000
TS$NSD='B'002000
TS$NET='B'001000
TS$PRV='B'000400
TS$CMP='B'000200
TS$CHK='B'000100
TS$RES='B'000040
.PSECT
.MACRO LBLDF$ X,Y
.ENDM
.ENDM
.MACRO LCBDF$,L,B
.ASECT
.=0
L.LNK:'L' .BLKW 1
L.NAM:'L' .BLKW 1
L.UNIT:'L' .BLKB 1
L.TYPE:'L' .BLKB 1
L.UCB:'L' .BLKW 1
L.ASG:'L' .BLKW 1
L.LGTH='B'.-L.LNK
.PSECT
.MACRO LCBDF$,X,Y
.ENDM
.ENDM
.MACRO LDDF
NODLEN = 6.
SIDLEN = 16.
BPSLEN = 8.
FILLEN = 30.
PARLEN = 30.
FDSLEN = 6.+15.
.ASECT
.=0
MSBFHD: .BLKW 1
CMLKNM: .BLKW 1
LSLKNM: .BLKW 1
BLKCNT: .BLKW 1
FINCNT: .BLKW 1
BLKADR: .BLKW 1
DATADR: .BLKW 1
DATCNT: .BLKW 1
BEGADR: .BLKW 2
TRAADR: .BLKW 2
FILDSC: .BLKW FDSLEN
STATE: .BLKB 1
SBSTAT: .BLKB 1
RETCOD: .BLKB 1
OPTION: .BLKB 1
LUN: .BLKB 1
BOODEV: .BLKB 1
CPU: .BLKB 1
REQPRO: .BLKB 1
SOFTID: .BLKB SIDLEN+1
TGNODE: .BLKB NODLEN+1
SVNODE: .BLKB NODLEN+1
LINE: .BLKB 4
BOOPAS: .BLKB BPSLEN+1
INFILE: .BLKB FILLEN+1
SYSPAR: .BLKB PARLEN+1
PHASE: .BLKB 1
FLAGS: .BLKB 1
TRACNT: .BLKB 1
CTXTLN = .
.PSECT
CONFIG = 1.
LINK = 2.
BOOT = 3.
LOAD = 4.
FINISH = 5.
ALBF = 1.
OPLK = 2.
TRMS = 3.
RCMS = 4.
CLFL = 5.
CLLK = 6.
RLBF = 7.
RDBK = 8.
RCMA = 9.
OPIN = 10.
WAIT = 11.
CLEAN = 12.
STBK = 13.
FILINI = 1.
LNKINI = 2.
TRAIMA = 3.
CLEUP = 4.
BLKLEN = 512.
OPSYS = 2.
MAXTRA = 3.
IMASEG = 256.
BADBIT = 300
NOTNAM = 001
SRVINC = 002
BPSPRQ = 010
TRIBOO = 004
FILINC = 020
PARINC = 040
RCVPND = 001
SETADR = 002
ALLBUF = 004
RDBLK = 010
LOACOM = 020
.MACRO LDDF
.ENDM
.ENDM
.MACRO LDFDF
ENTLEN = 6.
NAMLEN = 2.
NAMADR = 4.
.ENDM
.MACRO LDFMAC
SECLOA = 0.
TERLOA = 1.
.MACRO LDFBEG
LDFDB::
.ENDM
.MACRO LDFEND
LDFDBE::
.EVEN
.ENDM
.MACRO LDFENT PROTYP,DEVTYP,NAMSTR
.BYTE PROTYP,DEVTYP
.NCHR $$TEMP,<NAMSTR>
.WORD $$TEMP
.PSECT LDFSTR,RW,D,GBL,REL,OVR
$$TEMP =.
.ASCII /NAMSTR/
.PSECT
.WORD $$TEMP
.ENDM
.ENDM
.MACRO LEDLT$ L,B
.MCALL TMPDF$
TMPDF$
;
; NURD LP11 DEVICE DRIVER LINE TABLE TEMPLATE
;
.ASECT
.=0
L.TIMC:'L .BLKB 1 ;TWO BYTE TIMER ENTRY, CURRENT VALUE
L.TIMI:'L .BLKB 1 ; AND INITIAL TIMER VALUE
L.CALL:'L .INT ;INTERRUPT DISPATCH CALL
L.PRI:'L .PRI ;SCHEDULING PRIORITY
;DDM LEVEL DATA BASE
;ORDER FOR THIS SECTION IS CRITICAL
L.CSR:'L .CSR ;ONE WORD CSR POINTER
L.ASTS:'L .BLKW 1 ;ACTION STATUS BIT MAP
LA.CLO ='B 1 ;CLOSED
LA.PAU ='B 2 ;PAUSED
LA.ADN ='B 4 ;ABORT WHEN DONE WITH DDM QUEUE
LA.ABO ='B 10 ;ABORTING
LA.ABE ='B 20 ;CLEAR ABORT ON EOF (ELSE ON CLEAR)
LA.CPC ='B 40 ;CLEAR PAGE COUNTER ENABLE
LA.AKR ='B 100 ;ACKNOWLEDGE REQUESTED
LA.ERR ='B 200 ;AN ERROR HAS BEEN NOTED
LA.EOF ='B 400 ;CURRENT MESSAGE HAS EOF
LA.EOR ='B 1000 ;END OF RECORD ENCOUNTERED
LA.CTL ='B 2000 ;CONTROL MESSAGE TO RETURN
LA.TMO ='B 4000 ;DEVICE TIME OUT
LA.PLE ='B 10000 ;PAGE LIMIT ERROR OCCURRED
L.PUBP:'L .BLKW 2 ;BUFFER PTR DOUBLEWORD
L.PUBS:'L .BLKW 1 ;BUFFER SIZE DOWN COUNTER
L.DDMQ:'L .LSTHD ;CCB'S QUEUED FOR OUTPUT
L.PGCT:'L .BLKW 1 ;PHYSICAL PAGE COUNT
L.PGLM:'L .BLKW 1 ;PAGE LIMIT REGISTER
L.PLNC:'L .BLKB 1 ;PHYSICAL LINE COUNT
L.HUNG:'L .BLKB 1 ;DEVICE HUNG TIMER
;MISCELLANEOUS ITEMS
.EVEN
L.SLN:'L .SLNW ;DEVICE SYSTEM LINE NUMBER
L.IOCN:'L .BLKW 1 ;OUTSTANDING IO COUNT
L.IOWT:'L .BLKW 1 ;CLOSE WAIT FLAG = CLOSE CCB
;CONTROL MESSAGE PROCESSING DATA BASE
.EVEN
L.CMSQ:'L .LSTHD ;CONTROL MESSAGE QUEUE
L.RECO:'L .BLKB 1 ;CONTROL MESSAGE RESOURCE ERROR FLAG
L.RATT:'L .BLKB 1 ;PENDING ATTENTION MESSAGE FLAG - REASON CODE
L.CAPP:'L .BLKB 1 ;PENDING CAPABILITIES MESSAGE FLAG
;DATA & FEATURES PROCESSING DATA BASE
.EVEN
L.CSMP:'L .BLKW 1 ;CHARACTER SET MAP ADDRESS
L.LNCT:'L .BLKB 1 ;LINE COUNTER
L.COCT:'L .BLKB 1 ;COLUMN COUNTER
.EVEN
L.VFUA:'L .BLKW 1 ;ADDRESS OF VFU MAP IN USE
L.DLCQ:'L .LSTHD ;CCB'S QUEUED INTO DLC
L.MFLG:'L .BLKB 1 ;CURRENT NURD MESSAGE FLAGS
L.DMSQ:'L .BLKB 1 ;LAST GOOD/CURRENT DATA SEQ NUMBERS
L.DMSG:'L .BLKB 1 ;DATA MESSAGE SEGMENT COUNT BYTE
L.DMSS:'L .BLKB 1 ;DATA MSG CURRENTSEGMENT SIZE
L.CAPN:'L .BLKB 1 ;CURRENT INDEX INTO CAPABILITIES LIST
L.NFSP:'L .BLKB 1 ;NO. FEATURE SPECS IN CURRENT MSG
.EVEN
L.DMCR:'L .BLKW 1 ;CHAR REPEAT COUNT, 2 BYTES USED AS WORD
L.DMAD:'L .BLKW 2 ;DATA MSG ADDRESS DOUBLEWORD (PTR)
L.DMBS:'L .BLKW 1 ;DATA MSG BUFFER SIZE
L.PLBQ:'L .LSTHD ;FREE PHYSICAL BUFFER QUEUE
L.PLBP:'L .BLKW 2 ;CHARACTER POINTER DOUBLEWORD
L.PLBS:'L .BLKW 1 ;BUFFER SIZE DOWN COUNTER
L.PBRC:'L .BLKB 1 ;TEMP BYTE
.EVEN
L.MSGQ:'L .LSTHD ;OUTGOING MSG QUEUE
L.MSGA:'L .BLKW 2 ;CURRENT MSG BUFFER ADDRESS DOUBLEWORD
L.MSGS:'L .BLKW 1 ;CURRENT MSG BUFFER SIZE
;DATA/FEATURES PROCESS HYBER CONTEXT
L.DWAK:'L .BLKB 1 ;WAKE CONDITION
DWAKS ='B 1 ;WAKE WHEN NEW MESSAGE SEGMENT RECEIVED
DWAKP ='B 2 ;WAKE WHEN PHYSICAL BUFFER RETURNED TO QUEUE
DWAKT ='B 3 ;WAKE ON CLOCK TOCK
DWAKR ='B 4 ;WAKE WHEN RESUME CONTROL FCN DONE
L.DTXL:'L .BLKB 1 ;NO. WORDS ON STACK AT SLEEP TIME
.EVEN
L.DFSP:'L .BLKW 1 ;STACK ORIGIN
DTXTSZ ='B 16. ;DATA/FEATURES PROCESS CONTEXT ALLOCATED
L.DTXT:'L .BLKW DTXTSZ ;CONTEXT BLOCK FOR DA/FEATURES PROCESS
;FEATURE CRUFT
L.CFET:'L ;LP11 COMMON FEATURE LIST
.BLKB 1 ;NUMBER OF COMMON FEATURES
.BLKB 1 ;FEATURE FE.DAT SUPPORTED
.BLKB 1 ;FEATURE FE.SER NOT SUPPORTED
.BLKB 1 ;FEATURE FE.LCR SUPPORTED
.BLKB 1 ;FEATURE FE.FWD SUPPORTED
.BLKB 1 ;FEATURE FE.EOF NOT SUPPORTED
.BLKB 1 ;FEATURE FE.DVT NOT SUPPORTED
.BLKB 1 ;FEATURE FE.TRN SUPPORTED
.BLKB 1 ;FEATURE FE.FNM NOT SUPPORTED
.BLKB 1 ;FEATURE FE.DWD SUPPORTED
LCFETL ='B .-L.CFET-1
L.DFET:'L .BLKB 1 ;NUMBER OF DEVICE SPECIFIC FEATURES
.BLKB 1 ;FEATURE 129 NOT DEFINED
.BLKB 1 ;FEATURE LP.HT SUPPORTED
.BLKB 1 ;FEATURE LP.SFC SUPPORTED
.BLKB 1 ;FEATURE LP.OVP NOT SUPPORTED
.BLKB 1 ;FEATURE LP.CVF NOT SUPPORTED
.BLKB 1 ;FEATURE LP.FCC SUPPORTED
.BLKB 1 ;FEATURE LP.VFR NOT SUPPORTED
.BLKB 1 ;FEATURE LP.CHS SUPPORTED
.BLKB 1 ;FEATURE LP.PLE SUPPORTED
.BLKB 1 ;FEATURE LP.OPV NOT SUPPORTED
LDFETL ='B .-L.DFET-1
;FEATURE BLOCKS
F.FSB ='B 0 ;(BM)FEATURES STATUS BYTE
FB.CL0 ='B 0 ;CLASS 0 FEATURE => <BIT> FORM
FB.CL1 ='B 1 ;CLASS 1 FEATURE => <CNT><...> FORM
FB.WRD ='B 2 ;FEATURE IS A WORD AND
; F.FCV IS A DLT OFFSET TO IT
FB.STR ='B 4 ;FEATURE IS A STRING
;F.FCV IS THE LENGTH
;CURRENT VALUE BEGINS AT F.FCV+1
;STANDARD VALUE(IF ANY) BEGINS AT F.FCV+1+(F.FCV)
FB.STE ='B 10 ;STANDARD VALUE EXISTS
FB.SST ='B 20 ;STANDARD IS SET
FB.CP ='B 40 ;CHANGE PENDING
FB.CA ='B 100 ;CHANGE ALLOWED
F.FCV ='B 1 ;FEATURE CURRENT VALUE BYTE
F.FSV ='B 2 ;FEATURE STANDARD VALUE BYTE
LE.DAT:'L ;DATA MODE
.BLKB 1
LEDATS ='B FB.CL1!FB.SST!FB.STE ;INITIAL STATUS OF LE.DOF LE.DAT
.BLKB 1 ;ASCII
.BLKB 1 ;ASCII IS STD
;LE.SER:'L ;SERIAL NUMBER
LE.LCR:'L ;LOWER CASE RAISE
.BLKB 1
LELCRS ='B FB.CL0!FB.CA ;INITIAL STATUS OF LE.LCR
.BLKB 1 ;OFF
LE.FWD:'L ;FORM WIDTH
.BLKB 1
.BLKB 1
;LE.EOF: ;EOF RECOGNITION
;LE.DVT:'L ;DEVICE TYPE
LE.TRN:'L ;RECORD TRUNCATION
.BLKB 1
LETRNS ='B FB.CL0!FB.CA!FB.SST!FB.STE ;INITIAL STATUS OF LE.TRN
.BLKB 1 ;OFF
.BLKB 1 ;OFF IS STD
;LE.FNM:'L ;FORM NAME
LE.DWD:'L ;DEVICE WIDTH
.BLKB 1
.BLKB 1 ;STD WIDTH
; DEVICE SPECIFIC FEATURES
LE.HT:'L ;HORIZONTAL TAB
.BLKB 1
LEHTS ='B FB.CL1!FB.SST!FB.STE ;INITIAL STATUS OF LE.HT
.BLKB 1 ;STD TABS ON
.BLKB 1
LE.SFC:'L ;STD VFU
.BLKB 1
LESFCS ='B FB.CL0!FB.SST!FB.STE ;INITIAL STATUS OF LE.SFC
.BLKB 1 ;ON
.BLKB 1
;LE.OVP:'L ;OVERPRINT LIMIT
;LE.CVF:'L ;CUSTOM VFU
LE.FCC:'L ;FORTRAN CARRIAGE CONTROL
.BLKB 1
LEFCCS ='B FB.CL0!FB.CA!FB.SST!FB.STE ;INITIAL STATUS OF LE.FCC
.BLKB 1 ;OFF
.BLKB 1
;LE.VFR:'L ;VARIABLE FORMS RATIO
LE.CHS:'L ;CHARACTER SET
.BLKB 1
.BLKB 1 ;96 CHAR ASCII
LE.PLE:'L ;PAGE LIMIT ENFORCEMENT
.BLKB 1
LEPLES ='B FB.CL1!FB.WRD!FB.CA!FB.SST!FB.STE ;INITIAL STATUS OF LE.PLE
.BLKB 1 ;PAGE COUNTER
.BLKB 2 ;STD = 0 => OFF
;LE.OPV:'L ;OPTICAL VFU
.PSECT
.ENDM LEDLT$
.MACRO LFDF
LF.OPN = 33*400
LF.CLS = 34*400+210
LF.RD = 32*400
LF.WRT = 31*400
LF.OFF = 36*400+10
LF.ON = 36*400+0
LF.RAS = 36*400+20
.MACRO LFDF
.ENDM
.ENDM
.MACRO LGDF
.ASECT
.=0
MESBUF: .BLKW 1 ;MESSAGE BUFFER
NODE: .BLKW 1 ;ADDRESS OF NODE NAME
COMP: .BLKW 1 ;ADDRESS OF COMPONENT NAME
EVNT: .BLKW 1 ;EVENT NUMBER
DTBEG: .BLKW 1 ;BEGIN ADDRESS OF LOG DATA
DTEND: .BLKW 1 ;END ADDRESS OF LOG DATA
LOGD: .BLKW 1 ;LOG DATA BASE ENTRY ADDRESS
FLAGS: .BLKW 1 ;TARGET FLAGS
SEQN: .BLKB 1 ;SEQUENCE NUMBER
STATE: .BLKB 1 ;LOG DATA PROCESSOR STATE
OLDLUN: .BLKB 1 ;LUN FROM LOGICAL LINK
.EVEN
CTXTLN: .BLKW 0 ;LENGTH OF CONTEXT BLOCK
.PSECT
;LOG PROCESSOR STATES:
START = 0 ; INITIALIZE
PROC = 1 ; PROCESS REQUESTS
FINISH = 2 ; CLEAN UP
.MACRO LGDF
.ENDM
.ENDM
.MACRO LIDMDF
.PSECT LIDDAT,RW,D,GBL,REL,OVR
.MCALL DEVDF
DEVDF
L.DNAD = 0.
L.DNLN = 2.
L.DLGL = 3.
L.DTYP = 4.
L.MCTL = 5.
L.MLIN = 6.
L.MSTA = 7.
L.ELEN = 8.
DV$NET = 1.
DV$LOD = 2.
.MCALL DVTMDF
.MACRO XXX NAM,DSP,ARG3,ARG4,ARG5,ARG6,ARG7
A'NAM': .ASCII /'DSP'/
L'NAM' = .-A'NAM'
.ENDM XXX
DVTMDF XXX
.EVEN
LIDBLK:
.MACRO XXX NAM,DSP,NUM,FLG,CTL,UNT,STA
.WORD A'NAM'
.BYTE L'NAM','FLG','NAM','CTL','UNT','STA'
.ENDM XXX
DVTMDF XXX
LIDEND:
.PSECT
.ENDM
.MACRO LIMDF
.ASECT
.=0
STATE: .BLKW 1
LOCK: .BLKB 1
LENGTH: .BLKB 1
LINEID: .BLKB 16.
.PSECT
.ENDM
.MACRO LIMMDF
.PSECT LIMDAT,RW,D,GBL,REL,OVR
LIMBLK:
.WORD 0
LOCK: .BYTE 0
LENGTH: .BYTE 0
LINEID: .BLKB 16.
.PSECT
.ENDM
.MACRO LKUDF
INUSE = 0.
LUN = 1.
ENTLEN = 2.
MASTER = 1.
SLAVE = 2.
.ENDM
.MACRO LKUMDF
.MCALL CONFIG,SRDF
CONFIG
SRDF
.PSECT LKUDAT,RW,D,GBL,REL,OVR
RCEVCB: .WORD 0
LKUTAB:
$$LUN = LNKLUN
.REPT F$LKLU
.BYTE 0
.BYTE $$LUN
$$LUN = $$LUN+1
.ENDR
LKUEND:
.PSECT
.ENDM
.MACRO LLC$DF NAM,FLG,PRI,NLL,AA,BB
NAM'PR=PRI ; PRIORITY
NAM'FL=FLG ; FLAG
NAM'CHN=NLL ; NUMBER OF CHANNELS TO ALLOCATE
NAM'CNT=0 ; DYNAMIC REFERENCE COUNT ( CROSS-CHECK )
.ENDM LLC$DF
.MACRO LLWDF$,L,B
.ASECT
.=0
W.CTL:'L' .BLKW 1 ;(RESERVED FOR RSX)
W.TASK:'L' .BLKW 1 ;POINTER TO TASK (TCB/ATL ADDRESS)
W.STAT:'L' .BLKB 1 ;STATUS
W.MODC:'L' .BLKB 1 ;MODIFY FLOW CONTROL COUNT
W.CCBU:'L' .BLKB 1 ;NUMBER OF TRANSMIT CCB'S IN USE
W.LUN:'L' .BLKB 1 ;TASK LUN #
W.LLA:'L' .BLKB 1 ;NSP'S LOGICAL LINK ADDRESS (INDEX)
W.ULA:'L' .BLKB 1 ;INTERFACE'S USER LINK ADDRESS (INDEX)
W.SEGZ:'L' .BLKW 1 ;TRANSMIT SEGMENT SIZE
W.PIO:'L' .BLKW 1 ;PENDING I/O PACKET ADDRESS
W.MBOX:'L' .BLKW 1 ;POINTER TO TASK MAILBOX
W.CSND:'L' .BLKW 1 ;POINTER TO CURRENT TRANSMIT I/O PACKET
W.SNDQ:'L' .BLKW 2 ;TRANSMIT QUEUE LISTHEAD
W.RCVQ:'L' .BLKW 2 ;RECEIVE QUEUE LISTHEAD
W.CINT:'L' .BLKW 1 ;POINTER TO CURRENT INTERRUPT I/O PACKET
W.INTQ:'L' .BLKW 2 ;INTERRUPT QUEUE LISTHEAD
;
W.WBL='B'.-W.CTL ;LENGTH OF LOGICAL LINK WINDOW BLOCK
.PSECT
;+
; WINDOW BLOCK STATUS WORD
;-
WS.VE1='B'1 ;VERSION 1 INTERFACE (0-VERSION 2)
WS.EST='B'2 ;LINK IS ESTABLISHED
WS.DIC='B'4 ;DISCONNECT ALREADY CLEANED UP FOR TASK
WS.MOD='B'10 ;NEEDS FLOW CONTROL MODIFICATION
WS.STA='B'20 ;NEEDS CCB FOR TRANSMIT
WS.INT='B'40 ;NEEDS CCB FOR INTERRUPT
WS.DIP='B'100 ;DISCONNECT IN PROGRESS
WS.KIP='B'200 ;KILL (I/O RUNDOWN) IN PROGRESS
.MACRO LLWDF$,X,Y
.ENDM LLWDF$
.ENDM LLWDF$
.MACRO LNDMDF
.PSECT LNDDAT,RW,D,GBL,REL,OVR
NODNUM: .WORD 0
NAMLEN: .WORD 6
NODNAM: .ASCII /MANILA/
.PSECT
.ENDM
.MACRO LNUDF
INUSE = 0.
LUN = 1.
ENTLEN = 2.
.ENDM
.MACRO LNUMDF
.MCALL CONFIG,SRDF
CONFIG
SRDF
.PSECT LNUDAT,RW,D,GBL,REL,OVR
LNUTAB:
$$LUN = LINLUN
.REPT F$LNLU
.BYTE 0
.BYTE $$LUN
$$LUN = $$LUN+1
.ENDR
LNUEND:
.PSECT
.ENDM
.MACRO LOGDF
.ASECT
.=0
L.GTYP: .BLKB 0 ; LOGGING TYPE:
LG.OPR = 0 ; OPERATOR
LG.MNT = 1 ; MAINTENANCE
L.GSW: .BLKW 1 ; SWITCHES:
LG.ON = 100000 ; LOGGING IS ON.
LG.CNS = 001000 ; CONSOLE TARGET SPECIFIED.
LG.MND = 000400 ; MASTER NODE TARGET SPECIFIED.
; 000377 ; (LOGGING TYPE)
L.GCNS: .BLKW 2 ; CONSOLE DEVICE.
L.GSEQ: .BLKB 1 ; NEXT SEQUENCE NUMBER TO ASSIGN.
L.GMND: .BLKB 7. ; MASTER NODE NAME
.EVEN
L.GLEN: .BLKW 0 ; LENGTH OF LOG TARGET ENTRY.
.PSECT
.MACRO LOGDF
.ENDM
.ENDM
.MACRO LOGMAC
.MCALL CONFIG,LOGDF
CONFIG
LOGDF
.MACRO LOGBEG
LOGDB::
.ENDM
.MACRO LOGEND
LOGDBE::
.ENDM
.MACRO LOGENT TYPE,ON,MASTER,CONSOL
$$TEMP=0
.IIF NB <ON>,$$TEMP=$$TEMP+LG.ON
.IIF NB <MASTER>,$$TEMP=$$TEMP+LG.MND
.IIF NB <CONSOL>,$$TEMP=$$TEMP+LG.CNS
.WORD 'TYPE'+$$TEMP
DVCNAM CONSOL
.BYTE 0
NODNAM MASTER
.EVEN
.ENDM
.MACRO NODNAM NAME
STRENT 6.,NAME
.ENDM
.MACRO STRENT MAX,TEXT
.NCHR $$TEMP,<TEXT>
.BYTE $$TEMP
.ASCII /'TEXT'/
$$TEMP = MAX-$$TEMP
.IF LT $$TEMP
.ERROR
.IFF
.REPT $$TEMP
.BYTE 0
.ENDR
.ENDC
.ENDM
.MACRO DVCNAM NAME
.IF NB <NAME>
$$CNT=0
$$TEMP=0
.IRPC ..C,<NAME>
$$CNT=$$CNT+1
.IF LE <$$CNT-2>
.ASCII \'..C'\
.IFF
$$TEMP=$$TEMP*8.+'..C'
.ENDC
.ENDR
.WORD $$TEMP
.IFF
.WORD 0,0
.ENDC
.ENDM
.ENDM
.MACRO LSDF
BPSLEN = 8.
SIDLEN = 16.
.ASECT
.=0
CMLKNM: .BLKW 1
CMBFAD: .BLKW 1
COUNT: .BLKW 2
MEMADR: .BLKW 2
LNBFAD: .BLKW 1
LNBFLN: .BLKW 1
LNBFMX: .BLKW 1
DATADR: .BLKW 1
DATLEN: .BLKW 1
RESADR: .BLKW 2
REQLEN: .BLKW 1
TRACB: .BLKW 1
ORIGCB = TRACB
RECCB: .BLKW 1
EXTCB = RECCB
STATE: .BLKB 1
RETCOD: .BLKB 1
OPTION: .BLKB 1
FLAGS: .BLKB 1
LINE: .BLKB 4
LUN: .BLKB 1
PROTYP: .BLKB 1
LOANUM: .BLKB 1
BOOPAS: .BLKB BPSLEN+1
RETRYS: .BLKB 1
CPUTYP: .BLKB 1
BOODEV: .BLKB 1
REQPRO: .BLKB 1
REQLOA = REQPRO
SOFTID: .BLKB SIDLEN+1
CTXTLN = .
.PSECT
START = 1.
LOAD = 2.
DUMP = 3.
LOOP = 4.
BOOT = 5.
FINISH = 6.
DIALOG = 001
XFRSNT = 002
EODREC = 004
RCMSPN = 010
TRMSPN = 020
RCBKPN = 040
TRBKPN = 100
MXRTRY = 5.
MXWAIT = 30.
SCBFLN = 550.
RGBFLN = 300.
DUMSEG = 256.
.MACRO LSDF
.ENDM
.ENDM
.MACRO L1$ LB
.BYTE 16.,0 ; OP CODE, COUNT
.ENDM
.MACRO L2$ LB,VA,STRING
.BYTE 17. ; OP CODE
.BYTE LB'C ; COUNT
LB:
.IF B,VA
.BYTE V.N ; DEFAULT
.IFF
.BYTE VA
.ENDC
.ASCII STRING
LB'C= .-LB
.ENDM
.MACRO L3$ LB,MSG
.BYTE 18. ; OP CODE
.BYTE 1 ; COUNT (TO WRITE MESSAGE)
.BYTE MSG ; MESSAGE NUMBER
.ENDM
.MACRO L4$ LB
.BYTE 18. ; OP CODE (SAME AS L3$)
.BYTE 0 ; COUNT (ENTER ERROR MODE ONLY)
.ENDM
.MACRO MAP BIAS
.IF DF M$$MGE
.MCALL HWDDF$
HWDDF$
MOV BIAS,KISAR6
.ENDC
.ENDM
.MACRO MAPXDF
.MACRO ADDBIA ADDR
.IF DF R$$11D!I$$AS
IF
FALSE LE ADDR
THEN
ADD #AB,ADDR
ENDIF
.ENDC
.ENDM ADDBIA
.MACRO MAPEXM BIAS,VADDR,APRADR,APRCON
.IF DF R$$11M
.IF DF M$$MGE
.IF NB APRCON
IF ; TASK'S FIRST APR NOT ALREADY SAVED
FALSE SET APRADR
THEN
SAVSTK <R0>
MOV $HEADR,R0
MOV H.ISP(R0),R0
BIC #017777,R0
IF ; KISAR5 IS THE TASK'S FIRST APR
FALSE NE R0,#5*20000
THEN
MOV #KISAR5,APRADR
RESSTK <R0>
ELSE
MOV #KISAR5-2,APRADR
RESSTK <R0>
ENDIF
MOV @APRADR,APRCON
ENDIF
.ENDC
MOV BIAS,@APRADR
MOV VADDR,R0
BIC #7*20000,R0
IF ; KISAR5 IS THE TASK'S FIRST APR
FALSE NE APRADR,#KISAR5
THEN
BIS #5*20000,R0
ELSE
BIS #4*20000,R0
ENDIF
.IFF
MOV VADDR,R0
.ENDC
.ENDC
.IF DF R$$11D!I$$AS
IF
FALSE SET APRCON
THEN
MOV #77406,-(SP)
MOV BIAS,-(SP)
CALL ..SPD3
MOV (SP)+,APRCON
MOV (SP)+,APRADR
ENDIF
MOV VADDR,R0
BIC #7*20000,R0
BIS #3*20000,R0
.ENDC
.ENDM MAPEXM
.MACRO MAPBAK APRADR,APRCON
.IF DF M$$MGE
IF ; TASK'S FIRST APR WAS SAVED
FALSE CLEAR APRADR
THEN
;MAPPED RSX-11M
.IF DF R$$11M
MOV APRCON,@APRADR
.ENDC
.IF DF R$$11D!I$$AS
MOV APRADR,-(SP)
MOV APRCON,-(SP)
CALL ..SPD3
CMP (SP)+,(SP)+
.ENDC
CLR APRADR
CLR APRCON
ENDIF
.ENDC
.ENDM MAPBAK
.ENDM MAPXDF
.MACRO MBXDF$,L,B
.ASECT
.=0
M.NEXT:'L' .BLKW 1 ;POINTER TO NEXT MAILBOX
M.TASK:'L' .BLKW 1 ;POINTER TO TASK (TCB/ATL ADDRESS)
M.STAT:'L' .BLKB 1 ;STATUS
M.NAST:'L' .BLKB 1 ;NUMBER OF AST'S NEEDED
M.USE:'L' .BLKB 1 ;COUNT OF ACTIVE LOGICAL LINKS
M.MAX:'L' .BLKB 1 ;MAXIMUM # OF LOGICAL LINKS ALLOWED
M.SPA:'L' .BLKW 1 ;USER NETWORK DATA AST ADDRESS
M.MAIL:'L' .BLKW 2 ;NETWORK DATA (MAIL) QUEUE LISTHEAD
;
M.MBL='B'.-M.NEXT ;MAILBOX BLOCK LENGTH
.PSECT
;+
; MAILBOX BLOCK STATUS WORD
;-
MS.AST='B'10 ;NEEDS NETWORK DATA AST
MS.CIP='B'200 ;KILL (CLOSE) IN PROGRESS
;+
; PENDING CONNECT AND MOP EVENT CCB FUNCTION CODE MODIFIER BYTE
;-
CX.GDQ='B'1 ;CCB HAS BEEN IN GENERAL DELIVERY QUEUE
CX.REQ='B'2 ;TASK ASSOCIATED WITH CCB NEEDS REQUESTING
CX.UNL='B'4 ;CCB MARKED AS DEQUEUED
.MACRO MBXDF$,X,Y
.ENDM MBXDF$
.ENDM MBXDF$
.MACRO MDCDF$,L,B,LST
.IIF NB,LST, .LIST
.PSECT
; MODEM CONTROL SERVICE BITS
MC.CAR='B' 1 ; CARRIER DETECT
MC.DSR='B' 2 ; DATA SET READY DETECT
MC.RNG='B' 4 ; RING DETECT
MC.CCBNA='B' 200 ; CCB NOT ALLOCATED ON PREV SCAN
; STATUS BITS (BYTE 0 IN LINE TABLE)
MS.SYNC='B' 1 ; SYNCHRONOUS DEVICE
MS.SCAN='B' 2 ; DEV W/DISABLED MODEM INTERRUPTS
.IF NB LST
.NLIST
.IFF
.MACRO MDCDF$,X,Y
.ENDM MDCDF$
.ENDC
.ENDM MDCDF$
.MACRO MEDF
.ASECT
.=0
MPRM: .BLKW 1
MLEN: .BLKW 1
MDAT: .BLKW 1
MCNT: .BLKW 1
STATE: .BLKB 1
RETCOD: .BLKB 1
CTXTLN = .
.PSECT
SETUP = 1.
PROC = 2.
FINISH = 3.
.MACRO MEDF
.ENDM
.ENDM
.MACRO MOPDF
M$LDTR = 0.
M$LOAD = 2.
M$DUMP = 4.
M$EMOP = 6.
M$RQPG = 8.
M$RQLD = 10.
M$MRUN = 12.
M$DATA = 14.
M$PARM = 20.
M$LOOP = 24.
M$ASCD = 28.
MF$LOA = 000
MF$DUM = 002
MF$LOO = 004
.MACRO MOPDF
.ENDM
.ENDM
.MACRO MTADF$,L,B
.ASECT
.=0
V.TCNT:'L' .BLKW 1
V.NXT:'L' .BLKW 1
V.MVL:'L' .BLKW 1
V.UVL:'L' .BLKW 1
V.ATL:'L' .BLKW 1
V.UCB:'L' .BLKW 1
V.RVOL:'L' .BLKB 1
V.MOU:'L' .BLKB 1
V.TCHR:'L' .BLKW 1
V.SEQN:'L' .BLKW 1
V.SECN:'L' .BLKW 1
V.TPOS:'L' .BLKB 1
V.PSTA:'L' .BLKB 1
V.TIMO:'L' .BLKW 1
V.STS:'L' .BLKW 3
V.SPAR:'L' .BLKW 1
V.BLKL:'B' .BLKW 1
V.RECL:'B' .BLKW 1
V.FNAM:'L' .BLKW 3
V.FTYP:'L' .BLKW 1
V.FVER:'L' .BLKW 1
V.CDAT:'L' .BLKW 2
V.EDAT:'L' .BLKW 2
V.BLKC:'L' .BLKW 2
V.RTYP:'L' .BLKB 1
V.FATT:'L' .BLKB 1
V.WIND:'L' .BLKW 6
S.VSCB=.
.PSECT
.ASECT
.=0
W.CTL: .BLKW 1
V.WINC=V.WIND+W.CTL
.PSECT
.ASECT
.=0
.IF DF R$$11M
M.NXT:'L' .BLKW 1
.ENDC
M.UIC:'L' .BLKW 1
M.CH:'L' .BLKW 1
M.PROT:'L' .BLKW 1
.IF NDF R$$11M
.BLKW 2
M.NXT:'L' .BLKW 1
.ENDC
M.RVOL:'L' .BLKB 1
M.STAT:'L' .BLKB 1
M.VIDP:'L' .BLKW 1
M.UCB:'L' .BLKW 1
S.MVL=.
.PSECT
.ASECT
.=0
L.NXT:'L' .BLKW 1
L.VOL1:'L' .BLKB 1
L.VOL2:'L' .BLKB 1
L.VID1:'L' .BLKB 6
L.VID2:'L' .BLKB 6
S.UVL=.
.PSECT
VM.OLD ='B' 200
VM.BYP ='B' 100
VM.ULB ='B' 40
VM.FSC ='B' 20
VM.EXC ='B' 10
VP.RM ='B' 2
VP.WM ='B' 4
VP.SM ='B' 10
VP.MOU ='B' 20
VP.RWD ='B' 40
VP.VFY ='B' VP.RWD
VP.POS ='B' 100
VP.TO=1
WI.RDV ='B' 400
WI.WRV ='B' 1000
WI.EXT ='B' 2000
WI.LCK ='B' 4000
MS.VER ='B' 200
MS.RID ='B' 1
MS.NMO ='B' 2
MS.TMO ='B' 4
MS.EXP ='B' 10
MO.OVR ='B' 1
MO.UIC ='B' 2
MO.PRO ='B' 4
MO.160 ='B' 10
.ENDM
.MACRO NABO$ ULA
.MCALL $$MOVB,$$QUE
$$MOVB ULA,C.NSP
$$MOVB $CMPDV,C.NSP+1
BIS #100000,C.NSP(R4)
$$QUE NT$ABO,FC.XME
.ENDM
.MACRO NACC$ ULA,FLAGS,SNDCNT,SEGSIZ
.MCALL $$MOV,$$MOVB,$$QUE
MOV C.NSP(R4),-(SP)
MOV C.LIN(R4),C.NSP(R4)
MOV (SP)+,C.LIN(R4)
$$MOVB ULA,C.NSP
$$MOV FLAGS,C.STS
$$MOV SNDCNT,C.CNT1
$$MOV SEGSIZ,C.FLG1
$$QUE NT$ACC,FC.RCE
.ENDM
.MACRO NCAC$ REQID,PASSWD,ACNT,OPDAT
.MCALL $$STST
.=.-<N.OPTD+16.-N.RQDL>
$$STST <REQID>,16.
$$STST <PASSWD>,8.
$$STST <ACNT>,16.
$$STST <OPDAT>,16.
.ENDM
.MACRO NCBK$ NODE,SEGSIZ,DSTOBJ,DSTID,SRCOBJ,SRCID
.MCALL $$STST,$$SNOD,$$SET,$$STID
$$SNOD NODE,6
$$SET SEGSIZ
$$STID DSTOBJ,DSTID
$$STID SRCOBJ,SRCID
$$SET
.BLKB N.PASL-N.RQID
$$SET
.BLKB N.ACTL-N.PASS
$$SET
.BLKB N.OPDL-N.ACNT
$$SET
.BLKB 16.
.ENDM
.MACRO NCDF
NS$INZ = 1.
NS$NIC = 2.
NS$RES = 3.
NS$DAT = 4.
NS$ABO = 5.
NS$FIN = 6.
IE$RME = -1
IE$DVE = -2
.ENDM
.MACRO NCON$ ULA,FLAGS,BLKDAT,RCVDAT
.MCALL $$MOV,$$MOVB,$$BUFD,$$QUE
$$MOVB $CMPDV,C.NSP+1
$$MOVB ULA,C.NSP
$$MOV FLAGS,C.STS
$$BUFD 1,BLKDAT
$$BUFD 2,RCVDAT
CLRB C.LIN(R4)
$$QUE NT$CON,FC.XME
.ENDM
.MACRO NDAT$ LLA,FLAGS,DATA
.MCALL $$MOVB,$$BUFD,$$QUE,$$MOV
$$MOVB LLA,C.LIN
$$MOV FLAGS,C.STS
$$BUFD 1,DATA
$$QUE NT$DAT,FC.XME
.ENDM
.MACRO NDIS$ LLA,OPDATA
.MCALL $$BUFD,$$MOVB,$$QUE,$$MOV
$$MOVB LLA,C.LIN
$$BUFD 1,OPDATA
$$QUE NT$DIS,FC.XME
.ENDM
.MACRO NETDF$,L,B
.MCALL CRBDF$
CRBDF$ L,B ;REQUEST DESCRIPTOR BLOCK
.MCALL CNBDF$
CNBDF$ L,B ;REQUEST PENDING BLOCK
.MCALL NSSYM$
NSSYM$ B ;RETURN SYMBOLS
.MACRO NETDF$,X,Y
.ENDM NETDF$
.ENDM NETDF$
.MACRO NHWDF$ L,B
PR0='B'0 ; PROCESSOR PRIORITY 0
PR1='B'40 ; PROCESSOR PRIORITY 1
PR2='B'100 ; PROCESSOR PRIORITY 2
PR3='B'140 ; PROCESSOR PRIORITY 3
PR4='B'200 ; PROCESSOR PRIORITY 4
PR5='B'240 ; PROCESSOR PRIORITY 5
PR6='B'300 ; PROCESSOR PRIORITY 6
PR7='B'340 ; PROCESSOR PRIORITY 7
PS='B'177776 ; PROCESSOR STATUS WORD
SWR='B'177570 ; CONSOLE SWITCH AND DISPLAY REGISTER
TPS='B'177564 ; CONSOLE TERMINAL PRINTER STATUS REGISTER
;+
; MEMORY MANAGEMENT HARDWARE REGISTERS AND STATUS CODES
;-
.IF DF M$$MGE
.IF DF R$$11D!I$$AS
BUFKMP='B'172344 ; BUFFER MAPPING IN KERNEL MODE
PRCKMP='B'172346 ; PROCESS MAPPING IN KERNEL MODE
CEXUMP='B'177640 ; COMEXEC MAPPING USER MODE
BUFUMP='B'177644 ; BUFFER MAPPING IN USER MODE
.BASEB='B'040000 ; BUFFER PAR BIAS
PRCUMP='B'177646 ; PROCESS MAPPING IN USER MODE
.BASEP='B'060000 ; PROCESS PAR BIAS
.IFF
BUFUMP='B'172354 ; BUFFER MAPPING IN SYSTEM STATE
.BASEB='B'140000 ; BUFFER PAR BIAS
KISAR6='B'172354 ; KERNEL MODE APR 6
UISAR1='B'177642 ; USER MODE APR 1
.ENDC
MPCSR='B'177746 ; ADDRESS OF PDP-11/70 MEMORY PARITY REGISTER
MPAR='B'172100 ; ADDRESS OF FIRST MEMORY PARITY REGISTER
PIRQ='B'177772 ; PROGRAMMED INTERRUPT REQUEST REGISTER
UBMPR='B'170200 ; UNIBUS MAPPING REGISTER 0
CMODE='B'140000 ; CURRENT MODE FIELD OF PS WORD
PMODE='B'30000 ; PREVIOUS MODE FIELD OF PS WORD
KISAR0='B'172340 ; KERNEL MODE APR 0
UISAR0='B'177640 ; USER MODE APR 0
.ENDC
.ENDM
.MACRO NICDF
N.MLEN = 300.
N$LOAD = 2.
N$DUMP = 3.
N$TRIG = 4.
N$LOOP = 5.
N$TEST = 6.
N$STPR = 7.
N$RDIN = 8.
N$ZERO = 9.
N$DPOS = 12.
N$EXAM = 13.
N$LOGD = 1.
N$LNSR = 14.
LS$LOA = 0.
LS$LOO = 1.
LS$DUM = 2.
LS$TRQ = 3.
LS$TRI = 4.
ND$LCC = 0.
ND$LCS = 1.
ND$RMC = 2.
ND$RMS = 3.
ND$LNC = 4.
ND$LNS = 5.
ND$BAD = -1.
ND$ZLC = 0.
ND$ZRM = 1.
ND$ZLN = 2.
NN$ZRO = 0.
NN$UMS = 1.
NN$UMR = 2.
NN$EXT = 3.
NN$NKS = 4.
NN$FMT = 5.
NN$RES = 6.
NN$IZS = 7.
NN$IZU = 8.
NN$CAC = 9.
NN$MAC = 10.
NN$CNI = 11.
NN$CNR = 12.
NL$ZRO = 0.
NL$BRC = 1.
NL$BTR = 2.
NL$RTR = 3.
NL$RLE = 4.
NL$RES = 5.
NL$TMO = 6.
ST$ON = 0.
ST$OFF = 1.
ST$SHU = 2.
ST$LOO = 3.
ST$MAI = 4.
ST$ENA = 5.
ST$DIS = 6.
LI$KNO = 0.
LI$STA = 1.
LI$STR = 2.
DM$END = 0.
DM$SAD = 1.
DM$MIM = 2.
DM$PXA = 3.
PT$END = 0.
PT$NAM = 1.
PT$NUM = 2.
PT$HOS = 3.
NS$SUC = 1.
NE$FUN = -1.
NE$FOR = -2.
NE$STA = -3.
NE$ORD = -4.
NE$LID = -8.
NE$LST = -9.
NE$LCO = -10.
NE$NOD = -11.
NE$SER = -12.
NE$FIL = -13.
NE$CON = -14.
NE$RES = -15.
NE$PAR = -16.
NE$LPR = -17.
NE$FIO = -18.
NE$NCO = -19.
NE$NOR = -20.
NE$NIC = -21.
.MACRO NICDF
.ENDM
.ENDM
.MACRO NINT$ LLA,DATA
.MCALL $$MOVB,$$BUFD,$$QUE,$$MOV
$$MOVB LLA,C.LIN
$$BUFD 1,DATA
$$QUE NT$INT,FC.XME
.ENDM
.MACRO NMOD$ LLA,RQCNT
.MCALL $$MOVB,$$QUE
$$MOVB LLA,C.LIN
$$MOVB RQCNT,C.NSP
$$QUE NT$MOD,FC.XME
.ENDM
.MACRO NOD$DF A,B,C
.ENDM
.MACRO NQRY$ LLA
.MCALL $$MOVB,$$QUE
$$MOVB LLA,C.LIN
$$QUE NT$QRY,FC.XME
.ENDM
.MACRO NRDIN$
; CCB STATUS CODES : DLC ->NRD
LS.ABO = 100201 ;ABORTING(COMPLIANCE WITH HIGHER (POWERS)
LS.REJ = 100202 ;REJECTING MSG
LS.CLO = 100203 ;DEVICE IS CLOSED,REJECTING
LS.ILM = 100204 ;ILLEGAL NURD MSG
LS.BOM = 100205 ;DLC IS ABORTING THE LINK DUE TO USER ERROR
; CCB STATUS CODES : NRD -> NRM
NR.NDV = 100377 ;NOT A NURD DEVICE
.ENDM NRDIN$
.MACRO NREJ$ SNDCNT
.MCALL $$BUFD,$$QUE,$$MOV
MOV C.NSP(R4),-(SP)
MOV C.LIN(R4),C.NSP(R4)
MOV (SP)+,C.LIN(R4)
$$MOV SNDCNT,C.CNT1
$$QUE NT$REJ,FC.RCE
.ENDM
.MACRO NRTI$ LLA
.MCALL $$MOVB,$$QUE
$$MOVB LLA,C.LIN
$$QUE NT$RTI,FC.RCE
.ENDM
.MACRO NRTN$ LLA,FLAGS
.MCALL $$MOV,$$MOVB,$$QUE
$$MOVB LLA,C.LIN
$$MOV FLAGS,C.STS
$$QUE NT$RTN,FC.RCE
.ENDM
.MACRO NSDDB$
;
; DATA DESCRIPTOR BLOCK DEFINITIONS:
;
.ASECT
.=0
N$ACQ: .BLKW 2 ; ACP QUEUE LISTHEAD
N$TCB: .BLKW 1 ; ACP TCB ADDRESS
N$ICF: .BLKW 1 ; INTERCEPT SWITCH (ADDRESS OF PHYSICAL LINK BLOCK)
N$LNI: .BLKW 1 ; LOOPBACK SWITCH (ADDRESS OF PHYSICAL LINK BLOCK)
N$TMP: .BLKW 4 ; SCRATCH STORAGE AREA
N$LVC: .BLKW 2 ; LOGICAL LINK ADDRESS TABLE (LENGTH & ADDRESS)
N$PLD: .BLKW 2 ; PHYSICAL LINK DESCRIPTOR (NUMBER & ADDRESS)
N$NOD: .BLKW 2 ; NODE NAME DESCRIPTOR (NUMBER & ADDRESS)
N$VER: .BLKW 2 ; PASSWORD DESCRIPTOR (NUMBER & ADDRESS)
N$STS: .BLKW 2 ; STATISTICS DESCRIPTOR (LENGTH & ADDRESS)
.PSECT
;
; PHYSICAL LINK BLOCK DEFINITIONS
;
.ASECT
.=0
P$LST: .BLKW 1 ; STATE AND FLAGS
P$LCD: .BLKB 1 ; RECOVERY FLAGS
P$TIM: .BLKB 1 ; RECOVERY TIMER
P$CHN: .BLKB 1 ; LOGICAL LINE NUMBER
P$CNT: .BLKB 1 ; NUMBER OF MESSAGES QUEUED
P$PFQ: .BLKW 1 ; PENDING CONTROL FUCTION QUEUE
P$NOD: .BLKW 1 ; POINTER TO ADJACENT NODE
P$FRQ: .BLKB 1 ; FUNCTIONS REQUESTED
P$FSP: .BLKB 1 ; FUNCTIONS REQUESTED
P$LEN: .BLKW 0 ; LENGTH OF PHYSICAL LINK TABLE
.PSECT
;
; PHYSICAL LINK FLAGS AND STATES
;
; STATES:
;
PS$OFF = 0 ;OFF
PS$STR = 1 ;STARTING
PS$WT = 2 ;WAIT
PS$NTI = 3 ;NOT INITIALIZED
PS$VER = 4 ;VERIFICATION WAIT
PS$UP = 5 ;UP
;
; FLAGS:
;
PF$OFF = 0 ;OFF STATE DESIRED
PF$UP = 1 ;UP STATE DESIRED
PF$STA = 3 ;MASK TO DESIRED STATE
PF$ENB = 200 ;LINK HAS BEEN ENABLED
PF$EIP = 100 ;CONTROL ENABLE FUNCTION IN PROGRESS
PF$RVR = 40 ;VERIFICATION REQUESTED WHEN NODE INIT SENT
;
; RECOVERY FLAGS:
;
RF.CTL = 3 ;COUNT OF OUTSTANDING CONTROL REQUESTS
RF.CLN = 0 ;LOGICAL LINK CLEAN UP REQUIRED
RF.WTM = 30 ;MASK FOR ALLOCATION FAILURE INTO WAIT STATE
RF.WTS = 10 ;STOP FUNCTION FLAG
RF.WTD = 20 ;DISABLE FUNCTION FLAG
RF.TIM = 377*400 ;MASK FOR TIMEOUT VALUE
RF.TM0 = 1*400 ;INITIAL TIMEOUT VALUE
;
; FUNCTIONS SUPPORTED BY ADJACENT NODE
;
; NOTE: THESE DEFINTIONS ARE SYNCHRONIZED WITH THE PROTOCOL
; DEFINITIONS.
;
PF$SRT = 1 ; ROUTE THROUGH
PF$SLI = 2 ; LINK INTERRCEPT
PF$SRI = 4 ; ROUTING INTERCEPT
PF$SUB = 10 ; MESSAGE UNBLOCKING
;
; FUNCTIONS REQUESTED FROM ADJACENT NODE
;
; NOTE: THESE DEFINITIONS ARE SYNCHRONIZED WITH THE PROTOCOL
; DEFINITIONS.
;
PF$RVE = 1 ;REQUEST VERIFICATION MESSAGE
PF$RLI = 2 ;REQUEST LINK INTERCEPT (MEANS THIS IS LEVEL 1 NSP)
PF$RRI = 4 ;REQUEST ROUTING INTERCEPT
;
; NODE DATA BASE DEFINTIONS
;
.ASECT
.=0
D$FLG: .BLKW 1 ; NODE ENTRY FLAGS
D$CHN: .BLKW 1 ; POINTER TO PHYSICAL LINK BLOCK
D$USE: .BLKB 1 ; NUMBER OF LOGICAL LINKS
D$LNG: .BLKB 1 ; LENGTH OF NODE NAME
D$NAM: .BLKW 3 ; NODE NAME
D$LEN: .BLKW 0 ; LENGTH OF NODE ENTRY
.PSECT
;
; NODE ENTRY FLAGS DEFINTIONS:
;
DF$TMP = 100000 ; THIS IS THE SCRATCH NODE NAME ENTRY
DF$LCL = 40000 ; THIS IS THE LOCAL NODE NAME
DF$ADJ = 20000 ; THIS IS AN ADJACENT NODE
DF$REM = 10000 ; THIS IS A NON ADJACENT NODE
DF$LNK = 4000 ; REMOVE ENTRY WHEN USE COUNT GOES TO ZERO
DF$FRE = DF$LCL!DF$ADJ!DF$REM ; MASK TO DETECT A FREE NODE ENTRY
;
; PASSWORD DESCRIPTOR ENRTY DEFINITIONS
;
.ASECT
.=0
V$FLG: .BLKW 1 ; PASSWORD VALIDITY FLAGS
V$RCV: .BLKB 8. ; RECEIVE PASSWORD
V$XMT: .BLKB 8. ; TRANSMIT PASSWORD
V$LEN: .BLKW 0 ; LENGTH OF PASSWORD ENTRY
.PSECT
;
; VALIDITY FLAGS DEFINITIONS:
;
VF$RCV = 100000 ; RECEIVE PASSWORD IS VALID
VF$XMT = 40000 ; TRANSMIT PASSWORD IS VALID
;
; STATISTICS DESCRIPTOR ENTRY DEFINITIONS
;
.ASECT
.=0
S$SEC: .BLKW 1 ; SECONDS SINCE LAST ZEROED
S$UMS: .BLKW 1 ; USER MESSAGES SENT
S$UMR: .BLKW 1 ; USER MESSAGE RECEIVED
S$EMR: .BLKW 1 ; EXTRANIOUS MESSAGES RECEIVED
S$NKS: .BLKW 1 ; NAKS TRANSMITTED
S$FMT: .BLKW 1 ; FORMAT ERRORS
S$RES: .BLKW 1 ; RESOURCE ALLOCATION FAILURES
S$SNI: .BLKW 1 ; SUCESSFUL NODE INITS
S$UNI: .BLKW 1 ; UNSUCCESSFUL NODE INITS
S$LNK: .BLKW 1 ; CURRENT NUMBER OF LOGICAL LINKS
S$MLK: .BLKW 1 ; MAXIMUM NUMBER OF LOGICAL LINKS
.BLKW 5 ; RESERVED STORAGE
S$LEN: .BLKW 0 ; LENGTH OF THE STATISTICS BLOCK
.PSECT
.ENDM NSDDB$
.MACRO NSPDF$
.MCALL NSPIF$
.MCALL NCON$,NACC$,NREJ$,NDIS$,NDAT$,NINT$,NRTN$,NRTI$
.MCALL NMOD$,NQRY$,NABO$,NXON$,NXOF$,NCBK$,NCAC$
.MCALL GTULA$,GTLLA$,GTSEG$,GTCNT$
NSPIF$ ; INVOKE SYSTEM INTERFACE DEFINITIONS
.MACRO NSPDF$
.ENDM
.ENDM
.MACRO NSPIF$
;
; USER FUNCTION CODES (FOR C.MOD)
;
; NOTE: THESE SUBFUNCTION CODES ARE ONLY THOSE CODE SEEN AT THE SYSTEM
; USER INTERFACE. NSP USES ADDITIONAL SUBFUNCTION CODES INTERNALY.
;
; SUBFUNCTION CODES FOR TRANSMIT ENABLE, TRANMIT COMPLETE,
; RECEIVE COMPLETE.
;
NT$CON = 0 ; CONNECT
NT$DAT = 2 ; DATA
NT$INT = 4 ; INTERRUPT
NT$SNG = 6 ; SINGLE MESSAGE (NOT IMPLEMENTED)
NT$DIS = 10 ; DISCONNECT (TRANSMIT ONLY)
NT$MOD = 12 ; MODIFY (TRANSMIT ONLY)
NT$QRY = 14 ; QUERY (TRANSMIT ONLY)
NT$XON = 16 ; BACK PRESSURE ON (TRANSMIT ONLY)
NT$XOF = 20 ; BACK PRESSURE OFF (TRANSMIT ONLY)
NT$ABO = 22 ;USER ABORT (TRANSMIT ONLY)
;
; SUBFUNCTION CODES FOR RECEIVE ENABLE & BUFFER RETURN.
;
NT$RTN = 0 ; BUFFER RETURN
NT$ACC = 2 ; CONNECT ACCEPT
NT$REJ = 4 ; CONNECT REJECT
NT$SNG = 6 ; SINGLE MESSAGE (NOT IMPLEMENTED)
NT$RTI = 10 ; INTERRUPT MESSAGE RETURN
;
; SUBF