.MACRO HOST NAME,NET,HOST,LHOST,IMP .RAD50 /NAME/ .BYTE NET,HOST,LHOST,IMP .ENDM HOST .MACRO CALL ENTRY,ARG1,ARG2,ARG3,ARG4 .IF NB,ARG4 MOV ARG4,-(SP) MOV ARG3,-(SP) MOV ARG2,-(SP) MOV ARG1,-(SP) JSR PC,ENTRY ADD #2*4,SP .IFF .IF NB,ARG3 MOV ARG3,-(SP) MOV ARG2,-(SP) MOV ARG1,-(SP) JSR PC,ENTRY ADD #2*3,SP .IFF .IF NB,ARG2 MOV ARG2,-(SP) MOV ARG1,-(SP) JSR PC,ENTRY ADD #2*2,SP .IFF .IF NB,ARG1 MOV ARG1,-(SP) JSR PC,ENTRY ADD #2*1,SP .ENDC .ENDC .ENDC .ENDC .ENDM CALL .MACRO FORMAT PTR,REG .GLOBL FORMAT MOV PTR,R0 .IF NB, MOV R1,-(SP) MOV REG,R1 JSR PC,FORMAT MOV (SP)+,R1 .IFF JSR PC,FORMAT .ENDC .ENDM FORMAT .MACRO DFCON ; ; Status flags (flags) ; CHNBIT = 000002 ;chain bit ; ; Connection block format ; . = 0 CONLNK: .BLKW 1 ;link CONIDN: .BLKW 1 ;ident CONPTR: .BLKW 1 ;ccb pointer CONPAR = . ;tcp/rtp connection specification block CONFMT: .BLKW 1 ;ccb length CONAST: .BLKW 1 ;completion routine CONPRO: .BLKB 1 ;protocol CONFLG: .BLKB 1 ;flags CONLCL: .BLKW 3 ;local socket CONRMT: .BLKW 3 ;remote socket CONSIZ: .BLKW 1 ;max datagram size CONOPT: .BLKW 21. ;ip options CONEND = . ;end of connection block .ENDM DFCON .MACRO OPNBLK LNK,IDN,PTR,LEN,AST,PRO,FLG,LCL,RMT,SIZ,OPT,?L1 .WORD LNK ;link .RAD50 /IDN/ ;ident .WORD PTR ;ccb pointer .WORD LEN ;ccb length .WORD AST ;completion routine .BYTE PRO ;protocol .BYTE FLG ;flags ADDR LCL ;local socket ADDR RMT ;remote socket .WORD SIZ ;max datagram size L1: .BYTE OPT ;options .REPT 42.-<.-L1> ;zero fill .BYTE 0 .ENDR .EVEN .ENDM OPNBLK .MACRO DFFCB ;define file control block . = 0 FCBNAM: .BLKW 4 ;file name (rad50) FCBMAX: .BLKW 1 ;max blocks FCBBUF: .BLKW 1 ;buffer pointer FCBCNT: .BLKW 1 ;buffer word count FCBBLK: .BLKW 1 ;block number .ENDM DFFCB .MACRO ADDR NET,HOST,LHOST,IMP,PORT1,PORT2 .IF NB,NET .BYTE NET,HOST,LHOST,IMP .IFF .BYTE 0,0,0,0 .ENDC .IF NB,PORT1 .BYTE PORT1,PORT2 .IFF .BYTE 0,0 .ENDC .ENDM ADDR .MACRO GETARG ARG1,ARG2,?L1,?L2 MOV ARG1,R1 JSR PC,GETARG .IF NB,ARG2 MOV ARG2,R1 JSR PC,GETARG MOV ARG2,R1 TSTB @R1 BNE L2 MOV ARG1,R0 L1: MOVB (R0)+,(R1)+ BNE L1 L2: .ENDC .ENDM GETARG .MACRO ENTER ARG,FILNAM,CHAN,?L1,?L2 MOV ARG,R0 ;insert "=" at end for csi L1: TSTB (R0)+ BNE L1 CLRB @R0 MOVB #'=,-(R0) MOV SP,R1 ;decode file name .CSISP #AREA,#DEFTYP,ARG MOV R1,SP BCS L2 MOV #AREA,R0 ;save file name and size MOV FILNAM,R1 MOV (R0)+,(R1)+ MOV (R0)+,(R1)+ MOV (R0)+,(R1)+ MOV (R0)+,(R1)+ MOV @R0,@R1 .IF NB,CHAN .ENTER #ARGBLK,CHAN,FILNAM,@R1 BCS L2 MOV R0,@R1 .ENDC L2: .ENDM ENTER .MACRO LOOK ARG,FILNAM,CHAN,?L MOV SP,R1 ;decode file name .CSISP #AREA,#DEFTYP,ARG MOV R1,SP BCS L MOV #AREA+30.,R0 ;save file name MOV FILNAM,R1 MOV (R0)+,(R1)+ MOV (R0)+,(R1)+ MOV (R0)+,(R1)+ MOV (R0)+,(R1)+ .IF NB,CHAN .LOOKU #ARGBLK,CHAN,FILNAM BCS L MOV R0,@R1 .ENDC L: .ENDM LOOK .MACRO DFSRV ; ; Define host-table entry format ; . = 0 HT.FLG: .BLKB 1 ;flags/entry type TELNET = 001 ;virtual-terminal protocol SMTP = 002 ;mail-transfer protocol FTP = 004 ;file-transfer protocol D = 020 ;domain entry N = 040 ;name entry P = 100 ;pointer entry M = 200 ;more entries follow HT.ADR: .BLKB 4 ;pointer/address HT.LNK: .BLKB 4 ;link HT.LEN = . ;end of fixed area .ENDM DFSRV .MACRO TABLE ADR,NAM,COD ADDRES ADR .T = 0 .IRP X, .T = .T+X .ENDR .BYTE .T .ASCIZ NAM .ENDM TABLE ; .MACRO ADDRES NET,HOST,LHOST,IMP .BYTE NET,HOST,LHOST,IMP .ENDM ADDRES .MACRO NTPTAB ;ntp tables ; ; Assembly parameters ; FLTMAX = 8. ;max filter size ; ; NTP filter entry format ; . = 0 FX.OFS: .BLKW 3 ;offset FX.DLY: .BLKW 1 ;delay FX.DSP: .BLKW 1 ;dispersion FX.LEN = . ;end of entry ; ; NTP neighbor table entry format ; . = 0 NG.ORG: .BLKW 4 ;(peer.org) originate timestamp (ntp format) NG.REC: .BLKW 4 ;(peer.rec) receive timestamp (ntp format) NG.XMT: .BLKW 4 ;(peer.xmt) transmit timestamp (ntp format) NG.SRG: .BLKB 1 ;(peer.reach) reachability status NG.RCT: .BLKB 1 ;(peer.valid) timeouts since last update .EVEN NG.AGE: .BLKW 1 ;last filter update (64-sec) NG.FLT: .BLKW FLTMAX*FX.LEN/2 ;(peer.filter) filter register NG.ERS = . ;end of reset area NG.STA: .BLKB 1 ;(peer.mode) leap/version/mode NX.MOD = 007 ;mode mask NC.STD = 0 ;unspecified mode NC.SAM = 1 ;symmetric active mode NC.SPM = 2 ;symmetric passive mode NC.CRM = 3 ;client request mode NC.SRM = 4 ;server reply mode NC.BST = 5 ;broadcast mode NG.STR: .BLKB 1 ;(peer.keyid/peer.stratum) keyid/stratum NG.HPI: .BLKB 1 ;(peer.ppoll) peer poll interval NG.PRE: .BLKB 1 ;(peer.precision) precision NG.ERR: .BLKW 2 ;(peer.pathdelay) path delay NG.DRF: .BLKW 2 ;(peer.pathdispersion) path dispersion NG.RID: .BLKW 2 ;(peer.refid) reference id .BLKB 1 ;backstop NG.BIT: .BLKB 1 ;packet error flashers NG.REF: .BLKW 3 ;(peer.reftime) reference timestamp NG.HLN = . ;end of header area NG.SRC: .BLKW 3 ;(peer.srcadr) neighbor ip address/port NG.DST: .BLKW 3 ;(peer.dstadr) local ip address/port NG.OFS: .BLKW 3 ;(peer.offset) offset NG.DLY: .BLKW 1 ;(peer.delay) delay NG.DSP: .BLKW 1 ;(peer.dispersion) dispersion NG.WGT: .BLKW 1 ;sample weight NG.TIM: .BLKW 1 ;(peer.timer) timer counter NG.RCV: .BLKW 1 ;messages received NG.SND: .BLKW 1 ;messages sent NG.PMT: .BLKW 1 ;messages suppressed NG.UPD: .BLKW 3 ;last update time (rt-11 format) NG.IDN: .BLKW 1 ;entry id NG.PST: .BLKW 1 ;peer status (low octet) NX.SEL = 007 ;selection mask NX.SYN = 010 ;persist okay NX.RCH = 020 ;reachability okay NX.KEY = 040 ;authentication okay NX.MAC = 100 ;authentication enabled NX.CFG = 200 ;configured entry NG.PSE = NG.PST+1 ;peer status (high octet) NP.IPX = 1 ;peer IP error NP.KEY = 2 ;peer authentication failure NP.UNR = 3 ;peer unreachable NP.RCH = 4 ;peer reachable NP.CLK = 5 ;peer clock exception NS.RST = 1 ;system restart NS.BUM = 2 ;system or hardware fault NS.LEP = 3 ;system new status word NS.SRC = 4 ;system new clock source or stratum NS.APX = 5 ;system clock reset NS.BOG = 6 ;system invalid time or date NS.CLQ = 7 ;system clock exception NG.FLG: .BLKB 1 ;(peer.hmode) peer mode NG.MPI: .BLKB 1 ;(peer.hpoll) host poll interval NG.SIZ: .BLKB 1 ;current filter size NG.KEY: .BLKB 1 ;peer key id .EVEN NG.LEN = . ;length of table entry .ENDM NTPTAB