C7$ ?BOOT-U-No boot on volume ߋtvjLxP3SjLx13SRT11A DECRT11A oe}bd/EJ{gsave showpage grestore}bd/#C{userdict begin/#copies ed end}bd/SM{/iRes ed/cyP exch def/cxP exch def/cyM exch def/cxM exch def 72 iRes div dup neg scale 0 ne{cyP cxP neg tr 90 rotate cxM cyM}{cxM cyM cyP sub}ifelse tr 0 0 transform .25 add round .25 sub exch .25 add round .25 sub exch itransform translate}bd/SJ{1 index 0 eq{pop pop/fBE false def}{1 index/Break ed div/dxBreak ed/fBE true def}ifelse}bd/ANSIVec[ 16#0/grave 16#1/acute 16#2/circumflex 16#3/tilde 16#4/macron 16#5/breve 16#6/dotaccent 16#7/dieresis 16#8/ring 16#9/cedilla 16#A/hungarumlaut 16#B/ogonek 16#C/caron 16#D/dotlessi 16#27/quotesingle 16#60/grave 16#7C/bar 16#91/quoteleft 16#92/quoteright 16#93/quotedblleft 16#94/quotedblright 16#95/bullet 16#96/endash 16#97/emdash 16#A0/space 16#A4/currency 16#A6/brokenbar 16#A7/section 16#A8/dieresis 16#A9/copyright 16#AA/ordfeminine 16#AB/guillemotleft 16#AC/logicalnot 16#AD/hyphen 16#AE/registered 16#AF/macron 16#B0/degree 16#B1/plusminus 16#B2/twosuperior 16#B3/threesuperior 16#B4/acute 16#B5/mu 16#B6/paragraph 16#B7/periodcentered 16#B8/cedilla 16#B9/onesuperior 16#BA/ordmasculine 16#BB/guillemotright 16#BC/onequarter 16#BD/onehalf 16#BE/threequarters 16#BF/questiondown 16#C0/Agrave 16#C1/Aacute 16#C2/Acircumflex 16#C3/Atilde 16#C4/Adieresis 16#C5/Aring 16#C6/AE 16#C7/Ccedilla 16#C8/Egrave 16#C9/Eacute 16#CA/Ecircumflex 16#CB/Edieresis 16#CC/Igrave 16#CD/Iacute 16#CE/Icircumflex 16#CF/Idieresis 16#D0/Eth 16#D1/Ntilde 16#D2/Ograve 16#D3/Oacute 16#D4/Ocircumflex 16#D5/Otilde 16#D6/Odieresis 16#D7/multiply 16#D8/Oslash 16#D9/Ugrave 16#DA/Uacute 16#DB/Ucircumflex 16#DC/Udieresis 16#DD/Yacute 16#DE/Thorn 16#DF/germandbls 16#E0/agrave 16#E1/aacute 16#E2/acircumflex 16#E3/atilde 16#E4/adieresis 16#E5/aring 16#E6/ae 16#E7/ccedilla 16#E8/egrave 16#E9/eacute 16#EA/ecircumflex 16#EB/edieresis 16#EC/igrave 16#ED/iacute 16#EE/icircumflex 16#EF/idieresis 16#F0/eth 16#F1/ntilde 16#F2/ograve 16#F3/oacute 16#F4/ocircumflex 16#F5/otilde 16#F6/odieresis 16#F7/divide 16#F8/oslash 16#F9/ugravjLxP#SjLx1#jLx!#\XjLx#2dԀ~#v(#w~^# jL^$#v#e(Wv#?T3 `"^#=jL^!#fZv#8;v#\XYyv#_Mp:v#:^#}jL^P#\Xv#@^#rR^ #Ws^#=p^#.w^#'m^#}^ #O:}^# %^#\XjL^9#Qyyv#f@j^#f@jv\#&,v#spN^#spNv#}yv#0^#0v##_Ma^#_Mav #k4^#k4v#(^#(v#(y^#(yv#xd^#xdv'#_Mv #xy^#xyv##vn5}v#ve+^#ve+v#?Tv;n2dv(  g^#vE#x?Tv-nzjRv%_M^#&,^:#&,^:#&,^:#&,^G#:kQTS!wh"kQQ kQkQ zkQ|S! itr9h kQcjLxPS!SjLx1S!jLx!S!\XjLxS! jL^$S!}jL^PS!\XjL^9S!% S!@xQS!xQS!vHS!@vGS!vDS!xQS!@vGS!@xQS!9g&W3PkQS!僠PkQS!h kQO0<@kQ3 @%z@kQS!@:PkQS!h kQQ <kQ2!%zkQ:s<kQ%zkQƈ:skQ%Ԁ<<kQ3 %zkQ :sA;kQA;ԀA;<(<pkQ1 p%zpkQQ pƈ:s=4 + max_leader words) BUFTLR = 2*4 ;buffer trailer size (>=4 words) QD.LEN = 2*3 ;size of cpu/semaphore queue head ; ; Format codes (SD.CTL) ; TRPCTL = 0 ;trap msg STRCTL = 1 ;stream msg CHNCTL = 2 ;channel op msg PKTCTL = 3 ;packet msg ; ; Interprocess message format ; . = 0 SD.DST: .BLKB 1 ;destination port id SD.CTL: .BLKB 1 ;control code SD.CHN: .BLKB 1 ;channel number/signal opcode SD.DEV: .BLKB 1 ;drive number SD.BLK: .BLKW 1 ;block number/connection id SD.ADR: .BLKW 1 ;buffer pointer/signal data SD.CNT: .BLKW 1 ;word count SD.AST: .BLKW 1 ;completion routine SD.END = . ;end of parameter message .ENDM .COM .MACRO .CHR ; ; Ascii x3.4-1968 character codes ; Cc = communication control, fe = format effector, ; Is = information separator ; NUL = 000 ;null SOH = 001 ;start of heading (cc) STX = 002 ;start of text (cc) ETX = 003 ;end of text (cc) EOT = 004 ;end of transmission (cc) ENQ = 005 ;enquiry (cc) ACK = 006 ;acknowledge (cc) BEL = 007 ;bell BS = 010 ;backspace (fe) HT = 011 ;horizontal tabulation (fe) LF = 012 ;line feed (fe) VT = 013 ;vertical tabulation (fe) FF = 014 ;form feed (fe) CR = 015 ;carriage return (fe) SO = 016 ;shift out SI = 017 ;shift in DLE = 020 ;data link escape (cc) DC1 = 021 ;device control 1 DC2 = 022 ;device control 2 DC3 = 023 ;device control 3 DC4 = 024 ;ddvice control 4 NAK = 025 ;negative acknowledge (cc) SYN = 026 ;synchronous idle (cc) ETB = 027 ;end of transmission block (cc) CAN = 030 ;cancel EM = 031 ;end of medium SUB = 032 ;substitute ESC = 033 ;escape FS = 034 ;field separator (is) GS = 035 ;group separator (is) RS = 036 ;record separator (is) US = 037 ;unit separator (is) DEL = 177 ;delete .ENDM .CHR .MACRO .NVT ; ; Telnet nvt keyboard character interpretation ; IAC = 377 ;interpret as command DONT = 376 ;don't negotiation code DO = 375 ;do negotiation code WONT = 374 ;won't negotiation code WILL = 373 ;will negotiation code SB = 372 ;begin subnegotiation sequence GA = 371 ;go ahead signal EL = 370 ;erase line function EC = 367 ;erase character function AYT = 366 ;are you there function AO = 365 ;abort output function IP = 364 ;interrupt process signal BRK = 363 ;break character DM = 362 ;data mark function NOP = 361 ;no operation SE = 360 ;end subnegotiation sequence .ENDM .NVT .MACRO .LGD ; ; Login file entry format ; . = 0 LF.USE: .BLKB 16. ;user id LF.PAS: .BLKB 8. ;password (encrypted) LF.DIR: .BLKW 4 ;directory file name (rad50) LF.DAT: .BLKW 1 ;login date (rt-11 format) LF.TIM: .BLKW 2 ;login time (rt-11 format) LF.FLG: .BLKB 1 ;access flags AF.LOG = 001 ;login indicator AF.LGO = 002 ;logout indicator AF.MSG = 004 ;smtp mail indicator AF.MPM = 010 ;mpm mail indicator AF.FTP = 020 ;ftp indicator AF.PRT = 040 ;spool indicator LF.LEN = 64. ;end of entry .ENDM .LGD .MACRO .PRT ; ; Spool control file entry format ; . = 0 SQ.FIL: .BLKW 4 ;source filespec (rad50) SQ.SIZ: .BLKW 1 ;source file size (blocks) SQ.USR: .BLKB 16. ;source userid (dk: only) ; SQ.DEV: .BLKW 4 ;destination filespec (rad50) SQ.DST: .BLKW 2 ;destination host address SQ.USD: .BLKB 16. ;destination userid SQ.PAD: .BLKB 8. ;destination password (encrypted) ; SQ.QUE: .BLKW 4 ;control filespec SQ.FLG: .BLKW 1 ;flags SX.ACK = 000001 ;acknowledge delivery SX.DEL = 000002 ;delete file after transfer SX.RMT = 000004 ;remote host SX.LST = 000400 ;list file SX.AQX = 001000 ;autospool list file SX.UNX = 002000 ;unix file SX.MPM = 004000 ;mail (mpm) file SX.FLT = 010000 ;filter required SQ.DAT: .BLKW 1 ;date queued SQ.TIM: .BLKW 2 ;time queued SQ.CPY: .BLKB 1 ;number of copies SQ.BAN: .BLKB 1 ;number of banner pages SQ.LEN = . ;end of entry .ENDM .PRT .MACRO .SMF ; ; Global semaphore codes ; SF.USR = 0*QD.LEN ;usr (directory) SF.UPD = 1*QD.LEN ;update message header SF.APN = 2*QD.LEN ;append message SF.SMP = 3*QD.LEN ;smtp mailer SF.PRG = 4*QD.LEN ;purge message file SF.PFL = 5*QD.LEN ;login/profile SF.RUT = 6*QD.LEN ;routing data base SF.MAX = 6*QD.LEN ;maximum value .ENDM .SMF .MACRO .ERR ; ; Rt-11 system error codes ; ER.USR = -1 ;called usr from completion routine (not used) ER.HND = -2 ;no device handler (not used) ER.DIR = -3 ;usr-directory i/o error ER.FET = -4 ;fetch error (not used) ER.OVL = -5 ;ovl-overlay read error ER.OVF = -6 ;usr-directory overflow ER.ADR = -7 ;rmon-illegal instruction or operand ER.CHN = -10 ;rmon-illegal channel number ER.EMT = -11 ;rmon-illegal emt ; ; Dcn/bos system error codes ; ER.FNF = -12 ;load-file not found ER.INP = -13 ;load-input error ER.FMT = -14 ;load-bad file format ER.BIG = -15 ;load-program too large ER.STR = -16 ;load-invalid start address ER.FPN = -17 ;rmon-floating-point trap ER.ATN = -20 ;rmon-attention interrupt ER.TIM = -21 ;rmon-timer interrupt ER.MEM = -22 ;rmon-memory-parity trap ER.MMU = -23 ;rmon-memory-management abort ER.IOT = -24 ;rmon-illegal iot trap ER.TRP = -25 ;rmon-illegal trap trap ER.QUE = -26 ;rmon-event queue overflow ER.ERR = -26 ;beginning of system error codes ER.SIG = ER.ERR-10 ;beginning of net signal codes .ENDM .ERR .MACRO .PSA ; ; This macro contains register, parameter and process save area ; definitions. it is included in all modules needing access to ; these areas. in general, these include device processes, but ; not application programs. ; ; Process priorities ; PRI0 = 0*QD.LEN ;spare PRI1 = 1*QD.LEN ;user/service processes PRI2 = 2*QD.LEN ;utility processes PRI3 = 3*QD.LEN ;asynchronous processes PRI4 = 4*QD.LEN ;synchronous processes ; ; Register save area (reg) ; . = 0 REGR0: .BLKW 1 ;r0 REGR1: .BLKW 1 ;r1 REGR2: .BLKW 1 ;r2 (dev pointer) REGR3: .BLKW 1 ;r3 (par pointer) REGR4: .BLKW 1 ;r4 (reg pointer) REGR5: .BLKW 1 ;r5 (psa pointer) REGPC: .BLKW 1 ;pc (program counter) REGPS: .BLKW 1 ;ps (processor status) REGEND = . ;end of register save area ; ; Parameter save area (par) ; . = 0 PARPID: .BLKB 1 ;pid PARIDX: .BLKB 1 ;index PARTPE: .BLKW 1 ;type PARMAX: .BLKW 1 ;max blocks PARVEC: .BLKW 1 ;interrupt vector ptr/psa length PARREG: .BLKW 1 ;device register ptr/temporary PAROPT: .BLKW 1 ;option bits PARLNG: .BLKW 1 ;length of port table PARLDN = . ;beginning of port table ; ; Process save area (psa) ; . = 0 PSAPID: .BLKB 1 ;port id PSASTS: .BLKB 1 ;status bits .EVEN PSASTK: .BLKW 1 ;kernel stack pointer PSASTP: .BLKW 1 ;user/supervisor stack pointer PSAPAR: .BLKW 1 ;parameter area pointer PSAWDW: .BLKW 2 ;window segment block numbers (vos only) PSAMSG: .BLKW 2 ;message queue head PSACPQ: .BLKW 1 ;cpu queue pointer PSATMQ: .BLKW 1 ;timer queue pointer PSATIM: .BLKW 1 ;residual time to next timer interrupt PSACPU: .BLKW 1 ;accumulated time in ready state PSASYN: .BLKW 1 ;transfer vector pointer PSACOD: .BLKW 1 ;interrupt code PSAPRI: .BLKB 1 ;priority .EVEN PSAEND = . ;end of process save area .ENDM .PSA .MACRO .PAT LNG,ADR,PRI,VEC,?L ;process header .WORD LNG,PRI,ADR,L-.-2 .WORD VEC L: .ENDM .PAT .MACRO .TTD ;(must follow .psa macro) ; ; This macro contains parameter and process save area definitions ; For terminal devices. ; ; Option bits (paropt) ; DTEBIT = 000001 ;dce (0), dte (1) IMGBIT = 000002 ;ascii (0), image (1) MUXBIT = 000004 ;dl11 (0), dz11 (1) BRKBIT = 000010 ;break (0), dtr (1) (dz11 only) BZYBIT = 100000 ;device in use ; ; Auxilliary bits (paraux) ; HLDBIT = 100000 ;block-output bit BLKBIT = 040000 ;block-input bit BIPBIT = 020000 ;output timer bit CHRBIT = 010000 ;output char pending bit ESCBIT = 004000 ;select intercept bit STFBIT = 002000 ;output destuffing bit ; ; Interrupt codes ; INIT = 002+EXTBAS ;initialize SIO = 003+EXTBAS ;start i/o INTR = 004+EXTBAS ;device interrupt ; ; Ttd parameter save area extension (par) ; . = PARLDN PARPRT: .BLKW 4 ;0 usr port adr PARRMT: .BLKW 4 ;1 rmt port adr PARECP: .BLKW 4 ;2 adv port adr PARTLK: .BLKW 4 ;3 scp port adr PARAUX: .BLKW 1 ;auxilliary bits PARNBU: .BLKW 1 ;buffer overflow PARINR: .BLKW 1 ;input error PAROUT: .BLKB 1 ;destination pid PARMAR: .BLKB 1 ;output right margin PARPAG: .BLKB 1 ;output bottom margin PARXSC: .BLKB 1 ;intercept character .EVEN PARTTD = . ;end of ttd parameter area extension ; ; Process save area extension (ttr) ; . = PSAEND TTRMSG: .BLKW SD.END/2 ;parameter message TTREND = . ;end of ttr extension ; ; Process save area extension (ttx) ; . = PSAEND TTXMSG: .BLKW SD.END/2 ;parameter message TTXCOL: .BLKB 1 ;column counter TTXLIN: .BLKB 1 ;line counter TTXEND = . ;end of ttx extension .ENDM .TTD .MACRO .TTP ;(must follow .psa macro) ; ; Tty parameter save area extension (par) ; . = PARTTD PARPAD: .BLKW 1 ;carriage-return delay PARSET: .BLKW 1 ;control parameters PARLPR: .BLKW 1 ;line parameters (dz11 only) .ENDM .TTP .MACRO .SPD ;(must follow .psa macro) ; ; This macro contains parameter save area definitions ; For the linear predictive codec process. ; ; Parameter save area extension (lpc) ; . = PARLDN PARVOX: .BLKW 1 ;vox threshold PARON: .BLKB 1 ;vox attack tine constant PAROFF: .BLKB 1 ;vox release time constant PARDLY: .BLKB 1 ;ttg delay PARTRM: .BLKB 1 ;termination flags PARPOD: .BLKB 1 ;playout delay .EVEN .ENDM .SPD .MACRO .FLG ;define flag bits ; ; Flags bits (iohflg) ; TTIBIT = 040000 ;ttin wait bit TTOBIT = 020000 ;ttout wait bit SROBIT = 010000 ;server output select SECBIT = 004000 ;ttyin suspend bit IACBIT = 002000 ;telnet iac bit TDMBIT = 001000 ;telnet dm bit OPEBIT = 000400 ;server connection open CLSBIT = 000200 ;server close at .exit INTBIT = 000100 ;attention-interrupt bit CHRBIT = 000040 ;char-mode bit (for telnet) ENBBIT = 000020 ;emulator-mode bit NETRDY = 000010 ;server input ready bit SERBIT = 000004 ;soft error bit TELBIT = 000002 ;disable telnet negotiations TIMBIT = 000001 ;timer-interrupt bit .ENDM .FLG .MACRO .IOD ;define ioh extension ; ; Emulator monitor extension (ioh) ; . = 0 IOHFLG: .BLKW 1 ;000 event flags IOHCAP: .BLKW 1 ;002 capability flags IOHCSW = . ;beginning of channel table . = 266 ;reserve 4-264 ($csw) IOHBRK: .BLKW 1 ;266 ($usrlc) current program break IOHCLI: .BLKW 1 ;270 cli virtual address IOHBOT: .BLKW 1 ;272 low virtual address IOHTOP: .BLKW 1 ;274 high virtual address . = 302 ;reserve 276-300 (sysver, config) QUEBUF: .BLKW 1 ;302 signal queue pointer MSGBUF: .BLKW 1 ;304 message buffer pointer OUTBUF: .BLKW 1 ;306 output buffer pointer INPBUF: .BLKW 1 ;310 input buffer pointer CSIBUF: .BLKW 1 ;312 csi buffer pointer IOHPAR: .BLKW 1 ;314 parameter region pointer IOHGTI: .BLKW 1 ;316 buffer input get pointer IOHPTI: .BLKW 1 ;320 buffer input put pointer IOHGTO: .BLKW 1 ;322 buffer output get pointer IOHPTO: .BLKW 1 ;324 buffer output put pointer IOHISG: .BLKW 1 ;326 input buffer put segment pointer IOHDEV: .BLKW 1 ;330 current output device IOHERR: .BLKW 1 ;332 bus/instruction error trap address IOHFPA: .BLKW 1 ;334 floating-point trap address IOHSCC: .BLKW 1 ;336 attention-interrupt address IOHTIA: .BLKW 1 ;340 timer-interrupt address IOHTID: .BLKW 1 ;342 timer-interrupt id IOHPUT: .BLKW 1 ;344 signal queue put pointer IOHGET: .BLKW 1 ;346 signal queue get pointer IOHSIG: .BLKW 1 ;350 telnet server signal opcode IOHSRV: .BLKW 1 ;352 telnet server ccb pointer IOHDAT: .BLKW 1 ;354 telnet server message data IOHCTP: .BLKW 1 ;356 channel table pointer IOHWCT: .BLKW 1 ;360 words transferred last i/o operation IOHTIM: .BLKW 2 ;362 timer-interrupt residual time IOHDEC: .BLKW 1 ;364 decnet network header pointer IOHNCA: .BLKW 1 ;366 network trap address . = 372 ;reserve 370 (confg2) FLAG1: .BLKB 1 ;372 utility flag 1 FLAG2: .BLKB 1 ;373 utility flag 2 IOHRPY: .BLKB 1 ;374 reply port id IOHACK: .BLKB 1 ;375 input port id TELOPT: .BLKB 1 ;376 telnet command IOHSPD: .BLKB 1 ;377 suspend counter QUEENB: .BLKB 1 ;400 completion routine level IOHOSG: .BLKB 1 ;401 input buffer segment byte count IOHBAS: .BLKB 1 ;402 cli display/alter window pid QUESIG: .BLKB 1 ;403 signals queued .EVEN . = 406 ;reserve 404 (pnptr) . = 414 ;reserve 412 (suffix) IOHBLK: .BLKW 22. ;utility parameter area IOHUSR: .BLKB 16. ;login userid .EVEN IOHEND = . ;end of fixed offsets .ENDM .IOD .MACRO .CHN ; ; Chain area format ; . = 0 SRVNAM: .BLKW 4 ;server file name (rad50) ARGLNG: .BLKW 1 ;argument length ARGSTR: .BLKB 80. ;argument string CONBLK: .BLKW 10. ;tcp connection block (from $stat) LCLNAM: .BLKB 40. ;local host name RMTNAM: .BLKB 40. ;foreign host name ENDCHN = . ;end of chain area .ENDM .CHN .MACRO .CLP ; ; This macro defines the rt-11 dsect used by the cli and rt-11 emulator ; modules. it contains the rmon "monitor offset words", buffers and general ; communication areas used to run rt-11 programs. ; ; Note: (*) indicates format or function not compatible with rt-11 ; version 4 ; ; Process options (par) ; LOGIN$ = 000001 ;login required SERVE$ = 000002 ;tcp server active LGFIL$ = 000004 ;enable log file (log process) LGTTY$ = 000010 ;enable log device (log process) SMTPQ$ = 000020 ;enable mail (log process) SPOLQ$ = 000040 ;enable spool (log process) NTPGO$ = 000100 ;enable argument string (chain) ; ; Channel status table entry format ; . = 0 C.STAT: .BLKW 1 ;status word HDERR$ = 000001 ;i/o error INDX$M = 000076 ;index (bos ldn) mask (*) RENAM$ = 000100 ;rename bit DWRIT$ = 000200 ;directory write bit DBLK$M = 017400 ;directory block number mask EOF$ = 020000 ;end of file bit BUSY$ = 040000 ;channel busy bit ACTIV$ = 100000 ;channel open flag C.SBLK: .BLKW 1 ;starting block number C.LENG: .BLKW 1 ;maximum file length (blocks) C.USED: .BLKW 1 ;current file length (blocks) C.DEVQ: .BLKW 1 ;virtual volume id, unit id (*) CD.DIR = 200 ;directory-structured device CD.BLK = 100 ;block-transfer device CD.SPQ = 040 ;spool device ; ; System common area definitions ; . = 20 IOTVEC: .BLKW 2 ;20 iot vector . = 34 TRPVEC: .BLKW 2 ;34 trap vector USERPC: .BLKW 1 ;40 initial user pc USERSP: .BLKW 1 ;42 initial user sp JSW: .BLKW 1 ;44 job status word (*) GTLIN$ = 000010 ;1: nonterminating .gtlin ESCSQ$ = 000020 ;1: esc sequence in progress ESCFL$ = 000040 ;1: esc sequence enabled TCBIT$ = 000100 ;1: inhibit terminal wait HLTER = 000200 ;1: halt on i/o error CHAIN$ = 000400 ;1: chain OVLY$ = 001000 ;1: overlay module VIRT$ = 002000 ;1: virtual-image module CHNIF$ = 004000 ;1: pass line to monitor TTSPC$ = 010000 ;0: line mode, 1: character mode RSTRT$ = 020000 ;1: restart enabled TTLC$ = 040000 ;1: lower-case input USWAP$ = 100000 ;usr swap control USRBGN: .BLKW 1 ;46 usr load address USRTOP: .BLKW 1 ;50 high memory address ERRBYT: .BLKB 2 ;52 system/user error bytes SYSPTR: .BLKW 1 ;54 monitor address TERMIN: .BLKB 2 ;56 terminal fill control ; ; Rt-11 monitor offset words (used by rt-11 emulator) ; . = 0 $RMON: .BLKW 2 ;000 interrupt address: jmp $inten $CSW: .BLKW 5*16. ;004 channel table (16 channels) $SYSCH: .BLKW 5 ;244 internal channel (kmon only) BLKEY: .BLKW 1 ;256 active directory block number CHKEY: .BLKW 1 ;260 active directory device $DATE: .BLKW 1 ;262 current date DFLG: .BLKW 1 ;264 directory operation in progress flag $USRLC: .BLKW 1 ;266 usr area pointer QCOMP: .BLKW 1 ;270 i/o exit address SPUSR: .BLKW 1 ;272 special device error flag SYUNIT: .BLKW 1 ;274 system boot device SYSVER: .BLKW 1 ;276 monitor version/release number CONFIG: .BLKW 1 ;300 configuration word FBMON$ = 000001 ;0: sj monitor, 1: fb/xm monitor FUZZY$ = 000002 ;0: rt-11, 1: fuzzball (*) BIT22$ = 000004 ;0: 18-bit bus, 1: 22-bit bus (*) BATCH$ = 000010 ;1: batch controls background CLK50$ = 000040 ;0: 60-hz clock, 1: 50-hz clock HWFPU$ = 000100 ;1: fp11 floating-point unit present FJOB$ = 000200 ;1: foreground/system job active GTLNK$ = 000400 ;1: graphics scroller active USR$ = 001000 ;1: usr permanently resident QUEUE$ = 002000 ;1: queue program running LSI11$ = 004000 ;1: no ps (lsi-11) KT11$ = 010000 ;1: xm monitor mapped system LKCS$ = 020000 ;1: line clock has csr KW11P$ = 040000 ;1: kw11-p clock present CLOCK$ = 100000 ;1: system clock present SCROLL: .BLKW 1 ;302 vt11 scroller entry address TTKS: .BLKW 2 ;304 console input register addresses TTPS: .BLKW 2 ;310 console output register addresses MAXBLK: .BLKW 1 ;314 maximum file size (blocks) E16LST: .BLKW 1 ;316 emt dispatch table pointer (batch only) CNTXT: .BLKW 1 ;320 impure area pointer JOBNUM: .BLKW 1 ;322 job number SYNCH: .BLKW 1 ;324 .synch entry address LOWMAP: .BLKW 12 ;326 low-memory protection bit map USRLOC: .BLKW 1 ;352 usr entry address GTVEC: .BLKW 1 ;354 vt11 display stop vector address ERRCNT: .BLKW 1 ;356 error count $MTPS: .BLKW 1 ;360 move to ps routine address $MFPS: .BLKW 1 ;362 move from ps routine address SYINDX: .BLKW 1 ;364 system device index STATWD: .BLKW 1 ;366 indirect file state word CONFG2: .BLKW 1 ;370 extension configuration word CACHE$ = 000001 ;1: cache memory present MPTY$ = 000002 ;1: parity memory present SWREG$ = 000004 ;1: switch register present LIGHT$ = 000010 ;1: lights register present EIS$ = 000400 ;1: eis option present VS6$0 = 001000 ;0: vt11, 1: vs60 PDP70$ = 040000 ;1: pdp11/70 PDP60$ = 100000 ;1: pdp11/60 SYSGEN: .BLKW 1 ;372 sysgen features word USRARE: .BLKW 1 ;374 size of usr (bytes) ERRLEV: .BLKW 1 ;376 error count abort threshold EMTRTN: .BLKW 1 ;400 internal offset (batch only) FORK: .BLKW 1 ;402 offset of .fork routine PNPTR: .BLKW 1 ;404 offset of $pname table MONAME: .BLKW 2 ;406 name of monitor file (rad50) SUFFIX: .BLKW 1 ;412 suffix of monitor name CLPEND = . ;414 end of monitor offset words .ENDM .CLP .MACRO .DFBLK ;define block transfer command codes ; ; Block transfer command codes ; BC.NOP = 1*4 ;no-operation BC.RED = 2*4 ;read block BC.WRT = 3*4 ;write block BC.WCK = 4*4 ;write check block BC.SEK = 5*4 ;seek block BC.CTL = 6*4 ;send controller data BC.SNS = 7*4 ;read controller data ; ; Block transfer reply codes ; BR.OK = 0*40 ;normal reply BR.EOF = 1*40 ;end of file BR.ERR = 2*40 ;unspecified error BR.PAR = 3*40 ;command specification error BR.DCK = 4*40 ;data check BR.OVR = 5*40 ;data overrun BR.SCK = 6*40 ;seek or position error .ENDM .MACRO .DSK ;(must follow .psa macro) ; ; This module contains parameter and process save area extensions ; For direct-access devices (disk/tape). ; ; Parameter save area extension (par) ; . = PARLDN PARCRC: .BLKW 1 ;data checks PARSEK: .BLKW 1 ;seek errors PARTRY: .BLKW 1 ;total retries PARERR: .BLKW 1 ;hard errors ; ; Assembly parameters ; DSKSTK = 10 ;dsk process stack length ; ; Process save area extension (das) ; . = PSAEND DASPAR: .BLKW SD.END/2 ;parameter message DASOPN = DASPAR+SD.CTL ;operation code DASDRV = DASPAR+SD.DEV ;drive number DASBLK: .BLKW 1 ;current block number DASRWC: .BLKW 1 ;residual word count DASADR: .BLKW 1 ;physical address bits 0-15 DASERC: .BLKB 1 ;error retry count DASADX: .BLKB 1 ;physical address bits 16-21 .EVEN DASEND = . ;end of das extension .ENDM .DSK .MACRO .FAX ;dacom 450 device par region ; ; Parameter save area (par) ; . = PARLDN PARHRD: .BLKW 1 ;hard errors PARURE: .BLKW 1 ;unreported errors PARERR: .BLKW 1 ;hardware error (overrun) PAROVF: .BLKW 1 ;buffer overflow .ENDM .FAX .MACRO .SUP ;hostel proc ; ; Option bits (paropt) ; CLKHLD = 100000 ;enable reset following leap CLKTRC = 020000 ;trace all clock updates ; ; Parameter save area (hos) ; . = PARLDN PARPRO: .BLKW 1 ;processes PARINT: .BLKW 1 ;interrupt vectors PARNIB: .BLKW 1 ;nibbles PARCNG: .BLKW 1 ;packets PARPKT: .BLKW 2 ;free storage ; PARCLK: .BLKW SD.END/2 ;last clock update CLKCTL = PARCLK ;trap control CLKTYP = PARCLK+2 ;clock type CLKSTR = PARCLK+3 ;clock stratum CLKERR = PARCLK+4 ;clock dispersion CLKREF = PARCLK+6 ;clock offset (3 words) CLKPRE: .BLKW 1 ;precision of local clock CLKDRF: .BLKW 1 ;estimated drift rate PARINC: .BLKW 2 ;last clock update increment PARUPT: .BLKW 2 ;uptime PARDCC: .BLKW 1 ;drift compensation coefficient PARCGT: .BLKW 1 ;congestion threshold PARRTC: .BLKW 2 ;routing changes PARTRN: .BLKW 2 ;routing-trace address ; PARTRB: .BLKW SD.END/2 ;last trap PARTRL: .BLKW 1 ;lost traps PARCKH: .BLKB 1 ;master clock hid PARIPH: .BLKB 1 ;scanner process hid PARTRP: .BLKB 1 ;trap process pid .EVEN ; PARIDS: .BLKW 1 ;internet address relative pointer PARVPT: .BLKW 1 ;foreign host table virtual pointer PARLCL: .BLKW 2 ;local host table physical pointer PARNET: .BLKW 2 ;foreign host table physical pointer PARHOS: .BLKW 2 ;routing table physical pointer ; PARPDN: .BLKW 4 ;sequence number, pc, code, active proc PARPDR: .BLKW 10 ;registers r0-r5,sp,pc PARPDS: .BLKW 10 ;stack contents PARPDP: .BLKW 30 ;psa contents PARTRC = . ;beginning of trace area .ENDM .SUP .MACRO .GAT ;gateway/bridge proc ; ; Assembly parameters ; POLCON = 2 ;poll interval (for 4x base) ; ; Option bits (paropt) ; HLOBIT = 040000 ;send hello XLPBIT = 020000 ;external loopback BSTBIT = 010000 ;point-point (0), broadcast (1) GATBIT = 004000 ;clone (0), foreign (1) DWNBIT = 002000 ;disable routing KILBIT = 001000 ;disable link DLXBIT = 000400 ;measured delay (0), configured delay (1) ERMBIT = 000200 ;disable network-level advisories SBNBIT = 000100 ;subnet hello DLMBIT = 000040 ;disable link-level advisories ; ; Extended interrupt codes ; ASY = 1 ;asynchroonous interrupt INI = 2 ;initialize SIO = 3 ;start i/o INT = 4 ;device interrupt RSX = 5 ;reset link (output only) ; ; Leader linkage codes ; INR = 0 ;initialize input INP = 1 ;start input SDR = 2 ;process leader RDR = 3 ;process redirect INX = 4 ;initialize output OUT = 5 ;start output RST = 6 ;reset link ; ; Parameter save area (gat) ; . = PARLDN PARPRT: .BLKW 4 ;0 direct-access port adr PARRMT: .BLKW 4 ;1 monitor port adr PARSBT: .BLKW 1 ;subnet type PARSBN: .BLKW 1 ;pointer to subnet transfer vector PARTRY: .BLKW 1 ;poll interval PARTSP: .BLKW 1 ;offset of last hello msg PARTFL: .BLKW 1 ;length of last hello msg PARADR: .BLKW 2 ;foreign address PARBIA: .BLKW 1 ;delay bias PARRHO: .BLKW 1 ;queue size PARSTX: .BLKB 1 ;status PARMIN: .BLKB 1 ;hello interval (polls) PARSLB: .BLKB 1 ;select bit .EVEN ; statistics area PARINP: .BLKW 2 ;input packets PARFMT: .BLKW 1 ;bad format PARCKS: .BLKW 1 ;bad checksum PARMIS: .BLKW 1 ;dropped PARHLO: .BLKW 2 ;hello message received PARERR: .BLKW 1 ;input errors PARRTN: .BLKW 1 ;returned PARNBF: .BLKW 1 ;no buffer PAROUT: .BLKW 2 ;output packets PARFRG: .BLKW 1 ;fragment error PARTTL: .BLKW 1 ;time exceeded PARPMP: .BLKW 1 ;preempted PARHLX: .BLKW 2 ;hello messages sent PARNRY: .BLKW 1 ;output errors PARRET: .BLKW 1 ;icmp messages PARQNC: .BLKW 1 ;quench messages PARPRI = . ;end of primary area ; ; Serial-line extension ; . = PARPRI PARIOV: .BLKW 1 ;receive errors PAROOV: .BLKW 1 ;transmit errors PARBZY: .BLKW 1 ;no buffer PARPAM: .BLKW 1 ;preamble errors PARVIO: .BLKW 1 ;protocol errors PARBOX: .BLKW 1 ;mailbox ; ; Arpanet extension ; . = PARPRI PARLDR: .BLKW 1 ;control messages PARLDE: .BLKW 1 ;control errors PARLDL: .BLKW 5 ;last control message PARLDX = . ;end of control area ; ; Assembly parameters ; NTISTK = 16. ;nti process stack length (words) NTOSTK = 16. ;nto process stack length (words) .EVEN ; ; Process save area extension (ntr) ; . = PSAEND NTRTIM: .BLKW 2 ;last timestamp NTRLNA: .BLKB 10. ;sender local address .EVEN GATENR = . ;end of receive extension ; ; Process save area extension (ntx) ; . = PSAEND DASPAR = . ;parameter message RPYPID: .BLKB 1 ;SD.DST (destination port id) TYPE: .BLKB 1 ;SD.CTL (control code) SIGNAL: .BLKB 1 ;SD.CHN (signal opcode) FRMPID: .BLKB 1 ;SD.DEV (source port id) MSGIDN: .BLKW 1 ;SD.BLK (connection id) MSGDAT: .BLKW 1 ;SD.ADR (message data) MSGIDM: .BLKW 2 ;SD.CNT,SD.AST (message id/preempt addr) RESTIM: .BLKW 1 ;residual time to next poll HLOTIM: .BLKW 1 ;residual polls to next hello FRGINF: .BLKW 1 ;fragment info NTXBGN: .BLKW 1 ;beginning of fragment data NTXEND: .BLKW 1 ;end of fragment data PMPLNK: .BLKW 3 ;preemption controls GATPTR: .BLKW 1 ;type-1 hello pointer ACCTIM: .BLKW 1 ;accumulated queue time since last poll HLDOFF: .BLKW 1 ;clock holdoff counter GATENX = . ;end of transmit extension .ENDM .GAT .MACRO .TAP ;tapr packet radio ; ; Assembly parameters ; CMDLEN = 82. ;max command length (including header) SPFMAX = 100. ;max spf list entries CHNMAX = 5 ;max channels (must match tapr) CALMAX = 10. ;max callsign length (including backstop) MSGMAX = 81. ;max display msg length (including backstop) RUTMAX = 9. ;max route length (including backstop) ; ; Channel table entry format ; . = 0 CT.STA: .BLKB 1 ;state CT.TTL: .BLKB 1 ;time to live CT.NID: .BLKB 1 ;node id CT.WGT: .BLKB 1 ;route weight CT.TYP: .BLKB 1 ;last message type CT.MSG: .BLKB MSGMAX ;last message data .EVEN CT.LEN = . ;length of channel table entry ; ; Node table entry format ; . = 0 RT.UPD: .BLKW 2 ;time last heard RT.SRC: .BLKB CALMAX ;callsign RT.CNG: .BLKB 1 ;number of incident links RT.TYP: .BLKB 1 ;flags RT.WGT: .BLKB 1 ;route weight RT.PEA: .BLKB RUTMAX ;route .EVEN RT.LEN = . ;length of node table entry ; ; Link table entry format ; . = 0 LT.TO: .BLKB 1 ;to nid LT.FM: .BLKB 1 ;from nid LT.TTL: .BLKB 1 ;age LT.TYP: .BLKB 1 ;flags LX.SRC = 001 ;source LX.DIG = 002 ;digipeated LX.HRD = 004 ;verified path LX.SYN = 010 ;synchronized LX.RCL = 020 ;reciprocal LX.IPR = 040 ;ip indicator LX.END = 200 ;last entry .EVEN LT.LEN = . ;length of link table entry ; ; Parameter save area extension (pax) ; . = PARPRI ; ; Path weight factors (for spf) ; PAXW0: .BLKW 1 ;baseline PAXW1: .BLKW 1 ;digipeated PAXW2: .BLKW 1 ;unverified PAXW3: .BLKW 1 ;unsychronized PAXW4: .BLKW 1 ;reciprocal PAXW5: .BLKW 1 ;countdown interval (hello intervals) PAXW6: .BLKW 1 ;max link age PAXW7: .BLKW 1 ;initial route number (debug) ; PAXSRC: .BLKW 1 ;offset to node table PAXLNK: .BLKW 1 ;offset to link table PAXCHN: .BLKB 1 ;direct access channel PAXENB: .BLKB 1 ;poll control PAXPOL: .BLKB 1 ;poll channel PAXSRX: .BLKB 2 ;max, remaining nodes PAXLNX: .BLKB 2 ;max, remaining links PAXQRZ: .BLKB CALMAX ;callsign buffer ; PAXCTL: .BLKB 1 ;type PAXHRD: .BLKB 1 ;heard PAXDST: .BLKB 1 ;destination PAXRUT: .BLKB RUTMAX ;route .EVEN PAXCTB = . ;channel table ; ; Process save area extension (asr) ; . = GATENR ASRSTA: .BLKW 1 ;input state ASRADR: .BLKW 1 ;buffer pointer ASRCNT: .BLKW 1 ;byte count ASRBCT: .BLKW 1 ;max byte count ASRMSG: .BLKW SD.END/2 ;stream message buffer ASRHDR: .BLKB 1 ;channel number ASRPCT: .BLKB 1 ;timeout counter .EVEN .BLKW REGEND/2+NTISTK+10 ;process stack ASREND = . ;end of asr extension ; ; Process save area extension (asx) ; . = GATENX ASXSTA: .BLKW 1 ;output state ASXADR: .BLKW 1 ;buffer pointer ASXCNT: .BLKW 1 ;byte count ASXPTR: .BLKW 1 ;message buffer pointer ASXMIN: .BLKW 1 ;spf min weight ASXSUC: .BLKW 2 ;spf successor ASXTMP: .BLKW 3 ;spf temporary ASXSPF: .BLKW SPFMAX*3+1 ;spf list ASXFLR: .BLKB 1 ;spf route number ASXHOP: .BLKB 1 ;spf max hops ASXSPC: .BLKB 1 ;spf list size ASXLNT: .BLKB 1 ;minute countdown ASXLHR: .BLKB 1 ;hour countdown ASXHDR: .BLKB 2 ;message header ASXBUF: .BLKB CMDLEN ;message buffer .EVEN .BLKW REGEND/2+NTOSTK+10 ;process stack ASXEND = . ;end of asx extension .ENDM .TAP .MACRO .ETH ;define ethernet storage areas ; ; Ethernet extension (eth) ; . = PARPRI ETHADR: .BLKW 3 ;ethernet address ETHAQR: .BLKW 1 ;arp requests received ETHIQR: .BLKW 2 ;last request received for IP address ETHARX: .BLKW 1 ;arp replies sent ETHEQR: .BLKW 3 ;last reply sent to Ether address ETHAQX: .BLKW 1 ;arp requests sent ETHIQX: .BLKW 2 ;last request sent for IP address ETHARR: .BLKW 1 ;arp replies received ETHEQX: .BLKW 3 ;last reply received from Ether address ETHAXX: .BLKW 1 ;arp output errors ETHIAX: .BLKW 2 ;last output error for IP address ETHAXR: .BLKW 1 ;arp input errors ETHIAR: .BLKW 3 ;last input error from Ether address ETHLEN = . ;end of eth extension .ENDM .ETH .MACRO .DMV ;define dmv storage areas ; ; DMV11 extension (dms) ; . = PARPRI STATUS: .BLKW 1 ;status vector CYCLES: .BLKW 1 ;statistics cycles ERRLOG: .BLKW 16. ;control reply counters DMSPTR: .BLKW 1 ;statistics pointer DMSCTL: .BLKW 2 ;error messages\code DMSINF: .BLKW 2 ;modem status messages\code DMSDAO: .BLKW 2 ;(t12) outbound data errors\flags DMSDAI: .BLKW 2 ;(t13) inbound data errors\flags DMSBFL: .BLKW 2 ;(t14) local buffer errors\flags DMSBFR: .BLKW 2 ;(t15) remote buffer errors\flags DMSTOR: .BLKW 1 ;(t17l) remote timeouts DMSTOL: .BLKW 1 ;(t17h) local timeouts DMSGSO: .BLKW 2 ;(g15) outbound station errors\flags DMSGSI: .BLKW 2 ;(g16) inbound station errors\flags DMSGCK: .BLKW 1 ;(g17l+g17h) header checksum errors DMSEND = . ;end of statistics area .ENDM .DMV .MACRO .X25 ;define x25 storage areas ; ; Assembly parameters ; QUESIZ = 8. ;max csr queue elements ; ; Queue entry format ; . = 0 Q.DPN: .BLKB 1 ;data path number Q.OPN: .BLKB 1 ;operation Q.FUN: .BLKB 1 ;function Q.FLG: .BLKB 1 ;flags Q.ADR: .BLKW 1 ;address Q.CNT: .BLKW 1 ;count Q.LEN = . ;end of queue entry ; ; x25 interface leader format ; . = 0 X2.DPN: .BLKB 1 ;data path number X2.OPN: .BLKB 1 ;interface operation XO.RED = 1*2 ;read XO.WRT = 2*2 ;write/end XO.SIG = 3*2 ;write/signal X25LEN = . ;beginning of command portion X2.CMD: .BLKB 1 ;command code X2.LCN: .BLKB 1 ;logical channel number X2.VCN: .BLKB 1 ;virtual circuit number/cause code X2.CNT: .BLKB 1 ;byte count X2.DAT = . ;beginning of data portion ; ; Logical channel entry format ; . = 0 CB.STA: .BLKB 1 ;state CB.FLG: .BLKB 1 ;flags CB.TTL: .BLKB 1 ;time-to-live counter CB.VCN: .BLKB 1 ;virtual circuit number .EVEN CB.ADR: .BLKW 2 ;internet address CB.LEN = . ;length of connection block ; ; Parameter area extension (par) ; . = PARPRI QUEPUT: .BLKW 1 ;input queue put pointer QUEGET: .BLKW 1 ;input queue get pointer QUEBGN: .BLKW 1 ;beginning of queue QUEEND: .BLKW 1 ;end of queue X25CNT: .BLKW 1 ;output count X25CMD: .BLKB 50. ;output command buffer (word aligned) DPNMAX: .BLKB 1 ;max dpn LCNMAX: .BLKB 1 ;max lcn X25LCN: .BLKB 1 ;output lcn X25FLG: .BLKB 1 ;driver flags X25PID: .BLKB 1 ;output pid .EVEN QUEUE: .BLKW QUESIZ*Q.LEN/2 ;csr queue X25BLK = . ;beginning of channels .ENDM .X25 .MACRO .IPD ;internet process ; ; Parameter save area (ipd) ; . = PARLDN PARTOT: .BLKW 2 ;input packets PARFTO: .BLKW 1 ;timeouts PARSIG: .BLKW 1 ;net signals PARIPF: .BLKW 1 ;bad format PARIPX: .BLKW 1 ;bad checksum PARECH: .BLKW 1 ;returned PARECM: .BLKW 1 ;dropped PARIPR: .BLKW 1 ;control messages PARTOP: .BLKW 2 ;output packets PARCNT: .BLKB 1 ;connection table size PARHID: .BLKB 1 ;host id PARNBS = . ;beginning of connection table/nbs clock area PARNBP: .BLKW 2 ;poll messages PARNBR: .BLKW 1 ;no reply PARNBX: .BLKW 1 ;bad format PARNBD: .BLKW 1 ;bad data PARLST: .BLKW 1 ;last set PARVLF: .BLKB 1 ;valid data flag PARNBM: .BLKB 64. ;timecode buffer .EVEN ; ; Option bits (paropt) ; XLPBIT = 020000 ;ip loopback (1) CLKBIT = 010000 ;clock data valid (1) TRKBIT = 004000 ;disable clock tracking (1) ; ; Process save area extension (inp) ; . = PSAEND DASPAR = . ;parameter message RPYPID: .BLKB 1 ;SD.DST (destination port id) TYPE: .BLKB 1 ;SD.CTL (control code) SIGNAL: .BLKB 1 ;SD.CHN (signal opcode) FRMPID: .BLKB 1 ;SD.DEV (source port id) MSGIDN: .BLKW 1 ;SD.BLK (connection id) MSGDAT: .BLKW 1 ;SD.ADR (message data) MSGIDM: .BLKW 2 ;SD.CNT,SD.AST (message id) RESTIM: .BLKW 1 ;residual ticks to next poll CODE: .BLKW 1 ;icmp error code CONLST: .BLKW 1 ;end of connection table SRVPTR: .BLKW 1 ;universal server connection pointer TABTIM: .BLKW 1 ;residual ticks to next host table scan TCPBGN = . ;end of common area .ENDM .IPD .MACRO .KWTAB NAME,ENTRY ;construct kwik table entry .RAD50 /NAME/ ;command name .WORD ENTRY-. ;service routine entry .ENDM .KWTAB .MACRO .TRDEF ;define trap/clock codes TR.CLK = 0*4 ;clock monitor TR.IMP = 1*4 ;icmp received message TR.LUP = 2*4 ;link up TR.LDN = 3*4 ;link down TR.PMP = 4*4 ;buffer preemption TR.LDR = 5*4 ;link status TR.TCR = 6*4 ;tcp receive data segment TR.TCX = 7*4 ;tcp transmit data segment TR.SPW = 10*4 ;tcp doorbell TR.SMP = 11*4 ;spool request TR.DSK = 12*4 ;disk error TR.DMN = 13*4 ;daemon error TR.RUT = 14*4 ;route change TR.DWN = 15*4 ;route down TR.PSN = 16*4 ;PSN error message TR.ERR = 17*4 ;icmp rceived message ; CK.UNS = 0 ;unspecified or unknown CK.ATM = 1 ;atom (cesium, hydrogen, etc.) CK.GPS = 2 ;global position system CK.LRN = 3 ;loran-c CK.WWB = 4 ;longwave (dcf77/msf/wwvb) CK.WWV = 5 ;shortwave (chu/wwv/wwvh) CK.GOS = 6 ;satellite (goes) CK.DCN = 7 ;dcn (local net) CK.NTP = 8. ;udp/ntp CK.UDP = 9. ;udp/time CK.MAN = 10. ;eyeball-and-wristwatch CK.MDM = 11. ;nist modem .ENDM .TRDEF .MACRO .TRAP TYPE,A,B,C,D,E ;send trap message .MCALL .PUTDA .IF NB, .IF NB, .IF NB, MOV E,-(SP) ;SD.AST .IFF CLR -(SP) .ENDC .IF NB, MOV D,-(SP) ;SD.CNT .IFF CLR -(SP) .ENDC .IF NB, MOV C,-(SP) ;SD.ADR .IFF CLR -(SP) .ENDC .IF NB, MOV B,-(SP) ;SD.BLK .IFF CLR -(SP) .ENDC MOV A,-(SP) ;SD.CHN,SD.DEV .ENDC MOV #TRPCTL*400,-(SP) ;SD.DST,SD.CTL BISB TYPE,1(SP) ;type code MOV SP,R0 .PUTDA R0 ROL R0 ;preserve c bit ADD #2*6,SP ROR R0 .IFF .PUTDA .ENDC .ENDM .TRAP .MACRO $OPEN ;ip open function MOV #0,R0 .GLOBL $CTRL JSR PC,$CTRL .ENDM $OPEN .MACRO $CLOSE ;ip close function MOV #1,R0 .GLOBL $CTRL JSR PC,$CTRL .ENDM $CLOSE .MACRO $STAT ;ip status function MOV #2,R0 .GLOBL $CTRL JSR PC,$CTRL .ENDM $STAT .MACRO $GTPKT ;allocate and initialize internet packet MOV #3,R0 .GLOBL $CTRL JSR PC,$CTRL .ENDM $GTPKT .MACRO $INPKT ;initialize internet packet MOV #4,R0 .GLOBL $CTRL JSR PC,$CTRL .ENDM $INPKT .MACRO $SNPKT ;send internet packet MOV #5,R0 .GLOBL $CTRL JSR PC,$CTRL .ENDM $SNPKT .MACRO $FRPKT ;free internet packet MOV #6,R0 .GLOBL $CTRL JSR PC,$CTRL .ENDM $FRPKT .MACRO $SNOPT ;send options MOV #7,R0 .GLOBL $CTRL JSR PC,$CTRL .ENDM $SNOPT .MACRO .MSG LDN ;switch output stream for .ttyou .IF NB, .IF DIF,,R0 .IF IDN,,#0 .IFT CLR R0 .IFF MOV LDN,R0 ;get ldn .ENDC .ENDC .ENDC EMT ^O<002+USEBAS> .ENDM .MSG .MACRO .EVENT ;wait for event EMT ^O<004+USEBAS> .ENDM .EVENT .MACRO .ENBCR ;enable completion interrupt EMT ^O<005+USEBAS> .ENDM .ENBCR .MACRO .DSBCR ;disable completion interrupt EMT ^O<006+USEBAS> .ENDM .DSBCR .MACRO $LOAD ;load program EMT ^O<007+USEBAS> .ENDM $LOAD .MACRO $RECV ;tcp receive data EMT ^O<010+USEBAS> .ENDM $RECV .MACRO $SEND ;tcp send data EMT ^O<011+USEBAS> .ENDM $SEND .MACRO $INT ;send tcp interrupt EMT ^O<013+USEBAS> .ENDM $INT .MACRO .INIT ;000 system reset EMT ^O<000+SUPBAS> .ENDM .INIT .MACRO .PSEM PID ;001 semaphore p-operation .IF NB, .IF DIF,,R1 MOVB PID,R1 .ENDC .ENDC EMT ^O<001+SUPBAS> .ENDM .PSEM .MACRO .VSEM PID ;002 semaphore v-operation .IF NB, .IF DIF,,R1 MOVB PID,R1 .ENDC .ENDC EMT ^O<002+SUPBAS> .ENDM .VSEM .MACRO .SKED ;003 schedule process EMT ^O<003+SUPBAS> .ENDM .SKED .MACRO .SETC ;004 set process condition code EMT ^O<004+SUPBAS> .ENDM .SETC .MACRO .PRIO ;005 set process priority EMT ^O<005+SUPBAS> .ENDM .PRIO .MACRO .SETV ;006 attach interrupt EMT ^O<006+SUPBAS> .ENDM .SETV .MACRO .WAITS ;007 wait for interrupt EMT ^O<007+SUPBAS> .ENDM .WAITS .MACRO .GPKT ;010 get packet EMT ^O<010+SUPBAS> .ENDM .GPKT .MACRO .FPKT ADR ;011 free packet .IF NB, .IF DIF,,R0 MOV ADR,R0 .ENDC .ENDC EMT ^O<011+SUPBAS> .ENDM .FPKT .MACRO .TSEM PID ;012 semaphore t-operation .IF NB, .IF DIF,,R1 MOVB PID,R1 .ENDC .ENDC EMT ^O<012+SUPBAS> .ENDM .TSEM .MACRO .PPKT ;013 preempt packet EMT ^O<013+SUPBAS> .ENDM .PPKT .MACRO .PUTDA PTR ;014 send message to port .IF NB, .IF DIF,,R0 MOV PTR,R0 .ENDC .ENDC EMT ^O<014+SUPBAS> .ENDM .PUTDA .MACRO .GETDA PTR,TIM ;015 receive message from port .IF NB, .IF DIF,,R0 MOV TIM,R0 .ENDC .IFF CLR R0 .ENDC .IF NB, .IF DIF,,R1 MOV PTR,R1 .ENDC .ENDC EMT ^O<015+SUPBAS> .ENDM .GETDA .MACRO .ASYN ;016 send interrupt to port EMT ^O<016+SUPBAS> .ENDM .ASYN .MACRO .STIM ;017 set interval timer EMT ^O<017+SUPBAS> .ENDM .STIM .MACRO .CTIM ;020 clear interval timer EMT ^O<020+SUPBAS> .ENDM .CTIM .MACRO .DLAY ;021 wait for interval timer EMT ^O<021+SUPBAS> .ENDM .DLAY .MACRO .TPKT ;022 scavenge packet EMT ^O<022+SUPBAS> .ENDM .TPKT .MACRO .GCLK ;023 get system clock EMT ^O<023+SUPBAS> .ENDM .GCLK .MACRO .GDAT ;025 get system date EMT ^O<025+SUPBAS> .ENDM .GDAT .MACRO .GMEM ;026 get free memory pointers EMT ^O<026+SUPBAS> .ENDM .GMEM .MACRO .GTAD ;027 get real address EMT ^O<027+SUPBAS> .ENDM .GTAD .MACRO .WIND ;030 map virtual window EMT ^O<030+SUPBAS> .ENDM .WIND .MACRO .UNIQ ;030 get unique number EMT ^O<031+SUPBAS> .ENDM .UNIQ .MACRO .GPSA ;032 get psa pointers EMT ^O<032+SUPBAS> .ENDM .GPSA .MACRO .GQNC ;033 get quench packet EMT ^O<033+SUPBAS> .ENDM .GQNC .MACRO .TRPID PID ;034 set trap process pid .IF NB, .IF DIF,,R1 MOVB PID,R1 .ENDC .ENDC EMT ^O<034+SUPBAS> .ENDM .TRPID .MACRO .BOOT ;035 system reboot EMT ^O<035+SUPBAS> .ENDM .BOOT .MACRO .SNCA AREA,ADDR,CODE ;set network trap .IF NDF ...V1 .MCALL .MACS .MACS .ENDC ...CM6 ,15.,0,,,E .ENDM @#Eew2 x2F&If"f #f-(hf@3$rf9%MfR.fX,Vf/xZf\}fz} f@~*ufu~f,Kr@`;OdUxiY VtY = ] Y`; Ys; ?.MACRO $DFTBL ;define host/gateway table format ; ; Logical host table ($gatad) format ; (this table is in the hos parameter area) ; . = 0 GATNET: .BLKW 2 ;internet address GATHID: .BLKB 1 ;host id GATFLG: .BLKB 1 ;flags GT.EGP = 001 ;egp entry GT.ALT = 002 ;enable alternate route if down GT.ERR = 004 ;force error message GT.END = 010 ;last entry GT.HLO = 020 ;hello entry GT.CAC = 040 ;cache entry GT.HOL = 100 ;suppress error message GT.TOS = 200 ;special service GATMSK: .BLKW 2 ;address mask GATLDR: .BLKW 2 ;gateway address GATHOP: .BLKB 1 ;distance GATTTL: .BLKB 1 ;time-to-live counter .EVEN GATLEN = . ;length of table entry ; ; Physical host table ($hosad) format ; (this table is in the hos parameter area) ; . = 0 HOSPID: .BLKB 1 ;local bridge process id HOSTTL: .BLKB 1 ;time-to-live counter HOSDLY: .BLKW 1 ;roundtrip delay HOSOFS: .BLKW 1 ;clock offset HOSTIM: .BLKW 2 ;last timestamp HOSLNA: .BLKW 3 ;local network leader HOSLEN = . ;length of table entry .ENDM $DFTBL .MACRO $DFTIM ;define network timout values ; ; System polling intervals and timeouts ; (all values are in milliseconds unless noted) ; TM.MIN = 100. ;min link delay TM.TTL = 30000. ;max link delay TS.LNK = 60. ;hold-down interval (sec) TM.INP = 500. ;internet process polling interval TM.ITO = 5000. ;tcp initial retransmission timeout TS.RFS = 15. ;tcp initial refusal (rst) timeout (sec) TS.ACK = 60. ;tcp ack timeout (sec) TS.ZLW = 600. ;tcp zero-window timeout (sec) TS.IDL = 3600. ;tcp idle-connection timeout (sec) .ENDM $DFTIM .MACRO $CNFIG ;define the system configuration ; ; The following define the processor configuartion. set one of ; the folllowing 3 equates to 1, the rest to 0 ; P1140 = 0 ;processor not an 11/40 P1120 = 0 ;processor not an 11/20 P1103 = 1 ;processor is an 11/03 (lsi-11) .IF NE P1140+P1120+P1103-1 .ERROR ERROR IN PROCESSOR SPECIFICATION, DEFAULT TO LSI-11 P1140=0 P1120=0 P1103=1 .ENDC .ENDM $CNFIG .MACRO $PUSH A1,A2,A3,A4,A5,A6,A7,A8 .IF B A1 .MEXIT .ENDC MOV A1,-(SP) .IF B A2 .MEXIT .ENDC MOV A2,-(SP) .IF B A3 .MEXIT .ENDC MOV A3,-(SP) .IF B A4 .MEXIT .ENDC MOV A4,-(SP) .IF B A5 .MEXIT .ENDC MOV A5,-(SP) .IF B A6 .MEXIT .ENDC MOV A6,-(SP) .IF B A7 .MEXIT .ENDC MOV A7,-(SP) .IF NB A8 .ERROR ;too many arguments to $push macro .ENDC .ENDM $PUSH .MACRO $POP A1,A2,A3,A4,A5,A6,A7,A8 .IF B A1 .MEXIT .ENDC MOV (SP)+,A1 .IF B A2 .MEXIT .ENDC MOV (SP)+,A2 .IF B A3 .MEXIT .ENDC MOV (SP)+,A3 .IF B A4 .MEXIT .ENDC MOV (SP)+,A4 .IF B A5 .MEXIT .ENDC MOV (SP)+,A5 .IF B A6 .MEXIT .ENDC MOV (SP)+,A6 .IF B A7 .MEXIT .ENDC MOV (SP)+,A7 .IF NB A8 .ERROR ;too many arguments to $pop macro .ENDC .ENDM $POP .MACRO $LOOP REG,LABEL .IF NE P1103!P1140 ;processor with extended instructions? SOB REG,LABEL .MEXIT .IFF ;if not, DEC REG BNE LABEL .ENDC .ENDM $LOOP .MACRO $ERROR .GLOBL $ERROR JSR PC,$ERROR .ENDM .MACRO $WAIT .GLOBL $WAIT JSR PC,$WAIT .ENDM $WAIT .MACRO $SGNLI TOPID,CODE,FMPID,MSGID,DATA,AXT,AST ;signal process .MCALL .PUTDA .IF NB,AST MOV AST,-(SP) ;SD.AST .IFF CLR -(SP) ;SD.AST .ENDC .IF NB,AXT MOV AXT,-(SP) ;SD.CNT .IFF CLR -(SP) ;SD.CNT .ENDC MOV DATA,-(SP) ;SD.ADR MOV MSGID,-(SP) ;SD.BLK MOVB CODE,-(SP) ;SD.CHN MOVB FMPID,1(SP) ;SD.DEV MOVB TOPID,-(SP) ;SD.DST MOVB #PKTCTL,1(SP) ;SD.CTL MOV SP,R0 .PUTDA R0 ADD #2*6,SP .ENDM $SGNLI .MACRO $SGNLT POLL ;set timer signal MOV POLL,RESTIM(R5) BISB #100,PSASTS(R5) ;*** temp *** .ENDM $SGNLT .MACRO $SGUSE CODE,DATA ;send signal to user process .IF DIF,,R0 MOV CODE,R0 .ENDC .IF NB, .IF DIF,,R1 MOV DATA,R1 .ENDC .ENDC JSR PC,$SGUSE .ENDM $SGUSE .MACRO $WAITS REG ;wait for signal .MCALL .GETDA CLR R0 BITB #100,PSASTS(R5) BEQ 97$ MOV RESTIM(R5),R0 BLE 99$ CLR RESTIM(R5) 97$: .GETDA REG,R0 BMI 99$ ADD R0,RESTIM(R5) CMPB SD.CTL(REG),#PKTCTL BNE 98$ MOVB SD.DEV(REG),SD.DST(REG) BR 98$ ; 99$: MOV #PKTCTL*400,SD.DST(REG) MOV #SG.TIM,SD.CHN(REG) BICB #100,PSASTS(R5) 98$: .ENDM $WAITS .MACRO $SIO IORBA CHKGN 1,IORBA .GLOBL $SIO JSR PC,$SIO .ENDM $SIO .MACRO $ASH COUNT,REG .IF NE P1145!PMDV ;if processor =pdp 11/45 or has mdv opt .IFT ; then do; .IF GT COUNT ; if count > 0 .IFT ; then do; .IF GT COUNT-^D2 ; if count > 2 .IFT ; then do; ASH #COUNT,REG ;perform requested shift .IFTF ; end; .IFF ; else do; .REPT COUNT ; thru count do; ASL REG ;shift one bit left .ENDR ; end; .ENDC ; end; .IFF ; else do; .IF LT COUNT+^D2 ; if count < -2 .IFT ; then do; ASH #COUNT,REG ;perform requested shift .IFTF ; end; .IFF ; else do; .REPT -COUNT ; thru -count do; ASR REG ;shift one bit right .ENDR ; end; .ENDC ; end; .ENDC ; end; .IFTF ; end; .IFF ; else do; .IF GT COUNT ; if count > 0 .IFT ; then do; .IF GE COUNT-^D8 ; if count >=8 .IFT ; then do; .IF EQ COUNT-^D8 ; if count = 8 .IFT ; then do; SWAB REG ;swap high and low bytes ASRB REG ;set carry bit BICB REG,REG ;clear low byte w/o clearing carry bit $ASCNT = ^D0 ; as_count = 0; .IFTF ; end; .IFF ; else do; SWAB REG ;swap high and low bytes CLRB REG ;clear low byte $ASCNT=COUNT-^D8; as_count = count - 8; .ENDC ; end; .IFTF ; end; .IFF ; else do; $ASCNT = COUNT ; as_count = count; .ENDC ; end; .REPT $ASCNT ; thru as_count do; ASL REG ;shift left one bit .ENDR ; end; .IFTF ; end; .IFF ; else do; .IF LT COUNT+^D8 ; if count < -8 .IFT ; then do; CLRB REG ;clear low byte SWAB REG ;swap high and low byte $ASCNT = -COUNT-^D8 ; as_count = -count - 8; .IFTF ; end; .IFF ; else do; $ASCNT = -COUNT ; as_count = -count; .ENDC ; end; .REPT $ASCNT ; thru as_count do; ASR REG ;shift right one bit .ENDR ; end; .ENDC ; end; .ENDC ; end; .ENDM $ASH .MACRO $ASHC COUNT,REG .IF NE P1145!PMDV ;if process = pdp 11/45 or has mdv opt .IFT ; then do; ASHC #COUNT,REG ;perform requested shift .IFTF ; end; .IFF ; else do; .IF LT COUNT ; if count < 0 .IFT ; then do; .REPT -COUNT ; thru -count do; ASR REG ;shift high register right one bit ROR REG+1 ;shift low register right one bit .ENDR ; end; .IFTF ; end; .IFF ; else do; .REPT COUNT ; thru count do; ASL REG+1 ;shift low register left one bit ROL REG ;shift high register left one bit .ENDR ; end; .ENDC ; end; .ENDC ; end; .ENDM $ASHC .MACRO DFCSB ;define connection specification block CS.CCB: .BLKW 1 ;ccb length CS.PRO: .BLKB 1 ;internet protocol CS.FLG: .BLKB 1 ;connection flags OP.USP = 200 ;unspecified OP.LSN = 100 ;listen OP.PRT = 040 ;match destination port OP.UDP = 020 ;suppress source address/port match OP.TRC = 010 ;enable trace OP.IDL = 004 ;enable idle timeout CS.LPO: .BLKW 1 ;local port CS.ADR: .BLKW 2 ;internet address CS.FPO: .BLKW 1 ;port CS.SIZ: .BLKW 1 ;max packet size CS.TOS: .BLKB 1 ;ip type of service CS.CNT: .BLKB 1 ;ip option byte count CS.OPT: .BLKW 20. ;ip option area (max) CS.LEN = . ;end of csb .ENDM DFCSB .MACRO $DFTCB ;define connection control block ; ; Connection control block (ccb) ; Protocol-independent parameter area ; . = 0 INPCID: .BLKW 1 ;internet process cid STATE: .BLKW 1 ;state flags ST.SS = 1 ;syn sent flag ST.SA = 2 ;syn acked flag ST.SR = 4 ;syn received flag ST.FS = 10 ;fin sent flag ST.FA = 20 ;fin acked flag ST.FR = 40 ;fin received flag ST.FNW = 4000 ;fin-wait mode ST.SPN = 10000 ;suspended mode ST.URG = 20000 ;urgent mode ST.DEL = 40000 ;delete connection ST.USP = 100000 ;connection unspecified FLAGS: .BLKW 1 ;tcp signal flags FL.FIN = 1 ;(tc.fin) send fin control function FL.SYN = 2 ;(tc.syn) send syn control function FL.RST = 4 ;(tc.rst) send rst error packet FL.EOL = 10 ;(tc.eol) send push function FL.ACK = 20 ;(tc.ack) force ack for packet received FL.URG = 40 ;(tc.urg) send urgent function FL.TXT = 400 ;need to send data FL.RTX = 1000 ;need to retransmit head of rtx queue FL.NUL = 2000 ;null (ack-only) packet FL.DUP = 4000 ;packet is a duplicate flag FL.CHK = 10000 ;need to check rsm queue ; ; Connection status block ; OPNPAR = . ;beginning of csb parameter area CCBFMT: .BLKW 1 ;ccb length CCBAST: .BLKW 1 ;completion routine PROTCL: .BLKB 1 ;internet protocol CCBFLG: .BLKB 1 ;connection flags OP.USP = 200 ;unspecified OP.LSN = 100 ;listen OP.PRT = 040 ;match destination port OP.UDP = 020 ;suppress source address/port match OP.TRC = 010 ;enable trace OP.IDL = 004 ;enable idle timeout OP.NGL = 001 ;enable nagle algorithm LSOCK: .BLKW 2 ;local internet address LPORT: .BLKW 1 ;local port FSOCK: .BLKW 2 ;foreign internet address FPORT: .BLKW 1 ;foreign port MAXSIZ: .BLKW 1 ;max packet size OPNOPT = . ;beginning of csb option area TYPSRV: .BLKB 1 ;ip type of service OPTCNT: .BLKB 1 ;ip option byte count OPTION: .BLKW 20. ;ip option area ; ; Operating system interface ; RTXTMO: .BLKW 1 ;retransmission timeout USECID: .BLKW 1 ;user process cid INPPID: .BLKB 1 ;internet process pid USEPID: .BLKB 1 ;user process pid SNDCNT: .BLKB 1 ;send packets outstanding ACKDLY: .BLKB 1 ;ack delay (tcp) .EVEN RTBLEN = . ;length of rtb ; ; Protocol-dependent area (udp) ; UDPSEQ: .BLKW 1 ;sequence check UDPLEN = . ;length of udp ccb ; ; Protocol-dependent area (tcp) ; Receive state variables ; . = RTBLEN INISEQ: .BLKW 2 ;initial receive sequence RCVSEQ: .BLKW 2 ;receive sequence RCVWS: .BLKW 1 ;receive window size RCVPP: .BLKW 1 ;receive push offset RCVUP: .BLKW 1 ;receive urgent offset ; ; Send state variables ; LWESEQ: .BLKW 2 ;left window edge sequence SNDSEQ: .BLKW 2 ;send sequence SNDWS: .BLKW 1 ;send window size SNDPP: .BLKW 1 ;send push offset SNDUP: .BLKW 1 ;send urgent offset ; ; Packetizing and retransmission controls ; CCBRLF: .BLKW 1 ;ccb relocation factor TCPSIZ: .BLKW 1 ;TCP max-size option SNDUVA: .BLKW 1 ;user buffer address SNDBR: .BLKW 1 ;user buffer count MAXSEG: .BLKW 1 ;max segment length MAXTXT: .BLKW 1 ;max text octets this packet RTXTIK: .BLKW 1 ;ticks to next rtx wakeup ACKTIK: .BLKW 1 ;ticks to next ack wakeup RETRY: .BLKW 1 ;no-reply timeout (polling cycles) RTXCNT: .BLKW 1 ;count of bytes in retransmision queue QUECNT: .BLKW 1 ;count of bytes in send queue RTXCC: .BLKW 1 ;count of control bytes in rtx queue ; ; Parameter estimation controls ; ESTEND: .BLKW 1 ;end of estimation buffer ESTLEN: .BLKW 1 ;size of estimation buffer ESTHD: .BLKW 1 ;estimation buffer head ESTTL: .BLKW 1 ;estimation buffer tail RTDRTX: .BLKW 1 ;last delay sample WDWCNT: .BLKB 1 ;external packets outstanding WDWTHR: .BLKB 1 ;max external packets ; ; Buffer pointers ; RCVIOR: .BLKW 1 ;input packet SNDIOR: .BLKW 1 ;output packet RSMEND: .BLKW 1 ;end of rsm buffer RSMLEN: .BLKW 1 ;size of rsm buffer RSMHD: .BLKW 1 ;head of rsm queue RSMTL: .BLKW 1 ;tail of rsm queue RTXEND: .BLKW 1 ;end of rtx buffer RTXLEN: .BLKW 1 ;size of rtx buffer RTXHD: .BLKW 1 ;head of rtx queue RTXTL: .BLKW 1 ;tail of rtx queue RF.FIN = 1 ;byte is fin control function RF.SYN = 2 ;byte is syn control function RF.EOL = 10 ;byte is push control function RF.TXT = 200 ;byte contains text ; ; Tcp measurement area ; NR.QNC: .BLKW 1 ;catenet source quench packets NR.DNR: .BLKW 1 ;catenet destination unreachable packets NR.PKT: .BLKW 1 ;number of packets received from net PR.BAD: .BLKW 1 ;number of packets rcvd with bad format ; too short, wrong version number ; or wrong header length PR.DMG: .BLKW 1 ;number of packets with bad checksum PR.SPC: .BLKW 1 ;number of special control or error PR.NOX: .BLKW 1 ;number of packets received on PR.REG: .BLKW 1 ;number of regular control or data ; packets received PR.NUL: .BLKW 1 ;number of null (ack only) pkts NR.TXT: .BLKW 1 ;number of text packets processed PR.DUP: .BLKW 1 ;number of duplicate packets received PR.OUT: .BLKW 1 ;packets outside window NR.SYN: .BLKW 1 ;number of syn's processed NR.FIN: .BLKW 1 ;number of fin's processed NS.ERR: .BLKW 1 ;number of error packets sent NS.CTL: .BLKW 1 ;number of control packets sent NS.TXT: .BLKW 1 ;number of text packets sent NS.RTX: .BLKW 1 ;number of packet retransmissions NS.ACK: .BLKW 1 ;number of ack only packets sent NU.DAT: .BLKW 1 ;number of data avail signals to user TCBLEN = . ;beginning of buffer area .ENDM .MACRO $DFSIG ;define interprocess signals ; ; Signals to net and internet processes (net signal format) ; SG.INP = 0 ;packet (data = packet pointer) SG.OUT = 1 ;packet ack SG.CSQ = 2 ;source quench SG.CDU = 3 ;destination unreachable (data = reason) SG.TIM = 4 ;timer countdown SG.OPN = 5 ;open connection SG.CLS = 6 ;close connection SG.WRK = 7 ;set work flags (data = bits) SG.RST = 10 ;reset ; ; Signals to user process (user signal format) ; SG.EST = 0 ;connection established ; SG.ERR = 1 ;connection error (reason) ER.USP = 0 ;unspecified ER.PAR = 1 ;parameter error ER.TIM = 2 ;time exceeded (add code) ER.UNR = 4 ;destination unreachable (add code) ER.DWN = 12 ;destination down (add code) ; SG.DD = 2 ;host not responding (reason) DD.USP = 0 ;unspecified DD.SYN = 1 ;initial connection timeout DD.ACK = 2 ;ack timeout DD.WDW = 3 ;send window timeout DD.IDL = 4 ;idle connection timeout ; SG.CC = 3 ;close complete ; SG.DAT = 4 ;data received ; SG.RFS = 5 ;connection refused (reason) RF.USP = 0 ;unspecified RF.RSO = 1 ;connection-open state RF.RSD = 2 ;data-transfer state RF.RSC = 3 ;connection-close state ; SG.SC = 6 ;send complete ; SG.RC = 7 ;remote disconnect ; SG.INT = 10 ;remote interrupt ; ; $ctrl command codes ; CM.OPN = 0 ;($open) ip open CM.CLS = 1 ;($close) ip close CM.STA = 2 ;($stat) ip status request CM.GET = 3 ;($gtpkt) allocate and init ip packet CM.INI = 4 ;($inpkt) init ip packet CM.SND = 5 ;($snpkt) send ip packet CM.FRE = 6 ;($frpkt) free ip packet CM.OPT = 7 ;($snopt) set ip option CM.INT = 10 ;($int) send tcp urgent CM.UDP = 11 ;($udp) send udp packet CM.FLO = 12 ;($flpkt) allocate and init ip packet ; ; $ctrl/$send return codes ; PK.OK = 0 ;operation complete PK.OPN = 1 ;connection open error PK.PAR = 2 ;invalid parameters PK.RES = 3 ;insufficient resources PK.NNR = 4 ;gateway down PK.GNR = 5 ;host down PK.NET = 6 ;net error PK.SYN = 7 ;invalid name syntax PK.NTO = 10 ;name server not responding PK.NTF = 11 ;name not found PK.NEX = 12 ;name does not exist .ENDM $DFSIG .MACRO $DFAH ;define arpanet 1822 leader ; ; Arpanet 1822 leader ; . = 0 AH.FMT: .BLKB 1 ;format number FMT.IP = 15. ;arpanet 96-bit leader format number AH.NET: .BLKB 1 ;destination net - unused AH.FLG: .BLKB 1 ;flags AH.TYP: .BLKB 1 ;message type AH.HND: .BLKB 1 ;handling type AH.HID: .BLKB 1 ;host number AH.IMP: .BLKW 1 ;imp number AH.LNK: .BLKB 1 ;link number LNK.IP = 155. ;ip link number AH.SBL: .BLKB 1 ;sub-link and sub-type AH.ML: .BLKW 1 ;message length AH.LEN = . ;end of arpanet leader (6) .ENDM $DFAH .MACRO $DFEH ;define ethernet header ; ; Ethernet leader ; . = 0 EH.FS: .BLKW 1 ;frame status (not transmitted) EH.FL: .BLKW 1 ;frame length EH.DAD: .BLKW 3 ;destination address EH.SAD: .BLKW 3 ;source address EH.TYP: .BLKW 1 ;type ETHARP = 3010 ;address resolution protocol (arp) ETHIP = 0010 ;internet protocol (ip) EH.LEN = . ;end of ethernet leader (9) .ENDM $DFEH .MACRO $DFHH ;define hyperchannel leader ; ; Hyperchannel leader ; . = 0 HH.CON: .BLKB 1 ;additional control flags CON.AD = 1 ;associated data flag HH.TRK: .BLKB 1 ;trunks to try (part of control word) TRK.TR = 377 ;allow all trunks to be used for I/O HH.ACC: .BLKW 1 ;access code field HH.DAD: .BLKW 1 ;destination address field HH.SAD: .BLKW 1 ;source address field HH.FCN: .BLKW 1 ;function HH.LEN = . ;end of hyperchannel leader (5) .ENDM $DFHH .MACRO $DFIH ;define ip header ; ; Buffer header ; . = 0 PH.OFS: .BLKW 1 ;data area offset PH.LNG: .BLKW 1 ;data area length PH.TIM: .BLKW 2 ;timestamp PH.SBL = . ;end of preserved area PH.LNK: .BLKW 2 ;reassembly link PH.LDR: .BLKW 3 ;local leader PH.PRC: .BLKW 1 ;precedence PH.WGT: .BLKW 1 ;weight PH.LEN = . ;end of buffer header (11) ; ; Internetwork protocol (ip) header ; . = BUFLDR IH.VER: .BLKB 1 ;version and header length P.IP = 4 ;version number IH.TOS: .BLKB 1 ;type of service TQ.DLY = 020 ;delay TQ.THR = 010 ;throughput TQ.REL = 004 ;reliability IH.FL: .BLKW 1 ;fragment length (byte swapped) IH.ID: .BLKW 1 ;segment id (byte swapped) IH.FRG: .BLKW 1 ;fragmentation info (byte swapped) IH.DF = 40000 ;don't fragment flag IH.MF = 20000 ;more fragments flag IH.OFF = 17777 ;fragment offset IH.TTL: .BLKB 1 ;time to live IH.PRO: .BLKB 1 ;protocol number P.IMP = 1 ;internet control message protocol P.GGP = 3 ;gateway-gateway protocol P.GMP = 4 ;gateway monitoring protocol P.TCP = 6 ;transmission control protocol P.EGP = 8. ;exterior gateway protocol P.XNP = 15. ;xnet protocol P.UDP = 17. ;user datagram protocol P.DCP = 19. ;dcnet protocol P.LNP = 63. ;dcnet hello protocol (private) P.SMP = 69. ;simp monitoring protocol P.ARP = 80. ;address resolution protocol P.LNK = 87. ;terminal-link protocol IH.CHK: .BLKW 1 ;internet header checksum IH.SRC: .BLKW 2 ;source address IH.DST: .BLKW 2 ;destination address IH.LEN = . ;end of ip header (10) .ENDM $DFIH .MACRO $DFGH ;define icmp header ; ; Internet control message protocol (icmp) header ; . = 0 GH.TYP: .BLKB 1 ;message type GC.RPY = 0 ;echo reply GC.DNR = 3 ;destination unreachable GC.SQN = 4 ;source quench GC.RDR = 5 ;redirect GC.ECH = 10 ;echo GC.TOT = 13 ;time exceeded GC.PAR = 14 ;parameter error GC.TSP = 15 ;timestamp GC.TSR = 16 ;timestamp reply GC.IFF = 17 ;information request GC.IFR = 20 ;information reply GC.AMF = 21 ;address mask request GC.AMR = 22 ;address mask reply GC.MAX = 22 ;maximum value GH.COD: .BLKB 1 ;message code DN.NET = 0 ;(gc.dnr) net unreachable DN.HOS = 1 ;(gc.dnr) host unreachable DN.PRO = 2 ;(gc.dnr) service unavailable DN.POR = 3 ;(gc.dnr) port unavailable DN.FRG = 4 ;(gc.dnr) fragmentation error DN.SRF = 5 ;(gc.dnr) source route failed DN.MAX = 5 ;(gc.dnr) maximum value TE.TIM = 0 ;(gc.tot) transit timeout TE.RSM = 1 ;(gc.tot) reassembly timeout TE.MAX = 1 ;(gc.tot) maximum value GH.CHK: .BLKW 1 ;checksum GH.ID: .BLKW 1 ;identifier GH.SEQ: .BLKW 1 ;sequence number GH.HDR = . ;beginning of original internet header GH.ORG: .BLKW 2 ;originate timestamp GH.REC: .BLKW 2 ;receive timestamp GH.XMT: .BLKW 2 ;transmit timestamp GH.LEN = . ;end of timestamp header .ENDM $DFGH .MACRO $DFTH ;define tcp header ; ; Transmission control protocol (tcp) header ; TO.NOP = 1 ;tcp no-op option TO.SIZ = 2 ;tcp max-size option ; . = 0 TH.SP: .BLKW 1 ;source port TH.DP: .BLKW 1 ;destination port TH.SEQ: .BLKW 2 ;sequence number TH.ACK: .BLKW 2 ;acknowledgement sequence number TH.HLN: .BLKB 1 ;version and header length TH.CTL: .BLKB 1 ;control flags TC.FIN = 1 ;close request TC.SYN = 2 ;open request TC.RST = 4 ;reset request TC.PSH = 10 ;push request TC.ACK = 20 ;acknowledgement present TC.URG = 40 ;urgent data present TH.WDW: .BLKW 1 ;window size TH.CHK: .BLKW 1 ;checksum TH.URG: .BLKW 1 ;urgent pointer offset TH.LEN = . ;end of tcp header (10) .ENDM $DFTH .MACRO $DFUH ;define udp header ; ; User datagram protocol (udp) header ; . = 0 UH.SRC: .BLKW 1 ;source port UH.DST: .BLKW 1 ;destination port UH.LNG: .BLKW 1 ;data area length UH.CHK: .BLKW 1 ;checksum UH.LEN = . ;end of udp header (4) .ENDM $DFUH .MACRO $DFNH ;define ntp header ; ; Network time protocol (ntp) header ; (follows udp header) ; . = UH.LEN NT.STA: .BLKB 1 ;leap/version/mode LI.POS = 1*100 ;+1 second leap LI.NEG = 2*200 ;-1 second leap NX.VER = 3 ;ntp version number NX.CTL = 6 ;ntp control message mode NT.STR: .BLKB 1 ;stratum NT.POL: .BLKB 1 ;poll interval NT.PRE: .BLKB 1 ;precision NT.ERR: .BLKW 2 ;root delay NT.DRF: .BLKW 2 ;root dispersion NT.RID: .BLKW 2 ;reference clock id NT.REF: .BLKW 4 ;reference timestamp NT.ORG: .BLKW 4 ;originate timestamp NT.REC: .BLKW 4 ;receive timestamp NT.XMT: .BLKW 4 ;transmit timestamp NT.LEN = . ;length of ntp message (less authenticator) .ENDM $DFNH .MACRO $DFMH ;define ntp control message header ; ; Network time protocol control-message (mon) header ; (follows udp header) ; . = UH.LEN NM.MOD: .BLKB 1 ;leap/version/mode NX.VER = 2 ;ntp version number NX.CTL = 6 ;ntp control message mode NM.OPC: .BLKB 1 ;rem/opcode NY.UNS = 0 ;unspecified NY.RDS = 1 ;read system/peer status NY.RDV = 2 ;read system/peer variables NY.WRV = 3 ;write system/peer variables NY.RDR = 4 ;read radio variables NY.WRR = 5 ;write radio variables NY.STA = 6 ;set trap address NY.MOR = 040 ;more data follows NY.ERR = 100 ;error indicator NY.RSP = 200 ;response indicator NM.SEQ: .BLKW 1 ;sequence number NM.STA: .BLKB 1 ;status code NM.ERR: .BLKB 1 ;error code NZ.UNS = 0 ;unspecified NZ.ATH = 1 ;authentication failure NZ.FMT = 2 ;invalid message length or format NZ.OPC = 3 ;invalid opcode NZ.AID = 4 ;unknown association id NZ.VAR = 5 ;unknown variable name NZ.VAL = 6 ;invalid variable value NZ.PNG = 7 ;administratively prohibited NM.AID: .BLKW 1 ;association id NM.OFS: .BLKW 1 ;offset NM.CNT: .BLKW 1 ;count NM.LEN = . ;length of ntp control message header .ENDM $DFMH @#?mc:d,Fo:d:di\},:d3OyS\}v:d x 3 xs s5l~~7Pp s :d :d4:d.MACRO .HOST LHID,BGD,CONGS,HLIM ;define hostel .RADIX 10 .IF NB,LHID HID == LHID ;local host id .ENDC .IIF NDF,PKTSIZ PKTSIZ == 576 ;max packet size .RADIX 8 BITSEL = 1 ;net process select bit (updated) .GLOBL PGMBGN,PGMEND,USEBGN,USEADR,ERSBGN,STOBGN,CFGTAB .GLOBL CFGEND,$NETID,$CLKID,$CKHID,$IPHID,$CONGS,$TRNET,$RTCHG .GLOBL GATVPT,$LOCAD,$GATAD,$HOSAD,$LOCPT,$GATPT,$HOSPT .GLOBL $PDREG,$PNAME,$OFSET,ISPACE,DSPACE,ALTBGN,ALTEND .MCALL .PARAM,.INPAR,.GTPAR,.PORT,.TTPAR,.DKPAR,.SQPAR,.IPADR ; ; Background job segment (bos only) ; .IF NB,BGD .PSECT $BKGN,RW,I ;rt-11 background storage (i/d space) .BLKW BGD/2 ;reserve storage for absolute user proc .ENDC ; ; I-space segments ; .PSECT $BOOT,RO,I ;boot/reset PGMBGN = . ;beginning of read-only storage .PSECT $KERI,RO,I ;kernel i-space ISPACE = . ;beginning of i space .PSECT $SUPI,RO,I ;supervisor i-space .PSECT $USEI,RO,I ;user i-space USEBGN = . ;beginning of user procedure segment .IF NB,BGD USEADR = . ;virtual address of user procedure segment .IFF USEADR = 120000 ;virtual address of user procedure segment .ENDC .IF NB,HLIM KLIM = HLIM ;end of kernel space .IFF KLIM = 0 ;end of kernel space .ENDC .PSECT $BOSI,RO,I ;resident cli i-space .PSECT $USED,RO,D ;user d-space DSPACE = . ;beginning of d space .PSECT $BOSD,RO,D ;resident cli d-space .PSECT $PNAM,RO,D ;process name table .WORD $OFSET-$PNAME $PNAME = . ;beginning of process name table .PSECT $POFS,RO,D ;process pointer table $OFSET = . ;beginning of process pointer table .PSECT $PARM,RW,D ;parameter regions PGMEND = . ;end of read-only storage .PSECT $DATA,RW,D ;usr buffer and private storage .PSECT $TABL,RW,D ;host/gateway tables ; ; Kernel data segments ; .PSECT $KERD,RO,D ;kernel d-space (begin not less than 40000) CFGTAB = . ;beginning of configuration table .PSECT $SUPD,RO,D ;supervisor d-space .PSECT $ERAS,RW,I ;erasable storage ERSBGN = . ;beginning of erasable storage .PSECT $STOR,RW,I ;dynamic storage STOBGN = . ;beginning of dynamic storage .PSECT $GABL,RW,D ;(optional) host/gateway tables ALTBGN = . ;beginning of table segment .PSECT $END,RW,D ;end of everything ALTEND = . ;end of table segment ; ; Host process ; .PARAM HOS,,30,KLIM,0,0,0,0 ;define process header .WORD 0 ;processes .WORD 0 ;interrupt vectors .WORD 0 ;nibbles .WORD 0 ;packets .WORD 0,0 ;free storage .REPT 6 ;(SD.END/2) last clock update .WORD 0 .ENDR .WORD 0 ;precision of local clock .WORD 0 ;estimated drift rate .WORD 0,0 ;last clock update increment .WORD 0,0 ;uptime .WORD 0 ;drift conpensation coefficient .IF NB,CONGS $CONGS: .WORD CONGS ;congestion threshold .IFF $CONGS: .WORD 1500. ;congestion threshold (default) .ENDC $RTCHG: .WORD 0,0 ;routing changes $TRNET: .WORD 0,0 ;routing-trace address .REPT 6 ;(SD.END/2) last trap .WORD 0 .ENDR .WORD 0 ;lost traps $CKHID: .BYTE 255. ;master clock hid $IPHID: .BYTE 0 ;scanner process hid $TRPID: .BYTE 0 ;trap process pid .EVEN .WORD $NETID-. ;internet address relative pointer GATVPT: .WORD 0 ;foreign host table virtual pointer $LOCPT: .WORD 0,$LOCAD ;local host table physical pointer $GATPT: .WORD 0,$GATAD ;foreign host table physical pointer $HOSPT: .WORD 0,$HOSAD ;routing table physical pointer $PDREG: .WORD 0,0,0,0 ;sequence number, pc, code, active proc .WORD 0,0,0,0,0,0,0,0 ;registers r0-r5,sp,pc .WORD 0,0,0,0,0,0,0,0 ;stack contents .WORD 0,0,0,0,0,0,0,0 ;psa contents .WORD 0,0,0,0,0,0,0,0 .WORD 0,0,0,0,0,0,0,0 .ENDM .HOST .MACRO .IPADR A1,A2,A3,A4 ;define ip address .IF NB,A1 .IRP X, .BYTE X .ENDR .IFF .BYTE 0,0,0,0 .ENDC .ENDM .IPADR .MACRO .INPAR NAM,LHID,OPT,CNT,VEC,REG ;internet process .PARAM NAM,INP,26,PKTSIZ,VEC,REG,OPT,0 ;define process header .WORD 0,0 ;input packets .WORD 0 ;timeouts .WORD 0 ;net signals .WORD 0 ;bad format .WORD 0 ;bad checksum .WORD 0 ;returned .WORD 0 ;dropped .WORD 0 ;control messages .WORD 0,0 ;output packets .RADIX 10 .IF NB,VEC ;generate nbs clock logging .IF NB,LHID .BYTE 0,LHID ;connection table size, host id .IFF .BYTE 0,HID .ENDC .WORD 0,0 ;poll messages .WORD 0 ;no reply .WORD 0 ;bad format .WORD 0 ;bad data .WORD 0 ;last set .BYTE 0 ;valid data flag .REPT 64. ;timecode buffer .BYTE 0 .ENDR .EVEN .IFF .IF NB,CNT .IF NB,LHID .BYTE CNT,LHID ;connection table size, host id .IFF .BYTE CNT,HID .ENDC .REPT CNT ;generate connection table .WORD 0,0 .ENDR .IFF .IF NB,LHID .BYTE 16,LHID ;connection table size, host id .IFF .BYTE 16,HID .ENDC .REPT 16 ;generate connection table .WORD 0,0 .ENDR .ENDC .ENDC .RADIX 8 .ENDM .INPAR .MACRO .PARAM NAM,PRO,TYP,BLK,VEC,REG,OPT,LNG ;define par region header .PSECT $KERD,RO,D .IF NB, .IRP X, ;iterate on processes .GLOBL X'PAT .WORD NAM'PAR,X'PAT ;configuration table entry CFGEND = . ;end of table .ENDR .ENDC .PSECT $PNAM,RO,D NAM'OFS:.RAD50 /NAM/ ;process name .PSECT $POFS,RO,D .WORD NAM'PAR-. ;process pointer .PSECT $PARM,RW,D .EVEN .GLOBL NAM'PAR NAM'PAR: .BYTE 0 ;pid .BYTE NAM'OFS-$PNAME ;index .WORD TYP ;type .IF NB,BLK .WORD BLK ;max blocks .IFF .WORD PKTSIZ .ENDC .WORD VEC ;interrupt vector pointer .WORD REG ;device register pointer .WORD OPT ;option bits .WORD LNG ;port table length .ENDM .PARAM .MACRO .PORT NAM,PID,UNI ;define port table entry .IF B,NAM .WORD 0 .IFF .RAD50 /NAM/ ;logical name .ENDC .IF B,PID .BYTE 0 .IFF .BYTE PID'OFS-$PNAME ;process name table offset .ENDC .IF B,UNI .BYTE 0 .IFF .BYTE UNI ;unit number .ENDC .WORD 0,0 ;fun and games .ENDM .PORT .MACRO .TTPAR RMAR,BMAR ;define terminal par region .WORD 0 ;buffer overflow .WORD 0 ;input error .WORD 0 ;aux bits .BYTE 0 ;destination pid .BYTE RMAR,BMAR ;right/bottom margins .BYTE 0 ;escape char .EVEN .ENDM .TTPAR .MACRO .SQPAR DEV,HOST,FLG ;define spool pseudo-device .PARAM DEV,,43,0,0,0,0,0 .RAD50 'SY $$$000SPQ' ;source filespec (rad50) .WORD 0 ;local file size (blocks) .BYTE 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;source userid .RAD50 /DEV/ ;destination filespec (rad50) .WORD 0,0,0 .RADIX 10 .IPADR HOST ;destination host address .RADIX 8 .BYTE 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;destination userid .BYTE 0,0,0,0,0,0,0,0 ;destination password (encrypted) .WORD 0,0,0,0 ;control filespec .WORD FLG ;flags .WORD 0 ;date queued .WORD 0,0 ;time queued .BYTE 0,0 ;copies, banner pages .ENDM .SQPAR .MACRO .GTPAR LDR,MIN,RETRY,FORADR,BIAS,DPRT,MPRT ;define link par region .PORT OPR,DPRT ;direct-access port .PORT MON,MPRT ;monitor port .RADIX 10 .RAD50 /LDR/ ;subnet type .GLOBL SBN'LDR .WORD SBN'LDR ;pointer to subnet transfer vector .WORD RETRY ;poll interval .WORD 0 ;offset of last hello msg .WORD 0 ;length of last hello msg .IPADR FORADR ;foreign address .WORD BIAS,0 ;delay bias, queue size .IF NB,MIN .BYTE 0,MIN ;status, hello interval .IFF .BYTE 0,15. ;status, hello interval default .ENDC .BYTE BITSEL ;select bit BITSEL = BITSEL*2 .EVEN .WORD 0,0 ;input packets .WORD 0 ;bad format .WORD 0 ;bad checksum .WORD 0 ;dropped .WORD 0,0 ;hello messages received .WORD 0 ;input errors .WORD 0 ;returned .WORD 0 ;no buffer .WORD 0,0 ;output packets .WORD 0 ;fragment error .WORD 0 ;time exceeded .WORD 0 ;preempted .WORD 0,0 ;hello messages sent .WORD 0 ;output errors .WORD 0 ;icmp messages .WORD 0 ;quench messages .RADIX 8 .IF IDN,,DCN ;serial line statistics .WORD 0 ;receive errors .WORD 0 ;transmit errors .WORD 0 ;no buffer .WORD 0 ;preamble errors .WORD 0 ;protocol errors .ENDC .IF IDN,,ARP ;arpanet statistics .WORD 0 ;control msgs .WORD 0 ;error msgs .ENDC .IF IDN,,KHV ;KH(V)11 statistics .REPT 30. ;reserve some space .WORD 0 ; .ENDR .ENDC .IF IDN,,DMV ;dmv11 statistics .WORD 0,0 ;status vector, statistics cycles .REPT 16.+20. .WORD 0 ;replay counters, statistics .ENDR .REPT 10.+<3*10.> ;variables, csr queue .WORD 0 .ENDR .ENDC .IF IDN,,ETH ;ethernet statistics .WORD 0,0,0 ;ethernet address .REPT 21. .WORD 0 ;arp statistics area .ENDR .REPT 33. .WORD 0 ;DMA statistics area .ENDR .REPT 30.+11. .WORD 0 ;CMD queue + misc .ENDR .ENDC .IF IDN,,DEQ ;deqna ethernet statistics .WORD 0,0,0 ;ethernet address .REPT 21. .WORD 0 ;arp statistics area .ENDR .REPT 33. .WORD 0 ;DMA statistics area .ENDR .REPT 30.+11. .WORD 0 ;CMD queue + misc .ENDR .ENDC .IF IDN,,HDH ;acc hdh statistics .WORD 0 ;control msgs .WORD 0 ;error msgs ; .WORD 2 ;line control command ; .BYTE 360,1,0,0,0,0,0,0 ;(1: dte, 5: dce) ; ; Instead of sending a Line Control Command to ready the link, ; we will use a Line Status Command. This command has the same ; line control functions, but also permits modifying the IF-11Q/HDH ; "user selectable parameters". (PGM, 06/12/87) .WORD 12. ;line status command length .BYTE 102 ;command code (102 = line status command) .BYTE 0 ;line control command (LSB) .BYTE 1 ;line control command (MSB) - request line up .BYTE 8. ;count of parameters following .BYTE 0 ;loopback mode off .BYTE 3 ;local address (3=DTE) .BYTE 1 ;foreign address (1=DCE) .BYTE 3. ;frame ack t1 timeout .BYTE 3. ;poll ack timeout .BYTE 30. ;asynchronous disconnected mode timeout ;note: IF-11Q/HDH default is 180 .BYTE 3. ;rej wait timeout .BYTE 20. ;n2 counter (maximum number of timeouts) ;note: IF-11Q/HDH default is 5 ; Leave room to collect a few interesting statistics (PGM, 06/12/87). .WORD 0 ;line timeouts .WORD 0 ;data errors .WORD 0 ;imp detected hdlc sequence errors .WORD 0 ;if-11q detected hdlc sequence errors ; .WORD 0 ;unit state .WORD 0 ;unit signal .WORD 0 ;input buffer pointer .WORD 0 ;input bytes remaining .WORD 0 ;input bytes requested .WORD 0 ;receive interrupt state .WORD 0,0 ;receive control message .WORD 0 ;transmit interrupt state .WORD 0,0 ;transmit control message .WORD 0 ;logical channel number (high byte) .WORD 0 ;logical channel pointer .REPT 3 ;logical channel blocks (3) .WORD 0,0,0,0,0 .ENDR .WORD 0,0,0,0 ;request queue pointers .REPT 2*20 ;request queue (20) .WORD 0 .ENDR .ENDC .IF IDN,,X25 ;acc 5250 statistics .WORD 0,0,0,0 ;csr queue pointers .WORD 0 ;output count .REPT 50. ;output command buffer .BYTE 0 .ENDR .BYTE 16.,0,0,0,0 ;max dpn, flags .EVEN .REPT 8. ;csr queue (16) .WORD 0,0,0,0 .ENDR .REPT 16. ;channels (max dpn) .WORD 0,0,0,0 .ENDR .ENDC .ENDM .GTPAR .MACRO .DKPAR ;direct-access device par region .WORD 0 ;data checks .WORD 0 ;seek checks .WORD 0 ;total retries .WORD 0 ;hard errors .ENDM .DKPAR .MACRO .FXPAR ;dacom 450 device par region .WORD 0 ;hard errors .WORD 0 ;unreported errors .WORD 0 ;hardware error (overrun) .WORD 0 ;buffer overflow .ENDM .FXPAR .MACRO .SPPAR ;linear predictive codec .WORD 0 ;vox threshold .BYTE 0 ;vox attack tine constant .BYTE 0 ;vox release time constant .BYTE 0 ;ttg delay .BYTE 0 ;termination flags .BYTE 0 ;playout delay .EVEN .ENDM .SPPAR .MACRO .BSPAR ;ibm bsc device par region .WORD 0 ;input records .WORD 0 ;output records .ENDM .BSPAR .MACRO .NETID X,Y ;internet address/mask .GLOBL $NETID,$CLKID,$LOCAD,$GATAD,$HOSAD,HID .MCALL .IPADR,.CLKID,.GATBL,.HSTBL,.MARS,.MARSG EGP = ^O001 ;egp entry ALT = ^O002 ;enable alternate route ERR = ^O004 ;force error message END = ^O010 ;last entry HLO = ^O020 ;hello entry CAC = ^O040 ;cache entry HOL = ^O100 ;suppress error message TOS = ^O200 ;sepcial service .PSECT $TABL,RW,D .RADIX 10 $NETID: .IPADR X ;internet address .IPADR Y ;address mask .ENDM .NETID .MACRO .CLKID X ;clock synchronization table entry .IPADR X .ENDM .CLKID .MACRO .MARSG ;alternate table segment .PSECT $GABL,RW,D .WORD G.CAC,1 .MACRO .REPTG X G.CAC: .WORD G.LST,X .ENDM .REPTG .MACRO .ENDRG G.LST: .WORD ALTEND,1 .ENDM .ENDRG .ENDM .MARSG .MACRO .GATBL NET,LHID,LDR,FLG,GAT,HOP ;logical host table entry .IPADR NET ;internet address .BYTE LHID ;host id .IF NB,FLG .BYTE FLG ;flags .IFF .IF NB, .BYTE 0 .IFF .BYTE CAC .ENDC .ENDC .IPADR LDR ;address mask .IPADR GAT ;target address .BYTE HOP,0 ;distance, ttl .EVEN .ENDM .GATBL .MACRO .HSTBL PID,DEL,LDR,?L1 ;physical host table entry .BYTE PID,0 ;port id, ttl .IF B,DEL .WORD 30000.,0 ;delay, offset (default) .IFF .WORD DEL,0 ;delay, offset .ENDC .WORD 0,0 ;timestamp .IF B, .BYTE 0,0,0,0,0,0 ;default leader (48 bits) .IFF .IF IDN,,B .BYTE 255.,255.,255.,255.,255.,255. ;ether (bcst) leader .IFF L1: .ASCII /LDR/ ;callsign .REPT 10.-<.-L1> ;zero fill .BYTE 0 .ENDR .ENDC .ENDC .EVEN .ENDM .HSTBL .MACRO .MARS ;filtered addresses .GATBL <0,0,0,0>,0,<0,255,255,255>,HOL ;A reserved ; .GATBL <0,0,0,0>,0,<127,0,0,0>,HOL ;A local use ; .GATBL <0,255,255,255>,0,<127,0,0,0>,HOL ;A local broadcast .GATBL <127,0,0,0>,0,<0,255,255,255>,HOL ;A reserved .GATBL <128,0,0,0>,0,<0,0,255,255>,HOL ;B reserved ; .GATBL <128,0,0,0>,0,<63,255,0,0>,HOL ;B local use ; .GATBL <128,0,255,255>,0,<63,255,0,0>,HOL ;B local broadcast .GATBL <191,255,0,0>,0,<0,0,255,255>,HOL ;B reserved .GATBL <192,0,0,0>,0,<0,0,0,255>,HOL ;C reserved ; .GATBL <192,0,0,0>,0,<31,255,255,0>,HOL ;C local use ; .GATBL <192,0,0,255>,0,<31,255,255,0>,HOL ;C local broadcast .GATBL <223,255,255,0>,0,<0,0,0,255>,HOL ;C reserved .GATBL <224,0,0,0>,0,<31,255,255,255>,HOL ;D reserved .ENDM .MARS .MACRO .NGBR ADR,SOU,TYP ;neighbor table entry .BYTE ADR ;neighbor ip address .BYTE SOU ;gateway ip address .WORD 0 ;egp system number ORG = ^O040000 ;active acquisition mode ONL = ^O020000 ;online ZER = ^O000400 ;force zero receive distance DFT = ^O000200 ;default gateway .WORD TYP ;status flags .BYTE 0,0,0 ;command/protocol/reachability state .EVEN .WORD 0,0 ;send/receive sequence number .WORD 45 ;minimum interval between hello commands .WORD 120 ;minimum interval between poll commands .WORD 45 ;timer t1 preset .WORD 120 ;timer t2 preset .WORD 0 ;timer t1 .WORD 0 ;timer t2 .IF B,TYP .WORD 0 ;timer t3 (default) .IFF .WORD 60 ;timer t3 (wakeup) .ENDC .WORD 0,0 ;last timestamp .BYTE 0,0 ;send/receive status .WORD 0,0,0,0,0 ;packet error tallies .WORD 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;event log .WORD 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;action log .ENDM .NGBR @#rp}[q 4K^_s !"'|Q, <k4}gMDZ*} N`k*}K  .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 @#AC ` %N&&!+_"z$ Ud&X( %+b&8".Pe(W2K(3(yA,"P2d\<k4}]k4d8nv:`p :"EjLpvLDV_M8_Mp:t_MakQkeqQKRvUS?TS\X\X*Xkve+xeIfZf@jspNrs^xyxd3x?T EyL lQyy y% z%zjR}y}Ru~@) 00J[=pNs\M_c:8;no5}oX?},.MACRO AUTOSPOOL AUTOSPOOL Automatic transparent spooling SYNTAX See PIP and other output-oreinted utilities. SEMANTICS Autospool is an operating-system feature that supports automatic transparent spooling for local and remote devices such as line printers, facsimile printers, voice codecs and bitmap displays. It is invoked when output is directed to any of a number of network virtual devices indicated in the configuration tables. The output is spooled in a special file preceeded by control information. When the file is closed an internal message is sent to the spooling daemon PRTQ, which then transmits the file to a local device or forwards it to another host for processing there. See help information for MPM, PRINT, PRTQ, SPQSRV and UDP for further information. Note that for both the FTP and TFTP file-transfer servers, a destination device specification of an autospool device will cause the file to be processed by the spooling system. This feature is intended primarily for use by IBM Personal Computers with the MIT PC-IP software, but can be used in other applications as well. The autospool system can also be used to exchange apool files between Unix and Fuzzball machines, since the protocols used are compatable. For example, it is possible to spool files from Fuzzball to Unix-compatible print servers and from Unix machines to Fuzzball devices, such as Dacom facsimile printers and LPC voice codecs. The autospool system is also used with the Multi-Media Mail (MMM) system. See Help information under MMM for further information. OPTIONS None EXAMPLES None .ENDM .MACRO BINCOM BINCOM Binary compare program SYNTAX BINCOM ;invoke BINCOM.SAV *[listfile][,SIPPfile]=oldfile,newfile[/options] *... ;* is CSI prompt *^Z ;exit to CLI SEMANTICS See the RT-11 System User's Guide OPTIONS /B Compares bytes instead of words /D Compares two entire volumes /E:n Ends comparison at block n /H Prints help information on terminal /O Creates a difference listing file or SIPP command file even if no differences between the input files are found /Q Suppresses terminal output of differences /S:n Starts comparison at block n EXAMPLES None .ENDM .MACRO BUP BUP Backup utility program SYNTAX BUP ;invoke BUP.SAV *[/options]=[/options] *... ;* is CSI prompt *^Z ;exit to CLI SEMANTICS See the RT-11 System User's Guide OPTIONS /I Backs up a large volume on multiple smaller volumes /L Lists directory of a backup volume /X Restores a large file or, with /L, a large volume from multiple backup volumes /Z Initializes a volume for backup no option Backs up a large file on multiple smaller volumes EXAMPLES None .ENDM .MACRO CONFIGURATION CONFIGURATION Configuration SYNTAX None SEMANTICS There are four tables which must be adjusted for each configuration. These are normally part in a module which is included in every fuzzball sharing a single net/subnet configuration and is the same in every fuzzball. The name of this module is usually something like DCN.MAC, where DCN represents the generic name of the configuration. Internet address/mask (.NETID) This establishes the subnet address and address mask for the physical host (note there can be one or more virtual hosts co-resident in that host). The format is as illustrated below, in decimal, where the first field represents the subnet address and the host ID (HID) represents the subfield used for subnet addressing. The second field represents the address mask, which is used only to determine whether an arbitrary address is local or foreign to the subnet. Note that the convention in assigning zero and one bits is opposite to that used in some other systems (e.g. MIT PCIP) and that the bits corresponding to the HID field must be one. Following is an example: .NETID <128,4,0,HID>,<0,0,0,255> ;internet address/mask A standard mask-and-match operation consists of first exclusive-ORing the arbitrary address and the subnet address above, then clearing the bits of the result corresponding to the one bits of the address mask. If the result is zero the arbitrary address is in the same subnet, otherwise not. Clock synchronizing table This table consists of a list of host/network addresses used to syncrhonize the local clock. The entries are used in the order listed. The system will lock on the first address in the list that is up, according to the routing algorithm. Following is an example: .CLKID <128,4,0,15> ;dcn1 clock .CLKID <128,4,0,14> ;dcn6 clock .CLKID <128,5,0,0> ;fordnet clock .CLKID <35,0,0,0> ;umichnet clock .CLKID ;end of table Local host table This table establishes the mapping of Internet address to host ID for all local-net addresses (e.g. those that pass the mask-and-match test implied by the above Internet address/mask quantities). Each line in the table consists of (a) Internet address, (b) HID, (c) address mask (defaults to <0,0,0,0>), (d) flags field. Ordinarily, only those local-net hosts and gateways participating in the Hello routing algorithm need have entries in this table; however, space must be allocated for those hosts whose routing is handled by ARP and/or EGP. Ordinarily, only the last and automatic-ARP lines (defaults) have a nonzero address mask, which is constructed so as to capture all addresses not matched by the preceding items. If the HID field of any entry is set to something larger than the largest possible value (determined from the routing table described later) such as 255, the routing function returns a "destination unreachable;" otherwise, the default HID determines the route. The flags field in the default item is set to NGB to discourage accidental routing updates from broken neighbor hosts that may have invalid subnet addresses. The flags field of the last entry is set to END to avoid castrophe if the automatic-ARP table becomes full. $LOCAD: .GATBL <128,4,0,0>,0 ;broadcast .GATBL <128,4,0,1>,1 ;dcn1 (pogo) .GATBL <128,4,0,2>,2 ;dcn2 (boombah) .GATBL <128,4,0,3>,3 ;dcn3 (albert) .GATBL <128,4,0,4>,4 ;umichnet agent .GATBL <128,4,0,5>,5 ;dcn5 (hepzibah) .GATBL <128,4,0,6>,6 ;dcn6 (backroom) .GATBL <128,4,0,7>,7 ;dcn7 (snavely) .GATBL <128,4,0,8>,8 ;dcn8 (porkypine) .GATBL <128,4,0,9>,9 ;dcn9 (churchy) .GATBL <128,4,0,11>,11 ;fordnet agent .GATBL <128,4,0,12>,12 ;umdnet agent .GATBL <128,4,0,13>,13 ;default agent .GATBL <128,4,0,14>,14 ;dcn6 clock/echo .GATBL <128,4,0,15>,15 ;dcn1 clock/echo .GATBL <128,4,0,17>,17 ;dcn17 (bridgeport) .GATBL <128,4,0,18>,18 ;dcn18 (miggle) .REPT 3 .GATBL <0,0,0,0>,23,<255,255,255,255>,NGB ;subnet 0 agent .ENDR .GATBL <0,0,0,0>,23,<255,255,255,255>,END+NGB ;subnet 0 agent Note the inclusion of several copies of the default entry in the table. More than one copy is necessary only when the automatic-ARP feature is used (see below). Foreign host table This table establishes the mapping of Internet address to physical host ID for all foreign-net addresses (e.g. those that do not pass the mask-and-match test implied by the above Internet address/mask quantitues). The structure of this table is identical to the local host table above, although non-zero masks are more common. The automatic-ARP feature (see below) can be used in this table as in the local host table, but in the example shown an explicit gateway is shown instead. $GATAD: .GATBL <10,0,0,111>,1,,NGB ;dcn1 (pogo) .GATBL <10,0,1,111>,6,,NGB ;dcn6 (backroom) .GATBL <10,0,2,111>,4,,NGB ;gw.umich.edu .GATBL <10,0,0,0>,10,<0,255,255,255>,EGP ;arpanet agent .GATBL <35,0,0,0>,4,<0,255,255,255>,EGP+HLO,<128,4,0,4> ;umichnet agent .GATBL <128,4,1,0>,19,<0,0,0,255> ;subnet 1 agent .GATBL <128,4,0,0>,255,<0,0,255,255>,EGP+NGB ;trap remaining subnets .GATBL <128,5,0,0>,11,<0,0,255,255>,EGP+HLO,<128,4,0,11> ;fordnet agent .GATBL <128,8,0,0>,12,<0,0,255,255>,ALT+HLO,<128,4,0,12> ;umdnet agent .GATBL <0,0,0,0>,13,<255,255,255,255>,END+NGB,<128,4,0,13> ;egp agent In the example a single isolate for 10.0.0.111 is shown, which illustrates the capability to tunnel foreign addresses to or through the subnet. The hop-count field is set nonzero to avoid neighbor routing updates from disturbing the routing for the generic ARPANET 10.0.0.0. Note the default gateway is specified as 128.4.0.13, in which case this address must also occur in the local host table (default agent) above. The hop-count field in the default item is set nonzero to avoid accidental updates; however, this field would ordinarily be set to zero for nets without an EGP default agent. Routing table The routing table determines the packet routes, including local leader (i.e. Ethernet address), process ID (PID) and other information. It consists of two parts, the Hello portion followed by the ARP portion and is preceeded by a count of the total and Hello portions. The Hello portion corresponds to the entities covered by the DCN Hello algorithm, which automatically determines routes between the entities using Hello messages. Those Ethernet entities that do not participate in the Hello algorthm, but do support ARP, are assigned HIDs in the ARP portion. Note that these assignements have nothing to do with the Internet addresses, which are determined by the local and foreign host tables. Each item consists of (a) PID of the network process (defaults to zero, which is interpreted as undefined), (b) delay (milliseconds) (defaults to 30 seconds, which is interpreted as "down"), (c) a flag "B" for broadcast or a string for local leader (defaults to zero). .BYTE 30,24 ;number of (total,routing) entities $HOSAD: .HSTBL 6,100,B ;0 broadcast .HSTBL ;1 dcn1 (pogo) .HSTBL ;2 dcn2 (boombah) .HSTBL ;3 dcn3 (albert) .HSTBL ,,,WWV ;4 umichnet agent .HSTBL ;5 dcn5 (hepzibah) .HSTBL ;6 dcn6 (backroom) .HSTBL ;7 dcn7 (snavely) .HSTBL ;8 dcn8 (porkypine) .HSTBL ;9 dcn9 (churchy) .HSTBL ;10 arpanet agent .HSTBL ,,,GOES ;11 fordnet agent .HSTBL ;12 umdnet agent .HSTBL ;13 default agent .HSTBL ,,,WWV ;14 dcn6 clock/echo .HSTBL ,,,WWVB ;15 dcn1 clock/echo .HSTBL ;16 dcn16 (beauregard) .HSTBL ;17 dcn17 (bridgeport) .HSTBL ;18 dcn18 (miggle) .HSTBL ;19 subnet 1 agent .HSTBL ;20 .HSTBL ;21 .HSTBL ;22 .HSTBL 6,100 ;23 subnet 0 agent .HSTBL ;24 .HSTBL ;25 .HSTBL ;26 .HSTBL ;27 .HSTBL ;28 .HSTBL ;29 In principle, only the broadcast agent and local-net agent (subnet 0 agent in the example) need to have explicit values, since all others are determined automatically by either the Hello algorithm or ARP. In addition, of course, the clock sources must be declared. The above configuration handles the routing for seven entities, including one isolate 10.0.0.111, three neighbor nets 128.5, 128.8 and 35, two subnets 128.4.0 and 128.4.1, and a default which in this case is the EGP process. Note that 128.5 and 35 share the same PID and presumably the same circuit to the neighbor entity. The host for which the tables are shown here "belongs" to subnet 128.4.0, as determined by the Internet address/mask. For all except the default the routing will depend upon ARP response, assuming this host is on an Ethernet; while, for the default case all traffic will be sent to the Ethernet entity responding to the specified gateway address 128.4.0.13. Note that in this configuration a reference to a 128.4 subnet other than 128.4.0 or 128.4.1 will select the default foreign host entry. Presumably, the agent servicing this traffic will return a "net unreachable" ICMP message if the subnet is undefined. In other cases, an entry such as .GATBL <128,4,0,0>,255,<0,0,255,255> can be positioned after all 128.4 references in the foreign host table to trap undefined subnets and avoid routing loops. Automatic ARP In the case of Ethernet hosts (and in future EGP), a feature is included so that hosts not subscribing to the Hello protocols can be supported without explicitly configuring them in the tables. What happens is this: When a host not appearing in the local or foreign host tables is found the specified default is used. For local-subnet hosts in the example configuration shown this results in an Ethernet ARP broadcast for the designated IP destination address but no adjustment in the table entries. The ARP reply causes a search for that address, which lands on the default. A special check inserted at that point causes new entries to be created in either the local/foreign host tables and the routing table. The entry is created with a mask field of zero, so that in the case of foreign hosts a separate entry will be created for very distinct address, not for every generic network. The alternative, which is used in the example configuration, is to explicitly declare a default gateway. Subsequently, the ARP-created entries are used just as if created a-priori. The feature should be of value in configurations including hosts that cannot be modified to support the Hello protocol, such as IBM PCs and silicon front-ends. Note however that a hellod is available for Unix 4.2 systems that does support that protocol. In the current version no provisions are included to discard old ARP-created entries and the only way an old leader can be discarded is if the host goes down with respect to the Hello algorithm. This is slated for early attention. Routing explained The routing function is activated at the time a datagram arrives or is created internally in the host. It first determines whether the destination is in the same subnet or not using the Internet address/mask, then selects either the local or foreign host tables. The tables are constructed so that a match always occurs, if not otherwise at the default. A match results in the following information: (a) the HID of the routing table entry, and thus (b) the PID and (c) the leader (Ethernet address) and, in addition, (d) the gateway address from the local/foreign net table. At this point the datagram buffer is forwarded to the output process with indicated PID and a field in the buffer header filled in with (c) the leader (if nonzero) or (d) the gateway address (if the leader is zero) or the original destination address (if both leader and gateway address are zero). The coding of the field is such that the output process can determine whether the contents are a leader or an IP address. The output process extracts the field from the buffer header and proceeds accordinaly: If a leader is present it is incorporated in the Ethernet leader and the packet forwarded directly. If not, an ARP request is constructed (in a separate buffer) including the specified IP address and the original datagram buffer held for 500 milliseconds. Upon completion of the holding interval the output process calls the routing function again, which results in a recomputation of the buffer header as before, but based on current table contents. If a leader is found the datagram is transmitted as indicated; if not, it sinks without a trace. OPTIONS None EXAMPLES None .ENDM .MACRO CRMAIL CRMAIL Create mail and log files SYNTAX CRMAIL ;invoke CRMAIL.SAV > ;> is CRMAIL prompt SEMANTICS This program creates a mail or log file with name and length . The file is initialized with the first byte set to SUB (^Z) and the remaining bytes set to zero. OPTIONS None EAAMPLES CRMAIL >unsent.msg 500 .ENDM .MACRO DACOM DACOM Facsimile to Bitmap conversion SYNTAX DACOM ;invoke DACOM.SAV *=[/options] *... ;* is CSI prompt *^Z ;exit to CLI SEMANTICS This program converts a file in Dacom (compressed) facsimile format to Sun bitmap format (version 2.0) without scaling or clipping. The resulting file requires 475200 octets (922 blocks) for the 1726 x 2200 x 1 raster. Sun graphics tools presently cannot handle such a large file directly, although the Fuzzball SUNFAX and VCG programs can (See Help information). OPTIONS None EXAMPLES None .ENDM .MACRO DIR DIR Directory program SYNTAX DIR ;invoke DIR.SAV *[/options] ;* is CSI prompt *... *^Z ;exit to CLI SEMANTICS See the RT-11 System User's Guide OPTIONS The syntax of date is dd.:mmm:yy. where dd-day, mmm-month, yy-year /A Lists the directory alphabetically /B Includes starting block numbers in directory listing /C:n Lists directory in n columns; n can be 1 to 9 /D:date Includes only files with date /E Lists entire directory, including unused spaces /F lists short format directory in five columns /G Lists directory entry of specified file and all subsequent directory entries /J:date Lists files created on or after date /K:date Lists files created before date /L Lists volume directory in order of entry /M Lists unused areas /N Lists directory summary /O Gives sizes and block numbers in octal /P Lists all files except those you specify /Q Lists deleted files /R Sorts directory in reverse order; use with /S /S:xxx Sorts directory listing; xxx can be DAT, NAM, POS, SIZ or TYP /T Lists only protected files /U Lists only unprotected files /V:ONL Includes volume ID and owner name as part of directory listing; with ONL lists only ID and name EXAMPLES None .ENDM .MACRO DUMP DUMP File dump program SYNTAX DUMP ;invoke DUMP.SAV *[/options]=[/options] *... ;* is CSI prompt *^Z ;exit to CLI SEMANTICS See the RT-11 System User's Guide OPTIONS /B Outputs octal bytes /E:n Ends output at block n /G Ignores input errors /N Suppresses ASCII output /O:n Outputs only block n /S:n Starts output at block n /T Defines a magtape as non-RT-11 file structured /W Outputs octal words /X Outputs Radix-50 characters EXAMPLES None .ENDM .MACRO DUP DUP Device utility program SYNTAX DUP ;invoke DUP.SAV *[/options] ;* is CSI prompt *... *^Z ;exit to CLI SEMANTICS See the RT-11 System User's Guide OPTIONS /B:RET Writes FILE.BAD entries over bad blocks; use with /Z; with RET, retains FILE.BAD entries created on previous initialization /C Creates a file; use with /G:n /D Restores previously initialized volume /E:n Specifies last block number; use with /I or /K /F Prints names of bad blocks; use with /K /G:n Specifies starting block number; use with /C, /I, or /K /H Verifies after copying; use with /I /I Copies image of one volume to another /K Scans a device for bad blocks /N:n Defines number of directoy segments; use with /Z; n can be 1 to 37 (octal) /O Boots a volume or file (not supported in BOS/VOS) /Q Boots a volume that is not RT-11 V4 or later; use with /O (not supported in BOS/VOS) /R:RET Scans volume for bad blocks and creates a block replacement table; with RET retains previous table (not supported in BOS/VOS) /S Consolidates free space on a volume /T:n Extends a file by n blocks; n free blocks must follow the file /U:DEV Writes bootstrap into blocks 0, 2 through 5 of a volume; DEV is the volume name (not supported in BOS/VOS) /V:ONL Printes user ID and owner name; use with /Z to write new directory, ID and name on volume; with ONL, writes only the a ID and name /W Waits for volume to be mounted before executing the command /X Prevents automatic reboot after using /S on system device /Y Suppresses query messages /Z:n Initializes device directory; n is the number of extra words in each directory entry EXAMPLES None .ENDM .MACRO FAX FAX Dacom 450 Facsimile Transceiver operator's guide SYNTAX SCANNING PIP (* is CSI prompt) *=FAX: *... *^Z (exit to CLI) PRINTING PIP (* is CSI prompt) *FAX:= *... *^Z (exit to CLI) SEMANTICS The Dacom 450 Computerfax Facsimile Transceiver scans and prints documents at resolutions up to 200 pels per inch in a 1726 x 2200 pel raster. It uses a two-dimensional adaptive run-length compressiong algorithm and ordinarily operates at speeds to 2400 bps with the LSI-11/23 processor and to 4800 bps with the LSI-11/73 processor using the DEC DPV11 synchronous interface. Files used with the facsimile system must be formatted as described in RFC-769. The SUNFAX program can be used to convert Sun bitmap files to RFC-769 format and the DACOM program from this format to Sun-bitmap format. The spooling system automatically converts between formats as required. In addition, the VCG program can convert RFC-769 format files for display on the Peritek bitmap display. Facsimile files can be transferred between Internet hosts using the FTP or TFTP programs (IMAGE mode) or using the spooling system. OPTIONS None EXAMPLES None .ENDM .MACRO FILES FILES File specifications and formats SYNTAX :.[] SEMANTICS All programs operate with RT-11 file formats and either file-structured or sequential devices. RT-11 files are block-structured with a block size of 512 bytes. There are two types of files, ASCII and IMAGE. ASCII files consist of a stream of 7-bit ASCII characters stored in eight-bit bytes with the high-order bit set to zero. During transmission the NUL and DEL characters are discarded and the SUB character terminates the transfer. IMAGE files consist of a stream of eight-bit bytes with all bits significant. In both cases data are zero-filled to a block boundary before writing to the device. Files and devices are named according to RT-11 conventions in the following syntax: :.[] where is the logical device name, consisting of up to three alphanumeric characters, is the file name, consisting of up to six alphanumeric characters including $, is the file extension, consisting of up to three characters including $, and is a decimal integer used to specify the maximum file size in blocks. The logical device name (together with the colon) is optional and defaults to DK:, which is the name of the standard RT-11 work volume. With certain exceptions transfers can be specified to or from either file-structured or sequential devices. In the latter case the name, extension and size are ignored. Logical device names are bound to physical devices by the CLI command ASG. The specification (together with the braces) is optional and applies only to new or replacement files to be stored on file-structured devices and not to files that are to be stored on sequential devices or to be read. The algorithm used to estabish the maximum size of a file is as follows: If the specification is missing or zero, half the largest hole on the volume is allocated. If it is a negative number, then the entire extent of the largest hole is allocated. Otherwise, the number of blocks specified is allocated in the first hole large enough to contain them. OPTIONS None EXAMPLES None .ENDM .MACRO FRUN FRUN Foreground loader program SYNTAX FRUN ;invoke FRUN.SAV * ;* is CSI prompt ;exit to loaded program SEMANTICS The foreground loader is used to load programs linked to run in an RT-11 foreground or system job with or without overlays. These programs usually usually have the .REL extension and contain relocatoin information along with the program text. This program would be used ordinarily only in systems without memory-management facilities and when one or more foreground processes have been configured in the system. OPTIONS None EXAMPLES None .ENDM .MACRO FTP FTP File transfer user program SYNTAX FTP ;invoke FTP.SAV ... QUIT ;exit to CLI ;or FTP ;invoke FTP.SAV and execute an ;implied CONNECT ... ;command QUIT ;exit to CLI SEMANTICS The File Transfer Protocol (FTP) functions are provided using two programs, the FTP User and the FTP Server. The FTP User runs in interactive mode on a Fuzzball host. The FTP Server normally resides at some other host and is activated upon receipt of a TCP connection on port 20. The FTP User is controlled by user commands in the same way as the Command Language Interpreter (CLI) and other user programs. It in turn controls the FTP Server by standardized server commands, with the actions taken indicated by standardized replies. These programs operate with the protocol described in RFC-959 and can be used with other implementations conforming to this protocol. A file transfer operation proceeds by first opening a control connection to a remote host using the CONNECT command and then to its operating system using the LOGIN command. In the case of the Fuzzball FTP Server, the LOGIN sequence is supported but the specified user name and password are ignored. Following the connection phase, the SEND and GET commands are used to transfer files to and from the remote host as required. For each transfer a data connection separate from the control connection is established by the remote server. The sender closes the connection to signal end-of-file and terminate the transfer. The QUIT command is used to close the control connection and exit to the CLI. The FTP User prompt is "*", signifying the program is ready for the next command. The first prompt appears when the herald is received from the FTP Server following the CONNECT command. Subsequent prompts appear as each command sequence is completed with the FTP Server. Prompts will not appear following commands which have only local significance or in which errors are detected. FTP transfers can be in either ASCII (default) or IMAGE mode (see the FILES help information for relevant file structures). ASCII mode is compatible with all implementations of RFC-765 servers known at this time. In the case of IMAGE mode with the TOPS-20, however, care must be taken to assure that 8-bit bytes are stored four per 36-bit TOPS-20 word. This is assured if the TYPE L 8 command is used, rather than the TYPE I command (see the IMAGE command below). OPTIONS ABORT If a file transfer is not in progress, do nothing. If it is, abort the transfer, send the ABOR command to the Server and wait for it to close the data connection. ASCII The ASCII and IMAGE commands set the mode for subsequent file transfers. The default is ASCII. In the case of the IMAGE command, a TYPE I command is sent to the server unless an optional argument is present, in which case a TYPE L command is sent, where is the argument. In all except unusual cases should be 8. This feature is included to support the TOPS-20. ASG Assign the local work volume DK: for subsequent file transfers to . See the VOLUMES help information for further details. BRIEF The BRIEF and VERBOSE commands control output of detailed commentary dialog. BRIEF disables this and VERBOSE enables it. The default is BRIEF. CONNECT Open a control connection to host . CWD Assign the working directory on the remote host for subsequent file transfers to . DELETE Delete the file on the remote host. The must contain no more than 40 ASCII printing characters. DIRECTORY Open a data connection to the remote host previously specified by the CONNECT and LOGIN commands. Then transmit a list of the files in on the remote host to on the local host. The must contain no more than 40 ASCII printing characters. When operating with the Fuzzball FTP Server, it must be a valid RT-11 file name and can include wildcards in the same manner as the RT-11 DIRECTORY command. The must be a valid RT-11 file or sequential device name. DISCONNECT If the control connection does not exist, do nothing. Otherwise, send the QUIT command to the Server and wait for the it to close the connection. GET Open a data connection to the remote host previously specified by the CONNECT, LOGIN and ASCII/IMAGE commands. Then transfer the file on the remote host to on the local host. The must contain no more than 40 ASCII printing characters, while the must be a valid RT-11 file name or sequential device name. If is missing, assume the string in its place. HELP Display helpful information, including a list of commands. IMAGE (see the ASCII command) LOCAL Set the local address for the control and data connections to , with default the local primary address. This feature can be used to select local secondary addresses in the case of a multi-homed host. LOGIN Log into the remote host previously specified by the CONNECT command as with . Both and Rename the file on the remote host to . Both and must contain no more than 40 ASCII printing characters. ROUTE ... Specify the Internet source route as the sequence ... (up to nine) for the data connection. SEND Open a data connection to the remote host previously specified by the CONNECT, LOGIN and ASCII/IMAGE commands. Then transfer the file on the local host to on the remote host. The must be a valid RT-11 file or sequential device name, while the must contain no more than 40 ASCII printing characters. If is missing, assume the string in its place. SHOW Display a formatted summary of various quantitites of interest, including the current host, file and block number. TOS Specify the Internet type-of-service octet (in octal) for the data connection. VERBOSE (see the BRIEF command) EXAMPLES None .ENDM .MACRO FTPSRV FTPSRV File transfer server program SYNTAX See RFC-959. SEMANTICS The FTP Server is designed to be compatible with the protocol specified in RFC-959. It is invoked by the TELSRV progam upon receipt of a TCP connection on port 21. Commands consist of four characters, only the first three of which are significant. Replies consist of a three-digit code, the first of which indicates the status of the request according to the following codes: 1xx The action requested has begun. Additional server commands can be given to initiate unrelated actions. 2xx The action requested has completed successfully. 3xx Additional commands are necessary to completely specify the action requested. 4xx The action requested was aborted due to an error condition believed to be temporary. The command may be retried at a later time. 5xx The action requested was aborted due to an error condition believed to be permanent. FTP transfers can be in either ASCII (default) or IMAGE mode (see the FILES help information for relevant file structures). ASCII mode is compatible with all implementations of RFC-959 servers known at this time. In the case of IMAGE mode with the TOPS-20, however, care must be taken to assure that 8-bit bytes are stored four per 36-bit TOPS-20 word. This is assured if the TYPE L 8 command is used, rather than the TYPE I command (see the TOPS-20 documentation). OPTIONS ABOR If a data transfer is not in progress, return a 200 reply code. If a data transfer is in progress, signal the data connection to close and return a 426 reply code, flushing data received meanwhile. When the connection closes return a 226 reply code. CWD Assign the work volume DK: on the local hosts for subsequent file transfers to . See the VOLUMES help information for further details. DELE Delete the file on the local host, where must be a valid RT-11 file name. Reply code 200 is returned. HELP Display helpful user information, including a list of FTP Server commands. All but the last line returned have reply code 111. The last line returned has reply code 211. LIST Open the data connection and transfer a list of files in on the local host to the FTP User host. The must be a valid RT-11 file name and can include wildcards in the same manner as the RT-11 DIRECTORY command. Reply code 150 indicates the transfer has begun and that a 2xx, 4xx or 5xx will be returned when the transfer terminates. The transfer terminates normally with a 226 reply code when the FTP Server closes the data connection and abnormally with a 4xx or 5xx reply code in all other cases. In the list of files returned each file name is on a separate line followed by size and date information. MODE Set the transfer mode for subsequent data transfers to . Currently, must be S (STREAM), which is also the default. Reply code 200 is returned. NLST Open the data connection and transfer a list of files in on the local host to the FTP User host. The must be a valid RT-11 file name and can include wildcards in the same manner as the RT-11 DIRECTORY command. Reply code 150 indicates the transfer has begun and that a 2xx, 4xx or 5xx will be returned when the transfer terminates. The transfer terminates normally with a 226 reply code when the FTP Server closes the data connection and abnormally with a 4xx or 5xx reply code in all other cases. In the list of files returned each file name is on a separate line terminated by with no other information on the line. NOOP Do nothing. Reply code 200 is returned. PASS Syntax check only (for compatibility). Reply code 230 is returned. PASV This command is used only in special situations involving a third-party transfer to indicate the FTP Server should listen on a data connection and to return the host and port of this connection in the reply code. Note that the data connection is not opened at this time, but will be opened in passive mode as necessary by subsequent data-transfer commands. The reply code returned is: 227 Entering passive mode. h1,h2,h3,h4,p1,p2 where h1,...,h4 is the host and p1,p2 is the port with the same interpretation as the PORT command. PORT h1,h2,h3,h4,p1,p2 This command is used only in special situations involving a third-party transfer to specify the host and port for the data connection. The host is specified by the four decimal integers h1,...,h4 and the port by the two decimal integers p1,p2. All six of these integers must have values in the range 0-255. Note that the data connection is not opened at this time, but will be opened in active mode as necessary by subsequent data-transfer commands. Reply code 200 is returned. QUIT Close the control connection and exit to the CLI. Reply code 226 is returned. REIN Reinitialize the program status as it was upon initial entry. Reply code 330 is returned along with the FTP Server herald. RETR Open the data connection and transfer on the local host to the FTP User host. The must be a valid RT-11 file or sequential device name. Reply code 150 indicates the transfer has begun and that a 2xx, 4xx or 5xx will be returned when the transfer terminates. The transfer terminates normally with a 226 reply code when the FTP Server closes the data connection and abnormally with a 4xx or 5xx reply code in all other cases. RNFR Begin a file-rename sequence specifying on the local host as the existing file. The must be a valid RT-11 file name. Reply code 333 is returned, indicating the RNTO command must follow. RNTO Conclude a file-rename sequence begun by the previous RNFR command and specifying on the local host as the new file. The must be a valid RT-11 file name on the same device specified by the previous RNFR command. Reply code 200 is returned. STAT Display a formatted summary of various quantitites of interest, including the current host, file and block number. All but the last line returned have reply code 114. The last line returned has reply code 214. STOR Open the data connection and transfer a file from the FTP User host to on the local host. The must be a valid RT-11 file or sequential device name. Reply code 150 indicates the transfer has begun and that a 2xx, 4xx or 5xx will be returned when the transfer terminates. The transfer terminates normally with a 226 reply code when the FTP User closes the data connection and abnormally with a 4xx or 5xx reply code in all other cases. STRU Set the file structure for subsequent data transfers to . Currently, must be F (FILE), which is also the default. Reply code 200 is returned. TYPE Set the representation type for subsequent data transfers to . Currently, can be A (ASCII), I (IMAGE) or L (IMAGE). The default when this command has not been given is A. Note that the specification permits an additional argument; however, which is ignored by the FTP Server. Reply code 200 is returned. USER Syntax check only (for compatibility). Reply code 331 is returned, indicating the PASS command must follow. EXAMPLES See RFC-959. .ENDM .MACRO GENERAL GENERAL General description SYNTAX Following is a summary of syntactic types /options RT-11 file specification options (see OPTIONS in HELP information)
Internet address (four fields separated by "." each field a decimal integer in the rangd 0 through 255) Argument list (strings separated by and terminated by Command name (only the first three characters are significant) RT-11 physical device name (see HELP information for FILES) RT-11 file specification (see HELP information for FILES) Host ID (decimal integer in the range 0-n, where n depends on network) Host name (registered in NIC data base HOSTS.TXT, or four fields as in
format). RT-11 logical device name (assigned by ASG command) Port ID (octal integer in the range 0-n, where n depends on configuration) SEMANTICS The Fuzzball internet software system has been developed with DARPA sponsorship over the last several years and used extensively for testing, evaluation and experimentation with other implementations. It currently runs in a sizable number of PDP11s and LSI-11s with varying configurations and applications. The system is designed to be used with DCnet local-network protocols as described in RFC-891 and the Fuzzball operating system for a multi-media internet workstation (also called a Fuzzball), which operates using emulation techniques to support the DEC RT-11 operating system and application programs. However, the system has also been used on other networks, including ARPANET, and with other operating systems, including RSX-11. An RSX-11 based version incorporating only the IP/TCP modules is presently used to support the INTELPOST electronic-mail network. The software system consists of a package of MACRO-11 and C modules structured into levels corresponding to local-net, IP, TCP and application levels, with user interfaces at each level. The local-net level supports several comunication devices, including synchronous and asynchronous serial lines, 16-bit parallel links, Ethernet and 1822 interfaces. Hosts using these devices have been connected to ARPANET IMPs, Satellite IMPs, MACRO-11 Internet Gateways, SRI Port Expanders and to standard Ethernets, DECnets and X.25 public networks, as well as several DCnet local networks. When used on DCnet the system supports subnets as described in RFC-950, supports network-level alternate routing and local-level dynamic routing, as well as time-synchronization and error-reporting functions. The IP level conforms to the RFC-791 specification, including fragmentation, reassembly, extended addressing and options, as well as the source-route option. A full set of ICMP features compatible with RFC-792 is available, including destination-unreachable, timestamp, redirect and source-quench messages. Destination-unreachable and source-quench information is conveyed to the user level via the TCP and raw-datagram protocol modules. Internet gateway (routing and non-routing) facilities conforming to the Exterior Gateway Protocol (EGP) RFC-904 specification can be included on an optional basis. This support can be configured to support hierarchically structured gateways and subnets. The TCP level conforms to the RFC-793 specification, including PUSH, URGENT and options. Its structure is based on circular buffers for reassembly and retransmission, with repacketizing on each retransmission. Retransmission timeouts are dynamically determined using measured roundtrip delays, as adjusted for backoff. Data flow into the network is controlled by measured network bandwidth, and adjusted by source-quench information. Features are included to avoid excessive segment fragmentation and retransmission into zero windows. The user interface level provides error and URGENT notification, as well as a means to set outgoing IP/TCP options. A raw-datagram interface is available for non-TCP protocols such as UDP (RFC-768). It includes internal congestion and fairness controls, multiple-connection management and timestamping. Protocols above UDP supported in the present system include Network Time Protocol (RFC-958), Time Server (RFC-868), Name Server (IEN-116), Domain-Name Server (RFC-883) and Trivial File-Transfer Protocol (RFC-783). Other raw-datagram services include XNET (IEN-158), Exterior Gateway Protocol (RFC-904) and several experimental services. A number of user-level protocol modules above TCP have been built and tested with other internet hosts, including TELNET (RFC-854), File Transfer Protocol (RFC-959), Simple Mail Transfer Protocol (RFC-821), Multi-Media Mail Protocol (RFC-759/RFC-767) and various other file-transfer, debugging and control/monitoring protocols. Code sizes and speeds depend greatly on the system configuration and features selected. A typical 30K-word LSI-11/2 single-user configuration with all features selected and including the operating system, device drivers and all buffers and control blocks, leaves about 16K words for user-level application programs and protocol modules. A typical 124K-word LSI-11/23 or LSI-11/73 configuration provides the same service for up to 24 individually relocated users. Disk-to-disk FTP transfers across a DMA interprocessor link between LSI-11/23s operate in the range 30-50 Kbps with 576-octet packets. The 124K-word PDP11/34 INTELPOST adaptation supports two 56-Kbps lines and a number of lower-speed lines. Typical throughputs range from 100 to 400 packets per second, depending on processor type and interface type. OPTIONS None EXAMPLES None .ENDM .MACRO HELP HELP Lists helpful information SYNTAX HELP ;invoke HELP.SAV What topic do you want help with? ;...? is prompt ; has the form: topic ;[ subtopic[:items...]...]] or * SEMANTICS * lists the items for which help is available. lists the HELP text (of which this is a part). topic lists information on the specific topic only. topic subtopic lists information on the specific subtopic only (for example, HELP HELP SEMANTICS lists the paragraph of which this text is a part). topic subtopic:item lists only the text associated with the specific item. topic/item lists the text associated with the specific item under the subtopic OPTIONS. Subtopics are "SYNTAX", "SEMANTICS", "OPTIONS", and "EXAMPLES". Items are specific command options. OPTIONS None EXAMPLES None .ENDM .MACRO HOST HOST Host Process commands SYNTAX SET ;CLI command SEMANTICS See USER process commands and GENERAL help information OPTIONS CMD List the available commands. Additional information is available with the HELP program. HOST Set the Host Table entry for the DCnet virtual host to the values specified in the arguments. The Network Process PID is specified by the first argument, the roundtrip delay by the second and the status by the last. If is missing, simply display a summary of the entire table. If is given with no arguments, display the table entry for that host. See Appendix C for a list of DCnet virtual hosts. Note that the Host Table is constructed automatically during normal system operations and that this command is provided only for exceptional circumstances. IDENT
Set the virtual-host ID for the master-clock host to . If
is given set the internet address for the physical host to the
. MINIMUM Set the minimum source-quench threshold to . ICMP source-quench messages will be returned to the sender if the number of free buffers falls below this threshold. NET Set the Network Table entry for the network to the values specified in . The only argument that can be specified at present is the virtual host HID for the gateway to that network. If is missing, display a summary of the entire table. If is given with no arguments, display the table entry for that network. OFF The ON and OFF commands can be used to set and clear bits in the options word of the parameter area associated with the process. The ON command sets the option bits corresponding to the one bits of (which is an octal value) to one, while the OFF command sets these bits to to zero. Options for the host process are interpreted as the RT-11 configuration word, which is normally stored at relative location 300 in the monitor area (see RT-11 documentation). ON (see the OFF command) SHOW Display a formatted summary of various quantitites of interest. EXAMPLES .set hos cmd Commands are: CMD SHO ON OFF ID MIN NET HOS .set hos hos Host PortID Delay Offset Status Leader ---------------------------------------------------- DC6 002 0 0 119 000000000000 .set hos net Net Address HostID Hops Leader ---------------------------------------------- ARP [10.0.0.0] 0 0 0,0 DCN [128.4.0.1] 6 0 0,0 WAS [128.4.1.2] 14 0 0,0 SAN [128.4.2.3] 11 0 0,0 FRD [128.5.0.4] 13 0 0,0 UMD [128.8.0.5] 12 0 0,0 NET [0.0.0.6] 0 255 1,20 .set hos sho Process type: 000030 options: 111001 Last clock update: 0 from: 1 reset: 00:00:00 Processes: 18 Vectors: 10 Nibbles: 29 Small packets: 0 Large packets: 12 Min packets: 2 Internet address: [128.4.0.6] .ENDM .MACRO HOSTS HOSTS Make Internet host name/address table SYNTAX HOSTS ;invoke HOSTS.SAV *outfile,dnsfile=infile[options],... *... ;* is CSI prompt *^Z ;exit to CLI SEMANTICS This program reads a file of Internet host name/address entries in the Standard Network Information Center (NIC) format described in RFC810 and produces a hash-coded output file suitable for use by the user and server programs in this system. The domain-name system described in RFC-882 and RFC-883 is used by all Fuzzball hosts to resolve an Internet address from a domain name and also to resolve a domain name from its Internet address. The program that does this, called the namesolver, first searches the local HOSTS.DAT file and returns the name or address immediately if found. If not found, the namesolver searches a set of hierarchically structured remote domain-name servers as indicated by special entries in HOSTS.DAT. Present practice is to configure one Fuzzball host on the local net as a domain-name server along with a HOSTS.DAT file produced by the HOSTS program from the complete HOSTS.TXT file (obtained periodically from the NIC) and configure all other Fuzzball hosts with a HOSTS.DAT file containing only the local-net hosts and domain-name pointers to the server. The primary output file outfile, usually named HOSTS.DAT, consists of a set of lists, one for each block (512 bytes) terminated by a zero byte. Items in each list are either names, consisting of four bytes of address, one byte of flags and a name string terminated by a zero byte; or addresses, consisting of four bytes of address, one byte of flags and a three-byte pointer. Entries are hashed according to the polynomial 1 + x + x**6 + x**7 reduced modulo the output file size. The secondary output file dnsfile, usually named HOSTS.DNS, consists of a domain-name data base in the format described in RFC-883. This may be the primary format of the HOST.TXT table in the future. This feature is included for compatibility. One entry for every address and every name for each host in the input file is included in the output file. The address entries are hashed by the address and the name entries are hashed by the name. Bits in the service-specification byte determine the entry format and whether the host advertises TELNET, FTP or SMTP service. OPTIONS /A Delete all domain-structured entries (".ARPA" domain in the present table) and pad the remaining names with ".ARPA". This feature is intended for use during the transition period while the domain-name system is being put into place. /S:n Allocates n blocks for output file (default is 256 blocks). The value of n must be at least two. EXAMPLES Following is a slightly reformatted table used as input to the HOSTS program to produce the HOSTS.DAT file for a host configured without the full domain-name server. The GATEWAY and HOST entries are taken directly from the HOSTS.TXT table with the ".ARPA" domain edited into all entries. The DOMAIN entries are associated with the name server for the domain appearing in the host-name field. GATEWAY : 10.0.0.111, 128.4.0.1, 128.5.0.1, 128.8.0.1 : DCN-GATEWAY.ARPA : LSI-11/23 : FUZZ : IP/GW,GW/PRIME : HOST : 128.4.0.1, 10.0.0.111 : DCN1.ARPA,POGO.ARPA : LSI-11/23 : FUZZ : TCP/TELNET,TCP/SMTP,TCP/FTP,TCP/ECHO,TCP/DISCARD, TCP/CHARGEN,TCP/DAYTIME,TCP/TIME,TCP/TALK,UDP/ECHO,UDP/TIME, UDP/NAME,UDP/TFTP : HOST : 128.4.0.2 : DCN2.ARPA,BOOMBAH.ARPA : LSI-11/2 : FUZZ : TCP/TELNET,TCP/SMTP,TCP/FTP,TCP/ECHO,TCP/DISCARD,TCP/CHARGEN, TCP/DAYTIME,TCP/TIME,TCP/TALK,UDP/ECHO : HOST : 128.4.0.3 : DCN3.ARPA,ALBERT.ARPA : LSI-11/23 : FUZZ : TCP/TELNET,TCP/SMTP,TCP/FTP,TCP/ECHO,TCP/DISCARD,TCP/CHARGEN, TCP/DAYTIME,TCP/TIME,TCP/TALK,UDP/ECHO : HOST : 128.4.0.4 : DCN4.ARPA,HOWLAND.ARPA : LSI-11/23 : FUZZ : TCP/TELNET,TCP/SMTP,TCP/FTP,TCP/ECHO,TCP/DISCARD,TCP/CHARGEN, TCP/DAYTIME,TCP/TIME,TCP/TALK,UDP/ECHO : HOST : 128.4.0.5 : DCN5.ARPA,HEPZIBAH.ARPA : LSI-11/23 : FUZZ : TCP/TELNET,TCP/SMTP,TCP/FTP,TCP/ECHO,TCP/DISCARD,TCP/CHARGEN, TCP/DAYTIME,TCP/TIME,TCP/TALK,UDP/ECHO,UDP/TIME,UDP/NAME, UDP/TFTP : HOST : 128.4.0.6 : DCN6.ARPA,BACKROOM.ARPA : LSI-11/23 : FUZZ : TCP/TELNET,TCP/SMTP,TCP/FTP,TCP/ECHO,TCP/DISCARD,TCP/CHARGEN, TCP/DAYTIME,TCP/TIME,TCP/TALK,UDP/ECHO,UDP/TIME,UDP/NAME, UDP/TFTP : HOST : 128.4.0.7 : DCN7.ARPA,SNAVELY.ARPA : LSI-11/23 : FUZZ : TCP/TELNET,TCP/SMTP,TCP/FTP,TCP/ECHO,TCP/DISCARD,TCP/CHARGEN, TCP/DAYTIME,TCP/TIME,TCP/TALK,UDP/ECHO,UDP/TIME,UDP/NAME, UDP/TFTP : HOST : 128.4.0.8 : DCN8.ARPA,PORKYPINE.ARPA : LSI-11/23 : FUZZ : TCP/TELNET,TCP/SMTP,TCP/FTP,TCP/ECHO,TCP/DISCARD,TCP/CHARGEN, TCP/DAYTIME,TCP/TIME,TCP/TALK,UDP/ECHO : HOST : 128.4.0.9 : DCN9.ARPA,CHURCHY.ARPA : SUN-170 : UNIX : TCP/TELNET,TCP/SMTP,TCP/FTP,TCP/TIME,UDP : HOST : 128.4.0.15 : DCN-ECHO.ARPA ::: IP/ECHO : HOST : 128.4.0.16 : DCN16.ARPA,BEAUREGARD.ARPA : IBM-PC : MSDOS : IP : HOST : 128.4.0.17 : DCN17.ARPA,BRIDGEPORT.ARPA : IBM-PC : MSDOS : IP : HOST : 128.4.0.18 : DCN18.ARPA,MIGGLE.ARPA : IBM-PC : MSDOS : IP : DOMAIN : 128.4.0.1 : ARPA ::: TCP/TELNET,TCP/FTP,TCP/SMTP : DOMAIN : 128.4.0.1 : IN-ADDR ::: TCP/TELNET,TCP/FTP,TCP/SMTP : .ENDM .MACRO IBM-PC IBM-PC IBM Personal Computer Information SYNTAX None SEMANTICS An IBM Personal Computer with the MIT PC-IP software can be connected via a serial line to a DCN host, which then serves as a gateway to the Internet system. The PC-IP software includes support for TELNET, TFTP and several other TCP- and UDP-based utility programs. It operates using Internet datagrams encapsulated in the MIT serial-line protocol and transmitted via the serial line. The DCN host running this protocol manages the datagram-switching and encapsulation functions and provides reachability information for the network. The IBM Personal Computer can be used with DCN hosts just as with any other Internet host. DCN hosts can be configured with TELNET and TFTP servers. OPTIONS None EXAMPLES None .ENDM .MACRO INFORMATION INFORMATION General information SYNTAX None SEMANTICS BOOTING Mount the Fuzzball work volume on DK:. Mount an ordinary RT-11 system volume on SY:. The system volume sould contain at least the following files: PIP.SAV Peripheral interchange program DUP.SAV Device utility program DIR.SAV Directory program KED.SAV Keypad Editor and other RT-11 system and application programs as desired. The system volume should also contain at least the following Fuzzball files: CLI.SAV Command language interpreter FRUN.SAV Foreground process loader (BOS only) LOGIN.SAV Login program LOGOUT.SAV Logout program TN.SAV TELNET virtual terminal user program TELSRV.SAV TELNET virtual terminal server program FTP.SAV File transfer user program FTPSRV.SAV File transfer server program SMTP.SAV Mail transfer user program SMPSRV.SAV Mail transfer server program MSG.SAV Mail reader program SNDMSG.SAV Mail composition program HOSTS.DAT Internet host table (constructed by HOSTS) LOGIN.DAT User login/password table (constructed by SYSMGR) LOGIN.MSG Login text file (constructed by KED or EDIT) UNSENT.MSG Mail file (constructed by CRMAIL) The following files can be used in certain configurations: UDP.SAV Internet name/time/file server process EGP.SAV Internet gateway process NSP.SAV DECnet gateway (special configuration) LOG.SAV Log process WATCH.SAV SIMP monitor program LOG.TXT Log file (constructed by CRMAIL) The following files will be useful for many applications: NIFTP.SAV Network-independent FTP user program PING.SAV Internet measurements user/server program XNET.SAV Internet loader/debugger user/server program VCG.SAV Peritek VCG display program FINGER.SAV Display user information SETCLK.SAV Set system time and date from local clock NETCLK.SAV Set system time and date from remote time server RTCLK.SAV Set TCU-50 from system time and date SYSMGR.SAV System manager utility program HOSTS.SAV Creates Internet host tables (HOSTS.DAT) CRMAIL.SAV Creates mail files (UNSENT.MSG) and log files (LOG.TXT) HELP.SAV Help utility program HELP.TXT Help file (this file) MPM.SAV MPM mail utility program *.CTL MPM mail control files SPQSRV.SAV Network spooler server PRINT.SAV Local spooler server PRTQ.SAV Spooler daemon WHOIS.SAV NIC data-base access program RSOLV.SAV Domain Name Server data-base access program These files operate with all versions of the Fuzzball software, while MSG, SNDMSG, CRMAIL, HELP, SETCLK snd RTCLOK operate with RT-11 as well. In addition, the work or system volume should contain the Fuzzball resident system file configured for the particular hardware system on which it is run. This file and other RT-11 system components are used only to load the Fuzzball resident system and are not referenced after that. Once the system and work volumes are mounted, load the Fuzzball resident system using the RT-11 RUN command. Be sure the real-time harware clock is running. The system should come up with heralds from the several daemons specified in the configuration file. One or more prompt characters (".") may also appear. The system then begins to send HELLO messages to neighboring hosts and constructs its Host Table, which determines the routing to these and other hosts on the network. This can take a minute or two, during which the SET HOST HOST command can be used to identify the other hosts as they come up. The SHOW command can be used to confirm the correct configuration of the processes and devices in the system and the SET HOST SHOW command to determine the resources in use. Once the Host Table has stabilized the system is ready for use. In configurations using remote domain-name servers, some hosts may not appear reachable until the entire network path to the selected domain-name server(s) comes up. IN-CASE-OF-TROUBLE In case of trouble the following procedures may be helpful. The system can be restarted at any time from location zero, following which it will recompute the checksum of the read-only code and data areas and reinitialize all processes. In addition, the RESET command will do the same thing. Finally, the XNET Internet loader/debugger can be used to send a special message to a remote system, causing the same action. Obviously, these mechanisms are potentially hazardous, but in keeping with the uses the Fuzzball software is likely to be put. Protection features may be incorporated in future versions. CONFIGURATIONS There are two versions of the Fuzzball resident system presently in use. One of these, called the basic system, supports up to 60K bytes of memory and PDP11 or LSI-11 processors without memory-management features. The other, called the virtual system, supports the maximum available memory and PDP11 or LSI-11 processors with these features. The standard basic system is configured for a 60K-byte LSI-11/2 with EIS and one 32K-byte background process. The standard virtual system is configured for a 256K-byte LSI-11/23 and up to seven 32K-byte virtual processes. The remainder of memory is used for the resident system and various storage areas. PROCESSES Processes are identified by three-character physical names, which appear in the SHOW and DEVICE command arguments and their responses. In the case of ordinary direct-access and sequential input/output devices, these names correspond to standard RT-11 conventions. In many cases several instances of a particular process type may appear, in which case the final character will be a digit in the range zero through nine. Each process is identified by a port identifier, or PID, which appears as an argument in some commands. Following is a list of the current process types (n denotes a digit): HOS Host process INP Internet process (with optional radio-clock support) DHn Network process (SRI or ACC ARPANET 1822 link) DMn Network process (DEC DDCMP link) DQn Network process (DEC DEQNA Ethernet link) HDn Network process (ACC HDH/1822 link) HYn Network process (NSC A400 HYPERchannel link) ILn Network process (Interlan or 3COM Ethernet link) KHn Network process (U Michigan LAPB link) KMn Network process (U Maryland Univac link) LHn Network process (serial synch or asynch link) LNn Network process (Ford serial or parallel LNA link) PCn Network process (IBM PC serial asynch link) PPn Network process (ACC or RSRE X.25 link) PRn Network process (AX.25 packet radio link) CWn Terminal process (FSK radio terminal) TTn Terminal process (operator terminal/line printer) MXn Multiplexor terminal process (DEC DZ11 multiplexor) BGD Background user process (BOS) FGD Foreground user process (BOS) VMn Virtual user process (VOS) DXn Disk process (RX01 single-density floppy disk) DYn Disk process (RX02 double-density floppy disk) PDn Disk process (PDT-150 single-density floppy disk) RKn Disk process (RK05 disk cartridge) DSn Disk process (RH11/RJS03 fixed-head disk) DLn Disk process (RL11/RL01 disk cartridge) FDn Disk process (AED 6200 double-density floppy disk) CSn Disk process (USDC Winchester disk/tape cartridge) SMn Disk process (SMS Winchester disk) FAX Dacom 450 Facsimile process LPC LPCM packet speech process UDP Internet name/time/tftp server process EGP Internet gateway process NSP DECnet gateway process LOG Log process As in RT-11, logical names can be associated with most of the above names using the ASG command. VIRTUAL-HOSTS Of fundamental importance to the DCnet architecture is the concept of physical and virtual hosts. A physical host is an ordinary processor with memory and a complement of direct-access and sequential devices. A virtual host is a portable process that resides in a physical host. Virtual hosts are assigned names and 32-bit internet addresses as shown elsewhere. Each virtual host residing in a physical host is supported by an Internet process, the name of which is the name of the virtual host. The internet address of the physical host itself (necessary only to break routing loops) must be the address of one of its virtual hosts. Virtual hosts are identified within DCnet by the host identifier (HID), which presently is taken as the fourth octet of the four-octet internet address. The particular virtual host supported by a given Internet process is determined by its HID, which can be changed by an operator command. When the HID is changed, the name is changed automatically as well. TERMINAL-OPERATIONS Operation of the standard Fuzzball terminal is like RT-11, but with some differences. Following is a list of the special keyboard functions (codes correspond to the standard ASCII interpretation): Code Echo Function ------------------------ CR CR-LF End of line SUB ^Z End of file DEL BS-SP-BS Delete previous character CAN ^U Delete current line ETX ^C Interrupt DLE none Begin escape sequence EOT ^D Panic reset (not in RT-11) DC3 ^S Stop output DC1 ^Q Resume output The Fuzzball interrupt and end-of-file functions operate rather differently than their RT-11 counterparts. A single (not two) ETX function always causes an immediate termination of the program. A SUB function causes the emulated RT-11 Command String Interpreter (CSI) to return to the Fuzzball Command Language Interpreter (CLI). The DLE function introduces a special function sequence consisting of the DLE itself followed by a single character. It the following character is another DLE, a single DLE is placed in the input buffer. If it is a digit, the function performed is as follows: 0 Switch to channel 0 1 Switch to channel 1 2 Switch to channel 2 3 Switch to channel 3 4-9 Reserved Operator terminals are ordinarily connected to user processes on a one-to-one basis. Usually channel 0 for each terminal is assigned the associated user process and the remaining channels assigned for special purposes, such as net servers. These assignments can be changed with the ASG command. The options in effect for each terminal can be specified with the SET command. MEMORY-MANAGEMENT In the basic system the supervisor and all processes share the identity virtual-physical address mapping. The hardware vector area is followed by the working storage allocated to the background process. This is followed by the code and read-only storage areas for the resident system, including the supervisor and all processes. Next is the code and read-only storage areas for the RT-11 emulator, which is re-entrant, position-independent and shared by all user processes. Following this is the parameter area containing tables and other information which can be accessed by the SET and SHOW commands. Finally are the buffers, state vectors and stacks used by the various components of the system. The working storage for each foreground process is allocated as part of its state vector. The virtual system is structured in a similar way, except that each user process has its own address mapping. Physical memory is organized as in the basic system, except that there is no working storage allocated to the background or foreground processes. Instead, the working storage for each user process is allocated in turn above the areas described in the previous paragraph. The supervisor and all processes except user processes operate in kernel space with identity virtual-physical mappings, except that segment 7 is mapped to the input/output page and segments 5 and 6 are used as windows to other spaces. Each user process operates in user space with its own working storage mapped to virtual space starting at location zero. Segments 6 and 7 of each user process are mapped to the RT-11 emulator and parameter areas, while segment 5 is used as a virtual window to other spaces. those functions that require it. Within each user process in both the basic and virtual systems, memory is organized as in RT-11. In the background process the chain area starts at location 500 and the various "RMON areas" and emulator working storage extends downward from the end of its allocated working storage. In the foreground processes the chain area starts at the first location of its allocated working storage. Virtual user processes appear as background processes. Features have been incorporated into the Fuzzball system to support re-entrant and position-independent load modules in both background and foreground processes. EXAMPLES None .ENDM .MACRO INTERNET INTERNET Internet Process commands SYNTAX SET ;CLI command SEMANTICS See USER process commands and GENERAL help information OPTIONS CCB Display a summary of connection data from the Connection Control Block for connection . If is missing, display all open connections. The optional arguments TRA and TCP select additional displays applicable only to TCP. TRA displays a received packet trace, while TCP displays packet and signal counts by type. CMD List the available commands. Additional information is available with the HELP program. IDENT Change the virtual host ID for the process to . After this is done the name of the process will change accordingly and the new routing information will circulate in the network. Once changed, the ID should not be changed for at least two minutes, to allow old routing information to dissipate and prevent loops. OFF The ON and OFF commands can be used to set and clear bits in the options word of the parameter area associated with the process. The ON command sets the option bits corresponding to the one bits of (which is an octal value) to one, while the OFF command sets these bits to to zero. Options for the internet process are as follows: 12 NBS clock (OFF: disable, ON: enable) 13 Echo all datagrams (OFF: disable, ON: enable) ON (see the OFF command) SHOW Display a formatted summary of various quantitites of interest. SIZE Set the maximum datagram size to , which must be a decimal integer in the range 20-576 (40-576 for TCP). EXAMPLES .set dc6 ccb Connection ID: 051240 protocol: 006 state: 000007 CCB format: 004000 max size: 256 protocol flags: 041 Local addr: [128.4.0.6] 3072 Foreign addr: [128.4.0.6] 23 Rate: 60 delay: 1055 RTD rate: 327 RTD delay: 17 .set dc6 ccb 4 tcp Catenet source quench: 0 Catenet unreachable: 0 Input packets received: 66 bad format: 0 bad checksum: 0 connection reset: 0 dropped: 1 Accepted packets: 66 null (ACK-only): 24 text stored: 42 duplicate: 0 outside window: 0 SYNs processed: 1 FINs processed: 0 Error packets sent: 0 Control packets sent: 1 Text packets sent: 25 Retransmissions sent: 0 ACK-only packets sent: 43 Data avail sigs to user: 43 .set dc6 ccb 4 tra Seq ID Start Length Window Offset ---------------------------------------------- 30005 30005 0 1 399 0 35905 35905 0 216 184 0 37888 37888 0 46 354 0 38955 38955 0 1 399 0 46288 46288 0 68 332 0 46772 46772 0 1 399 0 62172 62172 0 155 245 0 63372 63372 0 1 399 0 64969 64969 0 214 186 0 1200 1200 0 1 399 0 5183 5183 0 216 184 0 6966 6966 0 46 354 0 8050 8050 0 1 399 0 25616 25616 0 216 184 0 27533 27533 0 216 184 0 30150 30150 0 216 184 0 32250 32250 0 216 184 0 34350 34350 0 216 184 0 36450 36450 0 108 292 0 38050 38050 0 1 399 0 46283 46283 0 216 184 0 48133 48133 0 216 184 0 .set dc6 cmd Commands are: CMD SHO ON OFF ID SIZ CCB .set dc6 show Process type: 000026 options: 000000 Host ID: 6 max conn: 8 max size: 256 Input packets: 156 timeouts: 0 net signals: 0 bad format: 0 bad checksum: 0 returned: 0 dropped: 0 Control msgs: 0 Output packets: 158 .ENDM .MACRO KED KED Keypad Editor program SYNTAX KED ;invoke KED.SAV *[/options] ;* is CSI prompt *... *^Z ;exit to CLI SEMANTICS See the RT-11 Keypad Editor User's Guide. Termination of the Keypad Editor [GOLD] [COMMAND] Prompt is Command: EXIT [ENTER] to save current edit version QUIT [ENTER] to terminate without saving edit modifications To define page size, screen size and margin wrap [GOLD] [COMMAND] Prompt is Command: SET PAGE _ [ENTER] to number of lines per page (Default=Formfeed) SET SCREEN _ [ENTER] to 80/132 characters per line on screen SET WRAP _ [ENTER] to line length for auto right margin OPTIONS /C Creates a new file /I Inspects input file; does not allow changes No switch to edit file. A back-up file will be created with the extension .BAK EXAMPLES See the RT-11 Keypad Editor User's Guide. .ENDM .MACRO LIBR LIBR Librarian program SYNTAX LIBR ;invoke LIBR.SAV *[libraryfile][,listfile]=inputfiles[/options] *... ;* is CSI prompt *^Z ;exit to CLI SEMANTICS See the RT-11 System User's Guide OPTIONS /A Includes in library directory all global symbols includeing absolute global symbols /C Allows multiple input lines /D Deletes a module from a library file /E Extracts a module from a library and stores it as a .OBJ file /G Deletes a global symbol from a library directory /M:n Creates a macro library from an ASCII input file and allocates n blocks for the macro name directory /N Includes module names in library directory /P Includes psect names in library directory /R Replaces modules in a library file /U Updates (inserts and replaces) modules in a library file /W Produces a wide (132 column) library directory listing /X Creates a library with multiple global definitions // Allows multiple input lines until next occurance of // no option Assumes module insertion EXAMPLES None .ENDM .MACRO LINK LINK Linker program SYNTAX LINK ;invoke LINK.SAV *[binfile][,mapfile][,stbfile]=objfiles[/options] *... ;* is CSI prompt *^Z ;exit to CLI SEMANTICS See the RT-11 System User's Guide OPTIONS /A Lists global symbols in alphabetical order /B:n Sets bottom address of program to n; invalid with /H and /R /C Continues input on new line; do not use with // /D Allows duplicate library subroutines /E:n Extends root program segment to specified value /F Uses default FORTRAN library FORLIB.OBJ when linking /G Increases size of linker's library directory buffer /H:n Specifies highest address to be used by relocatable code; invalid with /B, /Q, /R, /Y /K:n Inserts value of n into word 56 of block 0 as virtual SETTOP high limit; n can be 1 to 32 (decimal); valid only with /V /L Produces output file in .LDA format; invalid with /R, /V /M:n Defines stack address /N Produces global cross-reference listing as part of load map /O:n Produces overlay structure; invalid with /L /P:n Changes amount of space linker uses for library routines; default is 170 /Q Specifeis start address of up to eight root program sections; invalid iwht /R, /H /R:n Produces output in .REL format; n is the stack size; invalid with /B, /H, /K, /L, /Q /S Allows maximum memory space for linker symbol table /T:n Defines transfer address /U:n Rounds up a program section; n must be a power of 2 /V Enables special XM monitor SETTOP and LIMIT features; invalid with /L /W Produces a wide load map listing (132 columns) /X Does not output bitmap if codes is below 400 /Y:n Starts a program section on address boundary n; invalid with /H /Z:n sets unused location to n // Allows multiple input lines; use on first and last lines of input EXAMPLES None .ENDM .MACRO LOG LOG Log process SYNTAX None SEMANTICS The Log process is used to record significant system events (traps) for later analysis. Traps are evoked when unusual but nonfatal network events occur, such as invalid packet formats, misrouted datagrams, etc., and when users log in and out of the system, for example. The data are recorded in a special file called LOG.TXT, which can be created using the CRMAIL utility and inspected using any text editor. Each line begins with a timestamp followed by the PID of the process generating the line. The data describing the event occupies the remainder of the line. Detailed coding formats are described in the program module identified following the "?" character. The Log process is also used to initiate TCP server processes and initiate daemons to send or receive mail and transmit spool files, if enabled. OPTIONS The Log process runs as a special server (dedicated user process). Any of the commands which change fixed user-process tables (see HELP information for USER) can be used with the Log process as well, including the ON and OFF commands. The ON and OFF commands can be used to set and clear bits in the options word of the parameter area associated with the process. The ON command sets the option bits corresponding to the one bits of (which is an octal value) to one, while the OFF command sets these bits to to zero. Options for the Log process are as follows: 2 Log to file LOG.TXT (OFF: disable, ON: enable) 3 Log to terminal TT: (OFF: disable, ON: enable) 4 Mail daemon (OFF: disable, ON: enable) 5 Spool daemon (OFF: disable, ON: enable) EXAMPLES 17:19:56 002 ?TRAP-I-TCP service request [10.2.0.62] 37 17:19:58 042 ?TELSRV-I-Open UT-SALLY.ARPA 37 17:20:03 042 ?TELSRV-I-Closed 18:10:21 006 ?TRAP-I-ICMP 005 000 [10.0.0.89] -> [128.8.0.2] 18:13:08 050 ?GATE-F-Neighbor down 2 [10.3.0.27] 18:24:19 046 ?UDP-I-Time request [18.26.0.8] 18:24:34 046 ?UDP-I-Name request [18.26.0.8] 18:30:54 006 ?TRAP-I-Leader error 000017 003400 001400 015400 000633 18:33:59 006 ?TRAP-I-ICMP 005 000 [10.0.0.89] -> [128.8.0.2] 18:34:22 012 ?TRAP-I-Link up 18:37:30 014 ?TRAP-I-Link down 18:44:46 046 ?UDP-I-Time request [18.26.0.33] 18:50:14 050 ?GATE-I-Neighbor up 2 [10.3.0.27] .ENDM .MACRO LOGIN LOGIN Assign user private volume SYNTAX login ;entered by user ;or login ;entered by user Password: ;host prompts for pw ;or login ;entered by user Userid: ;host prompts for name Password: ;host prompts for pw SEMANTICS This program is used to log a user into the system, as well as assign a private volume for his files. Its use is mandatory for remote virtual-terminal (see TELSRV) and file-transfer (see FTPSRV) access and optional for local access. See the SYSMGR information and the ON command in the USER information for further information. OPTIONS None, but see also the help information for LOGOUT. EXAMPLES .login smith .Password: (Note: the password is not echoed and a message is given only in the event of an error.) .ENDM .MACRO LOGOUT LOGOUT De-assign user private volume SYNTAX logout ;entered by user SEMANTICS After a user has assigned a private volume using the LOGIN command, the default volume may be restored by typing LOGOUT. Also causes disconnect in the case of the TELNET server. OPTIONS None, but see also the help information for LOGIN. EXAMPLES None .ENDM .MACRO MACPIC MACPIC Macintosh to bitmap conversion SYNTAX MACPIC ;invoke MACPIC.SAV *= *... ;* is CSI prompt *^Z ;exit to CLI SEMANTICS This program reads a MacPaint file encoded in uuencode format and constructs a bitmap file in Sun format. The first 512 bytes of the file are the header. The first four bytes comprise the version number, followed by 38 * 8 = 304 bytes of patterns. The remaining 204 bytes are reserved for future expansion. If the version number is zero, the patterns are ignored. Hence, programs that wish to create files to be read into MacPaint can just write out 512 bytes of zero as the header. Following the header are 720 compressed scanlines of data which form the 576 wide by 720 tall bitmap. OPTIONS None EXAMPLES None .ENDM .MACRO MAIL MAIL Message and mail-file formats SYNTAX See RFC-822. SEMANTICS The format of the ARPANET message data structures is described in RFC-822. In this model messages are sent by a user to a specified recipent in the format @, where is the name of a host and is the name of an user known to that host. The implied address, usually called a mailbox, is typically associated with a mail file belonging to the recipient. The mail file format used in the Fuzzball system is line-structured, with each line terminated by the ASCII sequence , and contains only ASCII printing characters and format effectors. Messages consist of a file header, which contains a character count, followed by the message itself. Messages are stored one after the other with the last followed by an ASCII character for compatibility with other RT-11 components. Figure 1 shows the format of a typical message. 17-Sep-83 17:53:49,314;000000000000 RCPT to: RCPT to:<@dcn1:Gross@dcn5> DLVD to: Return-path: Date: 17-Sep-83 17:53:25-UT From: Mills@dcn6 Subject: Test message To: Zorica@dcn5 cc: <@dcn1:Gross@dcn5>, Mills@dcn6 Folks, This message demonstrates RFC-821 and RFC-822 formats. Dave ------- The first line is the file header, including the date, time and count of characters in the message text, and followed by an array of twelve flag characters used by other programs of the message system. The message itself begins immediately following the which terminates this line and includes first the transport (RFC-822) header followed by the message (RFC-821) header and, finally, the body of the message itself. In the above example the lines beginning with RCPT and DLVD belong to the transport header and the lines following that up until the blank line belong to the message header. Mail files can be created in three ways: (1) by copying a mail file from a TOPS-20 or Fuzzball host as-is to a Fuzzball host, (2) by creating and appending a new message locally and (3) by receiving and appending a message from another host. Case (1) has been found useful during testing and in cases involving large amounts of mail which can be bulk-transferred more efficient file-transfer protocols like FTP and NIFTP. However, TOPS-20 files do not include the transport header, so that messages sent from these files require manual intervention. Case (2) is implemented by an interactive mail editor which operates much like the TOPS-20 SNDMSG program to construct and edit messages and append them, along with their transport and message headers, onto a specified mail file. Case (3) is implemented by the SMTP Server, which listens for messages from the network and appends them onto the UNSENT.MSG mail file. OPTIONS None EXAMPLES See above. .ENDM .MACRO MESSAGES MESSAGES Network messages SYNTAX ?-- name of module originating the message I = information, W = warning, F = fatal explanatory string SEMANTICS Following is a list of network-related messages which may be generated by network-layer and transport-layer protocol modules. In most cases additional information is available in the help information under the name indicated in the field. ?-I-Open The connection has opened successfully. ?-I-Closed The connection has closed and all resources returned to the operating system. ?-F-Invalid signal This indicates a serious, probably fatal, software error. ?-I-Remote disconnect The remote end of the connection has initiated a close sequence (FIN indication). The sequence will be complete only after the local end initiates a companion close sequence. ?-I-Remote interrupt The remote end of the connection has initiated a TCP URGENT sequence, but no provision for that has been incorporated in the local end. ?-W-Connection error: An error in the protocol or network has been recognized, either explicitly by an ICMP message received from the network or implicitily as the result of a problem in the local host routing tables. Additional information is provided by , which can be one of the following: String Source Most probable cause ----------------------------------------------------------- unspecified reason internal software error parameter error ICMP message bad datagram format time exceeded ICMP message routing loop reassembly error ICMP message high packet losses net unreachable ICMP message remote gateway down host unreachable ICMP message remote host down protocol unreachable ICMP message unsupported protocol port unreachable ICMP message unsupported service fragmentation error ICMP message bad datagram format source route failed ICMP message bad network route gateway down local routing local gateway down host down local routing local host down ?-W-Host not responding: A timeout has occured during transmission due to the condition indicated by , which may be one of the following: String Condition -------------------------------------------------------------- unspecified reason software error initial connection timeout waiting for connection to open ACK timeout waiting for acknowledgment of data sent send window timeout waiting for the receiver to accept more data idle connection timeout nothing whatever heard for an unreasonably long time ?-F-Connection reset: A TCP RESET segment has been received, usually indicating a broken or unsynchronized connection. Additional information is provided by , which can be one of the following: String Cause -------------------------------------------------------------- unspecified reason software error connection-open state (a) unsupported service (port) or (b) previous half-open connection data-transfer state other end has crashed or timed out and has restarted connection-close state other end has prematurely terminated TIME-WAIT state ?-I-Listening... This message, produced by some modules, indicates the module is listening for a connection request and does not represent an error. ?-F-Connection open error An attempt was made to transfer data over a connection that has not opened or an attempt was made to open a connection already open. This usually indicates a software error. ?-F-Invalid parameter An invalid parameter was detected in a call to a system routine, indicating a software error. ?-W-Insufficient resources Sufficient system resources are not currently available for the operation requested. Protocol modules typically retry the operation, so this message does not necessarily indicate an error. ?-W-Gateway down A local gateway is down. ?-W-Host down A local host is down. OPTIONS None EXAMPLES None .ENDM .MACRO MMM MMM Multi-Media Mail program SYNTAX MMM ;invoke MMM.SAV ... ;* is prompt QUIT ;return to CLI SEMANTICS The Multi-Media Mail (MMM) program is used to compose, read, answer and forward documents in the format described in RFC-759 and RFC-767 as amended. It is designed to operate with other user and server programs conforming to these protocols. Multi-media messages can be composed and displayed under either the RT-11 or Fuzzball operating systems; however, they can be sent to and received from other systems only under the Fuzzball operating system. The MMM program can be used with ordinary text data and no special peripheral devices other than a standard video or hardcopy terminal; however, full functionality requires special peripheral devices for non-text data. The Fuzzball operating system presently supports the Lincoln Laboratory LPCM Speech Codec for voice data input/output, the Dacom 450 Facsimile Transceiver for hardcopy image and facsimile data input/output and the Peritek VCG Color Bitmap Display for text, image, facsimile and graphics data presentation. Following is a summary of the data types, protocols and attributes presently supported: Data type Protocol Attributes --------------------------------------------------------------------- Text VERBATIM, PARAGRAPH size, font (Peritek VCG only) Image BITMAP width, height Voice LPC none Facsimile Rapicom-450-BLOCK none Graphics TEKTRONIX (see elsewhere) The MMM program is is used in interactive mode to compose and display multi-media messages. It consists of a number of overlayed modules which operate with special files, called mailbags, in RFC-759 format. A mailbag consists of a list structure containing one or more multi-media messages, each of which includes the message proper in Multi-Media Content Protocol (MMCP) format enclosed in an envelope in Multi-Media Transport Protocol (MMTP) format. A mailbag is queued by MMM for transmission to a designated Internet host, following which the system spooler daemon (PRTQ) transmits it using TCP and port number 45 as specified in RFC-759. Upon recognizing a TCP connection request on port 45, the TCP dispatcher (TELSRV) activates the MMM program in daemon mode to process the incoming mailbag. The program extracts messages from the mailbag and delivers them to the respective users and also queues acknowledgments for these messages, which are then returned to the sender via the system spooler daemon. Acknowledgements for previously sent messages may also be included in the mailbag. These are extracted by the MMM program and matched with previously sent but not acknowledged messages. Upon successful match the message and its acknowledgment are discarded. Each MMM message is saved in a separate file with extension MMM and can be separately extracted and read using the MMM program. As the message is read various data objects, including speech, image and text data, either displayed immediately or sent to the spooling system for possible forwarding to special devices that may be attached to other hosts. Alternativiely, the data objects can be stored in local files for later manipulation or playback. A MMM message is constructed from data previously recorded, including speech, image and text data stored in separate files. The MMM program is used to assemble these data objects in the message, include address and subject information and send the message to the spooling system for transmission. Facilities are included to answer and forward previously received messages. OPTIONS ANSWER Answer a previously received message. The program will prompt for the of the message, then prompt for each data item in turn ("Protocol?") as described under the SEND command. PLAY Playback MMM message previously read using the READ command. The program will display the message header followed by a request for disposition for each data object in the message. In each request the type and size of the object is displayed followed by the default device name. An empty line causes the data to be output to that device, which need not reside on the same machine. Alternatively, a causes the data to be stored in the file of that name with default extensions shown in the SEND command. QUIT Return to the CLI. READ Read MMM mailbag (default extension is MMM). SEND Compose and send an MMM message to one or more recipients. The program will prompt first for the "To:" list and expect a recipient in the usual form @ in each line, with the list terminated by a single . It will then prompt for the "Cc:" list in the same way. Next, it will prompt for the "Subject:" line and, finally, for each data item in turn ("Protocol?"). In response to the data-item prompt, the one of the following can be supplied: Name Data Type Extension ------------------------------------------- VERBAT ASCII Text TXT IMAGE Sun bitmap BIT VOICE LPCM Voice LPC FACSIM Dacom Facsimile FAX GRAPHI Tektronix Graphics TEK DOCUME MMM Message MMM The program will then ask for the name of the file containing the data type and insert it into the MMM message. The list of data types is terminated by an empty line. At this point the message is queued for transmission. SHOW Display data structure summary, including tallies of nodes, main storage, temporary files and file sizes. EXAMPLES .mmm DCN6.ARPA MMM User Process (11-Oct-84 Version) 05-Jan-86 01:47:28 *read msg56 *play Return-path: Received-from: USC-ISIB.ARPA by dcn6.arpa at 1985-12-24-02:43:57 Transaction: 6230 number 48444 Date: 1985-12-23-12:17:25,000-07:00 From: JKReynolds@USC-ISIB.ARPA Subject: Christmas Vision To: mills@dcn6.arpa, forsdick@bbn-diamond.arpa, rthomas@usc-isib.arpa, tcrowley@bbn-jade.arpa, rschaaf@usc-isib.arpa, rtomlinson@usc-isib.arpa, travers@bbn-diamond.arpa, clynn@bbn-diamond.arpa, khuber@bbn-diamonds.arpa, jsecunda@bbn-diamond.arpa --- Sequential presentation --- Image protocol BITMAP-1 [508x82 pels] (11 blocks): Destination [VCG:]? [The image appears immediately on the Peritek display.] Image protocol BITMAP-1 [504x471 pels] (58 blocks): Destination [VCG:]? joyce [The image is stored in the file JOYCE.BIT in Sun bitmap format for possible later display or transport to a Sun workstation or another Fuzzball.] *read msg55 *play Return-path: Received-from: bbn-diamond.arpa by DCN6.ARPA at 1985-11-07-17:33:50 Transaction: 350 number 1 Date: 1985-11-07-12:39:00,0-05:00 From: forsdick@bbn-diamond.ARPA Subject: Stock Market and Weather for November 7, 1985 To: Mills@DCN6.ARPA, MOConner@ISIB.ARPA Cc: Forsdick@BBN-Diamond.ARPA --- Sequential presentation --- Text protocol Verbatim-1 (2 blocks): Destination [TT:]? From the New York Times, Thursday November 7, 1985: With a concerted push from institutional investors in the waning minutes of trading, the Dow Jones industrial average jumped the historic 1,400 hurdle yesterday with relative ease, ending the day at 1,403.44. ... The Dow first closed above 1,000 on Nov. 14, 1972. It took more than 10 years, until Feb. 24, 1983, for it to finish above 1,100. In the rush of that year's bull market, it was just two months -- until April 26 -- before the Dow ended above 1,300. Text protocol Verbatim-1 (1 blocks): Destination [TT:]? Satellite Photo Nov 6 2 P.M. (EST) Image protocol BitMap-1 [664x459 pels] (75 blocks): Destination [VCG:]? [A satellite photograph appears immediately on the Peritek display.] Text protocol Verbatim-1 (1 blocks): Destination [TT:]? Low and middle clouds extend from New England to the Ohio Valley. A band of frontal clouds causing light and moderate rain extends from the upper lake region to Oklahoma. Skies are mostly clear over the southern portion of the country and the Midwest. Broken clouds and snow are visible over the Rockies and the Northwest. Image protocol BitMap-1 [683x494 pels] (83 blocks): Destination [VCG:]? [A weather map appears immediately on the Peritek display.] Voice protocol LPCM-1 (24 blocks): Destination [LPC:]? [The speech data are automatically stored in a spool file, transmitted to another Fuzzball equipped with an LPCM speech codec and decoded. Meanwhile, the operator dials a special PBX trunk (code 422 in our version) and hears the playback.] *send To? mills@dcn7 To? Cc? Subject? Test message Protocol? verbat Text protocol source? y.txt Protocol? image Image protocol source? joyce Protocol? ?MMM-I-Queue MILLS DK:VM3001.MMM[61] for [128.4.0.7] *quit .ENDM .MACRO MSG MSG Mail reader program SYNTAX MSG ;invoke MSG.SAV ... ;-> is prompt Q(uit) or E(xit) or ^Z ;return to CLI SEMANTICS This module is part of the groupe of modules (SNDMSG,CRMAIL,SMTP) which form the mail system The purpose of MSG is to examine and operate on messages that are stored in the mail file. The program first attempts to open a given file which has to be in the mail format (created by CRMAIL). If it succeedes it creates a table which holds the information about each message. The information is : offset to that message and number of bytes in that message. After displaying the information about the file blocks: A maximum of 500 file blocks are available of which 70 are in use. it displayes a promt ' <- '. The process is now ready to accept the user command. Every command is followed by a message sequence which is composed of one of the following: 1) a number 2) two numbers separated by any nonnumeric character 3) one of the following special sequence characters: A - All messages D - Deleted messages E - Examined messages I - All messages in inverse order N - Not examined messages U - Undeleted messages The valid command characters and their operations are: A - Answers to the specified message The process first displayes the header of the message- Answer message: 1 09-Mar Mills at dcn3 COMSAT final report(298char) then it chains to the SNDMSG process to form the answer message. Below are the prompt fields issued by the SNDMSG process: From: - enter user address Reply-to (t or c): - request for the address that will appear on the 'To:' line in the answer message. In every case the address from the 'From:' field in the original message ( the senders address) is entered on the 'To:' line. The following are the options for the 'To:' line: [RET] - only the senders address t - senders address and all the address in the 'To:' field of the original message c - senders address, all the addresses in the original 'To:' field and all the addresses in the original 'Cc:' field. Cc: - Additional address Message: - text of the message ^Z terminates the message after which the program chains back to the MSG. Note that the user is not prompted for the subject. The answer messsage uses the same subject title that was in the original message prefixed by 'Re:'. The only time when the user is promted for the subject is when the original message does not have that field. (for more information check SNDMSG) B - Backup, print previous message It prints the message in the same format as in t command C - Print the information about the current message number and file name: Current message number is 36 of 37 messages in the file UNSENT.MSG A maximum of 500 file blocks are availableof which 70 are in use. D - Mark a given message sequence for deletion. The message remains part of the file until the file is updated. E - Exit the program and update the open file Examines all of the messages and deletes the ones that are marked for deletion. F - Forward one or more messages The process first displayes headers of all the messages that have to be forwarded: Forward message(s): 1 09-Mar Mills at dcn3 COMSAT final report After this the process chains to SNDMSG which will build the message that has to be forwarded. (check SNDMSG for explanation of promt fields). The first part of the message text is the text that the user types in. The second part is the inserted forwarded message(s). Forwarded text is preceeded by the line that says- --- beginning of forwarded message --- and ended by the line --- end of forwarded message --- ^Z will complete the message and chain back to MSG. G - Set the current message number to the one given H - Print the header information of the given message sequence Prints the message number, date, from filed and the first 30 characters of the subject field: 1 09-Mar Mills at dcn3 COMSAT final report I - Include the byte count in the headers It is an ON/OFF switch giving either a prompt Length included or Length NOT included in the present implementation the length is always included L - Create a listing file of the given message sequence After entering the l command with the message sequence the process prompts for the file name - List file name: and then copies all the required message into the given file N - Next, print next message Same action as the t command P - Put a message from the open file into another file The file created of the specified subset of messages is again in the mail file format Q - Quit the msg program Quits the MSG program closing the mail file without updating it (see E command) S - Chain to SNDMSG chains to SNDMSG process inorder to create a new message (for more information see SNDMSG) R - Use the given file as the active file It opens a message file. If another message file was already active it closes that file and issues a prompt - Mail file name: The new file becomes an active mail file T - Displayes a given message sequence to the console U - Unmark a given message sequence for deletion - Mark a given message sequence as examined - - Mark a given message sequence as not examined ! - Search the file "UNSENT.TXT" ? - Type a list of valid command characters to the console Prints the text from the msg.hlp file OPTIONS None EXAMPLES None .ENDM .MACRO NETCLK NETCLK Network set-clock program SYNTAX NETCLK ;invoke NETCLK.SAV SEMANTICS This program can be used to set the local host date and time from a remote host supporting an RFC-868 compatible time server. The defaults to DCN1.ARPA, which is presently synchronized to NBS Radio WWVB to within a few milliseconds. OPTIONS None EXAMPLES None .ENDM .MACRO NETWORK NETWORK Network Process commands SYNTAX SET ;CLI command SEMANTICS See USER process commands and GENERAL help information OPTIONS ASG This command is used for special network processes that can process ASCII data in addition to ordinary datagrams. It is used to establish the process or device as the destination of ASCII data received via the link. CMD List the available commands. Additional information is available with the HELP program. DEVICE Display a formatted summary of the device table, which establishes the association between the logical and physical names of each process together with additional data. If is a valid logical name, the data associated with that process is displayed. If is defaulted the entire table is displayed. IDENT
Set the address assigned to the link to
. Note that these values are constructed automatically during normal system operations, so that this command is intended only for exceptional circumstances. OFF The ON and OFF commands can be used to set and clear bits in the options word of the parameter area associated with the process. The ON command sets the option bits corresponding to the one bits of (which is an octal value) to one, while the OFF command sets these bits to to zero. Options for the network process are as follows: 10 Link enable (OFF: enable, ON: disable) 11 HELLO neighbor (OFF: enable, ON: disable) 13 External loopback (OFF: disable, ON: enable) 14 HELLO messages (OFF: disable, ON: enable) ON (see the OFF command) SHOW Display a formatted summary of various quantitites of interest, including packet tallies, network parameters and addresses. SIZE Set the buffer size for inbound datagrams and the maximum fragment size for outbound datagrams to . Note that the size is ordinarily set at the maximum transmission unit (MTU) size, which is an intrinsic parameter of the network, so that this command is intended only for exceptional circumstances. STATUS Display a formatted summary of device-dependent status variables. The interpretation of these data depend on the various device drivers used. There are several formats for the status information depending upon the network driver and configuration. Among these are the following: Code Driver/network -------------------------------- ARP ARPAnet 1822 DH protocol DCN DCnet network link DMV DCNet DMV11 network link ETH Ethernet HDH ARPAnet HDH protocol PCG IBM PCIP gateway PKT AX.25 packet radio X25 X.25 network link EXAMPLES .set lh0 cmd Commands are: CMD SHO ON OFF ID SIZ STA .set lh0 sho Process type: 000027 options: 040000 Subnet: DCN status: 0 min buf: 0 retry: 3750 Foreign address: [0.0.0.0] max size: 256 Input packets: 0 bad format: 0 bad checksum: 0 returned: 0 dropped: 0 HELLO msgs: 0 ICMP msgs: 0 Output packets: 29 Input errors: 0 Output errors: 0 No buffer: 0 .ENDM .MACRO NIFTP NIFTP Network-independent file transfer program SYNTAX NIFTP ;invoke NIFTP.SAV ... QUIT ;exit to CLI SEMANTICS The Network-Independent File Transfer Protocol (NIFTP) has been the object of an ongoing standardization effort in the United Kingdom. The current specifications are given in a document called the Blue Book and published by the National Physical Laboratory in 1980. A subset of this protocol is supported for file transfers between Fuzzball hosts and certain TOPS-20 ARPANET hosts using two programs, the NIFTP User, a PDP11 program written in the C language by Steve Treadwell and the NIFTP Server, a TOPS-20 program written in the BCPL language by Chris Bennett, both of University College London. The NIFTP User runs in interactive mode on a Fuzzball host. The NIFTP Server resides at a TOPS-20 ARPANET host (presently USC-ISIE) and is activated upon receipt of a TCP connection on port 47. The NIFTP User is controlled by user commands in the same way as the Command Language Interpreter (CLI) and other user programs. It in turn controls the NIFTP Server by the protocol specified in the Blue Book. These programs can also be used with other implementations conforming to the Blue Book protocol. A file transfer operation proceeds by first specifying the remote host using the CONNECT command and then the user name and password using the LOGIN command. Following this, the SEND and GET commands are used to transfer files to and from the remote host as required. For each transfer a connection is established to the NIFTP Server, which verifies the user name and password and establishes the working directory, following which the file transfer takes place. At the conclusion of the file transfer the connection is closed. The QUIT command is used to exit to the CLI. The NIFTP User is normally controls all connection and file-transfer operations. The syntax of NIFTP User commands is similar to that of CLI commands and consists of a keyword followed by a list of arguments separated by spaces. Only the first three characters of a keyword are significant. In the case of some commands expecting two file names as arguments, if the second argument is missing a copy of the first argument replaces it. Ordinarily this convention leads to the intended action; however, there are cases where misdirected use of this feature can result in unintended actions. The NIFTP User prompt is "*", signifying the program is ready for the next command. A prompt appears as each command sequence is completed with the NIFTP Server. Prompts will not appear following commands which have only local significance or in which errors are detected. OPTIONS ABORT If a data transfer is not in progress, do nothing. Else, send the NIFTP Server ABORT signal and wait for the connection to be closed from the remote end. ASCII The ASCII and IMAGE commands set the mode for subsequent file transfers. The default is ASCII. BRIEF The BRIEF and VERBOSE commands control output of detailed commentary dialog. BRIEF disables this and VERBOSE enables it. The default is BRIEF. CONNECT Set the and for a subsequent file transfer. The specification is in the form n1,n2,n3,n4, where n1,...,n4 are decimal integers with values in the range 0-255, and the default is the ARPANET host USC-ISID (10,1,0,27). The specification is a decimal number in the range 0-32767 with a default of 47 (NIFTP). GET Open a connection to the remote host previously specified by the CONNECT, LOGIN and ASCII/IMAGE commands. Then transfer the file on the remote host to on the local host. The must contain no more than 40 ASCII printing characters, while the must be a valid RT-11 file name or sequential device name. If is missing, assume the string in its place. HELP Display helpful information, including a list of commands. IMAGE (see the ASCII command) LOGIN Specify the and for subsequent data transfers. Both and must contain no more than 40 ASCII printing characters. QUIT Execute an implied ABORT command and exit to the CLI. SEND Open a connection to the remote host previously specified by the CONNECT, LOGIN and ASCII/IMAGE commands. Then transfer the file on the local host to on the remote host. The must be a valid RT-11 file or sequential device name, while the must contain no more than 40 ASCII printing characters. If is missing, assume the string in its place. SHOW Display a formatted summary of various quantitites of interest, including the current host, file and block number. VERBOSE (see the BRIEF command) EXAMPLES None .ENDM .MACRO PING PING Internet measurements program SYNTAX PING ;invoke PING.SAV ... QUIT ;exit to CLI SEMANTICS The Packet InterNet Groper (PING) is an internet measurement and debugging tool. It can function both as a user and server and is normally run in interactive mode by a user at a Fuzzball host. PING is designed to send datagrams to cooperating internet hosts and gateways which echo these datagrams to the sender. The roundtrip delays are then recorded and used to develop summary statistics and histograms. PING is not designed to test throughput capabilities, since only a single datagram is allowed on the roudtrip path. Ordinarily, PING datagrams use the Internet Control Message Protocol (ICMP) Echo and Echo Reply messages, since these are echoed by many Internet hosts and gateways, including all those using the Fuzzball internet software. However, the ICMP datagram formats can be used with other protocol numbers in the IP header. A PING operation proceeds by first opening a raw-datagram connection with the remote host using the CONNECT command. The PING command is used to begin a volley of ICMP Echo - ICMP Echo Reply exchanges between the local and remote hosts. Roundtrip delay samples are recorded in a buffer capable of holding about 500 samples. Finally, the SHOW command is used to select the format and display the results. The QUIT command is used to exit to the CLI. OPTIONS ABORT Terminate the PING volley and ignore subsequent datagrams. BRIEF The BRIEF and VERBOSE commands control output of detailed commentary dialog. BRIEF disables this and VERBOSE enables it. The default is VERBOSE. CLOSE Close the data-collection file. CONNECT Open a raw-datagram connection to with specified. The is a decimal integer In the range 0-255 and defaults to 1 (ICMP). CREATE Create a data-collection file for delay samples. As each ICMP Echo Reply message is received from the network and the roundtrip delay is calculated the value is written to the file as a 16-bit integer. DISCONNECT Execute an implied ABORT command and close the raw-datagram connection. HELP Display helpful information, including a list of commands. LOCAL Set the local address to , with default the local primary address. This feature can be used to select local secondary addresses in the case of a multi-homed host. OFF The ON and OFF commands are used to set and clear selected options. The ON command enables the selected option and the OFF command disables it. Options supported include: ACK Controls response to the ICMP Echo datagram (OFF: process, ON: return AN ICMP Echo Reply datagram) DUMP Controls printing of the IP header (OFF: disable, ON: enable) TIME Controls packet type (OFF: ICMP Echo, ON: ICMP Timestamp) TRACE Controls printing of the datagram header, including the roundtrip delay and clock offsets (OFF: disable, ON: enable) ON (see the OFF command) OPTION ... Specify the Internet source route as the sequence ... (up to nine). Set the option code in the IP options field to (octal), where code is 203 (loose source route), 207 (record route) or 211 (strict source route). PING Begin a PING volley with the selected remote host and protocol. The number of roundtrip volleys requested is , which defaults to one. QUIT Execute an implied DISCONNECT command and return to the CLI. RESTART Resume a PING volley with the select remote host and protocol. This command is useful after a PING datagram has been lost in the network. ROUTE ... Specify the Internet source route as the sequence ... (up to nine). SHOW Display a formatted summary of various quantitites of interest, including the current host and PING headers. The selects the format of the display. If it is SUMMARY the data printed include the number of volleys together with the mean, minimum, maximum and overflow of the samples collected. If it is HISTOGRAM a histogram of the samples collected is printed. SIZE Set the maximum datagram size to octets, including the Internet header. The can be FIXED (default) or RANDOM. In the latter case the size is uniformly distributed on the interval 40 to octets. TIME