.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, .ENDM ABTW$ .MACRO ABTW$E LABEL,LUN,EFN,IOST,AST,PRMLST .MCALL QDPB$E QDPB$E LABEL,3,#16010,LUN,EFN,,IOST,AST, .ENDM ABTW$E .MACRO ABTW$S LUN,EFN,IOST,AST,PRMLST .MCALL QDPB$S QDPB$S 3,#16010,LUN,EFN,,IOST,AST, .ENDM ABTW$S .MACRO ABT$ LUN,EFN,IOST,AST,PRMLST .MCALL QDPB$ QDPB$ 1,16010,LUN,EFN,,IOST,AST, .ENDM ABT$ .MACRO ABT$E LABEL,LUN,EFN,IOST,AST,PRMLST .MCALL QDPB$E QDPB$E LABEL,1,#16010,LUN,EFN,,IOST,AST, .ENDM ABT$E .MACRO ABT$S LUN,EFN,IOST,AST,PRMLST .MCALL QDPB$S QDPB$S 1,#16010,LUN,EFN,,IOST,AST, .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 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 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 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 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, .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 .NCHR $$$, .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 .IF LE $$$FMT-2 .BYTE FMT .IFF .ERROR FMT ;ILLEGAL FORMAT NUMBER .ENDC .IFF $$$FMT=0 .BLKB 1 .ENDC .IF NB .BYTE OBJ .IFF .BLKB 1 .ENDC .IF NB .IF EQ $$$FMT .ERROR DSCRIP ;FORMAT 0 DESCRIPTOR NOT ALLOWED .ENDC .IF EQ 1-$$$FMT .NCHR $$$, .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, $$$=$$$+1 .ENDM .IF GE 3-$$$ $$$=0 .IRP B, $$$=$$$+1 .IF GE 2-$$$ .IF NB .WORD B .IFF .BLKW 1 .ENDC .ENDC .IF EQ 3-$$$ .NCHR $$$, .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 .NCHR $$$, .IF GE 16.-$$$ .WORD $$$ .ASCII ''RQID'' .BLKB 16.-$$$ .IFF .ERROR RQID ;REQUESTOR ID TOO LONG .ENDC .IFF .BLKB 18. .ENDC .IF NB $$$=0 .IRP A, $$$=$$$+1 .ENDM .IF GE 8.-$$$ .WORD $$$ .BYTE PASS .BLKB 8.-$$$ .IFF .ERROR PASS ;PASSWORD TOO LONG .ENDC .IFF .BLKB 10. .ENDC .IF NB .NCHR $$$, .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 => FORM FB.CL1 ='B 1 ;CLASS 1 FEATURE => <...> 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 ;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 ;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$ , .MCALL UCBDF$ UCBDF$ , .MCALL SCBDF$ SCBDF$ , .MCALL LCBDF$ LCBDF$ , .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, .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 , .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 , .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, .ENDM DSCW$ .MACRO DSCW$E LABEL,LUN,EFN,IOST,AST,PRMLST .MCALL QDPB$E QDPB$E LABEL,3,#16000,LUN,EFN,,IOST,AST, .ENDM DSCW$E .MACRO DSCW$S LUN,EFN,IOST,AST,PRMLST .MCALL QDPB$S QDPB$S 3,#16000,LUN,EFN,,IOST,AST, .ENDM DSCW$S .MACRO DSC$ LUN,EFN,IOST,AST,PRMLST .MCALL QDPB$ QDPB$ 1,16000,LUN,EFN,,IOST,AST, .ENDM DSC$ .MACRO DSC$E LABEL,LUN,EFN,IOST,AST,PRMLST .MCALL QDPB$E QDPB$E LABEL,1,#16000,LUN,EFN,,IOST,AST, .ENDM DSC$E .MACRO DSC$S LUN,EFN,IOST,AST,PRMLST .MCALL QDPB$S QDPB$S 1,#16000,LUN,EFN,,IOST,AST, .ENDM DSC$S .MACRO DTEDF$ LST .IIF NB , .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 , .NLIST .ENDM DTEDF$ .MACRO DUPDF$ LST .IIF NB , .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 , .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,,15.,0,255. ;** MOP 'MCRO' DU,DU,2,,15.,0,255. ;** MOP 'MCRO' DUV,DUV,2,,15.,0,255. ;** MOP 'MCRO' DL,DL,4,,15.,0,255. ;** MOP 'MCRO' DLV,DLV,4,,0.,0,255. ;** MOP 'MCRO' DQ,DQ,6,,15.,0,255. ;** MOP 'MCRO' DA,DA,10,,1.,0,0. ;** MOP 'MCRO' DUP,DUP,12,,15.,0,255. ;** MOP 'MCRO' DMC,DMC,14,,7.,0,0. ;** MOP 'MCRO' DLA,DLA,20,,0.,0.,0. ;OUR DEFINITION 'MCRO' DTE,DTE,24,,0.,0,0. ;** MOP 'MCRO' DV,DV,26,,3.,15.,255. ;MAYNARD DEFINITION 'MCRO' DZ,DZ,30,,7.,7.,255. ;MAYNARD DEFINITION 'MCRO' KDP,KDP,34,,0.,15.,255. ;MAYNARD DEFINITION 'MCRO' KDZ,KDZ,36,,2.,47.,255. ;MAYNARD DEFINITION 'MCRO' KL,KL,40,,15.,0,255. ;** MOP 'MCRO' DH,DH,42,,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 ; ; ; ;