diff --git a/H316/h316_cpu.c b/H316/h316_cpu.c index 52110867..835bfb4c 100644 --- a/H316/h316_cpu.c +++ b/H316/h316_cpu.c @@ -25,6 +25,12 @@ cpu H316/H516 CPU + 21-May-13 RLA Add IMP/TIP support + Move SMK/OTK instructions here (from CLK) + Make SET CPU DMA work as documented + Implement extended interrupts + Add "interrupt taken" flag to CPU HISTORY + Add "break on write" breakpoints 19-Nov-11 RMS Fixed XR behavior (Adrian Wise) 19-Nov-11 RMS Fixed bugs in double precision, normalization, SC (Adrian Wise) 10-Jan-10 RMS Fixed bugs in LDX, STX introduced in 3.8-1 (Theo Engel) @@ -176,12 +182,19 @@ unknown I/O device and stop_dev flag set I/O error in I/O simulator - 2. Interrupts. Interrupts are maintained by two parallel variables: + 2. Interrupts. Interrupts are maintained by parallel variables: - dev_int device interrupt flags - dev_enb device interrupt enable flags + dev_int[2] device interrupt flags + dev_enb[2] device interrupt enable flags - In addition, dev_int contains the interrupt enable and interrupt no + Note that these are actually arrays of two 16 bit words each. The first + word of each vector contains the bits for the standard interrupt devices, + and the second word is the bits for the extended interrupts 1..17. The + IMP uses these extended interrupts, however this was a standard H316 option + and is in no way IMP specific. Actually the H316 supported up to 48 extra + interrupts, but it seems like overkill to implement them all. + + In addition, dev_int[0] contains the interrupt enable and interrupt no defer flags. If interrupt enable and interrupt no defer are set, and at least one interrupt request is pending, then an interrupt occurs. The order of flags in these variables corresponds to the order @@ -212,6 +225,9 @@ */ #include "h316_defs.h" +#ifdef VM_IMPTIP +#include "h316_imp.h" +#endif #define PCQ_SIZE 64 /* must be 2**n */ #define PCQ_MASK (PCQ_SIZE - 1) @@ -242,6 +258,7 @@ typedef struct { int32 xr; int32 ea; int32 opnd; + t_bool iack; // [RLA] TRUE if an interrupt occurred } InstHistory; uint16 M[MAXMEMSIZE] = { 0 }; /* memory */ @@ -259,6 +276,9 @@ int32 sc = 0; /* shift count */ int32 ss[4]; /* sense switches */ int32 dev_int = 0; /* dev ready */ int32 dev_enb = 0; /* dev enable */ +uint32 ext_ints = 0; // [RLA] 16 if extended interrupts enabled +uint16 dev_ext_int = 0; // [RLA] extended interrupt request bitmap +uint16 dev_ext_enb = 0; // [RLA] extended interrupt enable bitmap int32 ind_max = 8; /* iadr nest limit */ int32 stop_inst = 1; /* stop on ill inst */ int32 stop_dev = 2; /* stop on ill dev */ @@ -276,6 +296,9 @@ int32 hst_p = 0; /* history pointer */ int32 hst_lnt = 0; /* history length */ InstHistory *hst = NULL; /* instruction history */ +extern int32 sim_int_char; +extern DEVICE *sim_devices[]; + t_bool devtab_init (void); int32 dmaio (int32 inst, int32 fnc, int32 dat, int32 dev); int32 undio (int32 inst, int32 fnc, int32 dat, int32 dev); @@ -289,6 +312,11 @@ t_stat cpu_show_hist (FILE *st, UNIT *uptr, int32 val, void *desc); t_stat cpu_show_dma (FILE *st, UNIT *uptr, int32 val, void *desc); t_stat cpu_set_nchan (UNIT *uptr, int32 val, char *cptr, void *desc); t_stat cpu_show_nchan (FILE *st, UNIT *uptr, int32 val, void *desc); +t_stat cpu_set_interrupts (UNIT *uptr, int32 val, char *cptr, void *desc); +t_stat cpu_show_interrupts (FILE *st, UNIT *uptr, int32 val, void *desc); +int32 sim_ota_2024 (int32 inst, int32 fnc, int32 dat, int32 dev); +int32 cpu_interrupt (int32 vec); +int32 cpu_ext_interrupt (void); /* CPU data structures @@ -298,7 +326,7 @@ t_stat cpu_show_nchan (FILE *st, UNIT *uptr, int32 val, void *desc); cpu_mod CPU modifiers list */ -DIB cpu_dib = { DMA, IOBUS, 1, &dmaio }; +DIB cpu_dib = { DMA, 1, IOBUS, IOBUS, INT_V_NONE, INT_V_NONE, &dmaio, 0 }; UNIT cpu_unit = { UDATA (NULL, UNIT_FIX+UNIT_BINK+UNIT_EXT+UNIT_HSA+UNIT_DMC, MAXMEMSIZE) @@ -324,6 +352,8 @@ REG cpu_reg[] = { { FLDATA (START, dev_int, INT_V_START) }, { ORDATA (DEVINT, dev_int, 16), REG_RO }, { ORDATA (DEVENB, dev_enb, 16), REG_RO }, + { ORDATA (EXTINT, dev_ext_int, 16), REG_RO }, + { ORDATA (EXTENB, dev_ext_enb, 16), REG_RO }, { ORDATA (CHREQ, chan_req, DMA_MAX + DMC_MAX) }, { BRDATA (DMAAD, dma_ad, 8, 16, DMA_MAX) }, { BRDATA (DMAWC, dma_wc, 8, 16, DMA_MAX) }, @@ -353,18 +383,14 @@ MTAB cpu_mod[] = { { UNIT_MSIZE, 32768, NULL, "32K", &cpu_set_size }, { MTAB_XTD | MTAB_VDV, 0, "channels", "CHANNELS", &cpu_set_nchan, &cpu_show_nchan, NULL }, + { MTAB_XTD | MTAB_VDV, 0, NULL, "DMA", // [RLA] this is the way it's + &cpu_set_nchan, NULL, NULL }, // [RLA] documented to work! { UNIT_DMC, 0, "no DMC", "NODMC", NULL }, { UNIT_DMC, UNIT_DMC, "DMC", "DMC", NULL }, { MTAB_XTD|MTAB_VDV|MTAB_NMO|MTAB_SHP, 0, "HISTORY", "HISTORY", &cpu_set_hist, &cpu_show_hist }, - { MTAB_XTD | MTAB_VDV | MTAB_NMO, 0, "DMA1", NULL, - NULL, &cpu_show_dma, NULL }, - { MTAB_XTD | MTAB_VDV | MTAB_NMO, 1, "DMA2", NULL, - NULL, &cpu_show_dma, NULL }, - { MTAB_XTD | MTAB_VDV | MTAB_NMO, 2, "DMA3", NULL, - NULL, &cpu_show_dma, NULL }, - { MTAB_XTD | MTAB_VDV | MTAB_NMO, 3, "DMA4", NULL, - NULL, &cpu_show_dma, NULL }, + { MTAB_XTD | MTAB_VDV, 0, "extended interrupts", "EXTINT", + &cpu_set_interrupts, &cpu_show_interrupts, NULL }, { 0 } }; @@ -380,9 +406,10 @@ t_stat sim_instr (void) { int32 AR, BR, MB, Y, t1, t2, t3, skip, dev; uint32 ut; +t_bool iack; // [RLA] TRUE if an interrupt was taken this cycle t_stat reason; t_stat Ea (int32 inst, int32 *addr); -void Write (int32 addr, int32 val); +t_stat Write (int32 addr, int32 val); // [RLA] Write() can now cause a break int32 Add16 (int32 val1, int32 val2); int32 Add31 (int32 val1, int32 val2); int32 Operate (int32 MB, int32 AR); @@ -443,6 +470,7 @@ if (chan_req) { /* channel request? */ return STOP_DMAER; if ((r = t >> IOT_V_REASON) != 0) return r; + // [RLA] Note that we intentionally ignore address breaks here! Write (ad, t & DMASK); /* write to mem */ } else { /* no, output */ @@ -464,6 +492,7 @@ if (chan_req) { /* channel request? */ } else { /* DMC */ st = (st & DMA_IN) | ((ad + 1) & X_AMASK); + // [RLA] Note that we intentionally ignore address breaks here! Write (dmcad, st); /* update start */ end = Read (dmcad + 1); /* get end */ if (((ad ^ end) & X_AMASK) == 0) { /* start == end? */ @@ -479,13 +508,15 @@ if (chan_req) { /* channel request? */ /* Interrupts */ -if ((dev_int & (INT_PEND|INT_NMI|dev_enb)) > INT_PEND) {/* int req? */ - pme = ext; /* save extend */ - if (cpu_unit.flags & UNIT_EXT) /* ext opt? extend on */ - ext = 1; - dev_int = dev_int & ~INT_ON; /* intr off */ - MB = 0120000 | M_INT; /* inst = JST* 63 */ - } +//[RLA] Todo - add WDT interrupts ???? +iack = FALSE; +if ((dev_int & (INT_PEND|INT_NMI|dev_enb)) > INT_PEND) { // [RLA] check for standard interrupt + MB = cpu_interrupt(M_INT); iack = TRUE; + } +else if ( ((dev_ext_int & dev_ext_enb) != 0) // [RLA] check for extended interrupt + && ((dev_int & INT_PEND) == INT_PEND) ) { + MB = cpu_ext_interrupt(); iack = TRUE; + } /* Instruction fetch */ @@ -512,6 +543,7 @@ if (hst_lnt) { /* instr hist? */ hst[hst_p].ar = AR; hst[hst_p].br = BR; hst[hst_p].xr = XR; + hst[hst_p].iack = iack; // [RLA] record if interrupt taken } /* Memory reference instructions */ @@ -547,9 +579,9 @@ switch (I_GETOP (MB)) { /* case on <1:6> */ case 004: case 024: case 044: case 064: /* STA */ if ((reason = Ea (MB, &Y))) /* eff addr */ break; - Write (Y, AR); /* store A */ + if ((reason = Write(Y, AR))) break; /* [RLA] store A */ if (dp) { /* double prec? */ - Write (Y | 1, BR); /* store B */ + if ((reason = Write(Y | 1, BR))) break; /* [RLA] store B */ sc = 0; } break; @@ -590,7 +622,7 @@ switch (I_GETOP (MB)) { /* case on <1:6> */ if ((reason = Ea (MB, &Y))) /* eff addr */ break; MB = NEWA (Read (Y), PC); /* merge old PC */ - Write (Y, MB); + if ((reason = Write(Y, MB))) break; // [RLA] PCQ_ENTRY; PC = NEWA (PC, Y + 1); /* set new PC */ break; @@ -609,7 +641,7 @@ switch (I_GETOP (MB)) { /* case on <1:6> */ if ((reason = Ea (MB, &Y))) /* eff addr */ break; MB = (Read (Y) + 1) & DMASK; /* incr, rewrite */ - Write (Y, MB); + if ((reason = Write(Y, MB))) break; // [RLA] if (MB == 0) /* skip if zero */ PC = NEWA (PC, PC + 1); break; @@ -618,14 +650,14 @@ switch (I_GETOP (MB)) { /* case on <1:6> */ if ((reason = Ea (MB, &Y))) /* eff addr */ break; MB = Read (Y); - Write (Y, AR); /* A to mem */ + if ((reason = Write(Y, AR))) break; /* [RLA] A to mem */ AR = MB; /* mem to A */ break; case 015: case 055: /* STX */ if ((reason = Ea (MB & ~IDX, &Y))) /* eff addr */ break; - Write (Y, XR); /* store XR */ + if ((reason = Write(Y, XR))) break; /* [RLA] store XR */ break; case 035: case 075: /* LDX */ @@ -695,7 +727,11 @@ switch (I_GETOP (MB)) { /* case on <1:6> */ case 074: /* OTA */ dev = MB & DEVMASK; - t2 = iotab[dev] (ioOTA, I_GETFNC (MB), AR, dev); + // [RLA] OTA w/devices 20 or 24 are SMK or OTK! + if ((dev == 020) || (dev == 024)) + t2 = sim_ota_2024(ioOTA, I_GETFNC (MB), AR, dev); + else + t2 = iotab[dev] (ioOTA, I_GETFNC (MB), AR, dev); reason = t2 >> IOT_V_REASON; if (t2 & IOT_SKIP) /* skip? */ PC = NEWA (PC, PC + 1); @@ -1055,13 +1091,18 @@ return SCPE_OK; /* Write memory */ -void Write (int32 addr, int32 val) +t_stat Write (int32 addr, int32 val) { -if (((addr == 0) || (addr >= 020)) && MEM_ADDR_OK (addr)) + // [RLA] Write() now checks for address breaks ... + if (((addr == 0) || (addr >= 020)) && MEM_ADDR_OK (addr)) M[addr] = val; -if (addr == M_XR) /* write XR loc? */ - XR = val; /* update XR */ -return; + if (addr == M_XR) /* write XR loc? */ + XR = val; + // [RLA] Implement "break on memory write" ... + if (sim_brk_summ && sim_brk_test (addr, SWMASK ('W'))) + return STOP_IBKPT; + else + return SCPE_OK; } /* Add */ @@ -1086,6 +1127,51 @@ else C = 0; return r; } +// [RLA] Standard (fixed vector) interrupt action ... +int32 cpu_interrupt (int32 vec) { + pme = ext; /* save extend */ + if (cpu_unit.flags & UNIT_EXT) ext = 1; /* ext opt? extend on */ + dev_int = dev_int & ~INT_ON; /* intr off */ + return 0120000 | vec; /* inst = JST* vector */ +} + +// [RLA] Extended (priority) interrupt action ... +int32 cpu_ext_interrupt (void) { + // Unlike the standard interrupts, which have a fixed vector shared by all + // devices, the extended interrupts have a unique vector for every device. + // Moreover, extended interrupts are prioritized so that the lowest numbered + // interrupts have priority. That means we have to actually scan the bitmap + // of active interrupts to figure out which one to take. + // + // One uncomfortable thing about the external interrupts is that it appears + // that they were edge triggered - once an interrupt on a given level was + // granted, that interrupt wouldn't occur again until another edge occurred on + // the same request. I'm "uncomfortable" with this because it's different from + // the way the standard interrupt works - that's completely level sensitive. + // Still, this Honeywell document + // + // http://bitsavers.informatik.uni-stuttgart.de/pdf/honeywell/series16/h316/70130072167D_316_Interfacing_Apr73.pdf + // + // (read Chapter 4, Priority Interrupts, the very first paragraph) at least + // seems to imply edge triggering. And the IMP firmware is written as if they + // are edge triggered - there are many cases (modem output, task, RTC) where + // the IMP code does nothing to clear the interrupt request flag. So we're + // going with edge triggered version for now... + int32 i; uint16 m, irq; + irq = dev_ext_int & dev_ext_enb; + for (i = 1, m = SIGN; m != 0; ++i, m >>= 1) { + if ((irq & m) != 0) { + // Extended interrupts are edge triggered (see above) - when this + // interrupt is granted, clear the request ... + CLR_EXT_INT(m); + return cpu_interrupt(M_INT+i); + } + } + // If we get here, it means that we were called with no interrupt bits set. + // That really should never happen, so just HALT ... + return(0); +} + /* Unimplemented I/O device */ int32 undio (int32 op, int32 fnc, int32 val, int32 dev) @@ -1093,6 +1179,63 @@ int32 undio (int32 op, int32 fnc, int32 val, int32 dev) return ((stop_dev << IOT_V_REASON) | val); } +/* [RLA] Special I/O devices */ + +int32 sim_ota_2024 (int32 inst, int32 fnc, int32 dat, int32 dev) +{ + // OTA instructions with a device code of 20 or 24 are really SMK + // (Set interrupt Mask) instructions. OTA 20 sets the standard H316 + // interrupt mask, and OTA 120, OTA 220 and OTA 320 set the extended + // interrupt mask (of which only one, OTA 120, is used by the IMP). + // + // Further, OTA 1020 is the OTK instruction which sets special CPU + // flags (single or double precision HSA, extended addressing mode, + // the carry flag, etc). + // + // The original simh implementation handled the regular SMK and OTK + // as special cases in the CLK device. Why the CLK device??? Because + // it also uses device code 20! Shame - these have nothing to do with + // the clock! + // + // This routine implements these special OTKs as part of the CPU. + // That allows us to implement the extra interrupt masks needed by the + // IMP, and it also allows the CLK device to be disabled without losing + // the SMK or OTK instructions. The clock was an option on the original + // H316 and is not required to be present, and the IMP in particular + // needs it to be disabled. + + // Although OTA 24 is reserved nothing we currently simulate uses it! + if (dev == 024) return IOBADFNC (dat); + + // Device code 20... + switch (fnc) { + case 000: // SMK 020 - set standard interrupt mask + dev_enb = dat; break; + case 001: // SMK 120 - set extended interrupt mask #1 + if (ext_ints < 16) return IOBADFNC(dat); + dev_ext_enb = dat; break; + case 002: // SMK 220 - set extended interrupt mask #2 + case 003: // SMK 320 - set extended interrupt mask #3 + return IOBADFNC(dat); + case 010: // OTK - output keys + C = (dat >> 15) & 1; /* set C */ + if (cpu_unit.flags & UNIT_HSA) /* HSA included? */ + dp = (dat >> 14) & 1; /* set dp */ + if (cpu_unit.flags & UNIT_EXT) { /* ext opt? */ + if (dat & 020000) { /* ext set? */ + ext = 1; /* yes, set */ + extoff_pending = 0; + } + else extoff_pending = 1; /* no, clr later */ + } + sc = dat & 037; /* set sc */ + break; + default: + return IOBADFNC (dat); + } + return dat; +} + /* DMA control */ int32 dmaio (int32 inst, int32 fnc, int32 dat, int32 dev) @@ -1287,7 +1430,7 @@ C = 0; dp = 0; ext = pme = extoff_pending = 0; dev_int = dev_int & ~(INT_PEND|INT_NMI); -dev_enb = 0; +dev_ext_int = dev_enb = dev_ext_enb = 0; for (i = 0; i < DMA_MAX; i++) dma_ad[i] = dma_wc[i] = dma_eor[i] = 0; chan_req = 0; @@ -1295,7 +1438,10 @@ pcq_r = find_reg ("PCQ", NULL, dptr); if (pcq_r) pcq_r->qptr = 0; else return SCPE_IERR; -sim_brk_types = sim_brk_dflt = SWMASK ('E'); +// [RLA] We now have two break types - "E" (break on execution) and also "W" +// [RLA] (break on write)... +sim_brk_types = SWMASK('W') | SWMASK('E'); +sim_brk_dflt = SWMASK ('E'); return SCPE_OK; } @@ -1349,6 +1495,28 @@ for (i = MEMSIZE; i < MAXMEMSIZE; i++) return SCPE_OK; } +/* [RLA] Set/Show number of interrupts supported */ + +t_stat cpu_set_interrupts (UNIT *uptr, int32 val, char *cptr, void *desc) +{ + uint32 newint; t_stat ret; + if (cptr == NULL) return SCPE_ARG; + newint = get_uint (cptr, 10, 49, &ret); + if (ret != SCPE_OK) return ret; + if ((newint != 0) && (newint != 16)) return SCPE_ARG; + ext_ints = newint; + return SCPE_OK; +} + +t_stat cpu_show_interrupts (FILE *st, UNIT *uptr, int32 val, void *desc) +{ + if (ext_ints == 0) + fprintf(st,"standard interrupts"); + else + fprintf(st,"extended interrupts = %d", ext_ints); + return SCPE_OK; +} + t_stat cpu_set_nchan (UNIT *uptr, int32 val, char *cptr, void *desc) { uint32 i, newmax; @@ -1373,7 +1541,7 @@ t_stat cpu_show_nchan (FILE *st, UNIT *uptr, int32 val, void *desc) { if (dma_nch) fprintf (st, "DMA channels = %d", dma_nch); -else fprintf (st, "no DMA channels"); +else fprintf (st, "no DMA"); return SCPE_OK; } @@ -1481,17 +1649,42 @@ return SCPE_OK; /* Set up I/O dispatch and channel maps */ +// [RLA] Check for DMC conflicts (on both DMC channels!) ... +t_bool set_chanmap (DEVICE *dptr, DIB *dibp, uint32 dno, uint32 chan) +{ + if ((chan < DMC_V_DMC1) && (chan >= dma_nch)) { + printf ("%s configured for DMA channel %d\n", sim_dname (dptr), chan + 1); + if (sim_log) + fprintf (sim_log, "%s configured for DMA channel %d\n", sim_dname (dptr), chan + 1); + return TRUE; + } + if ((chan >= DMC_V_DMC1) && !(cpu_unit.flags & UNIT_DMC)) { + printf ("%s configured for DMC, option disabled\n", sim_dname (dptr)); + if (sim_log) + fprintf (sim_log, "%s configured for DMC, option disabled\n", sim_dname (dptr)); + return TRUE; + } + if (chan_map[chan]) { /* channel conflict? */ + printf ("%s DMA/DMC channel conflict, devno = %02o\n", sim_dname (dptr), dno); + if (sim_log) + fprintf (sim_log, "%s DMA/DMC channel conflict, devno = %02o\n", sim_dname (dptr), dno); + return TRUE; + } + chan_map[chan] = dno; /* channel back map */ + return FALSE; +} + t_bool devtab_init (void) { DEVICE *dptr; DIB *dibp; -uint32 i, j, dno, chan; +uint32 i, j, dno; for (i = 0; i < DEV_MAX; i++) iotab[i] = NULL; for (i = 0; i < (DMA_MAX + DMC_MAX); i++) chan_map[i] = 0; -for (i = 0; (dptr = sim_devices[i]); i++) { /* loop thru devices */ +for (i = 0; (dptr = sim_devices[i]); i++) { /* loop thru devices */ dibp = (DIB *) dptr->ctxt; /* get DIB */ if ((dibp == NULL) || (dptr->flags & DEV_DIS)) /* exist, enabled? */ continue; @@ -1507,34 +1700,18 @@ for (i = 0; (dptr = sim_devices[i]); i++) { /* loop thru devices * } iotab[dno + j] = dibp->io; /* set I/O routine */ } /* end for */ - if (dibp->chan) { /* DMA/DMC? */ - chan = dibp->chan - 1; - if ((chan < DMC_V_DMC1) && (chan >= dma_nch)) { - printf ("%s configured for DMA channel %d\n", - sim_dname (dptr), chan + 1); - if (sim_log) - fprintf (sim_log, "%s configured for DMA channel %d\n", - sim_dname (dptr), chan + 1); - return TRUE; - } - if ((chan >= DMC_V_DMC1) && !(cpu_unit.flags & UNIT_DMC)) { - printf ("%s configured for DMC, option disabled\n", - sim_dname (dptr)); - if (sim_log) - fprintf (sim_log, "%s configured for DMC, option disabled\n", - sim_dname (dptr)); - return TRUE; - } - if (chan_map[chan]) { /* channel conflict? */ - printf ("%s DMA/DMC channel conflict, devno = %02o\n", - sim_dname (dptr), dno); - if (sim_log) - fprintf (sim_log, "%s DMA/DMC channel conflict, devno = %02o\n", - sim_dname (dptr), dno); - return TRUE; - } - chan_map[chan] = dno; /* channel back map */ - } + // [RLA] set up the channel map + if (dibp->chan != 0) + if (set_chanmap(dptr, dibp, dno, dibp->chan-1)) return TRUE; + if (dibp->chan2 != 0) + if (set_chanmap(dptr, dibp, dno, dibp->chan2-1)) return TRUE; + // [RLA] If the device uses extended interrupts, check that they're enabled. + if ((dibp->inum != INT_V_NONE) && (dibp->inum >= INT_V_EXTD) && (ext_ints == 0)) { + printf ("%s uses extended interrupts but that option is disabled\n", sim_dname (dptr)); + if (sim_log) + fprintf (sim_log, "%s uses extended interrupts but that option is disabled\n", sim_dname (dptr)); + return TRUE; + } } /* end for */ for (i = 0; i < DEV_MAX; i++) { /* fill in blanks */ if (iotab[i] == NULL) @@ -1598,7 +1775,8 @@ else lnt = hst_lnt; di = hst_p - lnt; /* work forward */ if (di < 0) di = di + hst_lnt; -fprintf (st, "PC C A B X ea IR\n\n"); +fprintf (st, " PC C A B X ea IR\n"); +fprintf (st, "----- - ------ ------ ------ ----- -----------\n\n"); for (k = 0; k < lnt; k++) { /* print specified */ h = &hst[(++di) % hst_lnt]; /* entry pointer */ if (h->pc & HIST_PC) { /* instruction? */ @@ -1615,6 +1793,8 @@ for (k = 0; k < lnt; k++) { /* print specified */ op = I_GETOP (h->ir) & 017; /* base op */ if (has_opnd[op]) fprintf (st, " [%06o]", h->opnd); + if (h->iack) // [RLA] + fprintf(st, " INTERRUPT"); // [RLA] fputc ('\n', st); /* end line */ } /* end else instruction */ } /* end for */ diff --git a/H316/h316_defs.h b/H316/h316_defs.h index 24203a13..a21a7d8a 100644 --- a/H316/h316_defs.h +++ b/H316/h316_defs.h @@ -23,6 +23,7 @@ used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from Robert M Supnik. + 31-May-13 RLA DIB - add second channel, interrupt and user parameter 19-Nov-11 RMS Removed XR macro, added XR_LOC macro (from Adrian Wise) 22-May-10 RMS Added check for 64b definitions 15-Feb-05 RMS Added start button interrupt @@ -110,11 +111,15 @@ /* Device information block */ struct h316_dib { - uint32 dev; /* device number */ - uint32 chan; /* dma/dmc channel */ - uint32 num; /* number of slots */ - int32 (*io) (int32 inst, int32 fnc, int32 dat, int32 dev); }; - + uint32 dev; /* device number */ + uint32 num; /* number of slots */ + uint32 chan; /* dma/dmc channel */ + uint32 chan2; /* alternate DMA/DMD channel */ + uint32 inum; /* interrupt number */ + uint32 inum2; /* alternate interrupt */ + int32 (*io) (int32 inst, int32 fnc, int32 dat, int32 dev); + uint32 u3; /* "user" parameter #1 */ +}; typedef struct h316_dib DIB; /* DMA/DMC channel numbers */ @@ -142,33 +147,35 @@ typedef struct h316_dib DIB; /* I/O device codes */ -#define PTR 001 /* paper tape reader */ -#define PTP 002 /* paper tape punch */ -#define LPT 003 /* line printer */ -#define TTY 004 /* console */ -#define CDR 005 /* card reader */ -#define MT 010 /* mag tape data */ -#define CLK_KEYS 020 /* clock/keys (CPU) */ -#define FHD 022 /* fixed head disk */ -#define DMA 024 /* DMA control */ -#define DP 025 /* moving head disk */ +#define PTR 001 /* paper tape reader */ +#define PTP 002 /* paper tape punch */ +#define LPT 003 /* line printer */ +#define TTY 004 /* console */ +#define CDR 005 /* card reader */ +#define MT 010 /* mag tape data */ +#define CLK_KEYS 020 /* clock/keys (CPU) */ +#define FHD 022 /* fixed head disk */ +#define DMA 024 /* DMA control */ +#define DP 025 /* moving head disk */ #define DEV_MAX 64 /* Interrupt flags, definitions correspond to SMK bits */ -#define INT_V_CLK 0 /* clock */ -#define INT_V_MPE 1 /* parity error */ -#define INT_V_LPT 2 /* line printer */ -#define INT_V_CDR 4 /* card reader */ -#define INT_V_TTY 5 /* teletype */ -#define INT_V_PTP 6 /* paper tape punch */ -#define INT_V_PTR 7 /* paper tape reader */ -#define INT_V_FHD 8 /* fixed head disk */ -#define INT_V_DP 12 /* moving head disk */ -#define INT_V_MT 15 /* mag tape */ -#define INT_V_START 16 /* start button */ -#define INT_V_NODEF 17 /* int not deferred */ -#define INT_V_ON 18 /* int on */ +#define INT_V_CLK 0 /* clock */ +#define INT_V_MPE 1 /* parity error */ +#define INT_V_LPT 2 /* line printer */ +#define INT_V_CDR 4 /* card reader */ +#define INT_V_TTY 5 /* teletype */ +#define INT_V_PTP 6 /* paper tape punch */ +#define INT_V_PTR 7 /* paper tape reader */ +#define INT_V_FHD 8 /* fixed head disk */ +#define INT_V_DP 12 /* moving head disk */ +#define INT_V_MT 15 /* mag tape */ +#define INT_V_START 16 /* start button */ +#define INT_V_NODEF 17 /* int not deferred */ +#define INT_V_ON 18 /* int on */ +#define INT_V_EXTD 16 /* first extended interrupt */ +#define INT_V_NONE -1 /* no interrupt used */ /* I/O macros */ @@ -195,14 +202,22 @@ typedef struct h316_dib DIB; #define INT_NMI (INT_START) #define INT_PEND (INT_ON | INT_NODEF) -#define SET_INT(x) dev_int = dev_int | (x) +// [RLA] These macros now all affect the standard interrupts. We'll leave +// [RLA] them alone for backward compatibility with the existing code. +#define SET_INT(x) dev_int = dev_int | (x) #define CLR_INT(x) dev_int = dev_int & ~(x) -#define TST_INT(x) ((dev_int & (x)) != 0) +#define TST_INT(x) ((dev_int & (x)) != 0) #define CLR_ENB(x) dev_enb = dev_enb & ~(x) -#define TST_INTREQ(x) ((dev_int & dev_enb & (x)) != 0) +#define TST_INTREQ(x) ((dev_int & dev_enb & (x)) != 0) + +// [RLA] These macros are functionally identical, but affect extended interrupts. +#define SET_EXT_INT(x) dev_ext_int = dev_ext_int | (x) +#define CLR_EXT_INT(x) dev_ext_int = dev_ext_int & ~(x) +#define TST_EXT_INT(x) ((dev_ext_int & (x)) != 0) +#define CLR_EXT_ENB(x) dev_ext_enb = dev_ext_enb & ~(x) +#define TST_EXT_INTREQ(x) ((dev_ext_int & dev_ext_enb & (x)) != 0) /* Prototypes */ - t_stat io_set_iobus (UNIT *uptr, int32 val, char *cptr, void *desc); t_stat io_set_dma (UNIT *uptr, int32 val, char *cptr, void *desc); t_stat io_set_dmc (UNIT *uptr, int32 val, char *cptr, void *desc); diff --git a/H316/h316_dp.c b/H316/h316_dp.c index 056a9b1f..be35846e 100644 --- a/H316/h316_dp.c +++ b/H316/h316_dp.c @@ -27,6 +27,7 @@ 4651 disk subsystem 4720 disk subsystem + 3-Jul-13 RLA compatibility changes for extended interrupts 19-Mar-12 RMS Fixed declaration of chan_req (Mark Pizzolato) 04-Sep-05 RMS Fixed missing return (Peter Schorn) 15-Jul-05 RMS Fixed bug in attach routine @@ -269,7 +270,7 @@ t_stat dp_showformat (FILE *st, UNIT *uptr, int32 val, void *desc); dp_mod DP modifier list */ -DIB dp_dib = { DP, DMC1, 1, &dpio }; +DIB dp_dib = { DP, 1, DMC1, IOBUS, INT_V_DP, INT_V_NONE, &dpio, 0 }; UNIT dp_unit[] = { { UDATA (&dp_svc, UNIT_FIX+UNIT_ATTABLE+UNIT_DISABLE+ diff --git a/H316/h316_fhd.c b/H316/h316_fhd.c index be8724b0..57937d83 100644 --- a/H316/h316_fhd.c +++ b/H316/h316_fhd.c @@ -26,6 +26,7 @@ fhd 516-4400 fixed head disk 03-Sep-13 RMS Added explicit void * cast + 3-Jul-13 RLA compatibility changes for extended interrupts 19-Mar-12 RMS Fixed declaration of chan_req (Mark Pizzolato) 15-May-06 RMS Fixed bug in autosize attach (David Gesswein) 04-Jan-04 RMS Changed sim_fsize calling sequence @@ -114,7 +115,7 @@ uint32 fhd_csword (uint32 cs, uint32 ch); fhd_reg register list */ -DIB fhd_dib = { FHD, IOBUS, 1, &fhdio }; +DIB fhd_dib = { FHD, 1, IOBUS, IOBUS, INT_V_FHD, INT_V_NONE, &fhdio, 0 }; UNIT fhd_unit = { UDATA (&fhd_svc, UNIT_FIX+UNIT_ATTABLE+UNIT_BUFABLE+UNIT_MUSTBUF, diff --git a/H316/h316_hi.c b/H316/h316_hi.c new file mode 100644 index 00000000..a0ff5fb2 --- /dev/null +++ b/H316/h316_hi.c @@ -0,0 +1,325 @@ +/* h316_hi.c- BBN ARPAnet IMP Host Interface + Based on the SIMH simulator package written by Robert M Supnik. + + Copyright (c) 2013 Robert Armstrong, bob@jfcl.com. + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + ROBERT ARMSTRONG BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + Except as contained in this notice, the name of Robert Armstrong shall not be + used in advertising or otherwise to promote the sale, use or other dealings + in this Software without prior written authorization from Robert Armstrong. + + hi host interface + + 21-May-13 RLA New file + + The host interface is one of the BBN engineered devices unique to the + ARPAnet IMP. This is the famous "1822" card which connected each IMP to a + host computer - a DECSYSTEM-10, an SDS Sigma 7, an IBM 360/90, a CDC6600, + or any one of many other ARPAnet hosts. The idea is to simulate this + interface by using a TCP/UDP connection to another simh instance emulating + the host machine and running the ARPAnet host software. + + Presently the details of the host interface card are not well known, and + this implementation is simply a place holder. It's enough to allow the IMP + software to run, but not actually to communicate with a host. The IMP simply + believes that all the attached hosts are down at the moment. + + Host interface state is maintained in a set of position and state variables: + + Host state is maintained in the following variables - + + TBA TBA + + TODO + + IMPLEMENT THIS MODULE!!! +*/ +#ifdef VM_IMPTIP +#include "h316_defs.h" // H316 emulator definitions +#include "h316_imp.h" // ARPAnet IMP/TIP definitions + +// Externals from other parts of simh ... +extern uint16 dev_ext_int, dev_ext_enb; // current IRQ and IEN bit vectors +extern int32 PC; // current PC (for debug messages) +extern int32 stop_inst; // needed by IOBADFNC() +extern int32 sim_switches; // option bitmap for ATTACH/DETACH +extern uint16 M[]; // main memory (for DMC access) + +// Forward declarations ... +int32 hi_io (uint16 line, int32 inst, int32 fnc, int32 dat, int32 dev); +int32 hi1_io (int32 inst, int32 fnc, int32 dat, int32 dev); +int32 hi2_io (int32 inst, int32 fnc, int32 dat, int32 dev); +int32 hi3_io (int32 inst, int32 fnc, int32 dat, int32 dev); +int32 hi4_io (int32 inst, int32 fnc, int32 dat, int32 dev); +t_stat hi_service (UNIT *uptr); +t_stat hi_reset (DEVICE *dptr); +t_stat hi_attach (UNIT *uptr, char *cptr); +t_stat hi_detach (UNIT *uptr); + + + +//////////////////////////////////////////////////////////////////////////////// +////////////////////// D A T A S T R U C T U R E S ////////////////////// +//////////////////////////////////////////////////////////////////////////////// + +// Host interface data blocks ... +// The HIDB is our own internal data structure for each host. It keeps data +// about the TCP/IP connection, buffers, etc. +#define HI_HIDB(N) {0, 0, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE} +HIDB hi1_db = HI_HIDB(1), hi2_db = HI_HIDB(2); +HIDB hi3_db = HI_HIDB(3), hi4_db = HI_HIDB(4); + +// Host Device Information Blocks ... +// The DIB is the structure simh uses to keep track of the device IO address +// and IO service routine. It can also hold the DMC channel, but we don't use +// that because it's unit specific. +#define HI_DIB(N) {HI##N, 1, HI##N##_RX_DMC, HI##N##_TX_DMC, \ + INT_V_HI##N##RX, INT_V_HI##N##TX, &hi##N##_io, N} +DIB hi1_dib = HI_DIB(1), hi2_dib = HI_DIB(2); +DIB hi3_dib = HI_DIB(3), hi4_dib = HI_DIB(4); + +// Host Device Unit data ... +// simh uses the unit data block primarily to schedule device service events. +// The UNIT data also contains four "user" fields which devices can reuse for +// any purpose and we take advantage of that to store the line number. +#define hline u3 // our host line number is stored in user data 3 +#define HI_UNIT(N) {UDATA (&hi_service, UNIT_ATTABLE, 0), HI_POLL_DELAY, N, 0, 0, 0} +UNIT hi1_unit = HI_UNIT(1), hi2_unit = HI_UNIT(2); +UNIT hi3_unit = HI_UNIT(3), hi4_unit = HI_UNIT(4); + +// Host Device Registers ... +// These are the simh device "registers" - they c can be viewed with the +// "EXAMINE HIxn STATE" command and modified by "DEPOSIT HIxn ..." +#define HI_REG(N) { \ + { DRDATA (POLL, hi##N##_unit.wait, 24), REG_NZ + PV_LEFT }, \ + { FLDATA (RXIRQ, dev_ext_int, INT_V_HI##N##RX-INT_V_EXTD) }, \ + { FLDATA (RXIEN, dev_ext_enb, INT_V_HI##N##RX-INT_V_EXTD) }, \ + { DRDATA (RXTOT, hi##N##_db.rxtotal,32), REG_RO + PV_LEFT }, \ + { FLDATA (TXIRQ, dev_ext_int, INT_V_HI##N##TX-INT_V_EXTD) }, \ + { FLDATA (TXIEN, dev_ext_enb, INT_V_HI##N##TX-INT_V_EXTD) }, \ + { DRDATA (TXTOT, hi##N##_db.txtotal,32), REG_RO + PV_LEFT }, \ + { FLDATA (LLOOP, hi##N##_db.lloop, 0), PV_RZRO }, \ + { FLDATA (ERROR, hi##N##_db.error, 0), PV_RZRO }, \ + { FLDATA (READY, hi##N##_db.ready, 0), PV_RZRO }, \ + { FLDATA (FULL, hi##N##_db.full , 0), PV_RZRO }, \ + { NULL } \ +} +REG hi1_reg[] = HI_REG(1), hi2_reg[] = HI_REG(2); +REG hi3_reg[] = HI_REG(3), hi4_reg[] = HI_REG(4); + +// Host Device Modifiers ... +// These are the modifiers simh uses for the "SET MIxn" and "SHOW MIx" commands. +#define HI_MOD(N) { \ + { 0 } \ +} +MTAB hi1_mod[] = HI_MOD(1), hi2_mod[] = HI_MOD(2); +MTAB hi3_mod[] = HI_MOD(3), hi4_mod[] = HI_MOD(4); + +// Debug modifiers for "SET HIn DEBUG = xxx" ... +DEBTAB hi_debug[] = { + {"WARN", IMP_DBG_WARN}, // print warnings that would otherwise be suppressed + {"UDP", IMP_DBG_UDP}, // print all UDP messages sent and received + {"IO", IMP_DBG_IOT}, // print all program I/O instructions + {0} +}; + +// Host Device data ... +// This is the primary simh structure that defines each device - it gives the +// plain text name, the addresses of the unit, register and modifier tables, and +// the addresses of all action routines (e.g. attach, reset, etc). +#define HI_DEV(HI,N,F) { \ + #HI, &hi##N##_unit, hi##N##_reg, hi##N##_mod, \ + 1, 10, 31, 1, 8, 8, \ + NULL, NULL, &hi_reset, NULL, &hi_attach, &hi_detach, \ + &hi##N##_dib, DEV_DISABLE|DEV_DEBUG|(F), 0, hi_debug, NULL, NULL \ +} +DEVICE hi1_dev = HI_DEV(HI1,1,DEV_DIS), hi2_dev = HI_DEV(HI2,2,DEV_DIS); +DEVICE hi3_dev = HI_DEV(HI3,3,DEV_DIS), hi4_dev = HI_DEV(HI4,4,DEV_DIS); + +// Host Tables ... +// These tables make it easy to locate the data associated with any host. +DEVICE *const hi_devices[HI_NUM] = {&hi1_dev, &hi2_dev, &hi3_dev, &hi4_dev }; +UNIT *const hi_units [HI_NUM] = {&hi1_unit, &hi2_unit, &hi3_unit, &hi4_unit}; +DIB *const hi_dibs [HI_NUM] = {&hi1_dib, &hi2_dib, &hi3_dib, &hi4_dib }; +HIDB *const hi_hidbs [HI_NUM] = {&hi1_db, &hi2_db, &hi3_db, &hi4_db }; + + + +//////////////////////////////////////////////////////////////////////////////// +////////////////// L O W L E V E L F U N C T I O N S /////////////////// +//////////////////////////////////////////////////////////////////////////////// + +// Find a pointer to the DEVICE, UNIT, DIB or HIDB given the host number ... +#define PDEVICE(h) hi_devices[(h)-1] +#define PUNIT(h) hi_units[(h)-1] +#define PDIB(h) hi_dibs[(h)-1] +#define PHIDB(h) hi_hidbs[(h)-1] + +// These macros set and clear the interrupt request and enable flags ... +#define SET_RX_IRQ(h) SET_EXT_INT((1u << (PDIB(h)->rxint - INT_V_EXTD))) +#define SET_TX_IRQ(h) SET_EXT_INT((1u << (PDIB(h)->txint - INT_V_EXTD))) +#define CLR_RX_IRQ(h) CLR_EXT_INT((1u << (PDIB(h)->rxint - INT_V_EXTD))) +#define CLR_TX_IRQ(h) CLR_EXT_INT((1u << (PDIB(h)->txint - INT_V_EXTD))) +#define CLR_RX_IEN(h) CLR_EXT_ENB((1u << (PDIB(h)->rxint - INT_V_EXTD))) +#define CLR_TX_IEN(h) CLR_EXT_ENB((1u << (PDIB(h)->txint - INT_V_EXTD))) + +// TRUE if the host has the specified debugging output enabled ... +#define ISHDBG(l,f) ((PDEVICE(l)->dctrl & (f)) != 0) + +// Reset receiver (clear flags AND initialize all data) ... +void hi_reset_rx (uint16 host) +{ + PHIDB(host)->lloop = PHIDB(host)->error = PHIDB(host)->enabled = FALSE; + PHIDB(host)->ready = PHIDB(host)->eom = FALSE; + PHIDB(host)->rxtotal = 0; + CLR_RX_IRQ(host); CLR_RX_IEN(host); +} + +// Reset transmitter (clear flags AND initialize all data) ... +void hi_reset_tx (uint16 host) +{ + PHIDB(host)->lloop = PHIDB(host)->enabled = PHIDB(host)->full = FALSE; + PHIDB(host)->txtotal = 0; + CLR_TX_IRQ(host); CLR_TX_IEN(host); +} + + + +//////////////////////////////////////////////////////////////////////////////// +//////////// I / O I N S T R U C T I O N E M U L A T I O N ///////////// +//////////////////////////////////////////////////////////////////////////////// + +// Host specific I/O routines ... +int32 hi1_io(int32 inst, int32 fnc, int32 dat, int32 dev) {return hi_io(1, inst, fnc, dat, dev);} +int32 hi2_io(int32 inst, int32 fnc, int32 dat, int32 dev) {return hi_io(2, inst, fnc, dat, dev);} +int32 hi3_io(int32 inst, int32 fnc, int32 dat, int32 dev) {return hi_io(3, inst, fnc, dat, dev);} +int32 hi4_io(int32 inst, int32 fnc, int32 dat, int32 dev) {return hi_io(4, inst, fnc, dat, dev);} + +// Common I/O simulation routine ... +int32 hi_io (uint16 host, int32 inst, int32 fnc, int32 dat, int32 dev) +{ + // This routine is invoked by the CPU module whenever the code executes any + // I/O instruction (OCP, SKS, INA or OTA) with one of our modem's device + // address. + + // OCP (output control pulse) initiates various modem operations ... + if (inst == ioOCP) { + switch (fnc) { + case 000: + // HnROUT - start regular host output ... + sim_debug(IMP_DBG_IOT, PDEVICE(host), "start regular output (PC=%06o)\n", PC-1); + return dat; + case 001: + // HnIN - start host input ... + sim_debug(IMP_DBG_IOT, PDEVICE(host), "start input (PC=%06o)\n", PC-1); + return dat; + case 002: + // HnFOUT - start final host output ... + sim_debug(IMP_DBG_IOT, PDEVICE(host), "start final output (PC=%06o)\n", PC-1); + return dat; + case 003: + // HnXP - cross patch ... + sim_debug(IMP_DBG_IOT, PDEVICE(host), "enable cross patch (PC=%06o)\n", PC-1); + return dat; + case 004: + // HnUNXP - un-cross patch ... + sim_debug(IMP_DBG_IOT, PDEVICE(host), "disable cross patch (PC=%06o)\n", PC-1); + return dat; + case 005: + // HnENAB - enable ... + sim_debug(IMP_DBG_IOT, PDEVICE(host), "enable host (PC=%06o)\n", PC-1); + return dat; + } + + // SKS (skip) tests various modem conditions ... + } else if (inst == ioSKS) { + switch (fnc) { + case 000: + // HnERR - skip on host error ... + sim_debug(IMP_DBG_IOT, PDEVICE(host), "skip on error (PC=%06o %s)\n", PC-1, "NOSKIP"); + return dat; + case 001: + // HnRDY - skip on host ready ... + sim_debug(IMP_DBG_IOT, PDEVICE(host), "skip on ready (PC=%06o %s)\n", PC-1, "NOSKIP"); + return dat; + case 002: + // HnEOM - skip on end of message ... + sim_debug(IMP_DBG_IOT, PDEVICE(host), "skip on end of message (PC=%06o %s)\n", PC-1, "NOSKIP"); + return dat; + case 005: + // HnFULL - skip on host buffer full ... + sim_debug(IMP_DBG_IOT, PDEVICE(host), "skip on buffer full (PC=%06o %s)\n", PC-1, "NOSKIP"); + return dat; + } + } + + // Anything else is an error... + sim_debug(IMP_DBG_WARN, PDEVICE(host), "UNIMPLEMENTED I/O (PC=%06o, instruction=%o, function=%02o)\n", PC-1, inst, fnc); + return IOBADFNC(dat); +} + + + + +//////////////////////////////////////////////////////////////////////////////// +/////////////////// H O S T E V E N T S E R V I C E //////////////////// +//////////////////////////////////////////////////////////////////////////////// + +// Unit service ... +t_stat hi_service (UNIT *uptr) +{ + return SCPE_OK; +} + + + +//////////////////////////////////////////////////////////////////////////////// +/////////////// D E V I C E A C T I O N C O M M A N D S //////////////// +//////////////////////////////////////////////////////////////////////////////// + +// Reset routine ... +t_stat hi_reset (DEVICE *dptr) +{ + // simh calls this routine for the RESET command ... + UNIT *uptr = dptr->units; + uint16 host= uptr->hline; + hi_reset_rx(host); hi_reset_tx(host); + return SCPE_OK; +} + +// Attach (connect) ... +t_stat hi_attach (UNIT *uptr, char *cptr) +{ + // simh calls this routine for (what else?) the ATTACH command. + uint16 host = uptr->hline; + fprintf(stderr,"HI%d - host interface not yet implemented\n", host); + return SCPE_IERR; +} + +// Detach (connect) ... +t_stat hi_detach (UNIT *uptr) +{ + // simh calls this routine for (you guessed it!) the DETACH command. + uint16 host = uptr->hline; + fprintf(stderr,"HI%d - host interface not yet implemented\n", host); + return SCPE_IERR; +} + + +#endif // #ifdef VM_IMPTIP from the very top diff --git a/H316/h316_imp.c b/H316/h316_imp.c new file mode 100644 index 00000000..a99c43a1 --- /dev/null +++ b/H316/h316_imp.c @@ -0,0 +1,192 @@ +/* h316_imp.c- BBN ARPAnet IMP/TIP Specific Hardware + Based on the SIMH simulator package written by Robert M Supnik. + + Copyright (c) 2013 Robert Armstrong, bob@jfcl.com. + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + ROBERT ARMSTRONG BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + Except as contained in this notice, the name of Robert Armstrong shall not be + used in advertising or otherwise to promote the sale, use or other dealings + in this Software without prior written authorization from Robert Armstrong. + + tks task switch device + mlc multiline controller (aka TIP) + + 21-May-13 RLA New file + + OVERVIEW + + This module implements the IMP pseudo device - this hack takes care of two + custom devices in the IMP hardware - device 041, which implements task + switching and the RDIMPN instruction, and device 42, which implements the + AMIMLC ("am I a multiline controller") instruction. This module also contains + a few miscellaneous routines which are used by the IMP support in general. + + IMP state is maintained in a set of state variables: + + MLC always zero (TIP flag) + IEN task interrupt enabled + IRQ task interrupt pending + + TODO +*/ +#ifdef VM_IMPTIP +#include "h316_defs.h" // H316 emulator definitions +#include "h316_imp.h" // ARPAnet IMP/TIP definitions + +// Locals ... +uint16 imp_station = IMP_STATION; // IMP number (or address) +uint16 imp_ismlc = 0; // 1 for MLC (not yet implemented!) + +// Externals from other parts of simh ... +extern uint16 dev_ext_int, dev_ext_enb; // current IRQ and IEN bit vectors +extern int32 PC; // current PC (for debug messages) +extern int32 stop_inst; // needed by IOBADFNC() + +// Forward declarations ... +int32 imp_io (int32 inst, int32 fnc, int32 dat, int32 dev); +t_stat imp_service (UNIT *uptr); +t_stat imp_reset (DEVICE *dptr); +t_stat imp_show_station (FILE *st, UNIT *uptr, int32 val, void *dp); +t_stat io_show_int (FILE *st, UNIT *uptr, int32 val, void *dp); +t_stat imp_set_station (UNIT *uptr, int32 val, char *cptr, void *dp); +t_stat io_set_int (UNIT *uptr, int32 val, char *cptr, void *dp); + + + +//////////////////////////////////////////////////////////////////////////////// +////////////////////// D A T A S T R U C T U R E S ////////////////////// +//////////////////////////////////////////////////////////////////////////////// + +// IMP device information block ... +DIB imp_dib = { IMP, 2, IOBUS, IOBUS, INT_V_TASK, INT_V_NONE, &imp_io, 0 }; + +// IMP unit data (we have only one!) ... +UNIT imp_unit = { UDATA (&imp_service, 0, 0) }; + +// IMP device registers (for "EXAMINE IMP STATE") ... +REG imp_reg[] = { + { FLDATA (MLC, imp_ismlc, 0), REG_RO }, + { FLDATA (IEN, dev_ext_enb, INT_V_TASK-INT_V_EXTD) }, + { FLDATA (IRQ, dev_ext_int, INT_V_TASK-INT_V_EXTD) }, + { NULL } +}; + +// IMP device modifiers (for "SET/SHOW IMP xxx") ... +MTAB imp_mod[] = { + { MTAB_XTD|MTAB_VDV, 0, "NUM", "NUM", &imp_set_station, &imp_show_station, NULL }, + { 0 } +}; + +// IMP debugging flags (for "SET IMP DEBUG=xxx") ... +DEBTAB imp_debug[] = { + {"WARN", IMP_DBG_WARN}, + {"IO", IMP_DBG_IOT}, + {0} +}; + +// And finally tie it all together ... +DEVICE imp_dev = { + "IMP", &imp_unit, imp_reg, imp_mod, + 1, 0, 0, 0, 0, 0, + NULL, NULL, &imp_reset, NULL, NULL, NULL, + &imp_dib, DEV_DIS|DEV_DISABLE|DEV_DEBUG, 0, imp_debug, NULL, NULL +}; + + + +//////////////////////////////////////////////////////////////////////////////// +////////// I M P I / O A N D S E R V I C E R O U T I N E S ////////// +//////////////////////////////////////////////////////////////////////////////// + +// Set and clear the TASK IRQ and IEN ... +#define SET_TASK_IRQ() SET_EXT_INT((1u << (imp_dib.inum - INT_V_EXTD))) +#define CLR_TASK_IRQ() CLR_EXT_INT((1u << (imp_dib.inum - INT_V_EXTD))) +#define CLR_TASK_IEN() CLR_EXT_ENB((1u << (imp_dib.inum - INT_V_EXTD))) + +// IMP I/O routine ... +int32 imp_io (int32 inst, int32 fnc, int32 dat, int32 dev) +{ + if (dev == IMP) { + if ((inst == ioOCP) && (fnc == 000)) { + // TASK - just set the task interrupt request bit ... + sim_debug(IMP_DBG_IOT, &imp_dev, "request task interrupt (PC=%06o)\n", PC-1); + SET_TASK_IRQ(); return dat; + } else if ((inst == ioINA) && ((fnc == 010) || (fnc == 000))) { + // RDIMPN - return the IMP address and always skip ... + sim_debug(IMP_DBG_IOT, &imp_dev, "read address (PC=%06o)\n", PC-1); + return IOSKIP(imp_station); + } + } else if (dev == IMP+1) { + if ((inst == ioSKS) && (fnc == 000)) { + // AMIMLC - skip if this machine is an MLC ... + sim_debug(IMP_DBG_IOT, &imp_dev, "skip on MLC (PC=%06o %s)\n", PC-1, imp_ismlc ? "SKIP" : "NOSKIP"); + if (imp_ismlc != 0) return IOSKIP(dat); else return dat; + } + } + + // Anything else is an error... + sim_debug(IMP_DBG_WARN, &imp_dev, "UNIMPLEMENTED I/O (PC=%06o, instruction=%o, function=%02o)\n", PC-1, inst, fnc); + return IOBADFNC(dat); +} + +// Unit service ... +t_stat imp_service (UNIT *uptr) +{ + return SCPE_OK; +} + + + +//////////////////////////////////////////////////////////////////////////////// +/////////////// D E V I C E A C T I O N C O M M A N D S //////////////// +//////////////////////////////////////////////////////////////////////////////// + +// Reset routine ... +t_stat imp_reset (DEVICE *dptr) +{ + // The simh RESET command clears both the interrupt request and enable... + CLR_TASK_IRQ(); CLR_TASK_IEN(); + return SCPE_OK; +} + + + +//////////////////////////////////////////////////////////////////////////////// +///////// D E V I C E S E T A N D S H O W C O M M A N D S ////////// +//////////////////////////////////////////////////////////////////////////////// + +// Show the station number ... +t_stat imp_show_station (FILE *st, UNIT *uptr, int32 val, void *desc) +{ + fprintf(st,"station=%d", imp_station); + return SCPE_OK; +} + +// Set the station number ... +t_stat imp_set_station (UNIT *uptr, int32 val, char *cptr, void *dp) +{ + uint32 newnum; t_stat sts; + if (cptr == NULL) return SCPE_ARG; + newnum = get_uint (cptr, 10, 9999, &sts); + if (newnum == 0) return SCPE_ARG; + imp_station = newnum; + return SCPE_OK; +} + +#endif // #ifdef VM_IMPTIP from the very top diff --git a/H316/h316_imp.h b/H316/h316_imp.h new file mode 100644 index 00000000..07177ef3 --- /dev/null +++ b/H316/h316_imp.h @@ -0,0 +1,199 @@ +/* h316_imp.h- BBN ARPAnet IMP/TIP Definitions + + Copyright (c) 2013, Robert Armstrong, bob@jfcl.com + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + ROBERT ARMSTRONG BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + Except as contained in this notice, the name of Robert Armstrong shall not be + used in advertising or otherwise to promote the sale, use or other dealings + in this Software without prior written authorization from Robert Armstrong. + + 21-May-13 RLA New file. +*/ +#ifdef VM_IMPTIP +#ifndef H316_IMP_H_ +#define H316_IMP_H_ 0 +#include "sim_defs.h" + +// Common modem and host parameters ... +#define MI_NUM 5 // number of modem interfaces +#define HI_NUM 4 // number of host interfaces +#define MI_MAX_MSG 256 // longest possible modem message (words!) +#define HI_MAX_MSG 256 // longest possible host message (words!) +#define MI_RXPOLL 100 // RX polling delay for UDP messages +#define MI_TXBPS 56000UL // default TX speed (bits per second) +#define HI_POLL_DELAY 1000 // polling delay for messages + +// Modem interface, line #1 ... +#define MI1 071 // IO address for modem interface #1 +#define MI1_RX_DMC (DMC1-1+ 1) // DMC channel for modem 1 receive +#define MI1_TX_DMC (DMC1-1+ 6) // DMC channel for modem 1 transmit +#define INT_V_MI1RX (INT_V_EXTD+15) // modem 1 receive interrupt +#define INT_V_MI1TX (INT_V_EXTD+10) // modem 1 transmit interrupt + +// Modem interface, line #2 ... +#define MI2 072 // IO address for modem interface #2 +#define MI2_RX_DMC (DMC1-1+ 2) // DMC channel for modem 2 receive +#define MI2_TX_DMC (DMC1-1+ 7) // DMC channel for modem 2 transmit +#define INT_V_MI2RX (INT_V_EXTD+14) // modem 2 receive interrupt +#define INT_V_MI2TX (INT_V_EXTD+ 9) // modem 2 transmit interrupt + +// Modem interface, line #3 ... +#define MI3 073 // IO address for modem interface #3 +#define MI3_RX_DMC (DMC1-1+ 3) // DMC channel for modem 3 receive +#define MI3_TX_DMC (DMC1-1+ 8) // DMC channel for modem 3 transmit +#define INT_V_MI3RX (INT_V_EXTD+13) // modem 3 receive interrupt +#define INT_V_MI3TX (INT_V_EXTD+ 8) // modem 3 transmit interrupt + +// Modem interface, line #4 ... +#define MI4 074 // IO address for modem interface #4 +#define MI4_RX_DMC (DMC1-1+ 4) // DMC channel for modem 4 receive +#define MI4_TX_DMC (DMC1-1+ 9) // DMC channel for modem 4 transmit +#define INT_V_MI4RX (INT_V_EXTD+12) // modem 4 receive interrupt +#define INT_V_MI4TX (INT_V_EXTD+ 7) // modem 4 transmit interrupt + +// Modem interface, line #5 ... +#define MI5 075 // IO address for modem interface #5 +#define MI5_RX_DMC (DMC1-1+ 5) // DMC channel for modem 5 receive +#define MI5_TX_DMC (DMC1-1+10) // DMC channel for modem 5 transmit +#define INT_V_MI5RX (INT_V_EXTD+11) // modem 5 receive interrupt +#define INT_V_MI5TX (INT_V_EXTD+ 6) // modem 5 transmit interrupt + +// Host interface, line #1 ... +#define HI1 070 // device address for host interface #1 +#define HI1_RX_DMC (DMC1+13-1) // DMC channel for host 1 receive +#define HI1_TX_DMC (DMC1+11-1) // DMC channel for host 1 transmit +#define INT_V_HI1RX (INT_V_EXTD+ 3) // host 1 receive interrupt +#define INT_V_HI1TX (INT_V_EXTD+ 5) // host 1 transmit interrupt + +// Host interface, line #2 ... +#define HI2 060 // device address for host interface #2 +#define HI2_RX_DMC (DMC1-1+14) // DMC channel for host 2 receive +#define HI2_TX_DMC (DMC1-1+12) // DMC channel for host 2 transmit +#define INT_V_HI2RX (INT_V_EXTD+ 2) // host 2 receive interrupt +#define INT_V_HI2TX (INT_V_EXTD+ 4) // host 2 transmit interrupt + +// Host interface, line #3 ... +#define HI3 051 // device address for host interface #3 +#define HI3_RX_DMC (DMC1-1+16) // DMC channel for host 3 receive +#define HI3_TX_DMC (DMC1-1+15) // DMC channel for host 3 transmit +#define INT_V_HI3RX (INT_V_EXTD+ 6) // host 3 receive interrupt +#define INT_V_HI3TX (INT_V_EXTD+11) // host 3 transmit interrupt + +// Host interface, line #4 ... +#define HI4 050 // device address for host interface #4 +#define HI4_RX_DMC (DMC1-1+10) // DMC channel for host 4 receive +#define HI4_TX_DMC (DMC1-1+ 5) // DMC channel for host 4 transmit +#define INT_V_HI4RX (INT_V_EXTD+ 7) // host 4 receive interrupt +#define INT_V_HI4TX (INT_V_EXTD+12) // host 4 transmit interrupt + +// IMP defaults ... +#define IMP 041 // IMP device IO address (41 & 42 actually!) +#define INT_V_TASK (INT_V_EXTD+ 0) // task switch interrupt number +#define IMP_STATION 1 // default station number + +// RTC defaults ... +#define RTC 040 // real time clock IO address +#define INT_V_RTC (INT_V_EXTD+ 1) // RTC interrupt number +#define RTC_INTERVAL 20UL // default RTC interval (20us == 50kHz) +#define RTC_QUANTUM 32UL // default RTC quantum (32 ticks) + +// WDT defaults ... +#define WDT 026 // watchdog timer IO address +#define WDT_VECTOR 000062 // WDT timeout vector +#define WDT_DELAY 0 // default WDT timeout (in milliseconds) + +// Debugging flags ... +// In general, these bits are used as arguments for sim_debug(). Bits that +// begin with "IMP_DBG_xyz" are shared by more than one device (e.g. IMP_DBG_UDP) +// and must have unique bit assignments. Bits prefixed with a device name (e.g. +// "MI_DBG_xyz") apply to that device only. +#define IMP_DBG_WARN 0x0001 // all: print warnings +#define IMP_DBG_IOT 0x0002 // all: trace all program I/O instructions +#define IMP_DBG_UDP 0x0004 // all: trace UDP packets +#define MI_DBG_MSG 0x8000 // modem: decode and print all messages +#define WDT_DBG_LIGHTS 0x8000 // wdt: show status light changes + +// Synonyms for DIB and UNIT fields ... +#define rxdmc chan // dib->rxdmc +#define txdmc chan2 // dib->txdmc +#define rxint inum // dib->rxint +#define txint inum2 // dib->txint + +// Modem interface data block .... +// One of these is allocated to every modem interface to keep track of the +// current state, COM port, UDP connection , etc... +struct _MIDB { + // Receiver data ... + t_bool rxpending; // TRUE if a read is pending on this line + t_bool rxerror; // TRUE if any modem error detected + uint32 rxtotal; // total number of H316 words received + // Transmitter data ... + uint32 txtotal; // total number of H316 words transmitted + uint32 txdelay; // RTC ticks until TX done interrupt + // Other data ... + t_bool lloop; // line loop back enabled + t_bool iloop; // interface loop back enabled + int32 link; // h316_udp link number + uint32 bps; // simulated line speed or COM port baud rate +}; +typedef struct _MIDB MIDB; + +// Host interface data block ... +// One of these is allocated to every host interface ... +struct _HIDB { + // Receiver (HOST -> IMP) data ... + uint32 rxtotal; // total host messages received + // Transmitter (IMP -> HOST) data ... + uint32 txtotal; // total host messages sent + // Other data ... + t_bool lloop; // local loop back enabled + t_bool enabled; // TRUE if the host is enabled + t_bool error; // TRUE for any host error + t_bool ready; // TRUE if the host is ready + t_bool full; // TRUE if the host buffer is full + t_bool eom; // TRUE when end of message is reached +}; +typedef struct _HIDB HIDB; + +// I can't believe Bob managed to live without these, but I can't! +#ifndef LOBYTE // these are in winsock.h too! +#define LOBYTE(x) ((uint8) ( (x) & 0xFF)) +#define HIBYTE(x) ((uint8) (((x) >> 8) & 0xFF)) +#define MKWORD(h,l) ((uint16) ( (((h)&0xFF) << 8) | ((l)&0xFF) )) +#define LOWORD(x) ((uint16) ( (x) & 0xFFFF)) +#define HIWORD(x) ((uint16) (((x) >> 16) & 0xFFFF)) +#define MKLONG(h,l) ((uint32) ( (((h)&0xFFFF) << 16) | ((l)&0xFFFF) )) +#endif + +// Prototypes for the RTC module ... +// I really hate sharing things like this, but it's the only way to get the +// modem transmitter timing exactly right! +extern uint32 rtc_interval; +extern t_stat mi_tx_service (uint32 quantum); + +// Prototypes for UDP modem/host interface emulation routines ... +#define NOLINK (-1) +t_stat udp_create (DEVICE *pdtr, char *premote, int32 *plink); +t_stat udp_release (DEVICE *dptr, int32 link); +t_stat udp_send (DEVICE *pdtr, int32 link, uint16 *pdata, uint16 count); +t_stat udp_send_self (DEVICE *dptr, int32 link, uint16 *pdata, uint16 count); +int32 udp_receive (DEVICE *dptr, int32 link, uint16 *pdata, uint16 maxbufg); + +#endif // #ifndef _H316_IMP_H_ +#endif // #ifdef VM_IMPTIP diff --git a/H316/h316_lp.c b/H316/h316_lp.c index 46151911..815f5d15 100644 --- a/H316/h316_lp.c +++ b/H316/h316_lp.c @@ -25,6 +25,7 @@ lpt line printer + 3-Jul-13 RLA compatibility changes for extended interrupts 09-Jun-07 RMS Fixed lost last print line (Theo Engel) 19-Jan-06 RMS Added UNIT_TEXT flag 03-Apr-06 RMS Fixed bug in blanks backscanning (Theo Engel) @@ -105,7 +106,7 @@ t_stat lpt_reset (DEVICE *dptr); lpt_reg LPT register list */ -DIB lpt_dib = { LPT, IOBUS, 1, &lptio }; +DIB lpt_dib = { LPT, 1, IOBUS, IOBUS, INT_V_LPT, INT_V_NONE, &lptio, 0 }; UNIT lpt_unit = { UDATA (&lpt_svc, UNIT_SEQ+UNIT_ATTABLE+UNIT_TEXT, 0) }; diff --git a/H316/h316_mi.c b/H316/h316_mi.c new file mode 100644 index 00000000..be6f256a --- /dev/null +++ b/H316/h316_mi.c @@ -0,0 +1,723 @@ +/* h316_mi.c- BBN ARPAnet IMP/TIP Modem Interface + Based on the SIMH simulator package written by Robert M Supnik. + + Copyright (c) 2013 Robert Armstrong, bob@jfcl.com. + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + ROBERT ARMSTRONG BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + Except as contained in this notice, the name of Robert Armstrong shall not be + used in advertising or otherwise to promote the sale, use or other dealings + in this Software without prior written authorization from Robert Armstrong. + + + REVISION HISTORY + + mi modem interface + + 21-May-13 RLA New file + + + OVERVIEW + + The modem interface is one of the BBN engineered devices unique to the + ARPAnet IMP/TIP. The original hardware was a full duplex synchronous serial + line interface operating at 56k bps. The hardware was fairly smart and was + able to handle line synchronization (SYN), packet start (STX) and end (ETX), + and data escape (DLE) autonomously. Data is transferred directly to and + from H316 main memory using the DMC mechanism. The modem interface also + calculated a 24 bit "parity" (and by that I assume they meant some form of + CRC) value. This was automatically appended to the end of the transmitted + data and automatically verified by the receiving modem. + + CONNECTIONS + + This module provides two basic options for emulating the modem. Option 1 + takes the data packets from H316 memory, wraps them in a UDP packet, and + sends them to another simh instance. The remote simh then unwraps the data + packet and loads it directly into H316 memory. In this instance, + synchronization, start of text/end of text, and data escapes are pointless + and are not used. The words are simply moved verbatim from one H316 to + another. + + The other option is to logically connect the emulated modem to a physical + serial port on this PC. In that case we attempt to emulate the actions + of the original modem as closely as possible, including the synchronization, + start of text/end of text and data escape characters. Synchronization is + pointless on an asynchronous interface, of course, but we do it anyway in + the interest of compatability. We also attempt to calculate a 24 bit CRC + using (as best I can determine) the same algorithm as the original modems. + + MULTIPLE INSTANCES + + Each IMP can support up to five modem lines, and fitting this into simh + presents an architectural problem. The temptation is to treat all modems as + one device with multiple units (each unit corresponding to one line), but + that's a problem. The simh view of units is like a disk or tape - there's + a single controller that has one IO address, one interrupt and one DMA/DMC + channel. That controller then has multiple units attached to it that are + selected by bits in a controller register and all units share the same + IO, interrupt and DMA/DMC assignments. + + The modems aren't like that at all - each of the five cards is completely + independent with its own distinct IO address, interrupt and DMC assignments. + It's analagous to five instances of the same controller installed in the + machine, but simh unfortunately has limited support for multiple instances + of the same controller. The few instances of prior art in simh that I can + find (e.g. xq, xqb on the PDP11/VAX) have just been done ad hoc by + duplicating all the device data. Rather than rewrite simh, that's the + approach I took here, even though with five instances it gets awkward. + + POLLING AND SERVICE + + The IMP software turns out to be extraordinarily sensitive to modem timing. + It actually goes to the trouble of measuring the effective line speed by + using the RTC to time how long it takes to send a message, and one thing that + especially annoys the IMP are variations in the effective line speed. They + had a lot of trouble with AT&T Long Lines back in the Old Days, and the IMP + has quite a bit of code to monitor line quality. Even fairly minor variations + in speed will cause it to mark the line as "down" and sent a trouble report + back to BBN. + + To combat this, we actually let the RTC code time the transmitter interrupts. + When the IMP software does a "start modem output" OCP the entire packet will + be extracted from H316 memory and transmitted via UDP at that instant, BUT + the transmitter done interrupt will be deferred. The delay is computed from + the length of the packet and the simulated line speed, and then the RTC is + used to count down the interval. When the time expires, the interrupt request + is generated. It's unfortunate to have to couple the RTC and the modem in + this way, but since the IMP code is using the RTC to measure the line speed + AND since the RTC determines when the transmit done occurs, it guarantees + that the IMP always sees exactly the same delay. + + The modem receiver is completely independent of the transmitter and is polled + by the usual simh event queue mechanism and mi_service() routine. When the + IMP code executes a "start modem input" OCP a read pending flag is set in the + modem status but nothing else occurs. Each poll checks the UDP socket for + incoming data and, if a packet was received AND a read operation is pending, + then the read completes that moment and the interrupt request is asserted. + The UDP socket is polled regardless of whether a read is pending and if data + arrives without a read then it's discarded. That's exactly what a real modem + would do. + + ERROR HANDLING + + Transmitter error handling is easy - fatal errors print a message and abort + the simulation, but any other errors are simply ignored. The IMP modems had + no kind of error dection on the transmitter side and no way to report them + anyway so we do the same. Any data packet associated with the error is just + discarded. In particular with both UDP and COM ports there's no way to tell + whether anybody is on the other end listening, so even packets that are + successfully transmitted may disappear into the ether. This isn't a problem + for the IMP - the real world was like that too and the IMP is able to handle + retransmitting packets without our help. + + Receiver errors set the error flag in the modem status; this flag can be + tested and cleared by the "skip on modem error" SKS instruction. The only + receiver error that can be detected is buffer overrun (i.e. the sender's + message was longer than the receiver's buffer). With a serial connection + checksum errors are also possible, but those never occur with UDP. + + Transmitting or receiving on a modem that's not attached isn't an error - it + simply does nothing. It's analogous to a modem with the phone line unplugged. + Hard I/O errors for UDP or COM ports print an error message and then detach + the modem connection. It's up to the user to interrupt the simulation and + reattach if he wants to try again. + + STATE + + Modem state is maintained in the following variables - + + RXPOLL 24 receiver polling interval + RXPEND 1 an input operation is pending + RXERR 1 receiver error flag + RXIEN 1 receiver interrupt enable + RXIRQ 1 receiver interrupt request + RXTOT 32 count of total messages received + TXDLY 32 RTC ticks until TX done interrupt + TXIEN 1 transmitter interrupt enable + TXIRQ 1 transmitter interrupt request + TXTOT 32 count of total messages transmitted + LINKNO 32 link number for h316_udp module + BPS 32 simulated bps for UDP delay calculations + actual baud rate for physical COM ports + LLOOP 1 local loopback enabled + RLOOP 1 remote loopback enabled + + Most of these values will be found in the Modem Information Data Block (aka + "MIDB") but a few are stored elsewhere (e.g. IRQ/IEN are in the CPU's dev_int + and dev_enb vectors). + + TODO + + Implement checksum handling + Implement local/remote loopback +*/ +#ifdef VM_IMPTIP +#include "h316_defs.h" // H316 emulator definitions +#include "h316_imp.h" // ARPAnet IMP/TIP definitions + +// Externals from other parts of simh ... +extern uint16 dev_ext_int, dev_ext_enb; // current IRQ and IEN bit vectors +extern int32 PC; // current PC (for debug messages) +extern int32 stop_inst; // needed by IOBADFNC() +extern int32 sim_switches; // option bitmap for ATTACH/DETACH +extern uint16 M[]; // main memory (for DMC access) + +// Forward declarations ... +int32 mi_io (uint16 line, int32 inst, int32 fnc, int32 dat, int32 dev); +int32 mi1_io (int32 inst, int32 fnc, int32 dat, int32 dev); +int32 mi2_io (int32 inst, int32 fnc, int32 dat, int32 dev); +int32 mi3_io (int32 inst, int32 fnc, int32 dat, int32 dev); +int32 mi4_io (int32 inst, int32 fnc, int32 dat, int32 dev); +int32 mi5_io (int32 inst, int32 fnc, int32 dat, int32 dev); +t_stat mi_rx_service (UNIT *uptr); +void mi_rx_local (uint16 line, uint16 txnext, uint16 txcount); +t_stat mi_reset (DEVICE *dptr); +t_stat mi_attach (UNIT *uptr, char *cptr); +t_stat mi_detach (UNIT *uptr); + + + +//////////////////////////////////////////////////////////////////////////////// +////////////////////// D A T A S T R U C T U R E S ////////////////////// +//////////////////////////////////////////////////////////////////////////////// + +// simh requires several data structures for every device - a DIB, one or more +// UNITS, a modifier table, a register list, and a device definition. The sit- +// uation here is even more complicated because we have five identical modems to +// define, and so lots of clever macros are used to handle the repetition and +// save some typing. + +// Modem Information Data Blocks ... +// The MIDB is our own internal data structure for each modem. It keeps data +// about the current state, COM port, UDP connection, etc. +#define MI_MIDB(N) {FALSE, FALSE, 0, 0, 0, FALSE, FALSE, NOLINK, MI_TXBPS} +MIDB mi1_db = MI_MIDB(1), mi2_db = MI_MIDB(2); +MIDB mi3_db = MI_MIDB(3), mi4_db = MI_MIDB(4); +MIDB mi5_db = MI_MIDB(5); + +// Modem Device Information Blocks ... +// The DIB is the structure simh uses to keep track of the device IO address +// and IO service routine. It can also hold the DMC channel, but we don't use +// that because it's unit specific. +#define MI_DIB(N) {MI##N, 1, MI##N##_RX_DMC, MI##N##_TX_DMC, \ + INT_V_MI##N##RX, INT_V_MI##N##TX, &mi##N##_io, N} +DIB mi1_dib = MI_DIB(1), mi2_dib = MI_DIB(2); +DIB mi3_dib = MI_DIB(3), mi4_dib = MI_DIB(4); +DIB mi5_dib = MI_DIB(5); + +// Modem Device Unit data ... +// simh uses the unit data block primarily to schedule device service events. +#define mline u3 // our modem line number is stored in user data 3 +#define MI_UNIT(N) {UDATA (&mi_rx_service, UNIT_ATTABLE, 0), MI_RXPOLL, N, 0, 0, 0} +UNIT mi1_unit = MI_UNIT(1), mi2_unit = MI_UNIT(2); +UNIT mi3_unit = MI_UNIT(3), mi4_unit = MI_UNIT(4); +UNIT mi5_unit = MI_UNIT(5); + +// Modem Device Registers ... +// These are the simh device "registers" - they c can be viewed with the +// "EXAMINE MIn STATE" command and modified by "DEPOSIT MIn ..." +#define MI_REG(N) { \ + { DRDATA (RXPOLL, mi##N##_unit.wait, 24), REG_NZ + PV_LEFT }, \ + { FLDATA (RXPEND, mi##N##_db.rxpending, 0), REG_RO + PV_RZRO }, \ + { FLDATA (RXERR, mi##N##_db.rxerror, 0), PV_RZRO }, \ + { FLDATA (RXIEN, dev_ext_enb, INT_V_MI##N##RX-INT_V_EXTD) }, \ + { FLDATA (RXIRQ, dev_ext_int, INT_V_MI##N##RX-INT_V_EXTD) }, \ + { DRDATA (RXTOT, mi##N##_db.rxtotal, 32), REG_RO + PV_LEFT }, \ + { DRDATA (TXDLY, mi##N##_db.txdelay, 32), PV_LEFT }, \ + { FLDATA (TXIEN, dev_ext_enb, INT_V_MI##N##TX-INT_V_EXTD) }, \ + { FLDATA (TXIRQ, dev_ext_int, INT_V_MI##N##TX-INT_V_EXTD) }, \ + { DRDATA (TXTOT, mi##N##_db.txtotal, 32), REG_RO + PV_LEFT }, \ + { DRDATA (LINK, mi##N##_db.link, 32), REG_RO + PV_LEFT }, \ + { DRDATA (BPS, mi##N##_db.bps, 32), REG_NZ + PV_LEFT }, \ + { FLDATA (LLOOP, mi##N##_db.lloop, 0), PV_RZRO }, \ + { FLDATA (ILOOP, mi##N##_db.iloop, 0), PV_RZRO }, \ + { NULL } \ +} +REG mi1_reg[] = MI_REG(1), mi2_reg[] = MI_REG(2); +REG mi3_reg[] = MI_REG(3), mi4_reg[] = MI_REG(4); +REG mi5_reg[] = MI_REG(5); + +// Modem Device Modifiers ... +// These are the modifiers simh uses for the "SET MIn" and "SHOW MIn" commands. +#define MI_MOD(N) { \ + { 0 } \ +} +MTAB mi1_mod[] = MI_MOD(1), mi2_mod[] = MI_MOD(2); +MTAB mi3_mod[] = MI_MOD(3), mi4_mod[] = MI_MOD(4); +MTAB mi5_mod[] = MI_MOD(5); + +// Debug modifiers for "SET MIn DEBUG = xxx" ... +DEBTAB mi_debug[] = { + {"WARN", IMP_DBG_WARN}, // print warnings that would otherwise be suppressed + {"UDP", IMP_DBG_UDP}, // print all UDP messages sent and received + {"IO", IMP_DBG_IOT}, // print all program I/O instructions + {"MSG", MI_DBG_MSG}, // decode and print all messages + {0} +}; + +// Modem Device data ... +// This is the primary simh structure that defines each device - it gives the +// plain text name, the addresses of the unit, register and modifier tables, and +// the addresses of all action routines (e.g. attach, reset, etc). +#define MI_DEV(MI,N,F) { \ + #MI, &mi##N##_unit, mi##N##_reg, mi##N##_mod, \ + 1, 10, 31, 1, 8, 8, \ + NULL, NULL, &mi_reset, NULL, &mi_attach, &mi_detach, \ + &mi##N##_dib, DEV_DISABLE|DEV_DEBUG|(F), 0, mi_debug, NULL, NULL \ +} +DEVICE mi1_dev = MI_DEV(MI1,1,DEV_DIS), mi2_dev = MI_DEV(MI2,2,DEV_DIS); +DEVICE mi3_dev = MI_DEV(MI3,3,DEV_DIS), mi4_dev = MI_DEV(MI4,4,DEV_DIS); +DEVICE mi5_dev = MI_DEV(MI5,5,DEV_DIS); + +// Modem Tables ... +// These tables make it easy to locate the data associated with any line. +DEVICE *const mi_devices[MI_NUM] = {&mi1_dev, &mi2_dev, &mi3_dev, &mi4_dev, &mi5_dev }; +UNIT *const mi_units [MI_NUM] = {&mi1_unit, &mi2_unit, &mi3_unit, &mi4_unit, &mi5_unit}; +DIB *const mi_dibs [MI_NUM] = {&mi1_dib, &mi2_dib, &mi3_dib, &mi4_dib, &mi5_dib }; +MIDB *const mi_midbs [MI_NUM] = {&mi1_db, &mi2_db, &mi3_db, &mi4_db, &mi5_db }; + + + +//////////////////////////////////////////////////////////////////////////////// +////////////////// L O W L E V E L F U N C T I O N S /////////////////// +//////////////////////////////////////////////////////////////////////////////// + +// Find a pointer to the DEVICE, UNIT, DIB or MIDB given the line number ... +#define PDEVICE(l) mi_devices[(l)-1] +#define PUNIT(l) mi_units[(l)-1] +#define PDIB(l) mi_dibs[(l)-1] +#define PMIDB(l) mi_midbs[(l)-1] + +// These macros set and clear the interrupt request and enable flags ... +#define SET_RX_IRQ(l) SET_EXT_INT((1u << (PDIB(l)->rxint - INT_V_EXTD))) +#define SET_TX_IRQ(l) SET_EXT_INT((1u << (PDIB(l)->txint - INT_V_EXTD))) +#define CLR_RX_IRQ(l) CLR_EXT_INT((1u << (PDIB(l)->rxint - INT_V_EXTD))) +#define CLR_TX_IRQ(l) CLR_EXT_INT((1u << (PDIB(l)->txint - INT_V_EXTD))) +#define CLR_RX_IEN(l) CLR_EXT_ENB((1u << (PDIB(l)->rxint - INT_V_EXTD))) +#define CLR_TX_IEN(l) CLR_EXT_ENB((1u << (PDIB(l)->txint - INT_V_EXTD))) + +// TRUE if the line has the specified debugging output enabled ... +#define ISLDBG(l,f) ((PDEVICE(l)->dctrl & (f)) != 0) + +// Reset receiver (clear flags AND initialize all data) ... +void mi_reset_rx (uint16 line) +{ + PMIDB(line)->iloop = PMIDB(line)->lloop = FALSE; + PMIDB(line)->rxerror = PMIDB(line)->rxpending = FALSE; + PMIDB(line)->rxtotal = 0; + CLR_RX_IRQ(line); CLR_RX_IEN(line); +} + +// Reset transmitter (clear flags AND initialize all data) ... +void mi_reset_tx (uint16 line) +{ + PMIDB(line)->iloop = PMIDB(line)->lloop = FALSE; + PMIDB(line)->txtotal = PMIDB(line)->txdelay = 0; + CLR_TX_IRQ(line); CLR_TX_IEN(line); +} + +// Get the DMC control words (starting address, end and length) for the channel. +void mi_get_dmc (uint16 dmc, uint16 *pnext, uint16 *plast, uint16 *pcount) +{ + uint16 dmcad; + if ((dmc(DMC1+DMC_MAX-1))) { + *pnext = *plast = *pcount = 0; return; + } + dmcad = DMC_BASE + (dmc-DMC1)*2; + *pnext = M[dmcad] & X_AMASK; *plast = M[dmcad+1] & X_AMASK; + *pcount = (*plast - *pnext + 1) & DMASK; +} + +// Update the DMC words to show "count" words transferred. +void mi_update_dmc (uint32 dmc, uint32 count) +{ + uint16 dmcad, next; + if ((dmc(DMC1+DMC_MAX-1))) return; + dmcad = DMC_BASE + (dmc-DMC1)*2; + next = M[dmcad]; + M[dmcad] = (next & DMA_IN) | ((next+count) & X_AMASK); +} + +// Link error recovery ... +void mi_link_error (uint16 line) +{ + // Any physical I/O error, either for the UDP link or a COM port, prints a + // message and detaches the modem. It's up to the user to decide what to do + // after that... + fprintf(stderr,"MI%d - UNRECOVERABLE I/O ERROR!\n", line); + mi_reset_rx(line); mi_reset_tx(line); + sim_cancel(PUNIT(line)); mi_detach(PUNIT(line)); + PMIDB(line)->link = NOLINK; +} + + + +//////////////////////////////////////////////////////////////////////////////// +/////////////////// D E B U G G I N G R O U T I N E S //////////////////// +//////////////////////////////////////////////////////////////////////////////// + +// Log a modem input or output including DMC words ... +void mi_debug_mio (uint16 line, uint32 dmc, const char *ptext) +{ + uint16 next, last, count; + if (!ISLDBG(line, IMP_DBG_IOT)) return; + mi_get_dmc(dmc, &next, &last, &count); + sim_debug(IMP_DBG_IOT, PDEVICE(line), + "start %s (PC=%06o, next=%06o, last=%06o, count=%d)\n", + ptext, PC-1, next, last, count); +} + +// Log the contents of a message sent or received ... +void mi_debug_msg (uint16 line, uint16 next, uint16 count, const char *ptext) +{ + uint16 i; char buf[CBUFSIZE]; int len = 0; + if (!ISLDBG(line, MI_DBG_MSG)) return; + sim_debug(MI_DBG_MSG, PDEVICE(line), "message %s (length=%d)\n", ptext, count); + for (i = 1, len = 0; i <= count; ++i) { + len += sprintf(buf+len, "%06o ", M[next+i-1]); + if (((i & 7) == 0) || (i == count)) { + sim_debug(MI_DBG_MSG, PDEVICE(line), "- %s\n", buf); len = 0; + } + } +} + + + +//////////////////////////////////////////////////////////////////////////////// +///////////////// T R A N S M I T A N D R E C E I V E ////////////////// +//////////////////////////////////////////////////////////////////////////////// + +// Start the transmitter ... +void mi_start_tx (uint16 line) +{ + // This handles all the work of the "start modem output" OCP, including + // extracting the packet from H316 memory, EXCEPT for actually setting the + // transmit done interrupt. That's handled by the RTC polling routine after + // a delay that we calculate.. + uint16 next, last, count; uint32 nbits; t_stat ret; + + // Get the DMC words for this channel and update the next pointer as if the + // transfer actually occurred. + mi_get_dmc(PDIB(line)->txdmc, &next, &last, &count); + mi_update_dmc(PDIB(line)->txdmc, count); + mi_debug_msg (line, next, count, "sent"); + + // Transmit the data, handling both the interface loopback AND the line loop + // back flags in the process. Note that in particular the interface loop back + // does NOT require that the modem be attached! + if (PMIDB(line)->iloop) { + mi_rx_local(line, next, count); + } else if (PMIDB(line)->link != NOLINK) { + if (PMIDB(line)->lloop) + ret = udp_send_self(PDEVICE(line), PMIDB(line)->link, &M[next], count); + else + ret = udp_send(PDEVICE(line), PMIDB(line)->link, &M[next], count); + if (ret != SCPE_OK) mi_link_error(line); + } + + // Do some fancy math to figure out how long, in RTC ticks, it would actually + // take to transmit a packet of this length with a real modem and phone line. + // Note that the "+12" is an approximation for the modem overhead, including + // DLE, STX, ETX and checksum bytes, that would be added to the packet. + nbits = (((uint32) count)*2UL + 12UL) * 8UL; + PMIDB(line)->txdelay = (nbits * 1000000UL) / (PMIDB(line)->bps * rtc_interval); + //fprintf(stderr,"MI%d - transmit packet, length=%d, bits=%ld, interval=%ld, delay=%ld\n", line, count, nbits, rtc_interval, PMIDB(line)->txdelay); + + // That's it - we're done until it's time for the TX done interrupt ... + CLR_TX_IRQ(line); +} + +// Poll for transmitter done interrupts ... +void mi_poll_tx (uint16 line, uint32 quantum) +{ + // This routine is called, via the RTC service, to count down the interval + // until the transmitter finishes. When it hits zero, an interrupt occurs. + if (PMIDB(line)->txdelay == 0) return; + if (PMIDB(line)->txdelay <= quantum) { + SET_TX_IRQ(line); PMIDB(line)->txdelay = 0; PMIDB(line)->txtotal++; + sim_debug(IMP_DBG_IOT, PDEVICE(line), "transmit done (message #%d, intreq=%06o)\n", PMIDB(line)->txtotal, dev_ext_int); + } else + PMIDB(line)->txdelay -= quantum; +} + +// Start the receiver ... +void mi_start_rx (uint16 line) +{ + // "Starting" the receiver simply sets the RX pending flag. Nothing else + // needs to be done (nothing else _can_ be done!) until we actually receive + // a real packet. + + // We check for the case of another receive already pending, but I don't + // think the real hardware detected this or considered it an error condition. + if (PMIDB(line)->rxpending) { + sim_debug(IMP_DBG_WARN,PDEVICE(line),"start input while input already pending\n"); + } + PMIDB(line)->rxpending = TRUE; PMIDB(line)->rxerror = FALSE; + CLR_RX_IRQ(line); +} + +// Poll for receiver data ... +void mi_poll_rx (uint16 line) +{ + // This routine is called by mi_service to poll for any packets received. + // This is done regardless of whether a receive is pending on the line. If + // a packet is waiting AND a receive is pending then we'll store it and finish + // the receive operation. If a packet is waiting but no receive is pending + // then the packet is discarded... + uint16 next, last, maxbuf; uint16 *pdata; int16 count; + + // If the modem isn't attached, then the read never completes! + if (PMIDB(line)->link == NOLINK) return; + + // Get the DMC words for this channel, or zeros if no read is pending ... + if (PMIDB(line)->rxpending) { + mi_get_dmc(PDIB(line)->rxdmc, &next, &last, &maxbuf); + pdata = &M[next]; + } else { + next = last = maxbuf = 0; pdata = NULL; + } + // Try to read a packet. If we get nothing then just return. + count = udp_receive(PDEVICE(line), PMIDB(line)->link, pdata, maxbuf); + if (count == 0) return; + if (count < 0) {mi_link_error(line); return;} + + // Now would be a good time to worry about whether a receive is pending! + if (!PMIDB(line)->rxpending) { + sim_debug(IMP_DBG_WARN, PDEVICE(line), "data received with no input pending\n"); + return; + } + + // We really got a packet! Update the DMC pointers to reflect the actual + // size of the packet received. If the packet length would have exceeded the + // receiver buffer, then that sets the error flag too. + if (count > maxbuf) { + sim_debug(IMP_DBG_WARN, PDEVICE(line), "receiver overrun (length=%d maxbuf=%d)\n", count, maxbuf); + PMIDB(line)->rxerror = TRUE; count = maxbuf; + } + mi_update_dmc(PDIB(line)->rxdmc, count); + mi_debug_msg (line, next, count, "received"); + + // Assert the interrupt request and we're done! + SET_RX_IRQ(line); PMIDB(line)->rxpending = FALSE; PMIDB(line)->rxtotal++; + sim_debug(IMP_DBG_IOT, PDEVICE(line), "receive done (message #%d, intreq=%06o)\n", PMIDB(line)->rxtotal, dev_ext_int); +} + +// Receive cross patched data ... +void mi_rx_local (uint16 line, uint16 txnext, uint16 txcount) +{ + // This routine is invoked by the mi_start_tx() function when this modem has + // the "interface cross patch" bit set. This flag causes the modem to talk to + // to itself, and data sent by the transmitter goes directly to the receiver. + // The modem is bypassed completely and in fact need not even be connected. + // This is essentially a special case of the mi_poll_rx() routine and it's a + // shame they don't share more code, but that's the way it is. + // Get the DMC words for this channel, or zeros if no read is pending ... + uint16 rxnext, rxlast, maxbuf; + + // If no read is pending, then just throw away the data ... + if (!PMIDB(line)->rxpending) return; + + // Get the DMC words for the receiver and copy data from one buffer to the other. + mi_get_dmc(PDIB(line)->rxdmc, &rxnext, &rxlast, &maxbuf); + if (txcount > maxbuf) {txcount = maxbuf; PMIDB(line)->rxerror = TRUE;} + memmove(&M[rxnext], &M[txnext], txcount * sizeof(uint16)); + + // Update the receiver DMC pointers, assert IRQ and we're done! + mi_update_dmc(PDIB(line)->rxdmc, txcount); + mi_debug_msg (line, rxnext, txcount, "received"); + SET_RX_IRQ(line); PMIDB(line)->rxpending = FALSE; PMIDB(line)->rxtotal++; + sim_debug(IMP_DBG_IOT, PDEVICE(line), "receive done (message #%d, intreq=%06o)\n", PMIDB(line)->rxtotal, dev_ext_int); +} + + + +//////////////////////////////////////////////////////////////////////////////// +//////////// I / O I N S T R U C T I O N E M U L A T I O N ///////////// +//////////////////////////////////////////////////////////////////////////////// + +// Line specific I/O routines ... +// Unfortunately simh doesn't pass the I/O emulation routine any data about the +// device except for its device address. In particular, it doesn't pass a pointer +// to the device or unit data blocks, so we're on our own to find those. Rather +// than a search on the device address, we just provide a separate I/O routine +// for each modem line. All they do is call the common I/O routine with an extra +// parameter - problem solved! +int32 mi1_io(int32 inst, int32 fnc, int32 dat, int32 dev) {return mi_io(1, inst, fnc, dat, dev);} +int32 mi2_io(int32 inst, int32 fnc, int32 dat, int32 dev) {return mi_io(2, inst, fnc, dat, dev);} +int32 mi3_io(int32 inst, int32 fnc, int32 dat, int32 dev) {return mi_io(3, inst, fnc, dat, dev);} +int32 mi4_io(int32 inst, int32 fnc, int32 dat, int32 dev) {return mi_io(4, inst, fnc, dat, dev);} +int32 mi5_io(int32 inst, int32 fnc, int32 dat, int32 dev) {return mi_io(5, inst, fnc, dat, dev);} + +// Common I/O simulation routine ... +int32 mi_io (uint16 line, int32 inst, int32 fnc, int32 dat, int32 dev) +{ + // This routine is invoked by the CPU module whenever the code executes any + // I/O instruction (OCP, SKS, INA or OTA) with one of our modem's device + // address. + + // OCP (output control pulse) initiates various modem operations ... + if (inst == ioOCP) { + switch (fnc) { + case 000: + // MnOUT - start modem output ... + mi_debug_mio(line, PDIB(line)->txdmc, "output"); + mi_start_tx(line); return dat; + case 001: + // MnUNXP - un-cross patch modem ... + sim_debug(IMP_DBG_IOT,PDEVICE(line),"un-cross patch modem (PC=%06o)\n", PC-1); + PMIDB(line)->iloop = PMIDB(line)->lloop = FALSE; return dat; + case 002: + // MnLXP - enable line cross patch ... + sim_debug(IMP_DBG_IOT,PDEVICE(line),"enable line cross patch (PC=%06o)\n", PC-1); + PMIDB(line)->lloop = TRUE; PMIDB(line)->iloop = FALSE; return dat; + case 003: + // MnIXP - enable interface cross patch ... + sim_debug(IMP_DBG_IOT,PDEVICE(line),"enable interface cross patch (PC=%06o)\n", PC-1); + PMIDB(line)->iloop = TRUE; PMIDB(line)->lloop = FALSE; return dat; + case 004: + // MnIN - start modem input ... + mi_debug_mio(line, PDIB(line)->rxdmc, "input"); + mi_start_rx(line); return dat; + } + + // SKS (skip) tests various modem conditions ... + } else if (inst == ioSKS) { + switch (fnc) { + case 004: + // MnERR - skip on modem error ... + sim_debug(IMP_DBG_IOT,PDEVICE(line),"skip on error (PC=%06o, %s)\n", + PC-1, PMIDB(line)->rxerror ? "SKIP" : "NOSKIP"); + return PMIDB(line)->rxerror ? IOSKIP(dat) : dat; + // NOTE - the following skip, MnRXDONE, isn't actually part of the + // original IMP design. As far as I can tell the IMP had no way to + // explicitly poll this flags; the only way to tell when a modem finished + // was to catch the associated interrupt. I've added one for testing + // purposes, using an unimplemented SKS instruction. + case 002: + // MnRXDONE - skip on receive done ... + return PMIDB(line)->rxpending ? dat : IOSKIP(dat); + } + } + + // Anything else is an error... + sim_debug(IMP_DBG_WARN,PDEVICE(line),"UNIMPLEMENTED I/O (PC=%06o, instruction=%o, function=%02o)\n", PC-1, inst, fnc); + return IOBADFNC(dat); +} + +// Receiver service ... +t_stat mi_rx_service (UNIT *uptr) +{ + // This is the standard simh "service" routine that's called when an event + // queue entry expires. It just polls the receiver and reschedules itself. + // That's it! + uint16 line = uptr->mline; + mi_poll_rx(line); + sim_activate(uptr, uptr->wait); + return SCPE_OK; +} + +// Transmitter service ... +t_stat mi_tx_service (uint32 quantum) +{ + // This is the special transmitter service routine that's called by the RTC + // service every time the RTC is updated. This routine polls ALL the modem + // transmitters (or at least any which are active) and figures out whether it + // is time for an interrupt. + uint32 i; + for (i = 1; i <= MI_NUM; ++i) mi_poll_tx(i, quantum); + return SCPE_OK; +} + + + +//////////////////////////////////////////////////////////////////////////////// +/////////////// D E V I C E A C T I O N C O M M A N D S //////////////// +//////////////////////////////////////////////////////////////////////////////// + +// Reset device ... +t_stat mi_reset (DEVICE *dptr) +{ + // simh calls this routine for the RESET command ... + UNIT *uptr = dptr->units; + uint16 line = uptr->mline; + + // Reset the devices AND clear the interrupt enable bits ... + mi_reset_rx(line); mi_reset_tx(line); + + // If the unit is attached, then make sure we restart polling because some + // simh commands (e.g. boot) dump the pending event queue! + sim_cancel(uptr); + if ((uptr->flags & UNIT_ATT) != 0) sim_activate(uptr, uptr->wait); + return SCPE_OK; +} + +// Attach device ... +t_stat mi_attach (UNIT *uptr, char *cptr) +{ + // simh calls this routine for (what else?) the ATTACH command. There are + // three distinct formats for ATTACH - + // + // ATTACH -p MIn COMnn - attach MIn to a physical COM port + // ATTACH MIn llll:w.x.y.z:rrrr - connect via UDP to a remote simh host + // + t_stat ret; char *pfn; uint16 line = uptr->mline; + t_bool fport = sim_switches & SWMASK('P'); + + // If we're already attached, then detach ... + if ((uptr->flags & UNIT_ATT) != 0) detach_unit(uptr); + + // The physical (COM port) attach isn't implemented yet ... + if (fport) { + fprintf(stderr,"MI%d - physical COM support is not yet implemented\n", line); + return SCPE_ARG; + } + + // Make a copy of the "file name" argument. udp_create() actually modifies + // the string buffer we give it, so we make a copy now so we'll have something + // to display in the "SHOW MIn ..." command. + pfn = (char *) calloc (CBUFSIZE, sizeof (char)); + if (pfn == NULL) return SCPE_MEM; + strncpy (pfn, cptr, CBUFSIZE); + + // Create the UDP connection. + ret = udp_create(PDEVICE(line), cptr, &(PMIDB(line)->link)); + if (ret != SCPE_OK) {free(pfn); return ret;}; + + // Reset the flags and start polling ... + uptr->flags |= UNIT_ATT; uptr->filename = pfn; + return mi_reset(find_dev_from_unit(uptr)); +} + +// Detach device ... +t_stat mi_detach (UNIT *uptr) +{ + // simh calls this routine for (you guessed it!) the DETACH command. This + // disconnects the modem from any UDP connection or COM port and effectively + // makes the modem "off line". A disconnected modem acts like a real modem + // with its phone line unplugged. + t_stat ret; uint16 line = uptr->mline; + if ((uptr->flags & UNIT_ATT) == 0) return SCPE_OK; + ret = udp_release(PDEVICE(line), PMIDB(line)->link); + if (ret != SCPE_OK) return ret; + PMIDB(line)->link = NOLINK; uptr->flags &= ~UNIT_ATT; + free (uptr->filename); uptr->filename = NULL; + return mi_reset(PDEVICE(line)); +} + +#endif // #ifdef VM_IMPTIP from the very top diff --git a/H316/h316_mt.c b/H316/h316_mt.c index 22ceb6b4..ef7c2610 100644 --- a/H316/h316_mt.c +++ b/H316/h316_mt.c @@ -25,6 +25,7 @@ mt 516-4100 seven track magnetic tape + 3-Jul-13 RLA compatibility changes for extended interrupts 19-Mar-12 RMS Fixed declaration of chan_req (Mark Pizzolato) 09-Jun-07 RMS Fixed bug in write without stop (Theo Engel) 16-Feb-06 RMS Added tape capacity checking @@ -119,7 +120,7 @@ void mt_wrwd (UNIT *uptr, uint32 dat); mt_mod MT modifier list */ -DIB mt_dib = { MT, IOBUS, MT_NUMDR, &mtio }; +DIB mt_dib = { MT, MT_NUMDR, IOBUS, IOBUS, INT_V_MT, INT_V_NONE, &mtio, 0 }; UNIT mt_unit[] = { { UDATA (&mt_svc, UNIT_ATTABLE + UNIT_ROABLE + UNIT_DISABLE, 0) }, diff --git a/H316/h316_rtc.c b/H316/h316_rtc.c new file mode 100644 index 00000000..91916ba9 --- /dev/null +++ b/H316/h316_rtc.c @@ -0,0 +1,384 @@ +/* h316_rtc.c- BBN ARPAnet IMP/TIP Real Time Clock and Watch Dog Timer + Based on the SIMH simulator package written by Robert M Supnik. + + Copyright (c) 2013 Robert Armstrong, bob@jfcl.com. + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + ROBERT ARMSTRONG BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + Except as contained in this notice, the name of Robert Armstrong shall not be + used in advertising or otherwise to promote the sale, use or other dealings + in this Software without prior written authorization from Robert Armstrong. + + rtc real time clock + wdt watch dog timer + + 21-May-13 RLA New file + + OVERVIEW + + The IMP and TIP used a custom real time clock that was apparently created + by BBN just for those devices. The IMP/TIP RTC is NOT the same as the + official Honeywell real time clock option, H316-12. When emulating an IMP + or TIP, this RTC device must be enabled and the standard simh H316 CLK + device must be disabled. + + The IMP and TIP also had a watch dog timer which, if ever allowed to time + out, would cause a non-maskable interrupt via location 62(8) - this is the + same trap location used by the memory lockout option, which the IMP/TIP + lacked. Not much is known about the WDT, and the current implementation is + simply a place holder that doesn't do much. + + RTC state is maintained in a set of state variables: + + ENA RTC is enabled + COUNT current count + IEN RTC interrupt enabled + IRQ RTC interrupt pending + TPS effective ticks per second + WAIT simulator time until the next tick + + WDT state is maintained in a set of state variables: + + COUNT current countdown + TMO WDT timed out + LIGHTS last "set status lights" + WAIT simulator time until the next tick + + TODO + + Implement the WDT!! +*/ +#ifdef VM_IMPTIP +#include "h316_defs.h" // H316 emulator definitions +#include "h316_imp.h" // ARPAnet IMP/TIP definitions + +// Locals ... +uint32 rtc_interval = RTC_INTERVAL; // RTC tick interval (in microseconds) +uint32 rtc_quantum = RTC_QUANTUM; // RTC update interval (in ticks) +uint32 rtc_tps = 1000000UL / (RTC_INTERVAL * RTC_QUANTUM); +uint16 rtc_enabled = 1; // RTC enabled +uint32 rtc_count = 0; // current RTC count +uint32 wdt_delay = WDT_DELAY; // WDT timeout (in milliseconds, 0=none) +uint32 wdt_count = 0; // current WDT countdown +uint16 wdt_lights = 0; // last "set status lights" output + +// Externals from other parts of simh ... +extern uint16 dev_ext_int, dev_ext_enb; // current IRQ and IEN bit vectors +extern int32 PC; // current PC (for debug messages) +extern int32 stop_inst; // needed by IOBADFNC() + +// Forward declarations ... +int32 rtc_io (int32 inst, int32 fnc, int32 dat, int32 dev); +t_stat rtc_service (UNIT *uptr); +t_stat rtc_reset (DEVICE *dptr); +int32 wdt_io (int32 inst, int32 fnc, int32 dat, int32 dev); +t_stat wdt_service (UNIT *uptr); +t_stat wdt_reset (DEVICE *dptr); +t_stat rtc_set_interval (UNIT *uptr, int32 val, char *cptr, void *desc); +t_stat rtc_show_interval (FILE *st, UNIT *uptr, int32 val, void *desc); +t_stat rtc_set_quantum(UNIT *uptr, int32 val, char *cptr, void *desc); +t_stat rtc_show_quantum (FILE *st, UNIT *uptr, int32 val, void *desc); +t_stat wdt_set_delay (UNIT *uptr, int32 val, char *cptr, void *desc); +t_stat wdt_show_delay (FILE *st, UNIT *uptr, int32 val, void *desc); + + + +//////////////////////////////////////////////////////////////////////////////// +////////////////// R T C D A T A S T R U C T U R E S ////////////////// +//////////////////////////////////////////////////////////////////////////////// + +// RTC device information block ... +DIB rtc_dib = { RTC, 1, IOBUS, IOBUS, INT_V_RTC, INT_V_NONE, &rtc_io, 0 }; + +// RTC unit data block (we have only one unit!) ... +UNIT rtc_unit = { UDATA (&rtc_service, 0, 0), (RTC_INTERVAL*RTC_QUANTUM) }; + +// RTC device registers (for "EXAMINE RTC STATE") ... +REG rtc_reg[] = { + { FLDATA (ENA, rtc_enabled, 0) }, + { DRDATA (COUNT, rtc_count, 16), PV_LEFT }, + { FLDATA (IEN, dev_ext_enb, INT_V_RTC-INT_V_EXTD) }, + { FLDATA (IRQ, dev_ext_int, INT_V_RTC-INT_V_EXTD) }, + { DRDATA (TPS, rtc_tps, 32), PV_LEFT }, + { DRDATA (WAIT, rtc_unit.wait, 24), REG_NZ + PV_LEFT }, + { NULL } +}; + +// RTC device modifiers (for "SET/SHOW RTC xxx") ... +MTAB rtc_mod[] = { + { MTAB_XTD|MTAB_VDV, 0, "INTERVAL", "INTERVAL", &rtc_set_interval, &rtc_show_interval, NULL }, + { MTAB_XTD|MTAB_VDV, 0, "QUANTUM", "QUANTUM", &rtc_set_quantum, &rtc_show_quantum, NULL }, + { 0 } +}; + +// RTC debugging flags (for "SET RTC DEBUG=xxx") ... +DEBTAB rtc_debug[] = { + {"WARN", IMP_DBG_WARN}, + {"IO", IMP_DBG_IOT}, + {0} +}; + +// And finally tie it all together ... +DEVICE rtc_dev = { + "RTC", &rtc_unit, rtc_reg, rtc_mod, + 1, 0, 0, 0, 0, 0, + NULL, NULL, &rtc_reset, NULL, NULL, NULL, + &rtc_dib, DEV_DIS|DEV_DISABLE|DEV_DEBUG, 0, rtc_debug, NULL, NULL +}; + + + +//////////////////////////////////////////////////////////////////////////////// +////////////////// W D T D A T A S T R U C T U R E S ////////////////// +//////////////////////////////////////////////////////////////////////////////// + +// WDT device information block ... +DIB wdt_dib = { WDT, 1, IOBUS, IOBUS, INT_V_NONE, INT_V_NONE, &wdt_io, 0 }; + +// WDT unit data block (it has only one) ... +UNIT wdt_unit = { UDATA (&wdt_service, 0, 0), 1000 }; + +// WDT device registers (for "EXAMINE WDT STATE") ... +REG wdt_reg[] = { + { DRDATA (COUNT, wdt_count, 16), PV_LEFT }, + { DRDATA (WAIT, wdt_unit.wait, 24), REG_NZ | PV_LEFT }, + { ORDATA (LIGHTS, wdt_lights, 16), REG_RO | PV_LEFT }, + { NULL } +}; + +// WDT device modifiers (for "SET/SHOW WDT xxx") ... +MTAB wdt_mod[] = { + { MTAB_XTD | MTAB_VDV, 0, "DELAY", "DELAY", &wdt_set_delay, &wdt_show_delay, NULL }, + { 0 } +}; + +// WDT debugging flags (for "SET WDT DEBUG=xxx") ... +DEBTAB wdt_debug[] = { + {"WARN", IMP_DBG_WARN}, + {"IO", IMP_DBG_IOT}, + {"LIGHTS", WDT_DBG_LIGHTS}, + {0} +}; + +// And summarize ... +DEVICE wdt_dev = { + "WDT", &wdt_unit, wdt_reg, wdt_mod, + 1, 0, 0, 0, 0, 0, + NULL, NULL, &wdt_reset, NULL, NULL, NULL, + &wdt_dib, DEV_DIS|DEV_DISABLE|DEV_DEBUG, 0, wdt_debug, NULL, NULL +}; + + + +//////////////////////////////////////////////////////////////////////////////// +////////// R T C I / O A N D S E R V I C E R O U T I N E S ////////// +//////////////////////////////////////////////////////////////////////////////// + +// Set and clear the RTC IRQ and IEN ... +#define SET_RTC_IRQ() SET_EXT_INT((1u << (rtc_dib.inum - INT_V_EXTD))) +#define CLR_RTC_IRQ() CLR_EXT_INT((1u << (rtc_dib.inum - INT_V_EXTD))) +#define CLR_RTC_IEN() CLR_EXT_ENB((1u << (rtc_dib.inum - INT_V_EXTD))) + +// RTC IO routine ... +int32 rtc_io (int32 inst, int32 fnc, int32 dat, int32 dev) +{ + switch (inst) { + case ioOCP: + if (fnc == 010) { + // CLKOFF - turn the RTC off ... + sim_cancel(&rtc_unit); rtc_enabled = 0; CLR_RTC_IRQ(); + sim_debug(IMP_DBG_IOT, &rtc_dev, "disabled (PC=%06o)\n", PC-1); + return dat; + } else if (fnc == 000) { + // CLKON - turn the RTC on ... + rtc_enabled = 1; CLR_RTC_IRQ(); + if (sim_is_active(&rtc_unit) == 0) + sim_activate (&rtc_unit, sim_rtc_init (rtc_unit.wait)); + sim_debug(IMP_DBG_IOT, &rtc_dev, "enabled (PC=%06o)\n", PC-1); + return dat; + } + break; + + case ioINA: + if ((fnc == 010) || (fnc == 000)) { + // RDCLOK - return the current count + sim_debug(IMP_DBG_IOT, &rtc_dev, "read clock (PC=%06o, RTC=%06o)\n", PC-1, (rtc_count & DMASK)); + return IOSKIP((rtc_count & DMASK)); + } + break; + } + + sim_debug(IMP_DBG_WARN, &rtc_dev, "UNIMPLEMENTED I/O (PC=%06o, instruction=%o, function=%02o)\n", PC-1, inst, fnc); + return IOBADFNC(dat); +} + +// RTC unit service ... +t_stat rtc_service (UNIT *uptr) +{ + // Add the current quantum to the clock register and, if the clock register + // has overflowed, request an interrupt. The real hardware interrupts when + // there is a carry out of the low byte (in other words, every 256 clocks). + // Note that we can't simply check the low byte for zero to detect overflows + // because of the quantum. Since we aren't necessarily incrementing by 1, we + // may never see a value of exactly zero. We'll have to be more clever. + uint8 rtc_high = HIBYTE(rtc_count); + rtc_count = (rtc_count + rtc_quantum) & DMASK; + if (HIBYTE(rtc_count) != rtc_high) { + sim_debug(IMP_DBG_IOT, &rtc_dev, "interrupt request\n"); + SET_RTC_IRQ(); + } + mi_tx_service(rtc_quantum); + uptr->wait = sim_rtc_calb (rtc_tps); /* recalibrate */ + sim_activate_after (uptr, 1000000/rtc_tps); /* reactivate unit */ + return SCPE_OK; +} + + + +//////////////////////////////////////////////////////////////////////////////// +////////// W D T I / O A N D S E R V I C E R O U T I N E S ////////// +//////////////////////////////////////////////////////////////////////////////// + +// WDT IO routine ... +int32 wdt_io (int32 inst, int32 fnc, int32 dat, int32 dev) +{ + if ((inst == ioOCP) && (fnc == 0)) { + // Reset WDT ... + sim_debug(IMP_DBG_IOT, &wdt_dev, "reset (PC=%06o)\n", PC-1); + return dat; + } else if ((inst == ioOTA) && (fnc == 0)) { + // Set status lights ... + if (wdt_lights != dat) { + sim_debug(WDT_DBG_LIGHTS, &wdt_dev, "changed to %06o\n", dat); + } + sim_debug(IMP_DBG_IOT, &wdt_dev, "set status lights (PC=%06o, LIGHTS=%06o)\n", PC-1, dat); + wdt_lights = dat; return dat; + } + + sim_debug(IMP_DBG_WARN, &wdt_dev, "UNIMPLEMENTED I/O (PC=%06o, instruction=%o, function=%02o)\n", PC-1, inst, fnc); + return IOBADFNC(dat); +} + +// WDT unit service ... +t_stat wdt_service (UNIT *uptr) +{ + return SCPE_OK; +} + + + +//////////////////////////////////////////////////////////////////////////////// +/////////////// D E V I C E A C T I O N C O M M A N D S //////////////// +//////////////////////////////////////////////////////////////////////////////// + +// RTC reset routine ... +t_stat rtc_reset (DEVICE *dptr) +{ + // Clear the interrupt enable and any pending interrupts, reset the count + // and enable the clock. At least I assume that's what a reset does - the + // docs aren't too specific on this point... + rtc_enabled = 1; rtc_count = 0; + CLR_RTC_IRQ(); CLR_RTC_IEN(); + sim_cancel (&rtc_unit); + sim_register_clock_unit ((dptr->flags & DEV_DIS) ? NULL : &rtc_unit); + return SCPE_OK; +} + +// WDT reset routine ... +t_stat wdt_reset (DEVICE *dptr) +{ + // Clear the WDT countdown and turn off all the lights ... + wdt_count = 0; wdt_lights = 0; + sim_cancel (&wdt_unit); + return SCPE_OK; +} + + + +//////////////////////////////////////////////////////////////////////////////// +///////// D E V I C E S E T A N D S H O W C O M M A N D S ////////// +//////////////////////////////////////////////////////////////////////////////// + +// Set/Show RTC interval ... +t_stat rtc_set_interval (UNIT *uptr, int32 val, char *cptr, void *desc) +{ + uint32 newint, newtps; t_stat ret; + if (cptr == NULL) return SCPE_ARG; + newint = get_uint (cptr, 10, 1000000, &ret); + if (ret != SCPE_OK) return ret; + if (newint == 0) return SCPE_ARG; + newtps = 1000000UL / (newint * rtc_quantum); + if ((newtps == 0) || (newtps >= 100000)) return SCPE_ARG; + rtc_interval = newint; rtc_tps = newtps; + uptr->wait = sim_rtc_calb (rtc_tps); + return SCPE_OK; +} + +t_stat rtc_show_interval (FILE *st, UNIT *uptr, int32 val, void *desc) +{ + fprintf(st,"interval=%d (us)", rtc_interval); + return SCPE_OK; +} + +// Set/Show RTC quantum ... +t_stat rtc_set_quantum (UNIT *uptr, int32 val, char *cptr, void *desc) +{ + uint32 newquant, newtps; t_stat ret; + if (cptr == NULL) return SCPE_ARG; + newquant = get_uint (cptr, 10, 1000000, &ret); + if (ret != SCPE_OK) return ret; + if (newquant == 0) return SCPE_ARG; + newtps = 1000000UL / (rtc_interval * newquant); + if ((newtps == 0) || (newtps >= 100000)) return SCPE_ARG; + rtc_quantum = newquant; rtc_tps = newtps; + uptr->wait = sim_rtc_calb (rtc_tps); + return SCPE_OK; +} + +t_stat rtc_show_quantum (FILE *st, UNIT *uptr, int32 val, void *desc) +{ + fprintf(st,"quantum=%d (ticks)", rtc_quantum); + return SCPE_OK; +} + +// Set/Show WDT delay ... +t_stat wdt_set_delay (UNIT *uptr, int32 val, char *cptr, void *desc) +{ + uint32 newint; t_stat ret; + if (cptr == NULL) return SCPE_ARG; + newint = get_uint (cptr, 10, 65535, &ret); + if (ret != SCPE_OK) return ret; + if (newint != 0) { + fprintf(stderr,"WDT - timeout not yet implemented\n"); + return SCPE_IERR; + } + wdt_delay = newint; +// TBA add calculations here??? + return SCPE_OK; +} + +t_stat wdt_show_delay (FILE *st, UNIT *uptr, int32 val, void *desc) +{ + if (wdt_delay > 0) + fprintf(st,"delay=%d (ms)", wdt_delay); + else + fprintf(st,"no timeout"); + return SCPE_OK; +} + +#endif // #ifdef VM_IMPTIP from the very top diff --git a/H316/h316_stddev.c b/H316/h316_stddev.c index a624b8cb..148ddad8 100644 --- a/H316/h316_stddev.c +++ b/H316/h316_stddev.c @@ -30,6 +30,7 @@ 10-Sep-13 RMS Fixed several bugs in the TTY logic Added SET file type commands to PTR/PTP + 3-Jul-13 RLA compatibility changes for extended interrupts 09-Jun-07 RMS Fixed bug in clock increment (Theo Engel) 30-Sep-06 RMS Fixed handling of non-printable characters in KSR mode 03-Apr-06 RMS Fixed bugs in punch state handling (Theo Engel) @@ -158,7 +159,7 @@ t_stat ttp_write (int32 c); ptr_reg PTR register list */ -DIB ptr_dib = { PTR, IOBUS, 1, &ptrio }; +DIB ptr_dib = { PTR, 1, IOBUS, IOBUS, INT_V_PTR, INT_V_NONE, &ptrio, 0 }; UNIT ptr_unit = { UDATA (&ptr_svc, UNIT_SEQ+UNIT_ATTABLE+UNIT_ROABLE, 0), @@ -203,7 +204,7 @@ DEVICE ptr_dev = { ptp_reg PTP register list */ -DIB ptp_dib = { PTP, IOBUS, 1, &ptpio }; +DIB ptp_dib = { PTP, 1, IOBUS, IOBUS, INT_V_PTP, INT_V_NONE, &ptpio, 0 }; UNIT ptp_unit = { UDATA (&ptp_svc, UNIT_SEQ+UNIT_ATTABLE, 0), SERIAL_OUT_WAIT @@ -243,7 +244,7 @@ DEVICE ptp_dev = { #define TTR 2 #define TTP 3 -DIB tty_dib = { TTY, IOBUS, 1, &ttyio }; +DIB tty_dib = { TTY, 1, IOBUS, IOBUS, INT_V_TTY, INT_V_NONE, &ttyio, 0 }; UNIT tty_unit[] = { { UDATA (&tti_svc, TT_MODE_KSR, 0), KBD_POLL_WAIT }, @@ -308,7 +309,7 @@ DEVICE tty_dev = { clk_reg CLK register list */ -DIB clk_dib = { CLK_KEYS, IOBUS, 1, &clkio }; +DIB clk_dib = { CLK_KEYS, 1, IOBUS, IOBUS, INT_V_CLK, INT_V_NONE, &clkio, 0 }; UNIT clk_unit = { UDATA (&clk_svc, 0, 0), 16000 }; diff --git a/H316/h316_sys.c b/H316/h316_sys.c index 905c8470..26352c07 100644 --- a/H316/h316_sys.c +++ b/H316/h316_sys.c @@ -23,6 +23,7 @@ used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from Robert M Supnik. + 21-May-13 RLA Add IMP/TIP devices 01-Dec-04 RMS Fixed fprint_opr calling sequence 24-Oct-03 RMS Added DMA/DMC support 17-Sep-01 RMS Removed multiconsole support @@ -41,6 +42,11 @@ extern DEVICE clk_dev; extern DEVICE dp_dev; extern DEVICE fhd_dev; extern DEVICE mt_dev; +#ifdef VM_IMPTIP +extern DEVICE rtc_dev, wdt_dev, imp_dev; +extern DEVICE mi1_dev, mi2_dev, mi3_dev, mi4_dev, mi5_dev; +extern DEVICE hi1_dev, hi2_dev, hi3_dev, hi4_dev; +#endif extern REG cpu_reg[]; extern uint16 M[]; @@ -64,12 +70,19 @@ DEVICE *sim_devices[] = { &cpu_dev, &ptr_dev, &ptp_dev, - &tty_dev, &lpt_dev, - &clk_dev, - &dp_dev, - &fhd_dev, + &tty_dev, &mt_dev, + &clk_dev, + &fhd_dev, + &dp_dev, +#ifdef VM_IMPTIP + &wdt_dev, + &rtc_dev, + &imp_dev, + &mi1_dev, &mi2_dev, &mi3_dev, &mi4_dev, &mi5_dev, + &hi1_dev, &hi2_dev, &hi3_dev, &hi4_dev, +#endif NULL }; diff --git a/H316/h316_udp.c b/H316/h316_udp.c new file mode 100644 index 00000000..d2455a7f --- /dev/null +++ b/H316/h316_udp.c @@ -0,0 +1,667 @@ +/* h316_udp.c: IMP/TIP Modem and Host Interface socket routines using UDP + + Copyright (c) 2013 Robert Armstrong, bob@jfcl.com + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + ROBERT ARMSTRONG BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + Except as contained in this notice, the name of Robert Armstrong shall not be + used in advertising or otherwise to promote the sale, use or other dealings + in this Software without prior written authorization from Robert Armstrong. + + + REVISION HISTORY + + udp socket routines + + 26-Jun-13 RLA Rewritten from TCP version + + + OVERVIEW + + This module emulates low level communications between two virtual modems + using UDP packets over the modern network connections. It's used by both + the IMP modem interface and the host interface modules to implement IMP to + IMP and IMP to HOST connections. + + TCP vs UDP + + Why UDP and not TCP? TCP has a couple of advantages after all - it's + stream oriented, which is intrinsically like a modem, and it handles all + the network "funny stuff" for us. TCP has a couple of problems too - first, + it's inherently asymmetrical. There's a "server" end which opens a master + socket and passively listens for connections, and a "client" end which + actively attempts to connect. That's annoying, but it can be worked around. + + The big problem with TCP is that even though it treats the data like a stream + it's internally buffering it, and you really have absolutely no control over + when TCP will decide to send its buffer. Google "nagle algorithm" to get an + idea. Yes, you can set TCP_NODELAY to disable Nagle, but the data's still + buffered and it doesn't fix the problem. What's the issue with buffering? + It introduces completely unpredictable delays into the message traffic. A + transmitting IMP could send two or three (or ten or twenty!) messages before + TCP actually decides to try to deliver them to the destination. + + And it turns out that IMPs are extraordinarily sensitive to line speed. The + IMP firmware actually goes to the trouble of measuring the effective line + speed by using the RTC to figure out how long it takes to send a message. + One thing that screws up the IMP to no end is variation in the effective + line speed. I guess they had a lot of trouble with AT&T Long Lines back in + the Old Days, and the IMP has quite a bit of code to monitor line quality. + Even fairly minor variations in speed will cause it to mark the line as + "down" and sent a trouble report back to BBN. And no, I'm not making this up! + + UDP gives us a few advantages. First, it's inherently packet oriented so + we can simply grab the entire packet from the transmitting IMP's memory, wrap + a little extra information around it, and ship it off in one datagram. The + receiving IMP gets the whole packet at once and it can simply BLT it into + the receiving IMP's memory. No fuss, no muss, no need convert the packet + into a stream, add word counts, wait for complete packets, etc. And UDP is + symmetrical - both ends listen and send in the same way. There's no need for + master sockets, passive (server) and active (client) ends, or any of that. + + Also UDP has no buffering - the packet goes out on the wire when we send it. + The data doesn't wait around in some buffer for TCP to decide when it wants + to let it go. The latency and delay for UDP is much more predictable and + consistent, at least for local networks. If you're actually sending the + packets out on the big, wide, Internet then all bets are off on that. + + UDP has a few problems that we have to worry about. First, it's not + guaranteed delivery so just because one IMP sends a packet doesn't mean that + the other end will ever see it. Surprisingly that's not a problem for us. + Phone lines have noise and dropouts, and real modems lose packets too. The + IMP code is completely happy and able to deal with that, and generally we + don't worry about dropped packets at all. + + There are other issues with UDP - it doesn't guarantee packet order, so the + sending IMP might transmit packets 1, 2 and 3 and the receiving IMP will get + 1, 3 then 2. THAT would never happen with a real modem and we have to shield + the IMP code from any such eventuality. Also, with UDP packets can be + duplicated so the receiving IMP might see 1, 2, 2, 3 (or even 1, 3, 2, 1!). + Again, a modem would never do that and we have to prevent it from happening. + Both cases are easily dealt with by adding a sequence number to the header + we wrap around the IMP's packet. Out of sequence or duplicate packets can + be detected and are simply dropped. If necessary, the IMP will deal with + retransmitting them in its own time. + + One more thing about UDP - there is no way to tell whether a connection is + established or not and for that matter there is no "connection" at all + (that's why it's a "connectionless" protocol, after all!). We simply send + packets out and there's no way to know whether anybody is hearing them. The + real IMP modem hardware had no carrier detect or other dataset control + functions, so it was identical in that respect. An IMP sent messages out the + modem and, unless it received a message back, it had no way to know whether + the IMP on the other end was hearing them. + + + INTERFACE + + This module provides a simplified UDP socket interface. These functions are + implemented - + + udp_create define a connection to the remote IMP + udp_release release a connection + udp_send send an IMP message to the other end + udp_receive receive (w/o blocking!) a message if available + + Note that each connection is assigned a unique "handle", a small integer, + which is used as an index into our internal connection data table. There + is a limit on the maximum number of connections available, as set my the + MAXLINKS parameter. Also, notice that all links are intrinsically full + duplex and bidirectional - data can be sent and received in both directions + independently. Real modems and host cards were exactly the same. + + One last comment - there's a nice sim_sock module which provides platform + independent TCP functions. Unfortunately there is no UDP equivalent, and this + module doesn't use sim_sock. Sorry. Even more unfortunate is that the + current implementation is WIN32/WINSOCK specific. Sorry again. There's no + reason why it couldn't be ported to other platforms, but somebody will have + to write the missing code. +*/ +#ifdef VM_IMPTIP +#include "sim_defs.h" // simh machine independent definitions +#ifdef _WIN32 // WINSOCK definitions +#include // at least Windows puts it all in one file! +#elif defined(__linux__) // Linux definitions +#include // struct socketaddr_in, et al +#include // INADDR_NONE, et al +#include // gethostbyname() +#include // fcntl() (what else??) +#include // getpid(), more? +#endif +#include "h316_defs.h" // H316 emulator definitions +#include "h316_imp.h" // ARPAnet IMP/TIP definitions + +// Local constants ... +#define MAXLINKS 10 // maximum number of simultaneous connections +// This constant determines the longest possible IMP data payload that can be +// sent. Most IMP messages are trivially small - 68 words or so - but, when one +// IMP asks for a reload the neighbor IMP sends the entire memory image in a +// single message! That message is about 14K words long. +// The next thing you should worry about is whether the underlying IP network +// can actually send a UDP packet of this size. It turns out that there's no +// simple answer to that - it'll be fragmented for sure, but as long as all +// the fragments arrive intact then the destination should reassemble them. +#define MAXDATA 16384 // longest possible IMP packet (in H316 words) + +// Compatibility hacks for WINSOCK vs Linux ... +#ifdef __linux__ +#define WSAGetLastError() errno +#define closesocket close +#define SOCKET int32 +#define SOCKADDR struct sockaddr +#define WSAEWOULDBLOCK EWOULDBLOCK +#define INVALID_SOCKET ((SOCKET) (-1)) +#define SOCKET_ERROR (-1) +#endif + +// UDP connection data structure ... +// One of these blocks is allocated for every simulated modem link. +struct _UDP_LINK { + t_bool used; // TRUE if this UDP_LINK is in use + uint32 ipremote; // IP address of the remote system + uint16 rxport; // OUR receiving port number + uint16 txport; // HIS receiving port number (on ipremote) + struct sockaddr_in rxaddr; // OUR receiving address (goes with rxsock!) + struct sockaddr_in txaddr; // HIS transmitting address (pairs with txsock!) + SOCKET rxsock; // socket for receiving incoming packets + SOCKET txsock; // socket for sending outgoing packets + uint32 rxsequence; // next message sequence number for receive + uint32 txsequence; // next message sequence number for transmit +}; +typedef struct _UDP_LINK UDP_LINK; + +// This magic number is stored at the beginning of every UDP message and is +// checked on receive. It's hardly foolproof, but its a simple attempt to +// guard against other applications dumping unsolicited UDP messages into our +// receiver socket... +#define MAGIC ((uint32) (((((('H' << 8) | '3') << 8) | '1') << 8) | '6')) + +// UDP wrapper data structure ... +// This is the UDP packet which is actually transmitted or received. It +// contains the actual IMP packet, plus whatever additional information we +// need to keep track of things. NOTE THAT ALL DATA IN THIS PACKET, INCLUDING +// THE H316 MEMORY WORDS, ARE SENT AND RECEIVED WITH NETWORK BYTE ORDER! +struct _UDP_PACKET { + uint32 magic; // UDP "magic number" (see above) + uint32 sequence; // UDP packet sequence number + uint16 count; // number of H316 words to follow + uint16 data[MAXDATA]; // and the actual H316 data words/IMP packet +}; +typedef struct _UDP_PACKET UDP_PACKET; +#define UDP_HEADER_LEN (2*sizeof(uint32) + sizeof(uint16)) + +// Locals ... +t_bool udp_wsa_started = FALSE; // TRUE if WSAStartup() has been called +UDP_LINK udp_links[MAXLINKS] = {0}; // data for every active connection + + +t_stat udp_startup (DEVICE *dptr) +{ + // WINSOCK requires that WSAStartup be called exactly once before any other + // network calls are made. That's a bit inconvenient, but this routine deals + // with it by using a static variable to call WSAStartup the first time thru + // and then never again. +#ifdef _WIN32 + WORD wVersionRequested = MAKEWORD(2,2); + WSADATA wsaData; int32 ret; + if (!udp_wsa_started) { + ret = WSAStartup (wVersionRequested, &wsaData); + if (ret != 0) { + fprintf(stderr,"UDP - WINSOCK startup error %d\n", ret); + return SCPE_IERR; + } else + sim_debug(IMP_DBG_UDP, dptr, "WSAStartup() called\n"); + udp_wsa_started = TRUE; + } +#endif + return SCPE_OK; +} + +t_stat udp_shutdown (DEVICE *dptr) +{ + // This routine calls WSACleanup() after the last socket has been closed. + // It's essentially the opposite of udp_startup() ... +#ifdef _WIN32 + if (udp_wsa_started) { + WSACleanup(); udp_wsa_started = FALSE; + sim_debug(IMP_DBG_UDP, dptr, "WSACleanup() called\n"); + } +#endif + return SCPE_OK; +} + +int32 udp_find_free_link (void) +{ + // Find a free UDP_LINK block, initialize it and return its index. If none + // are free, then return -1 ... + int32 i; + for (i = 0; i < MAXLINKS; ++i) { + if (udp_links[i].used == 0) { + memset(&udp_links[i], 0, sizeof(UDP_LINK)); + // Just in case these values aren't zero! + udp_links[i].rxsock = udp_links[i].txsock = INVALID_SOCKET; + return i; + } + } + return NOLINK; +} + +char *udp_format_remote (int32 link) +{ + // Format the remote address and port in the format "w.x.y.z:pppp" . It's + // a bit ugly (OK, it's a lot ugly!) but it's just for error messages... + static char buf[64]; + sprintf(buf, "%d.%d.%d.%d:%d", + (udp_links[link].ipremote >> 24) & 0xFF, + (udp_links[link].ipremote >> 16) & 0xFF, + (udp_links[link].ipremote >> 8) & 0xFF, + udp_links[link].ipremote & 0xFF, + udp_links[link].txport); + return buf; +} + +/* get_ipaddr IP address:port + + Inputs: + cptr = pointer to input string + Outputs: + ipa = pointer to IP address (may be NULL), 0 = none + ipp = pointer to IP port (may be NULL), 0 = none + result = status +*/ + +static t_stat get_ipaddr (char *cptr, uint32 *ipa, uint32 *ipp) +{ +char gbuf[CBUFSIZE]; +char *addrp, *portp, *octetp; +uint32 i, addr, port, octet; +t_stat r; + +if ((cptr == NULL) || (*cptr == 0)) + return SCPE_ARG; +strncpy (gbuf, cptr, CBUFSIZE); +addrp = gbuf; /* default addr */ +if ((portp = strchr (gbuf, ':'))) /* x:y? split */ + *portp++ = 0; +else if (strchr (gbuf, '.')) /* x.y...? */ + portp = NULL; +else { + portp = gbuf; /* port only */ + addrp = NULL; /* no addr */ + } +if (portp) { /* port string? */ + if (ipp == NULL) /* not wanted? */ + return SCPE_ARG; + port = (int32) get_uint (portp, 10, 65535, &r); + if ((r != SCPE_OK) || (port == 0)) + return SCPE_ARG; + } +else port = 0; +if (addrp) { /* addr string? */ + if (ipa == NULL) /* not wanted? */ + return SCPE_ARG; + for (i = addr = 0; i < 4; i++) { /* four octets */ + octetp = strchr (addrp, '.'); /* find octet end */ + if (octetp != NULL) /* split string */ + *octetp++ = 0; + else if (i < 3) /* except last */ + return SCPE_ARG; + octet = (int32) get_uint (addrp, 10, 255, &r); + if (r != SCPE_OK) + return SCPE_ARG; + addr = (addr << 8) | octet; + addrp = octetp; + } + if (((addr & 0377) == 0) || ((addr & 0377) == 255)) + return SCPE_ARG; + } +else addr = 0; +if (ipp) /* return req values */ + *ipp = port; +if (ipa) + *ipa = addr; +return SCPE_OK; +} + +t_stat udp_parse_remote (int32 link, char *premote) +{ + // This routine will parse a remote address string in any of these forms - + // + // llll:w.x.y.z:rrrr + // llll:name.domain.com:rrrr + // llll::rrrr + // w.x.y.z:rrrr + // name.domain.com:rrrr + // + // In all examples, "llll" is the local port number that we use for listening, + // and "rrrr" is the remote port number that we use for transmitting. The + // local port is optional and may be omitted, in which case it defaults to the + // same as the remote port. This works fine if the other IMP is actually on + // a different host, but don't try that with localhost - you'll be talking to + // yourself!! In both cases, "w.x.y.z" is a dotted IP for the remote machine + // and "name.domain.com" is its name (which will be looked up to get the IP). + // If the host name/IP is omitted then it defaults to "localhost". + char *end, *colon; int32 port; struct hostent *he; + if (*premote == '\0') return SCPE_2FARG; + // Look for the local port number. If it's not there, set rxport to zero for now. + port = strtoul(premote, &end, 10); udp_links[link].rxport = 0; + if ((*end == ':') && (port > 0)) { + udp_links[link].rxport = port; premote = end+1; + } + + // Look for "name:port" and extract the remote port... + if ((colon = strchr(premote, ':')) == NULL) return SCPE_ARG; + *colon++ = '\0'; port = strtoul(colon, &end, 10); + if ((*end != '\0') || (port == 0)) return SCPE_ARG; + udp_links[link].txport = port; + if (udp_links[link].rxport == 0) udp_links[link].rxport = port; + + // Now try to parse the host as a dotted IP address ... + if (get_ipaddr(premote, &udp_links[link].ipremote, NULL) == SCPE_OK) return SCPE_OK; + + // Special kludge - allow just ":port" to mean "localhost:port" ... + if(*premote == '\0') { + if (udp_links[link].rxport == udp_links[link].txport) + fprintf(stderr,"WARNING - use different transmit and receive ports!\n"); + premote = "localhost"; + } + + // Not a dotted IP - try to lookup a host name ... + if ((he = gethostbyname(premote)) == NULL) return SCPE_OPENERR; + udp_links[link].ipremote = * (unsigned long *) he->h_addr_list[0]; + if (udp_links[link].ipremote == INADDR_NONE) { + fprintf(stderr,"WARNING - unable to resolve \"%s\"\n", premote); + return SCPE_OPENERR; + } + udp_links[link].ipremote = ntohl(udp_links[link].ipremote); + return SCPE_OK; +} + +t_stat udp_socket_error (int32 link, const char *msg) +{ + // This routine is called whenever a SOCKET_ERROR is returned for any I/O. + fprintf(stderr,"UDP%d - %s failed with error %d\n", link, msg, WSAGetLastError()); + return SCPE_IOERR; +} + +t_stat udp_create_rx_socket (int32 link) +{ + // This routine will create the receiver socket for the virtual modem. + // Sockets are always UDP and, in the case of the receiver, bound to the port + // specified. Receiving sockets are also always set to NON BLOCKING mode. + int32 iret; uint32 flags = 1; + + // Creating the socket works on both Windows and Linux ... + udp_links[link].rxsock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); + if (udp_links[link].rxsock == INVALID_SOCKET) + return udp_socket_error(link, "RX socket()"); + udp_links[link].rxaddr.sin_family = AF_INET; + udp_links[link].rxaddr.sin_port = htons(udp_links[link].rxport); + udp_links[link].rxaddr.sin_addr.s_addr = htonl(INADDR_ANY); + iret = bind(udp_links[link].rxsock, (SOCKADDR *) &udp_links[link].rxaddr, sizeof(struct sockaddr_in)); + if (iret != 0) + return udp_socket_error(link, "bind()"); + + // But making it non-blocking is a problem ... +#ifdef _WIN32 + iret = ioctlsocket(udp_links[link].rxsock, FIONBIO, (u_long *) &flags); + if (iret != 0) + return udp_socket_error(link, "ioctlsocket()"); +#elif defined(__linux__) + flags = fcntl(udp_links[link].rxsock, F_GETFL, 0); + if (flags == -1) return udp_socket_error(link, "fcntl(F_GETFL)"); + iret = fcntl(udp_links[link].rxsock, F_SETFL, flags | O_NONBLOCK); + if (iret == -1) return udp_socket_error(link, "fcntl(F_SETFL)"); + iret = fcntl(udp_links[link].rxsock, F_SETOWN, getpid()); + if (iret == -1) return udp_socket_error(link, "fcntl(F_SETOWN)"); +#endif + return SCPE_OK; +} + +t_stat udp_create_tx_socket (int32 link) +{ + // This routine will create the transmitter socket for the virtual modem. + // In the case of the transmitter, we don't bind the socket at this time - + // WINSOCK will automatically bind it for us to a free port on the first IO. + // Also note that transmitting sockets are blocking; we don't have code (yet!) + // to allow them to be nonblocking. + udp_links[link].txsock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); + if (udp_links[link].txsock == INVALID_SOCKET) + return udp_socket_error(link, "TX socket()"); + + // Initialize the txaddr structure too - note that this isn't used now; it's + // the sockaddr we will use when we later do a sendto() the remote host! + udp_links[link].txaddr.sin_family = AF_INET; + udp_links[link].txaddr.sin_port = htons(udp_links[link].txport); + udp_links[link].txaddr.sin_addr.s_addr = htonl(udp_links[link].ipremote); + return SCPE_OK; +} + +t_stat udp_create (DEVICE *dptr, char *premote, int32 *pln) +{ + // Create a logical UDP link to the specified remote system. The "remote" + // string specifies both the remote host name or IP and a port number. The + // port number is both the port we send datagrams to, and also the port we + // listen on for incoming datagrams. UDP doesn't have any real concept of a + // "connection" of course, and this routine simply creates the necessary + // sockets in this host. We have no way of knowing whether the remote host is + // listening or even if it exists. + // + // We return SCPE_OK if we're successful and an error code if we aren't. If + // we are successful, then the ln parameter is assigned the link number, + // which is a handle used to identify this connection to all future udp_xyz() + // calls. + t_stat ret; + int32 link = udp_find_free_link(); + if (link < 0) return SCPE_MEM; + + // Make sure WINSOCK is initialized ... + if ((ret = udp_startup(dptr)) != SCPE_OK) return ret; + + // Parse the remote name and set up the ipaddr and port ... + if ((ret = udp_parse_remote(link, premote)) != SCPE_OK) return ret; + + // Create the sockets for the transmitter and receiver ... + if ((ret = udp_create_rx_socket(link)) != SCPE_OK) return ret; + if ((ret = udp_create_tx_socket(link)) != SCPE_OK) return ret; + + // All done - mark the TCP_LINK data as "used" and return the index. + udp_links[link].used = TRUE; *pln = link; + sim_debug(IMP_DBG_UDP, dptr, "link %d - listening on port %d and sending to %s\n", link, udp_links[link].rxport, udp_format_remote(link)); + return SCPE_OK; +} + +t_stat udp_release (DEVICE *dptr, int32 link) +{ + // Close a link that was created by udp_create() and release any resources + // allocated to it. We always return SCPE_OK unless the link specified is + // already unused. + int32 iret, i; + if ((link < 0) || (link >= MAXLINKS)) return SCPE_IERR; + if (!udp_links[link].used) return SCPE_IERR; + + // Close the sockets associated with this connection - that's easy ... + iret = closesocket(udp_links[link].rxsock); + if (iret != 0) udp_socket_error(link, "closesocket()"); + iret = closesocket(udp_links[link].txsock); + if (iret != 0) udp_socket_error(link, "closesocket()"); + udp_links[link].used = FALSE; + sim_debug(IMP_DBG_UDP, dptr, "link %d - closed\n", link); + + // If we just closed the last link, then call udp_shutdown() ... + for (i = 0; i < MAXLINKS; ++i) { + if (udp_links[i].used) return SCPE_OK; + } + return udp_shutdown(dptr); +} + +t_stat udp_send_to (DEVICE *dptr, int32 link, uint16 *pdata, uint16 count, SOCKADDR *pdest) +{ + // This routine does all the work of sending an IMP data packet. pdata + // is a pointer (usually into H316 simulated memory) to the IMP packet data, + // count is the length of the data (in H316 words, not bytes!), and pdest is + // the destination socket. There are two things worthy of note here - first, + // notice that the H316 words are sent in network order, so the remote simh + // doesn't necessarily need to have the same endian-ness as this machine. + // Second, notice that transmitting sockets are NOT set to non blocking so + // this routine might wait, but we assume the wait will never be too long. + UDP_PACKET pkt; int pktlen; uint16 i; int32 iret; + if ((link < 0) || (link >= MAXLINKS)) return SCPE_IERR; + if (!udp_links[link].used) return SCPE_IERR; + if ((pdata == NULL) || (count == 0) || (count > MAXDATA)) return SCPE_IERR; + + // Build the UDP packet, filling in our own header information and copying + // the H316 words from memory. REMEMBER THAT EVERYTHING IS IN NETWORK ORDER! + pkt.magic = htonl(MAGIC); + pkt.sequence = htonl(udp_links[link].txsequence++); + pkt.count = htons(count); + for (i = 0; i < count; ++i) pkt.data[i] = htons(*pdata++); + pktlen = UDP_HEADER_LEN + count*sizeof(uint16); + + // Send it and we're outta here ... + iret = sendto(udp_links[link].txsock, (const char *) &pkt, pktlen, 0, pdest, sizeof (struct sockaddr_in)); + if (iret == SOCKET_ERROR) return udp_socket_error(link, "sendto()"); + sim_debug(IMP_DBG_UDP, dptr, "link %d - packet sent (sequence=%d, length=%d)\n", link, ntohl(pkt.sequence), ntohs(pkt.count)); + return SCPE_OK; +} + +t_stat udp_send (DEVICE *dptr, int32 link, uint16 *pdata, uint16 count) +{ + // Send an IMP packet to the remote simh. This is the usual case - the only + // reason there's any other options at all is so we can emulate loopback. + return udp_send_to (dptr, link, pdata, count, (SOCKADDR *) &(udp_links[link].txaddr)); +} + +t_stat udp_send_self (DEVICE *dptr, int32 link, uint16 *pdata, uint16 count) +{ + // Send an IMP packet to our own receiving socket. This might seem silly, + // but it's used to emulate the line loopback function... + struct sockaddr_in self; + self.sin_family = AF_INET; + self.sin_port = htons(udp_links[link].rxport); + self.sin_addr.s_addr = htonl(INADDR_LOOPBACK); + return udp_send_to (dptr, link, pdata, count, (SOCKADDR *) &self); +} + +int32 udp_receive_packet (int32 link, UDP_PACKET *ppkt) +{ + // This routine will do the hard part of receiving a UDP packet. If it's + // successful the packet length, in bytes, is returned. The receiver socket + // is non-blocking, so if no packet is available then zero will be returned + // instead. Lastly, if a fatal socket I/O error occurs, -1 is returned. + // + // Note that this routine only receives the packet - it doesn't handle any + // of the checking for valid packets, unexpected packets, duplicate or out of + // sequence packets. That's strictly the caller's problem! + int32 pktsiz; + struct sockaddr_in sender; +#if defined (macintosh) || defined (__linux) || defined (__linux__) || \ + defined (__APPLE__) || defined (__OpenBSD__) || \ + defined(__NetBSD__) || defined(__FreeBSD__) || \ + (defined(__hpux) && defined(_XOPEN_SOURCE_EXTENDED)) +socklen_t sndsiz = (socklen_t)sizeof(sender); +#elif defined (_WIN32) || defined (__EMX__) || \ + (defined (__ALPHA) && defined (__unix__)) || \ + defined (__hpux) +int sndsiz = (int)sizeof(sender); +#else +size_t sndsiz = sizeof(sender); +#endif + + pktsiz = recvfrom(udp_links[link].rxsock, (char *) ppkt, sizeof(UDP_PACKET), + 0, (SOCKADDR *) &sender, &sndsiz); + if (pktsiz >= 0) return pktsiz; + if (WSAGetLastError() == WSAEWOULDBLOCK) return 0; + udp_socket_error(link, "recvfrom()"); + return NOLINK; +} + +int32 udp_receive (DEVICE *dptr, int32 link, uint16 *pdata, uint16 maxbuf) +{ + // Receive an IMP packet from the virtual modem. pdata is a pointer usually + // directly into H316 simulated memory) to where the IMP packet data should + // be stored, and maxbuf is the maximum length of that buffer in H316 words + // (not bytes!). If a message is successfully received then this routine + // returns the length, again in H316 words, of the IMP packet. The caller + // can detect buffer overflows by comparing this result to maxbuf. If no + // packets are waiting right now then zero is returned, and -1 is returned + // in the event of any fatal socket I/O error. + // + // This routine also handles checking for unsolicited messages and duplicate + // or out of sequence messages. All of these are unceremoniously discarded. + // + // One final note - it's explicitly allowed for pdata to be null and/or + // maxbuf to be zero. In either case the received package is discarded, but + // the actual length of the discarded package is still returned. + UDP_PACKET pkt; int32 pktlen, explen, implen, i; uint32 magic, pktseq; + if ((link < 0) || (link >= MAXLINKS)) return SCPE_IERR; + if (!udp_links[link].used) return SCPE_IERR; + + while ((pktlen = udp_receive_packet(link, &pkt)) > 0) { + // First do some header checks for a valid UDP packet ... + if (pktlen < UDP_HEADER_LEN) { + sim_debug(IMP_DBG_UDP, dptr, "link %d - received packet w/o header (length=%d)\n", link, pktlen); + continue; + } + magic = ntohl(pkt.magic); + if (magic != MAGIC) { + sim_debug(IMP_DBG_UDP, dptr, "link %d - received packet w/bad magic number (magic=%08x)\n", link, magic); + continue; + } + implen = ntohs(pkt.count); + explen = UDP_HEADER_LEN + implen*sizeof(uint16); + if (explen != pktlen) { + sim_debug(IMP_DBG_UDP, dptr, "link %d - received packet length wrong (expected=%d received=%d)\n", link, explen, pktlen); + continue; + } + + // Now the hard part = check the sequence number. The rxsequence value is + // the number of the next packet we expect to receive - that's the number + // this packet should have. If this packet's sequence is less than that, + // then this packet is out of order or a duplicate and we discard it. If + // this packet is greater than that, then we must have missed one or two + // packets. In that case we MUST update rxsequence to match this one; + // otherwise the two ends could never resynchronize after a lost packet. + pktseq = ntohl(pkt.sequence); + if (pktseq < udp_links[link].rxsequence) { + sim_debug(IMP_DBG_UDP, dptr, "link %d - received packet out of sequence 1 (expected=%d received=%d\n", link, udp_links[link].rxsequence, pktseq); + continue; + } + if (pktseq != udp_links[link].rxsequence) { + sim_debug(IMP_DBG_UDP, dptr, "link %d - received packet out of sequence 2 (expected=%d received=%d\n", link, udp_links[link].rxsequence, pktseq); + } + udp_links[link].rxsequence = pktseq+1; + + // It's a valid packet - if there's no buffer then just discard it. + if ((pdata == NULL) || (maxbuf == 0)) { + sim_debug(IMP_DBG_UDP, dptr, "link %d - received packet discarded (no buffer available)\n", link); + return implen; + } + + // Copy the data to the H316 memory and we're done! + sim_debug(IMP_DBG_UDP, dptr, "link %d - packet received (sequence=%d, length=%d)\n", link, pktseq, pktlen); + for (i = 0; i < (implen < maxbuf ? implen : maxbuf); ++i) + *pdata++ = ntohs(pkt.data[i]); + return implen; + } + + // Here if pktlen <= 0 ... + return pktlen; +} + +#endif // ifdef VM_IMPTIP diff --git a/H316/tests/c-listing-ps.txt b/H316/tests/c-listing-ps.txt new file mode 100644 index 00000000..1241aa8d --- /dev/null +++ b/H316/tests/c-listing-ps.txt @@ -0,0 +1,13422 @@ + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 1 IMP,3050,IMP 7:20 PM 9/16/1973 + + IMP SYSTEM + + .VERS.=3050 + + DCA=0 + + PRINTX /NETWORK VERSION / + PNTNUM .VERS. + PRINTX / + / + + REPEAT 1IF VZ DCA,[ + PRINTX /ARPA NET SYSTEM + + / ] + + REPEAT 0IF VZ DCA,[ + PRINTX /DCA NET SYSTEM + + / ] + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 2 IMP,3050,IMP 7:20 PM 9/16/1973 + + ACA=141216 + ADD=14000 /516 OPCODES + ANA=6000 + AOA=141206 + CAL=141050 + CAR=141044 + CAS=22000 + CHS=140024 + CMA=140401 + CRA=140040 + CSA=140320 + DXA=11 + .ENB=401 + ERA=12000 + EXA=13 + HLT=0 + IAB=201 + ICA=141340 + ICL=141140 + ICR=141240 + IMA=26000 + .INH=1001 + INK=43 + IRS=24000 + JMP=2000 + JST=20000 + LDA=4000 + LDX=72000 + NOP=101000 + OTK=171020 + RCB=140200 + SCB=140600 + SKP=100000 + SLN=101100 + SLZ=100100 + SMI=101400 + SNZ=101040 + SPL=100400 + SRC=100001 + SR1=100020 + SR2=100010 + SR3=100004 + SR4=100002 + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 3 IMP,3050,IMP 7:20 PM 9/16/1973 + + SSC=101001 + SSM=140500 + SSP=140100 + SS1=101020 + SS2=101010 + SS3=101004 + SS4=101002 + STA=10000 + STX=32000 + SUB=16000 + SZE=100040 + TCA=140407 + + IRP [I,,ALS,ARS,ALR,ARR,LGL,LGR,LLS,LRS,LLR,LRR,LLL,LRL], [N,, + 415,405,416,406,414,404,411,401,412,402,410,400] + + DEFINE I C + 0 0 N'00+100-C"A"77 + TERMINATE + + ENDIRP + + + IRP [I,,INA,OCP,OTA,SKS,SMK],[N,,13,3,17,7,17] + + DEFINE I C + 0 0 N'0000 C + TERMINATE + + ENDIRP + + + X=40000 + I=100000 + XI=140000 + + DEFINE BSS N + 200000 + 0 0 . N-1/ + TERMINATE + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 4 IMP,3050,IMP 7:20 PM 9/16/1973 + + /SKS'S, OCP'S, ETC FOR PRODUCTION MACHINES + + IRP [NUM,,1,2,3,4,5] + + M'NUM'OUT=OCP 7'NUM + M'NUM'UNXP=OCP 17'NUM + M'NUM'LXP=OCP 27'NUM + M'NUM'IXP=OCP 37'NUM + M'NUM'IN=OCP 47'NUM + + M'NUM'ERR=SKS 47'NUM + + M'NUM'INIL=63 NUM + M'NUM'OTIL=70 NUM + + M'NUM'INBP=16 NUM NUM + M'NUM'OTBP=30 NUM NUM + + ENDIRP + + + IRP [NUM,,1,2,3] + + H'NUM'ROUT=OCP 100-[10"T"NUM] + H'NUM'IN=OCP 200-[10"T"NUM] + H'NUM'FOUT=OCP 300-[10"T"NUM] + H'NUM'XP=OCP 400-[10"T"NUM] + H'NUM'UNXP=OCP 500-[10"T"NUM] + H'NUM'ENAB=OCP 600-[10"T"NUM] + + H'NUM'ERR=SKS 100-[10"T"NUM] + H'NUM'RDY=SKS 200-[10"T"NUM] + H'NUM'EOM=SKS 300-[10"T"NUM] + H'NUM'FULL=SKS 500-[10"T"NUM] + + H'NUM'OTIL=75 NUM + H'NUM'INIL=77 NUM + + H'NUM'OTBP=42 NUM NUM + H'NUM'INBP=46 NUM NUM + + ENDIRP + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 5 IMP,3050,IMP 7:20 PM 9/16/1973 + + H3OTIL=M5INIL /HOST 3 IS A LITTLE STRANGE + H3INIL=M5OTIL + H3OTBP=54 + H3INBP=56 + H4OTIL=M4INIL /HOST 4 IS YET STRANGER + H4INIL=M4OTIL + H4OTBP=M5INBP + H4INBP=M5OTBP + H4ROUT=OCP 51 + H4IN=OCP 151 + H4FOUT=OCP 251 + H4XP=OCP 351 + H4UNXP=OCP 451 + H4ENAB=OCP 551 + H4ERR=SKS 51 + H4RDY=SKS 151 + H4EOM=SKS 251 + H4FULL=SKS 451 + + CLKON=OCP 40 + CLKOFF=OCP 1040 + RDCLOK=INA 1040 + CLOKIL=102 + + TASK=OCP 41 + TASKIL=103 + + WDT=OCP 26 + WDTIL=62 + PFIL=60 + SWDTIL=61 + + LITES=OTA 26 + RDIMPN=INA 1041 + + AMIMLC=SKS 42 + + AMI516=SKS 26 + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 6 IMP,3050,IMP 7:20 PM 9/16/1973 + + /SKS'S AND OCP'S NATIVE TO THE 516 + + STDIL=63 /STANDARD INTERRUPT LOCATION + TTSIM=OCP 4 /SELECT INPUT MODE + TTSOM=OCP 104 /SELECT OUTPUT MODE + TTSRDY=SKS 4 + TTSNBZ=SKS 104 + TTSNSC=SKS 504 + TTINA=INA 4 + TTINB=INA 204 + TTINAC=INA 1004 + TTINBC=INA 1204 + TTOTA=OTA 4 + TTOTB=OTA 204 + + INTM=120 /SMK TO SET THE PRIORITY INTERRUPT 1 + JUNK=1 + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 7 IMP,3050,IMP 7:20 PM 9/16/1973 + + EQUALS R,REPEAT + EQUALS D,DEFINE + EQUALS T,TERMINATE + EQUALS P,PRINTX + EQUALS PR,PRINT + + /MACROS TO TYPE OUT INTERESTING LOCATIONS + + D DEFPLC TX + .TA.=. 100201/ + .TA. .ASCII /TX'"Z"/ + .TA./ + T DEFPLC + + D RELOAD TX + .TA.=. 100301/ + .TA.+1 .ASCII /TX'"Z"/ + .TA./ + T RELOAD + + D DEFHLT TX + .TA.=. 100101/ + .TA.+1 .ASCII /TX'"Z"/ + .TA./ + T DEFHLT + + /TITLES FOR DUMPED TEXTS + 100200/ + .ASCII /USEFUL LOCATIONS + "Z"/ + 100100/ + .ASCII /HALT LOCATIONS + "Z"/ + 100000/ + .ASCII / PATCH BEG END BUFS"Z"/ + 100300/ + .ASCII /CRASH-RELOAD LOCATIONS + "Z"/ + 100400/ + .ASCII / IMP BUFFERS ASSIGNED + PAGE + "Z"/ + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 8 IMP,3050,IMP 7:20 PM 9/16/1973 + + /MACROS TO SET UP STATISIICS TABLES + + NSTATS=0 + MAXSTAT=22. + + /CALL DEFSTAT , + D DEFSTAT A,B + .TA.=. + .TB.=A A + R 1IF P,[ + SW1+NSTATS/ B + SB1+NSTATS/ .TA. + SC1+NSTATS/ .TB. + .TA.+1/ + ] + NSTATS=NSTATS+1 + R 1IF VP NSTATS-MAXSTAT,[ + PR "TOO MANY STATISTICS" + NSTATS=NSTATS-1 + ] + T DEFSTAT + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 9 IMP,3050,IMP 7:20 PM 9/16/1973 + + /MACROS FOR IMP/TIP INITIALIZATION + NITB=0 + MAXITB=20.+4 /SATDEF USES 4 + /CALL TIPDEF , + + D TIPDEF A,B + .TA.=. + .TB.=A BSS 1 + .TC.=B + R 1IF P,[ + ITBLOC+NITB/ .TA. + ITBIMP+NITB/ .TB. + ITBTIP+NITB/ .TC. + .TA.+1/ + ] + NITB=NITB+1 + R 0IF VP MAXITB-NITB,[ + PR "TOO MANY IMP/TIP INSTRS" + NITB=NITB-1 + ] + T TIPDEF + + R 1IF P,[ + ITBLOC/ + R MAXITB,[ + 1 + ] +02236 000001 ] +02237 000001 +02240 000001 +02241 000001 +02242 000001 +02243 000001 +02244 000001 +02245 000001 +02246 000001 +02247 000001 +02250 000001 +02251 000001 +02252 000001 +02253 000001 +02254 000001 +02255 000001 +02256 000001 +02257 000001 +02260 000001 +02261 000001 +02262 000001 +02263 000001 +02264 000001 +02265 000001 + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 10 IMP,3050,IMP 7:20 PM 9/16/1973 + + / VDH/IMP DEF MACRO + D VDHD LOC,VDH,IMP + .TA.=. + LOC/ + .TC.=VDH + .TB.=IMP + BSS 1 + ITBVDH+ITBVP/ .TC. + ITBNVD+ITBVP/ .TB. + ITBVDL+ITBVP/ LOC + ITBVP=ITBVP+1 + R 0IF VP MAXVDH-ITBVP,[ + PR "TOO MANY IMP/VDH INSTRS" + ITBVP=ITBVP-1 + ] + 0+0+.TA./ + T + /SAT/IMP DEF (RESTORE) MACRO + D SATDEF A + TIPDEF A,A + T SATDEF + + /MACRO TO COMPUTE 16 BIT ADD CHECKSUM + /FOR ROUTING CODE, USED BY I2MLT AND RTGO + + D K ARG + .TA.=ARG + CHK=0 0 177777"A"[CHK+0+.TA.] + ARG + T K + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 11 IMP,3050,IMP 7:20 PM 9/16/1973 + + /THE STANDARD IMP INTERRUPT LEVELS + M2I=0 /MODEM-TO-IMP RUNS LOCKED + I2M=M2I+2 /IMP-TO-MODEM - SKIP VDI + I2H=I2M+1 /IMP-TO-HOST + H2I=I2H+1 /HOST-TO-IMP + T.O=H2I+1 /TIMEOUT + TSK=T.O+1 /TASK + BCK=TSK+1 /BACKGROUND + + /SOME OTHER LEVEL 0 TYPES + INI=0 /INITIALIZATION + TTY=0 /TELETYPE INTERRUPT + WDI=0 /WATCH DOG TIMER INTERRUPT + RSI=0 /POWER FAIL INTERRUPT + SIN=0 /SOFTWARE INTERRUPT CALLS + ALL=0 /UNINTERRUPTABLE CODE LIKE DXA JMP SEQUENCE + FRE=0 /REFERENCES TO FREE LIST AND COUNT + MSK=0 /REFERENCES TO INTERRUPT MASK + + /VDH LEVELS + VDI=M2I+1 /INPUT INTERRUPT + VDO=I2M /OUTPUT INTERRUPT + VDB=I2H /BACKGROUND RUNS AT IMP-TO-HOST LEVEL + + /TIP LEVELS + TPO=0 /OUTPUT INTERRUPT + TPC=H2I /CLOCK INTERRUPT + TPB=BCK /BACKGROUND + + /MISCELLANEOUS + VAR=75 /VARIABLES + CON=76 /CONSTANTS + UND=77 /UNDEFINED + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 12 IMP,3050,IMP 7:20 PM 9/16/1973 + + /MACROS TO ESTABLISH INTERRUPT LEVELS FOR CODE AND DATA + /XLEV IS HARDWARE LEVEL ESTABLISHED BY SMK INSTRUCTIONS + /YLEV IS SOFTWARE LEVEL ESTABLISHED BY INH INSTRUCTIONS + + XLEV=0 + YLEV=0 + + /MACROS WHICH ASSEMBLE CODE - INT,INH,ENB + + /DECLARE HARDWARE INTERRUPT ENTRANCE ON LEVEL N + D INT N + XLEV=N + YLEV=0 + WORD 0 0 300000+XLEV"T"100+YLEV + 0 + T INT + + /INHIBIT INTERRUPTS FROM LEVELS IN LIST + D INH LIST + R 0IF P,[ + IRP [Q,,LIST] + R 1IF VP 0 0 Q-YLEV, [ + PRINTX /REDUNDANT INH AT / + PNTNUM . + PRINTX / + / ] + ENDIRP + ] + + YLEV=100 + IRP [Q,,LIST] + R 1IF VP 0 0 YLEV-Q,YLEV=Q + ENDIRP + + .INH + WORD 0 0 300000+XLEV"T"100+YLEV + T INH + + /ENABLE HIGHER INTERRUPTS FROM LEVEL N + D ENB N + R 0IF P,[ + R 0IF VZ 0 0 XLEV-N, [ + PRINTX /INCORRECT ENB AT / + PNTNUM . + PRINTX / + / ] + ] + YLEV=N + .ENB + WORD 0 0 300000+XLEV"T"100+YLEV + T ENB + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 13 IMP,3050,IMP 7:20 PM 9/16/1973 + + /MORE INTERRUPT LEVEL MACROS + /MACROS WHICH DO NOT ASSEMBLE CODE - LEV,LCK,RET + + /DECLARE CODE OR DATA TO BE AT LOGICAL LEVELS IN LIST + D LEV LIST + XLEV=100 + IRP [Q,,LIST] + R 1IF VP 0 0 XLEV-Q,XLEV=Q + ENDIRP + YLEV=XLEV + WORD 0 0 300000+XLEV"T"100+YLEV + T LEV + + /DECLARE AN IMPLICIT INH IN CODE + D LCK LIST + R 0IF P,[ + IRP [Q,,LIST] + R 1IF VP 0 0 Q-YLEV, [ + PRINTX /REDUNDANT LCK AT / + PNTNUM . + PRINTX / + / ] + ENDIRP + ] + + YLEV=100 + IRP [Q,,LIST] + R 1IF VP 0 0 YLEV-Q,YLEV=Q + ENDIRP + + WORD 0 0 300000+XLEV"T"100+YLEV + T LCK + + /DECLARE AN IMPLICIT ENB IN CODE + D RET N + R 0IF P,[ + R 0IF VZ 0 0 XLEV-N, [ + PRINTX /INCORRECT RET AT / + PNTNUM . + PRINTX / + / ] + ] + YLEV=N + WORD 0 0 300000+XLEV"T"100+YLEV + T RET + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 14 IMP,3050,IMP 7:20 PM 9/16/1973 + + /SOME SYSTEM PARAMETERS + NH=4 /NO OF REAL HOSTS + FH=4 /NO OF FAKE HOSTS + TH=NH+FH + BH=6 /NO OF BACK HOSTS + CH=5 /NO OF PHONE LINES + NIMP=64. /NO OF IMPS + NACH=8 /NO OF ACK CHANNELS PER LINE + R 0IF VZ DCA, BBNIMP=1 /DCA NCC IMP + R 1IF VZ DCA, BBNIMP=5 /ARPA NCC IMP + BBNTIP=30. /IMP NO OF BBN TIP + PDP1D=305 /HOST PDP-1D AT BBN IMP + DIAGTT=47. /DESTINATION FOR DIAG MESSAGES + H.N=1 /NUMBER OF VDH HOST + M.N=2 /NUMBER OF VDH MODEM (UCSB) + PTCK=60. /NUMBER OF TICKS TO PROP ROUTING + 30SEC=47. /NUMBER OF TICKS IN 30 SECS + MAXH=22. /MAX NO OF HOPS IN NET + NSPD=4 /= OF DIFFFRENT LINE SPDS WE HANDLE + + /WORDS IN BUFFER + IT=1 /INPUT TIME + ST=1 /SENT TIME + PTRT=2 /PNTR TO TRACE BLOCK + INCH=3 /INPUT CHANNEL + ACKH=4 /ACKNOWLEDGE HEADER + HEAD=5 /HEADER - 4 WORDS + HEAD1=6 + CNTL=7 + HEAD2=7 + HEAD3=8 + MINPL=HEAD3 + DATA=9 /BEGINNING OF DATA STORAGE + BUFE=73. /PNTR TO END OF DATA + + /WORDS IN TRACE BLOCK + TIT=1 /TRACE INPUT TIME + TTT=2 /TRACE TASK TIME + TST=3 /TRACE OUTPUT TIME + TAT=4 /TRACE ACKNOWLEDGE TIME + THED=5 /TRACE HEADER (4 WORDS) + TQUE=9 /TRACE QUEUE + TDONE=10. /TRACE DONE (100000=DONE) + + /WORDS IN REASSEMBLY BLOCK + RID=1 /ID # MESS NO + IMP NO + RMAX=2 /NO OF PCKTS MAX + REAS=3 /BLOCK OF 8 PCKT PNTRS + RSF=11. /NO OF PCKTS SO FAR - USED AS 9TH P + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 15 IMP,3050,IMP 7:20 PM 9/16/1973 + + /BITS IN INCH + HSTMOD=100000 /1 IF FROM HOST, 0 IF FROM MODEM + INPCHN=17 /INPUT CHANNEL + + /BITS IN ACKH + ODEVEN=100000 + QUADAC=60000 /WHICH QUADRANT WE ARE ACKING + CHANUM=17400 /CHANNEL NO FOR THIS PKT + ACKBTS=377 /MAX OF 8 ACKS + + /BITS IN HEAD (REG MESSAGE) + MESSNO=177400 + ONEOR8=200 /1= ONE-PACKET + REQALL=100 /TRANSMIT ONLY + RFNM=100 /REPLY ONLY + ORDNO=60 + INCTRN=10 /1= INC (ALSO SET ON RFNM FOR GVB) + TRNREP=4 /1=TRANS, 0=REPLY + GVBALL=2 /TRANSMIT ONLY + ALLOC=2 /REPLY ONLY + LINETS=1 + /BITS IN RUTHED (ROUTING MESSAGE) + SNDCOR=100000 + RUTIMP=37400 /IMPNO TO IDENTIFY LOOPED LINES + IHERDU=20 + RUTDMP=10 /1=CORE DUMP ON FIRST HOP FROM DEAD + GETCOR=4 /1=DEMAND THE IMP TO RELOAD + NULPKT=2 /1=NULL PKT WITH ACKS ONLY + LINETS=1 /1=ROUTING MESSAGE + + /BITS IN HEAD1 + PRIBIT=100000 + FORIMP=40000 + TRACE=20000 + FOROCT=10000 + PKTNO=3400 /TRANSMIT ONLY + PKTN1=400 /LOW ORDER BIT OF PACKET NUMBER + REPDED=400 /REPLY ONLY - DEST DEAD + DESTH=300 + DESTI=77 + DESTHI=377 + + /BITS IN HEAD2 + LSTPKT=100000 + FRMIMP=40000 + FRMOCT=10000 + IHCODE=7400 + HICODE=7400 + ENDBIT=1000 /1=PKT FROM HI NO IMP ON LINE + SRCEH=300 + SRCEI=77 + SRCEHI=377 + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 16 IMP,3050,IMP 7:20 PM 9/16/1973 + + /BITS IN HEAD3 + LINKNO=177760 + SUBCOD=7 /IMP-TO-HOST SUB-CODES + + /BITS IN BUFE + TWOQ=100000 /1 = ON TWO QUEUES (IN PPT) + + /BITS IN TMESS + MESSNO=177400 /LAST MESS NO TRANSMITTED + MESS1=400 /LOW ORDER BIT + MSTO2=200 + MSTO1=100 /2 TIMEOUT BITS + ORDNO=60 /LAST ORDER NO TRANSMITTED + MESBTS=17 /1= MESS ANSWERED + + /BITS IN RMESS + MESSNO=177400 /OLDEST INCOMPLETE MESS NO + 3 + ORDNO=60 /NEXT ORDER NO WE WANT + MESBTS=17 /1= MESS COMPLETE + + /BITS IN AMESS + MESSNO=177400 /NEXT MESS NO TO REPLY TO + + /BITS IN TALLY + SRCEI=77 /FOREIGN IMP WHO ALLOCATED US 8 + + /BITS IN RALLY + ONEOR8=200 + RFNM=100 + + /WORDS IN PPT + PPT0=0 + PPT1=PPTL /HOST STAT TIME SENT + /BITS IN PPT0 + RETRAN=100000 /1= GOT AN ALLOCATE FOR HIM, MUST R + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 17 IMP,3050,IMP 7:20 PM 9/16/1973 + + + /WORDS IN PLT + PLT0=0 + PLT1=PLTL + PLT2=PLTL+PLTL + PLT3=PLTL+PLTL+PLTL /HOST STAT TIME SENT + + /BITS IN PLT0 + MESSNO=177400 + PLTUSE=200 /1 = THIS PLT ENTRY IN USE + REQALL=100 /USEFUL FOR INC TRN + PLTHST=7 /LOCAL HOST NO + + /BITS IN PLT1 + PRIBIT=100000 + FORIMP=40000 + TRACE=20000 + FOROCT=10000 + DESTHI=377 + + /BITS IN RLT2 + LINKNO=177760 + SUBCOD=7 /IMP-TO-HOST SUB-CODES + + /BITS IN TSEX + ACKTAB=377 + + /BITS IN RSEX + ACKTAB=377 + + /IH CODES + CREG=0 /REG + CERRLD=400 /ERROR IN HI LEADER + CERR32=0 /ERROR IN FIRST 32 BITS + CSHORT=1 /LESS THAN 32 BITS IN MESSAGE + CILLGL=2 /ILLEGAL HI CODE + CIMPDN=1000 /IMP GOING DOWN + /BLOCKED LINK + CNOP=2000 /NOP + CRFNM=2400 /RFNM + /LINK TABLE FULL + CDESTD=3400 /DESTINATION DEAD + CIMPD=0 /DEST IMP DEAD + CHSTD=1 /DEST HOST DEAD + CERRDT=4000 /ERROR IN HI DATA + CINCTR=4400 /INCOMPLETE TRANS + CSLOWD=0 /DEST HOST TOOK >30 SECS + CLONG=1 /MORE THAN 8095 BITS + CSLOWS=2 /SOURCE HOST TOOK >15 SECS + CLOST=3 /LOST IN SUBNET + CBLOCK=4 /SOURCE IMP TOOK > 15 SECS + CERROR=4 /ERROR BIT SET (BECOMES CERRDT) + CRESET=5000 /IMP-TO-HOST RESET - READY LINE FLA + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 18 IMP,3050,IMP 7:20 PM 9/16/1973 + + /MACROS TO COLLECT FREE SPACE AND PRINT TABLES + PAGES=32. + BUFL=BUFE+1 + + NBUFS=-1 + + + D PAGEND A,U,E + P /PAGE / PNTNUM A P / + / + FB=0 0 .+0'E + NB=0 + R 1IF VZ A+0-FB"Q"1000, [ + NB=1+0+[0 0 1000"T"[A+1]+0-FB]"Q"BUFL + NBUFS=NBUFS+NB] + 0 0 SPAR+A-2/ FB"A"777-[NB+1]"T"1000 + .TA.=FB+0+NB"T"BUFL + 100004/ + U + FB + .TA. + NB + .ASCII /"Z"/ + 100400+NB+1/ .TB.=FB A + R NB, .TB. .TB.=.TB.+0+BUFL + .ASCII /"Z"/ + .TA./ + T PAGEND + + /FB IS THE ADDRESS OF THE FIRST BUFFER ON THE PAGE + /NB IS THE NUMBER OF BUFFERS BETWEEN THIS PAGE AND THE NEXT + /FORMAT OF SPAR: + /HI 7 BITS = -(NB+1) + /LO 9 BITS = LO 9 BITS OF FB + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 19 IMP,3050,IMP 7:20 PM 9/16/1973 + + 104/ + / CONSTANTS - THESE FIRST FEW MUST NOT MOVE + LEV CON +00104 023033 C DDSAI: DDSA /DDT S.A. START ADDRESS +00105 003050 C VERS: .VERS. /VERSION NUMBER +00106 C MINE: BSS 1 /MY IMP NUMBER + /TIME CONSTANTS IN TERMS OF 640 MS TICKS +00107 177721 C M30SEC: -30SEC /30 SECONDS +00110 177704 C PTICKS: -PTCK /ROUTING PROPAGATION TIME +00111 C ADDRET: BSS 1 /CHKSM ADDER RETURN +00112 100000 C SIGN: 100000 +00113 000000 C ZERO: 0 +00114 000001 C ONE: 1 +00115 000002 C TWO: 2 +00116 000003 C THREE: 3 +00117 000004 C FOUR: 4 +00120 000007 C SEVEN: 7 +00121 177777 C MINUS1: -1 +00122 177776 C MINUS2: -2 +00123 177775 C MINUS3: -3 +00124 177774 C MINUS4: -4 +00125 177773 C MINUS5: -5 +00126 177772 C MINUS6: -6 +00127 177773 C MICH: -CH +00130 000004 C PLNH: NH +00131 177770 C MITH: -TH + MIN100: +00132 177700 C MINIMP: -NIMP +00133 000000 C RSFLAG: 0 /FLAG TO DETECT WDT AND RELOADS + /0=NONE, 1=RESTART, 2=RELOAD, 3=WDT, 4=POWER FAIL + LEV VAR +00134 V PRIM: BSS 1 /PRIORITY INTERRUPT MASK + + /NCC OPERATIONS LOCATIONS 135-157 MUST NOT MOVE! + LEV CON + DEFPLC [DDT STAND ALONE ENTRY] +00135 102104 C DDT: JMP DDSAI I +00136 000000 C TIPRSF: 0 /ASSEMBLE IN A ZERO + DEFPLC [NICE-STOP AND RELOAD FLAG] +00137 C SW3FG: BSS 1 /ZERO=NICE STOP, THEN RELOAD + />0=SPECIFIC LINE + DEFPLC [NICE-STOP AND RESTART FLAG] +00140 C NRSTF: BSS 1 /ZERO=NICE STOP, THEN RESTART + /ONE=VDH RESTART + DEFPLC [HOST & MODEM INTERFACE CONTROL] +00141 C HTPAR: BSS 1 /MODEM TEST FLAG + DEFPLC [HOST INTERFACE TEST ENABLE AND TEST WORD] +00142 C HLNM: BSS 1 /# OF INTERFACE BEING TESTED +00143 177400 C HL2WD: 177400 /SECOND WORD OF DATA - ONLY LEFT HA + DEFPLC [VDH RESTART FLAG] +00144 000000 C VDHRSF: 0 /SET NON-ZERO TO RESTART VDH + DEFPLC [SAT RESTART FLAG] +00145 000000 C SATRSF: 0 + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 20 IMP,3050,IMP 7:20 PM 9/16/1973 + + PG0FIX=160 /START OF 2ND INVARIANT AREA + .TA.=. + 100002/ .TA. PG0FIX + .ASCII /"Z"/ PG0FIX/ + LEV VAR + ZEROB: /START ZEROING HERE + DEFPLC [NEIGHB] + /USED BY [M2I,TSK,BCK] +00160 V NEIGHB: BSS CH /IMP NUMBER OF ADJACENT IMP + DEFPLC [RUT] + /USED BY [H2I,T.O,TSK,BCK] +00165 V RUT: BSS NIMP /ROUTE USE TABLE + DEFPLC [SLT] + /USED BY [M2I,I2M,T.O,BCK] +00265 V SLT: BSS CH /SEND LINE TEST (USED FOR RELOAD [ + + QUEUEB: /QUEUE START POINTERS + /MUST PRECEDE COUNTA + /USED BY [I2H,TSK] +00272 V SHQ: BSS TH /REG HOST +00302 V SHPQ: BSS TH /PRI HOST + /USED BY [I2M,T.O,TSK] +00312 V SMQ: BSS CH /REG MODEM +00317 V SMPQ: BSS CH /PRI MODEM + /USED BY FRE +00324 V FREE: BSS 1 /FREE BUFFERS + /USED BY [TSK,BCK] +00325 V TTF: BSS 1 /FREE TRACE BLOCKS + /USED BY [T.O,TSK] +00326 V RASF: BSS 1 /FREE REASSEMBLY BLOCKS +00327 V MESSTK: BSS 1 /STACK OF COMPLETE REG MESSAGES + /USED BY [M2I,H2I,TSK,BCK] +00330 V STQ: BSS 1 /TASK + /USED BY [T.O,TSK,BCK] +00331 V SRQ: BSS 1 /REPLY,REROUTE,DEST DEAD + /USED BY [I2H,H2I,T.O.TSK,BCK] +00332 V SHWQ: BSS NH+1 /HOST WORD +00337 V SHBQ: BSS 1 /HOST ONE WORD BUFFERS + /USED BY [T.O,TSK] +00340 V SHRQ: BSS 1 /REASSEMBLY BLOCKS + /USED BY [TSK,BCK] +00341 V STRQ: BSS 1 /TRACE BLOCKS + /USED BY [ALL] +00342 V DIAGQ: BSS 1 /DIAG PACKET QUEUE + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 21 IMP,3050,IMP 7:20 PM 9/16/1973 + + QUEUEE: /QUEUE END POINTERS + /USED BY [I2H,TSK] +00343 V EHQ: BSS TH +00353 V EHPQ: BSS TH + /USED BY [I2M,T.O,TSK] +00363 V EMQ: BSS CH +00370 V EMPQ: BSS CH +00375 V BSS 4 /SPARE + /USED BY [M2I,H2I,TSK,BCK] +00401 V ETQ: BSS 1 + /USED BY [T.O,TSK,BCK] +00402 V ERQ: BSS 1 + /USED BY [I2H,H2I,T.O,TSK,BCK] +00403 V EHWQ: BSS NH+1 +00410 V BSS 4 /SPARE + + QUEUEL=QUEUEE-QUEUEB + /USED BY [TSK,BCK] +00414 V TTO: BSS 1 /TRACE TABLE OVERFLOW + /USED BY ALL +00415 V TIME: BSS 1 /TIME IN FAST T1CKS + /USED BY [I2H,T.O,TSK] +00416 V TIMES: BSS 1 /TIME IN SLOW TICKS + /USED BY [T.D,BCK] +00417 V SYNC: BSS 1 /TIME FOR STAT ROUTINES + /USED BY [M2I,T.O] +00420 V THD: BSS 1 /CHANNEL TO MAX NO IMP + /USED BY [I2M,TSK] +00421 V SIHY: BSS CH /SEND I HEARD YOU IF NOT ZERO + /USED BY [T.O,TSK] +00426 V LAC: BSS CH /LINE ALIVE COUNT + /USED BY [M2I,T.O,TSK] +00433 V LINE: BSS CH /LINE ALIVE-DEAD STATUS + /USED BY [I2M,T.O,TSK] +00440 V NONE: BSS CH /MODEM IDLE IF ZERO + /NEGATIVE= -(M30SEC-NO OF SLOW TICKS SINCE LAST OUTPUT) +00445 V SNULL: BSS CH /SEND NULL PKT IF NON-ZERO + /USED 5Y [M2I,T.O,TSK] +00452 V LUUP: BSS 1 /NON-ZERO=SOME MODEM IS LOOPED + /USED BY [H2I,TSK,BCK] + TSKFLG: /TASK-HOST COMMUNICATION + DEFPLC [HILO] +00453 V HILO: BSS TH /RETURN ADDRESSES WHERE HI LEFT OFF +00463 V BSS BH /0=NO ACTION, 1=NACK, 2=ACK + /USED BY BCK +00471 V BSS 1 /TO PRESERVE P0 LOCATIONS +00472 V DDTI: BSS 1 /DDT INTERRUPT FLAG +00473 V OVRDF: BSS 1 /SS4 IS OVERRIDDEN IF THIS IS NON, + /USED BY [TTY,BCK] +00474 V TTFG: BSS 1 /TTY COMMUNICATION SWITCH + /USED BY VD5 +00475 V VD.OT: BSS 1 /VDH TYPE OF OUTPUT FLAG + /USED BY T.O +00476 V VD.RDY: BSS 1 /NON-ZERO=VDH READY LINE FLAPPED + /USED BY [I2H,T.O,TSK,BCK] +00477 V RALLCF: BSS 1 /RALLY COMMUNICATION FLAG FOR PUT-G + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 22 IMP,3050,IMP 7:20 PM 9/16/1973 + + /USED BY MSK +00500 V IHM: BSS 1 /IH MASK +00501 V HIM: BSS 1 /HI MASK +00502 V MOM: BSS 1 /MODEM OUT MASK + /USED BY [T.O,I2H(OWP)] +00503 V WDTIME: BSS 1 /SOFTWARE W.D.T. + /USED BY [H2I,I2H.T.O,TSK,BCK] +00504 V HIHD: BSS TH /HOST STATUS + HSTUP=0 /HOST IS UP + HSTGDN=1 /GOT A HOST-GOING-DOWN MESSAGE + HSTTRD=2 /HOST WAS TARDY IN ACCEPTING AN IMP MESSAGE + HSTOFF=3 /HOST READY LINE IS DOWN + HSTIDN=4 /IMP IS COMING UP OR GOING DOWN + /USED BY TSK +00514 V THIS: BSS 1 /CURRENT TASK BUFFER + /USED BY FRE +00515 V TWDP: BSS 1 /SECOND WORD IN TWO WORD PUT + /USED BY I2H +00516 V TWDG: BSS 1 /SECOND WORD IN TWO WORD GET + + COUNTA: /ADDITIVE COUNTS - KEEP IN ORDER + /USED BY [I2H,TSK] +00517 V NHA: BSS TH /REG HOST QUEUE +00527 V BSS TH /PRI HOST QUEUE + /USED BY FRE +00537 V NFA: BSS 1 /FREE LIST + /USED BY [M2I,I2M,T.O,TSK] +00540 V NSFA: BSS 1 /STORE-AND-FORWARD COUNT + /USED BY [I2H,T.O,TSK] +00541 V NREA: BSS 1 /REASSEMBLY COUNT + /USED BY [T.O,TSK,5CK] +00542 V NALA: BSS 1 /ALLOCATE COUNT + + COUNTS: /SUBTRACTIVE COUNTS + /USED BY [I2H,TSK] +00543 V NHS: BSS TH +00553 V BSS TH + /USED BY FRE +00563 V NFS: BSS 1 + /USED BY [M2I,I2M,T.O,TSK] +00564 V NSFS: BSS 1 + /USED BY [I2H,T.O,TSK] +00565 V NRES: BSS 1 + /USED BY [T.O,TSK,BCK] +00566 V NALS: BSS 1 + COUNTL=COUNTS-COUNTA + + /USED BY [BCK] +00567 V VDHUPF: BSS 1 /VDH UP/DOWN FLAG + ZEROE: + ZEROL=ZEROE-ZEROB + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 23 IMP,3050,IMP 7:20 PM 9/16/1973 + + LEV CON +00570 000004 C MINF: CH-1 /MIN NUMBER OF FREE BUFFERS +00571 C MAXS: BSS 1 /MAX NUMBER OF S/F PACKETS +00572 C MAXR: BSS 1 /MAX NUMBER OF REASSEMBLY PACKETS +00573 C MAXSI: BSS 1 /S&F LIMIT USED BY MODEM TASK +00574 C SW1: BSS MAXSTAT /ADDRES OF STAT GATHERING SUBRS + +00622 032030 C I2MTAB: I2MB0 /START ADDR OF BLOCK OF CHANNEL PNT +00623 032040 C I2MB1 +00624 032050 C I2MB2 +00625 032060 C I2MB3 +00626 032070 C I2MB4 + LEV VAR +00627 V I2MEND: BSS CH /END ADDRESS OF EACH BLOCK +00634 V I2MNXT: BSS CH /PKT PNTR FOR LATEST OUTPUT + /0=ROUTE,NULL,OR NO OUTPUT, SIGN ON=ACK RECEIVED WHILE PKT O + DEFPLC [TSEX - TRANSMIT ODD-EVEN BITS] +00641 V TSEX: BSS CH /ODD-EVEN BIT TO USE FOR NEXT OUTF + DEFPLC [RSEX - RECEIVE ODD-EVEN BITS] +00646 V RSEX: BSS CH /COMP OF ODD-EVEN BIT WE EXPECT NEX + /USED BY [M2I,TSK] +00653 V CHFREE: BSS CH +00660 V RST.O: BSS 1 /PTR TO RM OUTPUT AREA +00661 V RST.F: BSS 1 / " " " FREE " +00662 V RST.N: BSS 1 / " " " NEW " +00663 V RST.C: BSS 1 / " " " COMPARE " + + LEV CON /ADDRESS CONSTANTS +00664 013210 C JAM: GAM /GIVE A WORD FROM FAKE HOST TO IMP +00665 003234 C DOZE: BKX /JAM WAIT +00666 017347 C SUCK: SUC /GET A WORD FOR FAKE HOST FROM IMP +00667 003240 C WAIT: BKW /SUCK WAIT +00670 015371 C OWP: OWPE /ENTRY INTO ONE WORD PUT +00671 005373 C FLUSHI: FLUSH /PNTR TO SUBR TO FREE BUFFER +00672 017343 C DODXA: .DODXA /ENTRY INTO DO DXA SUBROUTINE + DEFPLC [HOST SIMULATOR FLAG] +00673 000000 C HSFG: 0 /NON-ZERO = START UP HOST SIMULATOR + + LEV VAR +00674 V MP: BSS 1 /MODEM-TO-IMP CURRENT MODEM NO +00675 V HIP: BSS 1 /HOST-TO-IMP CURRENT HOST NO +00676 V IHP: BSS 1 /IMP-TO-HOST CURRENT HOST NO + LEV CON +00677 053333 C HIXX: HISP 0 X /HOST-TO-IMP INDEXED SAVE PNTR +00700 056155 C IHXX: IHSP 0 X /IMP-TO-HOST INDEXED SAVE PNTR + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 24 IMP,3050,IMP 7:20 PM 9/16/1973 + + TIPCON=745 + .TA.=. + 100002/ .TA. TIPCON + .ASCII /"Z"/ + + /LINKS TO TIP PROGRAM + TIPHST=2 /THE TIP TAKES THE HOST 2 SLOT + TIPBKG=40001 + TIPVER=40000 + + TIPCON/ +00745 022404 C HLTNCC: HLTWRD /PNTR TO HALT REPORTING SUBR +00746 000000 C HLTLOC: 0 /PC OF LAST HALT +00747 C HLTA: BSS 1 /A REG AT LAST HALT +00750 C HLTX: BSS 1 /X REG AT LAST HALT + 8PKTS: /NO OF PKTS PER MESSAGE + CMINPL: /MIN PKT LENGTH +00751 000010 C TEN: 10 0"A"MINPL +00752 000077 C C77: 77 +00753 000100 C C100: 100 +00754 C BSS 9. /SOME ROOM FOR TIP CONSTANTS +00765 000000 C TPOPEN: 0 /COUNT OF NO OF OPEN CONNECTIONS ON +00766 016177 C IHLSTP+TIPHST /MINUS IF LAST IMP-TO-TIP PKT +00767 021664 C TIPSKP /SKP IF TIP UP, NOP IF TIP DOWN +00770 C TIPLNK: BSS 1 /IMP-TO-TIP DMC DUTPUT PNTR +00771 C BSS 1 /IMP-IO-TIP OMC OUTPUT END PNTR +00772 C BSS 1 /TIP-TO-IMP DMC INPUT PNTR +00773 C BSS 1 /TIP-TO-IMP DMC INPUT END PNTR +00774 000000 C 0 /(IMP-TO-TIP PKT RNTR) +00775 013315 C EMFH+TIPHST /SKP IF LAST TIP-TO-IMP PKT, ELSE +00776 013141 C HITT+TIPHST /TIP-TO-IMP INTERFACE TIMER +00777 C BSS 1 /LOC 777 USED BY RELOAD CODE + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 25 IMP,3050,IMP 7:20 PM 9/16/1973 + + + /WATCHDOG TIMER AND POWER FAIL ROUTINES + + /THESE 2 INSTRS FOLLOW A COMPUTED SKS MODEM ERROR IN PAGE 0 + LEV WDI +01000 003111 0 JMP LD10 +01001 003031 0 JMP WDLUP +01002 001177 0 WDC4: WDT1 +01003 003021 0 JMP WDTM2 /START HERE TO LOAD FROM THE NET +01004 003022 0 JMP WDLOD /START HERE TO LOAD FROM A LINE + + DEFPLC [HOST34 SWITCH] +01005 0 HOST34: BSS 1 /MEANING OF BITS 1&2 FOLLOWS + /0 FOR 5 MODEMS + />0 FOR 4 MODEMS, 3 HOSTS + /<0 FOR 3 MODEMS, 4 HOSTS + /USE >0 FOR TIP/MLC + /BIT 16 ZERO MEANS PAGE 27 IS BUFFERS + /BIT 16 NON-ZERO MEANS PAGE 27 IS NOT TO BE OVERLAID WITH BU] + /VDHF INDICATES WHETHER VDH CODE IS ACTUALLY PRESENT + +01006 0 BSS 3 /FOR COMPATIBILITY WITH IMPLOD 2513 + + /** THIS IS THE CRITICAL CODE WHICH MUST NOT CHANGE ** + /** BOTH LOCATION AND CONTENTS MUST STAY CONSTANT ** + /** IN ORDER THAT ONE IMP VERSION MAY RELOAD ANOTHER ** +01011 010045 0 LWAIT: STA 45 /**THIS IS WHERE THE IMP WAITS +01012 024045 0 IRS 45 /**AFTER SENDING A REQUEST FOR CORE +01013 003012 0 JMP .-1 /**THIS CODE IS OVERLAID WITH THE +01014 024044 0 IRS 44 /**NEW CORE IMAGE WHILE IT IS RUN: +01015 003011 0 JMP LWAIT /**SO IT MUST BE INVARIANT ITSELF +01016 003102 0 JMP LD7 + + CORELO=60 + COREHI=33000 + /CORE IMAGE IS LOADED STARTING AT CORELO + /AND ENDING AT COREHI-1 + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 26 IMP,3050,IMP 7:20 PM 9/16/1973 + + WDTM: +00062 001017 0 WDTIL/ WDTM +01017 000000 0 WDTM/ INT WDI +01020 024133 0 IRS RSFLAG +01021 140040 0 WDTM2: CRA /ENTER HERE FOR RANDOM RELOAD + LEV BCK /COME HERE FROM NICE STOP CODE +01022 001001 7 WDLOD: INH ALL /ENTER HERE WITH LINE # (1-4) IN AC +01023 030040 7 0 CLKON +01024 017560 7 0 SUB (1) +01025 041577 7 0 ALS 1 +01026 010047 7 0 STA 47 +01027 005005 7 0 LDA HOST34 /SAVE HOST CONFIGURATION +01030 010046 7 0 STA 46 /SHOULD BE 51 + /LDA RSFLAG /SAVE RESTART-RELOAD FLAG + /STA 43 +01031 005037 7 0 WDLUP: LDA LD8 +01032 101000 7 0 NOP /FOR FILLER +01033 000201 7 0 IAB +01034 005561 7 0 LDA (-23) /DON'T LET CLOCK INTS IN +01035 000011 7 0 DXA +01036 003154 7 0 JMP CLEA +01037 001040 7 0 LD8: .+1 +01040 004047 7 0 LDA 47 +01041 101400 7 0 SMI /RANDOM RELOAD? +01042 003046 7 0 JMP LD11 /NO +01043 131040 7 0 RDCLOK /YES +01044 003043 7 0 JMP .-1 +01045 007562 7 0 ANA (6) /GET TWO BIT NUMBER +01046 010000 7 0 LD11: STA 0 +01047 005563 7 0 LDA (SENDC) /SET UP REQUEST FOR CORE +01050 050032 7 0 STA M1OTBP X +01051 015564 7 0 ADD (4) +01052 050033 7 0 STA M1OTBP+1 X +01053 005565 7 0 LDA (CORELO 0 I) /SET UP CORE IMAGE BOUNDS +01054 050020 7 0 STA M1INBP X +01055 005566 7 0 LDA (COREHI 0 I) +01056 050021 7 0 STA M1INBP+1 X +01057 143137 7 0 JMP LDT XI +01060 030071 7 0 LD1: M1OUT /SEND OUT REQUEST FOR CORE +01061 003213 7 0 JMP LD12 +01062 003073 7 0 JMP LD5 +01063 030072 7 0 LD2: M2OUT +01064 003213 7 0 JMP LD12 +01065 003073 7 0 JMP LD5 +01066 030073 7 0 LD3: M3OUT +01067 003213 7 0 JMP LD12 +01070 003073 7 0 JMP LD5 +01071 030074 7 0 LD4: M4OUT +01072 003213 7 0 JMP LD12 +01073 005567 7 0 LD5: LDA (-3000.) +01074 010044 7 0 STA 44 + /JMP LWAIT + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 27 IMP,3050,IMP 7:20 PM 9/16/1973 + + /NOP /TO KEEP LOC OF LD6 CONSTANT + /THE NEXT 5 REGS CAN COME OUT AFTER COMPATIBILITY WITH 2634 +01075 010045 7 0 LD6: STA 45 +01076 024045 7 0 IRS 45 +01077 003076 7 0 JMP .-1 +01100 024044 7 0 IRS 44 +01101 003075 7 0 JMP LD6 +01102 044020 7 0 LD7: LDA M1INBP X +01103 013566 7 0 ERA (COREHI 0 I) +01104 100040 7 0 SZE +01105 003031 7 0 JMP WDLUP +01106 045140 7 0 LDA LDERR X +01107 010777 7 0 STA 777 +01110 002777 7 0 JMP 777 + +01111 031040 7 0 LD10: CLKOFF +01112 004046 7 0 LDA 46 /SHOULD BE 51 /RESTORE HOST C +01113 011005 7 0 STA HOST34 + /LDA 43 /RESTORE RESTART-RELOAD FLAG + /STA RSFLAG +01114 073570 7 0 LDX (56-104) /SAVE INTERRUPT ENTRANCES +01115 044104 7 0 LDA 104 X +01116 111571 7 0 STA (30000 0 X) I +01117 024000 7 0 IRS 0 +01120 003115 7 0 JMP .-3 +01121 005127 7 0 LDA LD9 +01122 000201 7 0 IAB +01123 005572 7 0 LDA (-21) +01124 070042 7 0 AMIMLC +01125 005573 7 0 LDA (-1) +01126 003154 7 0 JMP CLEA +01127 001130 7 0 LD9: .+1 +01130 073570 7 0 LDX (56-104) /RESTORE INTERRUPT ENTRANCES +01131 105571 7 0 LDA (30000 0 X) I +01132 050104 7 0 STA 104 X +01133 024000 7 0 IRS 0 +01134 003131 7 0 JMP .-3 +01135 024133 7 0 IRS RSFLAG +01136 103574 7 0 JMP (INIT) I +01137 001060 7 0 LDT: LD1 +01140 070471 7 0 LDERR: M1ERR +01141 001063 7 0 LD2 +01142 070472 7 0 M2ERR +01143 001066 7 0 LD3 +01144 070473 7 0 M3ERR +01145 001071 7 0 LD4 +01146 070474 7 0 M4ERR + +01147 040001 7 0 SENDC: 40001 +01150 100001 7 0 SNDCOR 0 LINETS +01151 000000 7 0 0 +01152 000000 7 0 0 +01153 040001 7 0 -[40001 0 SNDCOR LINETS -3] + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 28 IMP,3050,IMP 7:20 PM 9/16/1973 + +01154 170120 7 0 CLEA: SMK 120 + LEV BCK LCK ALL +01155 073575 7 0 LDX (STDIL-0-TASKIL) +01156 005002 7 0 LDA WDC4 +01157 050104 7 0 STA TASKIL+1 X /RESET ALL INTERRUPT ENTRANCES +01160 024000 7 0 IRS 0 +01161 003157 7 0 JMP .-2 +01162 073576 7 0 LDX (-2) /MUST UNPATCH TWICE 1? +01163 030171 7 0 WDT2: M1UNXP +01164 030172 7 0 M2UNXP +01165 030173 7 0 M3UNXP +01166 030174 7 0 M4UNXP +01167 030175 7 0 M5UNXP +01170 030470 7 0 HUNXPT: H1UNXP /THESE MUST BE IN ORDER11 +01171 030460 7 0 H2UNXP +01172 030450 7 0 H3UNXP +01173 030451 7 0 H4UNXP +01174 024000 7 0 IRS 0 +01175 003163 7 0 JMP WDT2 +01176 021177 7 0 JST WDT1 /AND WAIT + +01177 000000 7 0 WDT1: 0 /NULL INTERRUPT ENTRY +01200 000011 7 0 DXA /ALL INTERRUPTS COME HERE TO DIE +01201 003202 7 0 JMP . 1 +01202 000401 7 0 ENB BCK +01203 073577 7 LDX (0) +01204 024000 7 IRS 0 +01205 003204 7 JMP .-1 /WAIT 600 MS +01206 000201 7 IAB /5=>X +01207 026000 7 IMA 0 /0=>A +01210 170120 7 SMK 120 /NOW WE BLOCK ALL FUTURE INTERRUPTS + LEV WDI +01211 001001 0 INH ALL +01212 042000 0 JMP 0 X /GO TO LD8+1 +01213 005600 0 LD12: LDA (-533.) +01214 010044 0 STA 44 +01215 010045 0 LD13: STA 45 +01216 024045 0 IRS 45 +01217 003216 0 JMP .-1 +01220 024044 0 IRS 44 +01221 003215 0 JMP LD13 +01222 043223 0 JMP .+1 X +01223 030471 0 M1IN +01224 003073 0 JMP LD5 +01225 030472 0 M2IN +01226 003073 0 JMP LD5 +01227 030473 0 M3IN +01230 003073 0 JMP LD5 +01231 030474 0 M4IN +01232 003073 0 JMP LD5 + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 29 IMP,3050,IMP 7:20 PM 9/16/1973 + + LEV CON +01233 000001 C BITTAB: 1 /BITS FOR ACK AND MESSAGE STUFF +01234 000002 C 2 +01235 000004 C 4 +01236 000010 C 10 +01237 000020 C 20 +01240 000040 C 40 +01241 000100 C 100 +01242 000200 C SWCHB: 200 +01243 000400 C 400 +01244 001000 C 1000 +01245 002000 C 2000 + +01246 000010 C MBITS: 10 +01247 000004 C 4 +01250 000002 C 2 +01251 000001 C 1 + + SWDT: +00061 001252 C SWDTIL/ SWDT /SOFTWARE W-D-T INTERRUPT CALL + SWDT/ +01252 000000 0 INT WDI +01253 001001 0 INH ALL +01254 111601 0 STA (37775) I /SAVED A +01255 133602 0 STX (37776) I /SAVED X +01256 005252 0 LDA SWDT /IF NOT MEM PROTECT (MAY NEED TO BE +01257 111603 0 STA (37774) I /SAVED P/Y +01260 120062 0 JST WDTIL I + + RSTR: /POWER FAIL COMES HERE +00060 001261 0 PFIL/ RSTR +01261 000000 0 RSTR/ INT RSI +01262 030026 0 WDT /POKE WATCHDOG TIMER SO WE DON'T ( +01263 140040 0 CRA +01264 010324 0 STA FREE /COPY SOME PROGRAM INTO PAGE 0 +01265 005604 0 LDA (3) +01266 010133 0 STA RSFLAG /SO THAT RESTART WILL INDICATE POWE +01267 005273 0 LDA RST2A /THESE ARE FOR WHEN THE POWER COMES +01270 010517 0 STA NHA +01271 073274 0 LDX RST3 +01272 002324 0 JMP FREE /GO LOCK UP THE MACHINE +01273 002000 0 RST2A: 2000 +01274 102517 0 RST3: JMP NHA I + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 30 IMP,3050,IMP 7:20 PM 9/16/1973 + + + /CORE DUMP TO PDP-1D AT BBN + /COPY EACH 100-WORD BLOCK OF CORE INTO CORBUF=>CORBUF+77 + /SEND BLOCK 1 FROM ITSELF, THEN 2-277 (OR HIGHER), THEN BLOC. + /USE CORBUF-4=>CORBUF-1 AS HEADER AND TEMP STORE + CORBUF=100 + CORCNT=CORBUF-4 /ACKH - USE AS TEMP + CORHED=CORBUF-3 /HEAD - FIXED HEADER, GOES AS ROUTI1 + CORPUT=CORBUF-2 /HEAD1 - USE AS TEMP + CORGET=CORBUF-1 /HEAD2 - FIRST LOCATION OF BLOCK BE + /HEAD3 THRU BUFE-1 ARE 100 DATA WOR] + + LEV BCK + DEFPLC [CORE DUMP] +01275 001001 7 CORE: INH ALL +01276 000013 7 0 EXA +01277 030451 7 0 H4UNXP +01300 030551 7 0 H4ENAB +01301 030251 7 0 H4FOUT +01302 000201 7 0 IAB /ENTER WITH LINE NO 1-5 IN AC +01303 073605 7 0 LDX (-104) +01304 044200 7 0 LDA CORCNT+104 X +01305 051551 7 0 STA CORSAV+104 X /SAVE CORBUF-4=>CORBUF+77 +01306 024000 7 0 IRS 0 +01307 003304 7 0 JMP .-3 +01310 024000 7 0 IRS 0 +01311 003310 7 0 JMP .-1 /WAIT FOR READY LINE +01312 000201 7 0 IAB +01313 041577 7 0 ALS 1 +01314 010000 7 0 STA 0 /SAVE 2*MODEM NO +01315 131041 7 0 RDIMPN +01316 003315 7 0 JMP .-1 +01317 013606 7 0 ERA (BBNIMP) +01320 101040 7 0 SNZ /ARE WE THE BBN IMP? +01321 010000 7 0 STA 0 /YES, THEN WE SEND CORE OUT TO HOST +01322 005607 7 0 LDA (RUTDMP 0 LINETS) +01323 010075 7 0 STA CORHED /SET UP FIXED HEADER +01324 005610 7 0 LDA (CORBUF) +01325 010077 7 0 STA CORGET /SET UP BLOCK TO COPY FROM + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 31 IMP,3050,IMP 7:20 PM 9/16/1973 + +01326 004000 7 0 CORNXT: LDA 0 +01327 100040 7 0 SZE /ARE WE SENDING TO A HOST? +01330 005611 7 0 LDA (CORPUT-CORCNT) /NO, NEED FULL HEADER FC +01331 015612 7 0 ADD (CORCNT) /NEED ONLY LEADER TO HOST +01332 050030 7 0 STA H4OTBP X /SET UP DMC PNTRS +01333 005613 7 0 LDA (CORBUF+77) +01334 050031 7 0 STA H4OTBP+1 X +01335 005610 7 0 LDA (CORBUF) +01336 010076 7 0 STA CORPUT /SET UP BLOCK TO COPY INTO +01337 140407 7 0 TCA +01340 010074 7 0 STA CORCNT /SET UP COPY COUNT +01341 004077 7 0 LDA CORGET +01342 100040 7 0 SZE /ARE WE DOING BLOCK 0? +01343 003347 7 0 JMP CORCOP /NO +01344 024077 7 0 IRS CORGET /YES, START WITH REG 1 +01345 024076 7 0 IRS CORPUT /SINCE CORBUF HAS HIGHEST CORE BLOC1 +01346 024074 7 0 IRS CORCNT +01347 104077 7 0 CORCOP: LDA CORGET I /DO THE COPY +01350 110076 7 0 STA CORPUT I +01351 024077 7 0 IRS CORGET +01352 024076 7 0 IRS CORPUT +01353 024074 7 0 IRS CORCNT +01354 003347 7 0 JMP CORCOP +01355 043356 7 0 JMP COROCP X /DO OCP OUTPUT + +01356 030251 7 0 COROCP: H4FOUT +01357 003371 7 0 JMP CORWAT +01360 030071 7 0 M1OUT +01361 003371 7 0 JMP CORWAT +01362 030072 7 0 M2OUT +01363 003371 7 0 JMP CORWAT +01364 030073 7 0 M3OUT +01365 003371 7 0 JMP CORWAT +01366 030074 7 0 M4OUT +01367 003371 7 0 JMP CORWAT +01370 030075 7 0 M5OUT + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 32 IMP,3050,IMP 7:20 PM 9/16/1973 + +01371 004077 7 0 CORWAT: LDA CORGET +01372 013610 7 0 ERA (CORBUF) +01373 101040 7 0 SNZ /DID WE JUST SEND BLOCK 0? +01374 003426 7 0 JMP COREND /YES +01375 005614 7 0 LDA (100000) +01376 010074 7 0 STA CORCNT +01377 024074 7 0 IRS CORCNT +01400 003377 7 0 JMP .-1 /WAIT +01401 030026 7 0 WDT /JUST IN CASE +01402 004077 7 0 LDA CORGET +01403 017615 7 0 SUB (30000) +01404 100400 7 0 SPL /HAVE WE DONE FIRST 12K YET? +01405 003326 7 0 JMP CORNXT /NO, KEEP GOING +01406 104077 7 0 LDA CORGET I /YES, NOW WE MUST CHECK FOR PRESENC1 +01407 140401 7 0 CMA /ABOVE 12K MINIMUM +01410 126077 7 0 IMA CORGET I +01411 122077 7 0 CAS CORGET I +01412 100000 7 0 SKP +01413 003416 7 0 JMP .+3 /NO TRANSITION, NO MORE MEMORY +01414 110077 7 0 STA CORGET I /RESTORE TEST CELL +01415 003326 7 0 JMP CORNXT /AND KEEP GOING +01416 140040 7 0 CRA +01417 026077 7 0 IMA CORGET /RESET PTR TO BLOCK 0 +01420 010100 7 0 STA CORBUF /SAVE HIGHEST CORE BLOCK IN CORBUF +01421 131041 7 0 RDIMPN +01422 003421 7 0 JMP .-1 +01423 012100 7 0 ERA CORBUF /PUT IMP NO IN RIGHT PART OF REG C +01424 010100 7 0 STA CORBUF +01425 003326 7 0 JMP CORNXT /GO BACK AND SEND BLOCK 0 + +01426 073616 7 0 COREND: LDX (-4) +01427 045451 7 0 LDA CORSAV+4 X +01430 050200 7 0 STA CORCNT+CORBUF+4 X +01431 024000 7 0 IRS 0 /RESTORE CORBUF-4=>CORBUF-1 IN THE +01432 003427 7 0 JMP .-3 +01433 024000 7 0 IRS 0 +01434 003433 7 0 JMP .-1 /WAIT +01435 073605 7 0 LDX (-104) +01436 045551 7 0 LDA CORSAV+104 X +01437 050200 7 0 STA CORCNT+104 X /RESTORE CORBUF-4=>CORBUF +01440 024000 7 0 IRS 0 +01441 003436 7 0 JMP .-3 +01442 030026 7 0 WDT +01443 000000 7 0 HLT /DONE +01444 003442 7 0 JMP .-2 + CORSAV: /SAVE SPACE FOR CORBUF-4=>CORBUF+77 + /NEXT 104 LOCS USED BY COR DMP + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 33 IMP,3050,IMP 7:20 PM 9/16/1973 + + /THIS CODE IS THE ADD CHAIN WHICH COMPUTES PACKET CHECKSUMS + /IT IS RE-ENTRANT AND IS CALLED BY DIFFERENT INTERRUPTS + LEV ALL +01445 054115 0 ADDTOP: ADD BUFE+4 X +01446 054114 0 ADD BUFE+3 X +01447 054113 0 ADD BUFE+2 X +01450 054112 0 ADD BUFE+1 X +01451 054111 0 ADD BUFE X +01452 054110 0 ADD BUFE-1 X +01453 054107 0 ADD DATA+76 X +01454 054106 0 ADD DATA+75 X +01455 054105 0 ADD DATA+74 X +01456 054104 0 ADD DATA+73 X +01457 054103 0 ADD DATA+72 X +01460 054102 0 ADD DATA+71 X +01461 054101 0 ADD DATA+70 X +01462 054100 0 ADD DATA+67 X +01463 054077 0 ADD DATA+66 X +01464 054076 0 ADD DATA+65 X +01465 054075 0 ADD DATA+64 X +01466 054074 0 ADD DATA+63 X +01467 054073 0 ADD DATA+62 X +01470 054072 0 ADD DATA+61 X +01471 054071 0 ADD DATA+60 X +01472 054070 0 ADD DATA+57 X +01473 054067 0 ADD DATA+56 X +01474 054066 0 ADD DATA+55 X +01475 054065 0 ADD DATA+54 X +01476 054064 0 ADD DATA+53 X +01477 054063 0 ADD DATA+52 X +01500 054062 0 ADD DATA+51 X +01501 054061 0 ADD DATA+50 X +01502 054060 0 ADD DATA+47 X +01503 054057 0 ADD DATA+46 X +01504 054056 0 ADD DATA+45 X +01505 054055 0 ADD DATA+44 X +01506 054054 0 ADD DATA+43 X +01507 054053 0 ADD DATA+42 X +01510 054052 0 ADD DATA+41 X +01511 054051 0 ADD DATA+40 X + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 34 IMP,3050,IMP 7:20 PM 9/16/1973 + +01512 054050 0 ADD DATA+37 X +01513 054047 0 ADD DATA+36 X +01514 054046 0 ADD DATA+35 X +01515 054045 0 ADD DATA+34 X +01516 054044 0 ADD DATA+33 X +01517 054043 0 ADD DATA+32 X +01520 054042 0 ADD DATA+31 X +01521 054041 0 ADD DATA+30 X +01522 054040 0 ADD DATA+27 X +01523 054037 0 ADD DATA+26 X +01524 054036 0 ADD DATA+25 X +01525 054035 0 ADD DATA+24 X +01526 054034 0 ADD DATA+23 X +01527 054033 0 ADD DATA+22 X +01530 054032 0 ADD DATA+21 X +01531 054031 0 ADD DATA+20 X +01532 054030 0 ADD DATA+17 X +01533 054027 0 ADD DATA+16 X +01534 054026 0 ADD DATA+15 X +01535 054025 0 ADD DATA+14 X +01536 054024 0 ADD DATA+13 X +01537 054023 0 ADD DATA+12 X +01540 054022 0 ADD DATA+11 X +01541 054021 0 ADD DATA+10 X +01542 054020 0 ADD DATA+7 X +01543 054017 0 ADD DATA+6 X +01544 054016 0 ADD DATA+5 X +01545 054015 0 ADD DATA+4 X +01546 054014 0 ADD DATA+3 X +01547 054013 0 ADD DATA+2 X +01550 054012 0 ADD DATA+1 X +01551 054011 0 ADD DATA X +01552 054010 0 ADD HEAD3 X +01553 054007 0 ADD HEAD2 X +01554 054006 0 ADD HEAD1 X +01555 054005 0 ADD HEAD X +01556 054004 0 ADDBOT: ADD ACKH X +01557 102111 0 JMP ADDRET I /RETURN TO CALLING INTERRUPT ROUTIN + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 35 IMP,3050,IMP 7:20 PM 9/16/1973 + + +01560 000001 C LEV CON CONSTANTS +01561 177755 C +01562 000006 C +01563 001147 C +01564 000004 C +01565 100060 C +01566 133000 C +01567 172110 C +01570 177752 C +01571 070000 C +01572 177757 C +01573 177777 C +01574 002000 C +01575 177760 C +01576 177776 C +01577 000000 C +01600 176753 C +01601 037775 C +01602 037776 C +01603 037774 C +01604 000003 C +01605 177674 C +01606 000005 C +01607 000011 C +01610 000100 C +01611 000002 C +01612 000074 C +01613 000177 C +01614 100000 C +01615 030000 C +01616 177774 C +01777 000000 C 1777/ 0 /LOC 1777 USED IN SWCH CODE + /FOR MEM PROTECT TEST + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 36 IMP,3050,IMP 7:20 PM 9/16/1973 + + + /INITIALIZATION + LEV BCK +02000 120672 7 INIT: JST DODXA I RET BCK +02001 001001 7 INH INI +02002 140040 7 0 CRA +02003 170120 7 0 SMK INTM /LOCK OUT INTERRUPTS FOR INIT +02004 010134 7 0 STA PRIM +02005 026133 7 0 IMA RSFLAG +02006 141206 7 0 AOA +02007 111465 7 0 STA (RSFNCC) I /SET UP RSTART INDICATOR FOR NCC +02010 022114 7 0 CAS ONE /RESTART +02011 022116 7 0 CAS THREE /OR POWERFAIL (4) +02012 003202 7 0 JMP INIVDH /==>SEE IF VDH GETS RESTARTED +02013 101000 7 0 NOP / (MUST COME BEFORE ZEROING 0-AF +02014 140040 7 0 CRA +02015 010145 7 0 STA SATRSF +02016 010136 7 0 INIVDR: STA TIPRSF +02017 010765 7 0 STA TPOPEN +02020 073466 7 0 LDX (-MAXITB) /MUST PRECEDE ZEROING +02021 045346 7 0 INIT1: LDA ITBTIP+MAXITB X /SO THAT APPROPRIATE INT'I +02022 070042 7 0 AMIMLC /ENTRIES ARE CLEARED +02023 045316 7 0 LDA ITBIMP+MAXITB X +02024 151266 7 0 STA ITBLOC+MAXITB XI /INIT TIP-HOST3 LOCS +02025 024000 7 0 IRS 0 +02026 003021 7 0 JMP INIT1 +02027 073467 7 0 LDX (-MAXVDH) +02030 045361 7 0 LDA ITBNVD+MAXVDH X +02031 151374 7 0 STA ITBVDL MAXVDH XI +02032 024000 7 0 IRS 0 +02033 003030 7 0 JMP .-3 +02034 073470 7 0 LDX (-INITZN) /INIT THE ZERO STORAGE AREAS +02035 045221 7 0 INIT0: LDA INITZB+INITZN X +02036 011212 7 0 STA IT1 +02037 045226 7 0 LDA INITZL+INITZN X +02040 011213 7 0 STA IT2 +02041 140040 7 0 CRA /MUST PRECED QUEUE INIT +02042 111212 7 0 STA IT1 I +02043 025212 7 0 IRS IT1 +02044 025213 7 0 IRS IT2 +02045 003042 7 0 JMP .-3 +02046 024000 7 0 IRS 0 +02047 003035 7 0 JMP INIT0 +02050 010144 7 0 STA VDHRSF /VDH WILL NOT RESTART +02051 131041 7 0 RDIMPN +02052 003051 7 0 JMP .-1 +02053 010106 7 0 STA MINE /INIT MINE +02054 005471 7 0 LDA (NS1) +02055 111472 7 0 STA (NSRR) I + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 37 IMP,3050,IMP 7:20 PM 9/16/1973 + +02056 073473 7 0 LDX (-QUEUEL) +02057 005474 7 0 LDA (QUEUEB) /INIT QUEUE PNTRS +02060 050414 7 0 INIT3: STA QUEUEE+QUEUEL X +02061 141206 7 0 AOA +02062 024000 7 0 IRS 0 +02063 003060 7 0 JMP INIT3 +02064 005475 7 0 LDA (ZERO) +02065 010324 7 0 STA FREE +02066 105476 7 0 LDA (HOST34) I +02067 006115 7 0 ANA TWO +02070 100040 7 0 SZE +02071 004116 7 0 LDA THREE +02072 111477 7 0 STA (SATNO) I +02073 105476 7 0 LDA (HOST34) I +02074 006114 7 0 ANA ONE +02075 010000 7 0 STA 0 +02076 101040 7 0 SNZ +02077 010144 7 0 STA VDHRSF /JUST IN CASE +02100 100040 7 0 SZE +02101 005500 7 0 LDA (-CH 0 M.N) /SET VDHNO FOR VDH IMPS.. +02102 111501 7 0 STA (VDHNO) I /...0 FOR NON-VDH +02103 045405 7 0 LDA P36END X +02104 011445 7 0 STA SPAR+36-2 /SET UP END OF P36 FOR VDH OR NOT +02105 045407 7 0 LDA P37END X +02106 011446 7 0 STA SPAR+37-2 /SET UP END OF P37 AND BEYOND +02107 004115 7 0 LDA TWO /START COLLECTING BUFFERS ON P2 +02110 011212 7 0 STA IT1 +02111 073502 7 0 LDX (-PAGES+2) +02112 045447 7 0 INIT4: LDA SPAR+PAGES-2 X +02113 040167 7 0 LRS 9. /PICK UP NUMBER OF BUFFERS ON THI[ + /NOTE THAT NO MORE THAN 64 8UFFERS CAN BE CLAIMED PER ENTRY +02114 011213 7 0 STA IT2 +02115 005212 7 0 LDA IT1 /PICK UP PAGE NUMBER +02116 025212 7 0 IRS IT1 +02117 041167 7 0 LLS 9. /PICK UP START OF BUFFER STORAGE +02120 003126 7 0 JMP INIT6 + +02121 024537 7 0 INIT5: IRS NFA /COUNT ANOTHER FREE BUFFER +02122 026324 7 0 IMA FREE +02123 110324 7 0 STA FREE I /ADD TO FREE LIST +02124 004324 7 0 LDA FREE +02125 015503 7 0 ADD (BUFL) +02126 025213 7 0 INIT6: IRS IT2 /HAVE WE TAKEN ALL THE BUFFERS +02127 003121 7 0 JMP INIT5 /NO, MORE ON THIS PAGE +02130 024000 7 0 IRS 0 /YES, GO ON TO NEXT PAGE +02131 003112 7 0 JMP INIT4 + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 38 IMP,3050,IMP 7:20 PM 9/16/1973 + +02132 005504 7 0 LDA (4"T"CH) +02133 010571 7 0 STA MAXS +02134 010573 7 0 STA MAXSI +02135 140407 7 0 TCA +02136 014537 7 0 ADD NFA +02137 014751 7 0 ADD 8PKTS +02140 040575 7 0 ARS 3 +02141 041575 7 0 ALS 3 +02142 014115 7 0 ADD TWO +02143 010572 7 0 STA MAXR +02144 072122 7 0 LDX MINUS2 /INIT THE FREE REAS+TRACE LISTS +02145 045230 7 0 INIT7: LDA INIBLK+2 X +02146 011212 7 0 STA IT1 +02147 045232 7 0 LDA INIQUE+2 X +02150 151234 7 0 STA INISTR+2 XI +02151 011213 7 0 STA IT2 +02152 055236 7 0 INIT8: ADD INILNG+2 X +02153 111213 7 0 STA IT2 I +02154 011213 7 0 STA IT2 +02155 025212 7 0 IRS IT1 +02156 003152 7 0 JMP INIT8 +02157 140040 7 0 CRA +02160 111213 7 0 STA IT2 I +02161 024000 7 0 IRS 0 +02162 003145 7 0 JMP INIT7 +02163 004132 7 0 LDA MINIMP +02164 011212 7 0 STA IT1 +02165 072113 7 0 LDX ZERO +02166 021374 7 0 INIT9: JST MESINI /INIT TMESS,RMESS +02167 024000 7 0 IRS 0 +02170 025212 7 0 IRS IT1 +02171 003166 7 0 JMP INIT9 +02172 005505 7 0 LDA (TALLY) +02173 111506 7 0 STA (TALLYI) I +02174 073507 7 0 LDX (0 0-2"T"FH-BH) +02175 045465 7 0 INIT13: LDA TTOI+FH+FH+BH X +02176 111510 7 0 STA (DZTB+FH+FH+BH 0 X) I +02177 024000 7 0 IRS 0 +02200 003175 7 0 JMP INIT13 +02201 103511 7 0 JMP (INITNP) I + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 39 IMP,3050,IMP 7:20 PM 9/16/1973 + +02202 004567 7 0 INIVDH: LDA VDHUPF /PWR FAIL OR PLAIN RESTART +02203 010144 7 0 STA VDHRSF /THEN RESTART VDH IF IT WAS UP +02204 004145 7 0 LDA SATRSF +02205 140100 7 0 SSP +02206 010145 7 0 STA SATRSF +02207 004136 7 0 LDA TIPRSF +02210 140100 7 0 SSP /0=>0, -=>+ +02211 003016 7 0 JMP INIVDR + + LEV VAR +02212 V IT1: BSS 1 +02213 V IT2: BSS 1 + LEV CON +02214 000160 C INITZB: ZEROB +02215 032030 C I2MB0 +02216 032030 C TABZB +02217 030434 C PARAMT +02220 100063 C STDIL 0 I /IN CASE NON-EXA IMP RELOADS FROM +02221 177370 C INITZL: -ZEROL +02222 177730 C -[CH"T"NACH] +02223 176201 C -TABZL +02224 177740 C -PARAML +02225 177760 C STDIL-0-TASKIL + INITZN=INITZL-0-INITZB +02226 177771 C INIBLK: -NREAB+0+1 +02227 177771 C -NTRCB+0+1 +02230 033317 C INIQUE: REASQ +02231 032131 C TRACEQ +02232 000326 C INISTR: RASF +02233 000325 C TTF +02234 000014 C INILNG: REASL +02235 000013 C TRACEL + + +02236 C ITBLOC: BSS MAXITB +02266 C ITBIMP: BSS MAXITB +02316 C ITBTIP: BSS MAXITB + MAXVDH=11. +02346 C ITBNVD: BSS MAXVDH +02361 000001 C ITBVDL: REPEAT MAXVDH,JUNK +02362 000001 C +02363 000001 C +02364 000001 C +02365 000001 C +02366 000001 C +02367 000001 C +02370 000001 C +02371 000001 C +02372 000001 C +02373 000001 C + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 40 IMP,3050,IMP 7:20 PM 9/16/1973 + + LEV [INI,T.O] +02374 000000 0 MESINI: 0 +02375 005512 0 LDA (0 0 177777"X"MSTO1"X"MSTO2) +02376 111513 0 STA (TMESS 0 X) I +02377 005514 0 LDA (0 0 3"T"400) 0"A"MESSNO +02400 111515 0 STA (RMESS 0 X) I +02401 140040 0 CRA +02402 111516 0 STA (AMESS 0 X) I +02403 111517 0 STA (RALLY 0 X) I +02404 103374 0 JMP MESINI I + + LEV CON +02405 170067 C P36END: P36FB"A"777-[P36NB+1]"T"1000 +02406 171067 C P36FB"A"777-[P36NB]"T"1000 +02407 172075 C P37END: P37FB"A"777-[P37NB]"T"1000 +02410 177777 C VDHEND"A"777-[0+1]"T"1000 + +02411 C SPAR: BSS PAGES-2 /TABLE OF ENDS-OF-PAGES + /FORMAT IS HI 7 BITS = -(NUMBER OF BUFFS ON PAGE+1) + /LO 9 BITS = STARTING ADDRESS OF FIRST BUFFER + + /FAKE HOST OUTPUT (JAM) SLOTS IN DZTB +02447 025117 C TTOI: TTYI /FH0 (TTY) OUTPUT FROM IMP TO FH +02450 023066 C DOTI /FH1 (DDT) OUTPUT FROM IMP TO FH +02451 030477 C BTRE /FH2 (TRACE) OUTPUT FROM IMP TO FH +02452 030056 C STTI /FH3 (STAT) OUTPUT FROM IMP TO FH + /FAKE HOST INPUT (SUCK) SLOTS IN WTTB +02453 025310 C TTO0 /FH0 (TTY) INPUT TO IMP FROM FH +02454 024012 C DIN4 /FH1 (DDT) INPUT TO IMP FROM FH +02455 030414 C BEST /FH2 (PARAM CHANGE) INPUT TO IMP E +02456 030474 C STXY /FH3 (DISCARD) INPUT TO IMP FROM FH + /BACK HOST SLOTS IN SLTB +02457 004101 C BACK0 /BH0 (SEND RFNMS+ALLOCATES) +02460 004206 C BACK1 /BH1 (SEND INCOMPLETE TRANSMISSIONS +02461 004302 C BACK2 /BH2 (SEND GIVE BACKS) +02462 004347 C BACK3 /BH3 (RETRANSMIT FROM PPT) +02463 004356 C BACK4 /BH4 (SEND OUT-OF-RANGE REPLIES) + / (REROUTE DEAD LINE STUFF) + / (RETURN DESTINATION DEADS) +02464 004365 C BACK5 + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 41 IMP,3050,IMP 7:20 PM 9/16/1973 + +02465 003560 C LEV CON CONSTANTS +02466 177750 C +02467 177765 C +02470 177773 C +02471 003452 C +02472 003450 C +02473 177727 C +02474 000272 C +02475 000113 C +02476 001005 C +02477 005153 C +02500 177775 C +02501 020544 C +02502 177742 C +02503 000112 C +02504 000024 C +02505 032261 C +02506 015155 C +02507 177762 C +02510 043433 C +02511 003074 C +02512 177477 C +02513 072271 C +02514 001400 C +02515 072371 C +02516 072471 C +02517 072571 C +02411 174524 C PAGEND 2,UNCON,4 + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 42 IMP,3050,IMP 7:20 PM 9/16/1973 + + /CONSTANTS, VARIABLE FOR NEW INIT PAGE + + LEV VAR +03062 V IT3: BSS 1 + + LEV CON +03063 010047 C M2IIT: M2I1A +03064 010073 C M2I2A +03065 010117 C M2I3A +03066 010143 C M2I4A +03067 010167 C M2I5A + +03070 C HIM.I: TIPDEF 177660,177664 +02236 003070 C +02266 177660 C +02316 177664 C +03071 C HIM.I4: TIPDEF 177460,177464 +02237 003071 C +02267 177460 C +02317 177464 C +03072 C IHM.I: TIPDEF 173600,173624 +02240 003072 C +02270 173600 C +02320 173624 C +03073 C IHM.I4: TIPDEF 163400,163424 +02241 003073 C +02271 163400 C +02321 163424 C + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 43 IMP,3050,IMP 7:20 PM 9/16/1973 + + LEV BCK LCK INI +03074 105561 7 0 INITNP: LDA (HOST34) I /THIS IS <>0 IF 3 OR 4 HOSTS +03075 006124 7 0 ANA MINUS4 + /=0 FOR 5 MODEMS, 2 HOSTS + />0 FOR 4 MODEMS, 3 HOSTS + /<0 FOR 3 MODEMS, 4 HOSTS +03076 072132 7 0 LDX MIN100 /5M,2H +03077 100040 7 0 SZE +03100 073072 7 0 LDX IHM.I /4M,3H +03101 100400 7 0 SPL +03102 073073 7 0 LDX IHM.I4 /3M,4H +03103 032500 7 0 STX IHM /* +03104 073562 7 0 LDX (-20) /5M,2H +03105 100040 7 0 SZE +03106 073070 7 0 LDX HIM.I /4M,3H +03107 100400 7 0 SPL +03110 073071 7 0 LDX HIM.I4 /3M,4H +03111 032501 7 0 STX HIM /* +03112 073563 7 0 LDX (-4000) /5M,2H +03113 100040 7 0 SZE +03114 073564 7 0 LDX (-10000) /4M,3H +03115 100400 7 0 SPL +03116 073565 7 0 LDX (-20000) /3M,4H +03117 032502 7 0 STX MOM /* +03120 072113 7 0 LDX ZERO /5M,2H +03121 100040 7 0 SZE +03122 072121 7 0 LDX MINUS1 /4M,3H +03123 100400 7 0 SPL +03124 072122 7 0 LDX MINUS2 /3M,4H +03125 133566 7 0 STX (MODNO) I /* +03126 073567 7 0 LDX (M2I5) /5M +03127 100040 7 0 SZE +03130 073570 7 0 LDX (IH2E) /4M OR 3M +03131 032070 7 0 STX M5INIL /* +03132 073571 7 0 LDX (M2I4) /5M OR 4M +03133 100400 7 0 SPL +03134 073572 7 0 LDX (IH3E) /3M +03135 032067 7 0 STX M4INIL /* +03136 073573 7 0 LDX (I2M5) /5M +03137 100040 7 0 SZE +03140 073574 7 0 LDX (HI2E) /4M OR 3M +03141 032075 7 0 STX M5OTIL /* +03142 073575 7 0 LDX (I2M4) /5M OR 4M +03143 100400 7 0 SPL +03144 073576 7 0 LDX (HI3E) /3M +03145 032074 7 0 STX M4OTIL /* + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 44 IMP,3050,IMP 7:20 PM 9/16/1973 + +03146 121577 7 0 JST (RUTINI) I /INIT ROUTING TABLES +03147 121600 7 0 JST (TOI) I /INITIALIZE TIMEOUT +03150 131040 7 0 RDCLOK +03151 003150 7 0 JMP .-1 /WAIT 3 SECONDS +03152 101400 7 0 SMI +03153 003150 7 0 JMP .-3 /BEFORE STARTING INTERRUPT PROGRAF' +03154 121601 7 0 JST (SWCH) I /FIRE OFF A TRBL REPT NOW - FOLLOWS + /START MODEM INPUT - MUST FOLLOW TOI +03155 073602 7 0 LDX (-[2"T"CH]) +03156 005603 7 0 LDA (I 0 1) +03157 050032 7 0 INIT17: STA M1INBP+2"T"CH X +03160 024000 7 0 IRS 0 +03161 003157 7 0 JMP INIT17 +03162 005604 7 0 LDA (M1IN) +03163 011174 7 0 STA INIT19 +03164 072127 7 0 LDX MICH +03165 005605 7 0 INIT18: LDA (JMP+0+1000+M2II"A"777) +03166 151070 7 0 STA M2IIT+CH XI /FIRST IN WILL BE DISCAF +03167 105606 7 0 LDA (VDHNO) I /SKIP FOR VDH'S MODEM +03170 016000 7 0 SUB 0 +03171 100040 7 0 SZE +03172 117607 7 0 SUB (SATNO) I /ENTERING AC IS -C(0) +03173 100040 7 0 SZE +03174 7 0 INIT19: BSS 1 /STARTUP MODEM INS +03175 025174 7 0 IRS INIT19 +03176 024000 7 0 IRS 0 +03177 003165 7 0 JMP INIT18 + /START THE HOST/IMP AND IMP/HOST ROUTINES +03200 004131 7 0 LDA MITH +03201 011062 7 0 STA IT3 /COUNTING ON X=0 AT THIS POINT +03202 004117 7 0 INIT15: LDA FOUR 0"A"HSTIDN /HOSTS ARE DOWN WHILE IMP +03203 050504 7 0 STA HIHD X +03204 121610 7 0 JST (IHIN) I /** MUST BE IN THIS ORDER +03205 121611 7 0 JST (HIST) I /** +03206 024000 7 0 IRS 0 +03207 025062 7 0 IRS IT3 +03210 003202 7 0 JMP INIT15 +03211 004121 7 0 LDA MINUS1 +03212 010137 7 0 STA SW3FG +03213 010140 7 0 STA NRSTF +03214 010134 7 0 STA PRIM +03215 170120 7 0 SMK INTM +03216 000401 7 0 ENB BCK +03217 131040 7 RDCLOK /ALLOW ALL T/O PROGRAMS TO RUN +03220 003217 7 JMP .-1 +03221 100400 7 SPL +03222 003217 7 JMP .-3 /BEFORE BACK BEGINS + /FALL INTO BACKST ----- + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 45 IMP,3050,IMP 7:20 PM 9/16/1973 + + + /BACKGROUND LOOP + LEV BCK +03223 005612 7 BACKST: LDA (BBNIMP) /1ST REPORT MUST GO TO NCC +03224 111613 7 BACK: STA (TRBD) I +03225 005614 7 LDA (-FH) +03226 011410 7 STA BT1 +03227 005410 7 BKV: LDA BT1 +03230 017614 7 SUB (-FH) +03231 010000 7 STA 0 +03232 011412 7 STA FAKENO /FOR DEBUG +03233 143415 7 JMP DZTB XI /RESUME WHERE JAM LEFT OFF + +03234 000000 7 BKX: 0 /JAM WAIT (DOZE) +03235 005234 7 LDA BKX +03236 051415 7 STA DZTB X +03237 143421 7 JMP WTTB XI /RESUME WHERE SUCK LEFT OFF + +03240 000000 7 BKW: 0 /SUCK WAIT (WAIT) +03241 005240 7 LDA BKW +03242 051421 7 STA WTTB X +03243 000401 7 ENB BCK +03244 025410 7 IRS BT1 +03245 003227 7 JMP BKV +03246 005615 7 LDA (-BH) +03247 011410 7 STA BT1 +03250 072113 7 LDX ZERO +03251 133616 7 BKY: STX (BACKNO) I +03252 072114 7 LDX ONE +03253 001001 7 INH ALL +03254 143260 7 0 DXATS1: JMP DXATST XI /ARE WE EXA OR DXA? + DEFHLT [BACKGROUND IN EXA MODE (BACK0)!] +03255 021262 7 0 JST DXABUG /DXA +03256 173616 7 0 DXATS2: LDX (BACKNO) I /EXA +03257 143425 7 0 JMP SLTB XI /RESUME WHERE BACK HOSTS LEFT OFF + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 46 IMP,3050,IMP 7:20 PM 9/16/1973 + + LEV CON +03260 003254 C DXATST: DXATS1 +03261 003256 C DXATS2 + LEV BCK LCK ALL +03262 000000 7 0 DXABUG: 0 +03263 120745 7 0 JST HLTNCC I +03264 000011 7 0 DXA +03265 103262 7 0 JMP DXABUG I + + RET BCK +03266 000000 7 BKZ: 0 /BACK HOST WAIT (SLEEP) +03267 000401 7 ENB BCK +03270 173616 7 LDX (BACKNO) I +03271 005266 7 LDA BKZ +03272 051425 7 STA SLTB X +03273 024000 7 B5Z: IRS 0 +03274 025410 7 IRS BT1 +03275 003251 7 JMP BKY +03276 140040 7 CRA +03277 100004 7 SR3 +03300 010137 7 STA SW3FG /DO NICE STOP IF SS3 +03301 004137 7 LDA SW3FG /REMOTE NICE-STOP+RELOAD +03302 100400 7 SPL +03303 004140 7 LDA NRSTF +03304 101400 7 SMI +03305 021446 7 JST NSRT /NICE-STOP IF SW3FG>=0 OR NRSTF>=0 + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 47 IMP,3050,IMP 7:20 PM 9/16/1973 + +03306 004415 7 LDA TIME +03307 027413 7 IMA WDTOLD /IS T.O RUNNING? +03310 013413 7 ERA WDTOLD +03311 100040 7 SZE +03312 003316 7 JMP BKT /TIME CHANGED...YES +03313 025414 7 IRS WDTBAK +03314 003320 7 JMP BKU /DON'T GIVE UP YET + RELOAD [BACKGROUND SAW TIMEOUT STOP] +03315 120061 7 JST SWDTIL I + +03316 005617 7 BKT: LDA (-10000.) /GIVE T.O A LONG TIME TO RUN +03317 011414 7 STA WDTBAK /AND RESET BACK-WDT +03320 000401 7 BKU: ENB BCK +03321 7 TIPDEF [JMP BKS],[LDA TIPRSF] +02242 003321 7 +02272 003334 7 +02322 004136 7 +03322 101040 7 SNZ +03323 003331 7 JMP BKR +03324 000013 7 EXA +03325 121620 7 JST (TIPBKG) I +03326 001001 7 INH ALL +03327 120672 7 0 JST DODXA I RET BCK +03330 003334 7 JMP BKS +03331 004063 7 BKR: LDA STDIL +03332 010101 7 STA H2INIL +03333 010077 7 STA H2OTIL +03334 073621 7 BKS: LDX (-LITN) /LIGHTS DISPLAY +03335 145446 7 LIT2: LDA LITT+LITN XI +03336 100040 7 SZE +03337 140500 7 SSM +03340 041277 7 LLR 1 +03341 024000 7 IRS 0 +03342 003335 7 JMP LIT2 +03343 140040 7 CRA +03344 040267 7 LRR LITN +03345 012452 7 ERA LUUP +03346 011434 7 STA LITS +03347 001001 7 INH ALL +03350 000013 7 0 EXA +03351 105433 7 0 LDA LITP I +03352 120672 7 0 JST DODXA I RET BCK +03353 100020 7 SR1 +03354 004121 7 LDA MINUS1 /LAMP TEST +03355 170026 7 LITES +03356 101000 7 NOP +03357 000201 7 IAB +03360 025411 7 IRS BACKX /KEEP COUNT OF BACK LOOPS +03361 101000 7 NOP + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 48 IMP,3050,IMP 7:20 PM 9/16/1973 + +03362 140040 7 CRA +03363 026144 7 IMA VDHRSF /CHECK AND RESET VDH RESTART FLAG +03364 100040 7 SZE +03365 121622 7 JST (VD.I) I /YES, RESTART +03366 101000 7 VDH2: NOP /VDH BACKGROUND CALL +03367 004172 7 LDA RUT+BBNIMP +03370 101400 7 SMI 0"A"RUTDED /IS NCC IMP UP? +03371 003223 7 JMP BACKST /YES +03372 072132 7 LDX MINIMP /MUST FIND RANDOM IMP UP +03373 044265 7 BKWD1: LDA RUT+NIMP X +03374 101400 7 SMI 0"A"RUTDED /DEAD? +03375 101040 7 SNZ 0"A"RUTUS +03376 003403 7 JMP BKWD2 /DON'T USE OURSELVES EXCEPT AS A LA1 +03377 004000 7 LDA 0 /GOT ONE +03400 016132 7 SUB MINIMP +03401 013623 7 BKWD3: ERA (DESTH 0 FORIMP) /TO DISCARD +03402 003224 7 JMP BACK +03403 024000 7 BKWD2: IRS 0 +03404 003373 7 JMP BKWD1 +03405 004106 7 LDA MINE /EVERYONE IS DEAD, USE OURSELVES +03406 003401 7 JMP BKWD3 +03407 037511 7 VDH2.: VD.B + + LEV VAR +03410 V BT1: BSS 1 +03411 V BACKX: BSS 1 /NO OF BACK LOOPS +03412 V FAKENO: BSS 1 +03413 V WDTOLD: BSS 1 /OLD TIME READING +03414 V WDTBAK: BSS 1 /BACK WDT TIMER + /THESE 3 TABLES MUST STAY IN ORDER11 + DEFPLC [DZTB - GOES WITH JAM] +03415 V DZTB: BSS FH + DEFPLC [WTTB - GOES WITH SUCK] +03421 V WTTB: BSS FH + DEFPLC [SLTB - GOES WITH SLEEP (BACK HOSTS)] +03425 V SLTB: BSS BH + + DEFPLC [LIGHT DISPLAY POINTER AND NOMINAL DISPLAY WORD] +03433 003434 V LITP: LITS +03434 V LITS: BSS 1 + + /LIGHTS TABLE AND CONDITION INDICATED BY LIT LIGHT + LEV CON +03435 000433 C LITT: LINE /1 - 100000 1ST CHANNEL DEAD +03436 000434 C LINE+1 /2 - 40000 2ND CHANNEL DEAD +03437 000435 C LINE+2 /3 - 20000 3RD CHANNEL DEAD +03440 000436 C LINE+3 /4 - 10000 4TH CHANNEL DEAD +03441 000504 C HIHD /5 - 4000 HOST 1 DEAD +03442 000505 C HIHD+1 /6 - 2000 HOST 2 DEAD +03443 000506 C HIHD+2 /7 - 1000 HOST 3 DEAD +03444 000507 C HIHD+3 /8 - 400 HOST 4 DEAD +03445 000765 C TPOPEN /9 - 200 TIP HAS OPEN CONNECTION + LITN=0 0 .-LITT + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 49 IMP,3050,IMP 7:20 PM 9/16/1973 + + / NICE STOP ROUTINE + LEV BCK +03446 000000 7 NSRT: 0 +03447 103450 7 JMP NSRR I +03450 000000 7 NSRR: 0 +03451 103446 7 JMP NSRT I +03452 004137 7 NS1: LDA SW3FG /SET UP RSFNCC WORD FOR NICE STOP +03453 006120 7 ANA SEVEN +03454 041675 7 ALR 3 +03455 012140 7 ERA NRSTF +03456 007624 7 ANA (177770) +03457 012140 7 ERA NRSTF +03460 012752 7 ERA C77 +03461 041675 7 ALR 3 +03462 101004 7 SS3 /DO NOT SET RSFNCC FOR SS3 +03463 011560 7 STA RSFNCC +03464 140040 7 CRA /SEND IMP GOING DOWN IN 30 SEC +03465 021525 7 JST IHDOWN LCK FRE +03466 000401 7 0 ENB BCK +03467 021543 7 JST NSWT /WAIT 5 SECONDS +03470 004117 7 LDA FOUR 0"A"HSTIDN +03471 010504 7 STA HIHD /STOP NET TRAFFIC TO AND FROM HOSTS +03472 010505 7 STA HIHD+1 /MARK HOSTS DEAD, IMP NOT UP +03473 010506 7 STA HIHD+2 +03474 010507 7 STA HIHD+3 +03475 021543 7 JST NSWT /WAIT 5 SECONDS +03476 004121 7 LDA MINUS1 /STOP STORE-AND-FORWARD TRAFFIC BI +03477 010573 7 STA MAXSI /MAKING MAXS COPY SMALL +03500 021543 7 JST NSWT /WAIT 5 SECONDS +03501 004127 7 LDA MICH +03502 011556 7 STA BT2 /STOP EXCHANGE OF ROUTING AND ACKNO +03503 072113 7 LDX ZERO /TURNING OFF ALL LINES +03504 001001 7 INH [M2I,T.O,TSK] +03505 121625 7 0 NS3: JST (KILLIN) I /KILL LINE AT ONCE +03506 024000 7 0 IRS 0 +03507 025556 7 0 IRS BT2 +03510 003505 7 0 JMP NS3 +03511 000401 7 0 ENB BCK +03512 021543 7 JST NSWT /WAIT 5 SECONDS +03513 021543 7 JST NSWT /WAIT UNTIL SLT DELAY OVER +03514 004140 7 LDA NRSTF +03515 101400 7 SMI /RESTART? +03516 103626 7 JMP (INIT) I /GO TO 2000 +03517 004137 7 LDA SW3FG /FOR VDH OR NON-VDH +03520 101004 7 SS3 /STOP OR RELOAD? +03521 103627 7 JMP (WDLOD) I +03522 030026 7 WDT +03523 000000 7 HLT +03524 003522 7 JMP .-2 + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 50 IMP,3050,IMP 7:20 PM 9/16/1973 + +03525 000000 7 IHDOWN: 0 /NOTIFY ALL HOSTS OF IMP DOWN +03526 001001 7 INH FRE +03527 010515 7 0 STA TWDP +03530 004131 7 0 LDA MITH +03531 011556 7 0 STA BT2 +03532 005556 7 0 NS2: LDA BT2 +03533 016131 7 0 SUB MITH +03534 010000 7 0 STA 0 +03535 005630 7 0 LDA (CIMPDN) /IMP GOING DOWN MESSAGE +03536 120670 7 0 JST OWP I +03537 101000 7 0 NOP +03540 025556 7 0 IRS BT2 +03541 003532 7 0 JMP NS2 +03542 103525 7 0 JMP IHDOWN I + +03543 000000 7 0 NSWT: 0 /WAIT 5 SECONDS +03544 030026 7 0 WDT +03545 004415 7 0 LDA TIME +03546 011557 7 0 STA NSTM +03547 021450 7 0 NS5: JST NSRR +03550 004415 7 0 LDA TIME +03551 017557 7 0 SUB NSTM +03552 141044 7 0 CAR /WAIT FIVE SECONDS +03553 101040 7 0 SNZ +03554 003547 7 0 JMP NS5 +03555 103543 7 0 JMP NSWT I + + LEV VAR +03556 V BT2: BSS 1 /TEMP +03557 V NSTM: BSS 1 /FOR STOP +03560 V RSFNCC: BSS 1 /RESTART PLACE FOR NCC -FORMAT FOLL + /RSFNCC HAS THE FORM 000XYZ WHERE X,Y,Z ARE OCTAL DIGITS + /X IS RELOAD REQUEST INDICATOR, X=0 NO REQUEST + /X=7 RANDOM RELOAD, X=6 RELOAD FOR LINE 1, X=5 LINE 2, X=4 L + /X=3 LINE 4, X=2 LINE 5 + /Y IS RESTART REQUEST INDICATOR, Y=0 NO REQUEST + /Y=7 RESTART AT 2000 - NON-VDH, X=6 RESTART AT 2001 - VDH + /Z IS PROGRAM INITIALIZATION INDICATOR, Z=0 NO INIT + /Z=1 RESTARTED, Z=2 RELOADED, Z=3 WATCH DOG TIMER RELOADED + /Z=4 POWER FAIL RESTARTED + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 51 IMP,3050,IMP 7:20 PM 9/16/1973 + +03561 001005 C LEV CON CONSTANTS +03562 177760 C +03563 174000 C +03564 170000 C +03565 160000 C +03566 020545 C +03567 010163 C +03570 016020 C +03571 010137 C +03572 016012 C +03573 012107 C +03574 013064 C +03575 012113 C +03576 013056 C +03577 026070 C +03600 020075 C +03601 022320 C +03602 177766 C +03603 100001 C +03604 030471 C +03605 003207 C +03606 020544 C +03607 005153 C +03610 016217 C +03611 013256 C +03612 000005 C +03613 030456 C +03614 177774 C +03615 177772 C +03616 004420 C +03617 154360 C +03620 040001 C +03621 177767 C +03622 037025 C +03623 040300 C +03624 177770 C +03625 011133 C +03626 002000 C +03627 001022 C +03630 001000 C +02412 175637 C PAGEND 3,UNCON,4 + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 52 IMP,3050,IMP 7:20 PM 9/16/1973 + + /SEND OFF ALLOCATED RFNMS AND ALLOCATES AND RFNMS + LEV BCK +04063 140040 7 B0AA: CRA +04064 011157 7 STA BALLOC +04065 121417 7 B0A: JST SLEEP I +04066 021372 7 B0B: JST GETFRE LCK FRE /GET A BUFFER FOR OUR AL 1 +04067 003065 7 0 JMP B0A /NOT NOW, WAIT +04070 005155 7 0 LDA BRALLY 0"A"DESTI /GET OUR RALLY +04071 007603 7 0 ANA (DESTI) +04072 050006 7 0 STA HEAD1 X /SAVE IN HEADER +04073 013155 7 0 ERA BRALLY 0"A"[MESSNO 0 ONEOR8 RFNM] +04074 013157 7 0 ERA BALLOC 0"A"TRNREP /SET ALLOC BIT OR NOT +04075 013160 7 0 ERA BREPIN 0"A"INCTRN +04076 050005 7 0 STA HEAD X +04077 021435 7 0 JST GIVTSK RET BCK /GIVE RALLY TO TASK +04100 121417 7 B0C: JST SLEEP I +04101 021473 7 BACK0: JST RALLYG /GET NEXT RALLY TO GO +04102 003100 7 JMP B0C +04103 100000 7 SKP /GOOD RETURN +04104 003100 7 JMP B0C /GOT A DESTINATION DEAD, SENT ALREA +04105 011155 7 STA BRALLY /SAVE RALLY +04106 007604 7 ANA (ONEOR8 0 RFNM) +04107 013604 7 ERA (ONEOR8 0 RFNM) +04110 101040 7 SNZ /IS THIS JUST A 1-PKT RFNM? +04111 003063 7 JMP B0AA /YES, NO ALLOC NECESSARY +04112 005155 7 LDA BRALLY +04113 007605 7 ANA (ONEOR8) +04114 100040 7 SZE +04115 005606 7 LDA (-7) 0"A"8PKTS +04116 014751 7 ADD 8PKTS +04117 011157 7 STA BALLOC +04120 004415 7 LDA TIME +04121 011156 7 STA BALLTO +04122 121417 7 B0D: JST SLEEP I +04123 004415 7 LDA TIME +04124 017156 7 SUB BALLTO +04125 017607 7 SUB (40.) +04126 100400 7 SPL /HAVE WE BEEN WAITING 1 SEC? +04127 003134 7 JMP B0F /NOT YET +04130 005155 7 LDA BRALLY +04131 007610 7 ANA (RFNM) +04132 100040 7 SZE /ARE WE SENDING AN ALLOCATED RFNMT +04133 003063 7 JMP B0AA /YES, SEND IT OFF WITHOUT ALLOC + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 53 IMP,3050,IMP 7:20 PM 9/16/1973 + +04134 001001 7 B0F: INH [T.O,TSK] +04135 004542 7 5 LDA NALA +04136 016566 7 5 SUB NALS +04137 014541 7 5 ADD NREA +04140 016565 7 5 SUB NRES +04141 015157 7 5 ADD BALLOC +04142 022572 7 5 CAS MAXR /CAN WE HAVE THE ROOM? +04143 003122 7 5 JMP B0D /NOT YET +04144 003122 7 5 JMP B0D +04145 005611 7 5 LDA (ALLOC) +04146 027157 7 5 IMA BALLOC /SET ALLOC BIT IN OUR REPLY +04147 014542 7 5 ADD NALA +04150 010542 7 5 STA NALA /YES, SO TAKE IT +04151 004107 7 5 LDA M30SEC /2 MINUTES BEFORE WE ARE IDLE +04152 041576 7 5 ALS 2 +04153 011161 7 5 STA SNTALL +04154 003066 7 5 JMP B0B + + LEV VAR +04155 V BRALLY: BSS 1 /OUR ALLOCATE TO MAKE +04156 V BALLTO: BSS 1 /TIME WE STARTED TO TRY FOR ALLOC +04157 V BALLOC: BSS 1 /NO OF BUFFERS WE NEED TO ALLOC +04160 V BREPIN: BSS 1 /BIT ON IF INC TRN REPLY +04161 V SNTALL: BSS 1 /TIMER FOR GARBAGE COLLECTION OF 1 1 + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 54 IMP,3050,IMP 7:20 PM 9/16/1973 + + LEV BCK + /SEND OFF INCOMPLETE TRASMISSIONS IF ANY TMESS NO OVERDUE + LCK [H2I,T.O,TSK] +04162 121612 7 4 B1A: JST (PPTGET) I /GET THE PPT ENTRY +04163 003257 7 4 JMP B1F /NOT IN PPT OR PLT, SO ITS A GVB +04164 044111 7 4 LDA BUFE X +04165 140100 7 4 SSP 0"A"TWOQ +04166 011262 7 4 STA BACK1T /SAVE PTR TO PKT CKSUM +04167 044010 7 4 LDA HEAD3 X +04170 007613 7 4 ANA (0 0 177777"X"SUBCOD) +04171 013614 7 4 ERA (CLOST) /MARK MESS AS LOST IN NET +04172 066010 7 4 IMA HEAD3 X +04173 056010 7 4 SUB HEAD3 X +04174 115262 7 4 ADD BACK1T I /ADJUST CKSUM +04175 111262 7 4 STA BACK1T I +04176 005605 7 4 LDA (ONEOR8) /MARK AS INC TRN FOR ONE-PKT +04177 073430 7 4 B1B: LDX HOLD+1 /GET OUR PKT +04200 052005 7 4 ERA HEAD X +04201 050005 7 4 STA HEAD X +04202 021435 7 4 JST GIVTSK RET BCK /AND GIVE TO TASK +04203 005261 7 B1C: LDA BACK1P /LOOK AT NEXT TMESS ENTRY +04204 141206 7 AOA +04205 023615 7 CAS (TMESS 0 NIMP) +04206 005615 7 BACK1: LDA (TMESS 0 NIMP) /SHOULDNT HAPPEN +04207 014132 7 ADD MINIMP /WRAPAROUND TMESS TABLE +04210 011261 7 STA BACK1P /SAVE PNTR TO TMESS +04211 121417 7 B1D: JST SLEEP I +04212 001001 7 INH [H2I,T.O,TSK] +04213 105261 7 4 LDA BACK1P I +04214 007604 7 4 ANA (MSTO1 0 MSTO2) +04215 013604 7 4 ERA (MSTO1 0 MSTO2) +04216 100040 7 4 SZE /HAS THIS MESS NO TIMED OUT? +04217 003203 7 4 JMP B1C /NO +04220 011262 7 4 STA BACK1T /INIT TEMP COUNTER. USED LATER +04221 021372 7 4 JST GETFRE /YES, GET A BUFFER FOR OUR INC TRN +04222 003211 7 4 JMP B1D /NOT NOW, TRY AGAIN +04223 033430 7 4 STX HOLD+1 +04224 005261 7 4 LDA BACK1P +04225 017616 7 4 SUB (TMESS) /SET UP OUR DEST +04226 050006 7 4 STA HEAD1 X 0"A"DESTI +04227 105261 7 4 LDA BACK1P I +04230 007617 7 4 ANA (0 0 177777"X"MSTO1"X"MSTO2) +04231 111261 7 4 STA BACK1P I /CLEAR TIMEOUT BITS +04232 025262 7 4 B1E: IRS BACK1T /1 MEANS OLDEST, 2 NEXT OLDEST ... +04233 040677 7 4 ARR 1 +04234 100400 7 4 SPL /IS THE OLDEST POSSIBLE MESS INC? +04235 003232 7 4 JMP B1E /NO, COUNT ONE MORE BACKWARDS + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 55 IMP,3050,IMP 7:20 PM 9/16/1973 + +04236 005262 7 4 LDA BACK1T +04237 141240 7 4 ICR /GET NO OF MESS NOS TO ROLL BACK +04240 115261 7 4 ADD BACK1P I +04241 141044 7 4 CAR 0"A"MESSNO +04242 015620 7 4 ADD (INCTRN 0 -2000 TRNREP 0"A"LINETS) +04243 050005 7 4 STA HEAD X /SET UP INC TRN WITH RIGHT MESS N( +04244 141044 7 4 CAR 0"A"MESSNO +04245 052006 7 4 ERA HEAD1 X /SET UP MESS NO + IMP NO +04246 121621 7 4 JST (PLTGET) I /GET THE PLT ENTRY +04247 003162 7 4 JMP B1A /NOT IN PLT, TRY PPT +04250 044030 7 4 LDA PLT2 X +04251 007613 7 4 ANA (0 0 177777"X"SUBCOD) +04252 013614 7 4 ERA (CLOST) /MARK MESS AS LOST IN NET +04253 050030 7 4 STA PLT2 X +04254 044000 7 4 LDA PLT0 X +04255 007610 7 4 ANA (REQALL) +04256 003177 7 4 JMP B1B + +04257 005622 7 4 B1F: LDA (GVBALL 0 ONEOR8) +04260 003177 7 4 JMP B1B /MAKE UP AN INC GVB + LEV VAR +04261 V BACK1P: BSS 1 /PNTR TO TMESS ENTRY +04262 V BACK1T: BSS 1 /COUNT OF NO OF MESS NOS TO GO BACK + + /SEND OFF GIVE BACKS WHEN ALLOCATES TIME OUT + LEV BCK +04263 121417 7 B2A: JST SLEEP I +04264 021372 7 B2B: JST GETFRE LCK FRE /GET A BUFFER FOR OUR GIV +04265 003263 7 0 JMP B2A /NOT NOW, WAIT +04266 033431 7 0 STX HOLD+2 +04267 121417 7 0 B2C: JST SLEEP I RET BCK +04270 073431 7 LDX HOLD+2 +04271 005314 7 LDA BACK2D 0"A"PRIBIT /GET OUR DEST +04272 050006 7 STA HEAD1 X /PUT IN PKT (NOT PRI) +04273 001001 7 INH H2I +04274 121623 7 4 JST (MESGET) I +04275 003267 7 4 JMP B2C /CANT HAVE MESS NO +04276 013622 7 4 ERA (GVBALL 0 ONEOR8 0"A"LINETS"A"INCTRN) +04277 050005 7 4 STA HEAD X /SET UP GVB +04300 021435 7 4 JST GIVTSK RET BCK /GIVE THE GVB TO TASK +04301 121417 7 B2D: JST SLEEP I +04302 001001 7 BACK2: INH [H2I,T.O] +04303 004126 7 4 LDA MINUS6 /ALLOCATES TIME OUT IN 125 MS +04304 115624 7 4 ADD (TALLYC) I +04305 100400 7 4 SPL /IS ALLOC TOO OLD? +04306 003301 7 4 JMP B2D /NOT USED UP YET +04307 105625 7 4 LDA (TALLY) I /GET TOP TALLY ENTRY +04310 121626 7 4 JST (TALLYG) I /PULL IT OFF +04311 003301 7 4 JMP B2D /NOT THERE? +04312 011314 7 4 STA BACK2D /SAVE OUR DEST +04313 003264 7 4 JMP B2B + LEV VAR +04314 V BACK2D: BSS 1 /DEST OF GIVE BACK + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 56 IMP,3050,IMP 7:20 PM 9/16/1973 + + /DO RETRANSMISSSIONS OF REQ1 IN PPT THAT HAS GOT ALL1 IN RET1 + LEV BCK +04315 121417 7 B3B: JST SLEEP I +04316 173353 7 LDX BACK3P I +04317 044111 7 LDA BUFE X +04320 100400 7 SPL 0"A"TWOQ /IS THIS PKT STILL ON 2 QUEUES? +04321 003315 7 JMP B3B /YES, NEED TO DELAY WHILE ACK IS PR1 +04322 011354 7 STA B3T1 /TEMP CKSUM POINTER +04323 140500 7 SSM 0"A"TWOQ +04324 050111 7 STA BUFE X /PPT ENTRY GOES ON 2 QUEUES AGAIN +04325 044005 7 LDA HEAD X +04326 007627 7 ANA (0 0 177777"X"REQALL) +04327 050005 7 STA HEAD X /TURN OFF REQ BIT, KEEP SAME MESS N1 +04330 105353 7 LDA BACK3P I +04331 140100 7 SSP 0"A"RETRAN +04332 111353 7 STA BACK3P I +04333 105354 7 LDA B3T1 I +04334 015610 7 ADD (REQALL) /NOW ADJUST CHECKSUM +04335 111354 7 STA B3T1 I +04336 140040 7 CRA /GIVTSK WON'T MAKE CHECKSUM +04337 021435 7 JST GIVTSK /GIVE TO TASK +04340 121417 7 B3C: JST SLEEP I +04341 105353 7 LDA BACK3P I /LOOK AT NEXT PPT ENTRY +04342 100400 7 SPL 0"A"RETRAN /MUST WE RETRANSMIT IT? +04343 003315 7 JMP B3B /YES +04344 005353 7 LDA BACK3P +04345 141206 7 AOA /GET NEXT PPT SLOT +04346 023630 7 CAS (PPT+0+PPTL) +04347 005630 7 BACK3: LDA (PPT+0+PPTL) /SHOULDNT HAPPEN +04350 017631 7 SUB (PPTL) /WRAPAROUND PPT +04351 011353 7 STA BACK3P /SAVE PPT SLOT +04352 003340 7 JMP B3C + LEV VAR +04353 V BACK3P: BSS 1 /PNTR TO PPT ENTRY +04354 V B3T1: BSS 1 /PNTR TO CHKSM IN PKT + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 57 IMP,3050,IMP 7:20 PM 9/16/1973 + + /SEND OFF PACKETS FROM A LINE WHICH JUST DIED - REROUTE + /SEND OFF DESTINATION DEAD MESSAGES TO SOURCE + LEV BCK +04355 121417 7 B4A: JST SLEEP I +04356 073632 7 BACK4: LDX (SRQ) /GET NEXT REPLY +04357 001001 7 INH [I2H,T.O] +04360 121633 7 3 JST (GETQ) I +04361 003355 7 3 JMP B4A /NONE, SO SLEEP +04362 140040 7 3 CRA /TELL GIVTSK NOT TO CKSUM +04363 021435 7 3 JST GIVTSK RET BCK /GIVE THE REPLY TO TASK +04364 003355 7 JMP B4A + + /SATELLITE BACK HOST + LEV BCK +04365 004145 7 BACK5: LDA SATRSF +04366 7 B5A: SATDEF SZE +02243 004366 7 +02273 100040 7 +02323 100040 7 +04367 121634 7 JST (SATBCK) I +04370 121417 7 JST SLEEP I +04371 003365 7 JMP BACK5 + + SATBCK=37700 + + LEV [VDB,BCK] +04372 000000 3 GETFRE: 0 /GET A FREE BUFFER FOR A BACK HOSI +04373 001001 3 INH FRE +04374 004537 3 0 LDA NFA +04375 016563 3 0 SUB NFS +04376 016570 3 0 SUB MINF +04377 100400 3 0 SPL +04400 103372 3 0 JMP GETFRE I /NOT ENOUGH BUFFERS FOR MODEM INP1 +04401 104324 3 0 LDA FREE I +04402 101040 3 0 SNZ +04403 103372 3 0 JMP GETFRE I +04404 026324 3 0 IMA FREE +04405 010000 3 0 STA 0 +04406 024563 3 0 IRS NFS +04407 014751 3 0 ADD CMINPL 0"A"TWOQ +04410 050111 3 0 STA BUFE X +04411 004106 3 0 LDA MINE +04412 050007 3 0 STA HEAD2 X /SET UP SOURCE IMP +04413 140040 3 0 CRA +04414 050000 3 0 STA 0 X +04415 025372 3 0 IRS GETFRE /SKIP=SUCCESS +04416 103372 3 0 JMP GETFRE I + + LEV CON +04417 003266 C SLEEP: BKZ /BACK HOST WAIT + LEV VAR +04420 V BACKNO: BSS 1 /NO OF BACK HOST CURRENTLY ACTIVE +04421 V GIVTST: BSS BH /RETURN ADDRS FOR BACK HOSTS GIVING +04427 V HOLD: BSS BH /PKT PNTRS FOR BACK HOSTS GIVING -' + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 58 IMP,3050,IMP 7:20 PM 9/16/1973 + + LEV BCK +04435 000000 7 GIVTSK: 0 +04436 101040 7 SNZ +04437 003446 7 JMP GIVT0 /NOT GENERATING A CHECKSUM +04440 004117 7 LDA FOUR 0"A"[MINPL-ACKH] +04441 056004 7 SUB ACKH X +04442 056005 7 SUB HEAD X +04443 056006 7 SUB HEAD1 X +04444 056007 7 SUB HEAD2 X +04445 050010 7 STA HEAD3 X /THERE'S THE CHECKSUM +04446 005420 7 GIVT0: LDA BACKNO 0"A"INPCHN +04447 015635 7 ADD (HSTMOD 0 TH) +04450 050003 7 STA INCH X /SET UP INPUT CHANNEL +04451 004000 7 LDA 0 +04452 073420 7 LDX BACKNO +04453 140100 7 SSP 0"A"RETRAN /NEC FOR BACK3 +04454 051427 7 STA HOLD X /SAVE PKT PNTR +04455 005435 7 LDA GIVTSK +04456 051421 7 STA GIVTST X /SAVE RETURN ADDR +04457 045427 7 GIVT1: LDA HOLD X +04460 001001 7 INH M2I +04461 110401 7 0 STA ETQ I +04462 010401 7 0 STA ETQ /PUT ON TASK QUEUE +04463 030041 7 0 TASK /POKE TASK +04464 121417 7 0 JST SLEEP I RET BCK +04465 140040 7 CRA +04466 066463 7 IMA TSKFLG+TH X +04467 101100 7 SLN /TASK REFUSED IT +04470 143421 7 JMP GIVTST XI /TASK TOOK IT +04471 121417 7 JST SLEEP I /WAIT ONE BACKGROUND LOOP +04472 003457 7 JMP GIVT1 /THEN TRY AGAIN + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 59 IMP,3050,IMP 7:20 PM 9/16/1973 + + LEV BCK +04473 000000 7 RALLYG: 0 /GET AN ENTRY IN RALLY TABLE +04474 140040 7 CRA +04475 026477 7 IMA RALLCF +04476 101040 7 SNZ /ANY ALLOCATES TO GO? +04477 103473 7 JMP RALLYG I /NO +04500 140040 7 CRA +04501 011600 7 STA RALLYX +04502 005636 7 LDA (MESS1) +04503 011602 7 STA RALADD /PRESET TABLE INCREMENTER +04504 073601 7 LDX RALTRY +04505 105637 7 RALLG: LDA (RALLY+NIMP 0 X) I +04506 101040 7 SNZ /ANY RALLY ENTRIES TO GO? +04507 003565 7 JMP RALLG0 /NO +04510 025600 7 IRS RALLYX /COUNT SOMETHING THERE +04511 105640 7 LDA (AMESS+NIMP 0 X) I +04512 141140 7 ICL +04513 006116 7 ANA THREE /GET NEXT MESS NO TO USE +04514 041576 7 ALS 2 +04515 140407 7 TCA +04516 015641 7 ADD (ALR 0 +04517 011523 7 STA RALGS1 +04520 013642 7 ERA (1000) +04521 011534 7 STA RALGS2 +04522 005643 7 LDA (17) +04523 7 RALGS1: BSS 1 /SHIFT MASK OVER +04524 001001 7 INH [I2H,TSK] +04525 107637 7 3 ANA (RALLY+NIMP 0 X) I +04526 101040 7 3 SNZ /ANYTHING IN NEXT SLOT TO GO? +04527 003565 7 3 JMP RALLG0 /NO +04530 113637 7 3 ERA (RALLY+NIMP 0 X) I +04531 127637 7 3 IMA (RALLY+NIMP 0 X) I /TURN OFF BITS +04532 113637 7 3 ERA (RALLY+NIMP 0 X) I +04533 000401 7 3 ENB BCK +04534 7 RALGS2: BSS 1 /SHIFT BACK THE BITS IN QUESTION +04535 023644 7 CAS (13) +04536 025473 7 IRS RALLYG /DEST DEAD, DOUBLE SKIP +04537 101000 7 NOP +04540 011160 7 STA BREPIN +04541 007631 7 ANA (INCTRN) +04542 027160 7 IMA BREPIN /GET INCTRN BIT AND SAVE IT +04543 006116 7 ANA THREE /EXTRACT THEM +04544 012115 7 ERA TWO 0"A"[ONEOR8 0 RFNM] +04545 101040 7 SNZ /IS THIS A REQ FOR 1 +04546 011602 7 STA RALADD /YES, DO NOT BUMP MESSAGE NO +04547 012115 7 ERA TWO /RESTORE A +04550 041672 7 ALR 6 0"A"[ONEOR8 0 RFNM] +04551 113640 7 ERA (AMESS+NIMP 0 X) I +04552 014000 7 ADD 0 +04553 016132 7 SUB MINIMP /OR IN MESS NO AND IMP NO +04554 127640 7 IMA (AMESS+NIMP 0 X) I +04555 015602 7 ADD RALADD /BUMP NEXT MESS TO REPLY TO +04556 127640 7 IMA (AMESS+NIMP 0 X) I + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 60 IMP,3050,IMP 7:20 PM 9/16/1973 + +04557 024000 7 IRS 0 +04560 100000 7 SKP +04561 072132 7 LDX MINIMP +04562 033601 7 STX RALTRY +04563 025473 7 IRS RALLYG +04564 003576 7 JMP RALLEX + +04565 000401 7 RALLG0: ENB BCK +04566 024000 7 IRS 0 +04567 003505 7 JMP RALLG +04570 004132 7 LDA MINIMP +04571 027601 7 IMA RALTRY +04572 013601 7 ERA RALTRY +04573 101040 7 SNZ /DID WE MAKE A COMPLETE PASS? +04574 005600 7 LDA RALLYX +04575 100040 7 SZE /AND DID WE FIND NOTHING AT ALL? +04576 010477 7 RALLEX: STA RALLCF /IF NO FOR EITHER, MUST COME BACK AT +04577 103473 7 JMP RALLYG I /IF YES FOR BOTH, LEAVE RALLCF AL( 1 + /IF ENTRIES WERE PUT DURING OUR PASS, RALLCF WILL HAVE BEEN 1 + + LEV VAR +04600 V RALLYX: BSS 1 /NON-ZERO = SOMETHING IN RALLY +04601 V RALTRY: BSS 1 +04602 V RALADD: BSS 1 /INCREMENT TO AMESS = 0 OR MESS1 + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 61 IMP,3050,IMP 7:20 PM 9/16/1973 + +04603 000077 C LEV CON CONSTANTS +04604 000300 C +04605 000200 C +04606 177771 C +04607 000050 C +04610 000100 C +04611 000002 C +04612 015033 C +04613 177770 C +04614 000003 C +04615 032371 C +04616 032271 C +04617 177477 C +04620 176014 C +04621 015205 C +04622 000202 C +04623 015161 C +04624 020210 C +04625 032261 C +04626 015114 C +04627 177677 C +04630 033467 C +04631 000010 C +04632 000331 C +04633 015504 C +04634 037700 C +04635 100010 C +04636 000400 C +04637 072671 C +04640 072571 C +04641 041700 C +04642 001000 C +04643 000017 C +04644 000013 C +02413 175663 C PAGEND 4,UNCON,4 + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 62 IMP,3050,IMP 7:20 PM 9/16/1973 + + + TSKI: LEV TSK /TASK INTERRUPT +00103 005107 6 TASKIL/ TSKI +05107 000000 6 0 TSKI/ INT TSK /TASK INTERRUPT COMES HERE +05110 000011 6 0 DXA +05111 003112 6 0 JMP .+1 +05112 011140 6 0 STA TA1 +05113 033141 6 0 STX TX1 +05114 000043 6 0 INK +05115 011142 6 0 STA TK1 +05116 004122 6 0 TSKMSK: LDA MINUS2 +05117 170120 6 0 SMK INTM +05120 010134 6 0 STA PRIM +05121 000401 6 0 TSKL: ENB TSK /ALL TASKS RETURN HERE +05122 004330 6 LDA STQ +05123 001001 6 INH MSK +05124 100040 6 0 SZE /IS TASK QUEUE EMPTY? +05125 003161 6 0 JMP TSKM /GOT A TASK +05126 140401 6 0 CMA /YES, TURN ON ALL BITS IN PRTY INT T +05127 010134 6 0 STA PRIM +05130 170120 6 0 SMK INTM /RESTORE REGISTERS AND KEYS +05131 073141 6 0 LDX TX1 +05132 000013 6 0 EXA +05133 005142 6 0 LDA TK1 +05134 171020 6 0 OTK +05135 005140 6 0 LDA TA1 +05136 000401 6 0 ENB TSK +05137 103107 6 JMP TSKI I + + LEV VAR +05140 V TA1: BSS 1 /TEMP A +05141 V TX1: BSS 1 /TEMP X +05142 V TK1: BSS 1 /TEMP KEYS +05143 V TASKIN: BSS 1 /INPUT CHAN - SIGN ON=FROM HOST +05144 V ACKBIT: BSS 1 /BIT PNTR FOR OUR ACK +05145 V OURR: BSS 1 /OUR OUTPUT MODEM CHANNEL +05146 V I2MSLT: BSS 1 /THE CHANNEL PNTR WE NEED +05147 V I2MBIT: BSS 1 /ODD-EVEN BIT POSITION FOR THIS PKT +05150 V ACKCH: BSS 1 /TRANSMIT ACK CHANNEL FOR THIS PK- +05151 V ACKP: BSS 1 /PNTR TO RELEVANT RSEX ENTRY +05152 V SWPCHT: BSS 1 /TEMP FOP SWPCHK +05153 V SATNO: BSS 1 /0 IF NONE, CH#+1 ELSE + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 63 IMP,3050,IMP 7:20 PM 9/16/1973 + + LEV TSK LCK MSK +05154 005710 6 0 TSKM2: LDA (STQ) /CLEAN UP Q PNTRS +05155 010401 6 0 STA ETQ +05156 003171 6 0 JMP TSKM1 + LEV TSK +05157 105151 6 TSKM3: LDA ACKP I +05160 003215 6 JMP TSKM4 + + LEV TSK LCK MSK +05161 010000 6 0 TSKM: STA 0 /TASK +05162 010514 6 0 STA THIS /STORE BUFF ADDR IN X AND THIS +05163 140040 6 0 CRA +05164 050002 6 0 STA PTRT X /CLEAR TRACE PTR +05165 066000 6 0 IMA 0 X /CLEAR BUFF CHAIN PNTR AND LOAD IN +05166 010330 6 0 STA STQ /STORE NEW ADDR IN HEAD OF Q +05167 101040 6 0 SNZ /WAS THIS LAST ENTRY IN Q? +05170 003154 6 0 JMP TSKM2 /YES +05171 000401 6 0 TSKM1: ENB TSK /X HAS BUFF ADDR +05172 044003 6 LDA INCH X +05173 011143 6 STA TASKIN /SAVE INPUT CHANNEL +05174 100400 6 SPL 0"A"HSTMOD /FROM HOST? +05175 003220 6 JMP TSKFOR /YES +05176 015711 6 ADD (RSEX) /NO,FROM MODEM, MUST DUPLICATE-DETF +05177 011151 6 STA ACKP +05200 044005 6 LDA HEAD X +05201 100100 6 SLZ 0"A"LINETS /IS THIS A ROUTING MESSAGE? +05202 003407 6 JMP TSKRUT /YES +05203 044004 6 LDA ACKH X +05204 141340 6 ICA +05205 006120 6 ANA SEVEN 0"A"CHANUM /GET CHANNEL NO +05206 015712 6 ADD (BITTAB) +05207 011144 6 STA ACKBIT /CONVERT TO BIT PNTR TABLE ADDR +05210 044004 6 LDA ACKH X +05211 100400 6 SPL 0"A"ODEVEN /GET ODD-EVEN BIT FROM PKT +05212 003157 6 JMP TSKM3 /JUMP IF BIT IS ONE +05213 105151 6 LDA ACKP I /COMPARE WITH WHAT WE WANT +05214 140401 6 CMA +05215 107144 6 TSKM4: ANA ACKBIT I /MASK WITH CONTENTS OF BITTAB +05216 100040 6 SZE +05217 003642 6 JMP FQMOD /IF DUPLICATE --FREE AND QUIT MODEM +05220 044006 6 TSKFOR: LDA HEAD1 X +05221 007713 6 ANA (DESTI) +05222 010000 6 STA 0 /STOR DEST NO FROM HEADER IN X +05223 044165 6 LDA RUT X /GET ROUTE +05224 101040 6 SNZ 0"A"RUTUS /IS IT FOR US? +05225 103714 6 JMP (FORUS) I /YES +05226 100400 6 SPL 0"A"RUTDED +05227 003601 6 JMP FQOK /FOR DEAD GUY, RUT WD WAS MINUS +05230 007715 6 ANA (RUTDLC) +05231 016114 6 SUB ONE /TASK STORE-AND-FORWARD +05232 010000 6 STA 0 /STOPE SHIFTED ROUTE IN X (0 TO C1 +05233 044433 6 LDA LINE X /TEST FOR LINE TEST STATUS +05234 100040 6 SZE /IS LINE DEAD? +05235 003637 6 JMP FQNG /YES, WAIT TILL ROUTING STABLE + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 64 IMP,3050,IMP 7:20 PM 9/16/1973 + +05236 001001 6 INH [M2I,I2M,H2I] +05237 004540 6 0 LDA NSFA /COMPUTE NO SF BUFFS IN USE +05240 016564 6 0 SUB NSFS +05241 141206 6 0 AOA /WE NEED ONE MORE +05242 022573 6 0 CAS MAXSI /ENOUGH S-F ROOM? +05243 003637 6 0 JMP FQNG /NO +05244 003637 6 0 JMP FQNG /NO +05245 004537 6 0 LDA NFA +05246 016563 6 0 SUB NFS /COMPUTE NO OF FREE BUFFS AVAIL, +05247 016542 6 0 SUB NALA /CONSIDERING ALLOCATED AND USED +05250 014566 6 0 ADD NALS +05251 016570 6 0 SUB MINF +05252 100400 6 0 SPL /DO WE HAVE MIN FREE BUFFS? +05253 003637 6 0 JMP FQNG /NO +05254 044653 6 0 LDA CHFREE X /FREE SLOT BITS +05255 140407 6 0 TCA +05256 046653 6 0 ANA CHFREE X /SINGLE LEAST SIGNIFICANT BIT SET +05257 101040 6 0 SNZ +05260 003637 6 0 JMP FQNG /ALL CHANNELS ARE IN USE +05261 011147 6 0 STA I2MBIT /FOR MARKING CHANNEL LATER +05262 052653 6 0 ERA CHFREE X /NOW MARK IT ASSIGNED +05263 050653 6 0 STA CHFREE X +05264 000401 6 0 ENB TSK /YES +05265 033145 6 STX OURR /SAVE OUR ROUTE (0 TO CH-1) + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 65 IMP,3050,IMP 7:20 PM 9/16/1973 + +05266 005147 6 LDA I2MBIT +05267 022116 6 CAS THREE +05270 040575 6 ARS 3 /CH 2-7 +05271 100000 6 SKP /CAS IS NEVER EQUAL +05272 003277 6 JMP GOTCHN /CH 0-1 +05273 022116 6 CAS THREE +05274 040575 6 ARS 3 /CH 5-7 +05275 014116 6 ADD THREE /CAS IS NEVER EQUAL +05276 014116 6 ADD THREE +05277 016114 6 GOTCHN: SUB ONE /GOT CHANNEL 0-7 +05300 011150 6 STA ACKCH +05301 054622 6 ADD I2MTAB X /GET PTR TO SLOT +05302 011146 6 STA I2MSLT +05303 005147 6 LDA I2MBIT +05304 111146 6 STA I2MSLT I /MARK SLOT IN USE +05305 046641 6 ANA TSEX X /GET O/E BIT IN TSEX +05306 100040 6 SZE /WAS IT ZERO? +05307 005716 6 LDA (200) 0"A"ODEVEN /NO, SET O/E BIT +05310 013150 6 ERA ACKCH /PUT SLOT NO IN A +05311 141240 6 ICR /PUT IN LEFT HALF +05312 072514 6 LDX THIS /BUFF ADDR TO X +05313 011147 6 STA I2MBIT /USED AS A TEMP WORD +05314 044111 6 LDA BUFE X +05315 140100 6 SSP 0"A"TWOQ +05316 027147 6 IMA I2MBIT /NOW HAS PTR TO CHECKSUM +05317 066004 6 IMA ACKH X /SAVE BIT, CHANNEL IN ACKHEADER +05320 056004 6 SUB ACKH X +05321 115147 6 ADD I2MBIT I /AND ADJUST CHECKSUM +05322 111147 6 STA I2MBIT I +05323 044007 6 LDA HEAD2 X /NOW PUT IN BIT FOR LO-HI LINE EN[ +05324 007717 6 ANA (0 0 177777"X"ENDBIT) +05325 073145 6 LDX OURR /THIS BIT DETECTS LOOPED LINES +05326 113720 6 ERA (LEND 0 X) I +05327 072514 6 LDX THIS +05330 066007 6 IMA HEAD2 X +05331 056007 6 SUB HEAD2 X /ADJUST CHECKSUM AGAIN +05332 115147 6 ADD I2MBIT I +05333 111147 6 STA I2MBIT I + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 66 IMP,3050,IMP 7:20 PM 9/16/1973 + +05334 044006 6 LDA HEAD1 X +05335 007721 6 ANA (TRACE) +05336 100040 6 SZE /MUST WE TRACE HIM? +05337 021504 6 JST TSUB /TRACE HIM IF NECESSARY +05340 005146 6 LDA I2MSLT /PUT OUR SLOT IN PKT +05341 050003 6 STA INCH X /AND I2M WILL SET IT UP AT OUTPUT * +05342 044005 6 LDA HEAD X +05343 007722 6 ANA (TRNREP) /GET TRNREP BIT +05344 001001 6 INH SIN +05345 101040 6 0 SNZ /IS THIS A REPLY? +05346 003357 6 0 JMP SFPRI /YES +05347 044006 6 0 LDA HEAD1 X +05350 100400 6 0 SPL 0"A"PRIBIT /IS THIS A PRI TRN? +05351 003357 6 0 JMP SFPRI /YES +05352 004514 6 0 LDA THIS /NO, SO PUT ON REG MODEM QUEUE +05353 073145 6 0 LDX OURR +05354 150363 6 0 STA EMQ XI /LINK BUFF TO END OF REG CHL Q +05355 050363 6 0 STA EMQ X +05356 003363 6 0 JMP SFALL + +05357 004514 6 0 SFPRI: LDA THIS /YES, SO PUT ON PRI MODEM QUEUE +05360 073145 6 0 LDX OURR +05361 150370 6 0 STA EMPQ XI /LINK BUFF TO END OF PRI CHL Q +05362 050370 6 0 STA EMPQ X +05363 024540 6 0 SFALL: IRS NSFA /COUNT A S-F PKT +05364 044440 6 0 LDA NONE X +05365 100040 6 0 SZE /POKE MODEM OUTPUT IF IDLE +05366 003604 6 0 JMP GOODM /NO NEED +05367 121723 6 0 JST (I2MSB) I RET TSK +05370 001001 6 INH ALL +05371 000011 6 0 DXA +05372 003604 6 0 JMP GOODM /RETURN GOOD ACK + + LEV FRE /CALL WITH INTERRUPTS LOCKED +05373 000000 0 FLUSH: 0 /RETURN BUFFER TO FREE LIST +05374 044111 0 LDA BUFE X +05375 100400 0 SPL 0"A"TWOQ /IS PACKET ON 2 QUEUES? +05376 003404 0 JMP FLUSH1 /YES +05377 004324 0 LDA FREE /NO, SO FREE IT +05400 050000 0 STA 0 X /STORE PNTR TO FREE LIST +05401 032324 0 STX FREE /STORE PNTR TO PACKET +05402 024537 0 IRS NFA /INCREASE NO OF FREE PKTS +05403 103373 0 JMP FLUSH I +05404 140100 0 FLUSH1: SSP 0"A"TWOQ /MARK PACKET AS ON ONE QUEUE +05405 050111 0 STA BUFE X +05406 103373 0 JMP FLUSH I + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 67 IMP,3050,IMP 7:20 PM 9/16/1973 + + LEV TSK +05407 073143 6 TSKRUT: LDX TASKIN /INPUT CHL NO +05410 040677 6 ARR 1 0"A"NULPKT +05411 100100 6 SLZ /THIS A NULL PACKET? +05412 003446 6 JMP TSKNUL /YES +05413 041677 6 ALR 1 +05414 141140 6 ICL /GET OTHER GUYS IMPNO +05415 066160 6 IMA NEIGHB X /SAVE IT +05416 100040 6 SZE /DO NOT KILL LINE IF WE JUST DID +05417 052160 6 ERA NEIGHB X +05420 100040 6 SZE /DO KILL LINE IF NEIGHBOR HAS CHANG1 +05421 003452 6 JMP NEIKIL +05422 065565 6 IRS E123 X /INCREMENT NUMBER OF RECD RUT MSGS +05423 101000 6 NOP +05424 044160 6 LDA NEIGHB X /COMPUTE AND SET HI-LO BIT +05425 016106 6 SUB MINE +05426 100040 6 SZE +05427 003433 6 JMP TSKCPY /COPY IN ROUTING INFO +05430 004114 6 LDA ONE +05431 010452 6 STA LUUP /BLINK LUUPED LITE +05432 003642 6 JMP FQMOD + +05433 001001 6 TSKCPY: INH MSK +05434 004124 6 0 LDA MINUS4 /LOCK OUT SLOW T.O +05435 170120 6 0 SMK INTM /SHARED CODE & TABLES +05436 010134 6 0 STA PRIM LEV T.O LCK MSK +05437 140040 5 0 CRA /MARK AS REAL INPUT +05440 000401 5 0 ENB T.O +05441 121724 5 JST (RSTINP) I +05442 072514 5 LDX THIS +05443 001001 5 INH [MSK,FRE] +05444 021373 5 0 JST FLUSH +05445 003116 5 0 JMP TSKMSK + + LEV TSK +05446 040675 6 TSKNUL: ARR 3 0"A"IHERDU +05447 100100 6 TSKNU2: SLZ /DID WE GET AN IHEARD YOU? +05450 064426 6 TSKNU3: DEFSTAT IRS LAC X, TSKIH /YES +00574 031212 6 +31770 005450 6 +32010 064426 6 +05451 003642 6 TSKNU4: JMP FQMOD + +05452 001001 6 NEIKIL: INH ALL +05453 011576 6 0 STA NEIT +05454 121725 6 0 JST (KILLIN) I +05455 005576 6 0 LDA NEIT + DEFHLT [NEIGHBOR IMP CHANGED] +05456 021635 6 0 JST THLTNG + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 68 IMP,3050,IMP 7:20 PM 9/16/1973 + + LEV TSK LCK [H2I,T.O] +05457 000000 6 4 SWPCHK: 0 +05460 011152 6 4 STA SWPCHT /BITS TO PUT INTO HEAD1 +05461 044006 6 4 LDA HEAD1 X +05462 007726 6 4 ANA (FORIMP 0 FOROCT DESTHI) +05463 066007 6 4 IMA HEAD2 X /SWITCH SRC FOR DEST AND V.V. +05464 007726 6 4 ANA (FRMIMP 0 FRMOCT SRCEHI) +05465 013152 6 4 ERA SWPCHT +05466 050006 6 4 STA HEAD1 X +05467 044111 6 4 LDA BUFE X +05470 006112 6 4 ANA SIGN 0"A"TWOQ +05471 014000 6 4 ADD 0 +05472 015727 6 4 ADD (MINPL+1) /FIX LENGTH OF REPLY +05473 050111 6 4 STA BUFE X +05474 005730 6 4 LDA (MINPL-ACKH+1) +05475 056004 6 4 SUB ACKH X +05476 056005 6 4 SUB HEAD X +05477 056006 6 4 SUB HEAD1 X /BUILD CHECKSUM +05500 056007 6 4 SUB HEAD2 X +05501 056010 6 4 SUB HEAD3 X +05502 050011 6 4 STA DATA X /NOW STORE IT +05503 103457 6 4 JMP SWPCHK I + + LEV TSK /TSUB DOES THE TASK PART OF TRACING +05504 000000 6 TSUB: 0 +05505 004416 6 LDA TIMES /GET TIME IN SLOW TICKS +05506 016107 6 SUB M30SEC +05507 050003 6 STA INCH X /GIVE PKT 30 SEC. TO LIVE +05510 044006 6 LDA HEAD1 X +05511 007721 6 ANA (TRACE) +05512 100040 6 SZE /MUST WE TRACE HIM? +05513 105731 6 TSUB2: LDA (TRON) I +05514 101040 6 SNZ +05515 103504 6 JMP TSUB I +05516 004325 6 LDA TTF /FREE TRACE BLOCK PNTR +05517 100040 6 SZE +05520 003524 6 JMP TS2 /JUMP IF THERE ARE FREE TRACE BLOCK +05521 141206 6 AOA +05522 010414 6 STA TTO /MARK TRACE TABLE OVERFLOW +05523 103504 6 JMP TSUB I + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 69 IMP,3050,IMP 7:20 PM 9/16/1973 + +05524 033572 6 TS2: STX SPB /SAVE BUFFER PNTR +05525 011573 6 STA STB /FREE TRC BLK BUFF PNTR +05526 050002 6 STA PTRT X /SET UP TRACE POINTER +05527 026341 6 IMA STRQ /GET STRT OF ACTIVE TRC Q +05530 127573 6 IMA STB I /LINK TO TOP OF TRACE Q +05531 010325 6 STA TTF /STORE ADDR OF NEXT FREE BLK +05532 004341 6 LDA STRQ /ADDR OF NEW TOP OF Q +05533 015732 6 ADD (THED+4 X) /SET UP LAST TRC BUFF ADDR +05534 011574 6 STA ITB +05535 005572 6 LDA SPB /ADDR OF PKT BUFF +05536 015732 6 ADD (HEAD+4 X) /SET UP LAST PKT BUFF ADDR +05537 011575 6 STA IMB +05540 072124 6 LDX MINUS4 /TRANSFER PKT BUFF TO TRC BUFF +05541 105575 6 LDA IMB I +05542 111574 6 STA ITB I +05543 024000 6 IRS 0 /FINISHED? +05544 003541 6 JMP .-3 /NO +05545 073572 6 LDX SPB /YES +05546 044001 6 LDA IT X /SAVE INPUT TIME IN TRACE TABLE +05547 073573 6 LDX STB +05550 050001 6 STA TIT X +05551 073572 6 LDX SPB +05552 044111 6 LDA BUFE X +05553 140100 6 SSP 0"A"TWOQ +05554 016000 6 SUB 0 +05555 016117 6 SUB FOUR 0"A"ACKH /CALCULATE PACKET LENGTH +05556 073573 6 LDX STB +05557 050012 6 STA TDONE X +05560 131040 6 RDCLOK +05561 003560 6 JMP .-1 /SAVE TASK TIME IN TRACE TABLE +05562 050002 6 STA TTT X +05563 073572 6 LDX SPB /RESTORE BUFFER PNTR IN X +05564 103504 6 JMP TSUB I + + LEV VAR +05565 V E123: BSS CH /NUMBER OF RUT MSGS RECD FROM CHL( +05572 V SPB: BSS 1 /SAVE PACKET BUFFER +05573 V STB: BSS 1 /SAVE TRACE BUFFER +05574 V ITB: BSS 1 /INDIRECT TO TRACE BUFFER +05575 V IMB: BSS 1 /INDIRECT TO PACKET BUFFER +05576 V NEIT: BSS 1 /TEMP + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 70 IMP,3050,IMP 7:20 PM 9/16/1973 + + /END-OF-TASK ROUTINES + /RETURN A NACK OR ACK TO THE SENDING MODEM, HOST, OR BACK + LEV TSK LCK ALL +05577 000000 6 0 THLTOK: 0 /REPORT BUG AND GIVE GOOD RETURN +05600 120745 6 0 JST HLTNCC I + LEV TSK +05601 072514 6 FQOK: LDX THIS /FREE+QUIT, GOOD RETURN +05602 001001 6 INH [FRE,SIN] +05603 021373 6 0 JST FLUSH /FREE THE BUFFER +05604 005143 6 0 GOODM: LDA TASKIN /GOOD RETURN +05605 100400 6 0 SPL 0"A"HSTMOD /FROM HOST? +05606 003622 6 0 JMP GOODH /YES +05607 010000 6 0 STA 0 0"A"INPCHN +05610 105144 6 0 LDA ACKBIT I /FROM MODEM, GIVE ACK +05611 050445 6 0 STA SNULL X /SEND A NULL PKT IF NECESSARY TO E'1 +05612 052646 6 0 ERA RSEX X /REVERSE PROPER BIT IN RSEX +05613 050646 6 0 STA RSEX X +05614 044440 6 0 LDA NONE X /CHECK ACTIVITY ON MODEM +05615 101040 6 0 SNZ /RESTART I2M IF NECESSARY FOR MY AC +05616 121723 6 0 JST (I2MSB) I RET TSK +05617 001001 6 INH ALL +05620 000011 6 0 DXA +05621 003121 6 0 JMP TSKL + +05622 140100 6 0 GOODH: SSP 0"A"HSTMOD /NEED TO CLEAR SIGN FOR HISB +05623 010000 6 0 STA 0 0"A"INPCHN +05624 064453 6 0 IRS TSKFLG X /DOUBLE SKIP = GOOD RETURN +05625 064453 6 0 IRS TSKFLG X +05626 014131 6 0 ADD MITH +05627 000013 6 0 EXA +05630 100400 6 0 SPL /FROM BACK HOST? +05631 121733 6 0 JST (HISB) I RET TSK /NO, POKE HOST WAITING FO +05632 001001 6 INH ALL +05633 000011 6 0 DXA +05634 003121 6 0 JMP TSKL + + LEV TSK LCK ALL +05635 000000 6 0 THLTNG: 0 /REPORT BUG AND GIVE BAD RETURN +05636 120745 6 0 JST HLTNCC I + LEV TSK +05637 005143 6 FQNG: LDA TASKIN /FREE+QUIT, BAD RETURN +05640 100400 6 SPL 0"A"HSTMOD /FROM HOST? +05641 003646 6 JMP BADH +05642 072514 6 FQMOD: LDX THIS /FROM MODEM, DO NOT ACK +05643 001001 6 INH FRE +05644 021373 6 0 JST FLUSH +05645 003121 6 0 JMP TSKL + + LEV TSK +05646 010000 6 BADH: STA 0 0"A"INPCHN /YES, RETURN A NACK TO HO +05647 064453 6 IRS TSKFLG X /SINGLE SKIP = BAD RETURN +05650 003121 6 JMP TSKL /DO NOT POKE HOST (ALLOW BACK TO RU + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 71 IMP,3050,IMP 7:20 PM 9/16/1973 + + LEV TSK LCK FRE +05651 004326 6 0 NEWMES: LDA RASF /NEW MULTI-PACKET MESSAGE FOR US +05652 101040 6 0 SNZ /GET REAS BLOCK + DEFHLT [NO REAS BLOCK FOR MULTI-PKT MESS] +05653 121734 6 0 JST (THLTNG) I +05654 004751 6 0 LDA 8PKTS +05655 014541 6 0 ADD NREA /CHECK REAS ROOM +05656 016565 6 0 SUB NRES +05657 022572 6 0 CAS MAXR +05660 101000 6 0 NOP /NO ROOM, FOUL-UP + DEFHLT [MAXR EXCEEDED BY NON-REQUEST MULTI-PKT MESS] +05661 121734 6 0 JST (THLTNG) I +05662 004537 6 0 LDA NFA +05663 016563 6 0 SUB NFS +05664 016751 6 0 SUB 8PKTS +05665 016570 6 0 SUB MINF +05666 100400 6 0 SPL + DEFHLT [MINF VIOLATED BY NON-REQUEST MULTI-PKT MESS] +05667 121734 6 0 JST (THLTNG) I +05670 104326 6 0 LDA RASF I +05671 026326 6 0 IMA RASF +05672 010000 6 0 STA 0 +05673 026340 6 0 IMA SHRQ /PUT ON REAS QUEUE +05674 050000 6 0 STA 0 X +05675 004751 6 0 LDA 8PKTS +05676 014541 6 0 ADD NREA /NOW TAKE ROOM +05677 010541 6 0 STA NREA +05700 004751 6 0 LDA 8PKTS +05701 014566 6 0 ADD NALS +05702 010566 6 0 STA NALS +05703 004112 6 0 LDA SIGN /INIT RMAX +05704 050002 6 0 STA RMAX X +05705 105735 6 0 LDA (MESSID) I /ESTABLISH RID +05706 050001 6 0 STA RID X + /RSF IS SET UP AT INIT AND AFTER USE TO BE ZERO + /THE SAME IS TRUE OF REAS PNTRS +05707 103736 6 0 JMP (OLDMES) I + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 72 IMP,3050,IMP 7:20 PM 9/16/1973 + +05710 000330 C LEV CON CONSTANTS +05711 000646 C +05712 001233 C +05713 000077 C +05714 006056 C +05715 000037 C +05716 000200 C +05717 176777 C +05720 050254 C +05721 020000 C +05722 000004 C +05723 012604 C +05724 026120 C +05725 011133 C +05726 050377 C +05727 000011 C +05730 000005 C +05731 030434 C +05732 040011 C +05733 013106 C +05734 005635 C +05735 006664 C +05736 006313 C +02414 176744 C PAGEND 5,UNCON,4 + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 73 IMP,3050,IMP 7:20 PM 9/16/1973 + + /TASK REASSEMBLY + LEV TSK +06056 072514 6 FORUS: LDX THIS /PNTR TO PKT BUFF +06057 044007 6 LDA HEAD2 X /TASK FOR US +06060 007674 6 ANA (SRCEI) /SOURCE IMP MASK +06061 011673 6 STA SOURCE /PREPARE MESS TABLE ENTRY +06062 044005 6 LDA HEAD X +06063 141044 6 CAR 0"A"MESSNO +06064 011661 6 STA MESNUM /SAVE OUR MESS NO +06065 013673 6 ERA SOURCE +06066 011664 6 STA MESSID /PREPARE MESSAGE ID +06067 044005 6 LDA HEAD X +06070 007675 6 ANA (TRNREP) +06071 100040 6 SZE +06072 005676 6 LDA (0 0 RMESS"X"TMESS) +06073 013677 6 ERA (TMESS) /PICK TRANSMIT OR REPLY TABLE +06074 015673 6 ADD SOURCE +06075 011660 6 STA MESTAB +06076 001001 6 INH [H2I,T.O] +06077 105660 6 4 LDA MESTAB I /GET OLDEST MSG NO WE ARE EXPECTING +06100 141044 6 4 CAR 0"A"MESSNO /GET MESS NO WE WANT +06101 017661 6 4 SUB MESNUM /COMPARE WITH MESS NO WE GOT +06102 100400 6 4 SPL /IS MESS NO WE GOT TOO HIGH? +06103 003375 6 4 JMP MESOUT /YES +06104 141140 6 4 ICL +06105 022116 6 4 CAS THREE /IS MESS NO WE GOT TOO LOW? +06106 003375 6 4 JMP MESOUT /YES +06107 101000 6 4 NOP /GOOD MESS NO +06110 015700 6 4 ADD (MBITS) /NOW CONVERT DIFF BETWEEN MESSNOS +06111 011662 6 4 STA MESBIT /INTO A BIT - 1,2,4, OR 10 +06112 044005 6 4 LDA HEAD X +06113 007701 6 4 ANA (INCTRN 0 TRNREP) +06114 013701 6 4 ERA (INCTRN 0 TRNREP) +06115 101040 6 4 SNZ /IS IT AN INCOMPLETE TRANS? +06116 003431 6 4 JMP INCGOT /YES +06117 105662 6 4 LDA MESBIT I /NO, LOAD DIFFERENCE BIT +06120 107660 6 4 ANA MESTAB I /CHECK AGAINST MSG NO +06121 000401 6 4 ENB TSK +06122 100040 6 SZE /IS MESS NO A DUPLICATE? +06123 103702 6 JMP (FQOK) I /YES, DISCARD PKT +06124 044005 6 LDA HEAD X /GOOD MESSAGE FOR US +06125 007675 6 ANA (TRNREP) +06126 101040 6 SNZ /IS IT A REPLY? +06127 103703 6 JMP (REPGOT) I /YES +06130 073673 6 LDX SOURCE +06131 001001 6 INH [FRE,H2I,T.O] +06132 044165 6 0 LDA RUT X +06133 100400 6 0 SPL + DEFHLT [RECVD TRANSMISSION FROM DEAD IMP] +06134 121704 6 0 JST (THLTOK) I +06135 007705 6 0 ANA (0 0 177777"X"RUTCMU) +06136 050165 6 0 STA RUT X +06137 072514 6 0 LDX THIS + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 74 IMP,3050,IMP 7:20 PM 9/16/1973 + +06140 044005 6 0 LDA HEAD X +06141 007706 6 0 ANA (GVBALL) +06142 100040 6 0 SZE /IS IT A REGULAR TRANSMIT? +06143 003447 6 0 JMP GUDGVB /NO, WE MUST RETURN A REPLY +06144 044006 6 0 LDA HEAD1 X +06145 121707 6 0 JST (HOSTNO) I +06146 000401 6 0 ENB TSK +06147 010000 6 STA 0 +06150 044504 6 LDA HIHD X 0"A"HSTUP +06151 072514 6 LDX THIS +06152 100040 6 SZE /IS THIS TRANS FOR A DEAD HOST? +06153 005710 6 LDA (0 0 TRNDED"X"TRNDIS) +06154 013711 6 ERA (JMP TRNDIS) /PICK REGULAR OR DEAD DIS[ +06155 011164 6 STA TRNJMP +06156 044005 6 LDA HEAD X /GOOD TRANSMISSION FOR US +06157 141050 6 CAL +06160 040572 6 ARS 6 0"A"ONEOR8"A"REQALL +06161 015164 6 ADD TRNJMP +06162 011164 6 STA TRNJMP +06163 001001 6 INH FRE +06164 6 0 TRNJMP: BSS 1 /DISPATCH ON 1 OR 8 PKT, REQ OR RE' +06165 003302 6 0 TRNDIS: JMP TRNGT8 /NON-REQ S PKT +06166 003455 6 0 JMP GUDRQ8 /REQ 8 PKT +06167 003227 6 0 JMP TRNGT1 /NON-REQ 1 PKT +06170 105662 6 0 LDA MESBIT I /REQ 1 PKT +06171 012114 6 0 ERA ONE +06172 101040 6 0 SNZ /IS THIS REQ THE NEXT TO GO? +06173 003204 6 0 JMP TRNDS1 /YES +06174 044006 6 0 LDA HEAD1 X /NO +06175 101400 6 0 SMI 0"A"PRIBIT /IS IT A PRI REQ? +06176 003222 6 0 JMP GUDRQ1 /NOT PRI, SO WE CAN GO NO FURTHER +06177 105660 6 0 LDA MESTAB I +06200 052005 6 0 ERA HEAD X +06201 007712 6 0 ANA (ORDNO) +06202 100040 6 0 SZE /IS HIS PRI ORD NO UP YET? +06203 003222 6 0 JMP GUDRQ1 /NO, SO HE MUST WAIT +06204 004542 6 0 TRNDS1: LDA NALA +06205 016566 6 0 SUB NALS +06206 014541 6 0 ADD NREA +06207 016565 6 0 SUB NRES +06210 141206 6 0 AOA +06211 022572 6 0 CAS MAXR +06212 003222 6 0 JMP GUDRQ1 /NO ROOM FOR 1 PKT MESS, TREAT AS R +06213 003222 6 0 JMP GUDRQ1 /NO ROOM FOR 1 PKT MESS, TREAT AS R +06214 004563 6 0 LDA NFS +06215 016537 6 0 SUB NFA +06216 141206 6 0 AOA +06217 014570 6 0 ADD MINF +06220 100400 6 0 SPL +06221 003244 6 0 JMP GUDTR1 + /NOTE THAT NO DUPLICATE DETECTION IS DONE HERE +06222 005664 6 0 GUDRQ1: LDA MESSID /ENTER HIS REQUEST +06223 013713 6 0 ERA (ONEOR8) /FOR ONE BUFFER +06224 121714 6 0 JST (RALLYP) I + DEFHLT [RALLY ENTRY ALREADY PRESENT FOR REQ 1 PKT] +06225 121704 6 0 JST (THLTOK) I +06226 103702 6 0 JMP (FQOK) I /DO NOT MARK MESS NO COMPLETE + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 75 IMP,3050,IMP 7:20 PM 9/16/1973 + +06227 004541 6 0 TRNGT1: LDA NREA /CHECK REAS ROOM +06230 016565 6 0 SUB NRES +06231 141206 6 0 AOA /ROOM FOR ONE MORE? +06232 022572 6 0 CAS MAXR + DEFHLT [MAXR EXCEEDED BY A NON-REQUEST 1 PKT MESS] +06233 101000 6 0 NOP +06234 121715 6 0 JST (THLTNG) I /NO, A FOUL-UP +06235 004563 6 0 LDA NFS +06236 016537 6 0 SUB NFA +06237 141206 6 0 AOA +06240 014570 6 0 ADD MINF +06241 101400 6 0 SMI /DO WE HAVE ENOUGH FREE? + DEFHLT [MINF VIOLATED BY A NON-REQUEST 1 PKT MESS] +06242 121715 6 0 JST (THLTNG) I /NO, A FOUL-UP +06243 024566 6 0 IRS NALS +06244 024541 6 0 GUDTR1: IRS NREA /YES, SO TAKE IT +06245 000401 6 0 ENB TSK +06246 033670 6 STX READY /SAVE PACKET POINTER +06247 003350 6 JMP GUDTRN /NOW TRY TO GIVE TO HOST + + LCK FRE +06250 003276 6 0 TRNDED: JMP TRNDD8 /NON-REQ 8 PKT +06251 003455 6 0 JMP GUDRQ8 /REQ 8 PKT +06252 024566 6 0 IRS NALS /NON-REQ 1 PKT - ONLY HAPPENS IF [' +06253 064010 6 0 TRNDD1: IRS HEAD3 X 0"A"CHSTD /REQ 1 PKT +06254 044005 6 0 LDA HEAD X +06255 007716 6 0 ANA (0 0 177777"X"INCTRN"X"TRNREP"X"ALLOC) +06256 050005 6 0 STA HEAD X +06257 005717 6 0 LDA (REPDED) /SWAP SRC&DEST +06260 121720 6 0 JST (SWPCHK) I /AND CHECKSUM IT +06261 005664 6 0 LDA MESSID +06262 072112 6 0 LDX SIGN /MARK ENTRY FOR DEST DEAD +06263 121714 6 0 JST (RALLYP) I /PUT IN A DUMMY ENTRY + DEFHLT [RALLY ENTRY ALREADY PRESENT FOR DESTINATION DEAD] +06264 121704 6 0 JST (THLTOK) I +06265 072514 6 0 LDX THIS +06266 132402 6 0 STX ERQ I /HAND TO BAK +06267 032402 6 0 STX ERQ +06270 021537 6 0 JST REASGT +06271 003463 6 0 JMP NXMES1 /NO PKTS CAME IN SO FAR +06272 044000 6 0 LDA 0 X +06273 111667 6 0 STA TEND I /SPLICE UP REAS Q +06274 121721 6 0 JST (REASF) I /AND FREE UP THIS BLK +06275 003463 6 0 JMP NXMES1 + +06276 004751 6 0 TRNDD8: LDA 8PKTS +06277 014566 6 0 ADD NALS +06300 010566 6 0 STA NALS /MUST TAKE BACK ROOM WE ALLOCATED +06301 003253 6 0 JMP TRNDD1 + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 76 IMP,3050,IMP 7:20 PM 9/16/1973 + +06302 000401 6 0 TRNGT8: ENB TSK +06303 044006 6 LDA HEAD1 X /MULTI-PACKET TRANS FOR US +06304 141340 6 ICA +06305 006120 6 ANA SEVEN 0"A"PKTNO /GET PACKET NO +06306 011663 6 STA PKTN +06307 015722 6 ADD (REAS 0 X) +06310 011666 6 STA ORS /SAVE POST-INDEXED PNTR TO OUR REAS +06311 021537 6 JST REASGT LCK T.O /FIND OUR GUY IN REAS +06312 103723 6 5 JMP (NEWMES) I /NOT THERE, SO START A NEW MESS +06313 033665 6 5 OLDMES: STX ORB /SAVE PNTR TO OUR REAS BLOCK +06314 105666 6 5 LDA ORS I +06315 100040 6 5 SZE /IS IT EMPTY? +06316 103702 6 5 JMP (FQOK) I /NO, A DUPLICATE PACKET +06317 004514 6 5 LDA THIS +06320 111666 6 5 STA ORS I /PUT PACKET IN OUR REAS SLOT +06321 010000 6 5 STA 0 +06322 044007 6 5 LDA HEAD2 X +06323 073665 6 5 LDX ORB +06324 101400 6 5 SMI 0"A"LSTPKT /IS THIS THE LAST PACKET? +06325 003334 6 5 JMP NOTL /NO +06326 005663 6 5 LDA PKTN /GET PACKET NO +06327 050002 6 5 STA RMAX X /SAVE IN REAS BLOCK +06330 016120 6 5 SUB SEVEN 0"A"8PKTS +06331 140407 6 5 TCA +06332 014565 6 5 ADD NRES +06333 010565 6 5 STA NRES /ADJUST REAS COUNT FOR SURPLUS +06334 044013 6 5 NOTL: LDA RSF X +06335 062002 6 5 CAS RMAX X /IS REAS DONE? +06336 100000 6 5 SKP /NO +06337 003342 6 5 JMP DONE /YES +06340 064013 6 5 IRS RSF X +06341 103724 6 5 JMP (GOODM) I + +06342 044000 6 5 DONE: LDA 0 X /REAS COMPLETE +06343 111667 6 5 STA TEND I /REMOVE BLOCK FROM QUEUE +06344 000401 6 5 ENB TSK +06345 005665 6 LDA ORB +06346 140500 6 SSM /MARK AS MULTI-PACKET +06347 011670 6 STA READY + +06350 021360 6 GUDTRN: JST MESSOK LCK [H2I,T.O] +06351 100100 6 4 SLZ /IS MESS NO THE ONE WE WANT? +06352 003555 6 4 JMP T2H /YES, GIVE TO HOST +06353 005670 6 4 LDA READY /NO, PUT BUFFER OR BLOCK +06354 026327 6 4 IMA MESSTK /ON COMPLETED MESSAGE STACK +06355 072327 6 4 LDX MESSTK /DO THIS SINCE SIGN BIT MAY BE SET +06356 050000 6 4 STA 0 X +06357 003471 6 4 JMP SMSTK /AND SEARCH FOR NEXT MESS + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 77 IMP,3050,IMP 7:20 PM 9/16/1973 + + LEV TSK +06360 000000 6 MESSOK: 0 /MARK MESS NO TO PREVENT DUPLICATES +06361 001001 6 INH [H2I,T.O] +06362 105660 6 4 LDA MESTAB I +06363 141044 6 4 CAR 0"A"MESSNO +06364 017661 6 4 SUB MESNUM +06365 141140 6 4 ICL +06366 015700 6 4 ADD (MBITS) +06367 011662 6 4 STA MESBIT +06370 105662 6 4 LDA MESBIT I +06371 113660 6 4 ERA MESTAB I /TURN ON GOT-IT BIT +06372 007725 6 4 ANA (0 0 177777"X"MSTO1"X"MSTO2) +06373 111660 6 4 STA MESTAB I /TURN OFF TIME OUT BITS +06374 103360 6 4 JMP MESSOK I + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 78 IMP,3050,IMP 7:20 PM 9/16/1973 + + LEV TSK LCK [H2I,T.O] +06375 044005 6 4 MESOUT: LDA HEAD X +06376 007701 6 4 ANA (INCTRN 0 TRNREP) +06377 013701 6 4 ERA (INCTRN 0 TRNREP) +06400 100040 6 4 SZE /IS THIS AN INC TRN? +06401 103702 6 4 JMP (FQOK) I /NO, OUT OF RANGE, DISCARD PKT +06402 044005 6 4 INCREP: LDA HEAD X /THIS CODE IS FOR OUT-OF-RANGE MESS +06403 007726 6 4 ANA (0 0 177777"X"INCTRN"X"TRNREP"X"GVBALL"X"RFNM) +06404 013676 6 4 ERA (RFNM) /RFNM ON IN ALL RPLYS XCPT REQ8 +06405 066005 6 4 IMA HEAD X +06406 007727 6 4 ANA (ONEOR8 0 REQALL) +06407 013676 6 4 ERA (REQALL) +06410 100040 6 4 SZE /REQ FOR 8? +06411 003415 6 4 JMP PUTREP /NO, MAKE A REPLY +06412 005730 6 4 LDA (ALLOC 0 RFNM) /Y, TURN OFF RFNM, TURN 'T +06413 052005 6 4 ERA HEAD X +06414 050005 6 4 STA HEAD X +06415 140040 6 4 PUTREP: CRA /SWAP DEST FOR SRC +06416 121720 6 4 JST (SWPCHK) I /AND CHECKSUM IT +06417 132402 6 4 STX ERQ I /ADD TO REPLY QUEUE +06420 032402 6 4 STX ERQ +06421 103724 6 4 JMP (GOODM) I /AND GIVE GOOD RETURN + +06422 021537 6 4 INCGT8: JST REASGT /FIND THIS INC TRN IN REAS +06423 003427 6 4 JMP SNDRP8 /NOT THERE, WE NEVER SAW HIM +06424 044000 6 4 LDA 0 X +06425 111667 6 4 STA TEND I /REMOVE FROM REAS QUEUE +06426 121721 6 4 JST (REASF) I /FREE REAS BLOCK AND PKTS +06427 005676 6 4 SNDRP8: LDA (RFNM) /CREATE A REPLY TO 8-PKT INC TRN +06430 003453 6 4 JMP SNDRP1 + +06431 105662 6 4 INCGOT: LDA MESBIT I /GOT AN INC TRANS +06432 107660 6 4 ANA MESTAB I /EXPLICITLY PERMIT DUPLICATES +06433 100040 6 4 SZE /HAVE WE SEEN HIM COMPLETED YET? +06434 003402 6 4 JMP INCREP /YES, SEND BACK DUPLICATE REPLY +06435 044005 6 4 LDA HEAD X +06436 007727 6 4 ANA (ONEOR8 0 REQALL) +06437 101040 6 4 SNZ /8 PKT INC TPN? +06440 003422 6 4 JMP INCGT8 /YES +06441 007713 6 4 ANA (ONEOR8) +06442 101040 6 4 SNZ /8 PKT REQ FOR ALL? +06443 003455 6 4 JMP GUDRQ8 /YES, IT IS INSIDE WINDOW +06444 044005 6 4 LDA HEAD X /NEVER SAW THIS 1 PKT GUY +06445 007706 6 4 ANA (GVBALL) +06446 100040 6 4 SZE /IS THIS A GVB? +06447 004751 6 4 GUDGVB: LDA 8PKTS /YES +06450 014566 6 4 ADD NALS /REMOVE BUFFER FROM ALLOCATE COUNT +06451 010566 6 4 STA NALS +06452 005727 6 4 LDA (ONEOR8 0 RFNM) +06453 072121 6 4 SNDRP1: LDX MINUS1 /MAKE A REPLY TO 1-PKT INC TRN +06454 003456 6 4 JMP GUDRAL + /SINCE IT MAY HAVE BEEN A REPLY TO AN INC TRN THAT WAS LOST + /WE SHOULD KEEP A RECORD OF THE HOST QUEUE LAST FLUSHED + /THIS WAY WE COULD SEND THE CORRECT DUPLICATE REPLY + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 79 IMP,3050,IMP 7:20 PM 9/16/1973 + +06455 140040 6 4 GUDRQ8: CRA +06456 013664 6 4 GUDRAL: ERA MESSID +06457 121714 6 4 JST (RALLYP) I /SET UP ENTRY TO REPLY + DEFHLT [RALLY ENTRY ALREADY PRESENT FOR INC OR REQ8] +06460 121704 6 4 JST (THLTOK) I +06461 072514 6 4 LDX THIS +06462 120671 6 4 JST FLUSHI I +06463 021360 6 4 NXMES1: JST MESSOK /MARK MESS NO AS COMPLETED +06464 105660 6 4 NXTMES: LDA MESTAB I +06465 101100 6 4 SLN /IS THIS THE MESS NO WE WANT? +06466 103724 6 4 JMP (GOODM) I /NO +06467 073660 6 4 LDX MESTAB +06470 121731 6 4 JST (UPMESS) I + + RET TSK +06471 005732 6 SMSTK: LDA (MESSTK) /SEARCH THE MESSAGE STACK +06472 011667 6 STA TEND /FOR MESSAGES WHOSE NUMBERS ARE UP +06473 001001 6 INH T.O +06474 004327 6 5 LDA MESSTK /GET CONTENTS OF STACK ENTRY +06475 101040 6 5 SRCSTK: SNZ /IS STACK EMPTY? +06476 003464 6 5 JMP NXTMES /YES +06477 011670 6 5 STA READY +06500 010000 6 5 STA 0 +06501 100400 6 5 SPL /IS THIS A REAS BLOCK? +06502 044003 6 5 LDA REAS X /YES, SO GET A PACKET +06503 010000 6 5 STA 0 +06504 044007 6 5 LDA HEAD2 X /GET SOURCE OF THIS PACKET +06505 013673 6 5 ERA SOURCE /COMPARE WITH OURS +06506 007674 6 5 ANA (SRCEI) +06507 100040 6 5 SZE /MATCH? +06510 003532 6 5 JMP SRCSTL /NO +06511 044006 6 5 LDA HEAD1 X +06512 101400 6 5 SMI 0"A"PRIBIT /IS IT PRIORITY? +06513 003520 6 5 JMP SRCST2 /NO +06514 105660 6 5 LDA MESTAB I /GET ORD NO WE WANT +06515 052005 6 5 ERA HEAD X /COMPARE WITH THIS PACKET +06516 007712 6 5 ANA (ORDNO) +06517 003524 6 5 JMP SRCST3 +06520 105660 6 5 SRCST2: LDA MESTAB I /GET MESS NO WE WANT +06521 017733 6 5 SUB (0 0 3"T"400) +06522 052005 6 5 ERA HEAD X /COMPARE WITH THIS PACKET +06523 141044 6 5 CAR 0"A"MESSNO +06524 100040 6 5 SRCST3: SZE /IS THIS THE NEXT TO GO? +06525 003532 6 5 JMP SRCSTL /NO +06526 073670 6 5 LDX READY +06527 066000 6 5 IMA 0 X /YES +06530 111667 6 5 STA TEND I /REMOVE FROM MESS STACK +06531 003555 6 5 JMP T2H /AND GIVE TO HOST + +06532 005670 6 5 SRCSTL: LDA READY /LOOP BACK FOR MORE +06533 140100 6 5 SSP +06534 011667 6 5 STA TEND +06535 105667 6 5 LDA TEND I +06536 003475 6 5 JMP SRCSTK + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 80 IMP,3050,IMP 7:20 PM 9/16/1973 + + LEV TSK +06537 000000 6 REASGT: 0 /FIND A MATCH ON MESSID IN REAS STO+ +06540 073734 6 LDX (SHRQ) +06541 001001 6 INH T.O /LOOK FOR THIS MESSAGE IN REAS +06542 044000 6 5 RELOOK: LDA 0 X /NEXT REAS BLOCK +06543 101040 6 5 SNZ /NO MORE REAS BLOCKS? +06544 103537 6 5 JMP REASGT I /YES, SO RETURN NO SKIP +06545 033667 6 5 STX TEND /SAVE END PNTR +06546 010000 6 5 STA 0 +06547 044001 6 5 LDA RID X /GET THIS MESS ID +06550 013664 6 5 ERA MESSID /COMPARE WITH OURS +06551 100040 6 5 SZE /IS THIS OUR MESSAGE? +06552 003542 6 5 JMP RELOOK /NO +06553 025537 6 5 IRS REASGT /SKIP=SUCCESS +06554 103537 6 5 JMP REASGT I + +06555 000401 6 5 T2H: ENB TSK +06556 004114 6 LDA ONE +06557 011672 6 STA NPKTS +06560 073670 6 LDX READY /LOAD THE PACKET PNTR +06561 005670 6 LDA READY /REGULAR MESSAGE READY FOR HOST +06562 100400 6 SPL /IS THIS A SINGLE PACKET? +06563 003625 6 JMP T2H8 /NO +06564 011671 6 STA READYE /SAVE END PNTR +06565 121735 6 T2HL1: JST (TSUB) I +06566 044006 6 LDA HEAD1 X +06567 001001 6 INH [I2H,H2I,T.O] +06570 121707 6 3 JST (HOSTNO) I /GET HOST NUMBER +06571 044006 6 3 LDA HEAD1 X +06572 006112 6 3 ANA SIGN 0"A"PRIBIT +06573 100040 6 3 SZE /PICK PRI OR REG QUEUE +06574 005736 6 3 LDA (EHPQ+0-EHQ) +06575 115737 6 3 ADD (LOCHST) I /AOD OFFSET GENERATED IN HOSTNO +06576 026000 6 3 IMA 0 /PUT IN X AND GET PKT PNTR +06577 150343 6 3 STA EHQ XI /PUT ON HOST QUEUE +06600 005671 6 3 LDA READYE +06601 050343 6 3 STA EHQ X +06602 005672 6 3 LDA NPKTS /NUM PKTS IN MSG +06603 054517 6 3 ADD NHA X /NUM PKTS FOR HOST +06604 050517 6 3 STA NHA X /ADJUST COUNTS +06605 073670 6 3 LDX READY +06606 044006 6 3 LDA HEAD1 X +06607 073660 6 3 LDX MESTAB +06610 101400 6 3 SMI 0"A"PRIBIT /PRIORITY? +06611 003622 6 3 JMP T2HL2 /NO +06612 121740 6 3 JST (UPORD) I /YES, SO BUMP ORD NO +06613 073670 6 3 LDX READY +06614 105660 6 3 LDA MESTAB I /GET MESS NO WE WANT +06615 017733 6 3 SUB (0 0 3"T"400) +06616 052005 6 3 ERA HEAD X /COMPARE WITH WHAT WE GOT +06617 141044 6 3 CAR 0"A"MESSNO +06620 073660 6 3 LDX MESTAB +06621 101040 6 3 SNZ /MATCH? +06622 121731 6 3 T2HL2: JST (UPMESS) I /BUMP MESS NO +06623 121741 6 3 JST (TASK2H) I RET TSK /POKE HOST IF NECESSARY +06624 003471 6 JMP SMSTK /GO BACK FOR MORE + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 81 IMP,3050,IMP 7:20 PM 9/16/1973 + + /THE FIRST PKT IS COUNTED FIRST, IN T2H + /AND TRACED LAST, IN T2HL1 + /SUBSEQUENT PKTS ARE COUNTED AND TRACED IN T2HS1 + LEV TSK +06625 140100 6 T2H8: SSP /MULTI-PACKET MESSAGE READY +06626 011665 6 STA ORB /OUR REASSY BLOCK +06627 044003 6 LDA REAS X /LOAD PKT PNTR +06630 011670 6 STA READY +06631 140040 6 CRA +06632 050013 6 STA REAS+8 X 0"A"RSF + /A TRICK TO INIT RSF AND MAKE IT LOOK LIKE PKT 9 +06633 044004 6 T2H81: LDA REAS+1 X /LOAD ADDR OF NEXT PACKET +06634 150003 6 STA REAS XI /CHAIN PACKETS TOGETHER +06635 101040 6 SNZ /IS THIS THE LAST PKT? +06636 003650 6 JMP T2H82 /YES +06637 033671 6 STX READYE /NO, STORE THE PKT PNTR +06640 010000 6 STA 0 +06641 121735 6 JST (TSUB) I /TRACE PKT IF NECESSARY +06642 073671 6 LDX READYE +06643 140040 6 CRA /CLEAR REAS PNTR +06644 050003 6 STA REAS X +06645 024000 6 IRS 0 /INCREMENT ADDRESS +06646 025672 6 IRS NPKTS /INCREMENT PKT COUNT +06647 003633 6 JMP T2H81 /CHAIN NEXT PACKET + +06650 066003 6 T2H82: IMA REAS X /CLEAR REAS PNTR +06651 011671 6 STA READYE /AND SAVE LAST PKT PNTR +06652 073670 6 LDX READY /LOAD FIRST PKT PNTR +06653 005665 6 LDA ORB /LOAD REASSY BLOCK PNTR +06654 001001 6 INH T.O +06655 026326 6 5 IMA RASF /FREE REAS BLOCK AND LINK TO TOP +06656 110326 6 5 STA RASF I /OF FREE LIST +06657 003565 6 5 JMP T2HL1 + + LEV VAR +06660 V MESTAB: BSS 1 /PNTR TO MESS TAB ENTRY +06661 V MESNUM: BSS 1 /MESSNO OF THIS PKT +06662 V MESBIT: BSS 1 /BIT CORRESPONDING TO OUR MESSAGE +06663 V PKTN: BSS 1 /NUMBER OF THIS PACKET +06664 V MESSID: BSS 1 /MESSAGE ID (MESS NO+SRCE IMP) +06665 V ORB: BSS 1 /OUR REAS BLOCK +06666 V ORS: BSS 1 /OUR REAS SLOT +06667 V TEND: BSS 1 /TEMP END PNTR +06670 V READY: BSS 1 /PNTR TO PACKET TO GIVE TO HOST +06671 V READYE: BSS 1 /END PNTR FOR READY +06672 V NPKTS: BSS 1 /PKT COUNTER +06673 V SOURCE: BSS 1 /SOURCE IMP FOR THIS PACKET + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 82 IMP,3050,IMP 7:20 PM 9/16/1973 + +06674 000077 C LEV CON CONSTANTS +06675 000004 C +06676 000100 C +06677 032271 C +06700 001246 C +06701 000014 C +06702 005601 C +06703 007063 C +06704 005577 C +06705 177437 C +06706 000002 C +06707 007244 C +06710 000335 C +06711 003165 C +06712 000060 C +06713 000200 C +06714 015303 C +06715 005635 C +06716 177761 C +06717 000400 C +06720 005457 C +06721 021321 C +06722 040003 C +06723 005651 C +06724 005604 C +06725 177477 C +06726 177661 C +06727 000300 C +06730 000102 C +06731 015347 C +06732 000327 C +06733 001400 C +06734 000340 C +06735 005504 C +06736 000010 C +06737 007257 C +06740 015361 C +06741 007222 C +02415 176751 C PAGEND 6,UNCON,1 + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 83 IMP,3050,IMP 7:20 PM 9/16/1973 + + LEV TSK +07063 044005 6 REPGOT: LDA HEAD X /REPLY TO A TRANSMISSION OF OURS +07064 007327 6 ANA (ONEOR8) +07065 101040 6 SNZ /IS IT A REPLY TO A MULTI-PACKET? +07066 003134 6 JMP REPGT8 /YES +07067 105330 6 LDA (MESSID) I +07070 001001 6 INH [H2I,T.O] +07071 121331 6 4 JST (PPTGET) I /FIND OUR TRANS IN RPT +07072 003220 6 4 JMP GOTGVB /NOT THERE, MUST BE A GVB +07073 011131 6 4 STA PPTASK /SAVE PPT PNTR +07074 000401 6 4 ENB TSK +07075 072514 6 LDX THIS +07076 044005 6 LDA HEAD X +07077 007332 6 ANA (ALLOC) +07100 101040 6 SNZ /IS THIS REPLY AN ALLOCATE OF 1? +07101 003113 6 JMP NOALL1 /NO +07102 173131 6 LDX PPTASK I /YES, CHECK FOR DUPLICATE ALLOC +07103 044005 6 LDA HEAD X +07104 007333 6 ANA (REQALL) +07105 101040 6 SNZ /WAS REQUEST BIT SET? +07106 103334 6 JMP (FQOK) I /NO, SO ALLOC IS A DUPLICATE +07107 105131 6 LDA PPTASK I /YES, SO WE MARK PPT +07110 140500 6 SSM 0"A"RETRAN /FOR RETRANSMISSION FROM BACK +07111 111131 6 STA PPTASK I +07112 103334 6 JMP (FQOK) I /MESS NO NOT REPLIED TO YET + +07113 021260 6 NOALL1: JST RFNM1 /SET UP TWDPA FOR RFNM OR INC +07114 003125 6 0 LCK FRE JMP DDEAD1 /GIVE HOST A DESTINATION DEAD +07115 173131 6 LEV TSK LDX PPTASK I +07116 044010 6 LDA HEAD3 X /PICK UP LINK WORD +07117 021306 6 JST RFNM2 LCK FRE +07120 044007 6 0 LDA HEAD2 X +07121 021244 6 0 JST HOSTNO +07122 044006 6 0 LDA HEAD1 X /GFT SOURCE OF MESS +07123 007335 6 0 ANA (0 0 177777"X"LSTPKT"X"HICODE) +07124 013132 6 0 ERA TWDPA /PUT IN IH MESS TYPE +07125 073257 6 0 DDEAD1: LDX LOCHST +07126 120670 6 0 JST OWP I /DO A 2 WRD PUT +07127 003213 6 0 DEFSTAT JMP PPTFRE, HS6 +00575 031304 6 0 +31771 007127 6 0 +32011 003213 6 0 +07130 103336 6 0 JMP (FQNG) I /NO ROOM FOR 2 WRD MESS + + LEV VAR +07131 V PPTASK: BSS 1 /POINTER TO OUR PPT OR PLT SLOT +07132 V TWDPA: BSS 1 /FIRST WORD OF 2 WRD PUT +07133 V LOCHNO: BSS 1 + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 84 IMP,3050,IMP 7:20 PM 9/16/1973 + + LEV TSK +07134 105330 6 REPGT8: LDA (MESSID) I /REPLY TO A MULTI-PCKT TRANS +07135 001001 6 INH [H2I,T.O] +07136 121337 6 4 JST (PLTGET) I /FIND OUR TRANS IN PLT + DEFHLT [CANT FIND MULTI-PKT MESS FOR THIS REPLY] +07137 121340 6 4 JST (THLTOK) I /NOT THERE, FOUL-UP +07140 033131 6 4 STX PPTASK /SAVE PLT PNTR +07141 044000 6 4 LDA PLT0 X +07142 006120 6 4 ANA SEVEN 0"A"PLTHST +07143 011133 6 4 STA LOCHNO /GET LOCAL HOST NO +07144 072514 6 4 LDX THIS +07145 044005 6 4 LDA HEAD X +07146 007332 6 4 ANA (ALLOC) +07147 000401 6 4 ENB TSK +07150 101040 6 SNZ /IS THIS REPLY AN ALLOCATE OF 8? +07151 003166 6 JMP NOALL8 /NO +07152 001001 6 INH [SIN,H2I,T.O] +07153 105341 6 0 LDA (TALLYI) I /GET IN PNTR +07154 013342 6 0 ERA (TALLY+TALLYL) /COMPARE WITH END PNTR +07155 101040 6 0 SNZ /AT END? +07156 103336 6 0 JMP (FQNG) I /YES, NO ROOM FOR ALLOCATE SO NACF +07157 105343 6 0 LDA (SOURCE) I /GET SOURCE OF ALLOC +07160 111344 6 0 STA (TALLYI 0 I) I /STUFF THRU IN PNTR +07161 125341 6 0 IRS (TALLYI) I /BUMP IN PNTR +07162 044005 6 0 LDA HEAD X +07163 007333 6 0 ANA (RFNM) +07164 101040 6 0 SNZ /IS THIS REPLY AN ALLOCATED RFNM? +07165 003233 6 0 JMP GUDAL8 /NO, JUST AN ALLOCATE OF 8, POKE HO + RET TSK +07166 021260 6 NOALL8: JST RFNM1 /SET UP TWDPA FOR RFNM OR INC +07167 003176 6 0 LCK FRE JMP DDEAD8 /GIVE HOST A DESTINATION DEAD +07170 073131 6 LEV TSK LDX PPTASK +07171 044030 6 LDA PLT2 X /PICK UP LINK WORD +07172 021306 6 JST RFNM2 LCK FRE +07173 044014 6 0 LDA PLT1 X /GET SOURCE OF MESS +07174 007335 6 0 ANA (0 0 177777"X"LSTPKT"X"HICODE) +07175 013132 6 0 ERA TWDPA /PUT IN IH MESS TYPE +07176 073133 6 0 DDEAD8: LDX LOCHNO +07177 033257 6 0 STX LOCHST +07200 120670 6 0 JST OWP I /DO A 2 WRD PUT +07201 003215 6 0 DEFSTAT JMP GUDRP0, HS7 /AND POKE HOST +00576 031313 6 0 +31772 007201 6 0 +32012 003215 6 0 + +07202 072514 6 0 LDX THIS /NO ROOM FOR 2 WRD MESS +07203 044005 6 0 LDA HEAD X +07204 007332 6 0 ANA (ALLOC) +07205 101040 6 0 SNZ /WAS REPLY AN ALLOCATE OF 8? +07206 103336 6 0 JMP (FQNG) I /NO, SO QUIT +07207 105343 6 0 LDA (SOURCE) I /YES, GET SOURCE +07210 121345 6 0 JST (TALLYG) I /AND GET TALLY ENTRY BACK AGAIN +07211 103336 6 0 JMP (FQNG) I /NOT THERE, FOUL-UP +07212 103336 6 0 JMP (FQNG) I /AND QUIT + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 85 IMP,3050,IMP 7:20 PM 9/16/1973 + +07213 173131 6 0 PPTFRE: LDX PPTASK I +07214 120671 6 0 JST FLUSHI I /FREE PPT ENTRY NOW THAT RFNM IS IN +07215 021222 6 0 GUDRP0: JST TASK2H /POKE HOST IF NECESSARY + LEV TSK +07216 140040 6 GUDRP1: CRA +07217 111131 6 STA PPTASK I /CLEAR PPT OR PLT ENTRY +07220 121346 6 GOTGVB: JST (MESSOK) I /MARK MESS NO AS REPLIED + LCK [H2I,T.O] +07221 103334 6 4 JMP (FQOK) I + + LCK SIN +07222 000000 6 0 TASK2H: 0 /GOT SOMETHING FOR HOST OUTPUT +07223 073257 6 0 LDX LOCHST +07224 104700 6 0 LDA IHXX I +07225 000013 6 0 EXA +07226 101040 6 0 SNZ /IS HOST IDLE? +07227 121347 6 0 JST (IHSB) I RET TSK /YES, SO POKE IT +07230 001001 6 INH ALL +07231 120672 6 0 JST DODXA I RET TSK +07232 103222 6 JMP TASK2H I + + LCK SIN +07233 073133 6 0 GUDAL8: LDX LOCHNO /GOT AN ALLOCATE OF 8 FOR HOST INPU +07234 044453 6 0 LDA HILO X +07235 017350 6 0 SUB (HIALL) +07236 000013 6 0 EXA +07237 101040 6 0 SNZ /IS HOST HUNG ON ALLOCATE? +07240 121351 6 0 JST (HISB) I RET TSK /POKE HIM SINCE HE IS WAI +07241 001001 6 INH ALL +07242 120672 6 0 JST DODXA I RET TSK +07243 003216 6 JMP GUDRP1 + + LEV [T.O,TSK] +07244 000000 5 HOSTNO: 0 /COMPUTE HOST NO +07245 011257 5 STA LOCHST +07246 007352 5 ANA (DESTH) +07247 040672 5 ARR 6 +07250 027257 5 IMA LOCHST /SAVE DEST HOST +07251 007353 5 ANA (FORIMP) +07252 100040 5 SZE /FAKE HOST? +07253 004130 5 LDA PLNH /YES +07254 015257 5 ADD LOCHST +07255 011257 5 STA LOCHST +07256 103244 5 JMP HOSTNO I + LEV VAR +07257 V LOCHST: BSS 1 /WHICH HOST WE ARE FEEDING + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 86 IMP,3050,IMP 7:20 PM 9/16/1973 + + LEV TSK +07260 000000 6 RFNM1: 0 /DISTINGUISH BETWEEN RFNM AND INC T: +07261 044006 6 LDA HEAD1 X +07262 007354 6 ANA (REPDED) +07263 100040 6 SZE /IS THIS A DESTINATION DEAD? +07264 003275 6 JMP RFNMD /YES +07265 044005 6 LDA HEAD X +07266 007355 6 ANA (INCTRN) +07267 100040 6 SZE /IS THIS REPLY MARKED INCOMFLETE? +07270 005356 6 LDA (0 0 CRFNM"X"CINCTR) /YES +07271 013357 6 ERA (CRFNM) /NO +07272 011132 6 STA TWDPA /SAVE IH MESS TYPE +07273 025260 6 IRS RFNM1 +07274 103260 6 JMP RFNM1 I + +07275 044010 6 RFNMD: LDA HEAD3 X 0"A"CHSTD +07276 001001 6 INH FRE +07277 010515 6 0 STA TWDP /SAVE LINK WORD ANO CODE +07300 044006 6 0 LDA HEAD1 X +07301 021244 6 0 JST HOSTNO +07302 044007 6 0 LDA HEAD2 X +07303 007335 6 0 ANA (0 0 177777"X"LSTPKT"X"HICODE) +07304 013360 6 0 ERA (CDESTD) /PUT IN DEST DEAD CODE +07305 103260 6 0 JMP RFNM1 I + + LEV TSK +07306 000000 6 RFNM2: 0 /TRANSLATE SOME INCOMPLETES INTO +07307 001001 6 INH FRE /ERROR IN DATA MESS +07310 010515 6 0 STA TWDP /SAVE LINK WORD +07311 007361 6 0 ANA (SUBCOD) +07312 013362 6 0 ERA (CERROR) +07313 100040 6 0 SZE /WAS THIS MARKED AS AN ERROR AT SOU +07314 003317 6 0 JMP .+3 /NO +07315 005363 6 0 LDA (CERRDT) /YES, SO CHANGE IH MESS TYPE +07316 011132 6 0 STA TWDPA +07317 005132 6 0 LDA TWDPA +07320 013364 6 0 ERA (CINCTR) +07321 101040 6 0 SNZ /IS THE IH MESS TYPE INC TRN? +07322 103306 6 0 JMP RFNM2 I /YES, KEEP SUB CODE +07323 004515 6 0 LDA TWDP /NO, A RFNM OR ERROR IN DATA +07324 007365 6 0 ANA (LINKNO) +07325 010515 6 0 STA TWDP /WE MAY HAVE PUT IN AT INC? TIME +07326 103306 6 0 JMP RFNM2 I + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 87 IMP,3050,IMP 7:20 PM 9/16/1973 + +07327 000200 C LEV CON CONSTANTS +07330 006664 C +07331 015033 C +07332 000002 C +07333 000100 C +07334 005601 C +07335 070377 C +07336 005637 C +07337 015205 C +07340 005577 C +07341 015155 C +07342 032271 C +07343 006673 C +07344 115155 C +07345 015114 C +07346 006360 C +07347 016042 C +07350 014445 C +07351 013106 C +07352 000300 C +07353 040000 C +07354 000400 C +07355 000010 C +07356 006000 C +07357 002400 C +07360 003400 C +07361 000007 C +07362 000004 C +07363 004000 C +07364 004400 C +07365 177760 C +02416 173373 C PAGEND 7,UNCON,4 + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 88 IMP,3050,IMP 7:20 PM 9/16/1973 + + + PAGM2I: LEV M2I / MODEM TO IMP (M2I) +00064 010043 0 M1INIL/ M2I1 +00065 010067 0 M2INIL/ M2I2 +00066 010113 0 M3INIL/ M2I3 +00067 010137 0 M4INIL/ M2I4 +00070 010163 0 M5INIL/ M2I5 + PAGM2I/ +10043 000000 0 M2I1: INT M2I /MODEM 1 ENTPANCE +10044 000011 0 DXA +10045 033244 0 STX TX /SAVE X REG +10046 072113 0 LDX ZERO /SET UP ACTIVE MODEM NO +10047 0 M2I1A: BSS 1 /INITIALLY A JMP M2II UNTIL AN INPL +10050 000043 0 INK +10051 011245 0 STA TK /SAVE KEYS +10052 070471 0 DEFSTAT M1ERR,MI1 +00577 031202 0 +31773 010052 0 +32013 070471 0 +10053 003231 0 M1OK: JMP M2I0 /THIS IS A NOP WHEN THE LINE GOES DI +10054 004021 0 DIS1: LDA M1INBP+1 +10055 017625 0 SUB (BUFE-ACKH) +10056 010020 0 M2I1B: STA M1INBP +10057 030471 0 M1IN /ERROR- NEW "IN" INTO SAME BUFFER +10060 005245 0 DPP1: LDA TK +10061 000013 0 EXA +10062 171020 0 OTK +10063 005243 0 LDA TA +10064 073244 0 LDX TX +10065 000401 0 ENB M2I +10066 103043 0 JMP M2I1 I + +10067 000000 0 M2I2: INT M2I /MODEM 2 ENTRANCE +10070 000011 0 DXA +10071 033244 0 STX TX +10072 072114 0 LDX ONE +10073 0 M2I2A: BSS 1 +10074 000043 0 INK +10075 011245 0 STA TK +10076 070472 0 DEFSTAT M2ERR,MI1A +00600 031226 0 +31774 010076 0 +32014 070472 0 +10077 003231 0 M2OK: JMP M2I0 +10100 004023 0 DIS2: LDA M2INBP+1 +10101 017625 0 SUB (BUFE-ACKH) +10102 010022 0 STA M2INBP +10103 030472 0 M2IN +10104 005245 0 DPP2: LDA TK +10105 000013 0 EXA +10106 171020 0 OTK +10107 005243 0 LDA TA +10110 073244 0 LDX TX +10111 000401 0 ENB M2I +10112 103067 0 JMP M2I2 I + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 89 IMP,3050,IMP 7:20 PM 9/16/1973 + +10113 000000 0 M2I3: INT M2I /MODEM 3 ENTRANCE +10114 000011 0 DXA +10115 033244 0 STX TX +10116 072115 0 LDX TWO +10117 0 M2I3A: BSS 1 +10120 000043 0 INK +10121 011245 0 STA TK +10122 070473 0 DEFSTAT M3ERR,MI1B +00601 031236 0 +31775 010122 0 +32015 070473 0 +10123 003231 0 M3OK: JMP M2I0 +10124 004025 0 DIS3: LDA M3INBP+1 +10125 017625 0 SUB (BUFE-ACKH) +10126 010024 0 STA M3INBP +10127 030473 0 M3IN +10130 005245 0 DPP3: LDA TK +10131 000013 0 EXA +10132 171020 0 OTK +10133 005243 0 LDA TA +10134 073244 0 LDX TX +10135 000401 0 ENB M2I +10136 103113 0 JMP M2I3 I + +10137 000000 0 M2I4: INT M2I /MODEM 4 ENTRANCE +10140 000011 0 DXA +10141 033244 0 STX TX +10142 072116 0 LDX THREE +10143 0 M2I4A: BSS 1 +10144 000043 0 INK +10145 011245 0 STA TK +10146 070474 0 DEFSTAT M4ERR,MI1C +00602 031246 0 +31776 010146 0 +32016 070474 0 +10147 003231 0 M4OK: JMP M2I0 +10150 004027 0 DIS4: LDA M4INBP+1 +10151 017625 0 SUB (BUFE-ACKH) +10152 010026 0 STA M4INBP +10153 030474 0 M4IN +10154 005245 0 DPP4: LDA TK +10155 000013 0 EXA +10156 171020 0 OTK +10157 005243 0 LDA TA +10160 073244 0 LDX TX +10161 000401 0 ENB M2I +10162 103137 0 JMP M2I4 I + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 90 IMP,3050,IMP 7:20 PM 9/16/1973 + +10163 000000 0 M2I5: INT M2I /MODEM 5 ENTRANCE +10164 000011 0 DXA +10165 033244 0 STX TX +10166 072117 0 LDX FOUR +10167 0 M2I5A: BSS 1 +10170 000043 0 INK +10171 011245 0 STA TK +10172 070475 0 DEFSTAT M5ERR,MI1D +00603 031256 0 +31777 010172 0 +32017 070475 0 +10173 003231 0 M5OK: JMP M2I0 +10174 004031 0 DIS5: LDA M5INBP+1 +10175 017625 0 SUB (BUFE-ACKH) +10176 010030 0 STA M5INBP +10177 030475 0 M5IN +10200 005245 0 DPP5: LDA TK +10201 000013 0 EXA +10202 171020 0 OTK +10203 005243 0 LDA TA +10204 073244 0 LDX TX +10205 000401 0 ENB M2I +10206 103163 0 JMP M2I5 I + + /SOME OFFSETS WE NEED FOR THE FIRST MODEM INPUT TO GRAB A BU + DIS1O=DIS1-0-M2I1 + M2I1AO=M2I1A-0-M2I1 + M2I1BO=M2I1B-0-M2I1 +10207 011243 0 M2II: STA TA +10210 044064 0 LDA M1INIL X +10211 010000 0 STA 0 /BASE REG FOR OUR INSTR MODIFICATIO +10212 044011 0 LDA DIS1O X +10213 015626 0 ADD (STA-0-LDA) +10214 011223 0 STA M2II1 +10215 104324 0 LDA FREE I +10216 101040 0 SNZ +10217 003227 0 JMP M2II2 +10220 026324 0 IMA FREE +10221 024563 0 IRS NFS +10222 015627 0 ADD (BUFE 0 I) +10223 0 M2II1: BSS 1 /SET UP FIRST REAL INPUT BUFFER +10224 005207 0 LDA M2II +10225 050004 0 STA M2I1AO X +10226 042011 0 JMP DIS1O X + +10227 005630 0 M2II2: LDA (I 0 1) +10230 042013 0 JMP M2I1BO X + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 91 IMP,3050,IMP 7:20 PM 9/16/1973 + +10231 032674 0 M2I0: STX MP /SAVE ACTIVE MODEM NO +10232 045254 0 LDA LEND X /PICK UP END-OF-LINE BIT FOR THIS MI +10233 011261 0 STA LENDT +10234 104324 0 LDA FREE I /GET PKT FOR FREE LIST +10235 101040 0 DEFSTAT SNZ, MI3 +00604 031217 0 +32000 010235 0 +32020 101040 0 +10236 143604 0 JMP DIS XI /FREE LIST EMPTY - INPUT LOST +10237 024563 0 IRS NFS +10240 026324 0 IMA FREE +10241 015631 0 ADD (ACKH 0 I) /SET UP DMC START INPUT PNTR +10242 143262 0 JMP DIP XI /DISPATCH TO SEPARATE CODE FOR EACH + + LEV VAR +10243 V TA: BSS 1 /SAVE A REG +10244 V TX: BSS 1 /SAVE X REG +10245 V TK: BSS 1 /SAVE KEYS +10246 V TAR: BSS 1 /SAVE ADDRET +10247 010053 V M2IOK: M1OK +10250 010077 V M2OK +10251 010123 V M3OK +10252 010147 V M4OK +10253 010173 V M5OK +10254 V LEND: BSS CH /ENDBIT ON=HIGH NO IMP + /SIGN BIT ON= DEAD LINE +10261 V LENDT: BSS 1 /TEMP BECAUSE OF ONLY ONE X REG + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 92 IMP,3050,IMP 7:20 PM 9/16/1973 + + LEV CON +10262 010317 C DIP: DP1 +10263 010311 C DP2 +10264 C SATDEF DP3 +02244 010264 C +02274 010303 C +02324 010303 C +10265 010275 C DP4 +10266 010267 C DP5 + + LEV M2I +10267 072030 0 DP5: LDX M5INBP +10270 010030 0 STA M5INBP +10271 015625 0 ADD (BUFE-ACKH) +10272 026031 0 IMA M5INBP+1 +10273 030475 0 M5IN +10274 003324 0 JMP DIPE + +10275 072026 0 DP4: LDX M4INBP +10276 010026 0 STA M4INBP +10277 015625 0 ADD (BUFE-ACKH) +10300 026027 0 IMA M4INBP+1 +10301 030474 0 M4IN +10302 003324 0 JMP DIPE + +10303 072024 0 DP3: LDX M3INBP +10304 010024 0 STA M3INBP +10305 015625 0 ADD (BUFE-ACKH) +10306 026025 0 IMA M3INBP+1 +10307 030473 0 M3IN +10310 003324 0 JMP DIPE + +10311 072022 0 DP2: LDX M2INBP +10312 010022 0 STA M2INBP +10313 015625 0 ADD (BUFE-ACKH) +10314 026023 0 IMA M2INBP+1 +10315 030472 0 M2IN +10316 003324 0 JMP DIPE + +10317 072020 0 DP1: LDX M1INBP /PICK UP OUR DMC INPUT PNTR +10320 010020 0 STA M1INBP /STORE NEW DMC INPUT PNTR +10321 015625 0 ADD (BUFE-ACKH) /COMPUTE NEW DMC END PN+' +10322 026021 0 IMA M1INBP+1 /SWAP FOR CURRENT END PNTR +10323 030471 0 M1IN /DO NEW INPUT OCP + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 93 IMP,3050,IMP 7:20 PM 9/16/1973 + +10324 017627 0 DIPE: SUB (BUFE 0 I) /GET OLD PKT PNTR + SAVE IN X +10325 011611 0 STA M2ISP /SAVE FOR TASK-ING OR FLUSHING +10326 026000 0 IMA 0 /SWAP IT FOR END PNTR +10327 017630 0 SUB (1 0 I) /ADJUST IT FOR ONE OFF +10330 050111 0 STA BUFE X 0"A"TWOQ /SAVE IT IN PKT END PNTR +10331 140040 0 CRA +10332 050000 0 STA 0 X /CLEAR CHAIN PNTR +10333 044005 0 LDA HEAD X +10334 100400 0 SPL 0"A"SNDCOR +10335 101100 0 SLN 0"A"LINETS +10336 100000 0 SKP /ALLOW SNDCOR W/O CHKSUM +10337 103632 0 JMP (M2IRQC) I /SEND CORE REQUEST +10340 005633 0 LDA (M2IADR) +10341 026111 0 IMA ADDRET /SET UP ADD CHAIN RETURN FOR M2I +10342 011246 0 STA TAR /AND SAVE CURRENT OWNER OF ADDER +10343 004000 0 LDA 0 +10344 056111 0 SUB BUFE X /COMPUTE BUFFER LENGTH +10345 015634 0 ADD (ADDBOT+ACKH) /ADD IN TABLE OFFSET +10346 011351 0 STA M2IADJ /AND SAVE AS ADD DISPATCH +10347 017635 0 SUB (ADDBOT) /GET -(NO OF WORDS) IN A +10350 103351 0 JMP M2IADJ I /AND JMP INTO ADD CHAIN +10351 0 M2IADJ: BSS 1 +10352 100040 0 M2IADR: SZE /IS THE CHECKSUM GOOD? + DEFPLC [NOP HERE TO ACCEPT BAD CHECKSUM PACKETS] +10353 003402 0 JMP PKTCH1 /NO, REPORT AS AN ERROR +10354 005246 0 LDA TAR +10355 010111 0 STA ADDRET /AND RESTORE PREVIOUS OWNER OF ADC +10356 131040 0 RDCLOK +10357 003356 0 JMP .-1 +10360 050001 0 STA IT X /SAVE INPUT TIME- 100 MS CLOCK +10361 004674 0 LDA MP 0"A"INPCHN"A"HSTMOD +10362 050003 0 STA INCH X /SAVE INPUT MODEM NO +10363 044005 0 LDA HEAD X +10364 101100 0 SLN 0"A"LINETS /LT OR ROUTE? +10365 003420 0 JMP M2IPKT /NO +10366 040677 0 ARR 1 +10367 100100 0 SLZ 0"A"NULPKT /IS THIS A NULL PKT OF ACKS ONLY? +10370 003404 0 JMP M2INUL /YES +10371 040677 0 ARR 1 +10372 100100 0 SLZ 0"A"GETCOR /A RELOAD DEMAND? +10373 103636 0 JMP (M2IDMC) I /YES +10374 073611 0 M2T0: LDX M2ISP +10375 132401 0 M2T: STX ETQ I /PUT ON TASK QUEUE +10376 032401 0 STX ETQ +10377 030041 0 TASK /POKE TASK INTERRUPT +10400 072674 0 LDX MP +10401 143577 0 JMP DIPP XI /DISMISS INTERRUPT + +10402 072674 0 PKTCH1: LDX MP + DEFHLT [SOFTWARE CHECKSUM ERROR IN PACKET] +10403 121637 0 JST (PKTCHK) I + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 94 IMP,3050,IMP 7:20 PM 9/16/1973 + +10404 044005 0 M2INUL: LDA HEAD X /GOT A NULL PACKET OF ACKS +10405 141140 0 ICL /PICK UP IMP NO +10406 012106 0 ERA MINE /COMPARE WITH MINE +10407 101040 0 SNZ /IS THIS LINE LOOPED? +10410 003375 0 JMP M2T /YES, GIVE NULL TO TASK, IGNORE ACK1 +10411 004420 0 LDA THD /PICK UP CHAN TO HIGH NO IMP +10412 012674 0 ERA MP /COMPARE WITH THIS LINE NO +10413 100040 0 SZE /IS IT THIS LINE? +10414 003426 0 JMP M2IACK /NO +10415 044006 0 LDA HEAD1 X /YES, SO COPY IN HIS VALUE FOR SYNC +10416 010417 0 STA SYNC /KEEPING GLOBAL TIME THROUGHOUT NET +10417 003426 0 JMP M2IACK /NO, PROCESS ACKS, THEN GIVE TO TA 1 + +10420 044007 0 M2IPKT: LDA HEAD2 X +10421 007640 0 ANA (ENDBIT) +10422 013261 0 ERA LENDT +10423 101400 0 SMI /IS THIS LINE DOWN? +10424 101040 0 SNZ /IS THIS PKT FROM US? +10425 103641 0 JMP (M2IFRE) I /YES. THROW AWAY PKT +10426 044004 0 M2IACK: LDA ACKH X +10427 140401 0 CMA +10430 141050 0 CAL 0"A"ACKTAB +10431 011612 0 STA ACKT /ACKS FROM PACKET +10432 072674 0 LDX MP +10433 052641 0 ERA TSEX X +10434 046653 0 ANA CHFREE X /SHOULD BE NO ACKS ON FREE SLOTS +10435 100040 0 SZE + DEFHLT [SPURIOUS ACK] +10436 121642 0 JST (PKTCH2) I +10437 005612 0 LDA ACKT +10440 066641 0 IMA TSEX X /COMPARE WITH WHAT WE GOT +10441 052641 0 ERA TSEX X +10442 101040 0 SNZ +10443 003374 0 JMP M2T0 /NO ACKS, SO QUIT +10444 011612 0 STA ACKT /SAVE ACKS TO PROCESS +10445 052653 0 ERA CHFREE X /FREE UR ACKED CHANNELS +10446 050653 0 STA CHFREE X +10447 005612 0 LDA ACKT + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 95 IMP,3050,IMP 7:20 PM 9/16/1973 + +10450 173643 0 ACKLOP: LDX (I2MTAB 0 X) I +10451 140407 0 TCA +10452 007612 0 ANA ACKT /GET LOWEST BIT THAT TRANSITIONED +10453 013612 0 ERA ACKT /TURN IT OFF +10454 027612 0 IMA ACKT /UPDATE SET OF ACKS TO PROCESS +10455 013612 0 ERA ACKT /AND GO PROCESS THIS ONE +10456 023644 0 CAS (20) +10457 003547 0 JMP ACK567 +10460 003563 0 JMP ACK4 +10461 022117 0 CAS FOUR +10462 003566 0 JMP ACK3 +10463 003571 0 JMP ACK2 +10464 101100 0 SLN +10465 003574 0 JMP ACK1 +10466 140040 0 CRA +10467 066000 0 IMA 0 X +10470 072674 0 ACKS: LDX MP +10471 023645 0 CAS (1777) /IS THIS A TRUE PKT PNTR? +10472 003475 0 JMP ACKGUD /YES +10473 101000 0 NOP + DEFHLT [QUASI-IMPOSSIBLE SPURIOUS ACK] +10474 121642 0 JST (PKTCH2) I /DEBUG SPURIOUS ACK +10475 062634 0 ACKGUD: CAS I2MNXT X /IS THIS THE PKT CURRENTLY ON THE L +10476 100000 0 SKP /NO +10477 003536 0 JMP ACKSYN /YES, WE CANT FREE IT YET +10500 010000 0 STA 0 +10501 044111 0 LDA BUFE X +10502 100400 0 SPL 0"A"TWOQ +10503 003511 0 JMP FREE1 /ON TWO QUEUES +10504 004324 0 LDA FREE /ON ONE ONLY, SO FREE +10505 050000 0 STA 0 X +10506 032324 0 STX FREE +10507 024537 0 IRS NFA +10510 003513 0 JMP FREE2 +10511 140100 0 FREE1: SSP 0"A"TWOQ +10512 050111 0 STA BUFE X /MARK AS ON ONE QUEUE NOW +10513 024564 0 FREE2: IRS NSFS + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 96 IMP,3050,IMP 7:20 PM 9/16/1973 + +10514 044002 0 ACKS1: LDA PTRT X /TRACING? +10515 100040 0 SZE +10516 003543 0 JMP ACTR2 /GO DO IT +10517 044111 0 ACTR1: LDA BUFE X /GET PACKET LENGTH +10520 140100 0 SSP 0"A"TWOQ +10521 016000 0 SUB 0 +10522 016116 0 SUB THREE 0"A"[ACKH-1] +10523 072674 0 LDX MP +10524 055613 0 ADD THRUPW X +10525 100400 0 SPL +10526 004112 0 LDA SIGN /MARK OFLO +10527 051613 0 STA THRUPW X +10530 065620 0 IRS THRUPT X +10531 101000 0 NOP +10532 005612 0 LDA ACKT +10533 101040 0 SNZ /HAVE WE PROCESSED ALL THE ACKS? +10534 003374 0 JMP M2T0 /YES, SO QUIT +10535 003450 0 JMP ACKLOP +10536 140500 0 ACKSYN: SSM +10537 050634 0 STA I2MNXT X +10540 140100 0 SSP +10541 010000 0 STA 0 +10542 003514 0 JMP ACKS1 /MARK THE BUFFER AS ACKED + +10543 121646 0 ACTR2: JST (TRCDUN) I /TRACING PACKET +10544 072674 0 LDX MP /NEEDED FOR TRCDUN +10545 073611 0 LDX M2ISP +10546 003517 0 JMP ACTR1 + +10547 022753 0 ACK567: CAS C100 +10550 003560 0 JMP ACK7 +10551 003555 0 JMP ACK6 +10552 140040 0 ACK5: CRA +10553 066005 0 IMA 5 X +10554 003470 0 JMP ACKS +10555 140040 0 ACK6: CRA +10556 066006 0 IMA 6 X +10557 003470 0 JMP ACKS +10560 140040 0 ACK7: CRA +10561 066007 0 IMA 7 X +10562 003470 0 JMP ACKS +10563 140040 0 ACK4: CRA +10564 066004 0 IMA 4 X +10565 003470 0 JMP ACKS +10566 140040 0 ACK3: CRA +10567 066003 0 IMA 3 X +10570 003470 0 JMP ACKS +10571 140040 0 ACK2: CRA +10572 066002 0 IMA 2 X +10573 003470 0 JMP ACKS +10574 140040 0 ACK1: CRA +10575 066001 0 IMA 1 X +10576 003470 0 JMP ACKS + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 97 IMP,3050,IMP 7:20 PM 9/16/1973 + + LEV CON +10577 010060 C DIPP: DPP1 +10600 010104 C DPP2 +10601 010130 C DPP3 +10602 010154 C DPP4 +10603 010200 C DPP5 +10604 010054 C DIS: DIS1 +10605 010100 C DIS2 +10606 010124 C DIS3 +10607 010150 C DIS4 +10610 010174 C DIS5 + + LEV VAR +10611 V M2ISP: BSS 1 /SAVED PACKET POINTER +10612 V ACKT: BSS 1 +10613 V THRUPW: BSS CH +10620 V THRUPT: BSS CH + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 98 IMP,3050,IMP 7:20 PM 9/16/1973 + +10625 000105 C LEV CON CONSTANTS +10626 004000 C +10627 100111 C +10630 100001 C +10631 100004 C +10632 011116 C +10633 010352 C +10634 001562 C +10635 001556 C +10636 011170 C +10637 011101 C +10640 001000 C +10641 011124 C +10642 011127 C +10643 040622 C +10644 000020 C +10645 001777 C +10646 011144 C +02417 175655 C PAGEND 10,UNCON,5 + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 99 IMP,3050,IMP 7:20 PM 9/16/1973 + + + /MODEM TO IMP PACKET-ERROR STUFF + + LEV M2I +11101 000000 0 PKTCHK: 0 /ADDRESS OF PKT ERROR +11102 120745 0 JST HLTNCC I /REPORT TRAP TO NCC +11103 105366 0 PKTCHC: LDA (TAR) I +11104 010111 0 STA ADDRET /RESTORE PREVIOUS OWNER OF ADDER +11105 004537 0 LDA NFA +11106 016563 0 SUB NFS +11107 016751 0 SUB TEN /LEAVE MORE THAN MINF +11110 100400 0 SPL /ROOM TO SEND PKT TO DIAG? +11111 003123 0 JMP NODIAG /NO +11112 105367 0 LDA (M2ISP) I /PICK UP PKT PNTR +11113 026342 0 IMA DIAGQ /PUT ON DIAG QUEUE +11114 111370 0 STA (M2ISP 0 I) I /AND SET UP CHAIN PNTR +11115 103371 0 JMP (DIPP 0 XI) I /DISMISS + +11116 072674 0 M2IRQC: LDX MP +11117 004124 0 LDA MINUS4 +11120 050265 0 STA SLT X +11121 004112 0 LDA SIGN 0"A"SNDCOR +11122 050421 0 STA SIHY X /MARK TO SEND CORE +11123 173367 0 NODIAG: LDX (M2ISP) I /AND FREE BAD PKT +11124 120671 0 M2IFRE: JST FLUSHI I +11125 072674 0 LDX MP +11126 103371 0 JMP (DIPP 0 XI) I + +11127 000000 0 PKTCH2: 0 +11130 120745 0 JST HLTNCC I +11131 021133 0 JST KILLIN /KILL LINES FOR SPURIOUS ACKS +11132 003103 0 JMP PKTCHC /CONTINUE + KILTIM=10. /LINE HELD DEAD TIME + + LEV [M2I,T.O,TSK,BCK] +11133 000000 0 KILLIN: 0 /SUBR TO STOP INPUT AND OUTPUT ON +11134 005372 0 LDA (NOP) /KILL THE LINE INSTANTLY +11135 111373 0 STA (M2IOK 0 XI) I +11136 005374 0 LDA (-KILTIM) /OTHER IMP WILL SEE THE LINE GO D[ +11137 050265 0 STA SLT X +11140 050433 0 STA LINE X /FOR NCC AND RTGO +11141 140040 0 KILL2: CRA +11142 050160 0 KILL3: STA NEIGHB X +11143 103133 0 KILL4: JMP KILLIN I + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 100 IMP,3050,IMP 7:20 PM 9/16/1973 + + LEV [M2I,I2H] +11144 000000 0 TRCDUN: 0 /FINISH TRACE BLOCK +11145 011167 0 STA TRCD +11146 044001 0 LDA ST X +11147 073167 0 LDX TRCD +11150 050003 0 STA TST X +11151 131040 0 RDCLOK +11152 003151 0 JMP .-1 +11153 050004 0 STA TAT X +11154 004112 0 LDA SIGN +11155 052012 0 ERA TDONE X +11156 050012 0 STA TDONE X +11157 005167 0 LDA TRCD +11160 015375 0 ADD (TQUE) +11161 011167 0 STA TRCD +11162 105144 0 LDA TRCDUN I +11163 011164 0 STA .+1 +11164 0 BSS 1 /LDX FROM PAGE 0 +11165 133167 0 STX TRCD I +11166 103144 0 JMP TRCDUN I + LEV VAR +11167 V TRCD: BSS 1 /TRCDUN PTR + + LEV M2I +11170 044007 0 M2IDMC: LDA HEAD2 X /RELOAD DEMAND +11171 013205 0 ERA PASWRD /CHECK PASSWORD +11172 100040 0 SZE /KOSHER? +11173 003203 0 JMP M2IDM1 /NO +11174 044004 0 LDA ACKH X /LOOK AT DEMAND +11175 101400 0 SMI /PANIC DEMAND? +11176 103376 0 JMP (1004) I /YES. INSTANT RELOAD, A=MODEM NUMBE +11177 004674 0 LDA MP /NO, USE OUR MODEM NO. +11200 141206 0 AOA /(COUNTING 1-4) +11201 010137 0 STA SW3FG /AND NICE-STOP/RELOAD +11202 003124 0 JMP M2IFRE + +11203 072674 0 M2IDM1: LDX MP + DEFHLT [RELOAD DEMAND WITH BAD PASSWORD] +11204 021101 0 JST PKTCHK + + DEFPLC [DEMAND RELOAD PASSWORD] +11205 175461 0 PASWRD: 175461 /KEEP NEXT LOCATIONS IN ORDER +11206 177777 0 DMNDCR: -1 /ACKH. USED FOR RELOAD CODE +11207 000005 0 GETCOR 0 LINETS /HEADER +11210 000000 0 0 /SYNC +11211 000000 0 0 /PASSWORD PUT HERE MANUALLY +11212 0 BSS 1 /CHECKSUM + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 101 IMP,3050,IMP 7:20 PM 9/16/1973 + + + /LINE SPEED COMPUTATIONS + LEV I2M LCK ALL +11213 012114 2 0 I2MRM: ERA ONE 0"A"RM /THIS IS RM CLEAR FLAG +11214 111377 2 0 STA (RMFLG 0 X) I /NOW CHK TO SEE IF TIME I: +11215 100400 2 0 SPL /SIGN MINUS IF FIRST TIME THROUGH +11216 003323 2 0 JMP I2MRMI /INITIALIZATION +11217 141140 2 0 ICL /SPD TYPE FROM L. HALF INTD RT. +11220 010000 2 0 STA 0 /USED AS INDEX INTO MARGIN TABLE +11221 045331 2 0 LDA DELSPD X /GET PERMISSABLE VARIANCE +11222 011360 2 0 STA DELTA +11223 173400 2 0 LDX (OCHN) I /RESTORE CHAN # IN X +11224 055346 2 0 ADD RMLAST X /MAXIMUM ACCEPTABLE TIME FOR THIS M: +11225 123401 2 0 CAS (THIST) I /COMP W/ACTUAL TIME FOR THIS MSG +11226 003240 2 0 JMP I2MRMA /MAX>THIS, SO FAR SO GOOD +11227 003245 2 0 JMP I2MRMB /MAX=THIS, ALL OK, IN SPEC + DEFHLT [LINE SPEED DECREASED] +11230 021231 2 0 I2MRMD: JST I2MSCG +11231 000000 2 0 I2MSCG: 0 +11232 120745 2 0 JST HLTNCC I /SEND MSG TO NCC +11233 105377 2 0 LDA (RMFLG 0 X) I /DO HOLD DOWN +11234 007402 2 0 ANA (0 0 177777"X"SHD) +11235 013403 2 0 ERA (SHD) /(6) SPEED HOLD DOWN +11236 111377 2 0 STA (RMFLG 0 X) I /STORED IN RMFLG +11237 003260 2 0 JMP I2MRMC /PUT THIST INTO LAST AND QUIT + + /TIME WAS MIN? +11240 017360 2 0 I2MRMA: SUB DELTA +11241 017360 2 0 SUB DELTA /MIN ACCEPTABLE TIME +11242 123401 2 0 CAS (THIST) I /COMP W/ACTUAL TIME + DEFHLT [LINE SPEED INCREASED] +11243 021231 2 0 JST I2MSCG /MIN>THIS, TOO SLOW +11244 101000 2 0 NOP /MIN=THIS, ALL OK +11245 105377 2 0 I2MRMB: LDA (RMFLG 0 X) I /MINTHIS) +11275 003300 2 0 JMP I2MRMH / " " " " = " +11276 024000 2 0 IRS 0 /NOPE, TRY NEXT SLOWER TYPE +11277 003272 2 0 JMP I2MRMG +11300 045340 2 0 I2MRMH: LDA LINDTT+NSPD-1 X /GET LINE DEAD TIME FOR T1 +11301 011360 2 0 STA DELTA /AND SAVE IN TEMP +11302 004000 2 0 LDA 0 /INDEX= -TYPE +11303 140407 2 0 TCA /COMPLIMENT +11304 141340 2 0 ICA /INTO LEFT HALF +11305 173400 2 0 LDX (OCHN) I /RESTORE CHAN IN X +11306 111377 2 0 STA (RMFLG 0 X) I 0"A"SHD"A"RM /BACK INTO RMFLT +11307 141340 2 0 ICA /GET SPEED TYPE +11310 015407 2 0 ADD (RMCLKS) /ADD TABLE ADDRESS +11311 051353 2 0 STA RMCLKP X /SAVE FOR USE IN RSTOUT +11312 005360 2 0 LDA DELTA /PICK UP TEMP +11313 051361 2 0 STA LINDT X /AND SAVE AS THIS LINE'S DEAD TIME +11314 044433 2 0 LDA LINE X +11315 100040 2 0 SZE /IS LINE UP? +11316 021133 2 0 JST KILLIN /NO, RESET TIME IN CASE JUST RELO7 +11317 105401 2 0 LDA (THIST) I /PUT (THIS+LAST)/2 INTO ACTUAL +11320 055346 2 0 ADD RMLAST X +11321 040477 2 0 LGR 1 +11322 003257 2 0 JMP I2MRMF + +11323 140100 2 0 I2MRMI: SSP /INITIALIZE FIRST TIME THROUGH +11324 111377 2 0 STA (RMFLG 0 X) I /CLEAR INIT BIT TOO, +11325 003260 2 0 JMP I2MRMC /PUT THIS INTO LAST AND QUIT + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 103 IMP,3050,IMP 7:20 PM 9/16/1973 + + LEV CON + /NSPD-1 ENTRIES +11326 000161 C TIMSPC: 161 /(125K)MAX TIME A RM TAKES IN TYP1 ] +11327 001066 C 1066 /(25K) TYPE 2 +11330 004202 C 4202 /(6.5K) TYPE 1 (ALL SLOWER TYPE 0) + + /NSPD ENTRIES +11331 000377 C DELSPD: 377 /00 10X OF EXPECTED TIME FOR RM (+8I +11332 000177 C 177 /01 +11333 000060 C 60 /10 +11334 000060 C 60 /11 + /NSPD ENTRIES +11335 177324 C LINDTT: 0 0-PTCK"T"5 /FOR 250KBS +11336 177704 C 0 0-PTCK /FOR 50KBS +11337 177764 C 0 0-PTCK"Q"5 /FOR 10KBS +11340 177771 C 0 0-PTCK"Q"10 /LINE DEAD TIME FOR 5KBS + + LEV VAR +11341 V RMTACT: BSS CH /ACTUAL TIME FOR RM (AVERAGED) +11346 V RMLAST: BSS CH /TIME FOR LAST RM IN 100 MU SEC'S +11353 V RMCLKP: BSS CH /PTR TO ENTRY IN RMCLKS +11360 V DELTA: BSS 1 /DELSPD ENTRY FOR THIS LINE +11361 V LINDT: BSS CH /LINE HELD DEAD TIMES + +11366 010246 C LEV CON CONSTANTS +11367 010611 C +11370 110611 C +11371 150577 C +11372 101000 C +11373 150247 C +11374 177766 C +11375 000011 C +11376 001004 C +11377 052620 C +11400 012654 C +11401 012644 C +11402 177771 C +11403 000006 C +11404 012156 C +11405 000002 C +11406 177775 C +11407 020274 C +02420 173433 C PAGEND 11,UNCON,4 + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 104 IMP,3050,IMP 7:20 PM 9/16/1973 + + /IMP TO MODEM (I2M) + + PAGI2M: + LEV I2M + +00071 012127 2 M1OTIL/ I2M1 +00072 012123 2 M2OTIL/ I2M2 +00073 012117 2 M3OTIL/ I2M3 +00074 012113 2 M4OTIL/ I2M4 +00075 012107 2 M5OTIL/ I2M5 + + PAGI2M/ LEV VAR + +12103 V TATA: BSS 1 /I2M TEMPS +12104 V TXTX: BSS 1 +12105 V TCTC: BSS 1 +12106 V IRET: BSS 1 + + /IMP TO MODEM INTERRUPTS COME TO THIS PAGE. +12107 000000 2 0 I2M5: INT I2M +12110 033104 2 0 STX TXTX +12111 072117 2 0 LDX FOUR +12112 003132 2 0 JMP I2M0 +12113 000000 2 0 I2M4: INT I2M +12114 033104 2 0 STX TXTX +12115 072116 2 0 LDX THREE +12116 003132 2 0 JMP I2M0 +12117 000000 2 0 I2M3: INT I2M +12120 033104 2 0 STX TXTX +12121 072115 2 0 LDX TWO +12122 003132 2 0 JMP I2M0 +12123 000000 2 0 I2M2: INT I2M +12124 033104 2 0 STX TXTX +12125 072114 2 0 LDX ONE +12126 003132 2 0 JMP I2M0 +12127 000000 2 0 I2M1: INT I2M +12130 033104 2 0 STX TXTX +12131 072113 2 0 LDX ZERO + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 105 IMP,3050,IMP 7:20 PM 9/16/1973 + +12132 033654 2 0 I2M0: STX OCHN /SAVE MODEM NUMBER +12133 011103 2 0 STA TATA +12134 000011 2 0 DXA +12135 003136 2 0 JMP .+1 +12136 000043 2 0 INK +12137 011105 2 0 STA TCTC +12140 004416 2 0 LDA TIMES /CURRENT 640 MS CLOCK +12141 057632 2 0 SUB TIM640 X /INITIAL READING FOR THIS MSG +12142 017712 2 0 SUB (10.) /10.24 TICKS/WRAP OF 100 MUS CLK +12143 101400 2 0 SMI /<10 TICKS? +12144 003516 2 0 JMP RAPT /NO, MSG TOOK TOO LONG, CLOCK WRAPPI +12145 131040 2 0 RDCLOK /100 MU SEC CLOCK +12146 003145 2 0 JMP .-1 +12147 057637 2 0 SUB TIM100 X /MINUS START TIMER +12150 011644 2 0 STA THIST /TIME FOR THIS MESSAGE +12151 055625 2 0 ADD CUMTIM X /ADD TO TOTAL +12152 051625 2 0 STA CUMTIM X /AND SAVE +12153 045620 2 0 LDA RMFLG X /ROUTING MSG FLAGS +12154 100100 2 0 SLZ /WAS THIS A ROUTING MESSAGE? +12155 103713 2 0 JMP (I2MRM) I /YES, GO DO LINE SPEED COMPUTNS +12156 004502 2 0 I2MS: LDA MOM /LOAD MODEM OUTPUT MASK +12157 170120 2 0 SMK INTM /SET PRI INTERRUPT +12160 026134 2 0 IMA PRIM +12161 011652 2 0 STA TMTM +12162 140040 2 0 CRA +12163 066634 2 0 IMA I2MNXT X /PKT PNTR FOR NEXT OUTPUT FOR CHL +12164 101400 2 0 SMI /WAS THERE AN ACK FOR THE PKT WE L 1 +12165 003173 2 0 JMP I2MALL /NO, DO NOT RELEASE PKT +12166 140100 2 0 SSP +12167 010000 2 0 STA 0 +12170 120671 2 0 JST FLUSHI I /YES, SO WE CAN FREE IT NOW +12171 024564 2 0 IRS NSFS +12172 073654 2 0 LDX OCHN + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 106 IMP,3050,IMP 7:20 PM 9/16/1973 + +12173 000401 2 0 I2MALL: ENB I2M +12174 044265 2 LDA SLT X +12175 100040 2 SZE /TIME TO SEND A ROUTING MESSAGE? +12176 003276 2 JMP I2MLT /YES +12177 045660 2 LDA I2MLST X /PICK UP RING PNTR +12200 141206 2 AOA /ADVANCE IT +12201 062627 2 CAS I2MEND X +12202 101000 2 NOP +12203 044622 2 LDA I2MTAB X /WRAP AROUND +12204 051660 2 STA I2MLST X +12205 001001 2 INH M2I /PREVENT M2I FROM ACKING +12206 145660 2 0 LDA I2MLST XI /WHILE WE LOOK AT THIS SLOT +12207 023714 2 0 CAS (1777) /IS THERE A PKT HERE? +12210 003550 2 0 JMP I2MRET /YES, SEE IF IT IS TOO OLD +12211 073654 2 0 I2MNEW: LDX OCHN /NO, NOTHING TO RETRANSMIT +12212 000401 2 0 ENB I2M +12213 044317 2 LDA SMPQ X +12214 100040 2 SZE /A NEW PRIORITY PACKET TO SEND? +12215 003363 2 JMP I2MPRI /YES +12216 044312 2 LDA SMQ X +12217 100040 2 SZE /A NEW REGULAR PACKET TO SEND? +12220 003375 2 JMP I2MREG /YES +12221 044445 2 LDA SNULL X +12222 101040 2 SNZ /SHOULD WE SEND A NULL PKT? +12223 003500 2 JMP I2MQUT /NO, SO QUIT + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 107 IMP,3050,IMP 7:20 PM 9/16/1973 + +12224 140040 2 I2MNUL: CRA /SEND A NULL PKT WITH IHY +12225 066421 2 IMA SIHY X +12226 100400 2 SPL 0"A"SNDCOR /DID WE GET A REQUEST TO SEND CORE +12227 003262 2 JMP I2MCOR /YES. SO SERVICE IT +12230 100040 2 SZE /DID WE GET IN ANY ROUTING MESSAGES1 +12231 005715 2 LDA (IHERDU) /YES. SEND AN I HEARD YOU +12232 013716 2 ERA (LINETS 0 NULPKT) /IN A NULL PKT +12233 141340 2 ICA +12234 012106 2 ERA MINE +12235 141340 2 ICA +12236 151704 2 STA NULPTR XI /SET UP HEADER OF NULL PKT +12237 045704 2 LDA NULPTR X /PICK UP PNTR TO NULL AREA +12240 016114 2 SUB ONE +12241 151665 2 STA MOPX XI /SET UP OUR OUTPUT AREA +12242 011655 2 STA ACKWRD +12243 014117 2 ADD FOUR 0"A"[MINPL-ACKH] /MIN PACKET LENT +12244 151672 2 STA MOP1 XI +12245 044646 2 LDA RSEX X /PUT IN ACKS +12246 073655 2 LDX ACKWRD +12247 050000 2 STA ACKH-ACKH X +12250 004417 2 LDA SYNC /PUTTING SYNC TIME INTO NULLS +12251 050002 2 STA HEAD1-ACKH X +12252 004117 2 I2MNLC: LDA FOUR 0"A"[MINPL-ACKH] +12253 056000 2 SUB ACKH-ACKH X /BUILD CKSUM +12254 056001 2 SUB HEAD-ACKH X +12255 056002 2 SUB HEAD1-ACKH X +12256 056003 2 SUB HEAD2-ACKH X +12257 050004 2 STA HEAD3-ACKH X /AND STORE IT +12260 073654 2 LDX OCHN +12261 003465 2 JMP I2MDN1 + +12262 005717 2 I2MCOR: LDA (CORELO) +12263 151665 2 STA MOPX XI +12264 005720 2 LDA (COREHI-1) +12265 151672 2 STA MOP1 XI +12266 003467 2 JMP I2MDUN /RETURN TO DO OUTPUT, NO ACKS + +12267 005721 2 I2MDMC: LDA (DMNDCR) /SEND 'DEMAND CORE' +12270 151665 2 STA MOPX XI +12271 014117 2 ADD FOUR 0"A"[MINPL-ACKH] +12272 151672 2 STA MOP1 XI +12273 016117 2 SUB FOUR 0"A"[MINPL-ACKH] +12274 010000 2 STA 0 +12275 003252 2 JMP I2MNLC /GET CHECKSUM AND SEND IT + +12276 100400 2 I2MLT: SPL /ARE WE HOLDING LINE DEAD? +12277 003500 2 JMP I2MQUT /YES, GO NO FURTHER +12300 016114 2 I2ML2: SUB ONE +12301 050265 2 I2ML3: STA SLT X +12302 022114 2 I2ML4: CAS ONE /RELOAD DEMAND TO SEND? +12303 003267 2 JMP I2MDMC /YES +12304 003224 2 JMP I2MNUL /NULL TO SEND + /---FALL THROUGH TO SEND ROUTING + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 108 IMP,3050,IMP 7:20 PM 9/16/1973 + + /THE WORDS FROM I2MCK1 TO I2MCK2 ARE CHECKSUMMED + CHK=0 +12305 073361 2 I2MCK1: K LDX I2MCKX /PICK UP -[# OF WDS IN CODE TO CK[ 1 +12306 055363 2 K ADD I2MCK2+1 X /ADD THEM (NOTE 0 IN AN I1 +12307 024000 2 K IRS 0 +12310 003306 2 K JMP .-2 +12311 100040 2 K SZE /DIFFERENT? + RELOAD [I2M ROUTING CODE BROKEN] +12312 120061 2 K JST SWDTIL I /SOFTWARE WDT, DO A RELOAD +12313 073654 2 K LDX OCHN +12314 125353 2 K IRS IMHSI I /KEEP STAT COUNTER +12315 101000 2 K NOP +12316 004660 2 K LDA RST.O /GET OUTPUT PTR +12317 015355 2 K ADD I2MRC1 +12320 151665 2 K STA MOPX XI /BEG POINTER +12321 017356 2 K SUB I2MRC2 +12322 151672 2 K STA MOP1 XI +12323 015357 2 K ADD I2MRC3 +12324 010000 2 K STA 0 +12325 005354 2 K LDA I2MRAP /(RUTADR) +12326 026111 2 K IMA ADDRET /SAVE CURRENT OWNER OF ADDER +12327 011653 2 K STA TARTAR +12330 005356 2 K LDA I2MRC2 /(-NIMP - HEAD1 + ACKH) +12331 103332 2 K JMP .+1 I /JUMP INTO RIGHT PLACE IN ADD CHAI +12332 001454 2 K ADDBOT+0-NIMP-HEAD1+ACKH +12333 140407 2 RUTADR: K TCA +12334 072113 2 K LDX ZERO /USE TO FIND CKSUM POST INDEXED +12335 112660 2 K ERA RST.O I /COMPARE CKSUM W/ THAT GENERATED BY +12336 027653 2 K IMA TARTAR +12337 010111 2 K STA ADDRET +12340 005653 2 K LDA TARTAR +12341 073654 2 K LDX OCHN +12342 001001 2 K .INH LCK ALL +12343 100040 2 0 K SZE /DIFFERENT? + DEFHLT [ROUTING MESSAGE CHECKSUM ERROR - INTRA IMP] +12344 021571 2 0 K JST I2MHLT +12345 141206 2 0 K AOA /1 +12346 053620 2 0 K ERA RMFLG X /SAYS ROUTING MSG GOING OUT +12347 051620 2 0 K STA RMFLG X +12350 105360 2 0 K LDA I2MRP I /(RSTSN) +12351 051645 2 0 K STA RSTSNO X /SAVE SER # OF LAST OUTPUT +12352 003467 2 0 K JMP I2MDUN + + LEV CON +12353 071615 C IMHSI: K IMHS 0 X +12354 012333 C I2MRAP: K RUTADR +12355 137675 C I2MRC1: K -X 0-NIMP-HEAD1+ACKH-1 +12356 177675 C I2MRC2: K -NIMP-HEAD1+ACKH-1 +12357 177671 C I2MRC3: K -NIMP-HEAD1-1 +12360 026644 C I2MRP: K RSTSN +12361 177722 C I2MCKX: K I2MCK1-0-I2MCK2-1 /CHECKSUM COUNTER +12362 044107 C I2MCK2: -CHK /CHECKSUM ON CODE GOES HERE + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 109 IMP,3050,IMP 7:20 PM 9/16/1973 + + LEV I2M +12363 050634 2 I2MPRI: STA I2MNXT X +12364 140040 2 CRA +12365 166634 2 IMA I2MNXT XI +12366 050317 2 STA SMPQ X +12367 100040 2 SZE +12370 003406 2 JMP I2MGNU +12371 005722 2 LDA (SMPQ) +12372 015654 2 ADD OCHN +12373 050370 2 STA EMPQ X +12374 003406 2 JMP I2MGNU + +12375 050634 2 I2MREG: STA I2MNXT X /LOAD WITH TOP OF Q ADDR +12376 140040 2 CRA +12377 166634 2 IMA I2MNXT XI /GET CHAIN PNTR OF NEW REQ +12400 050312 2 STA SMQ X /LINK TO TOP OF Q +12401 100040 2 SZE /WAS THIS LAST? +12402 003406 2 JMP I2MGNU /NO +12403 005723 2 LDA (SMQ) /YES, FIX UP Q PNTRS +12404 015654 2 ADD OCHN +12405 050363 2 STA EMQ X + + +12406 173724 2 I2MGNU: LDX (I2MNXT 0 X) I /GOT A NEW PKT +12407 133725 2 STX (INCH 0 XI) I /SET UP SLOT PNTR +12410 005726 2 LDA (-200.) /GIVE A PKT 200 TRIES +12411 050003 2 STA INCH X /TO BE ACCEPTED +12412 011657 2 STA I2MREF /MARK AS NEW PKT, DON'T CHECKSUM +12413 073654 2 LDX OCHN +12414 044634 2 LDA I2MNXT X + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 110 IMP,3050,IMP 7:20 PM 9/16/1973 + +12415 140100 2 I2MGOT: SSP +12416 015727 2 ADD (ACKH) +12417 151665 2 STA MOPX XI +12420 011655 2 DEFSTAT STA ACKWRD, IM1 +00605 031160 2 +32001 012420 2 +32021 011655 2 +12421 173724 2 LDX (I2MNXT 0 X) I +12422 131040 2 RDCLOK +12423 003422 2 JMP .-1 +12424 050001 2 STA ST X +12425 044111 2 LDA BUFE X +12426 140100 2 SSP 0"A"TWOQ +12427 073654 2 LDX OCHN +12430 151672 2 STA MOP1 XI +12431 011656 2 STA ENDWRD +12432 005657 2 LDA I2MREF /RETRANSMISSION OR NEW? + DEFPLC [NOP HERE TO STOP CHECKSUM VERIFY IN I2M] +12433 100040 2 SZE +12434 003456 2 JMP I2MCHF /NO CKSUM +12435 005730 2 LDA (I2MADR) /CAPTURE ADDER +12436 026111 2 IMA ADDRET +12437 011653 2 STA TARTAR +12440 005655 2 LDA ACKWRD +12441 016117 2 SUB FOUR 0"A"ACKH +12442 010000 2 STA 0 /PACKET POINTER +12443 017656 2 SUB ENDWRD /LENGTH OF PACKET +12444 015731 2 ADD (ADDBOT+ACKH) +12445 011450 2 STA I2MADJ +12446 017732 2 SUB (ADDBOT) +12447 103450 2 JMP I2MADJ I +12450 2 I2MADJ: BSS 1 +12451 100040 2 I2MADR: SZE +12452 003524 2 JMP I2MCHE /CHECKSUM ERROR! +12453 005653 2 LDA TARTAR +12454 010111 2 STA ADDRET /RESTORE ADDER OWNER +12455 073654 2 LDX OCHN +12456 105655 2 I2MCHF: LDA ACKWRD I +12457 141044 2 CAR 0"A"ACKBTS /PUT IN ACKS +12460 052646 2 ERA RSEX X +12461 127655 2 IMA ACKWRD I /AND CORRECT CHECKSUM +12462 117655 2 SUB ACKWRD I +12463 115656 2 ADD ENDWRD I +12464 111656 2 STA ENDWRD I +12465 140040 2 I2MDN1: CRA +12466 050445 2 STA SNULL X /ACKS MARKED AS SENT + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 111 IMP,3050,IMP 7:20 PM 9/16/1973 + +12467 004416 2 I2MDUN: LDA TIMES /640 MS COUNTER +12470 051632 2 STA TIM640 X /TABLE OF MODEM OUT START TIMES +12471 131040 2 RDCLOK /100 MICRO SEC CLOCK +12472 003471 2 JMP .-1 +12473 051637 2 STA TIM100 X /SAVE THIS CLOCK TOO +12474 045677 2 LDA MXOUT X +12475 011476 2 STA . 1 +12476 2 BSS 1 +12477 005711 2 LDA M30SCF /SET TO WAIT FOR HARDWARE COMPLETE +12500 050440 2 I2MQUT: STA NONE X /OR SET FLAG TO INDICATE IDLE +12501 001001 2 INH MSK +12502 005652 2 0 LDA TMTM +12503 010134 2 0 STA PRIM +12504 170120 2 0 SMK INTM +12505 144071 2 0 LDA M1OTIL XI +12506 011106 2 0 STA IRET +12507 000013 2 0 EXA +12510 005105 2 0 LDA TCTC +12511 171020 2 0 OTK +12512 005103 2 0 LDA TATA +12513 073104 2 0 LDX TXTX +12514 000401 2 0 ENB I2M +12515 103106 2 JMP IRET I + + LEV I2M LCK ALL +12516 005733 2 0 RAPT: LDA (14400) /6400MS, 1 SLOW T.O IN 100MUS UNITS +12517 051625 2 0 STA CUMTIM X /RM TOOK TOO LONG, MAX+TIMER +12520 045620 2 0 LDA RMFLG X /CLEAR RM FLAG BIT +12521 006122 2 0 ANA MINUS2 0"A"RM /177776 +12522 051620 2 0 STA RMFLG X +12523 003156 2 0 JMP I2MS /AND RETURN + + LEV I2M +12524 001001 2 I2MCHE: INH ALL + DEFHLT [MODEM OUT DETECTED INTRA-IMP CHECKSUM ERROR] +12525 021526 2 0 JST .+1 +12526 000000 2 0 0 +12527 120745 2 0 JST HLTNCC I /RERORT IT +12530 004000 2 0 LDA 0 +12531 026342 2 0 IMA DIAGQ /AND TO DIAG TTY +12532 050000 2 0 STA 0 X +12533 000401 2 0 ENB I2M +12534 005653 2 LDA TARTAR +12535 010111 2 STA ADDRET +12536 024564 2 IRS NSFS +12537 044004 2 LDA ACKH X /FREE UP UN-ACKED CHANNEL +12540 007734 2 ANA (CHANUM) +12541 141140 2 ICL +12542 073654 2 LDX OCHN +12543 054622 2 ADD I2MTAB X /GET SLOT POINTER +12544 011653 2 STA TARTAR /(TEMP) +12545 140040 2 CRA +12546 111653 2 STA TARTAR I /CLEAR SLOT PTR +12547 003500 2 JMP I2MQUT /LEAVE MODEM OUTPUT IDLE FOR A BI- + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 112 IMP,3050,IMP 7:20 PM 9/16/1973 + + LCK M2I +12550 010000 2 0 I2MRET: STA 0 /SAVE PKT PNTR +12551 131040 2 0 RDCLOK +12552 003551 2 0 JMP .-1 +12553 056001 2 0 SUB ST X /COMPARE TIME NOW WITH SENT TIME +12554 100400 2 0 SPL +12555 140407 2 0 TCA /MAKE DIFF A POSITIVE NUMBER +12556 017735 2 0 SUB (1250.) /COMPARE WITH 125 MS + /THIS CONSTANT VARIES WITH LINE LENGTH AND SPEED + /IT SHOULD BE TABLED WHEN WE GET FAST LINES+SATELLITES +12557 100400 2 0 SPL /TOO OLD? +12560 003211 2 0 JMP I2MNEW /NOT YET +12561 064003 2 0 IRS INCH X /COUNT ANOTHER RETRANSMIT +12562 003575 2 0 JMP I2MRTR /NOT OVER THE LIMIT +12563 120671 2 0 JST FLUSHI I /KILL PKT AFTER 200 TRIES +12564 024564 2 0 IRS NSFS /AND COUNT IT OUT +12565 073654 2 0 LDX OCHN +12566 140040 2 0 CRA +12567 151660 2 0 STA I2MLST XI /SO IT WON'T BE FLUSHED TWICE + DEFHLT [200 RETRANSMISSIONS - SERIOUS MALFUNCTION] +12570 021571 2 0 JST I2MHLT +12571 000000 2 0 I2MHLT: 0 +12572 120745 2 0 JST HLTNCC I /REPORT TROUBLE TO NCC +12573 121736 2 0 JST (KILLIN) I /KILL LINE INSTANTLY +12574 003500 2 0 JMP I2MQUT /DISMISS INTERRUPT + +12575 073654 2 0 I2MRTR: LDX OCHN +12576 140040 2 0 CRA /MARK PACKET AS A RETRANSMISSION +12577 011657 2 0 STA I2MREF /SO CHECKSUM IS VERIFIED +12600 145660 2 0 LDA I2MLST XI /PACKET SENT >125MS AGO +12601 050634 2 0 STA I2MNXT X /SO RETRANSMIT IT +12602 000401 2 0 ENB I2M +12603 003415 2 JMP I2MGOT + + LEV [T.O,TSK] LCK SIN +12604 000000 5 0 I2MSB: 0 /SOFTWARE WAKELP OF MODEM OUTPUT +12605 033104 5 0 STX TXTX /ALWAYS CALLED FROM LOW CORE AND DX +12606 011103 5 0 STA TATA +12607 033654 5 0 STX OCHN +12610 005604 5 0 LDA I2MSB +12611 150071 5 0 STA M1OTIL XI +12612 143613 5 0 JMP I2MSBT XI /CLEAR X BIT IN ADDR AND LEAP IN F + + LEV VAR +12613 012156 V I2MSBT: I2MS +12614 012156 V I2MS +12615 V SATDEF I2MS +02245 012615 V +02275 012156 V +02325 012156 V +12616 012156 V I2MS +12617 012156 V I2MS + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 113 IMP,3050,IMP 7:20 PM 9/16/1973 + + + /BITS IN RMFLG + RMINIT=100000 /SET IF FIRST TIME THROUGH (IN INI + SPDTYP=77400 /TYPE 0 = 5KBS + /TYPE 1 = 10KBS + /TYPE 2 = 50KBS + /TYPE 3 = 250 KBS + SHD=6 /SPEED HOLD-DOWN COUNTER + SHD1=2 /BOTTOM BIT OF SHD + RM=1 /IF SET, SAYS ROUTING MESSAGE PENDING + + LEV VAR +12620 V RMFLG: BSS CH /INIT TO 1006(HD ON 50KB LINE) +12625 V CUMTIM: BSS CH /CUMULATIVE BUSY TIME OVER INTERVAL +12632 V TIM640: BSS CH /'TIMES' AT START OF OUTPUT +12637 V TIM100: BSS CH /100 MUS CLOCK AT START OF OUTPUT +12644 V THIST: BSS 1 /ELAPSED TIME FOR THIS TRANSMISSION +12645 V RSTSNO: BSS CH /SERIAL NO. OF LAST RM OUTPUT + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 114 IMP,3050,IMP 7:20 PM 9/16/1973 + + LEV VAR +12652 V TMTM: BSS 1 /TEMP M +12653 V TARTAR: BSS 1 /TEMP ADDER RETURN +12654 V OCHN: BSS 1 /ACTIVE MODEM NUMBER +12655 V ACKWRD: BSS 1 /PNTR TO WORD IN PKT WHERE ACKS GO +12656 V ENDWRD: BSS 1 /PNTR TO LAST WORD IN PKT +12657 V I2MREF: BSS 1 /RETRANSMIT FLAG: CHECKSUM IF FLAG I +12660 V I2MLST: BSS CH /PNTR TO LAST SLOT SENT + LEV CON +12665 000032 C MOPX: M1OTBP /DMC OUTPUT PNTRS +12666 000034 C M2OTBP +12667 000036 C M3OTBP +12670 000040 C M4OTBP +12671 000042 C M5OTBP +12672 000033 C MOP1: M1OTBP+1 /DMC OUTPUT END PNTRS +12673 000035 C M2OTBP+1 +12674 000037 C M3OTBP+1 +12675 000041 C M4OTBP+1 +12676 000043 C M5OTBP+1 +12677 030071 C MXOUT: M1OUT /OUTPUT INSTRUCTIONS +12700 030072 C M2OUT +12701 030073 C M3OUT +12702 030074 C M4OUT +12703 030075 C M5OUT +12704 032101 C NULPTR: NULS1+1 /PNTRS TO NULL PKT AREAS +12705 032106 C NULS2+1 +12706 032113 C NULS3+1 +12707 032120 C NULS4+1 +12710 032125 C NULS5+1 + +12711 175551 C M30SCF: -[0 0 30SEC"T"25.] + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 115 IMP,3050,IMP 7:20 PM 9/16/1973 + +12712 000012 C LEV CON CONSTANTS +12713 011213 C +12714 001777 C +12715 000020 C +12716 000003 C +12717 000060 C +12720 032777 C +12721 011206 C +12722 000317 C +12723 000312 C +12724 040634 C +12725 140003 C +12726 177470 C +12727 000004 C +12730 012451 C +12731 001562 C +12732 001556 C +12733 014400 C +12734 017400 C +12735 002342 C +12736 011133 C +02421 176744 C PAGEND 12,UNCON,5 + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 116 IMP,3050,IMP 7:20 PM 9/16/1973 + + + /HOST TO IMP (HI) + + PAGH2I: + LEV H2I + +00100 013100 4 H1INIL/ HI0E +00101 4 H2INIL/ TIPDEF HI1E, TINT +02246 000101 4 +02276 013072 4 +02326 025061 4 +00075 013064 4 H3INIL/ HI2E +00074 013056 4 H4INIL/ HI3E + + PAGH2I/ + /HOST 3 INTERRUPT ROUTINE +13056 000000 4 0 HI3E: INT H2I +13057 033135 4 0 STX HIX +13060 073056 4 0 LDX HI3E +13061 033106 4 0 STX HISB +13062 072116 4 0 LDX THREE +13063 003110 4 0 JMP HISB2 + /HOST 2 INTERRUPT ROUTINE +13064 000000 4 0 HI2E: INT H2I +13065 033135 4 0 STX HIX +13066 073064 4 0 LDX HI2E +13067 033106 4 0 STX HISB +13070 072115 4 0 LDX TWO +13071 003110 4 0 JMP HISB2 + /HOST 1 INTERRUPT ROUTINE +13072 000000 4 0 HI1E: INT H2I +13073 033135 4 0 STX HIX +13074 073072 4 0 LDX HI1E +13075 033106 4 0 STX HISB +13076 072114 4 0 LDX ONE +13077 003110 4 0 JMP HISB2 + /HOST 0 INTERRUPT ROUTINE +13100 000000 4 0 HI0E: INT H2I +13101 033135 4 0 STX HIX /SAVE INDEX REGISTER +13102 073100 4 0 LDX HI0E +13103 033106 4 0 STX HISB /SET UP RETURN ADDRESS +13104 072113 4 0 LDX ZERO /INTERRUPT FROM HOST 0 +13105 003110 4 0 JMP HISB2 + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 117 IMP,3050,IMP 7:20 PM 9/16/1973 + + / FROM HERE ON IS COMMON TO ALL HOST INTERRUPT ROUTINES + +13106 000000 4 0 HISB: 0 +13107 033135 4 0 STX HIX +13110 000011 4 0 HISB2: DXA +13111 003112 4 0 JMP . 1 +13112 032675 4 0 STX HIP /SAVE CURRENT HOST +13113 011133 4 0 STA HIA /SAVE AC +13114 000043 4 0 INK +13115 011134 4 0 STA HIK +13116 004501 4 0 LDA HIM /SET UP NEW INTERRUPT MASK (177760) +13117 170120 4 0 SMK INTM /OUTPUT IT +13120 026134 4 0 IMA PRIM /SAVE IT IN PRIM +13121 011136 4 0 STA HIMS /SAVE OLD PRIM +13122 000401 4 0 ENB H2I +13123 142453 4 JMP HILO XI /RESTART WHERE LAST LEFT OFF + +13124 000000 4 HIWM: 0 /DEBREAK AND WAKE UP 25MS LATER +13125 072675 4 LDX HIP +13126 005124 4 LDA HIWM +13127 050453 4 HIWM1: STA HILO X +13130 004121 4 LDA MINUS1 +13131 051137 4 STA HITT X /SET TIMEOUT TO WAIT 1 PERIOD +13132 003516 4 JMP HIDONE + + LEV VAR +13133 V HIA: BSS 1 /AC SAVE +13134 V HIK: BSS 1 /K SAVE +13135 V HIX: BSS 1 /IR SAVE +13136 V HIMS: BSS 1 /PRIM SAVE +13137 V HITT: BSS TH /HOST-TO-IMP INTERFACE TIMER + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 118 IMP,3050,IMP 7:20 PM 9/16/1973 + + LEV CON +13147 000050 C HIB1: H1INBP /DMC INPUT PNTRS +13150 C TIPDEF H2INBP,JUNK +02247 013150 C +02277 000052 C +02327 000001 C +13151 C TIPDEF H3INBP,TIPLNK+2 +02250 013151 C +02300 000056 C +02330 000772 C +13152 000042 C H4INBP +13153 013323 C HIBB +13154 013324 C HIBB+1 +13155 013325 C HIBB+2 +13156 013326 C HIBB+3 +13157 000051 C HIB2: H1INBP+1 /DMC INPUT END PNTRS +13160 C TIPDEF H2INBP+1,JUNK +02251 013160 C +02301 000053 C +02331 000001 C +13161 C TIPDEF H3INBP+1,TIPLNK+3 +02252 013161 C +02302 000057 C +02332 000773 C +13162 000043 C H4INBP+1 +13163 013327 C HIBC +13164 013330 C HIBC+1 +13165 013331 C HIBC+2 +13166 013332 C HIBC+3 +13167 003014 C HER0: JMP 0 1000 777"A"HITEST /NEEDED FOR HOST TEST + /MUST PRECEDE HER! +13170 070070 C HER: H1ERR /SKIP ON ERROR FROM HOST +13171 070060 C H2ERR +13172 C TIPDEF H3ERR,NOP +02253 013172 C +02303 070050 C +02333 101000 C +13173 070051 C H4ERR +13174 101000 C NOP +13175 101000 C NOP +13176 101000 C NOP +13177 101000 C NOP +13200 030170 C HIN: H1IN /INPUT INSTRUCTIONS +13201 030160 C H2IN +13202 C TIPDEF H3IN,JMP+0+1000+HIFAKE"A"777 +02254 013202 C +02304 030150 C +02334 003531 C +13203 030151 C H4IN +13204 003531 C JMP HIFAKE +13205 003531 C JMP HIFAKE +13206 003531 C JMP HIFAKE +13207 003531 C JMP HIFAKE + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 119 IMP,3050,IMP 7:20 PM 9/16/1973 + + /FAKE HOST TO IMP (JAM) + /SIMULATE HOST-TO-IMP INTERFACE HARDWARE FOR FAKE HOSTS: + /1- RECEIVE A WORD FROM HOST + /2- STORE THE WORD THROUGH THE DMC INPUT POINTER + /3- INCREMENT THE DMC INPUT POINTER + /4- IF LAST BIT INDICATOR IS SET, OR + / IF THE DMC INPUT AND INPUT END POINTERS CROSS + / GIVE INPUT COMPLETED INTERRUPT + /5- GO TO 1 + /HIBB SERVES AS THE DMC INPUT POINTER + /HIBC SERVES AS THE DMC INPUT END POINTER + /CALLING SEQUENCE + /FAKE HOST NUMBER IN X REG - 0=TTY,1=DDT,2=TRACE,3=STATISTIC1 + /SIGN BIT OF X REG IS LAST BIT INDICATOR - BIT ON=LAST BIT + /THE WORD TO GIVE TO THE IMP IN A REG + /JST JAM - SEND THIS WORD TO IMP FROM THIS FAKE HOST + / - IMPLICIT BACKGROUND WAIT UNTIL THIS WORD IS TAKEN + / - AND ANOTHER WORD MAY BE SENT + LEV BCK +13210 000000 7 GAM: 0 +13211 151323 7 STA HIBB XI /STORE NEXT WORD THROUGH INPUT PNI +13212 065323 7 IRS HIBB X /INCREMENT INPUT PNTR +13213 004000 7 LDA 0 +13214 100400 7 SPL /IS LAST BIT FLAG SET? +13215 003247 7 JMP GAM2 /YES +13216 045327 7 LDA HIBC X +13217 057323 7 SUB HIBB X +13220 101400 7 SMI /HAVE PNTRS CROSSED? +13221 103210 7 JMP GAM I /NO, RETURN +13222 005177 7 LDA HER+NH+3 /(NOP) +13223 051317 7 GAM1: STA EMFH+NH X /SET UP LAST BIT INSTRUCTION FOR HO +13224 005210 7 LDA GAM +13225 051251 7 STA GAMT X /SAVE RETURN ADDRESS +13226 004000 7 LDA 0 +13227 140100 7 SSP +13230 011255 7 STA GAMX +13231 014130 7 ADD PLNH +13232 010000 7 STA 0 /SET UP X REG FOR THIS FAKE HOST +13233 001001 7 INH SIN /SOFTWARE INTERRUPT HOST-TO-IMP +13234 000013 7 0 EXA +13235 021106 7 0 JST HISB RET BCK +13236 001001 7 INH ALL +13237 120672 7 0 JST DODXA I RET BCK +13240 073255 7 LDX GAMX +13241 045143 7 GAM3: LDA HITT+NH X /TIMER HAS THREE POSSIBLE STATES +13242 140401 7 CMA /0 - WAITING FOR LEADER INPUT +13243 100040 7 SZE /-1 - WAITING FOR SOFTWARE INTERRU +13244 143251 7 JMP GAMT XI /IF NOT -1, INPUT CAN GO, SO RETUF +13245 120665 7 JST DOZE I /-N - WAITING FOR DATA INPUT + DEFPLC [JAM CALL TO DOZE] +13246 003241 7 JMP GAM3 /WAIT UNTIL INPUT IS ALLOWED +13247 004112 7 GAM2: LDA SIGN /(SKP) +13250 003223 7 JMP GAM1 + LEV VAR DEFPLC [GAMT] +13251 V GAMT: BSS FH /TABLE OF RETURN ADDRESSES +13255 V GAMX: BSS 1 + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 120 IMP,3050,IMP 7:20 PM 9/16/1973 + + LEV BCK LCK INI +13256 000000 7 0 HIST: 0 /RESTART HOST TO IMP +13257 140040 7 0 CRA +13260 051333 7 0 STA HISP X +13261 011106 7 0 STA HISB /IN CASE NON-DXA IMP RELOADED FROM ] +13262 111535 7 0 STA (HIDEST 0 X) I +13263 045273 7 0 LDA HISTAB X +13264 050453 7 0 STA HILO X /SET UP INITIAL ADDRESS TO GO TO +13265 045303 7 0 LDA EMIT X +13266 051313 7 0 STA EMFH X /SET UP FOM INSTRUCTION +13267 000013 7 0 EXA +13270 021106 7 0 JST HISB /CALL HOST +13271 120672 7 0 JST DODXA I +13272 103256 7 0 JMP HIST I + + LEV CON +13273 013353 C HISTAB: HISTRH /INITIAL COROUTINE ENTRANCES +13274 013353 C HISTRH +13275 C TIPDEF HISTRH, HISTFH +02255 013275 C +02305 013353 C +02335 013416 C +13276 013353 C HISTRH +13277 013416 C HISTFH +13300 013416 C HISTFH +13301 013416 C HISTFH +13302 013416 C HISTFH + +13303 070270 C EMIT: H1EOM /SKIP ON LAST BIT INSTRUCTIONS +13304 070260 C H2EOM +13305 C TIPDEF H3EOM, SKP +02256 013305 C +02306 070250 C +02336 100000 C +13306 070251 C H4EOM +13307 100000 C SKP +13310 100000 C SKP +13311 100000 C SKP +13312 100000 C SKP + + LEV VAR +13313 V EMFH: BSS TH /SKIP ON END OF MESSAGE FROM HOST +13323 V HIBB: BSS FH /DMC INPUT PNTRS FOR FAKE HOSTS +13327 V HIBC: BSS FH /DMC INPUT END PNTRS FOR FAKE HOSTS +13333 V HISP: BSS TH /POINTER TO CURRENT BUFFER +13343 V HINWAT: BSS TH /HOLD UP HOST INPUT + + LEV H2I +13353 005536 4 HISTRH: LDA (HIFRST) /DISCARD FIRST INPUT OF REAL HOST +13354 003417 4 JMP HISTLO + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 121 IMP,3050,IMP 7:20 PM 9/16/1973 + +13355 004114 4 HIDOWN: LDA ONE 0"A"HSTGDN +13356 050504 4 STA HIHD X /MARK HOST GOING DOWN + DEFPLC [HI - WAITING FOR A PKT TO THROW AWAY] +13357 140040 4 HIDISC: CRA +13360 127535 4 IMA (HIDEST 0 X) I +13361 101400 4 SMI /DID THIS GUY JUST TAKE TOO LONG? +13362 003367 4 JMP HIDSC1 /NO +13363 005537 4 LDA (HIDISC) +13364 050453 4 STA HILO X +13365 140040 4 CRA /DONT'T SET ALARM CLOCK AGAIN +13366 003470 4 JMP HINLO1 +13367 045333 4 HIDSC1: LDA HISP X /FLUSH HISP +13370 101040 4 SNZ +13371 003400 4 JMP HIFRST +13372 010000 4 STA 0 +13373 050111 4 STA BUFE X 0"A"TWOQ +13374 001001 4 INH FRE +13375 120671 4 0 JST FLUSHI I +13376 000401 4 0 ENB H2I +13377 072675 4 LDX HIP + DEFPLC [HI - WAITING FOR INITIAL INPUT] +13400 045313 4 HIFRST: LDA EMFH X /IS EOM SET? +13401 011403 4 STA .+2 +13402 005537 4 LDA (HIDISC) +13403 4 BSS 1 +13404 003466 4 JMP HINLO /NO +13405 140040 4 HIDB: CRA +13406 051333 4 STA HISP X +13407 045313 4 LDA EMFH X /IS EOM SET? +13410 011411 4 STA .+1 +13411 4 BSS 1 +13412 003457 4 JMP HINBUF /NO +13413 045343 4 HIWAIT: LDA HINWAT X /INPUT TO BE BLOCKED? +13414 100040 4 SZE +13415 003430 4 JMP HIBLKD /YES +13416 005540 4 HISTFH: LDA (HILEAD) +13417 050453 4 HISTLO: STA HILO X +13420 140040 4 CRA +13421 051137 4 STA HITT X /GIVE HIM FOREVER TO INPUT NEXT ME' +13422 004000 4 LDA 0 +13423 041577 4 ALS 1 +13424 015541 4 ADD (I 0 HICWS) +13425 151147 4 STA HIB1 XI +13426 141206 4 AOA +13427 003511 4 JMP HINB2 + +13430 021124 4 HIBLKD: JST HIWM + DEFPLC [HI - INPUT BEING BLOCKED BY OUTPUT] +13431 003413 4 JMP HIWAIT + + LEV CON + DEFPLC [HI - 2 WORD INPUT AREA] +13432 C HICWS: BSS TH+TH + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 122 IMP,3050,IMP 7:20 PM 9/16/1973 + + LEV H2I +13452 044453 4 HIWBUF: LDA HILO X +13453 051333 4 STA HISP X /SAVE RETURN ADDRESS +13454 021124 4 JST HIWM + DEFPLC [HI - NO FREE SPACE] +13455 045333 4 LDA HISP X +13456 003466 4 JMP HINLO /RESTORE RETURN ADDRESS +13457 005542 4 HINBUF: LDA (PKTN1) +13460 115543 4 ADD (HIH1 0 X) I +13461 111543 4 STA (HIH1 0 X) I +13462 007544 4 ANA (PKTNO) +13463 101040 4 SNZ /WILL NEXT PKT BE NO 10? +13464 003357 4 JMP HIDISC /YES +13465 005545 4 LDA (HI25) +13466 050453 4 HINLO: STA HILO X +13467 005546 4 LDA (0 0 -15000."Q"25.) +13470 051137 4 HINLO1: STA HITT X /GIVE HOST 15 SECS TO INPUT PKT +13471 001001 4 INH FRE +13472 004537 4 0 LDA NFA +13473 016563 4 0 SUB NFS +13474 016570 4 0 SUB MINF +13475 100400 4 0 SPL +13476 003452 4 0 JMP HIWBUF /NOT ENOUGH BUFFERS FOR MODEM INPUT +13477 104324 4 0 LDA FREE I +13500 101040 4 0 SNZ +13501 003452 4 0 JMP HIWBUF +13502 026324 4 0 IMA FREE +13503 024563 4 0 IRS NFS +13504 000401 4 0 ENB H2I +13505 051333 4 STA HISP X /SAVE POINTER TO BUFFER +13506 015547 4 ADD (I 0 DATA) +13507 151147 4 STA HIB1 XI + /THIS CONSTANT DETERMINES PACKET LENGTH FOR THE WHOLE IMPSY' +13510 015550 4 ADD (BUFE-2-DATA) /ALLOW FOR CHKSM +13511 140100 4 HINB2: SSP /FOR FAKE HOSTS +13512 151157 4 STA HIB2 XI +13513 045200 4 LDA HIN X +13514 011515 4 STA .+1 +13515 4 BSS 1 +13516 005136 4 HIDONE: LDA HIMS /RESTORE INTERRUPT MASK +13517 001001 4 INH MSK +13520 170120 4 0 SMK INTM +13521 010134 4 0 STA PRIM +13522 000013 4 0 EXA +13523 005134 4 0 LDA HIK +13524 171020 4 0 OTK +13525 073135 4 0 LDX HIX /RESTORE IR +13526 005133 4 0 LDA HIA /RESTORE AC +13527 000401 4 0 ENB H2I +13530 103106 4 JMP HISB I + +13531 145147 4 HIFAKE: LDA HIB1 XI +13532 140100 4 SSP +13533 151147 4 STA HIB1 XI +13534 003516 4 JMP HIDONE + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 123 IMP,3050,IMP 7:20 PM 9/16/1973 + +13535 054177 C LEV CON CONSTANTS +13536 013400 C +13537 013357 C +13540 014053 C +13541 113432 C +13542 000400 C +13543 054147 C +13544 003400 C +13545 014544 C +13546 176650 C +13547 100011 C +13550 000076 C +02422 175557 C PAGEND 13,UNCON,4 + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 124 IMP,3050,IMP 7:20 PM 9/16/1973 + + LEV VAR +14003 000000 V HICW1: 0 /TEMP USED TO RETRIEVE CONTROL WORD1 + LEV H2I +14004 000000 4 HILOOP: 0 +14005 045042 4 LDA HBTS X +14006 012106 4 ERA MINE +14007 051147 4 STA HIH1 X +14010 004143 4 LDA HL2WD +14011 051167 4 STA HIH3 X +14012 103004 4 JMP HILOOP I + +14013 021004 4 HIEXER: JST HILOOP +14014 045147 4 HITEST: LDA HIH1 X /MSG A NOP? +14015 007627 4 ANA (HICODE) +14016 013630 4 ERA (CNOP) +14017 100040 4 SZE +14020 103631 4 JMP (HIDISC) I /NO. FLUSH MESSAGE +14021 045167 4 LDA HIH3 X /DATA WORD MATCH? +14022 012143 4 ERA HL2WD +14023 101040 4 SNZ +14024 125632 4 IRS (HLRCVD) I /YES, COUNT A GOOD ONE +14025 103631 4 JMP (HIDISC) I /AND FLUSH MSG + + /USE TO CLEAN UP UNTIL IMPDIE LOGIC TAKES OVER +14026 000000 4 HIWMD: 0 /HIWM WITH DEAD TEST +14027 072675 4 LDX HIP +14030 173633 4 LDX (HIDEST 0 X) I +14031 044165 4 LDA RUT X +14032 072675 4 LDX HIP +14033 100400 4 SPL 0"A"RUTDED /IS DEST IMP DEAD? +14034 003272 4 JMP HI19 /YES +14035 044504 4 LDA HIHD X 0"A"HSTUP +14036 100040 4 SZE /IS SOURCE HOST DEAD? +14037 003232 4 JMP HIERR /YES +14040 005026 4 LDA HIWMD +14041 103634 4 JMP (HIWM1) I /NO, WAIT ONE TICK + + LEV CON +14042 000000 C HBTS: 0 /FROM IMP AND HOST BITS +14043 000100 C 100 +14044 000200 C 200 +14045 000300 C 300 +14046 040000 C 40000 +14047 040100 C 40100 +14050 040200 C 40200 +14051 040300 C 40300 + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 125 IMP,3050,IMP 7:20 PM 9/16/1973 + + + LEV H2I +14052 121635 4 HIHDN: JST (HIWM) I + DEFPLC [HI - WAITING FOR LEADER] + VD.1P: +14053 044504 4 HILEAD: LDA HIHD X 0"A"HSTIDN +14054 022116 4 CAS THREE +14055 003052 4 JMP HIHDN 0"A"HSTIDN +14056 101000 4 NOP +14057 004000 4 LDA 0 /SET UP HIH1, HIH3 FROM CONTROL INP1 +14060 041577 4 ALS 1 +14061 010000 4 STA 0 +14062 105636 4 LDA (HICWS 0 X) I +14063 011003 4 STA HICW1 +14064 105637 4 LDA (HICWS+1 X) I +14065 072675 4 LDX HIP +14066 007640 4 ANA (LINKNO) +14067 051167 4 STA HIH3 X +14070 005003 4 LDA HICW1 0"A"[PRIBIT 0 FORIMP TRACE FOROCT DESTHI] +14071 051147 4 STA HIH1 X 0"A"PKTNO +14072 007627 4 ANA (HICODE) +14073 141140 4 ICL +14074 015641 4 ADD (HI2 0 I) +14075 051137 4 STA HIH0 X +14076 017134 4 SUB HIDE +14077 101400 4 SMI +14100 103132 4 JMP HI2+7 I /ASSUMES NO TYPE 7 MESSAGE +14101 105642 4 LDA (HER 0 X) I +14102 011103 4 STA .+1 +14103 4 BSS 1 /ERROR?, LOOP JST, OR EXER OR TEST +14104 100000 4 SKP /NO +14105 003232 4 JMP HIERR /ERROR BIT SET IN LEADER +14106 140040 4 CRA 0"A"HSTUP +14107 066504 4 IMA HIHD X +14110 100040 4 SZE /WAS HOST DOWN? +14111 104700 4 LDA IHXX I /YES, IS OUTPUT IN PROGRESS? +14112 101040 4 SNZ +14113 003116 4 JMP .+3 /NOT BOTH +14114 004107 4 LDA M30SEC /WAS DOWN, GIVE OUTPUT FULL 30 SE(' +14115 111643 4 STA (IHTT 0 X) I +14116 105644 4 LDA (EMFH 0 X) I /YES +14117 011120 4 STA .+1 +14120 4 BSS 1 /EOM? +14121 143137 4 DEFSTAT JMP HIH0 XI, HS2 /N0,DISPATCH ON TYPE +00606 031072 4 +32002 014121 4 +32022 143137 4 +14122 003231 4 JMP HISHRT /YES, LESS THAN 32 BIT MESSAGE + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 126 IMP,3050,IMP 7:20 PM 9/16/1973 + + LEV CON +14123 014243 C HI2: HI20 /0 - REG +14124 013357 C HIDISC /1 - IMP FORMAT ERROR +14125 013355 C HIDOWN /2 - HOST GOING DOWN +14126 014230 C HIBADC /3 +14127 013357 C HIDISC /4 - NOP +14130 014230 C HIBADC /5 +14131 014230 C HIBADC /6 +14132 014230 C HIBADC /7 - USED IN CODE FOR HIBADC REFEF ' +14133 013357 C HIDISC /8 - IMP FORMAT ERROR WITH ID +14134 114134 C HIDE: . 0 I + + LEV VAR + /MORE OF HOST-TO-IMP, INCLUDING PACKET PROCESSING +14135 V HIT1: BSS 1 /TEMP +14136 177777 V HITF: -1 +14137 V HIH0: BSS TH /SAVED HEAD,HEAD1,HEAD2,HEAD3 +14147 V HIH1: BSS TH +14157 V HIH2: BSS TH +14167 V HIH3: BSS TH +14177 V HIDEST: BSS TH /DESTINATION OF CURRENT MESS + /SIGN BIT ON MEANS HOST TOOK TOO LO1 +14207 V HILINK: BSS TH /PNTR TO SAVED LINK+SUB-CODE WORD +14217 V HIBLKT: BSS TH /TIME TO WAIT FOR MESS NO +14227 V HIAR: BSS 1 /TEMP ADDER RETURN + + LEV H2I +14230 065167 4 HIBADC: IRS HIH3 X 0"A"CILLGL +14231 065167 4 HISHRT: IRS HIH3 X 0"A"CSHORT +14232 140040 4 HIERR: CRA 0"A"CERR32 +14233 051147 4 STA HIH1 X +14234 005645 4 LDA (CERRLD) +14235 003273 4 JMP HI16 + +14236 005646 4 HIBLK: LDA (CBLOCK) +14237 053167 4 ERA HIH3 X +14240 051167 4 STA HIH3 X +14241 005647 4 LDA (CINCTR) +14242 003273 4 JMP HI16 + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 127 IMP,3050,IMP 7:20 PM 9/16/1973 + +14243 004675 4 HI20: LDA HIP /FIGURE OUT HOW LONG TO WAIT FOR ME: +14244 012130 4 ERA PLNH /IS THIS FROM TTY? +14245 100040 4 SZE /GIVE IT 150 MS OR 15 SECS IF NOT +14246 005650 4 LDA (0 0 -6"X"-450.) +14247 012126 4 ERA MINUS6 /15 SECS FOR ALL OTHER HOST +14250 051217 4 STA HIBLKT X +14251 045147 4 LDA HIH1 X +14252 007651 4 ANA (DESTI) +14253 051177 4 STA HIDEST X +14254 010000 4 STA 0 +14255 044165 4 LDA RUT X +14256 072675 4 LDX HIP +14257 101400 4 SMI 0"A"CIMPD 0"A"RUTDED +14260 007652 4 ANA (RUTCMU) /HOSTS AT DEAD IMPS ARE DEAD +14261 100040 4 SZE /IS THERE A DELAY IN BRINGING THI1 +14262 003272 4 JMP HI19 /YES, IMP IS STILL DEAD +14263 045147 4 LDA HIH1 X +14264 007653 4 ANA (FORIMP 0 DESTH) +14265 013654 4 ERA (FORIMP 0 200) +14266 101010 4 SS2 /ALL HOSTS ARE UP IF SS2 IS UP +14267 100040 4 SZE /PARAM CHANGE IS DOWN IF IT'S NOT +14270 003311 4 JMP HI23 /HOST IS UP +14271 065167 4 HI18: IRS HIH3 X 0"A"CHSTD +14272 005655 4 HI19: LDA (CDESTD) +14273 051137 4 HI16: STA HIH0 X +14274 001001 4 HI17: INH FRE +14275 045167 4 0 LDA HIH3 X +14276 010515 4 0 STA TWDP +14277 045147 4 0 LDA HIH1 X +14300 053137 4 0 ERA HIH0 X +14301 120670 4 0 JST OWP I +14302 103631 4 0 JMP (HIDISC) I +14303 121635 4 0 JST (HIWM) I RET H2I + DEFPLC [HI - WAITING FOR TWO-WORD STORE] +14304 003274 4 JMP HI17 + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 128 IMP,3050,IMP 7:20 PM 9/16/1973 + +14305 065217 4 HI22: IRS HIBLKT X /HAVE WE WAITED TOO LDNG? +14306 100000 4 SKP /NO +14307 003236 4 JMP HIBLK /YES, SEND BACK BLOCKED +14310 021026 4 JST HIWMD + DEFPLC [HI - WAITING FOR MESS NO] +14311 045147 4 HI23: LDA HIH1 X +14312 007656 4 ANA (PRIBIT 0 DESTI) +14313 121657 4 JST (MESGET) I +14314 003305 4 JMP HI22 /MESSNO IN USE, WAIT +14315 051137 4 STA HIH0 X /SET UP HIH0, HIH2 +14316 045147 4 LDA HIH1 X +14317 007660 4 ANA (FOROCT) 0"A"LSTPKT +14320 012106 4 ERA MINE /CONSTRUCT SOURCE +14321 053042 4 ERA HBTS X 0"A"SRCEH +14322 051157 4 STA HIH2 X +14323 004675 4 LDA HIP +14324 013661 4 ERA (NH+2) +14325 100040 4 SZE /DO NOT AUTO-TRACE TRACE +14326 105662 4 LDA (TF) I +14327 100040 4 SZE /IS AUTO TRACE ON? +14330 025136 4 IRS HITF /YES, IS IT TIME TO TRACE? +14331 003341 4 JMP HI24 /NO +14332 045147 4 LDA HIH1 X /YES +14333 007663 4 ANA (0 0 177777"X"TRACE) +14334 013664 4 ERA (TRACE) /TURN ON TRACE BIT +14335 051147 4 STA HIH1 X +14336 105662 4 LDA (TF) I +14337 140407 4 TCA +14340 011136 4 STA HITF /RESET AUTO TRACE INTERVAL +14341 005665 4 HI24: LDA (HIPKT1) +14342 103666 4 JMP (HINLO) I + DEFPLC [HI - WAITING FOR FIRST PKT] +14343 105667 4 HIPKT1: LDA (HITT 0 X) I +14344 101040 4 SNZ /DID ALARM CLOCK GO OFF? +14345 003353 4 JMP HIPK1S /YES +14346 105644 4 LDA (EMFH 0 X) I +14347 011350 4 STA .+1 +14350 4 BSS 1 +14351 003400 4 JMP HIPLT /MULTI-PACKET INPUT +14352 003361 4 JMP HIPK1A + +14353 140500 4 HIPK1S: SSM +14354 051177 4 STA HIDEST X /MARK AS TOO SLOW +14355 045147 4 LDA HIH1 X +14356 007670 4 ANA (0 0 177777"X"PKTNO) +14357 013655 4 ERA (PKTNO) /MARK AS LAST PKT - FOR HIDISC +14360 051147 4 STA HIH1 X +14361 005671 4 HIPK1A: LDA (ONEOR8 0 REQALL) /MARK AS REQ FOR 1 +14362 053137 4 ERA HIH0 X +14363 051137 4 STA HIH0 X +14364 021464 4 JST HIPKT +14365 003370 4 JMP HIPPT + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 129 IMP,3050,IMP 7:20 PM 9/16/1973 + +14366 021026 4 HIPPT0: JST HIWMD + DEFPLC [HI - WAITING FOR PPT SLOT FOR REQ1] +14367 172677 4 LDX HIXX I +14370 121672 4 HIPPT: JST (PPTPUT) I +14371 003366 4 JMP HIPPT0 /NO ROOM IN PPT, WAIT +14372 051207 4 HIMESS: STA HILINK X /SAVE PNTR INTO RPT OR PLT +14373 045177 4 LDA HIDEST X +14374 100400 4 SPL /DID THIS GUY TAKE TOO LONG +14375 003610 4 JMP HIPSLO /YES, GO TO TASK +14376 121673 4 JST (HTPMT) I /COUNT A MESSAGE OF THROUGHPUT +14377 003551 4 JMP HI26 + +14400 045177 4 HIPLT: LDA HIDEST X +14401 121674 4 JST (TALLYG) I /ANY ALLOC FROM OUR DEST? +14402 003412 4 JMP HIPLT2 /NO +14403 021464 4 HIPLTA: JST HIPKT +14404 072675 4 LDX HIP +14405 003407 4 JMP HIPLT1 +14406 021026 4 JST HIWMD + DEFPLC [HI - WAITING FOR PLT SLOT FOR MESS8] +14407 121675 4 HIPLT1: JST (PLTPUT) I +14410 003406 4 JMP .-2 /NO PLT ROOM, WAIT +14411 003372 4 JMP HIMESS + +14412 005676 4 HIPLT2: LDA (REQALL) /MARK AS REQUEST FOR 8 +14413 053137 4 ERA HIH0 X +14414 051137 4 STA HIH0 X +14415 021464 4 JST HIPKT /COPY HEADER +14416 004000 4 LDA 0 +14417 015677 4 ADD (TWOQ MINPL) /MARK AS ON TWO QUEUES, +14420 050111 4 STA BUFE X /FROM SAME BUFFER +14421 072675 4 LDX HIP +14422 100000 4 SKP +14423 021026 4 JST HIWMD + DEFPLC [HI - WAITING FOR PLT SLOT FOR REQ8] +14424 121675 4 JST (PLTPUT) I +14425 003423 4 JMP .-2 /NO PLT ROOM, WAIT +14426 051207 4 STA HILINK X /SAVE PNTR INTO PLT +14427 172677 4 HIPLT3: LDX HIXX I +14430 021520 4 JST HICKSM /MAKE A CHECKSUM +14431 001001 4 INH M2I +14432 132401 4 0 STX ETQ I +14433 032401 4 0 STX ETQ +14434 030041 4 0 TASK +14435 121635 4 0 HIPLT4: JST (HIWM) I RET H2I + DEFPLC [HI - WAITING FOR TASK TO TAKE A REQ8] +14436 003435 4 JMP HIPLT4 +14437 003427 4 JMP HIPLT3 /TASK REFUSED IT + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 130 IMP,3050,IMP 7:20 PM 9/16/1973 + +14440 045177 4 HIPLT5: LDA HIDEST X +14441 121674 4 JST (TALLYG) I /ANY ALLOC FROM OUR DEST? +14442 003444 4 JMP HIPLT6 /NO +14443 003447 4 JMP HIPLT8 +14444 021026 4 HIPLT6: JST HIWMD + DEFPLC [HI - WAITING FOR ALL8] +14445 003440 4 HIALL: JMP HIPLT5 + +14446 121635 4 HIPLT7: JST (HIWM) I +14447 172677 4 HIPLT8: LDX HIXX I +14450 044111 4 LDA BUFE X +14451 100400 4 SPL 0"A"TWOQ /HAS THE ACK FOR THIS PKT BEEN PRC*] +14452 003446 4 JMP HIPLT7 /NOT YET, PKT STILL ON LINE, SO WAI +14453 072675 4 LDX HIP +14454 003456 4 JMP HIPLT0 + +14455 021026 4 HIPLT9: JST HIWMD + DEFPLC [HI - WAITING FOR MESS NO FOR MESS8] +14456 045177 4 HIPLT0: LDA HIDEST X /KEEP SAME ORDNO AS REQS +14457 121657 4 JST (MESGET) I /GET NEW MESS NO FOR MESS8 +14460 003455 4 JMP HIPLT9 /MESS NO IN USE, WAIT +14461 051137 4 STA HIH0 X 0"A"REQALL /SAVE IN HEADER +14462 111667 4 STA (HITT 0 X) I /DEFEAT INC TRN LOGIC +14463 003403 4 JMP HIPLTA + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 131 IMP,3050,IMP 7:20 PM 9/16/1973 + +14464 000000 4 HIPKT: 0 +14465 104677 4 LDA HIXX I /COPY HEADER +14466 015700 4 ADD (HEAD) +14467 011135 4 STA HIT1 +14470 045137 4 LDA HIH0 X +14471 111135 4 STA HIT1 I +14472 025135 4 IRS HIT1 +14473 045147 4 LDA HIH1 X +14474 111135 4 STA HIT1 I +14475 025135 4 IRS HIT1 +14476 045157 4 LDA HIH2 X +14477 111135 4 STA HIT1 I +14500 025135 4 IRS HIT1 +14501 045167 4 LDA HIH3 X +14502 111135 4 STA HIT1 I +14503 105701 4 LDA (HIB1 0 XI) I /SAVE LENGTH +14504 140100 4 SSP 0"A"TWOQ +14505 172677 4 LDX HIXX I /LEAVE ROOM FOR CKSUM WRD +14506 050111 4 STA BUFE X /SET UP TWOQ BIT AFTER CALL TO HIPK +14507 131040 4 RDCLOK /SAVE TIME +14510 003507 4 JMP .-1 +14511 050001 4 STA IT X +14512 004675 4 LDA HIP 0"A"INPCHN +14513 140500 4 SSM 0"A"HSTMOD +14514 050003 4 STA INCH X +14515 140040 4 CRA +14516 050000 4 STA 0 X /CLEAR CHAIN POINTER +14517 103464 4 JMP HIPKT I + +14520 000000 4 HICKSM: 0 +14521 005702 4 LDA (HICKAD) /GRAB ADDER +14522 026111 4 IMA ADDRET /AND SAVE OLD OWNER +14523 011227 4 STA HIAR +14524 044111 4 LDA BUFE X +14525 140100 4 SSP 0"A"TWOQ +14526 011543 4 STA HICKT +14527 140407 4 TCA +14530 014000 4 ADD 0 +14531 015703 4 ADD (ADDBOT+ACKH+1) +14532 011535 4 STA HICKAJ +14533 017704 4 SUB (ADDBOT+1) /-NO DF WORDS +14534 103535 4 JMP HICKAJ I +14535 4 HICKAJ: BSS 1 +14536 140407 4 HICKAD: TCA + DEFPLC [NOP HERE TO TURN OFF H2I CHECKSUM GENERATION] +14537 111543 4 STA HICKT I /STORE CHECKSUM +14540 005227 4 LDA HIAR /PUT BACK OLD OWNER +14541 010111 4 STA ADDRET +14542 103520 4 JMP HICKSM I + LEV VAR +14543 V HICKT: BSS 1 /TEMP BUFE PTR + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 132 IMP,3050,IMP 7:20 PM 9/16/1973 + + /TOP OF PACKET LOOP + LEV H2I + DEFPLC [HI - WAITING FOR MIDDLE PACKET] +14544 021464 4 HI25: JST HIPKT /SET UP HEADER AND BUFFER CONTROL W[ +14545 072675 4 LDX HIP +14546 105667 4 LDA (HITT 0 X) I +14547 101040 4 SNZ /DID ALARM CLOCK GO OFF? +14550 003610 4 JMP HIPSLO /YES +14551 105642 4 HI26: LDA (HER 0 X) I +14552 011553 4 STA .+1 +14553 4 BSS 1 /ERROR? +14554 003570 4 JMP HI84 /NO +14555 005646 4 LDA (CERROR) /YES, MARK MESS AS ERROR IN DATA +14556 153207 4 HISUBC: ERA HILINK XI /PUT IN NEW SUB CODE +14557 006120 4 ANA SEVEN 0"A"SUBCOD +14560 153207 4 ERA HILINK XI /INTO PNTR TO LINK AND SUB CODE WOR[ +14561 151207 4 STA HILINK XI +14562 172677 4 LDX HIXX I +14563 044005 4 LDA HEAD X +14564 007705 4 ANA (0 0 177777"X"INCTRN) +14565 013706 4 ERA (INCTRN) /SET INC TRN BIT +14566 050005 4 STA HEAD X +14567 003616 4 JMP H2TASK + +14570 045177 4 HI84: LDA HIDEST X /COUNT A PACKET OF THROUGHPUT +14571 121707 4 JST (HTPPT) I +14572 105644 4 LDA (EMFH 0 X) I +14573 011574 4 STA HIEM1 +14574 4 HIEM1: BSS 1 /IS FOM SET? +14575 003577 4 JMP .+2 /NO +14576 003612 4 JMP HI87 /YES +14577 045147 4 LDA HIH1 X /GET PACKET # +14600 007655 4 ANA (PKTNO) +14601 013655 4 ERA (PKTNO) +14602 101040 4 SNZ /IS PKT NO=7 ? +14603 003606 4 JMP HIPLNG /YES +14604 172677 4 HI85: LDX HIXX I +14605 003616 4 JMP H2TASK /NO + +14606 004114 4 HIPLNG: LDA ONE 0"A"CLONG +14607 003556 4 JMP HISUBC /MARK MESS AS TOO LONG + +14610 004115 4 HIPSLO: LDA TWO 0"A"CSLOWS +14611 003556 4 JMP HISUBC /MARK MESS AS TOO SLOW + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 133 IMP,3050,IMP 7:20 PM 9/16/1973 + +14612 172677 4 HI87: LDX HIXX I +14613 044007 4 DEFSTAT LDA HEAD2 X, HS0 +00607 031055 4 +32003 014613 4 +32023 044007 4 +14614 140500 4 SSM 0"A"LSTPKT +14615 050007 4 STA HEAD2 X +14616 021520 4 H2TASK: JST HICKSM /CHECKSUM PACKET +14617 001001 4 INH M2I +14620 132401 4 0 STX ETQ I /PUT PACKET ON MIDDLE TASK QUEUE +14621 032401 4 0 STX ETQ +14622 030041 4 0 TASK /POKE TASK INTERRUPT +14623 121635 4 0 H2TSKS: JST (HIWM) I RET H2I + DEFPLC [HI - WAITING FOR TASK TO TAKE A PKT] +14624 003623 4 JMP H2TSKS /NO ACTION YET +14625 003604 4 JMP HI85 /TASK REFUSED IT +14626 103710 4 JMP (HIDB) I /TASK TOOK IT + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 134 IMP,3050,IMP 7:20 PM 9/16/1973 + +14627 007400 C LEV CON CONSTANTS +14630 002000 C +14631 013357 C +14632 021431 C +14633 054177 C +14634 013127 C +14635 013124 C +14636 053432 C +14637 053433 C +14640 177760 C +14641 114123 C +14642 053170 C +14643 056306 C +14644 053313 C +14645 000400 C +14646 000004 C +14647 004400 C +14650 000704 C +14651 000077 C +14652 000340 C +14653 040300 C +14654 040200 C +14655 003400 C +14656 100077 C +14657 015161 C +14660 010000 C +14661 000006 C +14662 030457 C +14663 157777 C +14664 020000 C +14665 014343 C +14666 013466 C +14667 053137 C +14670 174377 C +14671 000300 C +14672 015064 C +14673 022415 C +14674 015114 C +14675 015233 C +14676 000100 C +14677 100010 C +14700 000005 C +14701 153147 C +14702 014536 C +14703 001563 C +14704 001557 C +14705 177767 C +14706 000010 C +14707 022426 C +14710 013405 C +02423 176721 C PAGEND 14,UNCON,4 + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 135 IMP,3050,IMP 7:20 PM 9/16/1973 + + + LEV [T.O,TSK,BCK] LCK H2I + /PENDING PACKET TABLE SUBROUTINES - LOCK INTERRUPTS +15033 000000 5 4 PPTGET: 0 /GET AN ENTRY FROM PPT +15034 011160 5 4 STA PPWANT /MATCH ON MESSNO AND IMPNO IN A +15035 005521 5 4 LDA (-PPTL) +15036 011157 5 4 STA PPTRY +15037 005522 5 4 LDA (PPT) +15040 011156 5 4 STA PPSLT +15041 105156 5 4 PPTL1: LDA PPSLT I /LOOK AT NEXT SLOT +15042 101040 5 4 SNZ /IS THIS SLOT OCCUPIED? +15043 003060 5 4 JMP PPTN1 /NO +15044 010000 5 4 STA 0 /YES, SO LOOK FOR MATCH +15045 044005 5 4 LDA HEAD X +15046 141044 5 4 CAR 0"A"MESSNO +15047 052006 5 4 ERA HEAD1 X +15050 007523 5 4 ANA (0 0 177777"X"DESTI) +15051 052006 5 4 ERA HEAD1 X +15052 013160 5 4 ERA PPWANT +15053 100040 5 4 SZE /MATCH ON MESSNO+IMPNO? +15054 003060 5 4 JMP PPTN1 /NO +15055 005156 5 4 LDA PPSLT /RETURN PNTR TO PPT PNTR IN AC +15056 025033 5 4 IRS PPTGET /SKIP=SUCCESS +15057 103033 5 4 JMP PPTGET I +15060 025156 5 4 PPTN1: IRS PPSLT /GET NEXT SLOT +15061 025157 5 4 IRS PPTRY +15062 003041 5 4 JMP PPTL1 /LOOP BACK +15063 103033 5 4 JMP PPTGET I /NO MATCH, NO SKIP + + LEV H2I +15064 000000 4 PPTPUT: 0 /PUT AN ENTRY INTO PPT - PNTR IN X +15065 004675 4 LDA HIP /TABLE IS PPTL DEEP FOR FAKE HOSTS +15066 040576 4 ARS 2 +15067 140407 4 TCA 0"A"NH /AND PPTL-1 DEEP FOR REAL HOSTS +15070 015524 4 ADD (0 1-PPTL) +15071 011157 4 STA PPTRY +15072 005522 4 LDA (PPT) +15073 011156 4 STA PPSLT +15074 105156 4 PPTL2: LDA PPSLT I +15075 100040 4 SZE /IS THIS SLOT FREE? +15076 003110 4 JMP PPTN2 /NO +15077 133156 4 STX PPSLT I /YES, SO PUT IN OUR PNTR +15100 044111 4 LDA BUFE X +15101 140500 4 SSM 0"A"TWOQ /MARK PACKET AS ON 2 QUEUES +15102 050111 4 DEFSTAT STA BUFE X, HS4 +00610 031266 4 +32004 015102 4 +32024 050111 4 +15103 004000 4 LDA 0 +15104 015525 4 ADD (HEAD3) +15105 072675 4 LDX HIP +15106 025064 4 IRS PPTPUT /SKIP=SUCCESS +15107 103064 4 JMP PPTPUT I +15110 025156 4 PPTN2: IRS PPSLT /GET NEXT SLOT +15111 025157 4 IRS PPTRY +15112 003074 4 JMP PPTL2 /LOOP BACK +15113 103064 4 JMP PPTPUT I /NO ROOM, NO SKIP + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 136 IMP,3050,IMP 7:20 PM 9/16/1973 + + LEV [H2I,T.O,BCK] + /TALLY TABLE SUBROUTINES - LOCK INTERRUPTS + /ARG PASSED IN A, AND X PRESERVED +15114 000000 4 TALLYG: 0 /GET AN ENTRY FROM TALLY +15115 011153 4 STA TALLYT /IMPNO TO MATCH IN A +15116 033154 4 STX TALLYX +15117 073526 4 LDX (TALLY-1) +15120 024000 4 TALLYK: IRS 0 +15121 004000 4 LDA 0 +15122 023155 4 CAS TALLYI /COMPARE WITH IN PNTR +15123 003150 4 JMP TALLYR +15124 003150 4 JMP TALLYR /NO MATCH, NO SKIP +15125 044000 4 LDA 0 X +15126 013153 4 ERA TALLYT +15127 100040 4 SZE /IS THIS ENTRY ONE WE WANT? +15130 003120 4 JMP TALLYK /NO, LOOP BACK +15131 004000 4 LDA 0 +15132 013527 4 ERA (TALLY) +15133 101040 4 SNZ /DID WE JUST GRAB THE OLDEST ALLOCA +15134 111530 4 STA (TALLYC) I /YES, SO RESET TALLY CLOCK +15135 044001 4 TALLYM: LDA 1 X +15136 050000 4 STA 0 X /MOVE REST OF TABLE UP BY ONE SLOT +15137 024000 4 IRS 0 +15140 004000 4 LDA 0 +15141 013155 4 ERA TALLYI +15142 100040 4 SZE /DONE YET? +15143 003135 4 JMP TALLYM /NO, LOOP BACK +15144 005155 4 LDA TALLYI /YES, NOW ADJUST IN PNTR +15145 016114 4 SUB ONE +15146 011155 4 STA TALLYI +15147 025114 4 IRS TALLYG /SKIP=SUCCFSS +15150 073154 4 TALLYR: LDX TALLYX /RESTORE X +15151 005153 4 LDA TALLYT /RESTORE A +15152 103114 4 JMP TALLYG I + + LEV VAR +15153 V TALLYT: BSS 1 /TEMP A +15154 V TALLYX: BSS 1 /TEMP X +15155 V TALLYI: BSS 1 /IN PNTR + +15156 V PPSLT: BSS 1 /PNTR TO PPT ENTRY +15157 V PPTRY: BSS 1 /NO OF TIMES TO LOOK +15160 V PPWANT: BSS 1 /MESSNO + IMPNO WE WANT + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 137 IMP,3050,IMP 7:20 PM 9/16/1973 + + LEV [H2I,BCK] +15161 000000 4 MESGET: 0 /GFT MESSNO, DEST IMP IN A +15162 033204 4 STX MESGX +15163 011203 4 STA MESGT +15164 140100 4 SSP 0"A"PRIBIT +15165 015531 4 ADD (TMESS) +15166 010000 4 STA 0 +15167 044000 4 LDA 0 X +15170 101100 4 SLN 0"A"MESBTS +15171 003201 4 JMP MESGND /MESS NO IN USE +15172 005203 4 LDA MESGT +15173 100400 4 SPL 0"A"PRIBIT /NEED A NEW ORD NO? +15174 021361 4 JST UPORD /YES +15175 021347 4 JST UPMESS +15176 007532 4 ANA (MESSNO 0 ORDNO) +15177 013533 4 ERA (TRNREP) /MARK AS TRANSMISSION +15200 025161 4 IRS MESGET /SKIP=SUCCESS +15201 073204 4 MESGND: LDX MESGX +15202 103161 4 JMP MESGET I + LEV VAR +15203 V MESGT: BSS 1 +15204 V MESGX: BSS 1 + + LEV [T.O,TSK,BCK] LCK H2I + /PENDING LEADER TABLE SUBROUTINES - LOCK INTERRUPTS +15205 000000 5 4 PLTGET: 0 /GET AN ENTRY FROM PLT +15206 011274 5 4 STA PLWANT /MATCH ON MESSNO AND IMPNO IN A +15207 005534 5 4 LDA (-PLTL) +15210 011273 5 4 STA PLTRY +15211 073535 5 4 LDX (PLT) +15212 044000 5 4 PLTL1: LDA PLT0 X +15213 101040 5 4 SNZ /IS THIS ENTRY EMPTY? +15214 003226 5 4 JMP PLTN1 /YES +15215 141044 5 4 CAR 0"A"MESSNO +15216 052014 5 4 ERA PLT1 X +15217 007523 5 4 ANA (0 0 177777"X"DESTI) +15220 052014 5 4 ERA PLT1 X +15221 013274 5 4 ERA PLWANT +15222 100040 5 4 SZE /MATCH ON MESSNO+IMPNO? +15223 003226 5 4 JMP PLTN1 /NO +15224 025205 5 4 IRS PLTGET /SKIP=SUCCESS +15225 103205 5 4 JMP PLTGET I /RETURN PNTR TO PLT ENTRY IN X +15226 024000 5 4 PLTN1: IRS 0 /GET NEXT ENTRY +15227 025273 5 4 IRS PLTRY +15230 003212 5 4 JMP PLTL1 /LOOP BACK +15231 005274 5 4 LDA PLWANT /RESTORE A +15232 103205 5 4 JMP PLTGET I /NO MATCH, NO SKIP + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 138 IMP,3050,IMP 7:20 PM 9/16/1973 + + LEV H2I +15233 000000 4 PLTPUT: 0 /PUT AN ENTRY INTD PLT +15234 004000 4 LDA 0 /HOST NO IN A +15235 113536 4 ERA (HIH0 0 X) I +15236 007537 4 ANA (0 0 177777"X"MESSNO"X"REQALL) +15237 113536 4 ERA (HIH0 0 X) I +15240 013540 4 ERA (PLTUSE) /MARK PLT0 ENTRY IN USE +15241 011275 4 STA PLTH /SAVE PLT0 ENTRY +15242 105541 4 LDA (HIH1 0 X) I +15243 011276 4 STA PLTH1 /SAVE PLT1 ENTRY +15244 105542 4 LDA (HIH3 0 X) I +15245 011277 4 STA PLTH3 /SAVE PLT2 ENTRY +15246 005534 4 LDA (-PLTL) +15247 011273 4 STA PLTRY +15250 073535 4 LDX (PLT) +15251 044000 4 PLTL2: LDA PLT0 X +15252 100040 4 SZE /IS THIS ENTRY FREE? +15253 003267 4 JMP PLTN2 /NO +15254 005275 4 LDA PLTH /YES, SO PLANT PLT0,1,2 +15255 050000 4 STA PLT0 X +15256 005276 4 LDA PLTH1 +15257 050014 4 STA PLT1 X +15260 005277 4 LDA PLTH3 +15261 050030 4 DEFSTAT STA PLT2 X, HS5 +00611 031276 4 +32005 015261 4 +32025 050030 4 +15262 025233 4 IRS PLTPUT /SKIP=SUCCESS +15263 004000 4 PLTPX: LDA 0 +15264 015543 4 ADD (PLT2) +15265 072675 4 LDX HIP +15266 103233 4 JMP PLTPUT I +15267 024000 4 PLTN2: IRS 0 /GET NEXT ENTRY +15270 025273 4 IRS PLTRY +15271 003251 4 JMP PLTL2 /LOOP BACK +15272 003263 4 JMP PLTPX /NO ROOM, NO SKIP + + LEV VAR +15273 V PLTRY: BSS 1 +15274 V PLWANT: BSS 1 +15275 V PLTH: BSS 1 +15276 V PLTH1: BSS 1 +15277 V PLTH3: BSS 1 + +15300 V RALLYA: BSS 1 +15301 V RALLYI: BSS 1 +15302 V RALMRK: BSS 1 + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 139 IMP,3050,IMP 7:20 PM 9/16/1973 + + + /RALLY TABLE SUBROUTINES + LEV [I2H,TSK] +15303 000000 3 RALLYP: 0 /PUT AN ENTRY IN RALLY TABLE +15304 011300 3 STA RALLYA /A = MESSNO, ONEOR8, RFNM, SRCEI +15305 007544 3 ANA (SRCEI) +15306 015545 3 ADD (RALLY) +15307 011301 3 STA RALLYI /SET UP INPUT PNTR +15310 004121 3 LDA MINUS1 +15311 022000 3 CAS 0 /X = REGULAR. INCOMPLETE, OR DEAD +15312 141206 3 AOA /X=SIGN, DEAD +15313 141206 3 AOA /X=MINUS1, INCOMPLETE +15314 141206 3 AOA /X=0 OR X>0, REGULAR +15315 141206 3 AOA /MAKE INTO 11, 10, OR 01 +15316 041576 3 ALS 2 /SHIFT INTO POSITION +15317 011302 3 STA RALMRK /AND SAVE AS MARK BITS +15320 005300 3 LDA RALLYA +15321 141140 3 ICL 0"A"MESSNO +15322 006116 3 ANA THREE +15323 041576 3 ALS 2 +15324 140407 3 TCA +15325 015546 3 ADD (ALR 0 +15326 011331 3 STA RALPS1 /SET UP SHIFT +15327 011341 3 STA RALPS2 +15330 005547 3 LDA (17) +15331 3 RALPS1: BSS 1 +15332 107301 3 ANA RALLYI I +15333 100040 3 SZE /SOMETHING ALREADY THERE? +15334 003346 3 JMP RALPX /YES, A BUG +15335 005300 3 LDA RALLYA +15336 040672 3 ARR 6 0"A"[ONEOR8 0 RFNM] +15337 006116 3 ANA THREE /GET BITS +15340 013302 3 ERA RALMRK /MARK GOT-IT BIT +15341 3 RALPS2: BSS 1 /SHIFT THEM OVER +15342 113301 3 ERA RALLYI I /OR THE BITS IN +15343 111301 3 STA RALLYI I +15344 010477 3 STA RALLCF /COUNT AN ALLOCATE PENDING +15345 025303 3 IRS RALLYP /SKIP=SUCCESS +15346 103303 3 RALPX: JMP RALLYP I + + /FORMAT OF EACH RALLY WORD IS 4 4-BIT BYTES: A,B,C,D + /THIS TABLE RUNS IN PARALLEL WITH AMESS, THE NEXT MESSAGE + /NUMBER FOR WHICH A REPLY SHOULD BE RETURNED + /BYTE A IS FOR AMESS=3 MOD 4, B FOR AMESS=2 MOD 4 + /C= 1 MOD 4, D= 0 MOD 4 + /FORMAT OF EACH 4 -BIT BYTE IS TTMM: + /TT=00 NO ENTRY + /TT=01 RFNM OR RFNM/ALLOCATE + /TT=10 INCOMPLETE TRANSMISSION + /TT=11 DESTINATION DEAD + /FOR TT=10 OR TT=01: + /MM=00 8 PKT ALLOCATE + /MM=01 8 PKT RFNM/ALLOCATE + /MM=10 1 PKT ALLOCATE + /MM=11 1 PKT RFNM + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 140 IMP,3050,IMP 7:20 PM 9/16/1973 + + LEV [H2I,T.O,TSK,BCK] +15347 000000 4 UPMESS: 0 /ADD ONE TO MESS NO +15350 044000 4 LDA 0 X /PNTR TO MESS TAB IN X +15351 007547 4 ANA (MESBTS) +15352 040477 4 LGR 1 /SHIFT BITS +15353 052000 4 ERA 0 X +15354 007547 4 ANA (MESBTS) +15355 052000 4 ERA 0 X +15356 015550 4 ADD (MESS1) 0"A"MESSNO +15357 050000 4 STA 0 X /INCREMENT MESS NO +15360 103347 4 JMP UPMESS I + +15361 000000 4 UPORD: 0 /ADD ONE TO ORDER NO +15362 044000 4 LDA 0 X /PNTR TO MESS TAB IN X +15363 015551 4 ADD (20) 0"A"ORDNO +15364 052000 4 ERA 0 X /INCREMENT ORDER NO +15365 007552 4 ANA (ORDNO) +15366 052000 4 ERA 0 X +15367 050000 4 STA 0 X +15370 103361 4 JMP UPORD I + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 141 IMP,3050,IMP 7:20 PM 9/16/1973 + + LEV FRE + /PUT A TWO-WORD MESSAGE - LOCK INTERRUPTS + /CALLED BY I2H,H2I,T.O,TSK,BCK +15371 000000 0 OWPE: 0 +15372 033501 0 STX HNUM +15373 011502 0 STA ONEW +15374 005501 0 LDA HNUM +15375 022130 0 CAS PLNH /REAL HOST? +15376 003442 0 JMP OWPF /NO +15377 101000 0 NOP /TTY LIKE REAL HOST +15400 073553 0 LDX (SHBQ) +15401 004124 0 LDA MINUS4 +15402 011500 0 STA TPEE +15403 003411 0 JMP OWP4 +15404 010000 0 OWP0: STA 0 +15405 064003 0 IRS 3 X +15406 003462 0 JMP OWP3 +15407 004121 0 LDA MINUS1 +15410 050003 0 STA 3 X +15411 025500 0 OWP4: IRS TPEE /ALLOWED TO HAVE ANOTHER BUFFER? +15412 003415 0 JMP OWP8 /YES +15413 025371 0 OWP7: IRS OWPE /NO +15414 003476 0 JMP OWP5 +15415 044000 0 OWP8: LDA 0 X +15416 100040 0 SZE +15417 003404 0 JMP OWP0 +15420 104324 0 LDA FREE I +15421 101040 0 SNZ +15422 003413 0 JMP OWP7 +15423 026324 0 IMA FREE +15424 024563 0 IRS NFS +15425 050000 0 STA 0 X +15426 011500 0 STA TPEE +15427 026000 0 IMA 0 +15430 050001 0 STA 1 X +15431 005554 0 LDA (-17.) /(DECIMAL) +15432 011503 0 STA OWT3 +15433 050003 0 STA 3 X +15434 140040 0 CRA +15435 050000 0 STA 0 X +15436 005500 0 LDA TPEE +15437 014117 0 ADD FOUR +15440 050002 0 STA 2 X +15441 003452 0 JMP OWP1 + +15442 012120 0 OWPF: ERA SEVEN /DISCARD? +15443 100040 0 SZE +15444 103371 0 JMP OWPE I /NO. +15445 005555 0 LDA (-300.) /YES, RESET SOFTWARE WDT. TO 3 MIN. +15446 010503 0 STA WDTIME +15447 030026 0 WDT /AND POKE THE HARDWARE +15450 103371 0 JMP OWPE I + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 142 IMP,3050,IMP 7:20 PM 9/16/1973 + +15451 044000 0 OWP2: LDA 0 X +15452 010000 0 OWP1: STA 0 +15453 014117 0 ADD FOUR +15454 050000 0 STA 0 X +15455 005500 0 LDA TPEE +15456 050003 0 STA 3 X +15457 025503 0 IRS OWT3 +15460 003451 0 JMP OWP2 +15461 073500 0 LDX TPEE + +15462 144002 0 OWP3: LDA 2 XI +15463 066002 0 IMA 2 X +15464 073501 0 LDX HNUM +15465 150403 0 STA EHWQ XI +15466 050403 0 STA EHWQ X +15467 010000 0 STA 0 +15470 140040 0 CRA +15471 050000 0 STA 0 X +15472 005502 0 LDA ONEW +15473 050001 0 STA 1 X +15474 004515 0 LDA TWDP +15475 050002 0 STA 2 X +15476 073501 0 OWP5: LDX HNUM +15477 103371 0 JMP OWPE I + + LEV VAR +15500 V TPEE: BSS 1 +15501 V HNUM: BSS 1 +15502 V ONEW: BSS 1 +15503 V OWT3: BSS 1 + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 143 IMP,3050,IMP 7:20 PM 9/16/1973 + + /SUBROUTINE TO GET FROM A QUEUE - LOCK INTEPRUPTS + LEV [I2H,T.O,BCK] +15504 000000 3 GETQ: 0 +15505 044000 3 LDA 0 X +15506 101040 3 SNZ +15507 103504 3 JMP GETQ I /NOTHING ON QUEUE +15510 144000 3 LDA 0 XI +15511 101040 3 SNZ /IS THIS THE ONLY THING ON QUEUE? +15512 133556 3 STX (QUEUEE-QUEUEB X) I /YES, MAKE END POINT TO +15513 066000 3 IMA 0 X /REMOVE FROM QUEUE +15514 010000 3 STA 0 +15515 140040 3 CRA +15516 050000 3 STA 0 X /CLEAR CHAIN POINTER +15517 025504 3 IRS GETQ +15520 103504 3 JMP GETQ I + +15521 177770 C LEV CON CONSTANTS +15522 033457 C +15523 177700 C +15524 177771 C +15525 000010 C +15526 032260 C +15527 032261 C +15530 020210 C +15531 032271 C +15532 177460 C +15533 000004 C +15534 177764 C +15535 033477 C +15536 054137 C +15537 000277 C +15540 000200 C +15541 054147 C +15542 054167 C +15543 000030 C +15544 000077 C +15545 032571 C +15546 041700 C +15547 000017 C +15550 000400 C +15551 000020 C +15552 000060 C +15553 000337 C +15554 177757 C +15555 177324 C +15556 040051 C +02424 175566 C PAGEND 15,UNCON,4 + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 144 IMP,3050,IMP 7:20 PM 9/16/1973 + + + /IMP TO HOST (IH) + + PAGI2H: + LEV I2H + +00076 016034 3 H1OTIL/ IH0E +00077 3 H2OTIL/ TIPDEF IH1E,TINT +02257 000077 3 +02307 016026 3 +02337 025061 3 +00070 016020 3 H3OTIL/ IH2E +00067 016012 3 H4OTIL/ IH3E + + PAGI2H/ + /HOST 3 INTERRUPT ROUTINE +16012 000000 3 0 IH3E: INT I2H +16013 033121 3 0 STX IHX +16014 073012 3 0 LDX IH3E +16015 033042 3 0 STX IHSB +16016 072116 3 0 LDX THREE +16017 003044 3 0 JMP IHSB2 + /HOST 2 INTERRUPT ROUTINE +16020 000000 3 0 IH2E: INT I2H +16021 033121 3 0 STX IHX +16022 073020 3 0 LDX IH2E +16023 033042 3 0 STX IHSB +16024 072115 3 0 LDX TWO +16025 003044 3 0 JMP IHSB2 + /HOST 1 INTERRUPT ROUTINE +16026 000000 3 0 IH1E: INT I2H +16027 033121 3 0 STX IHX +16030 073026 3 0 LDX IH1E +16031 033042 3 0 STX IHSB +16032 072114 3 0 LDX ONE +16033 003044 3 0 JMP IHSB2 + /HOST 0 INTERRUPT ROUTINE +16034 000000 3 0 IH0E: INT I2H +16035 033121 3 0 STX IHX /SAVE INDEX REGISTER +16036 073034 3 0 LDX IH0E +16037 033042 3 0 STX IHSB +16040 072113 3 0 LDX ZERO /NOTE HOST WHICH CAUSED INTERRUPT +16041 003044 3 0 JMP IHSB2 + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 145 IMP,3050,IMP 7:20 PM 9/16/1973 + + /FROM HERE ON IS COMMON TO ALL IMP-HOST INTERRUPT ROUTINES +16042 000000 3 0 IHSB: 0 +16043 033121 3 0 STX IHX +16044 000011 3 0 IHSB2: DXA +16045 003046 3 0 JMP . 1 +16046 011117 3 0 STA IHA /SAVE AC +16047 000043 3 0 INK +16050 011120 3 0 STA IHK /SAVE EX-MODE +16051 032676 3 0 STX IHP /SAVE CURRENT HOST +16052 004500 3 0 LDA IHM /SET UP NEW INTERRUPT MASK (177700) +16053 170120 3 0 SMK INTM /OUTPUT IT +16054 026134 3 0 IMA PRIM /SAVE IT IN PRIM +16055 011122 3 0 STA IHMS /SAVE OLD PRIM +16056 000401 3 0 ENB I2H +16057 143107 3 JMP IHLO XI /RESTART WHERE LAST LEFT OFF + +16060 000000 3 IHDB: 0 /DEBREAK +16061 004000 3 LDA 0 +16062 016130 3 SUB PLNH +16063 100400 3 SPL +16064 003071 3 JMP IHDO /REAL HOST - DO THE OCP +16065 004107 3 LDA M30SEC /FAKE HOSTS ALWAYS GET 2 MINUTES +16066 041576 3 ALS 2 +16067 051306 3 STA IHTT X +16070 100000 3 SKP /DON'T DO OCP FOR FAKE GUYS +16071 3 IHDO: BSS 1 +16072 005060 3 LDA IHDB +16073 051107 3 IHDONE: STA IHLO X +16074 005122 3 LDA IHMS /RESTORE INTERPUPT MASK +16075 001001 3 INH MSK +16076 170120 3 0 SMK INTM +16077 010134 3 0 STA PRIM +16100 000013 3 0 EXA +16101 005120 3 0 LDA IHK +16102 171020 3 0 OTK /RESTORE EX-MODE +16103 073121 3 0 LDX IHX /RESTORE IR +16104 005117 3 0 LDA IHA /RESTORE AC +16105 000401 3 0 ENB I2H +16106 103042 3 JMP IHSB I + + LEV VAR + / IHLO INDICATES WHAT ROUTINES DID LAST + DEFPLC [IHLO] +16107 V IHLO: BSS TH /RETURN ADDRESSES WHERE IH LEFT OFF +16117 V IHA: BSS 1 /AC SAVE +16120 V IHK: BSS 1 /K SAVE +16121 V IHX: BSS 1 /IR SAVE +16122 V IHMS: BSS 1 /OLD PRIM SAVE +16123 V IHAR: BSS 1 /ADD RET SAVE + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 146 IMP,3050,IMP 7:20 PM 9/16/1973 + + /IMP-TO-HOST ROUTINES LOCAL STORAGE + LEV CON +16124 030270 C IHED: H1FOUT /FINAL OUTPUT INSTRUCTIONS +16125 030260 C H2FOUT +16126 C TIPDEF H3FOUT, NOP +02260 016126 C +02310 030250 C +02340 101000 C +16127 030251 C H4FOUT +16130 016205 C OWOP: OWO /PNTRS TO TWO WORD OUTPUT AREAS +16131 016207 C OWO+2 +16132 016211 C OWO+4 +16133 016213 C OWO+6 +16134 016215 C OWO+10 +16135 000044 C IHB1: H1OTBP /DMC OUTPUT PNTRS +16136 000046 C H2OTBP +16137 C TIPDEF H3OTBP, TIPLNK +02261 016137 C +02311 000054 C +02341 000770 C +16140 000030 C H4OTBP +16141 017407 C IHBB +16142 017410 C IHBB+1 +16143 017411 C IHBB+2 +16144 017412 C IHBB+3 +16145 000045 C IHB2: H1OTBP+1 /DMC OUTPUT END PNTRS +16146 000047 C H2OTBP+1 +16147 C TIPDEF H3OTBP+1, TIPLNK+1 +02262 016147 C +02312 000055 C +02342 000771 C +16150 000031 C H4OTBP+1 +16151 017413 C IHBC +16152 017414 C IHBC+1 +16153 017415 C IHBC+2 +16154 017416 C IHBC+3 + LEV VAR + /IN IHSP: + /0 ==> NOTHING IS GOING OUT + /100000 ==> LEADER ONLY (2-WRD MSG) GOING + /2000-37777 ==> PACKET 1S GOING OUT + /102000-137777 ==> PACKET WITH BAD CKSUM IS GOING OUT +16155 V IHSP: BSS TH /SAVED BUFFER POINTERS +16165 V IHWQ: BSS TH /SAVED QUEUE POINTERS +16175 V IHLSTP: BSS TH /MINUS IF LAST PKT + DEFPLC [IH - 2 WORD OUTPUT AREA] +16205 V OWO: BSS [[NH+1]"T"2] /TWO WORD OUTPUT AREA + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 147 IMP,3050,IMP 7:20 PM 9/16/1973 + + LEV BCK LCK INI /INITIALIZATION ROUTINE +16217 000000 7 0 IHIN: 0 +16220 140040 7 0 CRA +16221 051155 7 0 STA IHSP X +16222 151135 7 0 STA IHB1 XI /FOR FAKE HOSTS +16223 011042 7 0 STA IHSB /IN CASE NON-DXA IMP RELOADS FROM 1 +16224 140500 7 0 SSM /BLOCK INPUT! +16225 111575 7 0 STA (HINWAT 0 X) I +16226 005576 7 0 LDA (IHBEG) +16227 021273 7 0 JST IHST +16230 103217 7 0 JMP IHIN I + + LEV I2H +16231 000000 3 IHS1: 0 /DISCARD BUFFERS FROM QUEUE +16232 014676 3 ADD IHP +16233 011303 3 STA IHT2 +16234 015577 3 ADD (NHS+0-SHQ) +16235 011304 3 STA IHT3 +16236 004676 3 LDA IHP +16237 012120 3 ERA SEVEN +16240 101040 3 SNZ /DISCARD? +16241 103231 3 JMP IHS1 I /YES, DO NOT DISCARD DISCARD +16242 105303 3 IHS1A: LDA IHT2 I +16243 101040 3 SNZ /ANYTHING ON THIS QUEUE? +16244 103231 3 JMP IHS1 I /NO, QUIT +16245 010000 3 STA 0 +16246 005305 3 LDA IHS1F /=0, FLUSH ALL, ELSE, FLUSH TIMEOL' +16247 101040 3 SNZ /DISCARD ALL? +16250 003261 3 JMP IHS1B /YES +16251 004416 3 LDA TIMES /GFT TIME IN SLOW TICKS +16252 056003 3 SUB INCH X /NO, CHECK TIME +16253 100400 3 SPL /TOO OLD? +16254 003267 3 JMP IHS1C /NO, SO SAVE TIME LEFT +16255 004676 3 LDA IHP +16256 016130 3 SUB PLNH +16257 101400 3 SMI /FAKE HOST? +16260 103231 3 JMP IHS1 I /YES, HAVE MERCY +16261 073303 3 IHS1B: LDX IHT2 +16262 121600 3 JST (GETQ) I +16263 103231 3 JMP IHS1 I /SHOULDNT HAPPEN +16264 121601 3 JST (IHS5) I +16265 125304 3 IRS IHT3 I +16266 003242 3 JMP IHS1A + +16267 023305 3 IHS1C: CAS IHS1F /PICK MIN TIME LEFT +16270 011305 3 STA IHS1F /FOR OLDEST PKT ON PRI OR REG QUEUE +16271 101000 3 NOP /IF NOTHING THERE, USE 30 SECS +16272 103231 3 JMP IHS1 I + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 148 IMP,3050,IMP 7:20 PM 9/16/1973 + + LEV T.O /RESTART ROUTINE +16273 000000 5 IHST: 0 /HERE AT INIT AND WHEN HOST READY DT +16274 051107 5 STA IHLO X /THROW AWAY ALL MESSAGES +16275 001001 5 INH SIN +16276 000013 5 0 EXA /BUT DO NOT FLAP IMP'S READY LINE +16277 021042 5 0 JST IHSB RET T.O +16300 001001 5 INH ALL +16301 120672 5 0 JST DODXA I RET T.O +16302 103273 5 JMP IHST I + + LEV VAR +16303 V IHT2: BSS 1 /TEMP +16304 V IHT3: BSS 1 /TEMP +16305 V IHS1F: BSS 1 /0=FLUSH ALL, ELSE=FLUSH TIMEOUTS + /ALSO KEEPS ALARM CLOCK TIME FOR [ 1 +16306 V IHTT: BSS TH /TIME OUT CHECK FLAGS + + LEV CON +16316 030570 C HENABT: H1ENAB +16317 030560 C H2ENAB +16320 030550 C H3ENAB +16321 030551 C H4ENAB + + LEV I2H +16322 000000 3 IHW640: 0 /SUBR TO WAIT 640 MS +16323 011324 3 STA .+1 /SET UP READY LINE OCP +16324 3 BSS 1 /DO IT +16325 004121 3 LDA MINUS1 /AND WAIT 640 MS FOR RELAY TO SETTL1 +16326 051306 3 STA IHTT X +16327 005322 3 LDA IHW640 +16330 003073 3 JMP IHDONE + +16331 004110 3 IHBEG: LDA PTICKS /A LITTLE MORE THAN TWICE PTICKS +16332 016120 3 SUB SEVEN +16333 041577 3 ALS 1 /WAIT FOR LINES TO COME UP AND ROUT +16334 051306 3 STA IHTT X +16335 005602 3 LDA (IHWAIT) +16336 003073 3 JMP IHDONE +16337 005603 3 IHWT1: LDA (NOP) +16340 021322 3 JST IHW640 + DEFPLC [IH - WAITING FOR INITIALIZATION DELAY] +16341 004172 3 IHWAIT: LDA RUT+BBNIMP +16342 100400 3 SPL 0"A"RUTDED /IS NCC UP YET? +16343 003347 3 JMP IHWT2 /NEVER COMING UP...GO AHEAD +16344 007604 3 ANA (RUTCMU) /COMING UP? +16345 100040 3 SZE +16346 003337 3 JMP IHWT1 /YES, WAIT SOME MORE +16347 004116 3 IHWT2: LDA THREE 0"A"HSTOFF /OK, START UP HOSTS +16350 003357 3 JMP IHR11 /HOLD DOWN RDY FOR 60 SECS AT INIT + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 149 IMP,3050,IMP 7:20 PM 9/16/1973 + +16351 004000 3 IHR2: LDA 0 /HERE TO FLUSH ALL/FLAP READY LINE +16352 016120 3 SUB SEVEN /DON'T FLUSH STUFF ON DISCARD QUEUE +16353 101040 3 SNZ +16354 103605 3 JMP (IH62) I +16355 111575 3 STA (HINWAT 0 X) I /DISCARD STUFF ON OTHER O1 +16356 004115 3 LDA TWO 0"A"HSTTRD +16357 050504 3 IHR11: STA HIHD X /MARK HOST AS TARDY (DEAD) +16360 121606 3 IHR1: JST (OWGE) I /HERE TO FLUSH ALL/NO READY LINE FL +16361 100000 3 SKP /THROW AWAY ALL 2 WORD MESSAGES +16362 003360 3 JMP IHR1 +16363 140040 3 CRA /FLUSH BUFFER CURRENTLY IN INTERFACI +16364 151145 3 STA IHB2 XI +16365 151135 3 STA IHB1 XI +16366 067155 3 IMA IHSP X +16367 140100 3 SSP /IF 0, NOTHING GOING +16370 101040 3 SNZ /IF SIGN BIT ONLY, TWO WORD GOING +16371 003400 3 JMP IS40 /IN EITHER CASE, NOTHING TO FLUSH +16372 024541 3 IRS NREA +16373 011305 3 STA IHS1F /SAVE PKT PNTR IN TEMP +16374 045175 3 LDA IHLSTP X /PICK UP LST PKT BIT +16375 073305 3 LDX IHS1F /GET PKT PNTR +16376 050007 3 STA HEAD2 X /AND RESTORE LST PKT BIT TO PKT +16377 121601 3 JST (IHS5) I +16400 140040 3 IS40: CRA /SET TO DISCARD ALL BUFFERS ON QU[ +16401 011305 3 STA IHS1F +16402 005607 3 LDA (SHQ) /GET REGULAR QUEUE +16403 021231 3 JST IHS1 +16404 005610 3 LDA (SHPQ) /GET PRIORITY QUEUE +16405 021231 3 JST IHS1 +16406 072676 3 LDX IHP +16407 004000 3 LDA 0 +16410 016130 3 SUB PLNH +16411 101400 3 SMI /FAKE HOST? +16412 003422 3 JMP IS30 /YES, DO NOT DROP READY LINE +16413 105575 3 LDA (HINWAT 0 X) I /WE BLOCKING INPUT? +16414 101040 3 SNZ +16415 003422 3 JMP IS30 /NO, DON'T DROP READY LINE +16416 105611 3 LDA (HUNXPT 0 X) I +16417 021322 3 JST IHW640 /WAIT FOR 640 MS + DEFPLC [IH - WAITING FOR READY LINE TO DROP] +16420 045316 3 LDA HENABT X +16421 021322 3 JST IHW640 /WAIT FOR 640 MS + DEFPLC [IH - WAITING FOR READY LINE TO GO UP] +16422 004123 3 IS30: LDA MINUS3 +16423 011303 3 STA IHT2 +16424 000401 3 IS10: ENB I2H +16425 005612 3 LDA (CNOP) +16426 001001 3 INH FRE +16427 120670 3 0 JST OWP I /PUT 3 NOPS ON HOST TWO WORD QUEUE +16430 101000 3 0 NOP +16431 025303 3 0 IRS IHT2 +16432 003424 3 0 JMP IS10 +16433 005613 3 0 LDA (CRESET) +16434 120670 3 0 JST OWP I /PUT AN IMP-TO-HOST RESET MESS ON ' +16435 101000 3 0 NOP +16436 000401 3 0 ENB I2H + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 150 IMP,3050,IMP 7:20 PM 9/16/1973 + +16437 140040 3 CRA /RELEASE INPUT +16440 111575 3 STA (HINWAT 0 X) I +16441 005603 3 IH00: LDA (NOP) +16442 021322 3 JST IHW640 RET I2H + DEFPLC [IH - NOTHING TO DO] +16443 004107 3 IH1: LDA M30SEC /SET TO DISCARD TIMED-OUT BUFFERS +16444 011305 3 STA IHS1F /AND SAVE TIME LEFT ON OLDEST +16445 005607 3 LDA (SHQ) +16446 021231 3 JST IHS1 /CHECK REG QUEUE FOR OLD MESS +16447 005610 3 LDA (SHPQ) +16450 021231 3 JST IHS1 /AND PRI QUEUE ALSO +16451 072676 3 LDX IHP +16452 121606 3 JST (OWGE) I /IS THERE ENTRY ON ONE WORD QUEUE +16453 003503 3 JMP IH2 /NO +16454 151130 3 STA OWOP XI /(OWO+2*IR) PUT WORD IN OUTPUT ARE +16455 045130 3 LDA OWOP X /GET POINTER TO FRONT OF AREA +16456 151135 3 STA IHB1 XI /BUILD FIRST BUFFER CONTROL WORD +16457 141206 3 DEFSTAT AOA,HS3 +00612 031113 3 +32006 016457 3 +32026 141206 3 +16460 151145 3 STA IHB2 XI /BUILD SECOND BUFFER CONTROL WORD +16461 051155 3 STA IHSP X +16462 004516 3 LDA TWDG +16463 151155 3 STA IHSP XI /PUT OUT SECOND WORD +16464 045124 3 LDA IHED X +16465 011071 3 STA IHDO /DO OUTPUT + END +16466 004112 3 LDA SIGN +16467 051155 3 STA IHSP X +16470 051175 3 STA IHLSTP X /SO SUCK AND TIP WILL WORK PROPER1 +16471 005305 3 LDA IHS1F /USE MIN TIME LEFT FOR PKTS ON QUEU +16472 051306 3 STA IHTT X /OR 30 SECS IF BOTH QUEUES EMPTY +16473 021060 3 JST IHDB + / WAITING FOR INTERRUPT AFTER OUTPUT OF 2 WORD MESSAGE + DEFPLC [IH - SENDING 2 WORD MSG] +16474 140040 3 CRA +16475 151135 3 STA IHB1 XI +16476 051155 3 STA IHSP X +16477 045306 3 LDA IHTT X +16500 101040 3 SNZ /DID HARDWARE INTERRUPT? +16501 003351 3 JMP IHR2 /NO, ALARM CLOCK WENT OFF- HOST TAR +16502 003443 3 JMP IH1 /YES, NORMAL OUTPUT COMPLETE + +16503 044302 3 IH2: LDA SHPQ X /IS THERE SOMETHING IN THE PRIORITY +16504 101040 3 SNZ +16505 003510 3 JMP .+3 /NO +16506 005610 3 LDA (SHPQ) +16507 003514 3 JMP IH19 +16510 044272 3 LDA SHQ X /IS THERE SOMETHING IN THE REGULAR +16511 101040 3 SNZ +16512 003441 3 JMP IH00 +16513 005607 3 LDA (SHQ) +16514 014000 3 IH19: ADD 0 +16515 051165 3 STA IHWQ X /SAVE POINTER TO QUEUE + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 151 IMP,3050,IMP 7:20 PM 9/16/1973 + +16516 004115 3 LDA TWO 0"A"[DATA-HEAD2] +16517 111614 3 STA (FPSW 0 X) I +16520 145165 3 IH21: LDA IHWQ XI +16521 051155 3 STA IHSP X /SAVE POINTER TO BUFFER +16522 045165 3 LDA IHWQ X +16523 010000 3 STA 0 +16524 144000 3 LDA 0 XI /UPDATE QUEUE START POINTER +16525 050000 3 STA 0 X +16526 101040 3 SNZ /IS THIS LAST ENTRY ON QUEUE +16527 133615 3 STX (EHQ-SHQ X) I /MAKE START PTR POINTED TT +16530 064251 3 IRS NHS-SHQ X +16531 072676 3 LDX IHP +16532 172700 3 LDX IHXX I +16533 005616 3 LDA (IHCKAD) +16534 026111 3 IMA ADDRET +16535 011123 3 STA IHAR +16536 004000 3 LDA 0 +16537 056111 3 SUB BUFE X +16540 015617 3 ADD (ADDBOT+ACKH) +16541 140100 3 SSP 0"A"TWOQ +16542 011545 3 STA IHCKAJ +16543 017620 3 SUB (ADDBOT) /-NO OF WORDS +16544 103545 3 JMP IHCKAJ I +16545 3 IHCKAJ: BSS 1 +16546 100040 3 IHCKAD: SZE +16547 003553 3 JMP IHBAD +16550 005123 3 LDA IHAR +16551 010111 3 STA ADDRET +16552 103621 3 JMP (IHNOCK) I + +16553 027123 3 IHBAD: IMA IHAR /TEMP FOR CKSUM ERROR +16554 010111 3 STA ADDRET /AND RESTORE OWNER +16555 004676 3 LDA IHP +16556 012120 3 ERA SEVEN + DEFPLC [NOP HERE TO TURN OFF I2H CHECKSUM CHECK] +16557 101040 3 SNZ +16560 103621 3 JMP (IHNOCK) I /DON'T REPORT DISCARD ERRORS +16561 005123 3 LDA IHAR +16562 001001 3 INH ALL + DEFHLT [HOST OUTPUT DETECTED INTRA-IMP CKSUM ERROR] +16563 021564 3 0 JST .+1 /NOW TRAP TO NCC +16564 000000 3 0 0 +16565 120745 3 0 JST HLTNCC I +16566 000401 3 0 ENB I2H +16567 072676 3 LDX IHP +16570 045155 3 LDA IHSP X +16571 140500 3 SSM /FLAG PACKET TO GO TO DIAGTT +16572 051155 3 STA IHSP X +16573 140100 3 SSP +16574 103622 3 JMP (IHNOC2) I /AND CONTINUE ANYWAY + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 152 IMP,3050,IMP 7:20 PM 9/16/1973 + +16575 053343 C LEV CON CONSTANTS +16576 016331 C +16577 000251 C +16600 015504 C +16601 017237 C +16602 016341 C +16603 101000 C +16604 000340 C +16605 017143 C +16606 017250 C +16607 000272 C +16610 000302 C +16611 041170 C +16612 002000 C +16613 005000 C +16614 057203 C +16615 040051 C +16616 016546 C +16617 001562 C +16620 001556 C +16621 017062 C +16622 017064 C +02425 175632 C PAGEND 16,UNCON,4 + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 153 IMP,3050,IMP 7:20 PM 9/16/1973 + + LEV CON +17056 030070 C IHOT: H1ROUT /REGULAR OUTPUT INSTRUCTIONS +17057 030060 C H2ROUT +17060 C TIPDEF H3ROUT, NOP +02263 017060 C +02313 030050 C +02343 101000 C +17061 030051 C H4ROUT + + LEV I2H /MORE IMP-TO-HOST CODE +17062 072676 3 IHNOCK: LDX IHP +17063 105424 3 LDA (IHSP 0 X) I +17064 015425 3 IHNOC2: ADD (DATA) +17065 057203 3 SUB FPSW X /BUILD FIRST BUFFER CONTROL WORD +17066 111426 3 STA (IHB1 0 XI) I +17067 172700 3 LDX IHXX I +17070 131040 3 RDCLOK +17071 003070 3 JMP .-1 +17072 050001 3 STA ST X +17073 140040 3 CRA +17074 050000 3 STA 0 X /CLEAR CHAIN PNTR +17075 044111 3 LDA BUFE X +17076 140100 3 SSP 0"A"TWOQ +17077 016114 3 SUB ONE /STRIP CHECKSUM/DUMMY WRD +17100 072676 3 LDX IHP +17101 111427 3 STA (IHB2 0 XI) I /MAKE SECOND BUFFER CONTR +17102 024565 3 IRS NRES /UPDATE REASSEMBLY COUNT +17103 172700 3 LDX IHXX I +17104 044007 3 LDA HEAD2 X /TURN OFF BITS FOR HOSTS +17105 007430 3 ANA (FRMIMP 0 FRMOCT SRCEHI) +17106 066007 3 IMA HEAD2 X 0"A"[LSTPKT 0 ENDBIT] +17107 072676 3 LDX IHP +17110 111431 3 STA (IHLSTP 0 X) I /SAVE LAST PKT FLAG +17111 100400 3 SPL 0"A"LSTPKT /IS THIS LAST PACKET OF M +17112 003115 3 JMP IH4 /YES +17113 045056 3 LDA IHOT X +17114 100000 3 SKP +17115 105432 3 IH4: DEFSTAT LDA (IHED 0 X) I, HS1 +00613 031076 3 +32007 017115 3 +32027 105432 3 +17116 111433 3 STA (IHDO) I /DO OUTPUT +17117 021127 3 JST IH6 +17120 105431 3 LDA (IHLSTP 0 X) I +17121 121434 3 JST (HTPPF) I /COUNT A PACKET OF THROUGHPUT +17122 105431 3 LDA (IHLSTP 0 X) I +17123 101400 3 SMI /DID WE JUST PUT OUT LAST PKT? +17124 103435 3 JMP (IH21) I /NO +17125 121436 3 JST (HTPMF) I /COUNT A MESSAGE OF THROUGHPUT +17126 103437 3 JMP (IH1) I /YES + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 154 IMP,3050,IMP 7:20 PM 9/16/1973 + + LEV I2H /MORE DF IMP-TO-HOST +17127 000000 3 IH6: 0 /SEND OUT A PKT +17130 172700 3 LDX IHXX I +17131 004416 3 LDA TIMES /GET TIME IN SLOW TICKS +17132 056003 3 SUB INCH X +17133 072676 3 LDX IHP +17134 111440 3 STA (IHTT 0 X) I +17135 100400 3 SPL +17136 003143 3 JMP IH62 /SOME TIME LEFT - GO USE IT +17137 004000 3 LDA 0 /RUN OUT - FAKE HOST? +17140 016130 3 SUB PLNH +17141 100400 3 SPL +17142 103441 3 JMP (IHR2) I /NO - HAVE NO MERCY +17143 121442 3 IH62: JST (IHDB) I + DEFPLC [IH - SENDING OUT A PKT] +17144 140040 3 CRA +17145 111426 3 STA (IHB1 0 XI) I +17146 105440 3 LDA (IHTT 0 X) I +17147 101040 3 SNZ /DID HARDWARE INTERRUPT? +17150 103441 3 JMP (IHR2) I /NO, ALARM CLOCK WENT OFF - HOST TA +17151 172700 3 LDX IHXX I /YES, NORMAL OUTPUT COMPLETE +17152 044002 3 LDA PTRT X +17153 001001 3 INH M2I +17154 100040 3 0 SZE /MUST WE TRACE HIM? +17155 121443 3 0 JST (TRCDUN) I /YES +17156 072676 3 0 LDX IHP /MUST FOLLOW TRCDUN CALL +17157 000401 3 0 ENB I2H +17160 140040 3 CRA +17161 067203 3 IMA FPSW X /RESET FIRST PKT SWITCH +17162 172700 3 LDX IHXX I +17163 100040 3 SZE /IS THIS THE FIRST PKT? +17164 003214 3 JMP IH63 /YES +17165 072676 3 IH6F: LDX IHP +17166 140040 3 CRA +17167 126700 3 IMA IHXX I /CLEAR OUT IHSP +17170 010000 3 STA 0 +17171 001001 3 INH FRE +17172 100400 3 0 SPL +17173 003177 3 0 JMP IH6B /WAS BAD PACKET. PUT ON DIAG Q +17174 120671 3 0 JST FLUSHI I /FLUSH PACKET +17175 072676 3 0 IH6F1: LDX IHP +17176 103127 3 0 JMP IH6 I + +17177 140100 3 0 IH6B: SSP +17200 026342 3 0 IMA DIAGQ /PUT ON DIAG Q +17201 050000 3 0 STA 0 X +17202 003175 3 0 JMP IH6F1 + + LEV VAR +17203 V FPSW: BSS TH /FIRST PACKET SWITCH +17213 V IH6INC: BSS 1 /MINUS IF RFNM IS FOR INC TRN + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 155 IMP,3050,IMP 7:20 PM 9/16/1973 + + LEV I2H +17214 044006 3 IH63: LDA HEAD1 X /THIS CODE IS FOR MULTI-PKT MESS FO: +17215 007444 3 ANA (PKTNO) /THAT WAS ON IH Q TOO LONG IN MID. ] +17216 100040 3 SZE /IS THIS FIRST PACKET? +17217 003165 3 JMP IH6F /NO, THE RFNM HAS BEEN SENT ALREADY +17220 044005 3 LDA HEAD X /NORMAL CASE, SEND BACK RFNM-ALLOC +17221 007445 3 ANA (INCTRN) +17222 100040 3 SZE +17223 004121 3 LDA MINUS1 +17224 011213 3 STA IH6INC +17225 044005 3 LDA HEAD X +17226 007446 3 ANA (MESSNO 0 ONEOR8) +17227 013447 3 ERA (RFNM) +17230 052007 3 ERA HEAD2 X +17231 007450 3 ANA (0 0 177777"X"SRCEI) +17232 052007 3 ERA HEAD2 X +17233 073213 3 LDX IH6INC /SET UP AS INCTRN OR NOT +17234 121451 3 JST (RALLYP) I /PUT IN RALLY TABLE +17235 101000 3 NOP /ENTRY ALREADY THERE - BAD +17236 003165 3 JMP IH6F + + + LEV I2H +17237 000000 3 IHS5: 0 +17240 044005 3 LDA HEAD X +17241 007452 3 ANA (0 0 177777"X"INCTRN) +17242 013445 3 ERA (INCTRN) +17243 050005 3 STA HEAD X +17244 132352 3 STX EHQ+NH+3 I +17245 032352 3 STX EHQ+NH+3 +17246 024526 3 IRS NHA+NH+3 +17247 103237 3 JMP IHS5 I + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 156 IMP,3050,IMP 7:20 PM 9/16/1973 + + /ROUTINE TO GET WORD OFF ONE WORD MESSAGE QUEUE TO HOST + /CALLING SEQUENCE + + /INDEX REGISTER CONTAINS HOST NUMBER + / JST OWG I + / + / + + LEV I2H +17250 000000 3 OWGE: 0 +17251 033337 3 STX OWGY +17252 044332 3 LDA SHWQ X /GET START OF HOST ONE WORD QUEUE +17253 100040 3 SZE +17254 003260 3 JMP OWGL /RETURN IF NOTHING ON QUEUE +17255 073337 3 OWGX: LDX OWGY +17256 005340 3 LDA OWGA /GET DATA IN AC +17257 103250 3 JMP OWGE I /RETURN +17260 011341 3 OWGL: STA OWGS /SAVE START OF QUEUE FOR LATER USE +17261 004000 3 LDA 0 +17262 022130 3 CAS PLNH /REAL HOST? +17263 003255 3 JMP OWGX /NO +17264 101000 3 NOP /TTY LIKE REAL HOST +17265 025250 3 IRS OWGE /PREPARE TO TAKE SECOND RETURN +17266 073341 3 LDX OWGS /PUT START OF QUEUE IN INDEX REGI[*1 +17267 044001 3 LDA 1 X +17270 011340 3 STA OWGA +17271 044002 3 LDA 2 X +17272 010516 3 STA TWDG +17273 044003 3 LDA 3 X /GET POINTER TO POINTER TO HEAD OF +17274 011342 3 STA OWGT /SAVE FOP LATER USE +17275 073337 3 LDX OWGY /GET HOST NUMBER +17276 144332 3 LDA SHWQ XI +17277 050332 3 STA SHWQ X /UPDATE QUEUE POINTER +17300 100040 3 SZE +17301 003305 3 JMP OWG1 +17302 005453 3 LDA (SHWQ) +17303 014000 3 ADD 0 +17304 050403 3 STA EHWQ X /IF QUEUE NOW EMPTY FIX THINGS + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 157 IMP,3050,IMP 7:20 PM 9/16/1973 + +17305 073342 3 OWG1: LDX OWGT /GET POINTER TO HEAD OF BUFFER +17306 044002 3 LDA 2 X /GET FREE STORAGE POINTER FOR THIS I +17307 111341 3 STA OWGS I +17310 005341 3 LDA OWGS /PUT THREE WORD BLOCK ON FREE STORA1 +17311 050002 3 STA 2 X +17312 044003 3 LDA 3 X /GET FREE BLOCK COUNT +17313 016114 3 SUB ONE +17314 050003 3 STA 3 X /UPDATE FREE BLOCK COUNT +17315 023454 3 CAS (-18.) /IS BUFFER EMPTY +17316 003255 3 JMP OWGX /IF NO, RETURN +17317 044001 3 LDA 1 X /IF YES, PUT IT ON FREE LIST +17320 054000 3 ADD 0 X +17321 017455 3 SUB (SHBQ) /CHECK FOR LAST BUFFER ON QUEUE +17322 101040 3 SNZ +17323 003255 3 JMP OWGX /IF YES, RETURN +17324 044000 3 LDA 0 X /TAKE BUFFER OUT OF USE FOR ONE WORI +17325 150001 3 STA 1 XI +17326 044001 3 LDA 1 X +17327 064000 3 IRS 0 X +17330 150000 3 STA 0 XI +17331 140040 3 CRA 0"A"TWOQ +17332 050111 3 STA BUFE X +17333 001001 3 INH FRE +17334 120671 3 0 JST FLUSHI I +17335 000401 3 0 ENB I2H +17336 003255 3 JMP OWGX + + LEV VAR +17337 V OWGY: BSS 1 +17340 V OWGA: BSS 1 +17341 V OWGS: BSS 1 +17342 V OWGT: BSS 1 + + LEV ALL + /CALLED BY VDI,T.O,TSK,PCK +17343 000000 0 .DODXA: 0 /DISABLE EXTENDED ADDRESSING +17344 000011 0 DXA /CALLED WITH INTERRUPTS LOCKED +17345 000401 0 ENB ALL /RETURNS WITH INTERRUPTS ENABLED +17346 103343 0 JMP .DODXA I + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 158 IMP,3050,IMP 7:20 PM 9/16/1973 + + /IMP TO FAKE HOST (SUCK) + /SIMULATE IMP-TO-HOST INTERFACE HARDWARE FOR FAKE HOSTS: + /1- IF THE DMC OUTPUT AND OUTPUT END POINTERS CROSS, + / GIVE OUTPUT COMPLETED INTERRUPT + /2- FETCH NEXT WORD THROUGH THE DMC OUTPUT POINTER + /3- INCREMENT THE DMC OUTPUT POINTER, AND IF THE POINTERS C'1 + / AND IF THIS IS A FINAL OUTPUT, SET THE LAST BIT INDICATOI + /4- SEND THE WORD TO THE HOST + /5- GO TO 1 + /IHBB SERVES AS THE DMC OUTPUT POINTER + /IHBC SERVES AS THE DMC OUTPUT END POINTER + /CALLING SEQUENCE + /FAKE HOST NUMBER IN X REG - 0=TTY,1=DDT.2=PARAM CHANGE,3=DI1 + /JST SUCK - GET NEXT WORD FROM IMP FOR THIS FAKE HOST + / - IMPLICIT BACKGROUND WAIT UNTIL WORD IS READY + /R1 - WORD IN A REG + /R2 - WORD IN A REG IS LAST WORD OF CURRENT MESSAGE + LEV BCK +17347 000000 7 SUC: 0 +17350 045407 7 SUC1: LDA IHBB X /IS THERE ANY OUTPUT TO GO? +17351 101040 7 SNZ +17352 003366 7 JMP SUC2 /NO, WAIT ONE BACKGROUND LOOP +17353 057413 7 SUB IHBC X +17354 022113 7 CAS ZERO /HAVE PNTRS CROSSED? +17355 003374 7 JMP SUC4 /YES +17356 003362 7 JMP SUC3 /ALMOST, THIS IS LAST WORD IN BUFFE1 +17357 145407 7 SUC5: LDA IHBB XI /FETCH NEXT WORD FROM OUTPUT PNTR +17360 065407 7 IRS IHBB X /INCREMENT OUTPUT PNTR +17361 103347 7 JMP SUC I /NOW RETURN WITH DATA + +17362 105456 7 SUC3: LDA (IHLSTP+NH X) I /YES +17363 100400 7 SPL 0"A"LSTPKT /IS THIS THE LAST PKT? +17364 025347 7 IRS SUC /YES, SO GIVE SKIP RETURN=LAST BIT +17365 003357 7 JMP SUC5 + +17366 005347 7 SUC2: LDA SUC +17367 051420 7 STA SUCT X /SAVE RETURN ADDRESS +17370 120667 7 JST WAIT I /COROUTINE RETURN TO BACKGROUND + DEFPLC [SUCK CALL TO WAIT] +17371 045420 7 LDA SUCT X +17372 011347 7 STA SUC /RESTORE RETURN ADDRESS +17373 003350 7 JMP SUC1 + +17374 033417 7 SUC4: STX SUCX /YES, SO INTERRUPT ON OUTPUT COMPLE +17375 004000 7 LDA 0 +17376 014130 7 ADD PLNH +17377 010000 7 STA 0 /SET UP X REG FOR THIS FAKE HOST +17400 001001 7 INH SIN /SOFTWARE INTERRUPT IMP-TO-HOST +17401 000013 7 0 EXA +17402 121457 7 0 JST (IHSB) I RET BCK +17403 001001 7 INH ALL +17404 120672 7 0 JST DODXA I RET BCK +17405 073417 7 LDX SUCX +17406 003350 7 JMP SUC1 /NOW GO BACK FOR MORE OUTPUT + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 159 IMP,3050,IMP 7:20 PM 9/16/1973 + + LEV VAR +17407 V IHBB: BSS FH /DMC OUTPUT PNTRS FOR FAKE HOSTS +17413 V IHBC: BSS FH /DMC OUTPUT END PNTRS FOR FAKE HOE : +17417 V SUCX: BSS 1 + DEFPLC [SUCT] +17420 V SUCT: BSS FH /TABLE OF RETURN ADDRESSES + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 160 IMP,3050,IMP 7:20 PM 9/16/1973 + +17424 056155 C LEV CON CONSTANTS +17425 000011 C +17426 156135 C +17427 156145 C +17430 050377 C +17431 056175 C +17432 056124 C +17433 016071 C +17434 022462 C +17435 016520 C +17436 022451 C +17437 016443 C +17440 056306 C +17441 016351 C +17442 016060 C +17443 011144 C +17444 003400 C +17445 000010 C +17446 177600 C +17447 000100 C +17450 177700 C +17451 015303 C +17452 177767 C +17453 000332 C +17454 177756 C +17455 000337 C +17456 056201 C +17457 016042 C +02426 174464 C PAGEND 17,UNCON,4 + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 161 IMP,3050,IMP 7:20 PM 9/16/1973 + + + TO: LEV T.O +00102 020022 5 CLOKIL/ TO +20022 000000 5 0 TO/ INT T.O /TIMEOUT INTERRUPT ENTRANCE +20023 000011 5 0 DXA +20024 003025 5 0 JMP . 1 +20025 033145 5 0 STX TOT +20026 025143 5 0 IRS TOSLOW /IS THIS REALLY A SLOW TICK? +20027 003034 5 0 JMP TO1 /NO +20030 073574 5 0 LDX (-25.) /YES, RESET CLOCK +20031 033143 5 0 STX TOSLOW /EVERY 25TH TICK +20032 072114 5 0 LDX ONE +20033 100000 5 0 SKP +20034 072113 5 0 TO1: LDX ZERO /CHOOSE APPROPRIATE X +20035 051146 5 0 STA TOA X /SAVE AC +20036 045160 5 0 LDA TOM X +20037 170120 5 0 SMK INTM +20040 026134 5 0 IMA PRIM +20041 051156 5 0 STA TOMK X +20042 000043 5 0 INK +20043 051150 5 0 STA TOCK X +20044 005145 5 0 LDA TOT +20045 051152 5 0 STA TOX X +20046 005022 5 0 LDA TO /SAVE RETURN +20047 051154 5 0 STA TOC X +20050 024415 5 0 IRS TIME /COUNT LOCAL TIME +20051 101000 5 0 NOP +20052 024417 5 0 IRS SYNC /COUNT GLOBAL TIME +20053 101000 5 0 NOP +20054 030026 5 0 WDT /** TAKE THIS AWAY WHEN ALGORITHM ' +20055 143162 5 0 JMP TOS XI + + LEV T.O +20056 001001 5 TOR: INH MSK +20057 045154 5 0 LDA TOC X +20060 011022 5 0 STA TO +20061 045152 5 0 LDA TOX X +20062 011145 5 0 STA TOT +20063 045156 5 0 LDA TOMK X +20064 170120 5 0 SMK INTM +20065 010134 5 0 STA PRIM +20066 000013 5 0 EXA +20067 045150 5 0 LDA TOCK X +20070 171020 5 0 OTK +20071 045146 5 0 LDA TOA X +20072 073145 5 0 LDX TOT +20073 000401 5 0 ENB T.O +20074 103022 5 JMP TO I + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 162 IMP,3050,IMP 7:20 PM 9/16/1973 + + LEV BCK LCK INI +20075 000000 7 0 TOI: 0 /TIMEOUT INITIALIZATION +20076 004127 7 0 LDA MICH +20077 010141 7 0 STA HTPAR +20100 072113 7 0 LDX ZERO +20101 140040 7 0 TOIL: CRA +20102 111575 7 0 STA (E123 0 X) I /CLEAR LINE ERROR +20103 004115 7 0 LDA TWO +20104 051300 7 0 STA RMBIT X /TIMER BIT FOR VAR FRQ RM'S +20105 005576 7 0 LDA (1000 SHD RMINIT) /101006, 50 KB LINE FULL 1 +20106 111577 7 0 STA (RMFLG 0 X) I /AND INIT FLAG IN EACH RM] +20107 005600 7 0 LDA (RMCLKS+2) /POINT ALL LINES AT 50KB TIME +20110 111601 7 0 STA (RMCLKP 0 X) I +20111 004110 7 0 LDA PTICKS +20112 111602 7 0 STA (LINDT 0 X) I +20113 004121 7 0 LDA MINUS1 +20114 051452 7 0 STA LTR X +20115 021354 7 0 TOIL2: JST DEDL /SET SLT MINUS, KILL LINE +20116 024000 7 0 IRS 0 +20117 024141 7 0 IRS HTPAR /ENDS UF BY SETTING HTPAR TO 0 +20120 003101 7 0 JMP TOIL +20121 004121 7 0 LDA MINUS1 +20122 011143 7 0 STA TOSLOW /START WITH SLOW TICK +20123 010142 7 0 STA HLNM /CLEAR HOST INTERFACE TEST +20124 111603 7 0 STA (HLNMS) I +20125 111604 7 0 STA (RTSSNT) I +20126 011210 7 0 STA TALLYC /DO THIS OR BACK2 WONT WORK RIGHT +20127 111605 7 0 STA (RALTRY) I +20130 111606 7 0 STA (GODWNC) I +20131 111607 7 0 STA (COMUPC) I +20132 111610 7 0 STA (MESST) I + /THIS CODE IS TO START ALL LINES W/ROUTING MSG SYNC-ED W/SLO +20133 011277 7 0 STA RMCLKS+NSPD-1 +20134 004122 7 0 LDA MINUS2 +20135 073611 7 0 LDX (-NSPD+1) +20136 051277 7 0 TOIL1: STA RMCLKS+NSPD-1 X +20137 024000 7 0 IRS 0 +20140 003136 7 0 JMP TOIL1 +20141 030040 7 0 CLKON +20142 103075 7 0 JMP TOI I + + LEV VAR +20143 V TOSLOW: BSS 1 +20144 V TOK: BSS 1 +20145 V TOT: BSS 1 +20146 V TOA: BSS 2 +20150 V TOCK: BSS 2 +20152 V TOX: BSS 2 +20154 V TOC: BSS 2 +20156 V TOMK: BSS 2 + LEV CON +20160 177774 C TOM: -4 /LOCK OUT T.O IN JOBF +20161 177774 C -4 /ENB T.O IN JOBS **TEMP NOT** +20162 020170 C TOS: JOBF +20163 021075 C JOBS + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 163 IMP,3050,IMP 7:20 PM 9/16/1973 + + LEV T.O +20164 005160 5 JOBF1: LDA TOM /DONE WITH SLOW TICK +20165 170120 5 SMK INTM +20166 010134 5 STA PRIM /LOCK OUT T.O +20167 072114 5 LDX ONE /REMEMBER IT IS A SLOW TICK + /FAST TIMEOUT JOBS - RESTART EVERYBODY +20170 033144 5 JOBF: STX TOK /SAVE TYPE OF TICK +20171 021211 5 JST RSTOUT /MUST PRECEDE IMTC +20172 021305 5 JST IMTC RET T.O /ATTEMPT TO RESTART MODEI +20173 021327 5 JST HITC /ATTEMPT TO RESTART HOST INS +20174 121612 5 JST (SWCH) I /MONITOR THINGS +20175 021200 5 JST TALLYB /TIME OUT OLDEST ALLOCATE WE HAVE +20176 073144 5 LDX TOK +20177 003056 5 JMP TOR + +20200 000000 5 TALLYB: 0 /BUMP TALLY CLOCK EVERY 25 MS +20201 005613 5 LDA (TALLY) +20202 113614 5 ERA (TALLYI) I +20203 101040 5 SNZ /IS THE TALLY TABLE EMPTY? +20204 011210 5 STA TALLYC /YES, HOLD TALLYC AT 1 WHILE QUIESC +20205 025210 5 IRS TALLYC /BUMP TALLY CLOCK +20206 101000 5 NOP /IN CASE BACK ISNT GOING +20207 103200 5 JMP TALLYB I + + LEV VAR +20210 V TALLYC: BSS 1 /TALLY CLOCK - COUNTS FROM 0 TO 5 + + LEV T.O +20211 000000 5 RSTOUT: 0 +20212 025274 5 IRS RMCLKS /CHECK TO SEND ROUTING MSGS +20213 100000 5 SKP /...RUN CLKS FOR EACH POSS LINE SPD +20214 003255 5 JMP RSTR50 /2 SLOW TICKS +20215 025275 5 IRS RMCLKS+1 +20216 100000 5 SKP +20217 003257 5 JMP RSTR25 /RESET (1 SLOW TICK) +20220 025276 5 IRS RMCLKS+2 +20221 100000 5 SKP +20222 003261 5 JMP RSTR5 /5 FAST TICKS [RMCLKS+3 IS FAST T.O + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 164 IMP,3050,IMP 7:20 PM 9/16/1973 + +20223 072127 5 RSTR0: LDX MICH +20224 004121 5 LDA MINUS1 +20225 123615 5 RSTO2: CAS (RMCLKP+CH XI) I /TIME UP TEST +20226 100000 5 SKP +20227 003233 5 JMP RSTO4 /YES, DO ROUTING CHECK +20230 024000 5 RSTO3: IRS 0 /NO, GO TO NEXT LINE +20231 003225 5 JMP RSTO2 +20232 103211 5 JMP RSTOUT I /DONE + +20233 045305 5 RSTO4: LDA RMBIT+CH X /ADVANCE BIT POINTER +20234 040677 5 ARR 1 +20235 100400 5 SPL /TIME TO WRAP? +20236 005616 5 LDA (20) /YES, RESET TO 5TH BIT +20237 051305 5 STA RMBIT+CH X +20240 107617 5 ANA (RUTFRQ+CH XI) I /GET RIGHT BIT OUT OF RI 1 +20241 101040 5 SNZ /TIME TO SEND ROUTING? +20242 003253 5 JMP RSTO5 /NO, GO TO NEXT LINE +20243 100100 5 SLZ +20244 003264 5 JMP RSTDL +20245 001001 5 RSTO6: INH I2M /SEND ROUTING +20246 044272 5 2 LDA SLT+CH X +20247 101040 5 2 SNZ /NO ROUTING IF HELD DEAD OR BUSY +20250 004115 5 2 LDA TWO /ALWAYS SEND NULL W/ROUTING +20251 050272 5 2 STA SLT+CH X +20252 000401 5 2 ENB T.O +20253 004121 5 RSTO5: LDA MINUS1 /ON TO NEXT LINE +20254 003230 5 JMP RSTO3 + + +20255 005620 5 RSTR50: LDA (-50.) +20256 011274 5 STA RMCLKS +20257 005574 5 RSTR25: LDA (-25.) +20260 011275 5 STA RMCLKS+1 +20261 004125 5 RSTR5: LDA MINUS5 +20262 011276 5 STA RMCLKS+2 +20263 003223 5 JMP RSTR0 + +20264 033273 5 RSTDL: STX RSTDT /SAVE X +20265 004000 5 LDA 0 +20266 016127 5 SUB MICH /CONVERT NEG X TO POS X +20267 010000 5 STA 0 +20270 021354 5 JST DEDL /CALL DEDL FOR HELLO-IHY AT BASIC * +20271 073273 5 LDX RSTDT /RESTORE X +20272 003245 5 JMP RSTO6 + + LEV VAR +20273 V RSTDT: BSS 1 /TEMP X +20274 V RMCLKS: BSS NSPD /1 CLOCK/SPD +20300 V RMBIT: BSS CH /5 BIT ROTATE BIT 1/LINE + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 165 IMP,3050,IMP 7:20 PM 9/16/1973 + + LEV T.O +20305 000000 5 IMTC: 0 /WAKE UP IDLE MODEMS +20306 072113 5 LDX ZERO +20307 004127 5 LDA MICH /DO FOR ALL MODEMS +20310 011353 5 STA IMTK +20311 001001 5 IMTCL: INH SIN +20312 044440 5 0 LDA NONE X /CHECK STATUS OF MODEM +20313 100040 5 0 SZE /WAITING FOR HARDWARE INTERRUPT? +20314 003324 5 0 JMP I2MTC2 +20315 121621 5 0 I2MTC0: JST (I2MSB) I RET T.O /NO, SO GIVE SOFTWARE INT] +20316 001001 5 INH ALL +20317 120672 5 0 JST DODXA I RET T.O +20320 024000 5 I2MTC1: IRS 0 +20321 025353 5 IRS IMTK +20322 003311 5 JMP IMTCL +20323 103305 5 JMP IMTC I + + LEV T.O LCK SIN +20324 064440 5 0 I2MTC2: IRS NONE X +20325 003320 5 0 JMP I2MTC1 +20326 003315 5 0 JMP I2MTC0 + + LEV T.O +20327 000000 5 HITC: 0 /TIMEOUT CHECK ROUTINE +20330 004131 5 LDA MITH +20331 011352 5 STA HITK /ATTEMPT TO WAKE UP ALL HOST-TO-IMP +20332 005352 5 HITZ: LDA HITK +20333 012415 5 ERA TIME /USE A RANDOM WAKEUP ORDER +20334 006120 5 ANA SEVEN /TO FACILITATE RESOURCE SHARING +20335 010000 5 STA 0 +20336 001001 5 INH [SIN,H2I,TPC] +20337 105622 5 0 LDA (HITT 0 X) I +20340 100040 5 0 SZE /IS THIS HOST WAITING TO WAKE UP? +20341 125622 5 0 IRS (HITT 0 X) I /YES, TIME TO WAKE HIM YF +20342 003346 5 0 JMP HITZL /NO +20343 000013 5 0 EXA /YES. SOFTWARE INTERRUPT HOST-TO-I' +20344 121623 5 0 JST (HISB) I RET T.O +20345 001001 5 INH ALL +20346 120672 5 0 HITZL: JST DODXA I RET T.O +20347 025352 5 IRS HITK +20350 003332 5 JMP HITZ +20351 103327 5 JMP HITC I + + LEV VAR +20352 V HITK: BSS 1 +20353 V IMTK: BSS 1 /TEMP COUNTER + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 166 IMP,3050,IMP 7:20 PM 9/16/1973 + + LEV T.O +20354 000000 5 DEDL: 0 /INVESTIGATE FOR LINE STATUS +20355 044265 5 LDA SLT X +20356 100400 5 SPL /IS THIS LINE IN DEAD STATE? +20357 003445 5 JMP HEL4 /YES, GO NO FURTHER +20360 140040 5 CRA +20361 127575 5 IMA (E123 0 X) I +20362 101040 5 SNZ /DID WE GET ANY ROUTING MSGS? +20363 003367 5 JMP DED1 /NO +20364 064421 5 IRS SIHY X /YES, COUNT ONE AS AN HELLO +20365 065457 5 IRS RTRCVD X /AND RETURN AN I-HEARD-YOU +20366 101000 5 NOP +20367 125624 5 DED1: IRS (RTSSNT 0 X) I /COUNT HELLO SENT +20370 101000 5 NOP +20371 044426 5 LDA LAC X /CHECK LINE ALIVE COUNT +20372 101040 5 SNZ /DID WE GET AN I-HEARD-YOU? +20373 003416 5 JMP NOC /NO INPUT ON THIS CHANNEL +20374 016114 5 SUB ONE /YES, CAN ONLY GET ONE (TWO IN CAI' +20375 100040 5 SZE /PER BASIC INTERVAL +20376 004114 5 LDA ONE +20377 050426 5 STA LAC X +20400 044433 5 LDA LINE X +20401 101040 5 SNZ +20402 003414 5 JMP DED3 /LINE WAS ALREADY ALIVE +20403 065452 5 IRS LTR X +20404 103354 5 JMP DEDL I /NOT TIME TO BRING LINE UP YET +20405 140040 5 CRA +20406 050433 5 STA LINE X +20407 044160 5 LDA NEIGHB X /FOR DETECTING PACKETS ON LOOPED LI +20410 016106 5 SUB MINE +20411 006112 5 ANA SIGN /1=I AM THE HIGHER NUMBER IMP +20412 040672 5 ARR 6 0"A"ENDBIT +20413 111625 5 STA (LEND 0 X) I /SAVE FOR USE IN PACKET +20414 004125 5 DED3: LDA MINUS5 +20415 003431 5 JMP HEL1 + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 167 IMP,3050,IMP 7:20 PM 9/16/1973 + +20416 044433 5 NOC: LDA LINE X +20417 100040 5 SZE /WAS LINE ALIVE? +20420 003433 5 JMP DED4 /LINE STILL IS DEAD +20421 065452 5 IRS LTR X /CURRENTLY UP, SHOULD IT BE? +20422 003440 5 JMP HEL3 /NOT TIME TO KILL LINE YET +20423 001001 5 INH M2I +20424 121626 5 0 JST (KILLIN) I +20425 000401 5 0 ENB T.O +20426 105602 5 HELD: LDA (LINDT 0 X) I +20427 111625 5 STA (LEND 0 X) I /MARK LINE DOWN +20430 050433 5 HEL0: STA LINE X +20431 051452 5 HEL1: STA LTR X +20432 103354 5 JMP DEDL I + +20433 045452 5 DED4: LDA LTR X /LINE IS DEAD +20434 123602 5 CAS (LINDT 0 X) I /IS IT AT MAX DEAD COUNT? +20435 016114 5 SUB ONE /NOT YET. COUNT DOWN +20436 003430 5 JMP HEL0 /AND RETURN +20437 003426 5 JMP HELD /PAST MAX!? RESET + +20440 045452 5 HEL3: LDA LTR X /LINE IS DYING +20441 022123 5 CAS MINUS3 /IS IT TIME TO GIVE FAKE ROUTING? +20442 100000 5 SKP /NO +20443 121627 5 JST (RSTINP) I /YES,CALL ROUTING INPUT W/ DUMMY F +20444 103354 5 JMP DEDL I + +20445 023630 5 HEL4: CAS (-KILTIM+1) /LINE HAS BEEN KILLED +20446 100000 5 SKP /IS IT TIME TO GIVE FAKE ROUTING? +20447 121627 5 JST (RSTINP) I /YES, CALL ROUT INPUT W/ DUMMY MSG +20450 021464 5 JST JSRT +20451 003426 5 JMP HELD + + LEV VAR +20452 V LTR: BSS CH +20457 V RTRCVD: BSS CH /COUNT OF HELLO'S RCVD + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 168 IMP,3050,IMP 7:20 PM 9/16/1973 + + LEV T.O +20464 000000 5 JSRT: 0 +20465 004112 5 LDA SIGN /TURN OFF I2MTC CLOCK WAKEUP +20466 050440 5 STA NONE X /FOR DEAD OR NON-EXISTENT LINES +20467 004000 5 LDA 0 +20470 014127 5 ADD MICH +20471 023544 5 CAS VDHNO +20472 100000 5 SKP /IS THIS MODEM STOLEN BY VDH? +20473 103464 5 JMP JSRT I /YES +20474 023545 5 CAS MODNO +20475 103464 5 JMP JSRT I /IS THIS MODEM STOLEN BY HOST? +20476 103464 5 JMP JSRT I +20477 115631 5 ADD (SATNO) I +20500 101040 5 SNZ +20501 103543 5 JMP SATGCI I +20502 064265 5 IRS SLT X /YES, TIME TO START BRINGING IT UP? +20503 103464 5 JMP JSRT I /NO +20504 001001 5 INH I2M +20505 033546 5 2 STX SENR +20506 005632 5 2 JSRT2: LDA (SMPQ) +20507 021547 5 2 JSRT3: JST JSRTS +20510 005633 5 2 JSRT4: LDA (SMQ) +20511 021547 5 2 JST JSRTS +20512 073546 5 2 LDX SENR +20513 005634 5 2 LDA (ACKTAB) +20514 050646 5 2 STA RSEX X +20515 050653 5 2 STA CHFREE X +20516 044622 5 2 LDA I2MTAB X +20517 111635 5 2 STA (I2MLST 0 X) I +20520 050627 5 2 STA I2MEND X +20521 005636 5 2 LDA (-NACH) +20522 050634 5 2 STA I2MNXT X +20523 140040 5 2 NACKL: CRA +20524 050641 5 2 STA TSEX X /ZERO THIS - LOOP UNNECESSARY +20525 050440 5 2 STA NONE X /ZERO THIS - LOOP UNNECESSARY +20526 166627 5 2 IMA I2MEND XI +20527 010000 5 2 STA 0 +20530 023637 5 2 CAS (1777) +20531 021557 5 2 JST RQSUB +20532 101000 5 2 NOP /NOTHING THERE OR JUST A DUMMY +20533 073546 5 2 LDX SENR +20534 064627 5 2 IRS I2MEND X +20535 064634 5 2 IRS I2MNXT X +20536 003523 5 2 JMP NACKL +20537 005640 5 2 LDA (JMP+0+1000+M2I0"A"777) +20540 111641 5 2 STA (M2IOK 0 XI) I +20541 000401 5 2 ENB T.O +20542 103464 5 JMP JSRT I + + LEV VAR +20543 V SATGCI: SATDEF [0 0 JSRT I] +02264 020543 V +02314 120464 V +02344 120464 V +20544 V VDHNO: BSS 1 /0 FOR NO VDH, ELSE M.N-5 +20545 V MODNO: BSS 1 /0=5 MODS, -1=4 MODS, -2=3 MODS +20546 V SENR: BSS 1 + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 169 IMP,3050,IMP 7:20 PM 9/16/1973 + + LEV T.O LCK I2M +20547 000000 5 2 JSRTS: 0 +20550 015546 5 2 ADD SENR +20551 011573 5 2 STA JSRTQ +20552 073573 5 2 JSRTS1: LDX JSRTQ +20553 121642 5 2 JST (GETQ) I +20554 103547 5 2 JMP JSRTS I +20555 021557 5 2 JST RQSUB +20556 003552 5 2 JMP JSRTS1 + +20557 000000 5 2 RQSUB: 0 +20560 132402 5 2 STX ERQ I +20561 032402 5 2 STX ERQ +20562 024564 5 2 IRS NSFS /TASK WILL FLUSH IF DEST WENT DEAD +20563 044002 5 2 LDA PTRT X +20564 101040 5 2 SNZ +20565 103557 5 2 JMP RQSUB I +20566 010000 5 2 STA 0 +20567 005643 5 2 LDA (140000) +20570 052012 5 2 ERA TDONE X +20571 050012 5 2 STA TDONE X +20572 103557 5 2 JMP RQSUB I + LEV VAR +20573 V JSRTQ: BSS 1 + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 170 IMP,3050,IMP 7:20 PM 9/16/1973 + +20574 177747 C LEV CON CONSTANTS +20575 045565 C +20576 101006 C +20577 052620 C +20600 020276 C +20601 051353 C +20602 051361 C +20603 022273 C +20604 022303 C +20605 004601 C +20606 027263 C +20607 027264 C +20610 021561 C +20611 177775 C +20612 022320 C +20613 032261 C +20614 015155 C +20615 151360 C +20616 000020 C +20617 167274 C +20620 177716 C +20621 012604 C +20622 053137 C +20623 013106 C +20624 062303 C +20625 050254 C +20626 011133 C +20627 026120 C +20630 177767 C +20631 005153 C +20632 000317 C +20633 000312 C +20634 000377 C +20635 052660 C +20636 177770 C +20637 001777 C +20640 003231 C +20641 150247 C +20642 015504 C +20643 140000 C +02427 175651 C PAGEND 20,UNCON,4 + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 171 IMP,3050,IMP 7:20 PM 9/16/1973 + + LEV T.O LCK ALL + /SLOW TIMEOUT JOBS +21075 021460 5 0 JOBS: JST IHTC RET T.O /ATTEMPT TO RESTART HOST T +21076 021362 5 JST DEDH /ESTABLISH HOST UP/DOWN STATUS +21077 021432 5 JST JED /COMPUTE EFFECTIVE DELAY +21100 121672 5 JST (RUTCLK) I + /THESE FIRST FOUR SHOULD PRECEDE THE ROUTING COMPUTATION +21101 121673 5 JST (RUTOUT) I /COMPUTE ROUTING +21102 021564 5 JST HTEST /OCP INTERFACES IF NECESSARY +21103 021640 5 JST HPOKE /TEST HOST INTERFACE +21104 021134 5 JST DEDI /DEAD IMP CLEANUP - AFTER ROUTING C +21105 021500 5 JST JUQC /ADJUST QUEUE COUNTERS +21106 000401 5 ENB T.O +21107 021526 5 JST MESSTO /TIMEOUT INCOMPLETE MESSAGE NUMBERS +21110 073674 5 LDX (0 0 -ADDBOT-1+ADDTOP) /CHECK ADD CH: +21111 005675 5 LDA (ADD BUFE+4 X) /BASIC INSTRUCTION +21112 123676 5 ADDCH1: CAS (ADDBOT+1 X) I +21113 100000 5 SKP /BAD +21114 100000 5 SKP /GOOD + RELOAD [ADD CHAIN BROKEN] +21115 120061 5 JST SWDTIL I /BAD, GO RELOAD +21116 016114 5 SUB ONE /MODIFY INSTR IN A +21117 024000 5 IRS 0 +21120 003112 5 JMP ADDCH1 +21121 005677 5 LDA (JMP ADDRET I) /CHECK RETURN INSTR +21122 113676 5 ERA (ADDBOT+1 X) I +21123 100040 5 SZE + RELOAD [ADD CHAIN RETURN BROKEN] +21124 120061 5 JST SWDTIL I /BAD, GO RELOAD +21125 010452 5 STA LUUP /BLINK LOOPED LIGHT +21126 101000 5 VDH3: NOP /VDH TIMEOUT CALL +21127 001001 5 INH ALL +21130 024416 5 0 IRS TIMES /COUNT TIME IN SLOW TICKS +21131 024503 5 0 IRS WDTIME /CHECK SOFTWARE W.D.T. +21132 103700 5 0 JMP (JOBF1) I /NOW DO FAST STUFF. + RELOAD [SOFTWARE WDT FIRED] +21133 120061 5 0 JST SWDTIL I + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 172 IMP,3050,IMP 7:20 PM 9/16/1973 + + LEV T.O +21134 000000 5 DEDI: 0 /TIMEOUT COMES HERE TO CLEAN UP +21135 005701 5 LDA (TMESS) +21136 011356 5 STA DMSTAB +21137 072113 5 LDX ZERO +21140 033355 5 IMPD: STX DEDIMP /NO OF IMP WHICH DIED +21141 044165 5 LDA RUT X +21142 101400 5 SMI 0"A"RUTDED /IS THIS IMP DEAD? +21143 003274 5 JMP IMPD7 /NO, GO ON TO NEXT ONE +21144 073356 5 LDX DMSTAB /FIRST CLEAN UP TRANSMIT SIDE +21145 001001 5 INH ALL +21146 044000 5 0 LDA 0 X +21147 007702 5 0 ANA (MESBTS) +21150 013702 5 0 ERA (MESBTS) +21151 101040 5 0 SNZ /ARE THERE ANY OUTSTANDING MESSAGE +21152 003232 5 0 JMP IMPD2A /NO, GO ON TO CLEAN UP OTHER THINGS +21153 004124 5 0 LDA MINUS4 +21154 011357 5 0 STA DEDTRY /LOOK AT 4 POSSIBLE MESS FOR DEAD 1 +21155 044000 5 0 LDA 0 X +21156 017703 5 0 SUB (0 0 3"T"400) 0"A"MESSNO +21157 050000 5 0 STA 0 X /ROLL BACK 4 MESS NOS +21160 100100 5 0 IMPD0: SLZ /IS THIS MESS NO WAITING FOR REPLY? +21161 003226 5 0 JMP IMPD2 /NO +21162 141044 5 0 CAR 0"A"MESSNO /YES, SO LOOK FOR IT +21163 013355 5 0 ERA DEDIMP +21164 121704 5 0 JST (PPTGET) I +21165 003203 5 0 JMP IMPD1 /NOT IN PPT +21166 010000 5 0 STA 0 /GOT IT IN PPT +21167 140040 5 0 CRA +21170 066000 5 0 IMA PPT0 X +21171 140100 5 0 SSP 0"A"RETRAN +21172 010000 5 0 STA 0 +21173 120671 5 0 JST FLUSHI I /IF ON 2 QUEUES, RQSUB WILL FLUSH +21174 044010 5 0 LDA HEAD3 X +21175 141044 5 0 CAR 0"A"CIMPD +21176 010515 5 0 STA TWDP +21177 044007 5 0 LDA HEAD2 X +21200 121705 5 0 JST (HOSTNO) I +21201 044006 5 0 LDA HEAD1 X +21202 003221 5 0 JMP IMPDP +21203 105356 5 0 IMPD1: LDA DMSTAB I +21204 141044 5 0 CAR 0"A"MESSNO +21205 013355 5 0 ERA DEDIMP +21206 121706 5 0 JST (PLTGET) I +21207 003226 5 0 JMP IMPD2 /MUST HAVE BEEN A GIVE BACK +21210 010000 5 0 STA 0 +21211 140040 5 0 CRA +21212 066000 5 0 IMA PLT0 X /CLEAR PLT ENTRY +21213 006120 5 0 ANA SEVEN +21214 011361 5 0 STA IMPDLH +21215 044030 5 0 LDA PLT2 X +21216 141044 5 0 CAR 0"A"CIMPD +21217 010515 5 0 STA TWDP +21220 044014 5 0 LDA PLT1 X + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 173 IMP,3050,IMP 7:20 PM 9/16/1973 + +21221 007707 5 0 IMPDP: ANA (0 0 177777"X"LSTPKT"X"HICODE) +21222 013710 5 0 ERA (CDESTD) /RETURN A DEST IMP DEAD +21223 073361 5 0 LDX IMPDLH +21224 120670 5 0 JST OWP I +21225 101000 5 0 NOP +21226 073356 5 0 IMPD2: LDX DMSTAB +21227 121711 5 0 JST (UPMESS) I +21230 025357 5 0 IRS DEDTRY +21231 003160 5 0 JMP IMPD0 +21232 005355 5 0 IMPD2A: LDA DEDIMP +21233 121712 5 0 JST (TALLYG) I /FLUSH ALL ALLOCATES FROM HIM +21234 100000 5 0 SKP +21235 003232 5 0 JMP IMPD2A +21236 073713 5 0 LDX (SHRQ) /NOW CLEAN UP RECEIVE SIDE +21237 044000 5 0 IMPD3: LDA 0 X /GET ALL REAS BLOCKS BACK +21240 101040 5 0 SNZ +21241 003244 5 0 JMP IMPD3A +21242 021303 5 0 JST DREAS +21243 003237 5 0 JMP IMPD3 +21244 073714 5 0 IMPD3A: LDX (MESSTK) /GET ALL MESSTK ENTRIES BACK +21245 044000 5 0 IMPD4: LDA 0 X +21246 101040 5 0 SNZ +21247 003271 5 0 JMP IMPD6 /END OF MESSTK +21250 100400 5 0 SPL /REAS BLOCK? +21251 003267 5 0 JMP IMPD5 /YES +21252 033360 5 0 STX DTEND +21253 010000 5 0 STA 0 +21254 044007 5 0 LDA HEAD2 X +21255 013355 5 0 ERA DEDIMP +21256 007715 5 0 ANA (SRCEI) +21257 100040 5 0 SZE /FROM DEAD IMP? +21260 003245 5 0 JMP IMPD4 /NO +21261 044000 5 0 LDA 0 X /YES, REMOVE FROM MESSTK +21262 111360 5 0 STA DTEND I +21263 120671 5 0 JST FLUSHI I /AND FREE BUFFER +21264 024565 5 0 IRS NRES /ADJUST REAS COUNT +21265 073360 5 0 LDX DTEND +21266 003245 5 0 JMP IMPD4 +21267 021303 5 0 IMPD5: JST DREAS +21270 003245 5 0 JMP IMPD4 +21271 073355 5 0 IMPD6: LDX DEDIMP +21272 121716 5 0 JST (MESINI) I +21273 000401 5 0 ENB T.O +21274 024000 5 IMPD7: IRS 0 +21275 025356 5 IRS DMSTAB +21276 004000 5 LDA 0 +21277 014132 5 ADD MINIMP +21300 100400 5 SPL /HAVE WE DONE ALL IMPS YET? +21301 003140 5 JMP IMPD /NOT YET, CYCLE BACK +21302 103134 5 JMP DEDI I + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 174 IMP,3050,IMP 7:20 PM 9/16/1973 + + LCK ALL +21303 000000 5 0 DREAS: 0 /TRY TO FREE A REAS BLOCK +21304 140100 5 0 SSP +21305 033360 5 0 STX DTEND +21306 010000 5 0 STA 0 +21307 044001 5 0 LDA RID X +21310 013355 5 0 ERA DEDIMP +21311 007715 5 0 ANA (SRCEI) +21312 100040 5 0 SZE /FROM DEAD IMP? +21313 103303 5 0 JMP DREAS I /NO +21314 044000 5 0 LDA 0 X /YES, REMOVE FROM MESSTK OR SHRQ +21315 111360 5 0 STA DTEND I +21316 021321 5 0 JST REASF /FREE REAS BLOCK AND PKTS +21317 073360 5 0 LDX DTEND +21320 103303 5 0 JMP DREAS I + +21321 000000 5 0 REASF: 0 /FREE REAS BLOCK AND ANY PKTS +21322 004000 5 0 LDA 0 +21323 026326 5 0 IMA RASF +21324 110326 5 0 STA RASF I /RETURN REAS BLOCK TO REAS FREE LIS +21325 005717 5 0 LDA (-8) 0"A"8PKTS +21326 011353 5 0 STA INCN +21327 140040 5 0 CRA +21330 050013 5 0 STA RSF X +21331 044002 5 0 LDA RMAX X +21332 100400 5 0 SPL /DID WE GET LAST PKT? +21333 004120 5 0 LDA SEVEN 0"A"8PKTS /NO +21334 141206 5 0 AOA +21335 014565 5 0 ADD NRES +21336 010565 5 0 STA NRES /ADJUST REAS COUNT +21337 140040 5 0 INCFRE: CRA +21340 066003 5 0 IMA REAS X +21341 101040 5 0 SNZ /DID WE GET THIS PKT? +21342 003347 5 0 JMP INCNXT /NO +21343 033354 5 0 STX INCX +21344 010000 5 0 STA 0 /YES, SO FREE IT +21345 120671 5 0 JST FLUSHI I +21346 073354 5 0 LDX INCX +21347 024000 5 0 INCNXT: IRS 0 +21350 025353 5 0 IRS INCN +21351 003337 5 0 JMP INCFRE +21352 103321 5 0 JMP REASF I + + LEV VAR +21353 V INCN: BSS 1 +21354 V INCX: BSS 1 +21355 V DEDIMP: BSS 1 /NO OF A DEAD IMP +21356 V DMSTAB: BSS 1 /PNTR TO HIS TMESS TABLE +21357 V DEDTRY: BSS 1 +21360 V DTEND: BSS 1 /TEMP Q PNTR +21361 V IMPDLH: BSS 1 + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 175 IMP,3050,IMP 7:20 PM 9/16/1973 + + LEV T.O +21362 000000 5 DEDH: 0 /TEST FOR DEAD HOSTS +21363 004131 5 LDA MITH +21364 011430 5 STA DHC +21365 072113 5 LDX ZERO +21366 045662 5 TDH1: LDA SKST X +21367 011372 5 STA TDH4 +21370 001001 5 INH [I2H,H2I] +21371 044504 5 3 LDA HIHD X +21372 5 3 TDH4: BSS 1 +21373 015720 5 3 ADD (TDHDN-0-TDHUP) /READY LINE DOWN +21374 015721 5 3 ADD (JMP TDHUP 0 I) /READY LINE DOWN +21375 011376 5 3 STA .+1 +21376 5 3 BSS 1 + +21377 021423 5 3 TDHUP: TDH5 /STEADY-STATE UP +21400 021423 5 3 TDH5 /READY LINE UP, HOST GOING DOWN +21401 021423 5 3 TDH5 /READY LINE UP, HOST TARDY +21402 021411 5 3 TDH3 /READY LINE JUST WENT UP, WAS DOWN +21403 021423 5 3 TDH5 /IGNORE HOST IF IMP NOT UP + +21404 021421 5 3 TDHDN: TDH2 /READY LINE JUST WENT DOWN, WAS UP +21405 021423 5 3 TDH5 /READY LINE DOWN, HOST GOING DOWN +21406 021421 5 3 TDH2 /READY LINE JUST WENT DOWN, WAS T: +21407 021423 5 3 TDH5 /STEADY-STATE DOWN +21410 021423 5 3 TDH5 /IGNORE HOST IF IMP NOT UR + +21411 140040 5 3 TDH3: CRA +21412 050504 5 3 STA HIHD X +21413 104700 5 3 LDA IHXX I /NOW TRULY UP +21414 101040 5 3 SNZ /IS THERE AN OUTPUT IN PROGESS? +21415 003423 5 3 JMP TDH5 /NO +21416 004107 5 3 LDA M30SEC /YES - MOST LIKELY A NOP +21417 111722 5 3 STA (IHTT 0 X) I /GIVE FULL 30 SECS +21420 003423 5 3 JMP TDH5 + +21421 005723 5 3 TDH2: LDA (IHWAIT) /HOST WENT DOWN, DO NOT DROP IMP RE +21422 121724 5 3 JST (IHST) I RET T.O / CLEAR OUT HIS QUEUES +21423 000401 5 TDH5: ENB T.O +21424 024000 5 IRS 0 +21425 025430 5 IRS DHC +21426 003366 5 JMP TDH1 +21427 103362 5 JMP DEDH I + + LEV VAR +21430 V DHC: BSS 1 + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 176 IMP,3050,IMP 7:20 PM 9/16/1973 + + LEV VAR +21431 000000 V HLRCVD: 0 /= OF CORRECT RESPONSES + + /* COMPUTE OUR EFFECTIVE CHANNEL DELAY + / S= 20L + (100+S) E/T WHERE T=20 + /S' = [(L+5)(256/(20-E))-64] + LEV T.O +21432 000000 5 JED: 0 +21433 072127 5 LDX MICH +21434 001001 5 ED1: INH I2M +21435 004116 5 2 LDA THREE +21436 111455 5 2 STA PCED I +21437 005717 5 2 LDA (-NACH) +21440 011457 5 2 STA JEDC +21441 044627 5 2 LDA I2MTAB+CH X +21442 011456 5 2 STA JEDP +21443 105456 5 2 JEDL: LDA JEDP I +21444 100040 5 2 SZE +21445 125455 5 2 IRS PCED I +21446 025456 5 2 IRS JEDP +21447 025457 5 2 IRS JEDC +21450 003443 5 2 JMP JEDL +21451 000401 5 2 ENB T.O +21452 024000 5 IRS 0 +21453 003434 5 JMP ED1 +21454 103432 5 JMP JED I + LEV CON +21455 066505 C PCED: CED+CH X + LEV VAR +21456 V JEDP: BSS 1 +21457 V JEDC: BSS 1 + + LEV T.O +21460 000000 5 IHTC: 0 /TIME OUT CHECK ROUTINE +21461 004131 5 LDA MITH +21462 011477 5 STA IHTK +21463 072113 5 LDX ZERO /ATTEMPT TO WAKE UP ALL IMP-TO-HOST +21464 125722 5 IHTY: IRS (IHTT 0 X) I /TIME TO WAKE HIM YET? +21465 003473 5 JMP IHTZ /NO +21466 001001 5 INH SIN /YES, SOFTWARE INTERRUPT IMP-TO-HOS +21467 000013 5 0 EXA +21470 121725 5 0 JST (IHSB) I RET T.O +21471 001001 5 INH ALL +21472 120672 5 0 JST DODXA I RET T.O +21473 024000 5 IHTZ: IRS 0 +21474 025477 5 IRS IHTK +21475 003464 5 JMP IHTY +21476 103460 5 JMP IHTC I + LEV VAR +21477 V IHTK: BSS 1 + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 177 IMP,3050,IMP 7:20 PM 9/16/1973 + + + LEV T.O +21500 000000 5 JUQC: 0 +21501 073726 5 LDX (-COUNTL) +21502 001001 5 QC1: INH ALL +21503 044543 5 0 LDA COUNTA+COUNTL X +21504 056567 5 0 SUB COUNTS+COUNTL X +21505 101400 5 0 SMI /NEGATIVE +21506 003513 5 0 JMP QC2 /NO + DEFHLT [QUEUE COUNTER WENT NEGATIVE] +21507 021510 5 0 JST CNTHLT +21510 000000 5 0 CNTHLT: 0 +21511 120745 5 0 JST HLTNCC I +21512 140040 5 0 CRA /RESET COUNT TOT ZERO +21513 050543 5 0 QC2: STA COUNTA+COUNTL X +21514 140040 5 0 CRA +21515 050567 5 0 STA COUNTS+COUNTL X +21516 000401 5 0 ENB T.O +21517 024000 5 IRS 0 +21520 003502 5 JMP QC1 +21521 001001 5 INH ALL +21522 125727 5 0 IRS (SNTALL) I /ARE WE ALLOCATE-IDLE? +21523 103500 5 0 JMP JUQC I /NO +21524 010542 5 0 STA NALA /YES, FREE UP ALLOCATE STORE +21525 103500 5 0 JMP JUQC I + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 178 IMP,3050,IMP 7:20 PM 9/16/1973 + + LEV T.O +21526 000000 5 MESSTO: 0 /TIMEOUT MESS NO IN 34-51 SECS +21527 025561 5 IRS MESST /TIME TO LOOK YET? +21530 103526 5 JMP MESSTO I /NO +21531 072132 5 LDX MINIMP +21532 001001 5 MESST1: INH H2I +21533 105730 5 4 LDA (TMESS+NIMP 0 X) I +21534 007702 5 4 ANA (MESBTS) +21535 013702 5 4 ERA (MESBTS) +21536 101040 5 4 SNZ /ANY MESSAGES OUTSTANDING? +21537 003550 5 4 JMP MESST2 /NOTHING TO TIME OUT +21540 105730 5 4 LDA (TMESS+NIMP 0 X) I +21541 007731 5 4 ANA (MSTO1 0 MSTO2) +21542 013731 5 4 ERA (MSTO1 0 MSTO2) +21543 101040 5 4 SNZ +21544 003550 5 4 JMP MESST2 /ALREADY TIMED OUT +21545 005732 5 4 LDA (MSTO1) +21546 115730 5 4 ADD (TMESS+NIMP 0 X) I +21547 111730 5 4 STA (TMESS+NIMP 0 X) I +21550 000401 5 4 MESST2: ENB T.O +21551 024000 5 IRS 0 +21552 003532 5 JMP MESST1 +21553 004107 5 LDA M30SEC /17 SECS +21554 040575 5 ARS 3 +21555 014107 5 ADD M30SEC +21556 040577 5 ARS 1 +21557 011561 5 STA MESST /BETWEEN LOOKS +21560 103526 5 JMP MESSTO I + + LEV VAR +21561 V MESST: BSS 1 +21562 V HTOLD: BSS 1 +21563 V HTINTF: BSS 1 + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 179 IMP,3050,IMP 7:20 PM 9/16/1973 + + LEV T.O +21564 000000 5 HTEST: 0 +21565 101000 5 HTMIN: NOP +21566 005733 5 LDA (NOP) /RESET MXIN/NOP INSTRUCTION +21567 011565 5 STA HTMIN +21570 004141 5 LDA HTPAR +21571 013562 5 ERA HTOLD +21572 101040 5 SNZ +21573 103564 5 JMP HTEST I /NO CHANGE, NOTHING TO DO +21574 004141 5 LDA HTPAR +21575 006120 5 ANA SEVEN /GET FUNCTION +21576 101040 5 SNZ +21577 003626 5 JMP HTX /FUNCTION ZERO?! +21600 010000 5 STA 0 +21601 004141 5 LDA HTPAR +21602 040575 5 ARS 3 /GET INTERFACE +21603 006752 5 ANA C77 +21604 011563 5 STA HTINTF +21605 055630 5 ADD HTTAB-1 X +21606 011624 5 STA HT5 /CORRECT OCP +21607 004000 5 LDA 0 +21610 022116 5 CAS THREE +21611 003624 5 JMP HT5 /HOST FUNCTION...DO IT +21612 100000 5 SKP /MODEM UNPATCH...MORE TO DO +21613 003621 5 JMP HT1 /MODEM OTHER...SET UP IN +21614 073563 5 LDX HTINTF +21615 001001 5 INH I2M +21616 044437 5 2 LDA NONE-1 X /MODEM BUSY? +21617 100040 5 2 SZE +21620 103564 5 2 JMP HTEST I /YES, COME AGAIN +21621 005563 5 2 HT1: LDA HTINTF /SET UP IN FOR NEXT T.O. TO DO +21622 015734 5 2 ADD (M1IN-1) +21623 011565 5 2 STA HTMIN +21624 5 2 HT5: BSS 1 +21625 000401 5 2 ENB T.O +21626 004141 5 HTX: LDA HTPAR /RESET HTOLD +21627 011562 5 STA HTOLD +21630 103564 5 JMP HTEST I + + LEV CON + /HTPAR HAS VALUE DDF - DEVICE IS DD AND FUNCTION IS F + /D=1,2,3,4,5 FOR MODEMS 1,2,3,4,5 (F=1,2,OR 3) + /D=70,60,50,51 FOR HOSTS 1,2,3,4 (F=4,5,OR 6) +21631 030270 C HTTAB: M1LXP-1 /1 - LINE CROSSPATCH +21632 030370 C M1IXP-1 /2 - INTERFACE CROSSPATCH +21633 030170 C M1UNXP-1 /3 - UNPATCH (RESTORE) +21634 030300 C H1XP-70 /4 - CROSSPATCH HOST INTERFACE +21635 030500 C H1ENAB-70 /5 - ENABLE NORMAL HOST TRAFFIC +21636 030400 C H1UNXP-70 /6 - UNPATCH (CLEAR) HOST INTERFACE +21637 101000 C NOP /7 + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 180 IMP,3050,IMP 7:20 PM 9/16/1973 + + LEV T.O +21640 000000 5 HPOKE: 0 /TEST HOST INTERFACE +21641 001001 5 INH FRE +21642 004142 5 0 LDA HLNM /TESTER TURNED ON? +21643 100400 5 0 SPL +21644 003656 5 0 JMP HPOKE2 /OFF +21645 010000 5 0 STA 0 +21646 044332 5 0 LDA SHWQ X /ROOM FOR ANOTHER TEST PROD? +21647 100040 5 0 SZE +21650 003656 5 0 JMP HPOKE2 /NO +21651 004143 5 0 LDA HL2WD +21652 010515 5 0 STA TWDP +21653 005735 5 0 LDA (CNOP) +21654 120670 5 0 JST OWP I +21655 025660 5 0 IRS HLSNT /COUNT ANOTHER POKE +21656 000401 5 0 HPOKE2: ENB T.O +21657 103640 5 JMP HPOKE I + LEV VAR +21660 V HLSNT: BSS 1 + LEV CON +21661 037454 C VDH3.: VD.TO + +21662 070170 C SKST: H1RDY +21663 070160 C H2RDY +21664 C TIPSKP: TIPDEF H3RDY, NOP +02265 021664 C +02315 070150 C +02345 101000 C +21665 070151 C H4RDY +21666 100000 C SKP +21667 100000 C SKP +21670 100000 C SKP +21671 100000 C SKP + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 181 IMP,3050,IMP 7:20 PM 9/16/1973 + +21672 027112 C LEV CON CONSTANTS +21673 026512 C +21674 177666 C +21675 054115 C +21676 041557 C +21677 102111 C +21700 020164 C +21701 032271 C +21702 000017 C +21703 001400 C +21704 015033 C +21705 007244 C +21706 015205 C +21707 070377 C +21710 003400 C +21711 015347 C +21712 015114 C +21713 000340 C +21714 000327 C +21715 000077 C +21716 002374 C +21717 177770 C +21720 000005 C +21721 103377 C +21722 056306 C +21723 016341 C +21724 016273 C +21725 016042 C +21726 177754 C +21727 004161 C +21730 072371 C +21731 000300 C +21732 000100 C +21733 101000 C +21734 030470 C +21735 002000 C +02430 176745 C PAGEND 21,UNCON,4 + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 182 IMP,3050,IMP 7:20 PM 9/16/1973 + + + + LEV BCK + /TROUBLE REPORTS TO NCC AT HOST 0 AT BBN +22057 005524 7 TRBL: LDA (301) /*SEND TRBL REPT CODE +22060 011301 7 STA NTRCKS /INIT THE CHECKSUM COUNTER +22061 121525 7 JST (GIVE) I +22062 073526 7 LDX (-NH) +22063 001001 7 INH ALL /USING B REG - MUST LOCK INTERRUPT' +22064 044510 7 0 NTR6: LDA HIHD+NH X +22065 100040 7 0 SZE +22066 004112 7 0 LDA SIGN +22067 140024 7 0 CHS +22070 041277 7 0 LLR 1 +22071 024000 7 0 IRS 0 +22072 003064 7 0 JMP NTR6 +22073 040274 7 0 LRR NH +22074 013272 7 0 ERA SWS /*SEND ANOMALY WORD - HOSTS + SWIT ] +22075 021310 7 0 JST NTGIVE RET BCK +22076 127527 7 IMA (RSFNCC) I /*SEND RESTART-RELOAD INDICATOR +22077 021310 7 JST NTGIVE +22100 026746 7 IMA HLTLOC /*SEND HALT PC REG +22101 021310 7 JST NTGIVE +22102 004747 7 LDA HLTA /*SEND HALT A REG +22103 021310 7 JST NTGIVE +22104 004750 7 LDA HLTX /*SEND HALT X REG +22105 021310 7 JST NTGIVE +22106 072124 7 LDX MINUS4 /*SEND COUNTS FOR +22107 001001 7 NTR7: INH ALL /FREE, REAS, S+F, AND ALLOCATE +22110 044543 7 0 LDA NFA+4 X +22111 056567 7 0 SUB NFS+4 X +22112 021310 7 0 JST NTGIVE RET BCK +22113 024000 7 IRS 0 +22114 003107 7 JMP NTR7 +22115 004105 7 LDA VERS /*SEND IMP VERSION NO +22116 021310 7 JST NTGIVE +22117 105530 7 LDA (HOST34) I /*SEND HOST34 CONFIGURATOR WORD +22120 021310 7 JST NTGIVE +22121 000013 7 EXA +22122 105531 7 LDA (TIPVER) I /*SEND TIP VERSION NO +22123 001001 7 INH [ALL] +22124 120672 7 0 JST DODXA I RET BCK +22125 021310 7 JST NTGIVE +22126 004142 7 LDA HLNM /*SEND NO OF HOST INTERFACE BEING T +22127 021310 7 JST NTGIVE +22130 127532 7 IMA (HLSNT) I /*SEND TEST MESS SENT COUNT +22131 021310 7 JST NTGIVE +22132 127533 7 IMA (HLRCVD) I /*SEND TEST MESS RECVD COUNT +22133 021310 7 JST NTGIVE +22134 011277 7 STA NTRTM1 /ZERO LINE-SPEEDS WORD +22135 072127 7 LDX MICH /TAKE A SNAPSHOT OF LINE ERRORS +22136 001001 7 NTR1: INH [T.O,TSK] /A=0 NOW + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 183 IMP,3050,IMP 7:20 PM 9/16/1973 + +22137 140040 7 5 CRA +22140 127534 7 5 IMA (RTRCVD+CH 0 X) I +22141 057310 7 5 SUB RTSSNT+CH X /SUBTRACT ROUTING MESS E , +22142 140407 7 5 TCA /COMPUTE NO OF ROUTING MESS MISSED +22143 100400 7 5 SPL +22144 140040 7 5 CRA /MUST BE A POSITIVE NUMBER +22145 023535 7 5 CAS (377) +22146 005535 7 5 LDA (377) +22147 101000 7 5 NOP +22150 011302 7 5 STA E321 /SAVE AS ERROR COUNT FOR THIS LINE +22151 004121 7 5 LDA MINUS1 +22152 067310 7 5 IMA RTSSNT+CH X /*SEND NO OF ROUTING MEI +22153 023535 7 5 CAS (377) +22154 005535 7 5 LDA (377) +22155 101000 7 5 NOP +22156 021310 7 5 JST NTGIVE RET BCK +22157 044440 7 LDA LINE+CH X /NOW ERROR+THROUGHPUT COUNTS FOR EAT +22160 100040 7 SZE +22161 005536 7 LDA (200) +22162 052165 7 ERA NEIGHB+CH X /PICK UP NEIGHBOR IMP NUMT +22163 022106 7 CAS MINE /IS LINE LOOPED? +22164 100000 7 SKP /NO +22165 012753 7 ERA C100 /YES, PUT IN LOOPED BIT +22166 141340 7 ICA +22167 013302 7 ERA E321 /*SEND NO OF ROUTING MESS MISSED +22170 021310 7 JST NTGIVE +22171 105537 7 LDA (RMFLG+CH X) I /GET LINE SPEED BITS +22172 141340 7 ICA +22173 006116 7 ANA THREE 0"A"SPDTYP +22174 013277 7 ERA NTRTM1 +22175 041676 7 ALR 2 +22176 011277 7 STA NTRTM1 +22177 024000 7 IRS 0 +22200 003136 7 JMP NTR1 +22201 041674 7 ALR 4 /LEFT ADJUST +22202 021310 7 JST NTGIVE /*SEND LINE SPEEDS +22203 072123 7 LDX MINUS3 +22204 105540 7 LDA (37777 0 X) I /*SEND TRAP INFO (P, A, X +22205 021310 7 JST NTGIVE +22206 024000 7 IRS 0 +22207 003204 7 JMP .-3 + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 184 IMP,3050,IMP 7:20 PM 9/16/1973 + +22210 027301 7 IMA NTRCKS /A=0 NOW +22211 140407 7 TCA +22212 121525 7 JST (GIVE) I /*SEND CHECKSUM +22213 140040 7 CRA +22214 027276 7 IMA TRBSTF /FIRED BY SYNC OR SWCH? +22215 100040 7 SZE +22216 103541 7 JMP (GIVLST) I /*SEND PADDING--FIRED BY SWCH +22217 073542 7 LDX (100003) /END OUR OWN MESSAGE +22220 004112 7 LDA SIGN +22221 120664 7 JST JAM I /*PADDING AND END OF MESSAGE +22222 105543 7 LDA (TRBD) I /*NCC DEST +22223 121525 7 JST (GIVE) I +22224 105544 7 LDA (TRBD+0+TLNK-TDST) I /*NCC LINK +22225 121525 7 JST (GIVE) I +22226 005545 7 LDA (302) /*STAT MESSAGE CODE +22227 021310 7 JST NTGIVE +22230 072127 7 LDX MICH /SEND LINE STATS +22231 127546 7 NTR8: IMA (THRUPT+CH X) I +22232 021310 7 JST NTGIVE /*PACKET THRUPUT +22233 127547 7 IMA (THRUPW+CH X) I +22234 021310 7 JST NTGIVE /*WORD THRUPUT +22235 024000 7 IRS 0 +22236 003231 7 JMP NTR8 +22237 073526 7 LDX (-NH) /NOW HOST THROUGHPUTS FOR EACH HO1' +22240 005550 7 NTR5: LDA (-10.) /AND FOR EACH OF 10 FLAVORS +22241 011277 7 STA NTRTM1 +22242 005551 7 LDA (NTRTAB 0 I) +22243 011300 7 STA NTRTM2 +22244 140040 7 NTR4: CRA +22245 127300 7 IMA NTRTM2 I /*SEND HOST THROUGHPUT COUNT +22246 021310 7 JST NTGIVE +22247 025300 7 IRS NTRTM2 +22250 025277 7 IRS NTRTM1 +22251 003244 7 JMP NTR4 +22252 024000 7 IRS 0 +22253 003240 7 JMP NTR5 +22254 027301 7 IMA NTRCKS /A=0 NOW +22255 140407 7 TCA +22256 121525 7 JST (GIVE) I /*SEND CKSUM +22257 103541 7 JMP (GIVLST) I /*SEND PADDING + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 185 IMP,3050,IMP 7:20 PM 9/16/1973 + + LEV CON + +22260 073563 C NTRTAB: HTPMTN+NH X +22261 073567 C HTPMFN+NH X +22262 073573 C HTPPTN+NH X +22263 073577 C HTPPFN+NH X +22264 073603 C NTRT1: HTPMTL+NH X +22265 073607 C NTRT3: HTPMFL+NH X +22266 073613 C NTRT2: HTPPTL+NH X +22267 073617 C NTRT4: HTPPFL+NH X +22270 073623 C HTPWTI+NH X +22271 073627 C HTPWFI+NH X + + LEV VAR +22272 V SWS: BSS 1 /ANOMALIES +22273 V HLNMS: BSS 1 +22274 V SWCHTM: BSS 1 +22275 003014 V HERSAV: JMP 0 1000 777"A"HITEST +22276 V TRBSTF: BSS 1 +22277 V NTRTM1: BSS 1 +22300 V NTRTM2: BSS 1 +22301 V NTRCKS: BSS 1 /CHECKSUM FOR TROUBLE REPT +22302 V E321: BSS 1 /NO OF ERRORS ON EACH LINE +22303 V RTSSNT: BSS CH /NO OF HELLO'S SENT + + LEV BCK +22310 000000 7 NTGIVE: 0 /BUILD CHECKSUM +22311 000401 7 ENB BCK +22312 027301 7 IMA NTRCKS +22313 015301 7 ADD NTRCKS +22314 027301 7 IMA NTRCKS +22315 121525 7 JST (GIVE) I /AND GIVE A WORD TO IMP VIA JAM +22316 140040 7 CRA +22317 103310 7 JMP NTGIVE I + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 186 IMP,3050,IMP 7:20 PM 9/16/1973 + + /BITS IN SWS (TROUBLE REPORT ANOMALIES): + / 100000 - HOST 0 UP (NOT KEPT IN SWS) + / 40000 - HOST 1 UP (NOT KEPT IN SWS) + / 20000 - HOST 2 UP (NOT KEPT IN SWS) + / 10000 - HOST 3 UP (NOT KEPT IN SWS) + / 4000 - VDH SOFTWARE IS UP + / 2000 - M.GENERATOR IS ON + / 1000 - STATISTICS IS ON + / 400 - SNAPSHOT IS ON + / 200 - TRACE IS ON + / 100 - MEM PROTECT IS OFF + / 40 - SPARE + / 20 - OVERRIDE IS ON + / 10 - SS 1 IS ON + / 4 - SS 2 IS ON + / 2 - SS 3 IS ON + / 1 - SS 4 IS ON + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 187 IMP,3050,IMP 7:20 PM 9/16/1973 + + LEV T.O +22320 000000 5 SWCH: 0 /SET UP SWITCH SETTINGS FOR TROUBLE +22321 005552 5 LDA (4000) /SET UP FREQ FOR NCC TRBL REPTS +22322 111553 5 STA (TRBF) I /DEST IS SET IN BACK +22323 072121 5 LDX MINUS1 +22324 105527 5 LDA (RSFNCC) I +22325 101040 5 SNZ +22326 105554 5 LDA (HLTLOC) I +22327 100040 5 SZE /IF RSFLAG OR HLTLOC NON-ZERO +22330 033272 5 STX SWS /FIRE OFF A TRBL REPT NOW +22331 004142 5 LDA HLNM +22332 027273 5 IMA HLNMS +22333 023273 5 CAS HLNMS +22334 100000 5 SKP /CHANGE IN HOST TEST STATUS? +22335 003345 5 JMP SWCH0 /NO +22336 033272 5 STX SWS +22337 010000 5 STA 0 /RICK HOST NO GOING OFF +22340 005275 5 LDA HERSAV +22341 127555 5 IMA (HER 0 X) I /INTERCHANGE PATCH REGIST +22342 072142 5 LDX HLNM /PICK HOST NO COMING ON +22343 127555 5 IMA (HER 0 X) I +22344 011275 5 STA HERSAV 0"A"HER0 +22345 004753 5 SWCH0: LDA C100 +22346 111556 5 STA (1777) I /ATTEMPT TO CHANGE WORD ON PROT P: +22347 140040 5 CRA +22350 127556 5 IMA (1777) I /IF SUCCESSFUL, PUT IN MP OFF BIT +22351 012473 5 ERA OVRDF /OVRDF=20 IF ON, =0 IF OFF +22352 100020 5 SR1 +22353 012751 5 ERA TEN +22354 100010 5 SR2 +22355 012117 5 ERA FOUR +22356 100004 5 SR3 +22357 012115 5 ERA TWO +22360 100002 5 SR4 +22361 012114 5 ERA ONE +22362 072124 5 LDX MINUS4 +22363 011274 5 SWCH4: STA SWCHTM +22364 105557 5 LDA (PARAMT+4 X) I +22365 100040 5 SZE +22366 105560 5 LDA (SWCHB+4 X) I /SET THE BIT +22367 013274 5 ERA SWCHTM +22370 024000 5 IRS 0 +22371 003363 5 JMP SWCH4 +22372 012567 5 ERA VDHUPF /=4000 IF VDH IS UP +22373 027272 5 IMA SWS +22374 013272 5 ERA SWS +22375 101040 5 SNZ +22376 103320 5 JMP SWCH I +22377 011276 5 STA TRBSTF /TELL TRBL RPTS THAT SWS FIRED IT +22400 004417 5 LDA SYNC +22401 117553 5 SUB (TRBF) I +22402 111561 5 STA (TRBOLD) I +22403 103320 5 JMP SWCH I + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 188 IMP,3050,IMP 7:20 PM 9/16/1973 + + LEV [M2I,VDI,I2H,T.O,TSK] +22404 000000 0 HLTWRD: 0 +22405 010747 0 STA HLTA +22406 032750 0 STX HLTX +22407 004122 0 LDA MINUS2 +22410 015404 0 ADD HLTWRD +22411 010746 0 STA HLTLOC +22412 104746 0 LDA HLTLOC I +22413 010746 0 STA HLTLOC /SAVE LOC OF HLT +22414 103404 0 JMP HLTWRD I + + LEV H2I /8-WAY BREAKDOWN OF HOST THROUGHPUT +22415 000000 4 HTPMT: 0 /COUNT MESSAGES TO NET +22416 012106 4 ERA MINE +22417 100040 4 SZE /INTER- OR INTRA-NODE? +22420 005562 4 LDA (HTPMTN+0-HTPMTL) +22421 015264 4 ADD NTRT1 +22422 001001 4 INH I2H +22423 021505 4 3 JST HTPIRS RET H2I +22424 101000 4 NOP +22425 103415 4 JMP HTPMT I + +22426 000000 4 HTPPT: 0 /COUNT PACKETS TO NET +22427 012106 4 ERA MINE +22430 100040 4 SZE /INTER- OR INTRA-NODE? +22431 005562 4 LDA (HTPPTN+0-HTPPTL) +22432 015266 4 ADD NTRT2 +22433 001001 4 INH I2H +22434 021505 4 3 JST HTPIRS RET H2I +22435 103426 4 JMP HTPPT I /R1==>FH - DON'T GET LENGTH +22436 172677 4 LDX HIXX I +22437 044111 4 LDA BUFE X +22440 016000 4 SUB 0 +22441 140100 4 SSP 0"A"TWOQ +22442 017563 4 SUB (DATA) /GOT PACKET LENGTH, NOT COUNTING LE +22443 072675 4 LDX HIP +22444 115564 4 ADD (HTPWTI 0 X) I +22445 100400 4 SPL +22446 004112 4 LDA SIGN /MARK OFLO +22447 111564 4 STA (HTPWTI 0 X) I +22450 103426 4 JMP HTPPT I + + LEV I2H +22451 000000 3 HTPMF: 0 /COUNT MESSAGES FROM NET +22452 012106 3 ERA MINE +22453 007565 3 ANA (SRCEI) +22454 100040 3 SZE /INTER- OR INTRA-NODE? +22455 005562 3 LDA (HTPMFN+0-HTPMFL) +22456 015265 3 ADD NTRT3 +22457 021505 3 JST HTPIRS +22460 101000 3 NOP +22461 103451 3 JMP HTPMF I + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 189 IMP,3050,IMP 7:20 PM 9/16/1973 + +22462 000000 3 HTPPF: 0 /COUNT PACKETS FROM NET +22463 012106 3 ERA MINE +22464 007565 3 ANA (SRCEI) +22465 100040 3 SZE /INTER- OR INTRA-NODE? +22466 005562 3 LDA (HTPPFN+0-HTPPFL) +22467 015267 3 ADD NTRT4 +22470 021505 3 JST HTPIRS +22471 103462 3 JMP HTPPF I /R1==>FH +22472 172700 3 LDX IHXX I +22473 044111 3 LDA BUFE X +22474 016000 3 SUB 0 +22475 140100 3 SSP 0"A"TWOQ +22476 017563 3 SUB (DATA) /GOT PKT LENGTH +22477 072676 3 LDX IHP +22500 115566 3 ADD (HTPWFI 0 X) I +22501 100400 3 SPL +22502 004112 3 LDA SIGN /MARKING OVERFLOW +22503 111566 3 STA (HTPWFI 0 X) I +22504 103462 3 JMP HTPPF I + + /HOST THROOGHPUT TABLES AND COUNT ROUTINE +22505 000000 3 HTPIRS: 0 /TBL IN A, HOST NUM IN X +22506 016130 3 SUB PLNH +22507 011523 3 STA HTPIR1 +22510 004000 3 LDA 0 +22511 016130 3 SUB PLNH +22512 101400 3 SMI /FAKE HOST? +22513 003521 3 JMP HTPIR2 /YES, DO NOT COUNT TRAFFIC TO OR FR +22514 105523 3 LDA HTPIR1 I +22515 101400 3 SMI /OVERFLOWED--LEAVE AT 100000 +22516 141206 3 AOA /ADD ONE TO COUNTER +22517 111523 3 STA HTPIR1 I +22520 025505 3 IRS HTPIRS /R2==>REAL (NOT FAKE) HOST +22521 000401 3 HTPIR2: ENB I2H +22522 103505 3 JMP HTPIRS I + LEV VAR +22523 V HTPIR1: BSS 1 /PNTR INTO HTPTBL + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 190 IMP,3050,IMP 7:20 PM 9/16/1973 + +22524 000301 C LEV CON CONSTANTS +22525 030403 C +22526 177774 C +22527 003560 C +22530 001005 C +22531 040000 C +22532 021660 C +22533 021431 C +22534 060464 C +22535 000377 C +22536 000200 C +22537 052625 C +22540 077777 C +22541 030165 C +22542 100003 C +22543 030456 C +22544 030450 C +22545 000302 C +22546 050625 C +22547 050620 C +22550 177766 C +22551 122260 C +22552 004000 C +22553 030464 C +22554 000746 C +22555 053170 C +22556 001777 C +22557 070440 C +22560 041246 C +22561 030210 C +22562 177760 C +22563 000011 C +22564 073617 C +22565 000077 C +22566 073623 C +02431 175607 C PAGEND 22,UNCON,4 + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 191 IMP,3050,IMP 7:20 PM 9/16/1973 + + + /DDT CONTROL LANGUAGE INFORMATION + / + /************CURRENTLY IMPLEMENTED COMMANDS*****************, + / + /SHIFT-CONTROL-P (OR THE BREAK KEY) HAS THE FOLLOWING EFFE( : + /1- ANY DDT OUTPUT IS STOPPED + /2- THE CURRENTLY OPENED REGISTER IS CLOSED WITH NO NEW CONT1 + /3- DDT FORGETS WHATEVER NUMBER WAS BEING TYPED IN + /4- DDT TYPES A CARRAIGE RETURN-LINE FEED + /5- DDT IS UN-CROSSPATCHED - THAT IS YOU ARE NOW TYPING + / TO THE LOCAL DDT IF YOU WERE CROSSPATCHED BEFORE + / + / HAS THE FOLLOWING EFFECTS: + /1- DDT FORGETS WHATEVER NUMBER WAS BEING TYPED IN + /2- DDT TYPES "= " + / + /. HAS THE VALUE OF THE CURRENT REGISTER'S ADDRESS (14-BITI + / + / HAS THE VALUE OF THE LAST THING TYPED BY DDT + / + /* HAS THE VALUE OF THE CONTENTS OF THE REGISTER ADDRESSED B + /HAS BEEN ASSEMBLED AS THE CURRENT SYLLABLE. IT ALWAYS USES + /THE CURRENT SYLLABLE AS A 14 BIT ADDRESS AND CAN BE APPLI[ + /ITSELF OR TO ANY SYLLABLE + / + /T HAS THE VALUE OF THE IMP NUMBER OF THE LAST FOREIGN IMP + /TO SEND A TTY MESSAGE TO THIS IMP. USED IN T= OR TC. + / + /, SEPARATES ARGUMENTS TO MULTIPLE ARGUMENT COMMANDS + / + /A1/ OPENS REGISTER AT LOCATION A1 (14-BIT ADDRESS) + / + /A1 OPEN REGISTER AT LOCATION A1 (USED AS + /A 9 BIT RELATIVE ADDRESS TO THE PAGE . IS ON. + / + /A1 CLOSES THE CURRENTLY OPEN REGISTER (IF ANY) + /INSERTS A1 AS ITS NEW CONTENTS (IF SUPPLIED) + / + /A1- CLOSES THE CURRENTLY OPEN REGISTER (AS LINEFEED) AND + /THE PREVIOUS REGISTER + + /A1 CLOSES THE CURRENTLY OPEN REGISTER (AS LINEFEE + /OPENS THE NEXT REGISTER + / + / AND + BOTH MEAN ADDITION + / + /- MEANS SUBTRACTION + / + /D MEANS THE NUMBER FOLLOWING IS DECIMAL + / + /" MEANS THAT THE TWO CHARACTERS FOLLOWING ARE TO BE TAKEN + /AS LITERAL ASCII VALUES AND PACKED INTO A WORD LEFT HALF, R + / + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 192 IMP,3050,IMP 7:20 PM 9/16/1973 + + /= TYPES OUT THE OCTAL VALUE OF THE LAST INPUT + /EG: 3=3, 3+6=11, D11=13, "AB=40502, "AB+D10=40514, .=3033 + / + /> TYPES OUT THE ASCII VALUE OF THE LAST OUTPUT (IE AB + / + / + /A1.A2,A3Z CLEARS ["ZEROES"] CORE BETWEEN LIMITS - A1 IS T1 + /CONSTANT CORE WILL BE CLEARED TO. A2 AND A3 ARE THE (INCLL' + /LOWER AND UPPER LIMITS, REPECTIVELY. + / + /A1,A2W DUMPS OUT ["WRITES"] CORE BETWEEN LIMITS - A1 AN( + /ARE THE (INCLUSIVE) LOWER AND UPPER LIMITS. RESPECTIVELY. + / + /A1,A2,A3S STARTS UP A PROGRAM (I.E. CAUSE A TRANSFER TO + /LOCATION). A3 IS THE (14 BIT) ADDRESS AT WHICH THE PROGRAM + /IS TO BE STARTED. A2 SPECIFIES THE CONTENTS OF THE A REGIST1 + /WHEN THE PROGRAM IS STARTED UP. A1 SPECIFIES THE + /X REGISTER WHEN THE PROGRAM IS STARTED UP. + / + /A1C CROSSPATCHES DDT TO IMP A1. + /MESSAGES ARE THEN TRANSMITTED TO IMP A1 + /FOR EVERY CHARACTER THAT IS TYPED IN + / + /A1,A2H SETS UP THE HEADER FOR MESSAGE + /TRANSMISSION - MESSAGES ARE TRANSMITTED BY + /TYPING A SEMICOLON, THEN ALL THE CHARACTERS UP TO THE + /NEXT SEMICOLON ARE SENT OFF AS A MESSAGE TO + /DESTINATION AS DETERMINED BY THIS HEADER. + /A1 GIVES LEADER WORD 1 (DESTINATION) + /A2 GIVES LEADER WORD 2 (LINK =). + / + /A1$ SENDS AN IMP GOING DOWN MESSAGE TO ALL THE HOSTS + /AT THE SITE TO WHICH DDT IS CROSSPATCHED. + /A1 IS THE LINK DR SUB-CODE WORD AND MUST BE SUPPLIED + / + /Q TURNS DDT OUTPUT OFF AND ON - REVERSES THE CURRENT STAT + /IF DDT TYPES NOTHING BACK IT IS OFF ["QUIET"] + /OTHERWISE DDT WILL TYPE A CARRIAGE RETURN-LINE FEED + / + /I PRODUCES AN INTERRUPT PRINT + /A DUMP OF SOME INTERESTING INTERRUPT LOCATIONS + / + /1 PRODUCES A QUEUE PRINT + /A DUMP DF SOME INTERESTING QUEUE AND TABLE LOCATIONS + / + /A1,A2,A3,A4[E N] WORD SEARCHES: UNDER A MASK OF A1, DOT + /SEARCH FOR WORDS EQUAL (NOTEQUAL) TO A2 BETWEEN THE + /LIMITS A3 TO A4. + / + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 193 IMP,3050,IMP 7:20 PM 9/16/1973 + + / + /*****************SENSE SWITCH FOUR********************* + / + / HAVING SENSE SWITCH 4 DOWN INHIBITS ALL OF + /DDT'S COMMANDS WHICH COULD DESTROY THE PROGRAM BEING + /LSOKED AT. IF YOU ATTEMPT TO CHANGE CORE WITH SS4 DOWN, ( ' + /WILL TYPE "= " AT YOU AND COMPLETELY IGNORE THE COMMAND. + /THE COMMANDS AFFECTED ARE: S, Q, Z,S, AND LINEFEED, UPARRO' + /CARRIAGE RETURN IF TRYING TO SUPPLY NEW CONTENTS. + + /*****************NULL ARGUMENT CONVENTIONS*****************, + / + /FOR =,CR,LF,-, AND IF + /THE ARGUMENT A1 IS LEFT OUT, THE LAST NUMBER TYPED BY DDT W + /BE USED AS THE ARGUMENT. + / + /FOR E, N, Z AND W, IF EITHER (OR BOTH) OF THE LIMITS ARE LET + /DDT WILL USE THE LAST LIMITS SPECIFIED FOR EITHER A Z OR : 1 + /OR AN E OR AN N. + /IF THE VALUE IS LEFT OUT IN AN E, N OR Z COMMAND, THE LAST + /SPECIFIED IN ANY E, N, OR Z COMMAND WILL BE USED. IF THE + /IS LEFT OUT OF AN E OR N COMMAND IT WILL BE SUPPLIED FROM + /THE LAST E OR N DONE. OR -1 IF NO MASK HAS EVER + /BEEN SPECIFIED. + / + /FOR S, ANY ARGUMENTS LEFT OUT WILL BE SUPPLIED FROM THE LAS + /THOSE ARGUMENTS WERE SPECIFIED. + / + /*********************************************************** + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 194 IMP,3050,IMP 7:20 PM 9/16/1973 + + LEV BCK + /DDT - STAND ALONE AND BACKGROUND + /THE SAME PROGRAM IS USED FOR STAND ALONE USE + /AND AS A BACKGROUND PROGRAM RUNNING WITH THE IMP SYSTEM + /THE ONLY DIFFERENCE IS IN THE INPUT AND OUTPUT PORTS + /CALLS TO INPUT A CHARACTER AND TO OUTPUT A CHARACTER + /ARE MADE INDIRECT THROUGH LDIN AND LDOT RESPECTIVELY + /STAND ALONE THESE POINT TO SIMPLE TTY I/O HANDLERS + /UNDER IMPSYS THESE POINT TO COMPLEX COROUTINES IN BACKGRO1 ] +23033 005633 7 DDSA: LDA (DDA3) /ENTRY TO STAND ALONE DDT +23034 011163 7 STA LDIN /SET UP STAND ALONE INPUT +23035 005634 7 LDA (DDA4) +23036 011164 7 STA LDOT /SET UP STAND ALONE OUTPUT +23037 005635 7 LDA (QNUL) +23040 011632 7 STA QPTR /TURN OFF QUIET MODE +23041 011162 7 STA BBNF /SET DEST TO NON-BBN +23042 140040 7 CRA +23043 010473 7 STA OVRDF /TURN OFF SOFTWARE SS4 +23044 000013 7 EXA +23045 003076 7 JMP DCLR /GO TO RESTART ENTRY + +23046 000000 7 DDA3: 0 /STAND ALONE DDT INPUT +23047 131004 7 TTINAC /GET INPUT CHAR +23050 003047 7 JMP .-1 +23051 007636 7 ANA (177) +23052 013637 7 ERA (200) /ALWAYS PUT IN PARITY BIT +23053 103046 7 JMP DDA3 I + +23054 000000 7 DDA4: 0 /STAND ALONE DDT OUTPUT +23055 070104 7 TTSNBZ +23056 003075 7 JMP DDA5 /BUSY, SO GET THE INPUT CHAR +23057 030104 7 TTSOM /GO INTO OUTPUT MODE +23060 170004 7 TTOTA /DO OUTPUT +23061 003060 7 JMP .-1 +23062 070004 7 TTSRDY +23063 003062 7 JMP .-1 +23064 030004 7 TTSIM /GO BACK TO INPUT MODE +23065 103054 7 JMP DDA4 I + + /START BACKGROUND DDT OUTPUT +23066 005640 7 DOTI: LDA (DOUT) +23067 011164 7 STA LDOT +23070 005641 7 LDA (DIN) +23071 011163 7 STA LDIN +23072 005635 7 LDA (QNUL) +23073 011632 7 STA QPTR +23074 103642 7 JMP (DOTI1) I + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 195 IMP,3050,IMP 7:20 PM 9/16/1973 + + /DDT + /NOTE THAT DDT RUNS WITH INTERRUPTS LOCKED - PI OFF + /IT ALSO RUNS WITH EXTENDED ADDRESSING ENABLED - EA ON + /MAIN LISTEN LOOP + +23075 021046 7 DDA5: JST DDA3 + LCK ALL +23076 021165 7 0 DCLR: JST CRLF /RESTART ENTRY +23077 140040 7 0 CRA +23100 011145 7 0 STA PRS +23101 021261 7 0 LF: JST CLS +23102 005643 7 0 LDA (215) /TYPE A CR +23103 121164 7 0 JST LDOT I +23104 021215 7 0 CLSE: JST CSL +23105 140040 7 0 CRA +23106 011145 7 0 STA PRS +23107 011144 7 0 STA PAR1 +23110 121163 7 0 LSE: JST LDIN I +23111 006752 7 0 ANA C77 +23112 011161 7 0 STA CHARIN +23113 015644 7 0 ADD (DTAB) /DISPATCH TABLE +23114 010000 7 0 STA 0 +23115 044000 7 0 LDA 0 X +23116 100400 7 0 SPL +23117 003122 7 0 JMP DDTDIS /SIGN BIT MEANS ALWAYS DO IT +23120 005162 7 0 LDA BBNF /ELSE ONLY IF OVERRIDDEN OR BBN +23121 021126 7 0 JST SS4ON +23122 044000 7 0 DDTDIS: LDA 0 X +23123 010000 7 0 STA 0 +23124 005161 7 0 LDA CHARIN +23125 042000 7 0 JMP 0 X + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 196 IMP,3050,IMP 7:20 PM 9/16/1973 + +23126 000000 7 0 SS4ON: 0 +23127 101040 7 0 SNZ /A IS 0 IF OK (E.G. BBNF) +23130 103126 7 0 JMP SS4ON I +23131 004473 7 0 LDA OVRDF /ELSE REQUIRE OVERRIDE ON +23132 101040 7 0 SNZ +23133 100002 7 0 SR4 /OR SS4 ON +23134 103126 7 0 JMP SS4ON I /ELSE FALL INTO RUB +23135 005645 7 0 RUB: LDA (243) /TYPE A # +23136 121164 7 0 RUB1: JST LDOT I +23137 021173 7 0 RUB2: JST TAB /AND THREE SPACES +23140 003104 7 0 JMP CLSE + + LEV VAR +23141 V BSS 1 /PARAMETERS STORAGE BLOCK +23142 V BSS 1 +23143 V BSS 1 +23144 V PAR1: BSS 1 +23145 V PRS: BSS 1 /PARAMETER SUPPLIED - 1=> YES (R I' +23146 V SYL: BSS 1 /LAST SYLLABLE TYPED IN +23147 000000 V LAST: 0 /LAST WORD TYPED (CURRENT VALUE OF +23150 000000 V PT: 0 /CURRENT VALUE OF . +23151 000000 V OPEN: 0 /ADDRESS OF OPEN REG (<0 IF NONE) +23152 000000 V DLO: 0 /LOW LIMIT +23153 000000 V DHI: 0 /HI LIMIT +23154 000000 V VAL: 0 /VALUE FOR CLEAR AND SEARCHES +23155 000000 V CNT: 0 /COUNT FOR LOOPING +23156 177777 V SMSK: -1 /MASK FOR SEARCHES +23157 000000 V SP: 0 /LAST DDT START ADDRESS +23160 000000 V SX: 0 /LAST DDT START X REG +23161 V CHARIN: BSS 1 /TEMP INPUT CHARACTER +23162 V BBNF: BSS 1 /0 IF DDT MESS FROM BBN + + LEV CON +23163 024052 C LDIN: DIN /DDT INPUT CHAR ROUTINE +23164 024163 C LDOT: DOUT /DDT OUTPUT CHAR ROUTINE + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 197 IMP,3050,IMP 7:20 PM 9/16/1973 + + /UTILITY SUBROUTINES AND STUFF + + LEV BCK LCK ALL +23165 000000 7 0 CRLF: 0 +23166 005643 7 0 LDA (215) /TYPE A CARRIAGE RETURN +23167 121164 7 0 JST LDOT I +23170 005646 7 0 LDA (212) /AND A LINE FEED +23171 121164 7 0 JST LDOT I +23172 103165 7 0 JMP CRLF I + +23173 000000 7 0 TAB: 0 +23174 005647 7 0 LDA (240) /TYPE THREE SPACES +23175 121164 7 0 JST LDOT I +23176 121164 7 0 JST LDOT I +23177 121164 7 0 JST LDOT I +23200 103173 7 0 JMP TAB I + +23201 000000 7 0 GP: 0 /GET A PARAMETER +23202 007145 7 0 ANA PRS +23203 101040 7 0 DSNZ: SNZ /WAS PARAM SUPPLIED? +23204 025201 7 0 IRS GP /NO, SKIP +23205 045144 7 0 LDA PAR1 X /YES, RETURN VALUE +23206 103201 7 0 JMP GP I + +23207 000000 7 0 GP1: 0 /GET PARAMETER 1 +23210 072113 7 0 LDX ZERO +23211 004114 7 0 LDA ONE +23212 021201 7 0 JST GP +23213 025207 7 0 IRS GP1 /GOT VALUE, GIVE SKIP RETURN +23214 103207 7 0 JMP GP1 I + +23215 000000 7 0 CSL: 0 /COMBINE IN A SYLLABLE +23216 140040 7 0 CRA +23217 027146 7 0 IMA SYL +23220 100000 7 0 CSLX: SKP /SKP (DEFAULT) MEANS DO ADDITION +23221 140407 7 0 TCA /ELSE DO SUBTRACTION +23222 015144 7 0 ADD PAR1 /COMBINE WITH PARAM 1 +23223 011144 7 0 STA PAR1 /ACCUMULATE IN PARAM 1 +23224 004112 7 0 LDA SIGN +23225 011220 7 0 STA CSLX /RESET +/- FLAG +23226 103215 7 0 JMP CSL I + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 198 IMP,3050,IMP 7:20 PM 9/16/1973 + +23227 000000 7 0 PAC: 0 /PRINT ADDRESS AND CONTENTS +23230 140100 7 0 SSP +23231 011244 7 0 STA OPN /SAVE ADDRESS OF REG TO BE PRINTE[ +23232 021165 7 0 JST CRLF /TYPE A CR - LF +23233 005244 7 0 LDA OPN +23234 021302 7 0 JST OPT /TYPE THE ADDRESS IN OCTAL +23235 005650 7 0 LDA (257) /TYPE A / +23236 121164 7 0 JST LDOT I +23237 021207 7 0 JST GP1 +23240 025145 7 0 IRS PRS +23241 005244 7 0 LDA OPN +23242 021244 7 0 JST OPN /OPEN REG AND TYPE CONTENTS +23243 103227 7 0 JMP PAC I + +23244 000000 7 0 OPN: 0 /OPEN A REGISTER AND TYPE ITS CONT 1 +23245 140100 7 0 SSP +23246 011151 7 0 STA OPEN +23247 021207 7 0 JST GP1 +23250 003253 7 0 JMP OPN1 /NO ARG, DON'T RESET . +23251 005151 7 0 LDA OPEN +23252 011150 7 0 STA PT +23253 021173 7 0 OPN1: JST TAB +23254 073151 7 0 LDX OPEN +23255 044000 7 0 LDA 0 X +23256 021302 7 0 JST OPT +23257 021173 7 0 JST TAB +23260 103244 7 0 JMP OPN I + +23261 000000 7 0 CLS: 0 /CLOSE A REGISTER +23262 005651 7 0 LDA (JMP DIG1) +23263 011355 7 0 STA DIG +23264 021215 7 0 JST CSL +23265 005151 7 0 LDA OPEN +23266 101400 7 0 SMI +23267 021207 7 0 JST GP1 +23270 003277 7 0 JMP CLS1 /NO NEW CONTENTS FOR THE REG +23271 011147 7 0 STA LAST +23272 004114 7 0 LDA ONE /REAL OVERRIDE NEEDED +23273 021126 7 0 JST SS4ON +23274 005147 7 0 LDA LAST +23275 073151 7 0 LDX OPEN +23276 050000 7 0 STA 0 X +23277 140500 7 0 CLS1: SSM +23300 011151 7 0 STA OPEN +23301 103261 7 0 JMP CLS I + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 199 IMP,3050,IMP 7:20 PM 9/16/1973 + +23302 000000 7 0 OPT: 0 +23303 011147 7 0 STA LAST +23304 000201 7 0 IAB +23305 072125 7 0 LDX MINUS5 +23306 004121 7 0 LDA MINUS1 +23307 011333 7 0 STA OPTT +23310 005652 7 0 LDA (130) +23311 041077 7 0 LLL 1 +23312 023653 7 0 OPT1: CAS (260) /ZERO? +23313 100000 7 0 SKP +23314 003326 7 0 JMP OPT4 /SEE IF WE SHOULD SUPRESS IT +23315 025333 7 0 IRS OPTT +23316 101000 7 0 DNOP: NOP +23317 121164 7 0 OPT3: JST LDOT I +23320 005654 7 0 OPT2: LDA (26) +23321 041075 7 0 LLL 3 +23322 024000 7 0 IRS 0 +23323 003312 7 0 JMP OPT1 +23324 121164 7 0 JST LDOT I /ALWAYS PRINT LOWEST ORDER DIGIT +23325 103302 7 0 JMP OPT I +23326 025333 7 0 OPT4: IRS OPTT +23327 003317 7 0 JMP OPT3 +23330 004121 7 0 LDA MINUS1 /SUPRESS A ZERO +23331 011333 7 0 STA OPTT +23332 003320 7 0 JMP OPT2 +23333 7 0 OPTT: BSS 1 + +23334 021173 7 0 ASCOUT: JST TAB +23335 005147 7 0 LDA LAST +23336 141140 7 0 ICL +23337 121164 7 0 JST LDOT I +23340 005147 7 0 LDA LAST +23341 141050 7 0 CAL +23342 003136 7 0 JMP RUB1 + +23343 021215 7 0 COM: JST CSL /, DISPATCH +23344 140040 7 0 CRA +23345 027144 7 0 IMA PAR1 +23346 027143 7 0 IMA PAR1-1 +23347 027142 7 0 IMA PAR1-2 +23350 027141 7 0 IMA PAR1-3 +23351 005145 7 0 LDA PRS +23352 041477 7 0 LGL 1 +23353 011145 7 0 STA PRS +23354 003110 7 0 JMP LSE + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 200 IMP,3050,IMP 7:20 PM 9/16/1973 + + /DISPATCHER ROUTINES +23355 7 0 DIG: BSS 1 /JMP DIG1 OR NOP +23356 015146 7 0 ADD SYL +23357 015146 7 0 ADD SYL +23360 040175 7 0 DIG1: LRS 3 /DIGITS DISPATCH +23361 015146 7 0 ADD SYL +23362 041175 7 0 LLS 3 +23363 017655 7 0 SUB (60) +23364 011146 7 0 DIG2: STA SYL +23365 021207 7 0 JST GP1 +23366 025145 7 0 IRS PRS +23367 003110 7 0 JMP LSE + +23370 005316 7 0 DECIN: LDA DNOP +23371 011355 7 0 STA DIG +23372 003110 7 0 JMP LSE + +23373 021215 7 0 EQS: JST CSL /EQUALS DISPATCH +23374 005144 7 0 LDA PAR1 +23375 021302 7 0 JST OPT +23376 003137 7 0 JMP RUB2 + +23377 021215 7 0 PLUS: JST CSL /ADDITION DISPATCH +23400 003110 7 0 JMP LSE + +23401 021215 7 0 MIN: JST CSL /MINUS DISPATCH +23402 005316 7 0 LDA DNOP +23403 011220 7 0 STA CSLX +23404 003110 7 0 JMP LSE + +23405 005150 7 0 PTOP: LDA PT /. DISPATCH +23406 003364 7 0 JMP DIG2 + +23407 073146 7 0 STAR: LDX SYL /* DISPATCH +23410 044000 7 0 LDA 0 X +23411 003364 7 0 JMP DIG2 + +23412 005147 7 0 BARR: LDA LAST / DISPATCH +23413 003364 7 0 JMP DIG2 + +23414 005656 7 0 BOP: LDA (IHTT) /HOST OUTPUT TIMER +23415 003364 7 0 JMP DIG2 /FOR WBB - HOST INTERFACE DEBUG + +23416 105657 7 0 TOP: LDA (WHOTTY) I /TTY OUTPUT SOURCE +23417 003364 7 0 JMP DIG2 /FOR NCC OPS- WHO IS TYPING ON TTY + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 201 IMP,3050,IMP 7:20 PM 9/16/1973 + +23420 021215 7 0 SLH: JST CSL // DISPATCH +23421 021207 7 0 JST GP1 +23422 005147 7 0 LDA LAST +23423 021244 7 0 SLH2: JST OPN +23424 003104 7 0 JMP CLSE + +23425 021215 7 0 BS: JST CSL /BACKSLASH DISPATCH +23426 021207 7 0 JST GP1 +23427 005147 7 0 LDA LAST +23430 011147 7 0 STA LAST +23431 007660 7 0 ANA (1000) /GET PAGE BIT +23432 100040 7 0 SZE /PAGE 0? +23433 005150 7 0 LDA PT /NO, THIS PAGE +23434 013147 7 0 ERA LAST +23435 007661 7 0 ANA (77000) +23436 013147 7 0 ERA LAST +23437 003423 7 0 JMP SLH2 + +23440 021261 7 0 UA: JST CLS /- DISPATCH +23441 004121 7 0 LDA MINUS1 +23442 003445 7 0 JMP CR1 + +23443 021261 7 0 CR: JST CLS /CARRIAGE RETURN DISPATCH +23444 004114 7 0 LDA ONE +23445 015150 7 0 CR1: ADD PT +23446 011150 7 0 STA PT +23447 021227 7 0 JST PAC +23450 003104 7 0 JMP CLSE + +23451 121163 7 0 ASCIN: JST LDIN I +23452 141240 7 0 ICR +23453 011147 7 0 STA LAST +23454 121163 7 0 JST LDIN I +23455 013147 7 0 ERA LAST +23456 011147 7 0 STA LAST +23457 003364 7 0 JMP DIG2 + +23460 021215 7 0 S: JST CSL /S DISPATCH +23461 021207 7 0 JST GP1 +23462 100000 7 0 SKP +23463 011157 7 0 STA SP +23464 004114 7 0 LDA ONE /REAL OVERRIDE, NOT JUST BBNF +23465 021126 7 0 JST SS4ON +23466 072122 7 0 LDX MINUS2 +23467 004117 7 0 LDA FOUR +23470 021201 7 0 JST GP +23471 011160 7 0 STA SX +23472 072121 7 0 LDX MINUS1 +23473 004115 7 0 LDA TWO +23474 021201 7 0 JST GP +23475 101000 7 0 NOP +23476 073160 7 0 LDX SX +23477 103157 7 0 JMP SP I + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 202 IMP,3050,IMP 7:20 PM 9/16/1973 + +23500 021126 7 0 Z: JST SS4ON /A NOT ZERO - REAL OVERRIDE +23501 005662 7 0 LDA (JMP Z1) +23502 003513 7 0 JMP SCH1 +23503 005154 7 0 Z1: LDA VAL +23504 050000 7 0 STA 0 X +23505 003553 7 0 JMP SCH2 + +23506 005526 7 0 W: LDA DSKP +23507 003513 7 0 JMP SCH1 /W DISPATCH +23510 005570 7 0 EQ: LDA DSZE +23511 003513 7 0 JMP SCH1 /E DISPATCH +23512 005203 7 0 NEQ: LDA DSNZ /N DISPATCH +23513 011546 7 0 SCH1: STA SXEC /SET UP TEST +23514 072123 7 0 LDX MINUS3 +23515 004751 7 0 LDA TEN +23516 021201 7 0 JST GP +23517 011156 7 0 STA SMSK /FIRST PARAM - MASK +23520 072122 7 0 LDX MINUS2 +23521 004117 7 0 LDA FOUR +23522 021201 7 0 JST GP +23523 011154 7 0 STA VAL /SECOND PARAM - VALUE +23524 021215 7 0 JST CSL +23525 021207 7 0 JST GP1 +23526 100000 7 0 DSKP: SKP +23527 011153 7 0 STA DHI /FOURTH PARAM - HI BOUND +23530 072121 7 0 LDX MINUS1 +23531 004115 7 0 LDA TWO +23532 021201 7 0 JST GP +23533 011152 7 0 STA DLO /THIRD PARAM - LO BOUND +23534 005152 7 0 LDA DLO +23535 017153 7 0 SUB DHI +23536 016114 7 0 SUB ONE +23537 011155 7 0 STA CNT /LEAVE COUNT IN CNT +23540 101400 7 0 SMI +23541 003135 7 0 JMP RUB /INVERTED BLOCK +23542 073152 7 0 LDX DLO +23543 044000 7 0 SCH3: LDA 0 X +23544 013154 7 0 ERA VAL /COMPARE +23545 007156 7 0 ANA SMSK /MASK OFF BITS TO BE IGNORED +23546 7 0 SXEC: BSS 1 /TEST - SET UP BY CALLS +23547 003553 7 0 JMP SCH2 /FAILURE +23550 004000 7 0 LDA 0 +23551 021227 7 0 JST PAC +23552 073151 7 0 LDX OPEN +23553 024000 7 0 SCH2: IRS 0 +23554 025155 7 0 IRS CNT +23555 003543 7 0 JMP SCH3 +23556 003076 7 0 JMP DCLR + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 203 IMP,3050,IMP 7:20 PM 9/16/1973 + +23557 021126 7 0 DOWNM: JST SS4ON /A NOT ZERO +23560 021215 7 0 JST CSL /S DISPATCH +23561 021207 7 0 JST GP1 +23562 003135 7 0 JMP RUB /MUST HAVE SS4 ON AND GIVE A PARAM +23563 120672 7 0 JST DODXA I RET BCK +23564 121663 7 JST (IHDOWN) I /TELL ALL HOSTS IMP GOING DOWN +23565 000013 7 EXA +23566 003076 7 JMP DCLR + + LCK ALL +23567 004473 7 0 OVRD: LDA OVRDF /O DISPATCH +23570 100040 7 0 DSZE: SZE +23571 003575 7 0 JMP OVRD1 /LEAVING OVERRIDE MODE +23572 005162 7 0 LDA BBNF /FROM BBN +23573 021126 7 0 JST SS4ON +23574 140040 7 0 CRA /THEN YOU CAN ENTER OVERRIDE +23575 013664 7 0 OVRD1: ERA (20) +23576 010473 7 0 STA OVRDF +23577 040677 7 0 ARR 1 +23600 013665 7 0 ERA (306) /MAKE AN N OR AN F +23601 121164 7 0 JST LDOT I /TYPE ON OR OFF +23602 003076 7 0 JMP DCLR + +23603 021215 7 0 C: JST CSL +23604 021207 7 0 JST GP1 /CROSSPATCH +23605 003135 7 0 JMP RUB +23606 007666 7 0 ANA (0 0 177777"X"HICODE) +23607 013667 7 0 ERA (PRIBIT 0 FORIMP) +23610 111670 7 0 STA (HED0) I /SET "FOP IMP" BIT +23611 003076 7 0 JMP DCLR + +23612 021215 7 0 H: JST CSL /SET UP A HEADER +23613 072121 7 0 LDX MINUS1 +23614 004115 7 0 LDA TWO +23615 021201 7 0 JST GP +23616 111671 7 0 STA (MHD0) I +23617 021207 7 0 JST GP1 +23620 100000 7 0 SKP +23621 111672 7 0 STA (MHD1) I +23622 003076 7 0 JMP DCLR + +23623 021126 7 0 QDSP: JST SS4ON +23624 005632 7 0 LDA QPTR /QUIET MODE CONTROL +23625 027164 7 0 IMA LDOT +23626 011632 7 0 STA QPTR +23627 003076 7 0 JMP DCLR + +23630 000000 7 0 QNUL: 0 /NULL SUBROUTINE +23631 103630 7 0 JMP .-1 I + LEV VAR +23632 V QPTR: BSS 1 + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 204 IMP,3050,IMP 7:20 PM 9/16/1973 + +23633 023046 C LEV CON CONSTANTS +23634 023054 C +23635 023630 C +23636 000177 C +23637 000200 C +23640 024163 C +23641 024052 C +23642 024157 C +23643 000215 C +23644 024400 C +23645 000243 C +23646 000212 C +23647 000240 C +23650 000257 C +23651 003360 C +23652 000130 C +23653 000260 C +23654 000026 C +23655 000060 C +23656 016306 C +23657 025506 C +23660 001000 C +23661 077000 C +23662 003503 C +23663 003525 C +23664 000020 C +23665 000306 C +23666 170377 C +23667 140000 C +23670 025165 C +23671 025166 C +23672 025167 C +02432 176700 C PAGEND 23,UNCON,4 + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 205 IMP,3050,IMP 7:20 PM 9/16/1973 + + LEV BCK +24012 120666 7 DIN4: JST SUCK I +24013 140500 7 SSM 0"A"PRIBIT +24014 011050 7 STA DSRC +24015 007500 7 ANA (FRMIMP 0 SRCEHI) +24016 013501 7 ERA (FRMIMP 0 BBNIMP) +24017 100040 7 SZE /SET FLAG IF MESS FROM BBN IMP TTY +24020 013502 7 ERA (0 0 BBNIMP"X"BBNTIP) +24021 100040 7 SZE /SET FLAG IF MESS FROM BBN TIP TTY +24022 013503 7 ERA (FRMIMP 0 BBNTIP"X"PDP1D) +24023 111504 7 STA (BBNF) I /SET FLAG IF MESS FROM BBN IMP HOST +24024 120666 7 JST SUCK I +24025 011051 7 STA DSRC+1 +24026 120666 7 DIN1: JST SUCK I +24027 003040 7 JMP DIN2 +24030 011047 7 STA DINW +24031 141050 7 CAL +24032 101040 7 SNZ +24033 003036 7 JMP DIN3 /NOTHING AT ALL IN THIS WORD +24034 005047 7 LDA DINW +24035 021076 7 JST DINR +24036 025067 7 DIN3: IRS DEND /HAVE OUTPUT CLOSE OFF THEIR MESSAG1 +24037 003012 7 JMP DIN4 /GO BACK FOR NEXT MESSAGE + +24040 011047 7 DIN2: STA DINW /FEED DDT A WORD +24041 021076 7 JST DINR +24042 005047 7 LDA DINW +24043 141340 7 ICA +24044 021076 7 JST DINR +24045 003026 7 JMP DIN1 + + LEV VAR +24046 V DINC: BSS 1 +24047 V DINW: BSS 1 +24050 V DSRC: BSS 2 /DDT DEST/SOURCE + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 206 IMP,3050,IMP 7:20 PM 9/16/1973 + + LEV BCK +24052 000000 7 DIN: 0 /DDT CALLS HERE TO GET A CHARACTER +24053 072114 7 DIN7: LDX ONE +24054 001001 7 INH ALL +24055 120672 7 0 JST DODXA I RET BCK +24056 100000 7 SKP +24057 120665 7 DIN8: JST DOZE I +24060 140040 7 CRA +24061 027067 7 IMA DEND /TIME TO END A MESSAGE? +24062 101040 7 SNZ +24063 003070 7 JMP DIN9 /NO +24064 005505 7 LDA (DIN7) /CLOSE A MESSAGE +24065 011163 7 STA DOUT +24066 003116 7 JMP DOT2 +24067 7 DEND: BSS 1 + +24070 027046 7 DIN9: IMA DINC /INPUT CHAR READY? +24071 101040 7 SNZ +24072 003057 7 JMP DIN8 +24073 001001 7 INH ALL +24074 000013 7 0 EXA +24075 103052 7 0 JMP DIN I + + LEV BCK +24076 000000 7 DINR: 0 /ROUTINE CALLS HERE TO FEED A CHAR +24077 101400 7 SMI +24100 103076 7 JMP DINR I +24101 140100 7 SSP +24102 141140 7 ICL +24103 100040 7 SZE +24104 003110 7 JMP DINA +24105 010472 7 STA DDTI /WE ARE GIVING DDT A "BREAK" +24106 005335 7 LDA LRET +24107 011052 7 STA DIN +24110 011046 7 DINA: STA DINC +24111 120667 7 JST WAIT I /LET DDT GRAB THE CHAR +24112 005046 7 LDA DINC +24113 100040 7 SZE +24114 003111 7 JMP .-3 +24115 103076 7 JMP DINR I + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 207 IMP,3050,IMP 7:20 PM 9/16/1973 + +24116 005207 7 DOT2: LDA DOTW /START HERE TO CLOSE OFF LAST MESSA[ +24117 073506 7 DOT5: LDX (100001) +24120 120664 7 JST JAM I +24121 004112 7 DOT6: LDA SIGN /START HERE WITH EMPTY WORLD +24122 021176 7 JST DOTR +24123 072114 7 LDX ONE +24124 005050 7 LDA DSRC /*SEND DEST HOST +24125 120664 7 JST JAM I /(=SOURCE OF LAST MESS RECVD) +24126 005051 7 LDA DSRC+1 /*SEND DEST LINK +24127 120664 7 JST JAM I /(=LINK OF LAST MESS RECVD) +24130 005507 7 LDA (-500.) /NUMBER OF WORDS PER MESSAGE +24131 011213 7 STA DCNT +24132 005210 7 LDA DOTA +24133 007510 7 ANA (177) +24134 000201 7 IAB +24135 041050 7 DOT3: LLL 24. +24136 013511 7 ERA (100200) +24137 021176 7 JST DOTR +24140 004472 7 LDA DDTI /DDT BEING INTERRUPTED? +24141 100040 7 SZE +24142 003152 7 JMP DOT4 /YES, SUPRESS OUTPUT +24143 000201 7 IAB +24144 072114 7 LDX ONE +24145 120664 7 JST JAM I /*SEND TWO CHARS PER WORD +24146 025213 7 IRS DCNT +24147 003154 7 JMP DOT7 +24150 004112 7 LDA SIGN +24151 003117 7 JMP DOT5 + +24152 005512 7 DOT4: LDA (LSE) +24153 011163 7 STA DOUT +24154 004112 7 DOT7: LDA SIGN +24155 021176 7 JST DOTR +24156 003135 7 JMP DOT3 + +24157 005335 7 DOTI1: LDA LRET +24160 011163 7 STA DOUT +24161 011067 7 STA DEND +24162 003121 7 JMP DOT6 + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 208 IMP,3050,IMP 7:20 PM 9/16/1973 + +24163 000000 7 DOUT: 0 /DDT CALLS HERE WITH A CHAR TO TYPE +24164 011210 7 STA DOTA +24165 007510 7 ANA (177) +24166 013207 7 ERA DOTW +24167 000201 7 IAB +24170 011211 7 STA DOTB +24171 033212 7 STX DOTX +24172 001001 7 INH ALL +24173 120672 7 0 JST DODXA I RET BCK +24174 072114 7 LDX ONE +24175 103176 7 JMP DOTR I + +24176 000000 7 DOTR: 0 /ROUTINES CALL HERE TO RETURN TO DD +24177 011207 7 STA DOTW +24200 005211 7 LDA DOTB +24201 000201 7 IAB +24202 005210 7 LDA DOTA +24203 073212 7 LDX DOTX +24204 001001 7 INH ALL +24205 000013 7 0 EXA +24206 103163 7 0 JMP DOUT I + + LEV VAR +24207 V DOTW: BSS 1 +24210 V DOTA: BSS 1 +24211 V DOTB: BSS 1 +24212 V DOTX: BSS 1 +24213 V DCNT: BSS 1 /NUMBER OF WORDS LEFT IN OUTPUT PAC + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 209 IMP,3050,IMP 7:20 PM 9/16/1973 + + LEV BCK LCK ALL +24214 005337 7 0 QP: LDA QPC1 /QUEUE PRINT +24215 011360 7 0 STA QT1 +24216 005340 7 0 QPQ1: LDA QPC2 +24217 015360 7 0 ADD QT1 +24220 011361 7 0 STA QT2 +24221 010000 7 0 STA 0 +24222 044000 7 0 LDA 0 X +24223 101040 7 0 SNZ +24224 003244 7 0 JMP QPQ3 +24225 121332 7 0 JST QPCR I +24226 004000 7 0 LDA 0 +24227 121333 7 0 JST QPOP I +24230 121334 7 0 JST QPTB I +24231 005513 7 0 LDA (-10) +24232 011362 7 0 STA QT3 +24233 073361 7 0 QPQ2: LDX QT2 +24234 044000 7 0 LDA 0 X +24235 101040 7 0 SNZ +24236 003244 7 0 JMP QPQ3 +24237 011361 7 0 STA QT2 +24240 121333 7 0 JST QPOP I +24241 121334 7 0 JST QPTB I +24242 025362 7 0 IRS QT3 +24243 003233 7 0 JMP QPQ2 +24244 025360 7 0 QPQ3: IRS QT1 +24245 003216 7 0 JMP QPQ1 +24246 005357 7 0 LDA QTB3 +24247 011360 7 0 STA QT1 + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 210 IMP,3050,IMP 7:20 PM 9/16/1973 + +24250 073360 7 0 QPB1: LDX QT1 +24251 045350 7 0 LDA QTB1+QTBL X +24252 011361 7 0 STA QT2 +24253 045357 7 0 LDA QTB2+QTBL X +24254 011362 7 0 STA QT3 +24255 073362 7 0 QPB2: LDX QT3 +24256 044000 7 0 LDA 0 X +24257 101040 7 0 SNZ +24260 003305 7 0 JMP QPB4 +24261 011363 7 0 STA QT4 +24262 005362 7 0 LDA QT3 +24263 010000 7 0 STA 0 +24264 101400 7 0 SMI +24265 003275 7 0 JMP QPB3 +24266 025362 7 0 IRS QT3 +24267 044001 7 0 LDA 1 X +24270 023506 7 0 CAS (100001) +24271 100000 7 0 SKP +24272 003305 7 0 JMP QPB4 +24273 017514 7 0 SUB (BUFE 0 I) +24274 011363 7 0 STA QT4 +24275 121332 7 0 QPB3: JST QPCR I +24276 005362 7 0 LDA QT3 +24277 140100 7 0 SSP +24300 121333 7 0 JST QPOP I +24301 121334 7 0 JST QPTB I +24302 005363 7 0 LDA QT4 +24303 121333 7 0 JST QPOP I +24304 121334 7 0 JST QPTB I +24305 025362 7 0 QPB4: IRS QT3 +24306 025361 7 0 IRS QT2 +24307 003255 7 0 JMP QPB2 +24310 025360 7 0 IRS QT1 +24311 003250 7 0 JMP QPB1 +24312 103335 7 0 JMP QPND I + +24313 073515 7 0 IP: LDX (-IPL) /INTERRUPT PRINT +24314 045400 7 0 IP1: LDA IPT+IPL X +24315 033360 7 0 STX QT1 +24316 121336 7 0 JST QPAC I /PRINT SOME KEY PARAMETERS +24317 073360 7 0 LDX QT1 +24320 024000 7 0 IRS 0 +24321 003314 7 0 JMP IP1 +24322 073516 7 0 LDX (STDIL-0-TASKIL) +24323 044104 7 0 IP2: LDA TASKIL+1 X +24324 033360 7 0 STX QT1 +24325 121336 7 0 JST QPAC I /PRINT ALL INTERRUPT ENTRANCES +24326 073360 7 0 LDX QT1 +24327 024000 7 0 IRS 0 +24330 003323 7 0 JMP IP2 +24331 103335 7 0 JMP QPND I + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 211 IMP,3050,IMP 7:20 PM 9/16/1973 + +24332 023165 7 0 QPCR: CRLF /QUEUE PRINT CONSTANTS AND VARIABLE: +24333 023302 7 0 QPOP: OPT +24334 023173 7 0 QPTB: TAB + LRET: /SAME AS QPND +24335 023076 7 0 QPND: DCLR +24336 023227 7 0 QPAC: PAC +24337 177727 7 0 QPC1: -QUEUEL +24340 000343 7 0 QPC2: QUEUEB+QUEUEL + +24341 177770 7 0 QTB1: -PPTL +24342 177770 7 0 -TH +24343 177770 7 0 -TH +24344 177730 7 0 -[CH"T"NACH] +24345 177774 7 0 -CH+0+1 +24346 177730 7 0 0 0 -2"T"COUNTL +24347 177720 7 0 -PLTNUM +24350 033457 7 0 QTB2: PPT +24351 013333 7 0 HISP +24352 016155 7 0 IHSP +24353 032030 7 0 I2MB0 +24354 100020 7 0 100020 +24355 000517 7 0 COUNTA +24356 033477 7 0 PLT + QTBL=QTB2-0-QTB1 +24357 177771 7 0 QTB3: -QTBL + + LEV VAR +24360 V QT1: BSS 1 +24361 V QT2: BSS 1 +24362 V QT3: BSS 1 +24363 V QT4: BSS 1 + + LEV CON +24364 000134 C IPT: PRIM /INTERRUPT PRINT LOCS +24365 000674 C MP +24366 012654 C OCHN +24367 012604 C I2MSB +24370 000675 C HIP +24371 013106 C HISB +24372 000676 C IHP +24373 016042 C IHSB +24374 020144 C TOK +24375 003412 C FAKENO +24376 004420 C BACKNO +24377 000111 C ADDRET + IPL=.-0-IPT + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 212 IMP,3050,IMP 7:20 PM 9/16/1973 + + + DDOK=100000 + /SIGNBIT ON (DDOK) ==> NON-PRIVELEGED DISPATCH + + LEV CON +24400 123076 C DTAB: DCLR+0+DDOK /@ +24401 123110 C LSE+0+DDOK /A +24402 023414 C BOP /B +24403 123603 C C+0+DDOK /C +24404 023370 C DECIN /D +24405 023510 C EQ /E +24406 123110 C LSE+0+DDOK /F +24407 123110 C LSE+0+DDOK /G +24410 123612 C H+0+DDOK /H +24411 024313 C IP /I +24412 023101 C LF /J - 12 - LINEFEED +24413 123110 C LSE+0+DDOK /K +24414 123612 C H+0+DDOK /L +24415 023443 C CR /M - 15 - CR +24416 023512 C NEQ /N +24417 123567 C OVRD+0+DDOK /O +24420 123110 C LSE+0+DDOK /P +24421 023623 C QDSP /Q +24422 123110 C LSE+0+DDOK /R +24423 023460 C S /S +24424 123416 C TOP+0+DDOK /T +24425 123110 C LSE+0+DDOK /U +24426 123110 C LSE+0+DDOK /V +24427 023506 C W /W +24430 123110 C LSE+0+DDOK /X +24431 123110 C LSE+0+DDOK /Y +24432 023500 C Z /Z +24433 123110 C LSE+0+DDOK /[ +24434 023425 C BS / +24435 123110 C LSE+0+DDOK /] +24436 023440 C UA /~ +24437 023412 C BARR / + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 213 IMP,3050,IMP 7:20 PM 9/16/1973 + +24440 123377 C PLUS+0+DDOK / +24441 024214 C QP /! +24442 023451 C ASCIN /" +24443 123110 C LSE+0+DDOK /# +24444 023557 C DOWNM /$ +24445 123110 C LSE+0+DDOK /% +24446 123110 C LSE+0+DDOK /& +24447 123110 C LSE+0+DDOK /' +24450 123110 C LSE+0+DDOK /( +24451 123110 C LSE+0+DDOK /) +24452 023407 C STAR /* +24453 123377 C PLUS+0+DDOK /+ +24454 123343 C COM+0+DDOK /, +24455 123401 C MIN+0+DDOK /- +24456 023405 C PTOP /. +24457 023420 C SLH // +24460 123355 C DIG+0+DDOK /0 +24461 123355 C DIG+0+DDOK /1 +24462 123355 C DIG+0+DDOK /2 +24463 123355 C DIG+0+DDOK /3 +24464 123355 C DIG+0+DDOK /4 +24465 123355 C DIG+0+DDOK /5 +24466 123355 C DIG+0+DDOK /6 +24467 123355 C DIG+0+DDOK /7 +24470 123355 C DIG+0+DDOK /8 +24471 123355 C DIG+0+DDOK /9 +24472 123110 C LSE+0+DDOK /: +24473 123110 C LSE+0+DDOK /; +24474 123110 C LSE+0+DDOK /< +24475 123373 C EQS+0+DDOK /= +24476 023334 C ASCOUT /> +24477 023135 C RUB /? - 177 - RUBOUT + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 214 IMP,3050,IMP 7:20 PM 9/16/1973 + +24500 040377 C LEV CON CONSTANTS +24501 040005 C +24502 000033 C +24503 040333 C +24504 023162 C +24505 024053 C +24506 100001 C +24507 177014 C +24510 000177 C +24511 100200 C +24512 023110 C +24513 177770 C +24514 100111 C +24515 177764 C +24516 177760 C +02433 174523 C PAGEND 24,UNCON,4 + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 215 IMP,3050,IMP 7:20 PM 9/16/1973 + + + TINT: LEV TTY /TTY INTERRUPT +00063 025061 0 STDIL/ TINT +25061 000000 0 TINT/ INT TTY +25062 011115 0 STA TINA /SAVE A REG +25063 070004 0 TTSRDY +25064 003077 0 JMP TTRT /NOT REALLY A TTY INTERRUPT +25065 140040 0 CRA +25066 022474 0 CAS TTFG /IS TTFG = -1,0,1? +25067 003112 0 JMP TIN1 /-1 WE JUST TYPED A BACKSLASH +25070 003104 0 JMP TIN2 / 0 NORMAL INTERRUPT +25071 030104 0 TTSOM / 1 WE MUST TYPE A BACKSLASH +25072 005511 0 LDA (334) +25073 170004 0 TTOTA +25074 003112 0 JMP TIN1 +25075 004121 0 LDA MINUS1 /SET TTFG TO -1 +25076 010474 0 TIN3: STA TTFG +25077 000043 0 TTRT: INK +25100 171020 0 OTK +25101 005115 0 LDA TINA /RESTORE A REG +25102 000401 0 ENB TTY +25103 103061 0 JMP TINT I + +25104 005503 0 TIN2: LDA OTGO /CHECK HALF-DUPLEX FLAG +25105 100040 0 SZE /ARE WE IN INPUT MODE? +25106 003112 0 JMP TIN1 /NO, THIS IS AN OUTPUT INTERRUPT +25107 131004 0 TTINAC /YES, GET INPUT CHAR +25110 003107 0 JMP .-1 +25111 011116 0 STA TTCR /SAVE IT +25112 030004 0 TIN1: TTSIM +25113 004114 0 LDA ONE /SET TTFG TO 1 +25114 003076 0 JMP TIN3 + LEV VAR +25115 V TINA: BSS 1 /TTY INT SAVED A REG +25116 V TTCR: BSS 1 /RAW TTY INPUT CHAR + + /OTGO IS THE STATE OF THE HALF-DUPLEX INTERFACE + /0=EXPECTING INPUT, 1=HAVE DONE OUTPUT + + /TTFG IS THE COMMUNICATION FLAG BETWEEN + /THE TTY INTERRUPT HANDLER AND THE BACKGROUND TTY PROCESSING + /AT INTERRUPT TIME: + /-1= LAST ACTION WAS TO TYPE A BACKSLASH, NOW 1=>TTFG + / 0= NORMAL - BACKGROUND IS READY FOR TTY INT, NOW 1=>TTFG + / 1= A SECOND TTY INT CAME IN BEFORE BACKGROUND CAUGHT UP + / SO TYPE A BACKSLASH, NOW -1=>TTFG + /AT BACKGROUND LEVEL: + /USE A CRA, IMA TTFG SEQUENCE TO INTERROGATE TTY + /0=>TTFG, USE CHAR IF TTFG WAS = 1 + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 216 IMP,3050,IMP 7:20 PM 9/16/1973 + + LEV BCK +25117 140040 7 TTYI: CRA /TELETYPE INPUT STARTS HERE +25120 011503 7 STA OTGO +25121 010673 7 STA HSFG +25122 011504 7 STA HSGO +25123 011163 7 STA TTCH +25124 111512 7 STA (DINC) I +25125 004106 7 LDA MINE +25126 013513 7 ERA (PRIBIT 0 FORIMP) +25127 111514 7 STA (DSRC) I +25130 012753 7 ERA C100 +25131 011165 7 STA HED0 +25132 005515 7 LDA (40) +25133 170020 7 SMK 20 /ENABLE TTY INTERRUPTS ONLY +25134 003174 7 JMP TTI3 /GO FIRE OFF A DUMMY MSG TO DDT + +25135 005170 7 IND1: LDA TTI2 +25136 011160 7 STA INDB +25137 000401 7 TTI1: ENB BCK +25140 072113 7 LDX ZERO +25141 120665 7 JST DOZE I /WAIT FOR NEXT INPUT CHAR +25142 005503 7 LDA OTGO /OUTPUT ACTIVE? +25143 100040 7 SZE +25144 003137 7 JMP TTI1 /YES +25145 001001 7 INH TTY +25146 026474 7 0 IMA TTFG /TTY HAVE SOMETHING FOR US?? +25147 101400 7 0 SMI /IF TTFG= -1, NO +25150 101040 7 0 SNZ /IF TTFG= 0, NO +25151 003137 7 0 JMP TTI1 /NO +25152 005116 7 0 LDA TTCR /IF TTFG= 1, YES +25153 007516 7 0 ANA (177) /PUT IN PARITY BIT +25154 013517 7 0 ERA (200) +25155 011163 7 0 STA TTCH +25156 000401 7 0 ENB BCK +25157 103160 7 JMP INDB I /GO PROCESS THE CHAR + +25160 000000 7 INDB: 0 /COME HERE TO GET NEXT CHAR FROM TT +25161 011164 7 STA TTIW /SAVE THE INPUT WORD SO FAR +25162 003137 7 JMP TTI1 + + LEV VAR +25163 V TTCH: BSS 1 /RAW TTY INPUT CHAR+PARITY BIT +25164 V TTIW: BSS 1 +25165 V HED0: BSS 1 /CROSSPATCH HEADER +25166 V MHD0: BSS 1 /MESSAGE HEADER +25167 V MHD1: BSS 1 + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 217 IMP,3050,IMP 7:20 PM 9/16/1973 + + MSGT=273 /SEMI + NUMB=272 /COLON + LEV BCK +25170 025171 7 TTI2: .+1 /PLACE TO START BUILDING NEW MESSAGI +25171 023520 7 CAS (MSGT) /IS IT A MESSAGE INITIATOR? +25172 100000 7 SKP +25173 003221 7 JMP MSG /YES + + /SEND A SINGLE CHAR MESSAGE +25174 005165 7 TTI3: LDA HED0 /*SEND CROSSPATCH HEADER +25175 120664 7 JST JAM I +25176 140040 7 CRA /*SEND ON LINK ZERO +25177 120664 7 JST JAM I +25200 005163 7 LDA TTCH +25201 013517 7 ERA (200) +25202 100040 7 SZE /IS THE CHAR TO SEND A BREAK? +25203 003207 7 JMP TTI5 /NO +25204 004106 7 LDA MINE /YES, RESET CROSSPATCH HEADER TO [ 1 +25205 013521 7 ERA (PRIBIT 0 FORIMP 100) +25206 011165 7 STA HED0 /DDT AT SELF - PRIORITY +25207 005163 7 TTI5: LDA TTCH +25210 140500 7 SSM +25211 141340 7 ICA +25212 011164 7 STA TTIW +25213 140040 7 CRA +25214 011504 7 STA HSGO +25215 005164 7 MSG2: LDA TTIW /*SEND 1 CHAR MESSAGE +25216 072112 7 LDX SIGN /CLOSE OFF THE MESSAGE +25217 120664 7 JST JAM I +25220 003135 7 JMP IND1 + + /SEND A SEMICOLON MESSAGE - MULTI-CHARACTER +25221 004673 7 MSG: LDA HSFG /SEND A MESSAGE +25222 011504 7 STA HSGO +25223 005166 7 LDA MHD0 /*SEND MESSAGE HOST +25224 120664 7 JST JAM I +25225 005167 7 LDA MHD1 /*SEND MESSAGE LINK +25226 120664 7 JST JAM I +25227 004112 7 MSG0: LDA SIGN +25230 021277 7 JST MSG1 /GET ONE CHAR +25231 140500 7 SSM /PUT IN PARITY +25232 141340 7 ICA /SAVE +25233 021277 7 JST MSG1 /GET OTHER CHAR +25234 013517 7 ERA (200) /PUT IN PARITY +25235 013164 7 ERA TTIW +25236 120664 7 JST JAM I /*SEND NEXT TWO CHARS +25237 003227 7 JMP MSG0 /GO BACK FOR MORE + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 218 IMP,3050,IMP 7:20 PM 9/16/1973 + +25240 140040 7 MSG3: CRA /BUILD A NUMBER +25241 021277 7 MSG4: JST MSG1 /GET NEXT CHAR +25242 023522 7 CAS (215) /CR? +25243 100000 7 SKP /NO +25244 003253 7 JMP MSG5 /YES, END OF THE NUMBER +25245 001001 7 INH ALL /USING B REG - MUST LOCK INTS +25246 040075 7 0 LRL 3 +25247 005164 7 0 LDA TTIW +25250 041075 7 0 LLL 3 +25251 000401 7 0 ENB BCK +25252 003241 7 JMP MSG4 + +25253 070104 7 MSG5: TTSNBZ /ECHO CR WITH A LF +25254 003274 7 JMP MSG6 /FORGET IT +25255 030104 7 TTSOM +25256 005523 7 LDA (212) +25257 170004 7 TTOTA +25260 003257 7 JMP .-1 +25261 025503 7 IRS OTGO +25262 120665 7 MSG7: JST DOZE I /WAIT FOR CHAR TO TYPE OUT +25263 140040 7 CRA +25264 026474 7 IMA TTFG +25265 101040 7 SNZ /HAS TTY INTERRUPTED? +25266 003262 7 JMP MSG7 /NOT YET, WAIT +25267 005503 7 LDA OTGO /NOW UNSTEP OUTPUT FLAG +25270 016114 7 SUB ONE +25271 100400 7 SPL +25272 140040 7 CRA +25273 011503 7 STA OTGO +25274 005164 7 MSG6: LDA TTIW /ADD NUMBER TO MESSAGE +25275 120664 7 JST JAM I +25276 003227 7 JMP MSG0 + +25277 000000 7 MSG1: 0 /SUBR TO GET NEXT CHAR FOR MESSAGE +25300 021160 7 JST INDB /GET THE CHAR +25301 023520 7 CAS (MSGT) /IS IT MESSAGE TERMINATOR? +25302 100000 7 SKP /NO +25303 003215 7 JMP MSG2 /YES, DONE - LEAP INTO INDB CODE +25304 023524 7 CAS (NUMB) /IS IT NUMBER INDICATOR? +25305 103277 7 JMP MSG1 I /NO, RETURN WITH CHAR +25306 003240 7 JMP MSG3 /YES, PUT AN OCTAL NUMBER IN THE ME +25307 103277 7 JMP MSG1 I /NO, RETURN WITH CHAR + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 219 IMP,3050,IMP 7:20 PM 9/16/1973 + +25310 072113 7 TTO0: LDX ZERO /TELETYPE OUTPUT ROUTINES +25311 033505 7 STX TTNM /CLEAR FLAG +25312 120666 7 JST SUCK I /WAIT FOR SOME OUTPUT TO HAPPEN +25313 025503 7 IRS OTGO /GRAB THE TTY +25314 011501 7 STA TTOW +25315 007525 7 ANA (SRCEHI) +25316 022106 7 CAS MINE /NOT IF FROM US +25317 022752 7 CAS C77 /NOT IF NON-TTY +25320 003323 7 JMP TTO01 +25321 101000 7 NOP +25322 011506 7 STA WHOTTY /LAST FOREIGN IMP TTY TO SEND TO TT' +25323 120667 7 TTO01: JST WAIT I +25324 005501 7 LDA TTOW +25325 041475 7 LGL 3 0"A"FOROCT +25326 011502 7 STA OCTL +25327 101400 7 SMI +25330 005504 7 LDA HSGO + /MAKE A SKP TO SEE ALL I2H MESSAGES - RFNMS FOR SINGLE CHA[ +25331 101040 7 SNZ +25332 003353 7 JMP TTO2 +25333 005522 7 LDA (215) +25334 021450 7 JST SEND +25335 005523 7 LDA (212) +25336 021450 7 JST SEND +25337 005523 7 LDA (212) +25340 021450 7 JST SEND +25341 005501 7 LDA TTOW +25342 021412 7 JST OCTO +25343 120666 7 JST SUCK I +25344 100000 7 SKP +25345 003350 7 JMP TTO7 +25346 021412 7 JST OCTO +25347 003356 7 JMP TTO3 + +25350 025505 7 TTO7: IRS TTNM /SET END FLAG +25351 021412 7 JST OCTO +25352 003370 7 JMP TTO5 + +25353 120666 7 TTO2: JST SUCK I /FROM DDT: SKIP OVER REST OF LEAD[ +25354 100000 7 SKP +25355 003437 7 JMP TTO8 +25356 120666 7 TTO3: JST SUCK I +25357 003374 7 JMP TTO4 /MORE MESSAGE +25360 025505 7 IRS TTNM +25361 011501 7 STA TTOW /DONE +25362 141050 7 CAL +25363 101040 7 SNZ +25364 003370 7 JMP TTO5 +25365 005501 7 LDA TTOW /GET LAST CHAR +25366 141140 7 ICL +25367 021450 7 JST SEND +25370 140040 7 TTO5: CRA +25371 011503 7 STA OTGO +25372 011502 7 STA OCTL +25373 003310 7 JMP TTO0 + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 220 IMP,3050,IMP 7:20 PM 9/16/1973 + + LEV BCK +25374 011501 7 TTO4: STA TTOW /SEND ANOTHER WORD OF THE MESSAGE +25375 005502 7 LDA OCTL +25376 100400 7 SPL +25377 003407 7 JMP TTO6 +25400 005501 7 LDA TTOW +25401 141140 7 ICL +25402 021450 7 JST SEND +25403 005501 7 LDA TTOW +25404 141050 7 CAL +25405 021450 7 JST SEND +25406 003356 7 JMP TTO3 + +25407 005501 7 TTO6: LDA TTOW +25410 021412 7 JST OCTO +25411 003356 7 JMP TTO3 + +25412 000000 7 OCTO: 0 /OCTAL OUTPUT +25413 000201 7 IAB +25414 004126 7 LDA MINUS6 +25415 011507 7 STA OCO1 +25416 005526 7 LDA (130) +25417 041077 7 LLL 1 +25420 000201 7 OCO2: IAB +25421 011510 7 STA OCO3 +25422 000201 7 IAB +25423 021450 7 JST SEND +25424 005510 7 LDA OCO3 +25425 000201 7 IAB +25426 005527 7 LDA (26) +25427 041075 7 LLL 3 +25430 025507 7 IRS OCO1 +25431 003420 7 JMP OCO2 +25432 005522 7 LDA (215) +25433 021450 7 JST SEND +25434 005523 7 LDA (212) +25435 021450 7 JST SEND +25436 103412 7 JMP OCTO I + +25437 025505 7 TTO8: IRS TTNM +25440 005501 7 LDA TTOW +25441 007530 7 ANA (IHCODE) +25442 013531 7 ERA (CINCTR) +25443 100040 7 SZE /BLOCKED OR LOST? +25444 003370 7 JMP TTO5 /NO +25445 005511 7 LDA (334) /YES, TYPE A BACKSLASH SINCE OUR ME +25446 021450 7 JST SEND +25447 003370 7 JMP TTO5 + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 221 IMP,3050,IMP 7:20 PM 9/16/1973 + +25450 000000 7 SEND: 0 /SUBR TO TYPE OUT A CHAR +25451 023517 7 CAS (200) /'200 BIT SET? +25452 101000 7 NOP +25453 100000 7 SKP +25454 103450 7 JMP SEND I /NO, IGNORE THE CALL +25455 072113 7 LDX ZERO +25456 070104 7 TTSNBZ +25457 003472 7 JMP SND2 /INTERRUPTING OUTPUT! +25460 030104 7 TTSOM +25461 170004 7 TTOTA +25462 003472 7 JMP SND2 +25463 120667 7 SND3: JST WAIT I /WAIT FOR CHAR TO GO OUT +25464 140040 7 CRA +25465 026474 7 IMA TTFG +25466 101400 7 SMI +25467 101040 7 SNZ +25470 003463 7 JMP SND3 +25471 103450 7 JMP SEND I + +25472 005505 7 SND2: LDA TTNM /AT END OF MSG? +25473 100040 7 SZE +25474 003370 7 JMP TTO5 /YES, NO MSG TO SKIP +25475 120666 7 JST SUCK I /SKIP REST OF MESSAGE +25476 003472 7 JMP SND2 +25477 010472 7 STA DDTI +25500 003370 7 JMP TTO5 /AND CONTINUE LOOKING FOR A NEW MES + + LEV VAR +25501 V TTOW: BSS 1 +25502 V OCTL: BSS 1 +25503 V OTGO: BSS 1 +25504 V HSGO: BSS 1 +25505 V TTNM: BSS 1 /END OF MSG IF NON ZERO +25506 000000 V WHOTTY: 0 /LAST FOREIGN TYPIST ON THIS TTY +25507 V OCO1: BSS 1 +25510 V OCO3: BSS 1 + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 222 IMP,3050,IMP 7:20 PM 9/16/1973 + +25511 000334 C LEV CON CONSTANTS +25512 024046 C +25513 140000 C +25514 024050 C +25515 000040 C +25516 000177 C +25517 000200 C +25520 000273 C +25521 140100 C +25522 000215 C +25523 000212 C +25524 000272 C +25525 000377 C +25526 000130 C +25527 000026 C +25530 007400 C +25531 004400 C +02434 174532 C PAGEND 25,UNCON + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 223 IMP,3050,IMP 7:20 PM 9/16/1973 + + + + /NEW ROUTING + /THESE ROUTINES BUILD TWO MAIN TABLES + + + /RUT - ROUTE USE TABLE, THE BEST LINE DIRECTORY + /RST - ROUTE SEND TABLE, THE HOPS/DELAY INFORMATION UPDATE M[ + /THE NEW VALUE OF HOPS AND DELAY ON THE BEST LINES FOR EAC1 , + /RSTN - THE RST NEW TABLE + / THE IDENTITY OF THE BEST LINE FOR EACH IS KEPT IN + /RUTW - THE RUT WORKING TABLE + + /A NAMING CONVENTION -- TAGS LIKE RST.N AND RST.W ARE INDIRET + /POINTERS [FOR '.' READ "POINT"], POST-INDEXED BY NEGATIVE 1 + /RST.N IS THUS THE RST POINTER TO THE NEW TABLE + + /BITS IN RUT + RUTDED=100000 /THIS IMP IS DOWN,UNREACHABLE OR NO1 + RUTGOD=60000 /GOING-DOWN DELAY CNTR - EVERY 4TH ] + RUTGD1=20000 /LOW ORDER BIT OF RUTGOD + RUTHPC=17400 /LINE # +1 OF SHORTEST HOP PATH + RUTCMU=340 /COMING-UP DELAY COUNTER - EVERY 8T1 + RUTCM1=40 /LOW ORDER BIT OF RUTCMU + RUTDLC=37 /LINE # +1 OF BEST DELAY PATH + RUTUS=0 + + /BITS IN RUTW + RUTHPH=60000 /HOLD-DOWN TIMER FOR MIN HOP PATH + RTHPH1=20000 /LOW ORDER BIT OF RUTHPH + RUTDLH=140 /HOLD-DOWN TIMER FOR MIN DELAY PATH + RTDLH1=40 /LOW ORDER BIT OF RUTDLH + + /BITS IN RST, RSTN + HOPS=174000 /5 BITS OF HOP COUNT + HOPS1=4000 /LOW ORDER BIT OF HOPS + DELS=3777 /11 BITS OF DELAY COUNT + + /BITS IN ROUTING MSG + /IN HEAD1 + RMSN=177400 /RM SERIAL # + RMSN1=400 /LOW-ORDER BIT IF SER # + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 224 IMP,3050,IMP 7:20 PM 9/16/1973 + + /RUTINI IS AN INITIALIZATION ROUTINE TO SET UP + /THE ROUTING TABLES + LEV BCK LCK INI +26070 000000 7 0 RUTINI: 0 +26071 005645 7 0 LDA (RST 0 NIMP X) +26072 010660 7 0 STA RST.O +26073 005646 7 0 LDA (RST1 0 NIMP X) +26074 010661 7 0 STA RST.F +26075 005647 7 0 LDA (RST2 0 NIMP X) +26076 010662 7 0 STA RST.N +26077 073346 7 0 LDX NEGIMP /LOOP OVER ALL IMPS +26100 005637 7 0 RUTINL: LDA CDEAD /(100000) +26101 050265 7 0 STA RUT+NIMP X 0"A"RUTDED +26102 140040 7 0 CRA +26103 051500 7 0 STA RUTW+NIMP X +26104 005640 7 0 LDA CMAXHD /(177777) +26105 110660 7 0 STA RST.O I +26106 110661 7 0 STA RST.F I +26107 110662 7 0 STA RST.N I +26110 024000 7 0 IRS 0 +26111 003100 7 0 JMP RUTINL +26112 072106 7 0 LDX MINE +26113 140040 7 0 CRA 0"A"RUTUS +26114 011644 7 0 STA RSTSN /START SER # AT 0 +26115 050165 7 0 STA RUT X /CLEAR RUT +26116 111650 7 0 STA (RST2 0 X) I /AND RSTN +26117 103070 7 0 JMP RUTINI I + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 225 IMP,3050,IMP 7:20 PM 9/16/1973 + + /RSTINP IS A ROUTINE TO COPY A RECIEVED ROUTING MESSAGE INTO + /RSTN, RSTW AND RUTW TABLES. + CHK=0 + LEV T.O +26120 000000 5 RSTINP: 0 +26121 033365 5 RSTCK1: K STX LINEX /SAVE LINE# +26122 011372 5 K STA RST.I /SAVE AC FLAG +26123 073342 5 K LDX RSTCKX /(RSTCK1-0-RSTCK2-1) +26124 140040 5 K CRA /CALCULATE CHECKSUM FOR THIS CODE +26125 055365 5 K ADD RSTCK2+1 X +26126 024000 5 K IRS 0 +26127 003125 5 K JMP .-2 +26130 100040 5 K SZE /DIFFERENT? + RELOAD [RUTINP CODE BROKEN] +26131 120061 5 K JST SWDTIL I /YES, RELOAD +26132 073365 5 K LDX LINEX /RESTORE LINE # IN X +26133 045500 5 K LDA CED X /PICK UP COMPUTED EFFECTIVE DELAY +26134 141206 5 K AOA +26135 011366 5 K STA DELOUR /AND SAVE IT +26136 004000 5 K LDA 0 +26137 141206 5 K AOA +26140 011367 5 K STA CHANR /SAVE CHAN=+1 IN RT HALF +26141 141340 5 K ICA +26142 011370 5 K STA CHANL /ALSO IN LEFT HALF +26143 013367 5 K ERA CHANR +26144 011371 5 K STA CHANB /SAVE CHAN=+1 IN BOTH HALVES +26145 005372 5 K LDA RST.I /PICK UP FLAG +26146 101040 5 K SNZ /WERE WE CALLED BY TASK? +26147 003152 5 K JMP RSTI1 /YES, TRUE INPUT +26150 005344 5 K LDA DUMYIN /NO, MAKE UP DUMMY INPUT OF ALL 1: +26151 003167 5 K JMP RSTI2 +26152 044433 5 RSTI1: K LDA LINE X +26153 100040 5 K SZE /IS LINE DOWN? +26154 103120 5 K JMP RSTINP I /YES, IGNORE ROUTING +26155 072514 5 K LDX THIS /GET PKT PTR +26156 044006 5 K LDA HEAD1 X /TO RM +26157 141044 5 K CAR 0"A"RMSN /EXTRACT SERIAL # +26160 073365 5 K LDX LINEX +26161 067505 5 K IMA RSTSNI X /SAVE AS LATEST INPUT # +26162 053505 5 K ERA RSTSNI X /COMPARE W/ PREV # +26163 101040 5 K SNZ /NEW? +26164 103120 5 K JMP RSTINP I /NO, WE SAW IT BEFORE***NOP ON REI' +26165 004514 5 K LDA THIS /BUILD POST INDEXED PTR TO PKT +26166 015343 5 K ADD RSTCP1 /(HEAD2 0 NIMP X) +26167 011372 5 RSTI2: K STA RST.I +26170 073346 5 K LDX NEGIMP /LOOP OVER ALL IMPS + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 226 IMP,3050,IMP 7:20 PM 9/16/1973 + +26171 105372 5 COPYL: K LDA RST.I I /GET ENTRY FROM RECEIVED ROUTING +26172 007347 5 K ANA HOPM /(174000) +26173 015353 5 K ADD HOPM1 /(4000) ADD IN OUR HOP +26174 101040 5 K SNZ /MAX VALUE? +26175 005347 5 K LDA HOPM /YES +26176 011373 5 K STA HOPIN /SAVE RECEIVED HOP COUNT +26177 141340 5 K ICA +26200 011374 5 K STA HOPINS +26201 105372 5 K LDA RST.I I /EXTRACT RECEIVED DELAY +26202 007350 5 K ANA DELM +26203 015366 5 K ADD DELOUR /ADD IN LOCAL DELAY +26204 023350 5 K CAS DELM /(3777) +26205 005350 5 K LDA DELM /TRUNCATE AT MAX DELAY +26206 101000 5 K NOP +26207 011375 5 K STA DELIN /SAVE TOTAL DELAY +26210 005371 5 K LDA CHANB /COMPARE THIS LINE # +26211 052265 5 K ERA RUT+NIMP X /...WITH PREVIOUS BEST FO1 +26212 007363 5 K ANA CHANM /(17437)EXTRACT LINE FIELDS ONLY +26213 023352 5 K CAS BSTDEL /(37)THIS MIN HOP LINE? +26214 003262 5 K JMP COPY11 /NO, SEE IF IT HAS GOOD DATA +26215 101000 5 K NOP +26216 011376 5 K STA CHANS /SAVE + /THIS LINE IS PREVIOUS BEST FOR HOPS +26217 104662 5 COPY1: K LDA RST.N I +26220 007350 5 K ANA DELM /EXTRACT OLD DELAY +26221 013373 5 K ERA HOPIN /PUT IN NEW HOPS +26222 126662 5 K IMA RST.N I /SAVE IN RSTN +26223 007347 5 K ANA HOPM +26224 141340 5 K ICA +26225 017374 5 K SUB HOPINS /COMPARE +26226 100400 5 K SPL /CHANGED? +26227 003252 5 K JMP HOLD1 /YES, IF HOPS WORSE DO HOLD-DOWN +26230 005376 5 COPY2: K LDA CHANS /LOOK AI OUR CHAN +26231 100040 5 K SZE /IS IT THE BEST DELAY? +26232 003320 5 K JMP COPY21 /NO + /THIS LINE PREVIOUS BEST FOR DELAY +26233 104662 5 K LDA RST.N I /YES +26234 007347 5 K ANA HOPM /EXTRACT OLD HOPS +26235 013375 5 K ERA DELIN /PUT IN NEW DELAY +26236 126662 5 K IMA RST.N I /SAVE IN RSTN +26237 007350 5 K ANA DELM +26240 017375 5 K SUB DELIN /COMPARE +26241 015351 5 K ADD DELCLP /ALLOW FOR SMALL CHANGE W/O HLDDWN +26242 100400 5 K SPL /DELAY GET MUCH WORSE? +26243 003310 5 K JMP HOLD2 /Y, DO HOLD-DOWN +26244 024000 5 COPYI: K IRS 0 /LOOP OVFR ALL IMPS +26245 003171 5 K JMP COPYL +26246 025377 5 K IRS RSTINC /COUNT ANOTHER INPUT COPY COMPLETE +26247 101000 5 K NOP +26250 073365 5 K LDX LINEX /RESTORE X +26251 103120 5 K JMP RSTINP I /RETURN TO TASK + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 227 IMP,3050,IMP 7:20 PM 9/16/1973 + + /THIS LINE WAS PREVIOUS BEST FOR HOPS, HOPS CHANGED +26252 045500 5 HOLD1: K LDA RUTW+NIMP X /HOPS GOT WORSE +26253 007356 5 K ANA HLDH /GET HOLD-DOWN TIMER +26254 100040 5 K SZE /ON? +26255 003230 5 K JMP COPY2 /Y, GO ON TO DELAY +26256 005356 5 K LDA HLDH /N, TURN IT ON +26257 053500 5 K ERA RUTW+NIMP X /...AND SAVE IN RUTW +26260 051500 5 K STA RUTW+NIMP X +26261 003230 5 K JMP COPY2 + + /THIS LINE WAS NOT PREVIOUS BEST FOR HOPS +26262 007352 5 COPY11: K ANA BSTDEL /TURN OFF HOP CHAN BITS +26263 011376 5 K STA CHANS /SAVE IN CHANS +26264 045500 5 K LDA RUTW+NIMP X +26265 007356 5 K ANA HLDH /GET HOLD-DOWN TIMER FOR HOPS +26266 100040 5 K SZE +26267 003230 5 K JMP COPY2 /NOT 0, GO DO DELAY NEXT + /NOT PREVIOUS BEST HOPS, NOT HOLDING +26270 104662 5 K LDA RST.N I +26271 007347 5 K ANA HOPM /EXTRACT CURRENT HOPS ON BEST +26272 141340 5 K ICA +26273 023374 5 K CAS HOPINS /COMPARE W/ RCVD HOPS +26274 003277 5 K JMP COPY13 /RCVD HOPS BETTER +26275 003230 5 K JMP COPY2 /NO BETTER, DO DELAY NEXT +26276 003230 5 K JMP COPY2 /DITTO + + /NOT PREVIOUS BEST HOPS, NOT HOLDING, BETTER THAN PREVIOUS +26277 141340 5 COPY13: K ICA +26300 112662 5 K ERA RST.N I /EXTRACT OLD BEST DELAY +26301 013373 5 K ERA HOPIN /PUT IN NEW HOPS +26302 110662 5 K STA RST.N I /SAVE IN RSTN +26303 044265 5 K LDA RUT+NIMP X +26304 007361 5 K ANA CHANML /(160377)EXTRACT CHAN OF MIN DELA1 +26305 013370 5 K ERA CHANL /UPDATE CHAN OF MIN HOPS +26306 050265 5 K STA RUT+NIMP X /SAVE IN RUT +26307 003230 5 K JMP COPY2 + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 228 IMP,3050,IMP 7:20 PM 9/16/1973 + + /THIS LINE WAS PREVIOUS BEST FOR DELAY, DELAY GOT WORSE +26310 045500 5 HOLD2: K LDA RUTW+NIMP X /DELAY GOT WORSE +26311 007357 5 K ANA HLDD /GET DELAY HOLD-DOWN TIMER +26312 100040 5 K SZE /IS IT ON? +26313 003244 5 K JMP COPYI /YES, GO ON TO NEXT IMP +26314 005357 5 K LDA HLDD /NO, TURN IT ON +26315 053500 5 K ERA RUTW+NIMP X /SAVE IN RUTW +26316 051500 5 K STA RUTW+NIMP X +26317 003244 5 K JMP COPYI + + /THIS LINE WAS NOT PREVIOUS BEST FOR DELAY +26320 045500 5 COPY21: K LDA RUTW+NIMP X +26321 007357 5 K ANA HLDD /GET DELAY HOLD-DOWN TIMER +26322 100040 5 K SZE +26323 003244 5 K JMP COPYI /NOT 0, GO TO NEXT IMP + /NOT PREVIOUS BEST DELAY, NOT HOLDING +26324 104662 5 K LDA RST.N I +26325 007350 5 K ANA DELM /EXTRACT CURRENT DELAY ON BEST +26326 023375 5 K CAS DELIN /COMP W/ RCVD DELAY +26327 003332 5 K JMP COPY23 /RCVD DELAY BETTER +26330 003244 5 K JMP COPYI /NO BETTER. GO ON TO NEXT IMP +26331 003244 5 K JMP COPYI /DITTO + + /NOT PREV BEST DELAY, NOT HOLDING, BETTER THAN PREVIOUS +26332 112662 5 COPY23: K ERA RST.N I /EXTRACT OLD BEST HOP COUNT +26333 013375 5 K ERA DELIN /PUT IN NEW DELAY +26334 110662 5 K STA RST.N I /SAVE IN RSTN +26335 044265 5 K LDA RUT+NIMP X +26336 007360 5 K ANA CHANMR /(177740)EXTRACT CHAN OF MIN HOP +26337 013367 5 K ERA CHANR /UPDATE CHAN OF BEST DELAY +26340 050265 5 K STA RUT+NIMP X /SAVE IN RUT +26341 003244 5 K JMP COPYI /GO ON TO NEXT IMP + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 229 IMP,3050,IMP 7:20 PM 9/16/1973 + + LEV CON +26342 177534 C RSTCKX: K RSTCK1-0-RSTCK2-1 +26343 040107 C RSTCP1: K HEAD2 0 NIMP X +26344 026345 C DUMYIN: K .+1 /PTR TO DUMMY MAX INPUT +26345 177777 C K HOPS+0+DELS +26346 177700 C NEGIMP: K -NIMP +26347 174000 C HOPM: K HOPS +26350 003777 C DELM: K DELS +26351 000010 C DELCLP: K 10 /SMALL CHANGE TO DELAY IS OK +26352 000037 C BSTDEL: K RUTDLC +26353 004000 C HOPM1: K HOPS1 /4000 +26354 020000 C HLDH1: K RTHPH1 /20000 +26355 000040 C HLDD1: K RTDLH1 /40 +26356 060000 C HLDH: K RUTHPH /60000 +26357 000140 C HLDD: K RUTDLH /140 +26360 177740 C CHANMR: K 0 0 177777"X"RUTDLC +26361 160377 C CHANML: K 0 0 177777"X"RUTHPC +26362 160340 C CHANMB: K 0 0 177777"X"RUTDLC"X"RUTHPC +26363 017437 C CHANM: K 0 0 RUTDLC"X"RUTHPC +26364 104676 C RSTCK2: -CHK + + LEV VAR +26365 V LINEX: BSS 1 /INPUT LINE= (0 TO CH-1) +26366 V DELOUR: BSS 1 /OUR LOCAL DELAY OUT OF THIS LINE +26367 V CHANR: BSS 1 /THIS LINE # +1, IN RIGHT HALF +26370 V CHANL: BSS 1 / LEFT +26371 V CHANB: BSS 1 / BOTH HALVES +26372 V RST.I: BSS 1 /RST POINTER TO INPUT MESSAGE +26373 V HOPIN: BSS 1 /RCVD HOP COUNT TO THIS IMP +26374 V HOPINS: BSS 1 /HOPIN WITH HALVES SWAPPED +26375 V DELIN: BSS 1 /RCVD DELAY TO THIS IMP PLUS LOCAL +26376 V CHANS: BSS 1 /TEMP = XOR(INPUT LINE, RUT ENTRY) +26377 V RSTINC: BSS 1 /COUNTER OF CALLS OF RSTIN FOR AL1 +26400 V RUTW: BSS NIMP +26500 V CED: BSS CH /COMPUTED EFFECTIVE DELAY +26505 V RSTSNI: BSS CH /SERIAL # OF LAST RM INPUT + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 230 IMP,3050,IMP 7:20 PM 9/16/1973 + + CHK=0 + LEV T.O +26512 000000 5 RUTOUT: 0 +26513 073627 5 RUTCK1: K LDX RUTCKX /(RUTCK1-0-RUTCK2-1) +26514 140040 5 K CRA +26515 055642 5 K ADD RUTCK2+1 X +26516 024000 5 K IRS 0 /CHECKSUM THIS CODE +26517 003515 5 K JMP .-2 +26520 100040 5 K SZE /DIFFERENT? + RELOAD [RUTOUT CODE BROKEN] +26521 120061 5 K JST SWDTIL I /YES, RELOAD +26522 073630 5 K LDX CRSTC /(-NIMP-HEAD2-ACKH) +26523 033642 5 K STX RSTC /INIT CKSUM=-# OF WORDS +26524 110660 5 K STA RST.O I /INIT ACK HEADER AT ZERO +26525 024000 5 K IRS 0 +26526 015642 5 K ADD RSTC /ADD INTO MSG CKSUM +26527 011642 5 K STA RSTC +26530 004106 5 K LDA MINE /THIS IMP # +26531 141340 5 K ICA +26532 141206 5 K AOA 0"A"LINETS /PUT IN ROUTING MSG BIT +26533 110660 5 K STA RST.O I /INIT HEADER +26534 024000 5 K IRS 0 +26535 015642 5 K ADD RSTC /ADD INTO MSG CKSUM +26536 011642 5 K STA RSTC +26537 005644 5 K LDA RSTSN +26540 015631 5 K ADD CRMSN1 /INCREMENT SER # +26541 011644 5 K STA RSTSN +26542 110660 5 K STA RST.O I +26543 024000 5 K IRS 0 +26544 015642 5 K ADD RSTC /ADD INTO MSG CKSUM +26545 011642 5 K STA RSTC + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 231 IMP,3050,IMP 7:20 PM 9/16/1973 + +26546 044265 5 COMPL: K LDA RUT+NIMP X +26547 100400 5 K SPL 0"A"RUTDED /THIS IMP DEAD? +26550 003602 5 K JMP RTDEAD /YES +26551 104662 5 K LDA RST.N I +26552 007347 5 K ANA HOPM /GET HOP COUNT +26553 141340 5 K ICA +26554 023633 5 K CAS CMAXH /COMPARE W/ MAX VALUE +26555 003614 5 K JMP RTDIED /TOO BIG, THIS IMP HAS DIED +26556 003614 5 K JMP RTDIED /DITTO +26557 044265 5 K LDA RUT+NIMP X +26560 007636 5 K ANA NOGODN /THIS IMP UP, CLEAR GOING DOWN +26561 050265 5 K STA RUT+NIMP X +26562 033643 5 K STX THDTMP /THIS IMP UP, SAVE AS HIGHEST # SO T +26563 104662 5 NWRST1: K LDA RST.N I +26564 110660 5 NEWRST: K STA RST.O I /SAVE IN RST +26565 015642 5 K ADD RSTC /ADD IN ROUTING MSG CKSUM +26566 011642 5 K STA RSTC /AND PUT IT BACK +26567 024000 5 K IRS 0 /LOOP OVER ALL IMPS +26570 003546 5 K JMP COMPL +26571 140407 5 K TCA /PICK UP FINAL CKSUM ANDCOMPLEMENT +26572 110660 5 K STA RST.O I /STORE AS LAST WRD OF MSG +26573 073643 5 K LDX THDTMP /PICK UP HIGHEST # IMP +26574 044265 5 K LDA RUT+NIMP X +26575 007632 5 K ANA HOPCHM /EXTRACT OUR MIN HOP PATH TO IT +26576 141340 5 K ICA +26577 016114 5 K SUB ONE +26600 010420 5 K STA THD /SAVE IN THD, FOR SYNC ACQUISITIO: +26601 103512 5 K JMP RUTOUT I /AND RETURN + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 232 IMP,3050,IMP 7:20 PM 9/16/1973 + +26602 104662 5 RTDEAD: K LDA RST.N I /THIS IMP WAS DEAD +26603 007347 5 K ANA HOPM /EXTRACT BEST HOPS THIS TIME +26604 141340 5 K ICA +26605 023633 5 K CAS CMAXH /COMPARE WITH MAX +26606 003624 5 K JMP RTDOWN /STILL TOO MANY. DEAD +26607 003624 5 K JMP RTDOWN /DITTO +26610 044265 5 RTNOTD: K LDA RUT+NIMP X /GET BEST LINES +26611 007363 5 K ANA CHANM 0"A"RUTDED /TURN OFF RUTDED BIT +26612 013634 5 K ERA COMUPM /PUT IN INITIAL COME-UP DELAY +26613 003622 5 K JMP NWRST2 /PUT IN RUT, THEN SET UF RST + +26614 044265 5 RTDIED: K LDA RUT+NIMP X +26615 007635 5 K ANA GODWNM /IMP WAS UP +26616 100040 5 K SZE /IS IT MARKED AS GOING DOWN? +26617 003563 5 K JMP NWRST1 /YES +26620 005635 5 K LDA GODWNM /NO, MARK IT NOW +26621 052265 5 K ERA RUT+NIMP X +26622 050265 5 NWRST2: K STA RUT+NIMP X +26623 003563 5 K JMP NWRST1 + +26624 005640 5 RTDOWN: K LDA CMAXHD /REPORT AS DOWN TO NEIGHBORS +26625 110662 5 K STA RST.N I /AND KEEP MAX VAL FOR US +26626 003564 5 K JMP NEWRST /...BY SETTING RST TO MAX VALUE + + LEV CON +26627 177651 C RUTCKX: K RUTCK1-0-RUTCK2-1 +26630 177675 C CRSTC: K -NIMP-HEAD2+ACKH +26631 000400 C CRMSN1: K RMSN1 /400 +26632 017400 C HOPCHM: K RUTHPC /17400 +26633 000260 C CMAXH: K 0 0 MAXH"T"8. /260 +26634 000340 C COMUPM: K RUTCMU /340 +26635 060000 C GODWNM: K RUTGOD /60000 +26636 117777 C NOGODN: K 0 0 177777"X"RUTGOD /117777 +26637 100000 C CDEAD: K RUTDED /100000 +26640 177777 C CMAXHD: K 0 0 HOPS"X"DELS /177777 +26641 125362 C RUTCK2: -CHK + + LEV VAR +26642 V RSTC: BSS 1 /ROUTING MESSAGE CHECKSUM +26643 V THDTMP: BSS 1 /TEMP FOR THD + +26644 V RSTSN: BSS 1 /SERIAL # OF LAST RM COMPUTATION + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 233 IMP,3050,IMP 7:20 PM 9/16/1973 + +26645 073106 C LEV CON CONSTANTS +26646 073212 C +26647 073316 C +26650 073216 C +02435 175666 C PAGEND 26,UNCON,15 + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 234 IMP,3050,IMP 7:20 PM 9/16/1973 + + + LEV T.O + CHK=0 +27112 000000 5 RUTCLK: 0 +27113 073261 5 RTCLK1: K LDX RTCLKX +27114 140040 5 K CRA +27115 055263 5 K ADD RTCLK2+1 X +27116 024000 5 K IRS 0 +27117 003115 5 K JMP .-2 +27120 100040 5 K SZE + RELOAD [RUTCLK CODE BROKEN] +27121 120061 5 K JST SWDTIL I +27122 073230 5 K LDX NIMPMI /LOOP OVER ALL IMPS FOR HOLD-DOWN +27123 105241 5 HLDC1: K LDA RUT.W I +27124 007243 5 K ANA HOLDH +27125 101040 5 K SNZ /ARE WE HOLDING DOWN MIN HOP PATH? +27126 003132 5 K JMP HLDC2 /NO +27127 105241 5 K LDA RUT.W I +27130 017251 5 K SUB HOLDH1 /DECREMENT TIMER +27131 111241 5 K STA RUT.W I +27132 105241 5 HLDC2: K LDA RUT.W I /NO +27133 007244 5 K ANA HOLDD +27134 101040 5 K SNZ /HOLDING DOWN MIN DELAY PATH? +27135 003141 5 K JMP HLDC3 /NC +27136 105241 5 K LDA RUT.W I +27137 017252 5 K SUB HOLDD1 /DECREMENT TIMER +27140 111241 5 K STA RUT.W I +27141 024000 5 HLDC3: K IRS 0 +27142 003123 5 K JMP HLDC1 /NEXT +27143 025263 5 K IRS GODWNC /IS IT TIME TO DO GOING DOWN DELA' +27144 003170 5 K JMP CMUC0 /NO +27145 005237 5 K LDA GODWNK /YES, EVERY 4TH TICK +27146 011263 5 K STA GODWNC +27147 073230 5 K LDX NIMPMI /LOOP OVER ALL IMPS FOR GOING DOWNS +27150 044265 5 GODC1: K LDA RUT+NIMP X +27151 007245 5 K ANA MGODWN +27152 101040 5 K SNZ /THIS IMP GOING DOWN? +27153 003166 5 K JMP GODC2 /NO +27154 044265 5 K LDA RUT+NIMP X /YES +27155 017246 5 K SUB MGODW1 /DECREMENT TIMER +27156 050265 5 K STA RUT+NIMP X +27157 007245 5 K ANA MGODWN +27160 100040 5 K SZE /IS IT COMPLETELY DOWN? +27161 003166 5 K JMP GODC2 /NO +27162 005235 5 K LDA MAXRST /YES. HE IS REALLY DEAD +27163 111242 5 K STA RST.N2 I /SET UP RSTN +27164 005236 5 K LDA MAXRUT +27165 050265 5 K STA RUT+NIMP X /AND RUT +27166 024000 5 GODC2: K IRS 0 +27167 003150 5 K JMP GODC1 + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 235 IMP,3050,IMP 7:20 PM 9/16/1973 + +27170 025264 5 CMUC0: K IRS COMUPC /IS IT TIME TO DO COMING-UP DELAYS +27171 003206 5 K JMP RMVFRQ /NO, DO VBL FRQ CMPTNS +27172 005240 5 K LDA COMUPK /YES, EVERY TENTH TICK +27173 011264 5 K STA COMUPC +27174 073230 5 K LDX NIMPMI /LOOP OVER ALL IMPS FOR COMING UP +27175 044265 5 CMUC1: K LDA RUT+NIMP X +27176 007247 5 K ANA MCOMUP +27177 101040 5 K SNZ /IS THIS IMP COMING UP? +27200 003204 5 K JMP CMUC2 /NO +27201 044265 5 K LDA RUT+NIMP X /YES +27202 017250 5 K SUB MCOMU1 /DECREMENT TIMER +27203 050265 5 K STA RUT+NIMP X /SAVE IN RUT(IF HE CAME [ +27204 024000 5 CMUC2: K IRS 0 +27205 003175 5 K JMP CMUC1 +27206 073231 5 RMVFRQ: K LDX RMMICH /-CH +27207 140040 5 RMVFRC: K CRA +27210 011266 5 K STA RMVT +27211 127232 5 K IMA CTIMK I /CLEAR CUMTIM AND COMPUTE EXTRAS +27212 017234 5 RMVFRA: K SUB MS132K +27213 100400 5 K SPL +27214 003217 5 K JMP RMVFRB +27215 025266 5 K IRS RMVT +27216 003212 5 K JMP RMVFRA +27217 005233 5 RMVFRB: K LDA RMFOUR +27220 017266 5 K SUB RMVT +27221 100400 5 K SPL +27222 140040 5 K CRA +27223 015260 5 K ADD CRMVTB +27224 051274 5 K STA RUTFRQ+CH X +27225 024000 5 K IRS 0 +27226 003207 5 K JMP RMVFRC /LOOP OVER ALL LINES +27227 103112 5 K JMP RUTCLK I + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 236 IMP,3050,IMP 7:20 PM 9/16/1973 + + LEV CON +27230 177700 C NIMPMI: K -NIMP +27231 177773 C RMMICH: K -CH +27232 052632 C CTIMK: K CUMTIM CH X +27233 000004 C RMFOUR: K 4 +27234 002450 C MS132K: K 2450 +27235 177777 C MAXRST: K HOPS+0+DELS +27236 100000 C MAXRUT: K RUTDED +27237 177772 C GODWNK: K -6 +27240 177767 C COMUPK: K -9. +27241 066500 C RUT.W: K RUTW+NIMP X +27242 073316 C RST.N2: K RST2+NIMP X +27243 060000 C HOLDH: K RUTHPH +27244 000140 C HOLDD: K RUTDLH +27245 060000 C MGODWN: K RUTGOD +27246 020000 C MGODW1: K RUTGD1 +27247 000340 C MCOMUP: K RUTCMU +27250 000040 C MCOMU1: K RUTCM1 +27251 020000 C HOLDH1: K RTHPH1 +27252 000040 C HOLDD1: K RTDLH1 + /RMVTAB USED BY RSTOUT +27253 000001 C RMVTAB: K 1 /1BIT IN 5 (# OF EXTRA +1 RM'S TO S1 +27254 000005 C K 5 /2 IN 5 (I.E. 1 EXTRA) +27255 000015 C K 15 +27256 000033 C K 33 +27257 000037 C K 37 +27260 027253 C CRMVTB: K RMVTAB +27261 177630 C RTCLKX: K RTCLK1-0-RTCLK2-1 +27262 147750 C RTCLK2: -CHK + + LEV VAR +27263 V GODWNC: BSS 1 /COUNTER - EVERY 4TH TICK +27264 V COMUPC: BSS 1 /COUNTER - EVERY 10TH TICK +27265 V HOLDT: BSS 1 /TEMP +27266 V RMVT: BSS 1 /TEMP +27267 V RUTFRQ: BSS CH /# OF EXTRA RM'S PERMITTED AS PER + + LEV CON CONSTANTS +02436 172274 C PAGEND 27,UNCON + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 237 IMP,3050,IMP 7:20 PM 9/16/1973 + + + LEV BCK + /STATISTICS PROGRAMS + /ALL CALLS TO DEFSTAT MUST PRECEDE THIS PAGE +30056 004114 7 STTI: LDA ONE +30057 011213 7 STA SOFO /BEGIN BY SAVING COPY OF SON +30060 005436 7 BKST: LDA SON /PICK UP 10-SEC STAT ON-OFF FLAG +30061 027213 7 IMA SOFO /KEEP A COPY +30062 023436 7 CAS SON /ANY CHANGE IN STATUS? +30063 100000 7 SKP /YES, MUST CHANGE STATISTICS LOCATI1 +30064 003104 7 JMP SP2 /NO +30065 101040 7 SNZ /WAS 10-SEC STAT JUST TURNED ON? +30066 003075 7 JMP SP1 /YES +30067 073575 7 LDX (-NSTATS) /NO, JUST TURNED OFF +30070 105576 7 LDA (SC1+NSTATS 0 X) I /PICK UP STANDARD CONTE:'1 +30071 111577 7 STA (SB1+NSTATS 0 XI) I /AND PLANT IN DESIGNATED ] +30072 024000 7 IRS 0 /THIS RESTORES PROGRAM TO ITS DEFAUT +30073 003070 7 JMP .-3 +30074 003104 7 JMP SP2 +30075 021256 7 SP1: JST CLST /CLEAR OUT 10-SEC STAT TABLES +30076 073575 7 LDX (-NSTATS) +30077 005600 7 LDA (JST SW1 I) /PLANT JST'S TO STATISTIC +30100 111577 7 STA (SB1+NSTATS 0 XI) I +30101 141206 7 AOA /THIS PUTS BREAKPOINT-LIKE CODE +30102 024000 7 IRS 0 /IN KEY PLACES THROUGHOUT THE PROGR +30103 003100 7 JMP .-3 +30104 005601 7 SP2: LDA (50000+0+DIAGTT) +30105 011455 7 STA DIAGD +30106 005602 7 LDA (DIAGQ 0 I) +30107 011440 7 STA DIAGON /DIAG IS ALWAYS ON +30110 005603 7 LDA (TRON 0 I) +30111 011212 7 STA SP81 /INDIRECT POINTER FOR ON FLAGS +30112 072125 7 LDX MINUS5 /SO THAT NCC TRBL REPTS ALWAYS GO[ +30113 033441 7 STX TPON /TURN ON NCC TRBL REPTS +30114 033211 7 SP3: STX SP8 /LOOP HERE FOR EACH STAT PROGRAM +30115 105212 7 LDA SP81 I +30116 101040 7 SNZ /IS THIS STAT PROGRAM TURNED ON? +30117 003170 7 JMP SP91 /NO +30120 004417 7 LDA SYNC /PICK UP CURRENT TIME +30121 057211 7 SUB OLDS+5 X /COMPARE WITH THE LAST TIME THIS PR +30122 100400 7 SPL /CORRECT FOR TIMER OVERFLOW +30123 140407 7 TCA /EVERY 30 MINUTES +30124 057465 7 SUB STATF+5 X /LOOK AT INTERVAL BETWEEN PROGRAM R +30125 100400 7 SPL /IS IT TIME TO ACTIVATE THIS PROG? +30126 003170 7 JMP SP91 /NO +30127 140040 7 CRA /YES +30130 011214 7 STA SKEWT /INIT A TIME-SKEWING TEMP +30131 004000 7 LDA 0 +30132 012124 7 ERA MINUS4 +30133 100040 7 SZE /ARE WE DOING 10-SEC STAT? +30134 003153 7 JMP STAT6 /NO + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 238 IMP,3050,IMP 7:20 PM 9/16/1973 + +30135 045465 7 LDA STATF+5 X /YES, SKEW REPORTS BY IMP NUMBER +30136 040572 7 ARS 6 0"A"NIMP /DIV BY 100 = IMPNO +30137 101040 7 SNZ +30140 003153 7 JMP STAT6 /TOO SMALL AN INTERVAL TO SKEW +30141 140407 7 TCA +30142 011215 7 STA COUNT1 /BUILD MULTIPLY LOOP +30143 004106 7 STAT4: LDA MINE +30144 140407 7 TCA +30145 011216 7 STA COUNT2 +30146 025214 7 STAT5: IRS SKEWT /COMPUTE SKEWT=(MINE/100)*STATF +30147 025216 7 IRS COUNT2 +30150 003146 7 JMP STAT5 +30151 025215 7 IRS COUNT1 +30152 003143 7 JMP STAT4 +30153 045465 7 STAT6: LDA STATF+5 X +30154 140407 7 TCA +30155 006417 7 ANA SYNC +30156 015214 7 ADD SKEWT +30157 051211 7 STA OLDS+5 X +30160 045457 7 LDA STATD+5 X /*SEND STAT DEST +30161 021403 7 JST GIVE +30162 045451 7 LDA STATL+5 X /*SEND STAT LINK +30163 021403 7 JST GIVE +30164 143204 7 JMP CAWL+5 XI /CALL STAT PROGRAM + +30165 073604 7 GIVLST: LDX (100003) /TERMINATE STAT MESSAGE +30166 004112 7 LDA SIGN /*SEND PADDING +30167 120664 7 JST JAM I +30170 073211 7 SP91: LDX SP8 /LOOP BACK OVER EACH STAT PROG +30171 025212 7 IRS SP81 +30172 024000 7 IRS 0 +30173 003114 7 JMP SP3 +30174 072116 7 LDX THREE +30175 120665 7 JST DOZE I +30176 003060 7 JMP BKST + + LEV CON +30177 030217 C CAWL: SNAP /SNAPSHOT STATISTICS PROGRAM +30200 030243 C SEST /CUMULATIVE STATISTICS PROGRAM +30201 030267 C GENM /MESSAGE GENERATOR +30202 030347 C DIAG /DIAGNOSTIC SENDER +30203 022057 C TRBL /NCC TROUBLE REPORT PROGRAM + LEV VAR +30204 000000 V OLDS: 0 +30205 000000 V 0 +30206 000000 V 0 +30207 000000 V 0 +30210 000000 V TRBOLD: 0 + +30211 V SP8: BSS 1 /COUNTER FOR WHICH STAT PROG TO RUN +30212 V SP81: BSS 1 /STAT FLAGS INDIRECT PTR +30213 V SOFO: BSS 1 /SAVED COPY OF SON +30214 V SKEWT: BSS 1 /AMOUNT OF TIME TO SKEW STAT REPTS +30215 V COUNT1: BSS 1 +30216 V COUNT2: BSS 1 + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 239 IMP,3050,IMP 7:20 PM 9/16/1973 + + /SEND SNAPSHOT STATISTICS + LEV BCK +30217 005605 7 SNAP: LDA (5) /*SEND SNAPSHOT CODE +30220 021403 7 JST GIVE +30221 004415 7 LDA TIME /*SEND LOCAL TIME +30222 021403 7 JST GIVE +30223 073606 7 LDX (-COUNTL) +30224 001001 7 SNP2: INH ALL +30225 044543 7 0 LDA COUNTA+COUNTL X /*SEND QUEUE LENGTHS +30226 056567 7 0 SUB COUNTS+COUNTL X +30227 000401 7 0 ENB BCK +30230 021403 7 JST GIVE +30231 024000 7 IRS 0 +30232 003224 7 JMP SNP2 +30233 072132 7 LDX MINIMP +30234 044265 7 SNP3: LDA RUT+NIMP X /*SEND ROUTE USE TABLE +30235 021403 7 JST GIVE +30236 105607 7 LDA (RST+NIMP 0 X) I /*SEND ROUTE SEND TABLE +30237 021403 7 JST GIVE +30240 024000 7 IRS 0 +30241 003234 7 JMP SNP3 +30242 003165 7 JMP GIVLST /*SEND PADDING AND END MESSAGE + + /SEND 10 SECOND (CUMULATIVE) STATISTICS +30243 004115 7 SEST: LDA TWO /*SEND 10-SEC STAT CODE +30244 021403 7 JST GIVE +30245 004417 7 LDA SYNC /*SEND NETWORK-WIDE TIME +30246 021403 7 JST GIVE +30247 073610 7 LDX (-NST) +30250 105611 7 LDA (STTB+NST X) I /*SEND 10-SEC STAT TABLE +30251 021403 7 JST GIVE +30252 024000 7 IRS 0 +30253 003250 7 JMP .-3 +30254 021256 7 JST CLST /CLEAR THE 10-SEC STAT TABLES +30255 003165 7 JMP GIVLST /*SEND PADDING AND END MESSAGE + + LEV BCK + /CLEAR ALL ENTRIES IN 10-SEC STAT TABLES +30256 000000 7 CLST: 0 +30257 073610 7 LDX (-NST) +30260 140040 7 CRA +30261 001001 7 INH ALL +30262 111611 7 0 STA (STTB+NST X) I +30263 024000 7 0 IRS 0 +30264 003262 7 0 JMP .-2 +30265 000401 7 0 ENB BCK +30266 103256 7 JMP CLST I + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 240 IMP,3050,IMP 7:20 PM 9/16/1973 + + /MESSAGE GENERATOR +30267 072116 7 GENM: LDX THREE /FAKE HOST 3 - STATISTICS +30270 005465 7 LDA MGNL /PICK UP LENGTH OF MESSAGE +30271 007612 7 ANA (777) +30272 101040 7 SNZ +30273 003301 7 JMP GENM1 +30274 140407 7 TCA /GIVES RIGHT NUMBER, EXCLUDING PADD +30275 011346 7 STA MGCNT +30276 120664 7 JST JAM I /*SEND MGNL WORDS +30277 025346 7 IRS MGCNT +30300 003276 7 JMP .-2 +30301 131040 7 GENM1: RDCLOK +30302 003301 7 JMP .-1 + /CRA FOR ALL REG, LDA ONE FOR ALL PRI, ANA ONE FOR RANDOM MI +30303 140040 7 CRA +30304 100040 7 SZE +30305 004112 7 LDA SIGN +30306 013454 7 ERA MGD +30307 011454 7 STA MGD +30310 005446 7 LDA MGLK +30311 101000 7 NOP /"SKP" TO RUN LINK CYCLER +30312 003165 7 JMP GIVLST /*SEND PADDING AND END MESSAGE +30313 101040 7 SNZ +30314 003333 7 JMP LC1 +30315 015613 7 LC3: ADD (400) +30316 011446 7 STA MGLK +30317 100040 7 SZE +30320 003165 7 JMP GIVLST /*SEND PADDING AND END MESSAGE +30321 004415 7 LDA TIME +30322 017345 7 SUB OTIM +30323 111343 7 STA PLAC I +30324 025343 7 IRS PLAC +30325 005465 7 LDA MGNL +30326 015342 7 ADD IGTH +30327 011465 7 STA MGNL +30330 017344 7 SUB LIMT +30331 101400 7 SMI +30332 003337 7 JMP LC44 +30333 004415 7 LC1: LDA TIME +30334 011345 7 STA OTIM +30335 005446 7 LDA MGLK +30336 003315 7 JMP LC3 + +30337 140040 7 LC44: CRA /WHEN DONE, SHUT MGEN OFF +30340 011437 7 STA MGON +30341 003165 7 JMP GIVLST /*SEND PADDING AND END MESSAGE + + LEV VAR +30342 000010 V IGTH: 10 /LENGTH INCREMENT +30343 030000 V PLAC: 30000 /CORE POINTER FOR TABLE BUILDING +30344 000760 V LIMT: 760 /LONGEST MESSAGE TO SEND +30345 V OTIM: BSS 1 /TEMP TO SAVE STARTING TIME OF BLOC +30346 V MGCNT: BSS 1 /TEMP COUNTER FOR MESS LENGTH + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 241 IMP,3050,IMP 7:20 PM 9/16/1973 + + LEV BCK +30347 001001 7 DIAG: INH ALL /SEND BROKEN PACKETS TO NCC FOR DIAT +30350 104342 7 0 LDA DIAGQ I +30351 026342 7 0 IMA DIAGQ /GET PKT OFF DIAG QUEUE +30352 000401 7 0 ENB BCK +30353 011401 7 STA DIAGP /SAVE PNTR +30354 004746 7 LDA HLTLOC /*SEND HLT PC +30355 021403 7 JST GIVE +30356 004747 7 LDA HLTA /*SEND HLT A REG +30357 021403 7 JST GIVE +30360 004750 7 LDA HLTX /*SEND HLT X REG +30361 021403 7 JST GIVE +30362 005401 7 LDA DIAGP /*SEND PKT PNTR +30363 010000 7 STA 0 +30364 021403 7 JST GIVE +30365 005614 7 LDA (-BUFL) +30366 011402 7 STA DIAGC /SET UP SEND COUNTER +30367 044000 7 DIAG1: LDA 0 X /*SEND CONTENTS OF BAD PACKET +30370 021403 7 JST GIVE +30371 024000 7 IRS 0 +30372 025402 7 IRS DIAGC +30373 003367 7 JMP DIAG1 +30374 001001 7 INH ALL +30375 073401 7 0 LDX DIAGP +30376 120671 7 0 JST FLUSHI I +30377 000401 7 0 ENB BCK +30400 003165 7 JMP GIVLST + + LEV VAR +30401 V DIAGP: BSS 1 /PKT PNTR +30402 V DIAGC: BSS 1 /LOOP COUNTER + + LEV BCK +30403 000000 7 GIVE: 0 /STAT CALLS TO JAM +30404 033411 7 STX STT8 /SAVE X-REG +30405 072116 7 LDX THREE +30406 120664 7 JST JAM I +30407 073411 7 LDX STT8 +30410 103403 7 JMP GIVE I + LEV VAR +30411 V STT8: BSS 1 + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 242 IMP,3050,IMP 7:20 PM 9/16/1973 + + LEV BCK /FAKE IMP-TO-HOST 2 - PARAMETER CHANGE +30412 120666 7 BTR1: JST SUCK I /SKIP OVER REST OF MESSAGE +30413 003412 7 JMP BTR1 +30414 120666 7 BEST: JST SUCK I /BEGIN TO ACCEPT MESSAGE HERE +30415 120666 7 JST SUCK I /IGNORE LEADER +30416 120666 7 BTR4: JST SUCK I /GET NUMBER OF PARAM TO CHANGE +30417 100000 7 SKP /END OF MESSAGE? +30420 003414 7 JMP BEST /YES, GO BACK +30421 100400 7 SPL /IS NO OF PARAM ROSTIVE? +30422 003412 7 JMP BTR1 /NO, IGNORE REST OF MESSAGE +30423 007615 7 ANA (37) /YES, MASK DOWN TO 5 BITS +30424 015616 7 ADD (PARAMT) /BUILD PNTR TO PARAM TABLE +30425 011433 7 STA BTR2 +30426 120666 7 JST SUCK I /GET NEW VALUE FOR PARAMETER +30427 100000 7 SKP /END OF MESSAGE? +30430 003414 7 JMP BEST /YES, NO CHANGE TO THIS PARAM +30431 111433 7 STA BTR2 I /NO, PUT NEW VALUE IN PARAM +30432 003416 7 JMP BTR4 /AND GO BACK FOR MORE + LEV VAR +30433 000000 V BTR2: 0 + + DEFPLC [PARAMETERS TABLE] + PARAMT: + PARAML=32. +30434 V TRON: BSS 1 /0-TRACE ON +30435 V SNON: BSS 1 /1-SNAP ON +30436 V SON: BSS 1 /2-10-SEC STAT ON +30437 V MGON: BSS 1 /3-MESS GEN ON +30440 V DIAGON: BSS 1 /4-DIAG ON +30441 V TPON: BSS 1 /5-TRBL REPT ON +30442 V BSS 1 /6 + +30443 V TLNK: BSS 1 /7-TRACE LINK +30444 V STATL: BSS 1 /10-SNAP LINK +30445 V BSS 1 /11-10-SEC LINK +30446 V MGLK: BSS 1 /12-MESS GEN LINK +30447 V BSS 1 /13-DIAG LINK +30450 V BSS 1 /14-TRBL REPT LINK + +30451 V TDST: BSS 1 /15-TRACE DEST +30452 V STATD: BSS 1 /16-SNAP DEST +30453 V BSS 1 /17-10-SEC DEST +30454 V MGD: BSS 1 /20-MESS GEN DEST +30455 V DIAGD: BSS 1 /21-DIAG DEST +30456 V TRBD: BSS 1 /22-TRBL REPT DEST + +30457 V TF: BSS 1 /23-AUTO TRACE FREQ +30460 V STATF: BSS 1 /24-SNAP FREQ +30461 V BSS 1 /25-10-SEC FREQ +30462 V BSS 1 /26-MESS GEN FREQ +30463 V BSS 1 /27-DIAG FREQ +30464 V TRBF: BSS 1 /30-TRBL REPT FREQ + +30465 V MGNL: BSS 1 /31-MESS GEN LENGTH +30466 V BSS PARAMT+1+PARAML-. + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 243 IMP,3050,IMP 7:20 PM 9/16/1973 + + LEV BCK /FAKE IMP-TO-HOST 3 - DISCARD +30474 120666 7 STXY: JST SUCK I /GET EACH WORD AS IT IS READY +30475 003474 7 JMP .-1 /AND RETURN IMMEDIATELY FOR MORE +30476 003474 7 JMP .-2 /EVEN ON END OF MESSAGE + + /FAKE HOST-TO-IMP 2 - TRACE +30477 140500 7 BTRE: SSM /START HERE +30500 003515 7 JMP BTRF + + LCK TSK +30501 000401 7 6 BTD: ENB BCK +30502 005572 7 LDA T3BX +30503 101040 7 SNZ +30504 003527 7 JMP BTRD +30505 004112 7 LDA SIGN +30506 073617 7 LDX (100002) +30507 120664 7 JST JAM I +30510 120665 7 BTRC: JST DOZE I /WAIT ONE BACKGROUND LOOP +30511 004341 7 LDA STRQ /START HERE +30512 101040 7 SNZ /ANYTHING TO SEND? +30513 003510 7 JMP BTRC /QUIT IF TRACE QUEUE EMPTY +30514 140040 7 CRA +30515 011572 7 BTRF: STA T3BX +30516 005451 7 LDA TDST /*SEND TRACE DEST +30517 120664 7 JST JAM I +30520 005443 7 LDA TLNK /*SEND TRACE LINK +30521 120664 7 JST JAM I +30522 004114 7 LDA ONE /*SEND TRACE CODE +30523 120664 7 JST JAM I +30524 140040 7 CRA /RESET OVERFLOW FLAG +30525 026414 7 IMA TTO /*SEND STATE OF OVERFLOW FLAG +30526 120664 7 JST JAM I +30527 072115 7 BTRD: LDX TWO +30530 120665 7 JST DOZE I +30531 005621 7 BRL2: LDA ((STRQ)) +30532 011573 7 STA OLD2 +30533 001001 7 INH TSK + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 244 IMP,3050,IMP 7:20 PM 9/16/1973 + +30534 105573 7 6 BTRL: LDA OLD2 I /SEARCH TRACE QUEUE +30535 011573 7 6 STA OLD2 +30536 105573 7 6 LDA OLD2 I +30537 011574 7 6 STA OLD1 +30540 101040 7 6 SNZ +30541 003501 7 6 JMP BTD /JUMP IF DONE WITH TRACE QUEUE +30542 010000 7 6 STA 0 +30543 044012 7 6 LDA TDONE X +30544 101400 7 6 SMI /IS THIS TRACE BLOCK COMPLETE? +30545 003534 7 6 JMP BTRL /NO +30546 044000 7 6 LDA 0 X /YES, PICK UP ITS CHAIN PNTR +30547 111573 7 6 STA OLD2 I /REMOVE FROM TRACE QUEUE +30550 000401 7 6 ENB BCK +30551 025572 7 IRS T3BX +30552 005622 7 LDA (-TDONE) +30553 011571 7 STA T2BX +30554 072115 7 LDX TWO +30555 025574 7 IRS OLD1 +30556 105574 7 LDA OLD1 I +30557 120664 7 JST JAM I /*SEND TRACE BLOCK +30560 025571 7 IRS T2BX +30561 003555 7 JMP .-4 +30562 005574 7 LDA OLD1 +30563 015622 7 ADD (-TDONE) +30564 001001 7 INH TSK +30565 026325 7 6 IMA TTF /PUT DN FREE TRACE QUEUE +30566 110325 7 6 STA TTF I +30567 000401 7 6 ENB BCK +30570 003531 7 JMP BRL2 /LOOP SEARCHING TRACE QUEUE + + LEV VAR +30571 V T2BX: BSS 1 /COPY LOOP COUNTER +30572 V T3BX: BSS 1 /COUNT OF NUMBER OF BLOCKS COPIED +30573 V OLD2: BSS 1 /QUEUE PNTR - USED IN SEARCH +30574 V OLD1: BSS 1 /PACKET PNTR - USED IN COPY + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 245 IMP,3050,IMP 7:20 PM 9/16/1973 + +30575 177760 C LEV CON CONSTANTS +30576 072030 C +30577 172010 C +30600 120574 C +30601 050057 C +30602 100342 C +30603 130434 C +30604 100003 C +30605 000005 C +30606 177754 C +30607 073106 C +30610 177423 C +30611 071716 C +30612 000777 C +30613 000400 C +30614 177666 C +30615 000037 C +30616 030434 C +30617 100002 C +30620 000341 C +30621 030620 C +30622 177766 C +02437 175631 C PAGEND 30,UNCON,3 + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 246 IMP,3050,IMP 7:20 PM 9/16/1973 + + LEV H2I + /HOST TO IMP STATISTICS +31055 000000 4 HS0: 0 +31056 005753 4 LDA (STTB) +31057 001001 4 INH [I2M,I2H] +31060 011121 4 2 STA WHER +31061 004675 4 2 LDA HIP +31062 021123 4 2 JST SUB1 +31063 015356 4 2 ADD TOT1 +31064 011356 4 2 STA TOT1 +31065 000401 4 2 ENB H2I +31066 072675 4 LDX HIP +31067 172677 4 LDX HIXX I +31070 044007 4 LDA HEAD2 X +31071 103055 4 JMP HS0 I + + / HOST TO IMP ALL MESSAGES +31072 000000 4 HS2: 0 +31073 065375 4 IRS CNT2 X +31074 101000 4 NOP +31075 103754 4 JMP (HIH0 0 XI) I + + LEV I2H + / IMP TO HOST STATISTICS +31076 000000 3 HS1: 0 +31077 005755 3 LDA (XGP) +31100 001001 3 INH I2M +31101 011121 3 2 STA WHER +31102 004676 3 2 LDA IHP +31103 172700 3 2 LDX IHXX I +31104 021123 3 2 JST SUB1 +31105 015374 3 2 ADD TOT2 +31106 011374 3 2 STA TOT2 +31107 000401 3 2 ENB I2H +31110 072676 3 LDX IHP +31111 105756 3 LDA (IHED 0 X) I +31112 103076 3 JMP HS1 I + + / IMP TO HOST CONTROL MESSAGES +31113 000000 3 HS3: 0 +31114 141206 3 AOA +31115 065405 3 IRS CNT3 X +31116 101000 3 NOP +31117 103113 3 JMP HS3 I + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 247 IMP,3050,IMP 7:20 PM 9/16/1973 + + LEV VAR +31120 V WHERL: BSS 1 +31121 V WHER: BSS 1 +31122 V SUBL: BSS 1 + + LEV I2M +31123 000000 2 SUB1: 0 +31124 016130 2 SUB PLNH +31125 101400 2 SMI +31126 003156 2 JMP SP6 +31127 044111 2 LDA BUFE X +31130 016000 2 SUB 0 +31131 017757 2 SUB (DATA) +31132 140100 2 SSP 0"A"TWOQ +31133 011122 2 STA SUBL +31134 021717 2 JST LOG +31135 014120 2 ADD SEVEN /POINTS TO LAST-PACKET LENGTH COUNT] +31136 015121 2 ADD WHER /...IN CORRECT TABLE +31137 011120 2 STA WHERL +31140 125120 2 IRS WHERL I /AND GOOSE COUNTER +31141 101000 2 NOP +31142 044006 2 LDA HEAD1 X +31143 141340 2 ICA 0"A"PKTNO +31144 006120 2 ANA SEVEN +31145 101040 2 SNZ +31146 003154 2 JMP SP4 /NO SEPARATE COUNTER FOR 1PKT MSGS +31147 016114 2 SUB ONE /BACK OFF 1 +31150 015121 2 ADD WHER +31151 011121 2 STA WHER +31152 125121 2 IRS WHER I +31153 101000 2 NOP +31154 005122 2 SP4: LDA SUBL +31155 103123 2 JMP SUB1 I + +31156 073123 2 SP6: LDX SUB1 +31157 042002 2 JMP 2 X + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 248 IMP,3050,IMP 7:20 PM 9/16/1973 + + / IMP TO MODEM MESSAGES +31160 000000 2 IM1: 0 +31161 111760 2 STA (ACKWRD) I +31162 010000 2 STA 0 +31163 044105 2 LDA BUFE-ACKH X +31164 016000 2 SUB 0 +31165 016116 2 SUB THREE 0"A"[HEAD2-ACKH] +31166 140100 2 SSP 0"A"TWOQ +31167 011337 2 STA IMT1 +31170 021717 2 JST LOG +31171 173761 2 LDX (OCHN) I +31172 055331 2 ADD TUB1 X +31173 011340 2 STA IMT2 +31174 125340 2 IRS IMT2 I +31175 101000 2 NOP +31176 005337 2 LDA IMT1 +31177 055622 2 ADD ANS4 X +31200 051622 2 STA ANS4 X +31201 103160 2 JMP IM1 I + + LEV M2I + / MODEM TO INP DISCARD +31202 000000 0 MI1: 0 +31203 025627 0 IRS MTOT +31204 070471 0 M1ERR +31205 103202 0 JMP MI1 I +31206 025634 0 IRS CKSM +31207 025202 0 IRS MI1 +31210 101000 0 NOP +31211 103202 0 JMP MI1 I + + /TASK I HEARD YOU MESSAGES RECEIVED +31212 000000 0 TSKIH: 0 +31213 064426 0 IRS LAC X +31214 065641 0 IRS TSKIHY X +31215 101000 0 NOP +31216 103212 0 JMP TSKIH I + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 249 IMP,3050,IMP 7:20 PM 9/16/1973 + + / MODEM TO IMP BUFFER TROUBLE +31217 000000 0 MI3: 0 +31220 100040 0 SZE +31221 025217 0 IRS MI3 +31222 101040 0 SNZ +31223 065646 0 IRS BUFT X +31224 101000 0 NOP +31225 103217 0 JMP MI3 I + + /MORE OF MODEM TO IMP DISCARD + +31226 000000 0 MI1A: 0 +31227 025630 0 IRS MTOT+1 +31230 070472 0 M2ERR +31231 103226 0 JMP MI1A I +31232 025635 0 IRS CKSM+1 +31233 025226 0 IRS MI1A +31234 101000 0 NOP +31235 103226 0 JMP MI1A I + +31236 000000 0 MI1B: 0 +31237 025631 0 IRS MTOT+2 +31240 070473 0 M3ERR +31241 103236 0 JMP MI1B I +31242 025636 0 IRS CKSM+2 +31243 025236 0 IRS MI1B +31244 101000 0 NOP +31245 103236 0 JMP MI1B I + +31246 000000 0 MI1C: 0 +31247 025632 0 IRS MTOT+3 +31250 070474 0 M4ERR +31251 103246 0 JMP MI1C I +31252 025637 0 IRS CKSM+3 +31253 025246 0 IRS MI1C +31254 101000 0 NOP +31255 103246 0 JMP MI1C I + +31256 000000 0 MI1D: 0 +31257 025633 0 IRS MTOT+4 +31260 070475 0 M5ERR +31261 103256 0 JMP MI1D I +31262 025640 0 IRS CKSM+4 +31263 025256 0 IRS MI1D +31264 101000 0 NOP +31265 103256 0 JMP MI1D I + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 250 IMP,3050,IMP 7:20 PM 9/16/1973 + + LEV H2I +31266 000000 4 HS4: 0 +31267 050111 4 STA BUFE X +31270 173762 4 LDX (PPSLT) I +31271 131040 4 RDCLOK +31272 003271 4 JMP .-1 +31273 050010 4 STA PPT1 X /SAVE SENT TIME FOR 1 PKT MESS +31274 173763 4 LDX (PPSLT 0 I) I +31275 103266 4 JMP HS4 I + +31276 000000 4 HS5: 0 /SHOULD ONLY DO THIS ONCE, NEED A C+ +31277 050030 4 STA PLT2 X +31300 131040 4 RDCLOK +31301 003300 4 JMP .-1 +31302 050044 4 STA PLT3 X /SAVE SENT TIME FOR 8 PKT MESS +31303 103276 4 JMP HS5 I + + LEV TSK LCK FRE +31304 000000 6 0 HS6: 0 +31305 131040 6 0 RDCLOK +31306 003305 6 0 JMP .-1 +31307 173764 6 0 LDX (PPTASK) I +31310 056010 6 0 SUB PPT1 X +31311 021322 6 0 JST HSTIME /GET ROUND-TRIP TIME FOR 1 PKT ME1 +31312 103765 6 0 JMP (PPTFRE) I + +31313 000000 6 0 HS7: 0 +31314 131040 6 0 RDCLOK +31315 003314 6 0 JMP .-1 +31316 173764 6 0 LDX (PPTASK) I +31317 056044 6 0 SUB PLT3 X +31320 021322 6 0 JST HSTIME /GET ROUND-TRIP TIME FOR 8 PKT MESS +31321 103766 6 0 JMP (GUDRP0) I + +31322 000000 6 0 HSTIME: 0 +31323 040475 6 0 LGR 3 +31324 173767 6 0 LDX (SOURCE) I +31325 055415 6 0 ADD HS4R X +31326 051415 6 0 STA HS4R X +31327 065515 6 0 IRS HS4S X +31330 103322 6 0 JMP HSTIME I + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 251 IMP,3050,IMP 7:20 PM 9/16/1973 + + LEV CON +31331 031660 C TUB1: XGP1+0 +31332 031666 C XGP1+6 +31333 031674 C XGP1+12. +31334 031702 C XGP1+18. +31335 031710 C XGP1+24. +31336 031716 C XGP1+30. + LEV VAR +31337 V IMT1: BSS 1 +31340 V IMT2: BSS 1 + + + /CUMULATIVE STATS SENT IN THIS ORDER + /STATISTICS GATHERED BY H2I +31341 V STTB: BSS 13. /HISTOGRAM OF H2I MESS LENGTH - A1 +31356 V TOT1: BSS 1 /TOTAL # OF H2I WORDS + /STATISTICS GATHERED BY I2H +31357 V XGP: BSS 13. /HISTOGRAM OF I2H MESS LENGTH - A1 +31374 V TOT2: BSS 1 /TOTAL # OF I2H WORDS + /STATISTICS GATHERED BY H2I +31375 V CNT2: BSS TH /# OF H2I ALL MESSAGES PER HOST + /STATISTICS GATHERED BY I2H +31405 V CNT3: BSS TH /# OF I2H CONTROL MESSAGES PER HOST + /STATISTICS GATHERED BY TSK +31415 V HS4R: BSS NIMP /TOTAL ROUND TRIP TIME IN 800 MS PE1 +31515 V HS4S: BSS NIMP /# OF ROUND TRIPS MEASURED ABOVE + /STATISTICS GATHERED BY I2M +31615 V IMHS: BSS CH /# OF HELLOS SENT PER LINE +31622 V ANS4: BSS CH /# OF DATA WOSDS SENT PER LINE + /STATISTICS GATHERED BY M2I +31627 V MTOT: BSS CH /# OF INPUTS RECVD PER LINE +31634 V CKSM: BSS CH /# OF CHECKSUM ERRORS PER LINE + /STATISTICS GATHERED BY TSK +31641 V TSKIHY: BSS CH /# OF I HEARD YOUS RECVD PER LINE + /STATISTICS GATHERED BY M2I +31646 V BUFT: BSS CH /# OF INPUTS LOST DUE TO LACK OF [ +31653 V SLOW: BSS CH /UNUSED + /STATISTICS GATHERED BY I2M +31660 V XGP1: BSS CH+CH+CH+CH+CH+CH /HISTOGRAM OF I2M MESSA[ +31716 V EP20: BSS 1 /BEGINNING OF PATCH AREA + NST=0+0+EP20-STTB + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 252 IMP,3050,IMP 7:20 PM 9/16/1973 + + LEV I2M + / LOG SUBROUTINE +31717 000000 2 LOG: 0 +31720 033742 2 STX LOGX +31721 022120 2 CAS SEVEN +31722 003731 2 JMP LOG1 +31723 101000 2 NOP +31724 100400 2 SPL +31725 003733 2 JMP LOG3 +31726 010000 2 STA 0 +31727 045743 2 LDA LOGT X +31730 003740 2 JMP LOG2 +31731 040575 2 LOG1: ARS 3 +31732 022120 2 CAS SEVEN +31733 004120 2 LOG3: LDA SEVEN +31734 101000 2 NOP +31735 010000 2 STA 0 +31736 045743 2 LDA LOGT X +31737 014116 2 ADD THREE +31740 073742 2 LOG2: LDX LOGX +31741 103717 2 JMP LOG I + + LEV VAR +31742 V LOGX: BSS 1 + LEV CON +31743 000000 C LOGT: 0 +31744 000000 C 0 +31745 000001 C 1 +31746 000001 C 1 +31747 000002 C 2 +31750 000002 C 2 +31751 000002 C 2 +31752 000002 C 2 + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 253 IMP,3050,IMP 7:20 PM 9/16/1973 + +31753 031341 C LEV CON CONSTANTS +31754 154137 C +31755 031357 C +31756 056124 C +31757 000011 C +31760 012655 C +31761 012654 C +31762 015156 C +31763 115156 C +31764 007131 C +31765 007213 C +31766 007215 C +31767 006673 C +31770 C SB1: BSS NSTATS /ADDRESSES FOR STAT INSTR +32010 C SC1: BSS NSTATS /NOMINAL CONTENTS + +02440 177030 C PAGEND 31,SC1+NSTATS + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 254 IMP,3050,IMP 7:20 PM 9/16/1973 + + + LEV VAR + TABZB: /THIS ENTIRE PAGE IS ZEROED AT INIT + /TABLES OF BUFFER PNTRS, NACH FOR EACH LINE +32030 V I2MB0: BSS NACH +32040 V I2MB1: BSS NACH +32050 V I2MB2: BSS NACH +32060 V I2MB3: BSS NACH +32070 V I2MB4: BSS NACH + /NULL AREAS +32100 V NULS1: BSS HEAD3-ACKH+1 /ACKS GO HERE +32105 V NULS2: BSS HEAD3-ACKH+1 /ACKS GO HERE +32112 V NULS3: BSS HEAD3-ACKH+1 /ACKS GO HERE +32117 V NULS4: BSS HEAD3-ACKH+1 /ACKS GO HERE +32124 V NULS5: BSS HEAD3-ACKH+1 /ACKS GO HERE + NTRCB=8 + TRACEL=TDONE+1 +32131 V TRACEQ: BSS NTRCB"T"TRACEL /TRACE STORE + TALLYL=8. +32261 V TALLY: BSS TALLYL /STACK OF TRANSMIT ALLOCATES WE HAVT + + DEFPLC [TRANSMIT, RECEIVE, AND ALLOCATE MESSAGE TABLES] +32271 V TMESS: BSS NIMP +32371 V RMESS: BSS NIMP +32471 V AMESS: BSS NIMP + DEFPLC [RALLY TABLE - ALLOCATES TO SEND] +32571 V RALLY: BSS NIMP + LEV CON +02441 176671 C PAGEND 32,-0 + + LEV VAR + /ROUTE SEND TABLES + /SEND ROUTING MESSAGE FROM HERE +33003 V RSTX: BSS 1 /ACKS +33004 V BSS 1 /HEADER +33005 V BSS 1 /SERIAL NO. (LH) +33006 V RST: BSS NIMP /ROUTE SEND TABLE +33106 V RSTCKS: BSS 1 /CHECKSUM + /END OF ROUTING MESSAGE + + /ALTERNATE ROUTING MESSAGE BUFFER 1 +33107 V RSTX1: BSS 1 /ACKS +33110 V BSS 1 /HEADER +33111 V BSS 1 /SERAIL NO. (LH) +33112 V RST1: BSS NIMP /ROUTE SEND TABLE +33212 V BSS 1 /CHECKSUM + + /ALTERNATE ROUTING MESSAGE BUFFER 2 +33213 V RSTX2: BSS 1 /ACKS +33214 V BSS 1 /HEADER +33215 V BSS 1 /SERIAL NO. (LH) +33216 V RST2: BSS NIMP /ROUTE SEND TABLE +33316 V BSS 1 /CHECKSUM + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 255 IMP,3050,IMP 7:20 PM 9/16/1973 + + LEV VAR + NREAB=8 /8 - NEED MANY FOR <8 PKT MESSAGES + REASL=RSF+1 +33317 V REASQ: BSS NREAB"T"REASL /REASSEMBLY STORE + PPTL=8. /NUMBER OF ENTRIES IN PPT + PPTN=2 /NUMBER OF WORDS PER ENTRY IN PPT + PPTNUM=PPTL"T"PPTN + DEFPLC [PPT - PENDING PACKET TABLE] +33457 V PPT: BSS PPTNUM /TABLE OF PNTRS TO PENDING PACKET1 + PLTL=12. /NUMBER OF ENTRIES IN PLT + PLTN=4 /NUMBER OF WORDS PER ENTRY IN PLT + PLTNUM=PLTL"T"PLTN + DEFPLC [PLT - PENDING LEADER TABLE] +33477 V PLT: BSS PLTNUM /TABLE OF COPIED PENDING LEADERS + HTPTBL: /TABLE OF HOST THROUGHPUTS +33557 V HTPMTN: BSS NH /MESSAGES FROM HOST TO NET +33563 V HTPMFN: BSS NH /MESSAGES TO HOST FROM NET +33567 V HTPPTN: BSS NH /PACKETS FROM HOST TO NET +33573 V HTPPFN: BSS NH /PACKETS TO HOST FROM NET +33577 V HTPMTL: BSS NH /MESSAGES FROM HOST TO LOCAL HOST +33603 V HTPMFL: BSS NH /MESSAGES TO HOST FROM LOCAL HO1 +33607 V HTPPTL: BSS NH /PACKETS FROM HOST TO LOCAL HOST +33613 V HTPPFL: BSS NH /PACKETS TO HOST FROM LOCAL HOST +33617 V HTPWTI: BSS NH /WORDS FROM HOST TO IMP +33623 V HTPWFI: BSS NH /WORDS TO HOST FROM IMP + TABZE: + TABZL=TABZE+0-TABZB + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 256 IMP,3050,IMP 7:20 PM 9/16/1973 + + LEV CON + IRP [PAGEN,,33,34,35,36] + PAGEND PAGEN,-0 + +02442 175627 C ENDIRP +02443 170053 C +02444 170061 C +02445 170067 C + + P36FB=FB + P36NB=NB +02446 170075 C PAGEND 37,-0 + P37NB=NB-1 /ALLOW FOR SAT CODE + P37FB=FB + + + 100003/ -0 VDHSTART VDHEND + .ASCII / VDH + + "Z"/ + NMAXS=4"T"CH + + 100001/ NBUFS-2 + .ASCII / TOTAL BUFFERS"Z"/ + + 100001/ P37NB + .ASCII / FEWER BUFFERS IF VDH PRESENT"Z"/ + + + 100001/ NMAXS + .ASCII / STORE AND FORWARD LIMIT"Z"/ + + 100001/ 0 0 [0 0 [NBUFS-NMAXS+10]"Q"10]"T"10+2 + .ASCII / REASSEMBLY LIMIT"Z"/ + + 100001/ NITB + .ASCII / IMP-TIP CONVERSION REGISTERS"Z"/ + + 100001/ NSTATS + .ASCII / STATISTICS GATHERING PLACES"Z"/ + + START + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 257 IMP,3050,IMP 7:20 PM 9/16/1973 + + /VERY DISTANT HOST + 37000/ VDHSTART: + ITBVP=0 + /FILL IN THE VDH/IMP INITIALIZATION TABLE + + LEV CON +03366 C VDHD VDH2,JST VDH2. I,NOP +37717 121407 C +02346 101000 C +02361 003366 C +21126 C VDHD VDH3,JST VDH3. I,NOP +37720 121661 C +02347 101000 C +02362 021126 C + + + /BUILD INSTRUCTIONS DEPENDENT ON M.N & H.N AND FINISH TABLE + + IRPC [L,,1234] + REPEAT 1IF VZ L-1-H.N,[ + + VD.HOI=H'L'OTIL + VD.HII=H'L'INIL + VD.HIB=H'L'INBP + VD.IHB=H'L'OTBP + VDHD SKST H.N,NOP,H'L'RDY + VDHD IHED H.N,IRS VD.OT,H'L'FOUT + VDHD IHOT H.N,NOP,H'L'ROUT + VDHD HER H.N,NOP,H'L'ERR + VDHD HIN H.N,JMP HIFAKE,H'L'IN + VDHD EMIT H.N,SKP,H'L'EOM + VDHD HENABT H.N, IRS VD.RDY, H'L'ENAB + ] + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 258 IMP,3050,IMP 7:20 PM 9/16/1973 + + /END THE REPEAT +21663 C ENDIRP +37721 101000 C +02350 070160 C +02363 021663 C +16125 C +37722 024475 C +02351 030260 C +02364 016125 C +17057 C +37723 101000 C +02352 030060 C +02365 017057 C +13171 C +37724 101000 C +02353 070060 C +02366 013171 C +13201 C +37725 003531 C +02354 030160 C +02367 013201 C +13304 C +37726 100000 C +02355 070260 C +02370 013304 C +16317 C +37727 024476 C +02356 030560 C +02371 016317 C + /HOST34=0 + V.1=74000 + V.2=134000 + V.3=154000 + V.4=164000 + V.5=170000 + /HOST34>0 + V..1=70000 + V..2=130000 + V..3=150000 + V..4=160000 + V..5=170000 + /HOST34<0 + V...1=60000 + V...2=120000 + V...3=140000 + V...4=160000 + V...5=160000 + + IRPC [L,,12345] + + REPEAT 1IF VZ L-1-M.N,[ + + VD.IIM=V.'L + VD..IM=V..'L + VD...M=V...'L + VD.OIP=M'L'OTBP + VDHD 64 M.N,VD.II,M2I'L + + + VDHD 71 M.N,VD.OI,I2M'L + + ] /END OF REPEAT +00066 C ENDIRP +37730 037124 C +02357 010113 C +02372 000066 C +00073 C +37731 037331 C +02360 012117 C +02373 000073 C + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 259 IMP,3050,IMP 7:20 PM 9/16/1973 + + + + + /PACKET CONTROL WORD FORMAT + + /BITS MEANINGS + /1 LAST PACKET BIT + /2 PACKET'S ODD/EVEN BIT + /3-8 PACKET'S WORD COUNT + / 0 = ACKS ALONE + / 1-63 = NUMBER OF WORDS (INCLUDING LEADER) + /9 HOST/IMP BIT -- ONE FROM HOST + /10 UNUSED + /11-12 UNUSED (CHANNEL 3 < CHANNEL 2 ACKS) + /13 CHANNEL 1 ACK + /14 CHANNEL 0 ACK + /15 UNUSED (EXTENDED CHANNEL NUMBER) + /16 CHANNEL NUMBER + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 260 IMP,3050,IMP 7:20 PM 9/16/1973 + + /VERY DISTANT HOST VARIABLES + VDHNC=2 /NUMBER OF CHANNELS + + LEV VAR +37000 V VD.TB: BSS VDHNC /TRANSMIT BUFFER POINTERS + /ZERO MEANS UNUSED + +37002 V VD.RB: BSS VDHNC /RECEIVE BUFFER POINTERS + /ZERO MEANS UNUSED + + VD.ZVB: /BEGINNING OF VARIABLES TO BE ZEROEI + +37004 000000 V VD.TFP: 0 /TRANSMIT FILL POINTER -- MUST "SEQ1 +37005 000000 V VD.TEP: 0 /TRANSMIT EMPTY POINTER + +37006 000000 V VD.REP: 0 /RECEIVE EMPTY POINTER -- MUST "SEQ1 + +37007 V VD.TOE: BSS VDHNC /TRANSMIT ODD/EVEN BITS + +37011 V VD.ROE: BSS VDHNC /RECEIVE ODD/EVEN BITS + +37013 000000 V VD.T: 0 /COUNTS IF TOO LONG WITHOUT ACK + /POSITIVE MEANS TOO LONG +37014 000000 V VD.R: 0 /COUNTS IF IT IS TIME TO SEND DUPL T + /POSITIVE MEANS SEND ON +37015 000000 V VD.D: 0 /COUNTS IF LINE HAS BEEN HELD DEAD T + /NEG MEANS NOT LONG ENOUGH + +37016 V VD.TE: BSS VDHNC /TRANSMIT LAST PACKET BIT +37020 V VD.RE: BSS VDHNC /RECEIVE LAST PACKET BIT + + + VD.ZVE: /END OF VARIABLES TO BE ZEROED + +37022 000000 V VD.HOL: 0 /EXPECTING OUTPUT OF LEADER FLAG + +37023 000000 V VD.RCN: 0 /RECEIVE CHANNEL NUMBER + +37024 000000 V VD.EXP: 0 /200 IF EXPECTING PKTS FROM HOST + /0 IF EXPECTING FROM SELF (LOOPED) + 15SECS=30 + 5SECS=10 + 2.5SECS=4 + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 261 IMP,3050,IMP 7:20 PM 9/16/1973 + + /VERY DISTANT HOST INITIALIZATION + + LEV BCK +37025 000000 7 VD.I: 0 +37026 005732 7 LDA (4000) +37027 026567 7 IMA VDHUPF /MARK VDH AS UP +37030 100040 7 SZE /WAS ALREADY UP? +37031 103025 7 JMP VD.I I /YES, JUST GO AWAY QUIETLY +37032 011000 7 STA VD.TB /ZERO RECEIVE AND TRANSMIT BUFFER ': +37033 011001 7 STA VD.TB 1 +37034 011002 7 STA VD.RB +37035 011003 7 STA VD.RB 1 +37036 005733 7 LDA (200) /BEGIN EXPECTING LINE UNLOOPED +37037 011024 7 STA VD.EXP +37040 001001 7 INH ALL +37041 121734 7 0 JST (GETFRE) I +37042 003112 7 0 JMP VD.I9 /NO BUFFERS FREE +37043 004000 7 0 LDA 0 +37044 015735 7 0 ADD (100000+CNTL+1) +37045 010024 7 0 STA M1INBP+2"T"M.N +37046 015736 7 0 ADD (BUFE-CNTL-1) +37047 010025 7 0 STA M1INBP+2"T"M.N+1 +37050 073737 7 0 LDX (-MAXVDH) +37051 045732 7 0 LDA ITBVDH+MAXVDH X /VDHDEFS +37052 111740 7 0 STA (ITBVDL+MAXVDH XI) I +37053 024000 7 0 IRS 0 +37054 003051 7 0 JMP .-3 +37055 030473 7 0 M1IN+M.N +37056 021060 7 0 JST VD.REI +37057 103025 7 0 JMP VD.I I + + LEV [VDI,T.O] LCK ALL +37060 000000 1 0 VD.REI: 0 /REINITIALIZE +37061 073741 1 0 LDX (VD.ZVB 0-VD.ZVE +37062 140040 1 0 CRA /ZERO VARIABLES WHICH NEED IT +37063 051022 1 0 STA VD.ZVE X +37064 024000 1 0 IRS 0 +37065 003063 1 0 JMP .-2 +37066 010036 1 0 STA VD.OIP /CLEAR OUTPUT INTERRUPT PENDING F1 +37067 072124 1 0 LDX MINUS4 /FREE ANY BUFFERS +37070 033022 1 0 STX VD.HOL /INITIALIZE TO NON-ZERO +37071 032475 1 0 STX VD.OT /FIX OUTPUT TYPE FLAG *TEMP* +37072 140040 1 0 VD.REK: CRA +37073 067004 1 0 IMA VD.TB 4 X +37074 101040 1 0 SNZ +37075 003103 1 0 JMP VD.REJ +37076 033114 1 0 STX VD.REX +37077 140100 1 0 SSP +37100 010000 1 0 STA 0 +37101 120671 1 0 JST FLUSHI I +37102 073114 1 0 LDX VD.REX +37103 024000 1 0 VD.REJ: IRS 0 +37104 003072 1 0 JMP VD.REK +37105 005742 1 0 LDA (-15SECS +37106 011015 1 0 STA VD.D /MARK TO HOLD LINE DEAD +37107 005743 1 0 LDA (NOP /DROP READY LINE +37110 111744 1 0 STA (SKST H.N) I + + +37111 103060 1 0 JMP VD.REI I /DONE, SO RETURN + +37112 024144 1 0 VD.I9: IRS VDHRSF /TRY AGAIN LATER +37113 003025 1 0 JMP VD.I + LEV VAR +37114 000000 V VD.REX: 0 + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 262 IMP,3050,IMP 7:20 PM 9/16/1973 + + /VERY DISTANT HOST INPUT INTERRUPT ROUTINE + LEV VAR +37115 000000 V VD.IK: 0 /SAVED KEYS +37116 000000 V VD.IIB: 0 /BUFFER POINTER +37117 000000 V VD.IA: 0 /SAVED A +37120 000000 V VD.IX: 0 /SAVED X +37121 000000 V VD.IM: 0 /SAVED MASK +37122 000000 V VD.RBL: 0 /RECEIVE BUFFER LENGTH +37123 000000 V VD.CWP: 0 /POINTER TO PACKET CONTROL WORD + +37124 000000 1 0 VD.II: INT VDI +37125 011117 1 0 STA VD.IA /SAVE MASK AND REGISTERS +37126 033120 1 0 STX VD.IX +37127 105745 1 0 LDA (HOST34) I +37130 073746 1 0 LDX (VD.IIM) /HOST34=0 +37131 100040 1 0 SZE +37132 073747 1 0 LDX (VD..IM) /HOST34>0 +37133 100400 1 0 SPL +37134 073750 1 0 LDX (VD...M) /HOST34<0 +37135 004000 1 0 LDA 0 +37136 170120 1 0 SMK INTM +37137 026134 1 0 IMA PRIM +37140 011121 1 0 STA VD.IM +37141 000043 1 0 INK +37142 011115 1 0 STA VD.IK +37143 120672 1 0 JST DODXA I RET VDI +37144 004025 1 LDA M1INBP+1 2"T"M.N /GET BUFFER POINTER +37145 140100 1 SSP +37146 017751 1 SUB (BUFE /SAVE BUFFER POINTER +37147 011116 1 STA VD.IIB +37150 015752 1 ADD (CNTL 1 +37151 011123 1 STA VD.CWP +37152 005015 1 LDA VD.D /IS LINE BEING HELD DEAD +37153 100400 1 SPL +37154 003171 1 JMP VD.II2 /YES +37155 070473 1 M1ERR M.N /ERROR? +37156 100000 1 SKP +37157 003171 1 JMP VD.II2 /YES +37160 105123 1 LDA VD.CWP I +37161 007733 1 ANA (200) +37162 013024 1 ERA VD.EXP /IS PACKET FROM WHOM EXPECTED? +37163 101040 1 SNZ +37164 003212 1 JMP VD.II1 /YES, GO PROCESS IT +37165 013024 1 ERA VD.EXP /NO, CHANGE STATE OF VD.EXP +37166 011024 1 STA VD.EXP +37167 001001 1 INH ALL + DEFHLT [VDH LOOP STATE CHANGED] +37170 021317 1 0 JST VD.APH + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 263 IMP,3050,IMP 7:20 PM 9/16/1973 + + LEV VDI +37171 005116 1 VD.II2: LDA VD.IIB /DO INPUT +37172 015735 1 VD.II8: ADD (100000 CNTL 1 +37173 010024 1 STA M1INBP 2"T"M.N +37174 015736 1 ADD (BUFE-CNTL-1 +37175 010025 1 STA M1INBP+1 2"T"M.N +37176 030473 1 M1IN M.N +37177 073120 1 LDX VD.IX /RESTORE MASK AND REGISTERS +37200 001001 1 INH MSK +37201 005121 1 0 LDA VD.IM +37202 170120 1 0 SMK INTM +37203 010134 1 0 STA PRIM +37204 000013 1 0 EXA +37205 005115 1 0 LDA VD.IK +37206 171020 1 0 OTK +37207 005117 1 0 LDA VD.IA +37210 000401 1 0 ENB VDI +37211 103124 1 JMP VD.II I /RETURN + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 264 IMP,3050,IMP 7:20 PM 9/16/1973 + +37212 105123 1 VD.II1: LDA VD.CWP I /PROCESS ACKS +37213 072113 1 LDX ZERO /CHANNEL ZERO ACK +37214 040576 1 ARS 2 +37215 021273 1 JST VD.AP +37216 072114 1 LDX ONE /CHANNEL ONE ACK +37217 105123 1 LDA VD.CWP I +37220 040575 1 ARS 3 +37221 021273 1 JST VD.AP +37222 105123 1 LDA VD.CWP I /IS PACKET A DUPLICATE +37223 006114 1 ANA ONE +37224 011023 1 STA VD.RCN /SAVE CHANNEL # FOR LATER USE +37225 010000 1 STA 0 +37226 105123 1 LDA VD.CWP I /GET PACKET O/E BIT +37227 041676 1 ALR 2 +37230 053011 1 ERA VD.ROE X /MATCH AGAINST RECEIVE O/E BIT +37231 100100 1 SLZ +37232 003171 1 JMP VD.II2 /DUPLICATE +37233 105123 1 LDA VD.CWP I /IS THERE ANY DATA +37234 141340 1 ICA +37235 006752 1 ANA C77 +37236 101040 1 SNZ +37237 003171 1 JMP VD.II2 /NO +37240 011122 1 STA VD.RBL +37241 073023 1 LDX VD.RCN /IS THERE ROOM FOR THIS BUFFER +37242 045002 1 LDA VD.RB X +37243 100040 1 SZE +37244 003171 1 JMP VD.II2 /NO +37245 105123 1 LDA VD.CWP I /SAVE LAST PACKET BIT FOR BACKGROUN +37246 006112 1 ANA SIGN +37247 051020 1 STA VD.RE X +37250 001001 1 INH FRE /IS THERE A FREE BUFFER +37251 104324 1 0 LDA FREE I +37252 101040 1 0 SNZ /POSITIVE NO IN A REG +37253 003171 1 0 JMP VD.II2 /NO +37254 011014 1 0 STA VD.R /MARK THAT THERE IS ACK TO SEND +37255 045011 1 0 LDA VD.ROE X /COMPLEMENT O/E BIT +37256 012114 1 0 ERA ONE +37257 051011 1 0 STA VD.ROE X +37260 005116 1 0 LDA VD.IIB /USE NEW BUFFER FOR INPUT +37261 051002 1 0 STA VD.RB X /PASS RECEIVED BUFFER TO BACKGROUND +37262 010000 1 0 STA 0 /GET BUFFER LENGTH +37263 005122 1 0 LDA VD.RBL /PUT COUNT IN BUFE +37264 050111 1 0 STA BUFE X + LEV VDI +37265 001001 1 VD.II7: INH FRE +37266 024563 1 0 IRS NFS /GET A FREE BUFFER NFS +37267 104324 1 0 LDA FREE I +37270 026324 1 0 IMA FREE +37271 000401 1 0 ENB VDI +37272 003172 1 JMP VD.II8 + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 265 IMP,3050,IMP 7:20 PM 9/16/1973 + + /VERY DISTANT HOST ACKNOWLEDGE PROCESSOR + /CALL WITH ACK BIT IN AC + +37273 000000 1 VD.AP: 0 +37274 053007 1 ERA VD.TOE X /IS THIS A DUPLICATE ACK +37275 101100 1 SLN +37276 003312 1 JMP VD.AP1 /YES +37277 045007 1 LDA VD.TOE X /COMPLEMENT TRANSMIT O/E BIT +37300 012114 1 ERA ONE +37301 051007 1 STA VD.TOE X +37302 045000 1 LDA VD.TB X +37303 001001 1 INH ALL +37304 100040 1 0 SZE /SPURIOUS ACK? +37305 003307 1 0 JMP VD.AP2 /NO + DEFHLT [VDH SPURIOUS ACK] +37306 021317 1 0 JST VD.APH /YES +37307 000401 1 0 VD.AP2: ENB VDI +37310 140500 1 SSM /MARK CHANNEL UNUSED +37311 051000 1 STA VD.TB X +37312 005753 1 VD.AP1: LDA (-5SECS /RESET T +37313 011013 1 STA VD.T +37314 004112 1 LDA SIGN /BRING READY LINE UP +37315 111744 1 STA (SKST H.N) I +37316 103273 1 JMP VD.AP I + + LCK M2I +37317 000000 1 0 VD.APH: 0 +37320 120745 1 0 JST HLTNCC I +37321 021060 1 0 JST VD.REI +37322 003171 1 0 JMP VD.II2 + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 266 IMP,3050,IMP 7:20 PM 9/16/1973 + + /VERY DISTANT HOST OUTPUT INTERRUPT + LEV VAR +37323 000000 V VD.OK: 0 /SAVED KEYS +37324 000000 V VD.OA: 0 /SAVED A +37325 000000 V VD.OX: 0 /SAVED X +37326 000000 V VD.OM: 0 /SAVED MASK +37327 000000 V VD.OB: 0 /SAVED POINTER +37330 000000 V VD.CW: 0 /CONTROL WORD + +37331 000000 2 0 VD.OI: INT VDO +37332 011324 2 0 STA VD.OA /SAVE MASK AND REGISTERS +37333 004502 2 0 LDA MOM +37334 170120 2 0 SMK INTM +37335 026134 2 0 IMA PRIM +37336 011326 2 0 STA VD.OM +37337 000043 2 0 INK +37340 011323 2 0 STA VD.OK +37341 120672 2 0 JST DODXA I RET VDO +37342 033325 2 STX VD.OX +37343 140040 2 CRA +37344 010036 2 STA VD.OIP /CLEAR OUTPUT INT PENDING FLAG + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 267 IMP,3050,IMP 7:20 PM 9/16/1973 + +37345 005015 2 LDA VD.D /LINE BEING HELD DEAD? +37346 100400 2 SPL +37347 003364 2 JMP VD.OI2 /YES +37350 021407 2 JST VD.OIS /SERVICE ONE CHANNEL +37351 021407 2 JST VD.OIS /SERVICE ANOTHER CHANNEL +37352 005014 2 LDA VD.R /ACK WAITING TO GO BACK? +37353 100400 2 SPL +37354 003364 2 JMP VD.OI2 /NO +37355 021377 2 JST VD.OIT +37356 005754 2 LDA (VD.CW /SETUP OUTPUT POINTER TO SEND CW +37357 010036 2 STA M1OTBP 2"T"M.N +37360 010037 2 VD.OI3: STA M1OTBP+1 2"T"M.N +37361 005755 2 LDA (-2.5SECS /RESET R +37362 011014 2 STA VD.R +37363 030073 2 M1OUT M.N /DO OUTPUT + + +37364 073325 2 VD.OI2: LDX VD.OX /RESTORE MASK AND REGISTERS +37365 001001 2 INH MSK +37366 005326 2 0 LDA VD.OM +37367 170120 2 0 SMK INTM +37370 010134 2 0 STA PRIM +37371 000013 2 0 EXA +37372 005323 2 0 LDA VD.OK +37373 171020 2 0 OTK +37374 005324 2 0 LDA VD.OA +37375 000401 2 0 ENB VDO +37376 103331 2 JMP VD.OI I /RETURN + + +37377 000000 2 VD.OIT: 0 /BUILD ACKS +37400 001001 2 INH VDI +37401 005012 2 1 LDA VD.ROE 1 +37402 041577 2 1 ALS 1 +37403 013011 2 1 ERA VD.ROE +37404 041576 2 1 ALS 2 +37405 011330 2 1 STA VD.CW +37406 103377 2 1 JMP VD.OIT I + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 268 IMP,3050,IMP 7:20 PM 9/16/1973 + + RET VDO +37407 000000 2 VD.OIS: 0 +37410 005005 2 LDA VD.TEP /TRY OTHER CHANNEL +37411 012114 2 ERA ONE +37412 011005 2 STA VD.TEP +37413 001001 2 INH VDI +37414 073005 2 1 LDX VD.TEP +37415 045000 2 1 LDA VD.TB X +37416 101040 2 1 SNZ +37417 103407 2 1 JMP VD.OIS I /NOTHING TO DO WITH CHANNEL +37420 100400 2 1 SPL +37421 003445 2 1 JMP VD.OI1 +37422 011327 2 1 STA VD.OB +37423 021377 2 1 JST VD.OIT +37424 045007 2 1 LDA VD.TOE X /SET UP MORE OF CONTROL WORD +37425 040676 2 1 ARR 2 +37426 013330 2 1 ERA VD.CW /O/E BIT +37427 013005 2 1 ERA VD.TEP /CHANNEL NUMBER +37430 053016 2 1 ERA VD.TE X /LAST PACKET BIT +37431 011330 2 1 STA VD.CW +37432 073327 2 1 LDX VD.OB /SET UP CONTROL WORD IN OUTPUT BUF*] +37433 044111 2 1 LDA BUFE X /PUT COUNT IN CW +37434 141240 2 1 ICR +37435 015330 2 1 ADD VD.CW +37436 050010 2 1 STA CNTL 1 X +37437 004000 2 1 LDA 0 /SET UP OUTPUT POINTERS +37440 015752 2 1 ADD (CNTL 1 +37441 010036 2 1 STA M1OTBP 2"T"M.N +37442 054111 2 1 ADD BUFE X +37443 140100 2 1 SSP 0"A"TWOQ +37444 003360 2 1 JMP VD.OI3 +37445 140040 2 1 VD.OI1: CRA +37446 067000 2 1 IMA VD.TB X +37447 140100 2 1 SSP /FREE BUFFER +37450 010000 2 1 STA 0 +37451 001001 2 1 INH FRE +37452 120671 2 0 JST FLUSHI I +37453 103407 2 0 JMP VD.OIS I + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 269 IMP,3050,IMP 7:20 PM 9/16/1973 + + /VERY DISTANT HOST TIMEOUT ROUTINE + + LEV T.O +37454 000000 5 VD.TO: 0 +37455 140040 5 CRA +37456 026476 5 IMA VD.RDY /DID IH FLAP READY LINE? +37457 100040 5 SZE +37460 003476 5 JMP VD.TO3 /YES +37461 005015 5 LDA VD.D /IS D COUNTING +37462 101400 5 SMI +37463 003471 5 JMP VD.TO1 /NO +37464 025015 5 IRS VD.D /WAITED LONG ENOUGH ? +37465 103454 5 JMP VD.TO I /NO +37466 005755 5 LDA (-2.5SECS /RESET R +37467 011014 5 STA VD.R +37470 103454 5 JMP VD.TO I +37471 005013 5 VD.TO1: LDA VD.T +37472 101400 5 SMI +37473 103454 5 JMP VD.TO I +37474 025013 5 IRS VD.T /HAS LINE GONE DEAD +37475 003501 5 JMP VD.TO2 /NO +37476 001001 5 VD.TO3: INH VDI +37477 021060 5 1 JST VD.REI /REINITIALIZE +37500 103454 5 1 JMP VD.TO I +37501 025014 5 1 VD.TO2: IRS VD.R /TIME TO SEND HELLO? +37502 101000 5 1 NOP +37503 103454 5 1 JMP VD.TO I + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 270 IMP,3050,IMP 7:20 PM 9/16/1973 + + /VERY DISTANT HOST BACKGROUND ROUTINE + LEV VAR +37504 000000 V VD.BM: 0 /SAVED MASK +37505 000000 V VD.IB: 0 +37506 000000 V VD.BB: 0 +37507 000000 V VD.BBT: 0 +37510 000000 V VD.BBF: 0 + + LEV VDB +37511 000000 3 VD.B: 0 +37512 001001 3 INH MSK +37513 004500 3 0 LDA IHM +37514 170120 3 0 SMK INTM +37515 026134 3 0 IMA PRIM +37516 011504 3 0 STA VD.BM +37517 000401 3 0 ENB VDB +37520 105756 3 LDA (HITT H.N) I /IS HOST WAITING FOR INPU +37521 022121 3 CAS MINUS1 +37522 100000 3 SKP +37523 003612 3 JMP VD.B1 /ND +37524 005743 3 LDA (NOP +37525 111757 3 STA (EMFH H.N) I +37526 073006 3 LDX VD.REP /HAS THE NEXT SEQUENTIAL PACKET ARR +37527 045002 3 LDA VD.RB X +37530 101040 3 SNZ +37531 003612 3 JMP VD.B1 /NO +37532 011505 3 STA VD.IB /SAVE BUFFER POINTER FOR LATER USF +37533 004454 3 LDA HILO H.N +37534 013760 3 ERA (HIFRST /INITIAL INPUT EXPECTED BY HI +37535 101040 3 SNZ +37536 003605 3 JMP VD.B4 /YES +37537 013761 3 ERA (0 0 HIFRST"X"VD.1P /HI EXPECTING LEADER +37540 100040 3 SZE +37541 003560 3 JMP VD.B3 /NO +37542 073505 3 LDX VD.IB /SAVE LEADER IN HOST BUFFER +37543 044011 3 LDA DATA X +37544 110052 3 STA VD.HIB I +37545 044012 3 LDA DATA 1 X +37546 024052 3 IRS VD.HIB +37547 110052 3 STA VD.HIB I +37550 073006 3 LDX VD.REP /LAST PACKET IN MESSAGE +37551 045020 3 LDA VD.RE X +37552 100400 3 SPL +37553 003605 3 JMP VD.B4 /YES +37554 001001 3 VD.B53: INH FRE /FLUSH THE BUFFER THE LEADER CAME ' +37555 073505 3 0 LDX VD.IB +37556 120671 3 0 JST FLUSHI I +37557 003577 3 0 JMP VD.B13 + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 271 IMP,3050,IMP 7:20 PM 9/16/1973 + + LEV VDB +37560 005505 3 VD.B3: LDA VD.IB /SWAP RECEIVED BUFFER WITH HOST BUF[ +37561 127762 3 IMA (HISP H.N) I +37562 010000 3 STA 0 +37563 050111 3 STA BUFE X +37564 001001 3 INH FRE /RETURN HOST BUFFER TO FREE LIST +37565 120671 3 0 JST FLUSHI I +37566 073505 3 0 LDX VD.IB /SET UP HARDWARE BUFFER POINTER +37567 044111 3 0 LDA BUFE X +37570 015505 3 0 ADD VD.IB +37571 015763 3 0 ADD (DATA +37572 010052 3 0 STA VD.HIB +37573 073006 3 0 LDX VD.REP +37574 045020 3 0 LDA VD.RE X +37575 100400 3 0 SPL +37576 111757 3 0 STA (EMFH H.N) I +37577 073006 3 0 VD.B13: LDX VD.REP +37600 140040 3 0 CRA +37601 051002 3 0 STA VD.RB X /CLEAR CHANNEL +37602 005006 3 0 LDA VD.REP /SEQUENCE REP +37603 012114 3 0 ERA ONE +37604 011006 3 0 STA VD.REP + LEV VDB +37605 001001 3 VD.B4: INH SIN +37606 000013 3 0 EXA +37607 120101 3 0 JST VD.HII I RET VDB +37610 001001 3 INH ALL +37611 120672 3 0 JST DODXA I RET VDB + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 272 IMP,3050,IMP 7:20 PM 9/16/1973 + +37612 073004 3 VD.B1: LDX VD.TFP /IS NEXT SEQUENTIAL OUTPUT CHANNEL , +37613 045000 3 LDA VD.TB X +37614 100040 3 SZE +37615 003704 3 JMP VD.B2 /NO +37616 051016 3 STA VD.TE X /CLEAR LAST PACKET INDICATOR +37617 004046 3 LDA VD.IHB /IS THERE SOMETHING TO SEND FROM F'1 +37620 101040 3 SNZ +37621 003704 3 JMP VD.B2 /NO +37622 121734 3 JST (GETFRE) I LCK FRE /CAN WE HAVE A FREE BUFF T +37623 003704 3 0 JMP VD.B2 /NO +37624 000401 3 0 ENB VDB +37625 033506 3 STX VD.BB /PUT BUFFER IN OUTPUT CHANNEL +37626 027022 3 IMA VD.HOL /LEADER? +37627 100040 3 SZE +37630 003646 3 JMP VD.B6 /YES +37631 004047 3 LDA VD.IHB+1 /SAVE LENGTH +37632 016046 3 SUB VD.IHB +37633 141206 3 AOA +37634 050111 3 STA BUFE X +37635 104046 3 VD.B6N: LDA VD.IHB I /COPY A WORD +37636 050011 3 STA DATA X +37637 024000 3 IRS 0 +37640 024046 3 IRS VD.IHB +37641 004047 3 LDA VD.IHB+1 /DONE? +37642 016046 3 SUB VD.IHB +37643 101400 3 SMI +37644 003635 3 JMP VD.B6N /NO +37645 003662 3 JMP VD.B6D + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 273 IMP,3050,IMP 7:20 PM 9/16/1973 + +37646 104046 3 VD.B6: LDA VD.IHB I /COPY LEADER +37647 050011 3 STA DATA X +37650 024046 3 IRS VD.IHB +37651 104046 3 LDA VD.IHB I +37652 050012 3 STA DATA 1 X +37653 004115 3 LDA TWO /SET UP WORD COUNT +37654 050111 3 STA BUFE X +37655 004046 3 LDA VD.IHB +37656 024046 3 IRS VD.IHB +37657 016047 3 SUB VD.IHB 1 /ONLY LEADER IN MESSAGE? +37660 100040 3 SZE +37661 003676 3 JMP VD.B6K /NO +37662 140040 3 VD.B6D: CRA +37663 026475 3 IMA VD.OT /CLEAR FINAL OUT FLAG +37664 011022 3 STA VD.HOL /SET EXPECTING LEADER OR NOT +37665 100040 3 SZE +37666 004112 3 LDA SIGN /PASS LAST PACKET BIT TO OUTPUT +37667 073004 3 LDX VD.TFP +37670 051016 3 STA VD.TE X +37671 001001 3 INH SIN +37672 000013 3 0 EXA +37673 120077 3 0 JST VD.HOI I RET VDB /FAKE HOST INTERRUPT +37674 001001 3 INH SIN +37675 120672 3 0 JST DODXA I RET VDB +37676 073004 3 VD.B6K: LDX VD.TFP /FILL OUTPUT CHANNEL +37677 005506 3 LDA VD.BB +37700 051000 3 STA VD.TB X +37701 005004 3 LDA VD.TFP /SEQUENCE TFP +37702 012114 3 ERA ONE +37703 011004 3 STA VD.TFP + +37704 004036 3 VD.B2: LDA VD.OIP /OUTPUT INTERRUPT PENDING? +37705 001001 3 INH SIN +37706 000013 3 0 EXA +37707 101040 3 0 SNZ +37710 021331 3 0 JST VD.OI RET VDB /NO -- WAKE UP OUTPUT IT* +37711 001001 3 INH MSK +37712 005504 3 0 LDA VD.BM +37713 170120 3 0 SMK INTM +37714 010134 3 0 STA PRIM +37715 120672 3 0 JST DODXA I RET VDB +37716 103511 3 JMP VD.B I + + + + + *** THIS DOCUMENT MAY CONTAIN BBN PROPRIETARY INFORMATION. *** + *** FURNISHED FOR U. S. GOVERNMENT END USE ONLY. *** +PAGE 274 IMP,3050,IMP 7:20 PM 9/16/1973 + + LEV CON +37717 C ITBVDH: BSS MAXVDH +37732 004000 C CONSTANTS +37733 000200 C +37734 004372 C +37735 100010 C +37736 000101 C +37737 177765 C +37740 142374 C +37741 177762 C +37742 177750 C +37743 101000 C +37744 021663 C +37745 001005 C +37746 154000 C +37747 150000 C +37750 140000 C +37751 000111 C +37752 000010 C +37753 177770 C +37754 037330 C +37755 177774 C +37756 013140 C +37757 013314 C +37760 013400 C +37761 007453 C +37762 013334 C +37763 000011 C + VDHEND=37777 + START diff --git a/H316/tests/imp2.cmd b/H316/tests/imp2.cmd new file mode 100644 index 00000000..6502c13f --- /dev/null +++ b/H316/tests/imp2.cmd @@ -0,0 +1,19 @@ +;; *** IMP NODE #2 SETUP *** + +; IMP #2 connects to IMP #2 via modem line 1 on both ends ... + +; Set the simulator configuration ... +echo Creating standard configuration for IMP #2 ... +do impconfig.cmd +SET IMP NUM=2 + +; Load the IMP code ... +echo Loading IMP code ... +do impcode.cmd + +; Start up the modem links! +echo Attaching modem links ... +ATTACH MI1 4421::4431 + +; And we're done .. +echo Type GO to start ... diff --git a/H316/tests/imp3.cmd b/H316/tests/imp3.cmd new file mode 100644 index 00000000..1e4eeefe --- /dev/null +++ b/H316/tests/imp3.cmd @@ -0,0 +1,22 @@ +;; *** IMP NODE #3 SETUP *** + +; IMP #3 connects to IMP #2 and #4 both. Modem line 1 on this end connects +; to line 1 on the IMP 2 end, and line 2 on this end connects to IMP 3 line 1. + +; Set the simulator configuration ... +echo Creating standard configuration for IMP #3 ... +do impconfig.cmd +SET IMP NUM=3 + +; Load the IMP code ... +echo Loading IMP code ... +do impcode.cmd + +; Start up the modem links! +echo Attaching modem links ... +SET MI2 ENABLED +ATTACH MI1 4431::4421 +ATTACH MI2 4432::4441 + +; And we're done .. +echo Type GO to start ... diff --git a/H316/tests/imp4.cmd b/H316/tests/imp4.cmd new file mode 100644 index 00000000..355b7a6d --- /dev/null +++ b/H316/tests/imp4.cmd @@ -0,0 +1,20 @@ +;; *** IMP NODE #4 SETUP *** + +; IMP #4 coneects to IMP #3 via modem line 1 on this end and modem line +; 2 on the IMP 3 end ... + +; Set the simulator configuration ... +echo Creating standard configuration for IMP #4 ... +do impconfig.cmd +SET IMP NUM=4 + +; Load the IMP code ... +echo Loading IMP code ... +do impcode.cmd + +; Start up the modem links! +echo Attaching modem links ... +ATTACH MI1 4441::4432 + +; And we're done .. +echo Type GO to start ... diff --git a/H316/tests/impcode.cmd b/H316/tests/impcode.cmd new file mode 100644 index 00000000..af5213d3 --- /dev/null +++ b/H316/tests/impcode.cmd @@ -0,0 +1,8237 @@ +de all 000000 +de 00060 001261 +de 00061 001252 +de 00062 001017 +de 00063 025061 +de 00064 010043 +de 00065 010067 +de 00066 010113 +de 00067 010137 +de 00067 016012 +de 00070 010163 +de 00070 016020 +de 00071 012127 +de 00072 012123 +de 00073 012117 +de 00074 012113 +de 00074 013056 +de 00075 012107 +de 00075 013064 +de 00076 016034 +de 00100 013100 +de 00102 020022 +de 00103 005107 +de 00104 023033 +de 00105 003050 +de 00107 177721 +de 00110 177704 +de 00112 100000 +de 00114 000001 +de 00115 000002 +de 00116 000003 +de 00117 000004 +de 00120 000007 +de 00121 177777 +de 00122 177776 +de 00123 177775 +de 00124 177774 +de 00125 177773 +de 00126 177772 +de 00127 177773 +de 00130 000004 +de 00131 177770 +de 00132 177700 +de 00135 102104 +de 00143 177400 +de 00570 000004 +de 00574 031212 +de 00575 031304 +de 00576 031313 +de 00577 031202 +de 00600 031226 +de 00601 031236 +de 00602 031246 +de 00603 031256 +de 00604 031217 +de 00605 031160 +de 00606 031072 +de 00607 031055 +de 00610 031266 +de 00611 031276 +de 00612 031113 +de 00613 031076 +de 00622 032030 +de 00623 032040 +de 00624 032050 +de 00625 032060 +de 00626 032070 +de 00664 013210 +de 00665 003234 +de 00666 017347 +de 00667 003240 +de 00670 015371 +de 00671 005373 +de 00672 017343 +de 00677 053333 +de 00700 056155 +de 00745 022404 +de 00751 000010 +de 00752 000077 +de 00753 000100 +de 00766 016177 +de 00767 021664 +de 00775 013315 +de 00776 013141 +de 01000 003111 +de 01001 003031 +de 01002 001177 +de 01003 003021 +de 01004 003022 +de 01011 010045 +de 01012 024045 +de 01013 003012 +de 01014 024044 +de 01015 003011 +de 01016 003102 +de 01020 024133 +de 01021 140040 +de 01022 001001 +de 01023 030040 +de 01024 017560 +de 01025 041577 +de 01026 010047 +de 01027 005005 +de 01030 010046 +de 01031 005037 +de 01032 101000 +de 01033 000201 +de 01034 005561 +de 01035 000011 +de 01036 003154 +de 01037 001040 +de 01040 004047 +de 01041 101400 +de 01042 003046 +de 01043 131040 +de 01044 003043 +de 01045 007562 +de 01046 010000 +de 01047 005563 +de 01050 050032 +de 01051 015564 +de 01052 050033 +de 01053 005565 +de 01054 050020 +de 01055 005566 +de 01056 050021 +de 01057 143137 +de 01060 030071 +de 01061 003213 +de 01062 003073 +de 01063 030072 +de 01064 003213 +de 01065 003073 +de 01066 030073 +de 01067 003213 +de 01070 003073 +de 01071 030074 +de 01072 003213 +de 01073 005567 +de 01074 010044 +de 01075 010045 +de 01076 024045 +de 01077 003076 +de 01100 024044 +de 01101 003075 +de 01102 044020 +de 01103 013566 +de 01104 100040 +de 01105 003031 +de 01106 045140 +de 01107 010777 +de 01110 002777 +de 01111 031040 +de 01112 004046 +de 01113 011005 +de 01114 073570 +de 01115 044104 +de 01116 111571 +de 01117 024000 +de 01120 003115 +de 01121 005127 +de 01122 000201 +de 01123 005572 +de 01124 070042 +de 01125 005573 +de 01126 003154 +de 01127 001130 +de 01130 073570 +de 01131 105571 +de 01132 050104 +de 01133 024000 +de 01134 003131 +de 01135 024133 +de 01136 103574 +de 01137 001060 +de 01140 070471 +de 01141 001063 +de 01142 070472 +de 01143 001066 +de 01144 070473 +de 01145 001071 +de 01146 070474 +de 01147 040001 +de 01150 100001 +de 01153 040001 +de 01154 170120 +de 01155 073575 +de 01156 005002 +de 01157 050104 +de 01160 024000 +de 01161 003157 +de 01162 073576 +de 01163 030171 +de 01164 030172 +de 01165 030173 +de 01166 030174 +de 01167 030175 +de 01170 030470 +de 01171 030460 +de 01172 030450 +de 01173 030451 +de 01174 024000 +de 01175 003163 +de 01176 021177 +de 01200 000011 +de 01201 003202 +de 01202 000401 +de 01203 073577 +de 01204 024000 +de 01205 003204 +de 01206 000201 +de 01207 026000 +de 01210 170120 +de 01211 001001 +de 01212 042000 +de 01213 005600 +de 01214 010044 +de 01215 010045 +de 01216 024045 +de 01217 003216 +de 01220 024044 +de 01221 003215 +de 01222 043223 +de 01223 030471 +de 01224 003073 +de 01225 030472 +de 01226 003073 +de 01227 030473 +de 01230 003073 +de 01231 030474 +de 01232 003073 +de 01233 000001 +de 01234 000002 +de 01235 000004 +de 01236 000010 +de 01237 000020 +de 01240 000040 +de 01241 000100 +de 01242 000200 +de 01243 000400 +de 01244 001000 +de 01245 002000 +de 01246 000010 +de 01247 000004 +de 01250 000002 +de 01251 000001 +de 01253 001001 +de 01254 111601 +de 01255 133602 +de 01256 005252 +de 01257 111603 +de 01260 120062 +de 01262 030026 +de 01263 140040 +de 01264 010324 +de 01265 005604 +de 01266 010133 +de 01267 005273 +de 01270 010517 +de 01271 073274 +de 01272 002324 +de 01273 002000 +de 01274 102517 +de 01275 001001 +de 01276 000013 +de 01277 030451 +de 01300 030551 +de 01301 030251 +de 01302 000201 +de 01303 073605 +de 01304 044200 +de 01305 051551 +de 01306 024000 +de 01307 003304 +de 01310 024000 +de 01311 003310 +de 01312 000201 +de 01313 041577 +de 01314 010000 +de 01315 131041 +de 01316 003315 +de 01317 013606 +de 01320 101040 +de 01321 010000 +de 01322 005607 +de 01323 010075 +de 01324 005610 +de 01325 010077 +de 01326 004000 +de 01327 100040 +de 01330 005611 +de 01331 015612 +de 01332 050030 +de 01333 005613 +de 01334 050031 +de 01335 005610 +de 01336 010076 +de 01337 140407 +de 01340 010074 +de 01341 004077 +de 01342 100040 +de 01343 003347 +de 01344 024077 +de 01345 024076 +de 01346 024074 +de 01347 104077 +de 01350 110076 +de 01351 024077 +de 01352 024076 +de 01353 024074 +de 01354 003347 +de 01355 043356 +de 01356 030251 +de 01357 003371 +de 01360 030071 +de 01361 003371 +de 01362 030072 +de 01363 003371 +de 01364 030073 +de 01365 003371 +de 01366 030074 +de 01367 003371 +de 01370 030075 +de 01371 004077 +de 01372 013610 +de 01373 101040 +de 01374 003426 +de 01375 005614 +de 01376 010074 +de 01377 024074 +de 01400 003377 +de 01401 030026 +de 01402 004077 +de 01403 017615 +de 01404 100400 +de 01405 003326 +de 01406 104077 +de 01407 140401 +de 01410 126077 +de 01411 122077 +de 01412 100000 +de 01413 003416 +de 01414 110077 +de 01415 003326 +de 01416 140040 +de 01417 026077 +de 01420 010100 +de 01421 131041 +de 01422 003421 +de 01423 012100 +de 01424 010100 +de 01425 003326 +de 01426 073616 +de 01427 045451 +de 01430 050200 +de 01431 024000 +de 01432 003427 +de 01433 024000 +de 01434 003433 +de 01435 073605 +de 01436 045551 +de 01437 050200 +de 01440 024000 +de 01441 003436 +de 01442 030026 +de 01444 003442 +de 01445 054115 +de 01446 054114 +de 01447 054113 +de 01450 054112 +de 01451 054111 +de 01452 054110 +de 01453 054107 +de 01454 054106 +de 01455 054105 +de 01456 054104 +de 01457 054103 +de 01460 054102 +de 01461 054101 +de 01462 054100 +de 01463 054077 +de 01464 054076 +de 01465 054075 +de 01466 054074 +de 01467 054073 +de 01470 054072 +de 01471 054071 +de 01472 054070 +de 01473 054067 +de 01474 054066 +de 01475 054065 +de 01476 054064 +de 01477 054063 +de 01500 054062 +de 01501 054061 +de 01502 054060 +de 01503 054057 +de 01504 054056 +de 01505 054055 +de 01506 054054 +de 01507 054053 +de 01510 054052 +de 01511 054051 +de 01512 054050 +de 01513 054047 +de 01514 054046 +de 01515 054045 +de 01516 054044 +de 01517 054043 +de 01520 054042 +de 01521 054041 +de 01522 054040 +de 01523 054037 +de 01524 054036 +de 01525 054035 +de 01526 054034 +de 01527 054033 +de 01530 054032 +de 01531 054031 +de 01532 054030 +de 01533 054027 +de 01534 054026 +de 01535 054025 +de 01536 054024 +de 01537 054023 +de 01540 054022 +de 01541 054021 +de 01542 054020 +de 01543 054017 +de 01544 054016 +de 01545 054015 +de 01546 054014 +de 01547 054013 +de 01550 054012 +de 01551 054011 +de 01552 054010 +de 01553 054007 +de 01554 054006 +de 01555 054005 +de 01556 054004 +de 01557 102111 +de 01560 000001 +de 01561 177755 +de 01562 000006 +de 01563 001147 +de 01564 000004 +de 01565 100060 +de 01566 133000 +de 01567 172110 +de 01570 177752 +de 01571 070000 +de 01572 177757 +de 01573 177777 +de 01574 002000 +de 01575 177760 +de 01576 177776 +de 01600 176753 +de 01601 037775 +de 01602 037776 +de 01603 037774 +de 01604 000003 +de 01605 177674 +de 01606 000005 +de 01607 000011 +de 01610 000100 +de 01611 000002 +de 01612 000074 +de 01613 000177 +de 01614 100000 +de 01615 030000 +de 01616 177774 +de 02000 120672 +de 02001 001001 +de 02002 140040 +de 02003 170120 +de 02004 010134 +de 02005 026133 +de 02006 141206 +de 02007 111465 +de 02010 022114 +de 02011 022116 +de 02012 003202 +de 02013 101000 +de 02014 140040 +de 02015 010145 +de 02016 010136 +de 02017 010765 +de 02020 073466 +de 02021 045346 +de 02022 070042 +de 02023 045316 +de 02024 151266 +de 02025 024000 +de 02026 003021 +de 02027 073467 +de 02030 045361 +de 02031 151374 +de 02032 024000 +de 02033 003030 +de 02034 073470 +de 02035 045221 +de 02036 011212 +de 02037 045226 +de 02040 011213 +de 02041 140040 +de 02042 111212 +de 02043 025212 +de 02044 025213 +de 02045 003042 +de 02046 024000 +de 02047 003035 +de 02050 010144 +de 02051 131041 +de 02052 003051 +de 02053 010106 +de 02054 005471 +de 02055 111472 +de 02056 073473 +de 02057 005474 +de 02060 050414 +de 02061 141206 +de 02062 024000 +de 02063 003060 +de 02064 005475 +de 02065 010324 +de 02066 105476 +de 02067 006115 +de 02070 100040 +de 02071 004116 +de 02072 111477 +de 02073 105476 +de 02074 006114 +de 02075 010000 +de 02076 101040 +de 02077 010144 +de 02100 100040 +de 02101 005500 +de 02102 111501 +de 02103 045405 +de 02104 011445 +de 02105 045407 +de 02106 011446 +de 02107 004115 +de 02110 011212 +de 02111 073502 +de 02112 045447 +de 02113 040167 +de 02114 011213 +de 02115 005212 +de 02116 025212 +de 02117 041167 +de 02120 003126 +de 02121 024537 +de 02122 026324 +de 02123 110324 +de 02124 004324 +de 02125 015503 +de 02126 025213 +de 02127 003121 +de 02130 024000 +de 02131 003112 +de 02132 005504 +de 02133 010571 +de 02134 010573 +de 02135 140407 +de 02136 014537 +de 02137 014751 +de 02140 040575 +de 02141 041575 +de 02142 014115 +de 02143 010572 +de 02144 072122 +de 02145 045230 +de 02146 011212 +de 02147 045232 +de 02150 151234 +de 02151 011213 +de 02152 055236 +de 02153 111213 +de 02154 011213 +de 02155 025212 +de 02156 003152 +de 02157 140040 +de 02160 111213 +de 02161 024000 +de 02162 003145 +de 02163 004132 +de 02164 011212 +de 02165 072113 +de 02166 021374 +de 02167 024000 +de 02170 025212 +de 02171 003166 +de 02172 005505 +de 02173 111506 +de 02174 073507 +de 02175 045465 +de 02176 111510 +de 02177 024000 +de 02200 003175 +de 02201 103511 +de 02202 004567 +de 02203 010144 +de 02204 004145 +de 02205 140100 +de 02206 010145 +de 02207 004136 +de 02210 140100 +de 02211 003016 +de 02214 000160 +de 02215 032030 +de 02216 032030 +de 02217 030434 +de 02220 100063 +de 02221 177370 +de 02222 177730 +de 02223 176201 +de 02224 177740 +de 02225 177760 +de 02226 177771 +de 02227 177771 +de 02230 033317 +de 02231 032131 +de 02232 000326 +de 02233 000325 +de 02234 000014 +de 02235 000013 +de 02236 003070 +de 02237 003071 +de 02240 003072 +de 02241 003073 +de 02242 003321 +de 02243 004366 +de 02244 010264 +de 02245 012615 +de 02246 000101 +de 02247 013150 +de 02250 013151 +de 02251 013160 +de 02252 013161 +de 02253 013172 +de 02254 013202 +de 02255 013275 +de 02256 013305 +de 02257 000077 +de 02260 016126 +de 02261 016137 +de 02262 016147 +de 02263 017060 +de 02264 020543 +de 02265 021664 +de 02266 177660 +de 02267 177460 +de 02270 173600 +de 02271 163400 +de 02272 003334 +de 02273 100040 +de 02274 010303 +de 02275 012156 +de 02276 013072 +de 02277 000052 +de 02300 000056 +de 02301 000053 +de 02302 000057 +de 02303 070050 +de 02304 030150 +de 02305 013353 +de 02306 070250 +de 02307 016026 +de 02310 030250 +de 02311 000054 +de 02312 000055 +de 02313 030050 +de 02314 120464 +de 02315 070150 +de 02316 177664 +de 02317 177464 +de 02320 173624 +de 02321 163424 +de 02322 004136 +de 02323 100040 +de 02324 010303 +de 02325 012156 +de 02326 025061 +de 02327 000001 +de 02330 000772 +de 02331 000001 +de 02332 000773 +de 02333 101000 +de 02334 003531 +de 02335 013416 +de 02336 100000 +de 02337 025061 +de 02340 101000 +de 02341 000770 +de 02342 000771 +de 02343 101000 +de 02344 120464 +de 02345 101000 +de 02346 101000 +de 02347 101000 +de 02350 070160 +de 02351 030260 +de 02352 030060 +de 02353 070060 +de 02354 030160 +de 02355 070260 +de 02356 030560 +de 02357 010113 +de 02360 012117 +de 02361 000001 +de 02361 003366 +de 02362 000001 +de 02362 021126 +de 02363 000001 +de 02363 021663 +de 02364 000001 +de 02364 016125 +de 02365 000001 +de 02365 017057 +de 02366 000001 +de 02366 013171 +de 02367 000001 +de 02367 013201 +de 02370 000001 +de 02370 013304 +de 02371 000001 +de 02371 016317 +de 02372 000001 +de 02372 000066 +de 02373 000001 +de 02373 000073 +de 02375 005512 +de 02376 111513 +de 02377 005514 +de 02400 111515 +de 02401 140040 +de 02402 111516 +de 02403 111517 +de 02404 103374 +de 02405 170067 +de 02406 171067 +de 02407 172075 +de 02410 177777 +de 02411 174524 +de 02412 175637 +de 02413 175663 +de 02414 176744 +de 02415 176751 +de 02416 173373 +de 02417 175655 +de 02420 173433 +de 02421 176744 +de 02422 175557 +de 02423 176721 +de 02424 175566 +de 02425 175632 +de 02426 174464 +de 02427 175651 +de 02430 176745 +de 02431 175607 +de 02432 176700 +de 02433 174523 +de 02434 174532 +de 02435 175666 +de 02436 172274 +de 02437 175631 +de 02440 177030 +de 02441 176671 +de 02442 175627 +de 02443 170053 +de 02444 170061 +de 02445 170067 +de 02446 170075 +de 02447 025117 +de 02450 023066 +de 02451 030477 +de 02452 030056 +de 02453 025310 +de 02454 024012 +de 02455 030414 +de 02456 030474 +de 02457 004101 +de 02460 004206 +de 02461 004302 +de 02462 004347 +de 02463 004356 +de 02464 004365 +de 02465 003560 +de 02466 177750 +de 02467 177765 +de 02470 177773 +de 02471 003452 +de 02472 003450 +de 02473 177727 +de 02474 000272 +de 02475 000113 +de 02476 001005 +de 02477 005153 +de 02500 177775 +de 02501 020544 +de 02502 177742 +de 02503 000112 +de 02504 000024 +de 02505 032261 +de 02506 015155 +de 02507 177762 +de 02510 043433 +de 02511 003074 +de 02512 177477 +de 02513 072271 +de 02514 001400 +de 02515 072371 +de 02516 072471 +de 02517 072571 +de 03063 010047 +de 03064 010073 +de 03065 010117 +de 03066 010143 +de 03067 010167 +de 03074 105561 +de 03075 006124 +de 03076 072132 +de 03077 100040 +de 03100 073072 +de 03101 100400 +de 03102 073073 +de 03103 032500 +de 03104 073562 +de 03105 100040 +de 03106 073070 +de 03107 100400 +de 03110 073071 +de 03111 032501 +de 03112 073563 +de 03113 100040 +de 03114 073564 +de 03115 100400 +de 03116 073565 +de 03117 032502 +de 03120 072113 +de 03121 100040 +de 03122 072121 +de 03123 100400 +de 03124 072122 +de 03125 133566 +de 03126 073567 +de 03127 100040 +de 03130 073570 +de 03131 032070 +de 03132 073571 +de 03133 100400 +de 03134 073572 +de 03135 032067 +de 03136 073573 +de 03137 100040 +de 03140 073574 +de 03141 032075 +de 03142 073575 +de 03143 100400 +de 03144 073576 +de 03145 032074 +de 03146 121577 +de 03147 121600 +de 03150 131040 +de 03151 003150 +de 03152 101400 +de 03153 003150 +de 03154 121601 +de 03155 073602 +de 03156 005603 +de 03157 050032 +de 03160 024000 +de 03161 003157 +de 03162 005604 +de 03163 011174 +de 03164 072127 +de 03165 005605 +de 03166 151070 +de 03167 105606 +de 03170 016000 +de 03171 100040 +de 03172 117607 +de 03173 100040 +de 03175 025174 +de 03176 024000 +de 03177 003165 +de 03200 004131 +de 03201 011062 +de 03202 004117 +de 03203 050504 +de 03204 121610 +de 03205 121611 +de 03206 024000 +de 03207 025062 +de 03210 003202 +de 03211 004121 +de 03212 010137 +de 03213 010140 +de 03214 010134 +de 03215 170120 +de 03216 000401 +de 03217 131040 +de 03220 003217 +de 03221 100400 +de 03222 003217 +de 03223 005612 +de 03224 111613 +de 03225 005614 +de 03226 011410 +de 03227 005410 +de 03230 017614 +de 03231 010000 +de 03232 011412 +de 03233 143415 +de 03235 005234 +de 03236 051415 +de 03237 143421 +de 03241 005240 +de 03242 051421 +de 03243 000401 +de 03244 025410 +de 03245 003227 +de 03246 005615 +de 03247 011410 +de 03250 072113 +de 03251 133616 +de 03252 072114 +de 03253 001001 +de 03254 143260 +de 03255 021262 +de 03256 173616 +de 03257 143425 +de 03260 003254 +de 03261 003256 +de 03263 120745 +de 03264 000011 +de 03265 103262 +de 03267 000401 +de 03270 173616 +de 03271 005266 +de 03272 051425 +de 03273 024000 +de 03274 025410 +de 03275 003251 +de 03276 140040 +de 03277 100004 +de 03300 010137 +de 03301 004137 +de 03302 100400 +de 03303 004140 +de 03304 101400 +de 03305 021446 +de 03306 004415 +de 03307 027413 +de 03310 013413 +de 03311 100040 +de 03312 003316 +de 03313 025414 +de 03314 003320 +de 03315 120061 +de 03316 005617 +de 03317 011414 +de 03320 000401 +de 03322 101040 +de 03323 003331 +de 03324 000013 +de 03325 121620 +de 03326 001001 +de 03327 120672 +de 03330 003334 +de 03331 004063 +de 03332 010101 +de 03333 010077 +de 03334 073621 +de 03335 145446 +de 03336 100040 +de 03337 140500 +de 03340 041277 +de 03341 024000 +de 03342 003335 +de 03343 140040 +de 03344 040267 +de 03345 012452 +de 03346 011434 +de 03347 001001 +de 03350 000013 +de 03351 105433 +de 03352 120672 +de 03353 100020 +de 03354 004121 +de 03355 170026 +de 03356 101000 +de 03357 000201 +de 03360 025411 +de 03361 101000 +de 03362 140040 +de 03363 026144 +de 03364 100040 +de 03365 121622 +de 03366 101000 +de 03367 004172 +de 03370 101400 +de 03371 003223 +de 03372 072132 +de 03373 044265 +de 03374 101400 +de 03375 101040 +de 03376 003403 +de 03377 004000 +de 03400 016132 +de 03401 013623 +de 03402 003224 +de 03403 024000 +de 03404 003373 +de 03405 004106 +de 03406 003401 +de 03407 037511 +de 03433 003434 +de 03435 000433 +de 03436 000434 +de 03437 000435 +de 03440 000436 +de 03441 000504 +de 03442 000505 +de 03443 000506 +de 03444 000507 +de 03445 000765 +de 03447 103450 +de 03451 103446 +de 03452 004137 +de 03453 006120 +de 03454 041675 +de 03455 012140 +de 03456 007624 +de 03457 012140 +de 03460 012752 +de 03461 041675 +de 03462 101004 +de 03463 011560 +de 03464 140040 +de 03465 021525 +de 03466 000401 +de 03467 021543 +de 03470 004117 +de 03471 010504 +de 03472 010505 +de 03473 010506 +de 03474 010507 +de 03475 021543 +de 03476 004121 +de 03477 010573 +de 03500 021543 +de 03501 004127 +de 03502 011556 +de 03503 072113 +de 03504 001001 +de 03505 121625 +de 03506 024000 +de 03507 025556 +de 03510 003505 +de 03511 000401 +de 03512 021543 +de 03513 021543 +de 03514 004140 +de 03515 101400 +de 03516 103626 +de 03517 004137 +de 03520 101004 +de 03521 103627 +de 03522 030026 +de 03524 003522 +de 03526 001001 +de 03527 010515 +de 03530 004131 +de 03531 011556 +de 03532 005556 +de 03533 016131 +de 03534 010000 +de 03535 005630 +de 03536 120670 +de 03537 101000 +de 03540 025556 +de 03541 003532 +de 03542 103525 +de 03544 030026 +de 03545 004415 +de 03546 011557 +de 03547 021450 +de 03550 004415 +de 03551 017557 +de 03552 141044 +de 03553 101040 +de 03554 003547 +de 03555 103543 +de 03561 001005 +de 03562 177760 +de 03563 174000 +de 03564 170000 +de 03565 160000 +de 03566 020545 +de 03567 010163 +de 03570 016020 +de 03571 010137 +de 03572 016012 +de 03573 012107 +de 03574 013064 +de 03575 012113 +de 03576 013056 +de 03577 026070 +de 03600 020075 +de 03601 022320 +de 03602 177766 +de 03603 100001 +de 03604 030471 +de 03605 003207 +de 03606 020544 +de 03607 005153 +de 03610 016217 +de 03611 013256 +de 03612 000005 +de 03613 030456 +de 03614 177774 +de 03615 177772 +de 03616 004420 +de 03617 154360 +de 03620 040001 +de 03621 177767 +de 03622 037025 +de 03623 040300 +de 03624 177770 +de 03625 011133 +de 03626 002000 +de 03627 001022 +de 03630 001000 +de 04063 140040 +de 04064 011157 +de 04065 121417 +de 04066 021372 +de 04067 003065 +de 04070 005155 +de 04071 007603 +de 04072 050006 +de 04073 013155 +de 04074 013157 +de 04075 013160 +de 04076 050005 +de 04077 021435 +de 04100 121417 +de 04101 021473 +de 04102 003100 +de 04103 100000 +de 04104 003100 +de 04105 011155 +de 04106 007604 +de 04107 013604 +de 04110 101040 +de 04111 003063 +de 04112 005155 +de 04113 007605 +de 04114 100040 +de 04115 005606 +de 04116 014751 +de 04117 011157 +de 04120 004415 +de 04121 011156 +de 04122 121417 +de 04123 004415 +de 04124 017156 +de 04125 017607 +de 04126 100400 +de 04127 003134 +de 04130 005155 +de 04131 007610 +de 04132 100040 +de 04133 003063 +de 04134 001001 +de 04135 004542 +de 04136 016566 +de 04137 014541 +de 04140 016565 +de 04141 015157 +de 04142 022572 +de 04143 003122 +de 04144 003122 +de 04145 005611 +de 04146 027157 +de 04147 014542 +de 04150 010542 +de 04151 004107 +de 04152 041576 +de 04153 011161 +de 04154 003066 +de 04162 121612 +de 04163 003257 +de 04164 044111 +de 04165 140100 +de 04166 011262 +de 04167 044010 +de 04170 007613 +de 04171 013614 +de 04172 066010 +de 04173 056010 +de 04174 115262 +de 04175 111262 +de 04176 005605 +de 04177 073430 +de 04200 052005 +de 04201 050005 +de 04202 021435 +de 04203 005261 +de 04204 141206 +de 04205 023615 +de 04206 005615 +de 04207 014132 +de 04210 011261 +de 04211 121417 +de 04212 001001 +de 04213 105261 +de 04214 007604 +de 04215 013604 +de 04216 100040 +de 04217 003203 +de 04220 011262 +de 04221 021372 +de 04222 003211 +de 04223 033430 +de 04224 005261 +de 04225 017616 +de 04226 050006 +de 04227 105261 +de 04230 007617 +de 04231 111261 +de 04232 025262 +de 04233 040677 +de 04234 100400 +de 04235 003232 +de 04236 005262 +de 04237 141240 +de 04240 115261 +de 04241 141044 +de 04242 015620 +de 04243 050005 +de 04244 141044 +de 04245 052006 +de 04246 121621 +de 04247 003162 +de 04250 044030 +de 04251 007613 +de 04252 013614 +de 04253 050030 +de 04254 044000 +de 04255 007610 +de 04256 003177 +de 04257 005622 +de 04260 003177 +de 04263 121417 +de 04264 021372 +de 04265 003263 +de 04266 033431 +de 04267 121417 +de 04270 073431 +de 04271 005314 +de 04272 050006 +de 04273 001001 +de 04274 121623 +de 04275 003267 +de 04276 013622 +de 04277 050005 +de 04300 021435 +de 04301 121417 +de 04302 001001 +de 04303 004126 +de 04304 115624 +de 04305 100400 +de 04306 003301 +de 04307 105625 +de 04310 121626 +de 04311 003301 +de 04312 011314 +de 04313 003264 +de 04315 121417 +de 04316 173353 +de 04317 044111 +de 04320 100400 +de 04321 003315 +de 04322 011354 +de 04323 140500 +de 04324 050111 +de 04325 044005 +de 04326 007627 +de 04327 050005 +de 04330 105353 +de 04331 140100 +de 04332 111353 +de 04333 105354 +de 04334 015610 +de 04335 111354 +de 04336 140040 +de 04337 021435 +de 04340 121417 +de 04341 105353 +de 04342 100400 +de 04343 003315 +de 04344 005353 +de 04345 141206 +de 04346 023630 +de 04347 005630 +de 04350 017631 +de 04351 011353 +de 04352 003340 +de 04355 121417 +de 04356 073632 +de 04357 001001 +de 04360 121633 +de 04361 003355 +de 04362 140040 +de 04363 021435 +de 04364 003355 +de 04365 004145 +de 04367 121634 +de 04370 121417 +de 04371 003365 +de 04373 001001 +de 04374 004537 +de 04375 016563 +de 04376 016570 +de 04377 100400 +de 04400 103372 +de 04401 104324 +de 04402 101040 +de 04403 103372 +de 04404 026324 +de 04405 010000 +de 04406 024563 +de 04407 014751 +de 04410 050111 +de 04411 004106 +de 04412 050007 +de 04413 140040 +de 04414 050000 +de 04415 025372 +de 04416 103372 +de 04417 003266 +de 04436 101040 +de 04437 003446 +de 04440 004117 +de 04441 056004 +de 04442 056005 +de 04443 056006 +de 04444 056007 +de 04445 050010 +de 04446 005420 +de 04447 015635 +de 04450 050003 +de 04451 004000 +de 04452 073420 +de 04453 140100 +de 04454 051427 +de 04455 005435 +de 04456 051421 +de 04457 045427 +de 04460 001001 +de 04461 110401 +de 04462 010401 +de 04463 030041 +de 04464 121417 +de 04465 140040 +de 04466 066463 +de 04467 101100 +de 04470 143421 +de 04471 121417 +de 04472 003457 +de 04474 140040 +de 04475 026477 +de 04476 101040 +de 04477 103473 +de 04500 140040 +de 04501 011600 +de 04502 005636 +de 04503 011602 +de 04504 073601 +de 04505 105637 +de 04506 101040 +de 04507 003565 +de 04510 025600 +de 04511 105640 +de 04512 141140 +de 04513 006116 +de 04514 041576 +de 04515 140407 +de 04516 015641 +de 04517 011523 +de 04520 013642 +de 04521 011534 +de 04522 005643 +de 04524 001001 +de 04525 107637 +de 04526 101040 +de 04527 003565 +de 04530 113637 +de 04531 127637 +de 04532 113637 +de 04533 000401 +de 04535 023644 +de 04536 025473 +de 04537 101000 +de 04540 011160 +de 04541 007631 +de 04542 027160 +de 04543 006116 +de 04544 012115 +de 04545 101040 +de 04546 011602 +de 04547 012115 +de 04550 041672 +de 04551 113640 +de 04552 014000 +de 04553 016132 +de 04554 127640 +de 04555 015602 +de 04556 127640 +de 04557 024000 +de 04560 100000 +de 04561 072132 +de 04562 033601 +de 04563 025473 +de 04564 003576 +de 04565 000401 +de 04566 024000 +de 04567 003505 +de 04570 004132 +de 04571 027601 +de 04572 013601 +de 04573 101040 +de 04574 005600 +de 04575 100040 +de 04576 010477 +de 04577 103473 +de 04603 000077 +de 04604 000300 +de 04605 000200 +de 04606 177771 +de 04607 000050 +de 04610 000100 +de 04611 000002 +de 04612 015033 +de 04613 177770 +de 04614 000003 +de 04615 032371 +de 04616 032271 +de 04617 177477 +de 04620 176014 +de 04621 015205 +de 04622 000202 +de 04623 015161 +de 04624 020210 +de 04625 032261 +de 04626 015114 +de 04627 177677 +de 04630 033467 +de 04631 000010 +de 04632 000331 +de 04633 015504 +de 04634 037700 +de 04635 100010 +de 04636 000400 +de 04637 072671 +de 04640 072571 +de 04641 041700 +de 04642 001000 +de 04643 000017 +de 04644 000013 +de 05110 000011 +de 05111 003112 +de 05112 011140 +de 05113 033141 +de 05114 000043 +de 05115 011142 +de 05116 004122 +de 05117 170120 +de 05120 010134 +de 05121 000401 +de 05122 004330 +de 05123 001001 +de 05124 100040 +de 05125 003161 +de 05126 140401 +de 05127 010134 +de 05130 170120 +de 05131 073141 +de 05132 000013 +de 05133 005142 +de 05134 171020 +de 05135 005140 +de 05136 000401 +de 05137 103107 +de 05154 005710 +de 05155 010401 +de 05156 003171 +de 05157 105151 +de 05160 003215 +de 05161 010000 +de 05162 010514 +de 05163 140040 +de 05164 050002 +de 05165 066000 +de 05166 010330 +de 05167 101040 +de 05170 003154 +de 05171 000401 +de 05172 044003 +de 05173 011143 +de 05174 100400 +de 05175 003220 +de 05176 015711 +de 05177 011151 +de 05200 044005 +de 05201 100100 +de 05202 003407 +de 05203 044004 +de 05204 141340 +de 05205 006120 +de 05206 015712 +de 05207 011144 +de 05210 044004 +de 05211 100400 +de 05212 003157 +de 05213 105151 +de 05214 140401 +de 05215 107144 +de 05216 100040 +de 05217 003642 +de 05220 044006 +de 05221 007713 +de 05222 010000 +de 05223 044165 +de 05224 101040 +de 05225 103714 +de 05226 100400 +de 05227 003601 +de 05230 007715 +de 05231 016114 +de 05232 010000 +de 05233 044433 +de 05234 100040 +de 05235 003637 +de 05236 001001 +de 05237 004540 +de 05240 016564 +de 05241 141206 +de 05242 022573 +de 05243 003637 +de 05244 003637 +de 05245 004537 +de 05246 016563 +de 05247 016542 +de 05250 014566 +de 05251 016570 +de 05252 100400 +de 05253 003637 +de 05254 044653 +de 05255 140407 +de 05256 046653 +de 05257 101040 +de 05260 003637 +de 05261 011147 +de 05262 052653 +de 05263 050653 +de 05264 000401 +de 05265 033145 +de 05266 005147 +de 05267 022116 +de 05270 040575 +de 05271 100000 +de 05272 003277 +de 05273 022116 +de 05274 040575 +de 05275 014116 +de 05276 014116 +de 05277 016114 +de 05300 011150 +de 05301 054622 +de 05302 011146 +de 05303 005147 +de 05304 111146 +de 05305 046641 +de 05306 100040 +de 05307 005716 +de 05310 013150 +de 05311 141240 +de 05312 072514 +de 05313 011147 +de 05314 044111 +de 05315 140100 +de 05316 027147 +de 05317 066004 +de 05320 056004 +de 05321 115147 +de 05322 111147 +de 05323 044007 +de 05324 007717 +de 05325 073145 +de 05326 113720 +de 05327 072514 +de 05330 066007 +de 05331 056007 +de 05332 115147 +de 05333 111147 +de 05334 044006 +de 05335 007721 +de 05336 100040 +de 05337 021504 +de 05340 005146 +de 05341 050003 +de 05342 044005 +de 05343 007722 +de 05344 001001 +de 05345 101040 +de 05346 003357 +de 05347 044006 +de 05350 100400 +de 05351 003357 +de 05352 004514 +de 05353 073145 +de 05354 150363 +de 05355 050363 +de 05356 003363 +de 05357 004514 +de 05360 073145 +de 05361 150370 +de 05362 050370 +de 05363 024540 +de 05364 044440 +de 05365 100040 +de 05366 003604 +de 05367 121723 +de 05370 001001 +de 05371 000011 +de 05372 003604 +de 05374 044111 +de 05375 100400 +de 05376 003404 +de 05377 004324 +de 05400 050000 +de 05401 032324 +de 05402 024537 +de 05403 103373 +de 05404 140100 +de 05405 050111 +de 05406 103373 +de 05407 073143 +de 05410 040677 +de 05411 100100 +de 05412 003446 +de 05413 041677 +de 05414 141140 +de 05415 066160 +de 05416 100040 +de 05417 052160 +de 05420 100040 +de 05421 003452 +de 05422 065565 +de 05423 101000 +de 05424 044160 +de 05425 016106 +de 05426 100040 +de 05427 003433 +de 05430 004114 +de 05431 010452 +de 05432 003642 +de 05433 001001 +de 05434 004124 +de 05435 170120 +de 05436 010134 +de 05437 140040 +de 05440 000401 +de 05441 121724 +de 05442 072514 +de 05443 001001 +de 05444 021373 +de 05445 003116 +de 05446 040675 +de 05447 100100 +de 05450 064426 +de 05451 003642 +de 05452 001001 +de 05453 011576 +de 05454 121725 +de 05455 005576 +de 05456 021635 +de 05460 011152 +de 05461 044006 +de 05462 007726 +de 05463 066007 +de 05464 007726 +de 05465 013152 +de 05466 050006 +de 05467 044111 +de 05470 006112 +de 05471 014000 +de 05472 015727 +de 05473 050111 +de 05474 005730 +de 05475 056004 +de 05476 056005 +de 05477 056006 +de 05500 056007 +de 05501 056010 +de 05502 050011 +de 05503 103457 +de 05505 004416 +de 05506 016107 +de 05507 050003 +de 05510 044006 +de 05511 007721 +de 05512 100040 +de 05513 105731 +de 05514 101040 +de 05515 103504 +de 05516 004325 +de 05517 100040 +de 05520 003524 +de 05521 141206 +de 05522 010414 +de 05523 103504 +de 05524 033572 +de 05525 011573 +de 05526 050002 +de 05527 026341 +de 05530 127573 +de 05531 010325 +de 05532 004341 +de 05533 015732 +de 05534 011574 +de 05535 005572 +de 05536 015732 +de 05537 011575 +de 05540 072124 +de 05541 105575 +de 05542 111574 +de 05543 024000 +de 05544 003541 +de 05545 073572 +de 05546 044001 +de 05547 073573 +de 05550 050001 +de 05551 073572 +de 05552 044111 +de 05553 140100 +de 05554 016000 +de 05555 016117 +de 05556 073573 +de 05557 050012 +de 05560 131040 +de 05561 003560 +de 05562 050002 +de 05563 073572 +de 05564 103504 +de 05600 120745 +de 05601 072514 +de 05602 001001 +de 05603 021373 +de 05604 005143 +de 05605 100400 +de 05606 003622 +de 05607 010000 +de 05610 105144 +de 05611 050445 +de 05612 052646 +de 05613 050646 +de 05614 044440 +de 05615 101040 +de 05616 121723 +de 05617 001001 +de 05620 000011 +de 05621 003121 +de 05622 140100 +de 05623 010000 +de 05624 064453 +de 05625 064453 +de 05626 014131 +de 05627 000013 +de 05630 100400 +de 05631 121733 +de 05632 001001 +de 05633 000011 +de 05634 003121 +de 05636 120745 +de 05637 005143 +de 05640 100400 +de 05641 003646 +de 05642 072514 +de 05643 001001 +de 05644 021373 +de 05645 003121 +de 05646 010000 +de 05647 064453 +de 05650 003121 +de 05651 004326 +de 05652 101040 +de 05653 121734 +de 05654 004751 +de 05655 014541 +de 05656 016565 +de 05657 022572 +de 05660 101000 +de 05661 121734 +de 05662 004537 +de 05663 016563 +de 05664 016751 +de 05665 016570 +de 05666 100400 +de 05667 121734 +de 05670 104326 +de 05671 026326 +de 05672 010000 +de 05673 026340 +de 05674 050000 +de 05675 004751 +de 05676 014541 +de 05677 010541 +de 05700 004751 +de 05701 014566 +de 05702 010566 +de 05703 004112 +de 05704 050002 +de 05705 105735 +de 05706 050001 +de 05707 103736 +de 05710 000330 +de 05711 000646 +de 05712 001233 +de 05713 000077 +de 05714 006056 +de 05715 000037 +de 05716 000200 +de 05717 176777 +de 05720 050254 +de 05721 020000 +de 05722 000004 +de 05723 012604 +de 05724 026120 +de 05725 011133 +de 05726 050377 +de 05727 000011 +de 05730 000005 +de 05731 030434 +de 05732 040011 +de 05733 013106 +de 05734 005635 +de 05735 006664 +de 05736 006313 +de 06056 072514 +de 06057 044007 +de 06060 007674 +de 06061 011673 +de 06062 044005 +de 06063 141044 +de 06064 011661 +de 06065 013673 +de 06066 011664 +de 06067 044005 +de 06070 007675 +de 06071 100040 +de 06072 005676 +de 06073 013677 +de 06074 015673 +de 06075 011660 +de 06076 001001 +de 06077 105660 +de 06100 141044 +de 06101 017661 +de 06102 100400 +de 06103 003375 +de 06104 141140 +de 06105 022116 +de 06106 003375 +de 06107 101000 +de 06110 015700 +de 06111 011662 +de 06112 044005 +de 06113 007701 +de 06114 013701 +de 06115 101040 +de 06116 003431 +de 06117 105662 +de 06120 107660 +de 06121 000401 +de 06122 100040 +de 06123 103702 +de 06124 044005 +de 06125 007675 +de 06126 101040 +de 06127 103703 +de 06130 073673 +de 06131 001001 +de 06132 044165 +de 06133 100400 +de 06134 121704 +de 06135 007705 +de 06136 050165 +de 06137 072514 +de 06140 044005 +de 06141 007706 +de 06142 100040 +de 06143 003447 +de 06144 044006 +de 06145 121707 +de 06146 000401 +de 06147 010000 +de 06150 044504 +de 06151 072514 +de 06152 100040 +de 06153 005710 +de 06154 013711 +de 06155 011164 +de 06156 044005 +de 06157 141050 +de 06160 040572 +de 06161 015164 +de 06162 011164 +de 06163 001001 +de 06165 003302 +de 06166 003455 +de 06167 003227 +de 06170 105662 +de 06171 012114 +de 06172 101040 +de 06173 003204 +de 06174 044006 +de 06175 101400 +de 06176 003222 +de 06177 105660 +de 06200 052005 +de 06201 007712 +de 06202 100040 +de 06203 003222 +de 06204 004542 +de 06205 016566 +de 06206 014541 +de 06207 016565 +de 06210 141206 +de 06211 022572 +de 06212 003222 +de 06213 003222 +de 06214 004563 +de 06215 016537 +de 06216 141206 +de 06217 014570 +de 06220 100400 +de 06221 003244 +de 06222 005664 +de 06223 013713 +de 06224 121714 +de 06225 121704 +de 06226 103702 +de 06227 004541 +de 06230 016565 +de 06231 141206 +de 06232 022572 +de 06233 101000 +de 06234 121715 +de 06235 004563 +de 06236 016537 +de 06237 141206 +de 06240 014570 +de 06241 101400 +de 06242 121715 +de 06243 024566 +de 06244 024541 +de 06245 000401 +de 06246 033670 +de 06247 003350 +de 06250 003276 +de 06251 003455 +de 06252 024566 +de 06253 064010 +de 06254 044005 +de 06255 007716 +de 06256 050005 +de 06257 005717 +de 06260 121720 +de 06261 005664 +de 06262 072112 +de 06263 121714 +de 06264 121704 +de 06265 072514 +de 06266 132402 +de 06267 032402 +de 06270 021537 +de 06271 003463 +de 06272 044000 +de 06273 111667 +de 06274 121721 +de 06275 003463 +de 06276 004751 +de 06277 014566 +de 06300 010566 +de 06301 003253 +de 06302 000401 +de 06303 044006 +de 06304 141340 +de 06305 006120 +de 06306 011663 +de 06307 015722 +de 06310 011666 +de 06311 021537 +de 06312 103723 +de 06313 033665 +de 06314 105666 +de 06315 100040 +de 06316 103702 +de 06317 004514 +de 06320 111666 +de 06321 010000 +de 06322 044007 +de 06323 073665 +de 06324 101400 +de 06325 003334 +de 06326 005663 +de 06327 050002 +de 06330 016120 +de 06331 140407 +de 06332 014565 +de 06333 010565 +de 06334 044013 +de 06335 062002 +de 06336 100000 +de 06337 003342 +de 06340 064013 +de 06341 103724 +de 06342 044000 +de 06343 111667 +de 06344 000401 +de 06345 005665 +de 06346 140500 +de 06347 011670 +de 06350 021360 +de 06351 100100 +de 06352 003555 +de 06353 005670 +de 06354 026327 +de 06355 072327 +de 06356 050000 +de 06357 003471 +de 06361 001001 +de 06362 105660 +de 06363 141044 +de 06364 017661 +de 06365 141140 +de 06366 015700 +de 06367 011662 +de 06370 105662 +de 06371 113660 +de 06372 007725 +de 06373 111660 +de 06374 103360 +de 06375 044005 +de 06376 007701 +de 06377 013701 +de 06400 100040 +de 06401 103702 +de 06402 044005 +de 06403 007726 +de 06404 013676 +de 06405 066005 +de 06406 007727 +de 06407 013676 +de 06410 100040 +de 06411 003415 +de 06412 005730 +de 06413 052005 +de 06414 050005 +de 06415 140040 +de 06416 121720 +de 06417 132402 +de 06420 032402 +de 06421 103724 +de 06422 021537 +de 06423 003427 +de 06424 044000 +de 06425 111667 +de 06426 121721 +de 06427 005676 +de 06430 003453 +de 06431 105662 +de 06432 107660 +de 06433 100040 +de 06434 003402 +de 06435 044005 +de 06436 007727 +de 06437 101040 +de 06440 003422 +de 06441 007713 +de 06442 101040 +de 06443 003455 +de 06444 044005 +de 06445 007706 +de 06446 100040 +de 06447 004751 +de 06450 014566 +de 06451 010566 +de 06452 005727 +de 06453 072121 +de 06454 003456 +de 06455 140040 +de 06456 013664 +de 06457 121714 +de 06460 121704 +de 06461 072514 +de 06462 120671 +de 06463 021360 +de 06464 105660 +de 06465 101100 +de 06466 103724 +de 06467 073660 +de 06470 121731 +de 06471 005732 +de 06472 011667 +de 06473 001001 +de 06474 004327 +de 06475 101040 +de 06476 003464 +de 06477 011670 +de 06500 010000 +de 06501 100400 +de 06502 044003 +de 06503 010000 +de 06504 044007 +de 06505 013673 +de 06506 007674 +de 06507 100040 +de 06510 003532 +de 06511 044006 +de 06512 101400 +de 06513 003520 +de 06514 105660 +de 06515 052005 +de 06516 007712 +de 06517 003524 +de 06520 105660 +de 06521 017733 +de 06522 052005 +de 06523 141044 +de 06524 100040 +de 06525 003532 +de 06526 073670 +de 06527 066000 +de 06530 111667 +de 06531 003555 +de 06532 005670 +de 06533 140100 +de 06534 011667 +de 06535 105667 +de 06536 003475 +de 06540 073734 +de 06541 001001 +de 06542 044000 +de 06543 101040 +de 06544 103537 +de 06545 033667 +de 06546 010000 +de 06547 044001 +de 06550 013664 +de 06551 100040 +de 06552 003542 +de 06553 025537 +de 06554 103537 +de 06555 000401 +de 06556 004114 +de 06557 011672 +de 06560 073670 +de 06561 005670 +de 06562 100400 +de 06563 003625 +de 06564 011671 +de 06565 121735 +de 06566 044006 +de 06567 001001 +de 06570 121707 +de 06571 044006 +de 06572 006112 +de 06573 100040 +de 06574 005736 +de 06575 115737 +de 06576 026000 +de 06577 150343 +de 06600 005671 +de 06601 050343 +de 06602 005672 +de 06603 054517 +de 06604 050517 +de 06605 073670 +de 06606 044006 +de 06607 073660 +de 06610 101400 +de 06611 003622 +de 06612 121740 +de 06613 073670 +de 06614 105660 +de 06615 017733 +de 06616 052005 +de 06617 141044 +de 06620 073660 +de 06621 101040 +de 06622 121731 +de 06623 121741 +de 06624 003471 +de 06625 140100 +de 06626 011665 +de 06627 044003 +de 06630 011670 +de 06631 140040 +de 06632 050013 +de 06633 044004 +de 06634 150003 +de 06635 101040 +de 06636 003650 +de 06637 033671 +de 06640 010000 +de 06641 121735 +de 06642 073671 +de 06643 140040 +de 06644 050003 +de 06645 024000 +de 06646 025672 +de 06647 003633 +de 06650 066003 +de 06651 011671 +de 06652 073670 +de 06653 005665 +de 06654 001001 +de 06655 026326 +de 06656 110326 +de 06657 003565 +de 06674 000077 +de 06675 000004 +de 06676 000100 +de 06677 032271 +de 06700 001246 +de 06701 000014 +de 06702 005601 +de 06703 007063 +de 06704 005577 +de 06705 177437 +de 06706 000002 +de 06707 007244 +de 06710 000335 +de 06711 003165 +de 06712 000060 +de 06713 000200 +de 06714 015303 +de 06715 005635 +de 06716 177761 +de 06717 000400 +de 06720 005457 +de 06721 021321 +de 06722 040003 +de 06723 005651 +de 06724 005604 +de 06725 177477 +de 06726 177661 +de 06727 000300 +de 06730 000102 +de 06731 015347 +de 06732 000327 +de 06733 001400 +de 06734 000340 +de 06735 005504 +de 06736 000010 +de 06737 007257 +de 06740 015361 +de 06741 007222 +de 07063 044005 +de 07064 007327 +de 07065 101040 +de 07066 003134 +de 07067 105330 +de 07070 001001 +de 07071 121331 +de 07072 003220 +de 07073 011131 +de 07074 000401 +de 07075 072514 +de 07076 044005 +de 07077 007332 +de 07100 101040 +de 07101 003113 +de 07102 173131 +de 07103 044005 +de 07104 007333 +de 07105 101040 +de 07106 103334 +de 07107 105131 +de 07110 140500 +de 07111 111131 +de 07112 103334 +de 07113 021260 +de 07114 003125 +de 07115 173131 +de 07116 044010 +de 07117 021306 +de 07120 044007 +de 07121 021244 +de 07122 044006 +de 07123 007335 +de 07124 013132 +de 07125 073257 +de 07126 120670 +de 07127 003213 +de 07130 103336 +de 07134 105330 +de 07135 001001 +de 07136 121337 +de 07137 121340 +de 07140 033131 +de 07141 044000 +de 07142 006120 +de 07143 011133 +de 07144 072514 +de 07145 044005 +de 07146 007332 +de 07147 000401 +de 07150 101040 +de 07151 003166 +de 07152 001001 +de 07153 105341 +de 07154 013342 +de 07155 101040 +de 07156 103336 +de 07157 105343 +de 07160 111344 +de 07161 125341 +de 07162 044005 +de 07163 007333 +de 07164 101040 +de 07165 003233 +de 07166 021260 +de 07167 003176 +de 07170 073131 +de 07171 044030 +de 07172 021306 +de 07173 044014 +de 07174 007335 +de 07175 013132 +de 07176 073133 +de 07177 033257 +de 07200 120670 +de 07201 003215 +de 07202 072514 +de 07203 044005 +de 07204 007332 +de 07205 101040 +de 07206 103336 +de 07207 105343 +de 07210 121345 +de 07211 103336 +de 07212 103336 +de 07213 173131 +de 07214 120671 +de 07215 021222 +de 07216 140040 +de 07217 111131 +de 07220 121346 +de 07221 103334 +de 07223 073257 +de 07224 104700 +de 07225 000013 +de 07226 101040 +de 07227 121347 +de 07230 001001 +de 07231 120672 +de 07232 103222 +de 07233 073133 +de 07234 044453 +de 07235 017350 +de 07236 000013 +de 07237 101040 +de 07240 121351 +de 07241 001001 +de 07242 120672 +de 07243 003216 +de 07245 011257 +de 07246 007352 +de 07247 040672 +de 07250 027257 +de 07251 007353 +de 07252 100040 +de 07253 004130 +de 07254 015257 +de 07255 011257 +de 07256 103244 +de 07261 044006 +de 07262 007354 +de 07263 100040 +de 07264 003275 +de 07265 044005 +de 07266 007355 +de 07267 100040 +de 07270 005356 +de 07271 013357 +de 07272 011132 +de 07273 025260 +de 07274 103260 +de 07275 044010 +de 07276 001001 +de 07277 010515 +de 07300 044006 +de 07301 021244 +de 07302 044007 +de 07303 007335 +de 07304 013360 +de 07305 103260 +de 07307 001001 +de 07310 010515 +de 07311 007361 +de 07312 013362 +de 07313 100040 +de 07314 003317 +de 07315 005363 +de 07316 011132 +de 07317 005132 +de 07320 013364 +de 07321 101040 +de 07322 103306 +de 07323 004515 +de 07324 007365 +de 07325 010515 +de 07326 103306 +de 07327 000200 +de 07330 006664 +de 07331 015033 +de 07332 000002 +de 07333 000100 +de 07334 005601 +de 07335 070377 +de 07336 005637 +de 07337 015205 +de 07340 005577 +de 07341 015155 +de 07342 032271 +de 07343 006673 +de 07344 115155 +de 07345 015114 +de 07346 006360 +de 07347 016042 +de 07350 014445 +de 07351 013106 +de 07352 000300 +de 07353 040000 +de 07354 000400 +de 07355 000010 +de 07356 006000 +de 07357 002400 +de 07360 003400 +de 07361 000007 +de 07362 000004 +de 07363 004000 +de 07364 004400 +de 07365 177760 +de 10044 000011 +de 10045 033244 +de 10046 072113 +de 10050 000043 +de 10051 011245 +de 10052 070471 +de 10053 003231 +de 10054 004021 +de 10055 017625 +de 10056 010020 +de 10057 030471 +de 10060 005245 +de 10061 000013 +de 10062 171020 +de 10063 005243 +de 10064 073244 +de 10065 000401 +de 10066 103043 +de 10070 000011 +de 10071 033244 +de 10072 072114 +de 10074 000043 +de 10075 011245 +de 10076 070472 +de 10077 003231 +de 10100 004023 +de 10101 017625 +de 10102 010022 +de 10103 030472 +de 10104 005245 +de 10105 000013 +de 10106 171020 +de 10107 005243 +de 10110 073244 +de 10111 000401 +de 10112 103067 +de 10114 000011 +de 10115 033244 +de 10116 072115 +de 10120 000043 +de 10121 011245 +de 10122 070473 +de 10123 003231 +de 10124 004025 +de 10125 017625 +de 10126 010024 +de 10127 030473 +de 10130 005245 +de 10131 000013 +de 10132 171020 +de 10133 005243 +de 10134 073244 +de 10135 000401 +de 10136 103113 +de 10140 000011 +de 10141 033244 +de 10142 072116 +de 10144 000043 +de 10145 011245 +de 10146 070474 +de 10147 003231 +de 10150 004027 +de 10151 017625 +de 10152 010026 +de 10153 030474 +de 10154 005245 +de 10155 000013 +de 10156 171020 +de 10157 005243 +de 10160 073244 +de 10161 000401 +de 10162 103137 +de 10164 000011 +de 10165 033244 +de 10166 072117 +de 10170 000043 +de 10171 011245 +de 10172 070475 +de 10173 003231 +de 10174 004031 +de 10175 017625 +de 10176 010030 +de 10177 030475 +de 10200 005245 +de 10201 000013 +de 10202 171020 +de 10203 005243 +de 10204 073244 +de 10205 000401 +de 10206 103163 +de 10207 011243 +de 10210 044064 +de 10211 010000 +de 10212 044011 +de 10213 015626 +de 10214 011223 +de 10215 104324 +de 10216 101040 +de 10217 003227 +de 10220 026324 +de 10221 024563 +de 10222 015627 +de 10224 005207 +de 10225 050004 +de 10226 042011 +de 10227 005630 +de 10230 042013 +de 10231 032674 +de 10232 045254 +de 10233 011261 +de 10234 104324 +de 10235 101040 +de 10236 143604 +de 10237 024563 +de 10240 026324 +de 10241 015631 +de 10242 143262 +de 10247 010053 +de 10250 010077 +de 10251 010123 +de 10252 010147 +de 10253 010173 +de 10262 010317 +de 10263 010311 +de 10265 010275 +de 10266 010267 +de 10267 072030 +de 10270 010030 +de 10271 015625 +de 10272 026031 +de 10273 030475 +de 10274 003324 +de 10275 072026 +de 10276 010026 +de 10277 015625 +de 10300 026027 +de 10301 030474 +de 10302 003324 +de 10303 072024 +de 10304 010024 +de 10305 015625 +de 10306 026025 +de 10307 030473 +de 10310 003324 +de 10311 072022 +de 10312 010022 +de 10313 015625 +de 10314 026023 +de 10315 030472 +de 10316 003324 +de 10317 072020 +de 10320 010020 +de 10321 015625 +de 10322 026021 +de 10323 030471 +de 10324 017627 +de 10325 011611 +de 10326 026000 +de 10327 017630 +de 10330 050111 +de 10331 140040 +de 10332 050000 +de 10333 044005 +de 10334 100400 +de 10335 101100 +de 10336 100000 +de 10337 103632 +de 10340 005633 +de 10341 026111 +de 10342 011246 +de 10343 004000 +de 10344 056111 +de 10345 015634 +de 10346 011351 +de 10347 017635 +de 10350 103351 +de 10352 100040 +de 10353 003402 +de 10354 005246 +de 10355 010111 +de 10356 131040 +de 10357 003356 +de 10360 050001 +de 10361 004674 +de 10362 050003 +de 10363 044005 +de 10364 101100 +de 10365 003420 +de 10366 040677 +de 10367 100100 +de 10370 003404 +de 10371 040677 +de 10372 100100 +de 10373 103636 +de 10374 073611 +de 10375 132401 +de 10376 032401 +de 10377 030041 +de 10400 072674 +de 10401 143577 +de 10402 072674 +de 10403 121637 +de 10404 044005 +de 10405 141140 +de 10406 012106 +de 10407 101040 +de 10410 003375 +de 10411 004420 +de 10412 012674 +de 10413 100040 +de 10414 003426 +de 10415 044006 +de 10416 010417 +de 10417 003426 +de 10420 044007 +de 10421 007640 +de 10422 013261 +de 10423 101400 +de 10424 101040 +de 10425 103641 +de 10426 044004 +de 10427 140401 +de 10430 141050 +de 10431 011612 +de 10432 072674 +de 10433 052641 +de 10434 046653 +de 10435 100040 +de 10436 121642 +de 10437 005612 +de 10440 066641 +de 10441 052641 +de 10442 101040 +de 10443 003374 +de 10444 011612 +de 10445 052653 +de 10446 050653 +de 10447 005612 +de 10450 173643 +de 10451 140407 +de 10452 007612 +de 10453 013612 +de 10454 027612 +de 10455 013612 +de 10456 023644 +de 10457 003547 +de 10460 003563 +de 10461 022117 +de 10462 003566 +de 10463 003571 +de 10464 101100 +de 10465 003574 +de 10466 140040 +de 10467 066000 +de 10470 072674 +de 10471 023645 +de 10472 003475 +de 10473 101000 +de 10474 121642 +de 10475 062634 +de 10476 100000 +de 10477 003536 +de 10500 010000 +de 10501 044111 +de 10502 100400 +de 10503 003511 +de 10504 004324 +de 10505 050000 +de 10506 032324 +de 10507 024537 +de 10510 003513 +de 10511 140100 +de 10512 050111 +de 10513 024564 +de 10514 044002 +de 10515 100040 +de 10516 003543 +de 10517 044111 +de 10520 140100 +de 10521 016000 +de 10522 016116 +de 10523 072674 +de 10524 055613 +de 10525 100400 +de 10526 004112 +de 10527 051613 +de 10530 065620 +de 10531 101000 +de 10532 005612 +de 10533 101040 +de 10534 003374 +de 10535 003450 +de 10536 140500 +de 10537 050634 +de 10540 140100 +de 10541 010000 +de 10542 003514 +de 10543 121646 +de 10544 072674 +de 10545 073611 +de 10546 003517 +de 10547 022753 +de 10550 003560 +de 10551 003555 +de 10552 140040 +de 10553 066005 +de 10554 003470 +de 10555 140040 +de 10556 066006 +de 10557 003470 +de 10560 140040 +de 10561 066007 +de 10562 003470 +de 10563 140040 +de 10564 066004 +de 10565 003470 +de 10566 140040 +de 10567 066003 +de 10570 003470 +de 10571 140040 +de 10572 066002 +de 10573 003470 +de 10574 140040 +de 10575 066001 +de 10576 003470 +de 10577 010060 +de 10600 010104 +de 10601 010130 +de 10602 010154 +de 10603 010200 +de 10604 010054 +de 10605 010100 +de 10606 010124 +de 10607 010150 +de 10610 010174 +de 10625 000105 +de 10626 004000 +de 10627 100111 +de 10630 100001 +de 10631 100004 +de 10632 011116 +de 10633 010352 +de 10634 001562 +de 10635 001556 +de 10636 011170 +de 10637 011101 +de 10640 001000 +de 10641 011124 +de 10642 011127 +de 10643 040622 +de 10644 000020 +de 10645 001777 +de 10646 011144 +de 11102 120745 +de 11103 105366 +de 11104 010111 +de 11105 004537 +de 11106 016563 +de 11107 016751 +de 11110 100400 +de 11111 003123 +de 11112 105367 +de 11113 026342 +de 11114 111370 +de 11115 103371 +de 11116 072674 +de 11117 004124 +de 11120 050265 +de 11121 004112 +de 11122 050421 +de 11123 173367 +de 11124 120671 +de 11125 072674 +de 11126 103371 +de 11130 120745 +de 11131 021133 +de 11132 003103 +de 11134 005372 +de 11135 111373 +de 11136 005374 +de 11137 050265 +de 11140 050433 +de 11141 140040 +de 11142 050160 +de 11143 103133 +de 11145 011167 +de 11146 044001 +de 11147 073167 +de 11150 050003 +de 11151 131040 +de 11152 003151 +de 11153 050004 +de 11154 004112 +de 11155 052012 +de 11156 050012 +de 11157 005167 +de 11160 015375 +de 11161 011167 +de 11162 105144 +de 11163 011164 +de 11165 133167 +de 11166 103144 +de 11170 044007 +de 11171 013205 +de 11172 100040 +de 11173 003203 +de 11174 044004 +de 11175 101400 +de 11176 103376 +de 11177 004674 +de 11200 141206 +de 11201 010137 +de 11202 003124 +de 11203 072674 +de 11204 021101 +de 11205 175461 +de 11206 177777 +de 11207 000005 +de 11213 012114 +de 11214 111377 +de 11215 100400 +de 11216 003323 +de 11217 141140 +de 11220 010000 +de 11221 045331 +de 11222 011360 +de 11223 173400 +de 11224 055346 +de 11225 123401 +de 11226 003240 +de 11227 003245 +de 11230 021231 +de 11232 120745 +de 11233 105377 +de 11234 007402 +de 11235 013403 +de 11236 111377 +de 11237 003260 +de 11240 017360 +de 11241 017360 +de 11242 123401 +de 11243 021231 +de 11244 101000 +de 11245 105377 +de 11246 007403 +de 11247 100040 +de 11250 003263 +de 11251 045341 +de 11252 041477 +de 11253 055341 +de 11254 115401 +de 11255 040476 +de 11256 141216 +de 11257 051341 +de 11260 105401 +de 11261 051346 +de 11262 103404 +de 11263 105377 +de 11264 017405 +de 11265 111377 +de 11266 007403 +de 11267 100040 +de 11270 003260 +de 11271 073406 +de 11272 045331 +de 11273 123401 +de 11274 003300 +de 11275 003300 +de 11276 024000 +de 11277 003272 +de 11300 045340 +de 11301 011360 +de 11302 004000 +de 11303 140407 +de 11304 141340 +de 11305 173400 +de 11306 111377 +de 11307 141340 +de 11310 015407 +de 11311 051353 +de 11312 005360 +de 11313 051361 +de 11314 044433 +de 11315 100040 +de 11316 021133 +de 11317 105401 +de 11320 055346 +de 11321 040477 +de 11322 003257 +de 11323 140100 +de 11324 111377 +de 11325 003260 +de 11326 000161 +de 11327 001066 +de 11330 004202 +de 11331 000377 +de 11332 000177 +de 11333 000060 +de 11334 000060 +de 11335 177324 +de 11336 177704 +de 11337 177764 +de 11340 177771 +de 11366 010246 +de 11367 010611 +de 11370 110611 +de 11371 150577 +de 11372 101000 +de 11373 150247 +de 11374 177766 +de 11375 000011 +de 11376 001004 +de 11377 052620 +de 11400 012654 +de 11401 012644 +de 11402 177771 +de 11403 000006 +de 11404 012156 +de 11405 000002 +de 11406 177775 +de 11407 020274 +de 12110 033104 +de 12111 072117 +de 12112 003132 +de 12114 033104 +de 12115 072116 +de 12116 003132 +de 12120 033104 +de 12121 072115 +de 12122 003132 +de 12124 033104 +de 12125 072114 +de 12126 003132 +de 12130 033104 +de 12131 072113 +de 12132 033654 +de 12133 011103 +de 12134 000011 +de 12135 003136 +de 12136 000043 +de 12137 011105 +de 12140 004416 +de 12141 057632 +de 12142 017712 +de 12143 101400 +de 12144 003516 +de 12145 131040 +de 12146 003145 +de 12147 057637 +de 12150 011644 +de 12151 055625 +de 12152 051625 +de 12153 045620 +de 12154 100100 +de 12155 103713 +de 12156 004502 +de 12157 170120 +de 12160 026134 +de 12161 011652 +de 12162 140040 +de 12163 066634 +de 12164 101400 +de 12165 003173 +de 12166 140100 +de 12167 010000 +de 12170 120671 +de 12171 024564 +de 12172 073654 +de 12173 000401 +de 12174 044265 +de 12175 100040 +de 12176 003276 +de 12177 045660 +de 12200 141206 +de 12201 062627 +de 12202 101000 +de 12203 044622 +de 12204 051660 +de 12205 001001 +de 12206 145660 +de 12207 023714 +de 12210 003550 +de 12211 073654 +de 12212 000401 +de 12213 044317 +de 12214 100040 +de 12215 003363 +de 12216 044312 +de 12217 100040 +de 12220 003375 +de 12221 044445 +de 12222 101040 +de 12223 003500 +de 12224 140040 +de 12225 066421 +de 12226 100400 +de 12227 003262 +de 12230 100040 +de 12231 005715 +de 12232 013716 +de 12233 141340 +de 12234 012106 +de 12235 141340 +de 12236 151704 +de 12237 045704 +de 12240 016114 +de 12241 151665 +de 12242 011655 +de 12243 014117 +de 12244 151672 +de 12245 044646 +de 12246 073655 +de 12247 050000 +de 12250 004417 +de 12251 050002 +de 12252 004117 +de 12253 056000 +de 12254 056001 +de 12255 056002 +de 12256 056003 +de 12257 050004 +de 12260 073654 +de 12261 003465 +de 12262 005717 +de 12263 151665 +de 12264 005720 +de 12265 151672 +de 12266 003467 +de 12267 005721 +de 12270 151665 +de 12271 014117 +de 12272 151672 +de 12273 016117 +de 12274 010000 +de 12275 003252 +de 12276 100400 +de 12277 003500 +de 12300 016114 +de 12301 050265 +de 12302 022114 +de 12303 003267 +de 12304 003224 +de 12305 073361 +de 12306 055363 +de 12307 024000 +de 12310 003306 +de 12311 100040 +de 12312 120061 +de 12313 073654 +de 12314 125353 +de 12315 101000 +de 12316 004660 +de 12317 015355 +de 12320 151665 +de 12321 017356 +de 12322 151672 +de 12323 015357 +de 12324 010000 +de 12325 005354 +de 12326 026111 +de 12327 011653 +de 12330 005356 +de 12331 103332 +de 12332 001454 +de 12333 140407 +de 12334 072113 +de 12335 112660 +de 12336 027653 +de 12337 010111 +de 12340 005653 +de 12341 073654 +de 12342 001001 +de 12343 100040 +de 12344 021571 +de 12345 141206 +de 12346 053620 +de 12347 051620 +de 12350 105360 +de 12351 051645 +de 12352 003467 +de 12353 071615 +de 12354 012333 +de 12355 137675 +de 12356 177675 +de 12357 177671 +de 12360 026644 +de 12361 177722 +de 12362 044107 +de 12363 050634 +de 12364 140040 +de 12365 166634 +de 12366 050317 +de 12367 100040 +de 12370 003406 +de 12371 005722 +de 12372 015654 +de 12373 050370 +de 12374 003406 +de 12375 050634 +de 12376 140040 +de 12377 166634 +de 12400 050312 +de 12401 100040 +de 12402 003406 +de 12403 005723 +de 12404 015654 +de 12405 050363 +de 12406 173724 +de 12407 133725 +de 12410 005726 +de 12411 050003 +de 12412 011657 +de 12413 073654 +de 12414 044634 +de 12415 140100 +de 12416 015727 +de 12417 151665 +de 12420 011655 +de 12421 173724 +de 12422 131040 +de 12423 003422 +de 12424 050001 +de 12425 044111 +de 12426 140100 +de 12427 073654 +de 12430 151672 +de 12431 011656 +de 12432 005657 +de 12433 100040 +de 12434 003456 +de 12435 005730 +de 12436 026111 +de 12437 011653 +de 12440 005655 +de 12441 016117 +de 12442 010000 +de 12443 017656 +de 12444 015731 +de 12445 011450 +de 12446 017732 +de 12447 103450 +de 12451 100040 +de 12452 003524 +de 12453 005653 +de 12454 010111 +de 12455 073654 +de 12456 105655 +de 12457 141044 +de 12460 052646 +de 12461 127655 +de 12462 117655 +de 12463 115656 +de 12464 111656 +de 12465 140040 +de 12466 050445 +de 12467 004416 +de 12470 051632 +de 12471 131040 +de 12472 003471 +de 12473 051637 +de 12474 045677 +de 12475 011476 +de 12477 005711 +de 12500 050440 +de 12501 001001 +de 12502 005652 +de 12503 010134 +de 12504 170120 +de 12505 144071 +de 12506 011106 +de 12507 000013 +de 12510 005105 +de 12511 171020 +de 12512 005103 +de 12513 073104 +de 12514 000401 +de 12515 103106 +de 12516 005733 +de 12517 051625 +de 12520 045620 +de 12521 006122 +de 12522 051620 +de 12523 003156 +de 12524 001001 +de 12525 021526 +de 12527 120745 +de 12530 004000 +de 12531 026342 +de 12532 050000 +de 12533 000401 +de 12534 005653 +de 12535 010111 +de 12536 024564 +de 12537 044004 +de 12540 007734 +de 12541 141140 +de 12542 073654 +de 12543 054622 +de 12544 011653 +de 12545 140040 +de 12546 111653 +de 12547 003500 +de 12550 010000 +de 12551 131040 +de 12552 003551 +de 12553 056001 +de 12554 100400 +de 12555 140407 +de 12556 017735 +de 12557 100400 +de 12560 003211 +de 12561 064003 +de 12562 003575 +de 12563 120671 +de 12564 024564 +de 12565 073654 +de 12566 140040 +de 12567 151660 +de 12570 021571 +de 12572 120745 +de 12573 121736 +de 12574 003500 +de 12575 073654 +de 12576 140040 +de 12577 011657 +de 12600 145660 +de 12601 050634 +de 12602 000401 +de 12603 003415 +de 12605 033104 +de 12606 011103 +de 12607 033654 +de 12610 005604 +de 12611 150071 +de 12612 143613 +de 12613 012156 +de 12614 012156 +de 12616 012156 +de 12617 012156 +de 12665 000032 +de 12666 000034 +de 12667 000036 +de 12670 000040 +de 12671 000042 +de 12672 000033 +de 12673 000035 +de 12674 000037 +de 12675 000041 +de 12676 000043 +de 12677 030071 +de 12700 030072 +de 12701 030073 +de 12702 030074 +de 12703 030075 +de 12704 032101 +de 12705 032106 +de 12706 032113 +de 12707 032120 +de 12710 032125 +de 12711 175551 +de 12712 000012 +de 12713 011213 +de 12714 001777 +de 12715 000020 +de 12716 000003 +de 12717 000060 +de 12720 032777 +de 12721 011206 +de 12722 000317 +de 12723 000312 +de 12724 040634 +de 12725 140003 +de 12726 177470 +de 12727 000004 +de 12730 012451 +de 12731 001562 +de 12732 001556 +de 12733 014400 +de 12734 017400 +de 12735 002342 +de 12736 011133 +de 13057 033135 +de 13060 073056 +de 13061 033106 +de 13062 072116 +de 13063 003110 +de 13065 033135 +de 13066 073064 +de 13067 033106 +de 13070 072115 +de 13071 003110 +de 13073 033135 +de 13074 073072 +de 13075 033106 +de 13076 072114 +de 13077 003110 +de 13101 033135 +de 13102 073100 +de 13103 033106 +de 13104 072113 +de 13105 003110 +de 13107 033135 +de 13110 000011 +de 13111 003112 +de 13112 032675 +de 13113 011133 +de 13114 000043 +de 13115 011134 +de 13116 004501 +de 13117 170120 +de 13120 026134 +de 13121 011136 +de 13122 000401 +de 13123 142453 +de 13125 072675 +de 13126 005124 +de 13127 050453 +de 13130 004121 +de 13131 051137 +de 13132 003516 +de 13147 000050 +de 13152 000042 +de 13153 013323 +de 13154 013324 +de 13155 013325 +de 13156 013326 +de 13157 000051 +de 13162 000043 +de 13163 013327 +de 13164 013330 +de 13165 013331 +de 13166 013332 +de 13167 003014 +de 13170 070070 +de 13171 070060 +de 13173 070051 +de 13174 101000 +de 13175 101000 +de 13176 101000 +de 13177 101000 +de 13200 030170 +de 13201 030160 +de 13203 030151 +de 13204 003531 +de 13205 003531 +de 13206 003531 +de 13207 003531 +de 13211 151323 +de 13212 065323 +de 13213 004000 +de 13214 100400 +de 13215 003247 +de 13216 045327 +de 13217 057323 +de 13220 101400 +de 13221 103210 +de 13222 005177 +de 13223 051317 +de 13224 005210 +de 13225 051251 +de 13226 004000 +de 13227 140100 +de 13230 011255 +de 13231 014130 +de 13232 010000 +de 13233 001001 +de 13234 000013 +de 13235 021106 +de 13236 001001 +de 13237 120672 +de 13240 073255 +de 13241 045143 +de 13242 140401 +de 13243 100040 +de 13244 143251 +de 13245 120665 +de 13246 003241 +de 13247 004112 +de 13250 003223 +de 13257 140040 +de 13260 051333 +de 13261 011106 +de 13262 111535 +de 13263 045273 +de 13264 050453 +de 13265 045303 +de 13266 051313 +de 13267 000013 +de 13270 021106 +de 13271 120672 +de 13272 103256 +de 13273 013353 +de 13274 013353 +de 13276 013353 +de 13277 013416 +de 13300 013416 +de 13301 013416 +de 13302 013416 +de 13303 070270 +de 13304 070260 +de 13306 070251 +de 13307 100000 +de 13310 100000 +de 13311 100000 +de 13312 100000 +de 13353 005536 +de 13354 003417 +de 13355 004114 +de 13356 050504 +de 13357 140040 +de 13360 127535 +de 13361 101400 +de 13362 003367 +de 13363 005537 +de 13364 050453 +de 13365 140040 +de 13366 003470 +de 13367 045333 +de 13370 101040 +de 13371 003400 +de 13372 010000 +de 13373 050111 +de 13374 001001 +de 13375 120671 +de 13376 000401 +de 13377 072675 +de 13400 045313 +de 13401 011403 +de 13402 005537 +de 13404 003466 +de 13405 140040 +de 13406 051333 +de 13407 045313 +de 13410 011411 +de 13412 003457 +de 13413 045343 +de 13414 100040 +de 13415 003430 +de 13416 005540 +de 13417 050453 +de 13420 140040 +de 13421 051137 +de 13422 004000 +de 13423 041577 +de 13424 015541 +de 13425 151147 +de 13426 141206 +de 13427 003511 +de 13430 021124 +de 13431 003413 +de 13452 044453 +de 13453 051333 +de 13454 021124 +de 13455 045333 +de 13456 003466 +de 13457 005542 +de 13460 115543 +de 13461 111543 +de 13462 007544 +de 13463 101040 +de 13464 003357 +de 13465 005545 +de 13466 050453 +de 13467 005546 +de 13470 051137 +de 13471 001001 +de 13472 004537 +de 13473 016563 +de 13474 016570 +de 13475 100400 +de 13476 003452 +de 13477 104324 +de 13500 101040 +de 13501 003452 +de 13502 026324 +de 13503 024563 +de 13504 000401 +de 13505 051333 +de 13506 015547 +de 13507 151147 +de 13510 015550 +de 13511 140100 +de 13512 151157 +de 13513 045200 +de 13514 011515 +de 13516 005136 +de 13517 001001 +de 13520 170120 +de 13521 010134 +de 13522 000013 +de 13523 005134 +de 13524 171020 +de 13525 073135 +de 13526 005133 +de 13527 000401 +de 13530 103106 +de 13531 145147 +de 13532 140100 +de 13533 151147 +de 13534 003516 +de 13535 054177 +de 13536 013400 +de 13537 013357 +de 13540 014053 +de 13541 113432 +de 13542 000400 +de 13543 054147 +de 13544 003400 +de 13545 014544 +de 13546 176650 +de 13547 100011 +de 13550 000076 +de 14005 045042 +de 14006 012106 +de 14007 051147 +de 14010 004143 +de 14011 051167 +de 14012 103004 +de 14013 021004 +de 14014 045147 +de 14015 007627 +de 14016 013630 +de 14017 100040 +de 14020 103631 +de 14021 045167 +de 14022 012143 +de 14023 101040 +de 14024 125632 +de 14025 103631 +de 14027 072675 +de 14030 173633 +de 14031 044165 +de 14032 072675 +de 14033 100400 +de 14034 003272 +de 14035 044504 +de 14036 100040 +de 14037 003232 +de 14040 005026 +de 14041 103634 +de 14043 000100 +de 14044 000200 +de 14045 000300 +de 14046 040000 +de 14047 040100 +de 14050 040200 +de 14051 040300 +de 14052 121635 +de 14053 044504 +de 14054 022116 +de 14055 003052 +de 14056 101000 +de 14057 004000 +de 14060 041577 +de 14061 010000 +de 14062 105636 +de 14063 011003 +de 14064 105637 +de 14065 072675 +de 14066 007640 +de 14067 051167 +de 14070 005003 +de 14071 051147 +de 14072 007627 +de 14073 141140 +de 14074 015641 +de 14075 051137 +de 14076 017134 +de 14077 101400 +de 14100 103132 +de 14101 105642 +de 14102 011103 +de 14104 100000 +de 14105 003232 +de 14106 140040 +de 14107 066504 +de 14110 100040 +de 14111 104700 +de 14112 101040 +de 14113 003116 +de 14114 004107 +de 14115 111643 +de 14116 105644 +de 14117 011120 +de 14121 143137 +de 14122 003231 +de 14123 014243 +de 14124 013357 +de 14125 013355 +de 14126 014230 +de 14127 013357 +de 14130 014230 +de 14131 014230 +de 14132 014230 +de 14133 013357 +de 14134 114134 +de 14136 177777 +de 14230 065167 +de 14231 065167 +de 14232 140040 +de 14233 051147 +de 14234 005645 +de 14235 003273 +de 14236 005646 +de 14237 053167 +de 14240 051167 +de 14241 005647 +de 14242 003273 +de 14243 004675 +de 14244 012130 +de 14245 100040 +de 14246 005650 +de 14247 012126 +de 14250 051217 +de 14251 045147 +de 14252 007651 +de 14253 051177 +de 14254 010000 +de 14255 044165 +de 14256 072675 +de 14257 101400 +de 14260 007652 +de 14261 100040 +de 14262 003272 +de 14263 045147 +de 14264 007653 +de 14265 013654 +de 14266 101010 +de 14267 100040 +de 14270 003311 +de 14271 065167 +de 14272 005655 +de 14273 051137 +de 14274 001001 +de 14275 045167 +de 14276 010515 +de 14277 045147 +de 14300 053137 +de 14301 120670 +de 14302 103631 +de 14303 121635 +de 14304 003274 +de 14305 065217 +de 14306 100000 +de 14307 003236 +de 14310 021026 +de 14311 045147 +de 14312 007656 +de 14313 121657 +de 14314 003305 +de 14315 051137 +de 14316 045147 +de 14317 007660 +de 14320 012106 +de 14321 053042 +de 14322 051157 +de 14323 004675 +de 14324 013661 +de 14325 100040 +de 14326 105662 +de 14327 100040 +de 14330 025136 +de 14331 003341 +de 14332 045147 +de 14333 007663 +de 14334 013664 +de 14335 051147 +de 14336 105662 +de 14337 140407 +de 14340 011136 +de 14341 005665 +de 14342 103666 +de 14343 105667 +de 14344 101040 +de 14345 003353 +de 14346 105644 +de 14347 011350 +de 14351 003400 +de 14352 003361 +de 14353 140500 +de 14354 051177 +de 14355 045147 +de 14356 007670 +de 14357 013655 +de 14360 051147 +de 14361 005671 +de 14362 053137 +de 14363 051137 +de 14364 021464 +de 14365 003370 +de 14366 021026 +de 14367 172677 +de 14370 121672 +de 14371 003366 +de 14372 051207 +de 14373 045177 +de 14374 100400 +de 14375 003610 +de 14376 121673 +de 14377 003551 +de 14400 045177 +de 14401 121674 +de 14402 003412 +de 14403 021464 +de 14404 072675 +de 14405 003407 +de 14406 021026 +de 14407 121675 +de 14410 003406 +de 14411 003372 +de 14412 005676 +de 14413 053137 +de 14414 051137 +de 14415 021464 +de 14416 004000 +de 14417 015677 +de 14420 050111 +de 14421 072675 +de 14422 100000 +de 14423 021026 +de 14424 121675 +de 14425 003423 +de 14426 051207 +de 14427 172677 +de 14430 021520 +de 14431 001001 +de 14432 132401 +de 14433 032401 +de 14434 030041 +de 14435 121635 +de 14436 003435 +de 14437 003427 +de 14440 045177 +de 14441 121674 +de 14442 003444 +de 14443 003447 +de 14444 021026 +de 14445 003440 +de 14446 121635 +de 14447 172677 +de 14450 044111 +de 14451 100400 +de 14452 003446 +de 14453 072675 +de 14454 003456 +de 14455 021026 +de 14456 045177 +de 14457 121657 +de 14460 003455 +de 14461 051137 +de 14462 111667 +de 14463 003403 +de 14465 104677 +de 14466 015700 +de 14467 011135 +de 14470 045137 +de 14471 111135 +de 14472 025135 +de 14473 045147 +de 14474 111135 +de 14475 025135 +de 14476 045157 +de 14477 111135 +de 14500 025135 +de 14501 045167 +de 14502 111135 +de 14503 105701 +de 14504 140100 +de 14505 172677 +de 14506 050111 +de 14507 131040 +de 14510 003507 +de 14511 050001 +de 14512 004675 +de 14513 140500 +de 14514 050003 +de 14515 140040 +de 14516 050000 +de 14517 103464 +de 14521 005702 +de 14522 026111 +de 14523 011227 +de 14524 044111 +de 14525 140100 +de 14526 011543 +de 14527 140407 +de 14530 014000 +de 14531 015703 +de 14532 011535 +de 14533 017704 +de 14534 103535 +de 14536 140407 +de 14537 111543 +de 14540 005227 +de 14541 010111 +de 14542 103520 +de 14544 021464 +de 14545 072675 +de 14546 105667 +de 14547 101040 +de 14550 003610 +de 14551 105642 +de 14552 011553 +de 14554 003570 +de 14555 005646 +de 14556 153207 +de 14557 006120 +de 14560 153207 +de 14561 151207 +de 14562 172677 +de 14563 044005 +de 14564 007705 +de 14565 013706 +de 14566 050005 +de 14567 003616 +de 14570 045177 +de 14571 121707 +de 14572 105644 +de 14573 011574 +de 14575 003577 +de 14576 003612 +de 14577 045147 +de 14600 007655 +de 14601 013655 +de 14602 101040 +de 14603 003606 +de 14604 172677 +de 14605 003616 +de 14606 004114 +de 14607 003556 +de 14610 004115 +de 14611 003556 +de 14612 172677 +de 14613 044007 +de 14614 140500 +de 14615 050007 +de 14616 021520 +de 14617 001001 +de 14620 132401 +de 14621 032401 +de 14622 030041 +de 14623 121635 +de 14624 003623 +de 14625 003604 +de 14626 103710 +de 14627 007400 +de 14630 002000 +de 14631 013357 +de 14632 021431 +de 14633 054177 +de 14634 013127 +de 14635 013124 +de 14636 053432 +de 14637 053433 +de 14640 177760 +de 14641 114123 +de 14642 053170 +de 14643 056306 +de 14644 053313 +de 14645 000400 +de 14646 000004 +de 14647 004400 +de 14650 000704 +de 14651 000077 +de 14652 000340 +de 14653 040300 +de 14654 040200 +de 14655 003400 +de 14656 100077 +de 14657 015161 +de 14660 010000 +de 14661 000006 +de 14662 030457 +de 14663 157777 +de 14664 020000 +de 14665 014343 +de 14666 013466 +de 14667 053137 +de 14670 174377 +de 14671 000300 +de 14672 015064 +de 14673 022415 +de 14674 015114 +de 14675 015233 +de 14676 000100 +de 14677 100010 +de 14700 000005 +de 14701 153147 +de 14702 014536 +de 14703 001563 +de 14704 001557 +de 14705 177767 +de 14706 000010 +de 14707 022426 +de 14710 013405 +de 15034 011160 +de 15035 005521 +de 15036 011157 +de 15037 005522 +de 15040 011156 +de 15041 105156 +de 15042 101040 +de 15043 003060 +de 15044 010000 +de 15045 044005 +de 15046 141044 +de 15047 052006 +de 15050 007523 +de 15051 052006 +de 15052 013160 +de 15053 100040 +de 15054 003060 +de 15055 005156 +de 15056 025033 +de 15057 103033 +de 15060 025156 +de 15061 025157 +de 15062 003041 +de 15063 103033 +de 15065 004675 +de 15066 040576 +de 15067 140407 +de 15070 015524 +de 15071 011157 +de 15072 005522 +de 15073 011156 +de 15074 105156 +de 15075 100040 +de 15076 003110 +de 15077 133156 +de 15100 044111 +de 15101 140500 +de 15102 050111 +de 15103 004000 +de 15104 015525 +de 15105 072675 +de 15106 025064 +de 15107 103064 +de 15110 025156 +de 15111 025157 +de 15112 003074 +de 15113 103064 +de 15115 011153 +de 15116 033154 +de 15117 073526 +de 15120 024000 +de 15121 004000 +de 15122 023155 +de 15123 003150 +de 15124 003150 +de 15125 044000 +de 15126 013153 +de 15127 100040 +de 15130 003120 +de 15131 004000 +de 15132 013527 +de 15133 101040 +de 15134 111530 +de 15135 044001 +de 15136 050000 +de 15137 024000 +de 15140 004000 +de 15141 013155 +de 15142 100040 +de 15143 003135 +de 15144 005155 +de 15145 016114 +de 15146 011155 +de 15147 025114 +de 15150 073154 +de 15151 005153 +de 15152 103114 +de 15162 033204 +de 15163 011203 +de 15164 140100 +de 15165 015531 +de 15166 010000 +de 15167 044000 +de 15170 101100 +de 15171 003201 +de 15172 005203 +de 15173 100400 +de 15174 021361 +de 15175 021347 +de 15176 007532 +de 15177 013533 +de 15200 025161 +de 15201 073204 +de 15202 103161 +de 15206 011274 +de 15207 005534 +de 15210 011273 +de 15211 073535 +de 15212 044000 +de 15213 101040 +de 15214 003226 +de 15215 141044 +de 15216 052014 +de 15217 007523 +de 15220 052014 +de 15221 013274 +de 15222 100040 +de 15223 003226 +de 15224 025205 +de 15225 103205 +de 15226 024000 +de 15227 025273 +de 15230 003212 +de 15231 005274 +de 15232 103205 +de 15234 004000 +de 15235 113536 +de 15236 007537 +de 15237 113536 +de 15240 013540 +de 15241 011275 +de 15242 105541 +de 15243 011276 +de 15244 105542 +de 15245 011277 +de 15246 005534 +de 15247 011273 +de 15250 073535 +de 15251 044000 +de 15252 100040 +de 15253 003267 +de 15254 005275 +de 15255 050000 +de 15256 005276 +de 15257 050014 +de 15260 005277 +de 15261 050030 +de 15262 025233 +de 15263 004000 +de 15264 015543 +de 15265 072675 +de 15266 103233 +de 15267 024000 +de 15270 025273 +de 15271 003251 +de 15272 003263 +de 15304 011300 +de 15305 007544 +de 15306 015545 +de 15307 011301 +de 15310 004121 +de 15311 022000 +de 15312 141206 +de 15313 141206 +de 15314 141206 +de 15315 141206 +de 15316 041576 +de 15317 011302 +de 15320 005300 +de 15321 141140 +de 15322 006116 +de 15323 041576 +de 15324 140407 +de 15325 015546 +de 15326 011331 +de 15327 011341 +de 15330 005547 +de 15332 107301 +de 15333 100040 +de 15334 003346 +de 15335 005300 +de 15336 040672 +de 15337 006116 +de 15340 013302 +de 15342 113301 +de 15343 111301 +de 15344 010477 +de 15345 025303 +de 15346 103303 +de 15350 044000 +de 15351 007547 +de 15352 040477 +de 15353 052000 +de 15354 007547 +de 15355 052000 +de 15356 015550 +de 15357 050000 +de 15360 103347 +de 15362 044000 +de 15363 015551 +de 15364 052000 +de 15365 007552 +de 15366 052000 +de 15367 050000 +de 15370 103361 +de 15372 033501 +de 15373 011502 +de 15374 005501 +de 15375 022130 +de 15376 003442 +de 15377 101000 +de 15400 073553 +de 15401 004124 +de 15402 011500 +de 15403 003411 +de 15404 010000 +de 15405 064003 +de 15406 003462 +de 15407 004121 +de 15410 050003 +de 15411 025500 +de 15412 003415 +de 15413 025371 +de 15414 003476 +de 15415 044000 +de 15416 100040 +de 15417 003404 +de 15420 104324 +de 15421 101040 +de 15422 003413 +de 15423 026324 +de 15424 024563 +de 15425 050000 +de 15426 011500 +de 15427 026000 +de 15430 050001 +de 15431 005554 +de 15432 011503 +de 15433 050003 +de 15434 140040 +de 15435 050000 +de 15436 005500 +de 15437 014117 +de 15440 050002 +de 15441 003452 +de 15442 012120 +de 15443 100040 +de 15444 103371 +de 15445 005555 +de 15446 010503 +de 15447 030026 +de 15450 103371 +de 15451 044000 +de 15452 010000 +de 15453 014117 +de 15454 050000 +de 15455 005500 +de 15456 050003 +de 15457 025503 +de 15460 003451 +de 15461 073500 +de 15462 144002 +de 15463 066002 +de 15464 073501 +de 15465 150403 +de 15466 050403 +de 15467 010000 +de 15470 140040 +de 15471 050000 +de 15472 005502 +de 15473 050001 +de 15474 004515 +de 15475 050002 +de 15476 073501 +de 15477 103371 +de 15505 044000 +de 15506 101040 +de 15507 103504 +de 15510 144000 +de 15511 101040 +de 15512 133556 +de 15513 066000 +de 15514 010000 +de 15515 140040 +de 15516 050000 +de 15517 025504 +de 15520 103504 +de 15521 177770 +de 15522 033457 +de 15523 177700 +de 15524 177771 +de 15525 000010 +de 15526 032260 +de 15527 032261 +de 15530 020210 +de 15531 032271 +de 15532 177460 +de 15533 000004 +de 15534 177764 +de 15535 033477 +de 15536 054137 +de 15537 000277 +de 15540 000200 +de 15541 054147 +de 15542 054167 +de 15543 000030 +de 15544 000077 +de 15545 032571 +de 15546 041700 +de 15547 000017 +de 15550 000400 +de 15551 000020 +de 15552 000060 +de 15553 000337 +de 15554 177757 +de 15555 177324 +de 15556 040051 +de 16013 033121 +de 16014 073012 +de 16015 033042 +de 16016 072116 +de 16017 003044 +de 16021 033121 +de 16022 073020 +de 16023 033042 +de 16024 072115 +de 16025 003044 +de 16027 033121 +de 16030 073026 +de 16031 033042 +de 16032 072114 +de 16033 003044 +de 16035 033121 +de 16036 073034 +de 16037 033042 +de 16040 072113 +de 16041 003044 +de 16043 033121 +de 16044 000011 +de 16045 003046 +de 16046 011117 +de 16047 000043 +de 16050 011120 +de 16051 032676 +de 16052 004500 +de 16053 170120 +de 16054 026134 +de 16055 011122 +de 16056 000401 +de 16057 143107 +de 16061 004000 +de 16062 016130 +de 16063 100400 +de 16064 003071 +de 16065 004107 +de 16066 041576 +de 16067 051306 +de 16070 100000 +de 16072 005060 +de 16073 051107 +de 16074 005122 +de 16075 001001 +de 16076 170120 +de 16077 010134 +de 16100 000013 +de 16101 005120 +de 16102 171020 +de 16103 073121 +de 16104 005117 +de 16105 000401 +de 16106 103042 +de 16124 030270 +de 16125 030260 +de 16127 030251 +de 16130 016205 +de 16131 016207 +de 16132 016211 +de 16133 016213 +de 16134 016215 +de 16135 000044 +de 16136 000046 +de 16140 000030 +de 16141 017407 +de 16142 017410 +de 16143 017411 +de 16144 017412 +de 16145 000045 +de 16146 000047 +de 16150 000031 +de 16151 017413 +de 16152 017414 +de 16153 017415 +de 16154 017416 +de 16220 140040 +de 16221 051155 +de 16222 151135 +de 16223 011042 +de 16224 140500 +de 16225 111575 +de 16226 005576 +de 16227 021273 +de 16230 103217 +de 16232 014676 +de 16233 011303 +de 16234 015577 +de 16235 011304 +de 16236 004676 +de 16237 012120 +de 16240 101040 +de 16241 103231 +de 16242 105303 +de 16243 101040 +de 16244 103231 +de 16245 010000 +de 16246 005305 +de 16247 101040 +de 16250 003261 +de 16251 004416 +de 16252 056003 +de 16253 100400 +de 16254 003267 +de 16255 004676 +de 16256 016130 +de 16257 101400 +de 16260 103231 +de 16261 073303 +de 16262 121600 +de 16263 103231 +de 16264 121601 +de 16265 125304 +de 16266 003242 +de 16267 023305 +de 16270 011305 +de 16271 101000 +de 16272 103231 +de 16274 051107 +de 16275 001001 +de 16276 000013 +de 16277 021042 +de 16300 001001 +de 16301 120672 +de 16302 103273 +de 16316 030570 +de 16317 030560 +de 16320 030550 +de 16321 030551 +de 16323 011324 +de 16325 004121 +de 16326 051306 +de 16327 005322 +de 16330 003073 +de 16331 004110 +de 16332 016120 +de 16333 041577 +de 16334 051306 +de 16335 005602 +de 16336 003073 +de 16337 005603 +de 16340 021322 +de 16341 004172 +de 16342 100400 +de 16343 003347 +de 16344 007604 +de 16345 100040 +de 16346 003337 +de 16347 004116 +de 16350 003357 +de 16351 004000 +de 16352 016120 +de 16353 101040 +de 16354 103605 +de 16355 111575 +de 16356 004115 +de 16357 050504 +de 16360 121606 +de 16361 100000 +de 16362 003360 +de 16363 140040 +de 16364 151145 +de 16365 151135 +de 16366 067155 +de 16367 140100 +de 16370 101040 +de 16371 003400 +de 16372 024541 +de 16373 011305 +de 16374 045175 +de 16375 073305 +de 16376 050007 +de 16377 121601 +de 16400 140040 +de 16401 011305 +de 16402 005607 +de 16403 021231 +de 16404 005610 +de 16405 021231 +de 16406 072676 +de 16407 004000 +de 16410 016130 +de 16411 101400 +de 16412 003422 +de 16413 105575 +de 16414 101040 +de 16415 003422 +de 16416 105611 +de 16417 021322 +de 16420 045316 +de 16421 021322 +de 16422 004123 +de 16423 011303 +de 16424 000401 +de 16425 005612 +de 16426 001001 +de 16427 120670 +de 16430 101000 +de 16431 025303 +de 16432 003424 +de 16433 005613 +de 16434 120670 +de 16435 101000 +de 16436 000401 +de 16437 140040 +de 16440 111575 +de 16441 005603 +de 16442 021322 +de 16443 004107 +de 16444 011305 +de 16445 005607 +de 16446 021231 +de 16447 005610 +de 16450 021231 +de 16451 072676 +de 16452 121606 +de 16453 003503 +de 16454 151130 +de 16455 045130 +de 16456 151135 +de 16457 141206 +de 16460 151145 +de 16461 051155 +de 16462 004516 +de 16463 151155 +de 16464 045124 +de 16465 011071 +de 16466 004112 +de 16467 051155 +de 16470 051175 +de 16471 005305 +de 16472 051306 +de 16473 021060 +de 16474 140040 +de 16475 151135 +de 16476 051155 +de 16477 045306 +de 16500 101040 +de 16501 003351 +de 16502 003443 +de 16503 044302 +de 16504 101040 +de 16505 003510 +de 16506 005610 +de 16507 003514 +de 16510 044272 +de 16511 101040 +de 16512 003441 +de 16513 005607 +de 16514 014000 +de 16515 051165 +de 16516 004115 +de 16517 111614 +de 16520 145165 +de 16521 051155 +de 16522 045165 +de 16523 010000 +de 16524 144000 +de 16525 050000 +de 16526 101040 +de 16527 133615 +de 16530 064251 +de 16531 072676 +de 16532 172700 +de 16533 005616 +de 16534 026111 +de 16535 011123 +de 16536 004000 +de 16537 056111 +de 16540 015617 +de 16541 140100 +de 16542 011545 +de 16543 017620 +de 16544 103545 +de 16546 100040 +de 16547 003553 +de 16550 005123 +de 16551 010111 +de 16552 103621 +de 16553 027123 +de 16554 010111 +de 16555 004676 +de 16556 012120 +de 16557 101040 +de 16560 103621 +de 16561 005123 +de 16562 001001 +de 16563 021564 +de 16565 120745 +de 16566 000401 +de 16567 072676 +de 16570 045155 +de 16571 140500 +de 16572 051155 +de 16573 140100 +de 16574 103622 +de 16575 053343 +de 16576 016331 +de 16577 000251 +de 16600 015504 +de 16601 017237 +de 16602 016341 +de 16603 101000 +de 16604 000340 +de 16605 017143 +de 16606 017250 +de 16607 000272 +de 16610 000302 +de 16611 041170 +de 16612 002000 +de 16613 005000 +de 16614 057203 +de 16615 040051 +de 16616 016546 +de 16617 001562 +de 16620 001556 +de 16621 017062 +de 16622 017064 +de 17056 030070 +de 17057 030060 +de 17061 030051 +de 17062 072676 +de 17063 105424 +de 17064 015425 +de 17065 057203 +de 17066 111426 +de 17067 172700 +de 17070 131040 +de 17071 003070 +de 17072 050001 +de 17073 140040 +de 17074 050000 +de 17075 044111 +de 17076 140100 +de 17077 016114 +de 17100 072676 +de 17101 111427 +de 17102 024565 +de 17103 172700 +de 17104 044007 +de 17105 007430 +de 17106 066007 +de 17107 072676 +de 17110 111431 +de 17111 100400 +de 17112 003115 +de 17113 045056 +de 17114 100000 +de 17115 105432 +de 17116 111433 +de 17117 021127 +de 17120 105431 +de 17121 121434 +de 17122 105431 +de 17123 101400 +de 17124 103435 +de 17125 121436 +de 17126 103437 +de 17130 172700 +de 17131 004416 +de 17132 056003 +de 17133 072676 +de 17134 111440 +de 17135 100400 +de 17136 003143 +de 17137 004000 +de 17140 016130 +de 17141 100400 +de 17142 103441 +de 17143 121442 +de 17144 140040 +de 17145 111426 +de 17146 105440 +de 17147 101040 +de 17150 103441 +de 17151 172700 +de 17152 044002 +de 17153 001001 +de 17154 100040 +de 17155 121443 +de 17156 072676 +de 17157 000401 +de 17160 140040 +de 17161 067203 +de 17162 172700 +de 17163 100040 +de 17164 003214 +de 17165 072676 +de 17166 140040 +de 17167 126700 +de 17170 010000 +de 17171 001001 +de 17172 100400 +de 17173 003177 +de 17174 120671 +de 17175 072676 +de 17176 103127 +de 17177 140100 +de 17200 026342 +de 17201 050000 +de 17202 003175 +de 17214 044006 +de 17215 007444 +de 17216 100040 +de 17217 003165 +de 17220 044005 +de 17221 007445 +de 17222 100040 +de 17223 004121 +de 17224 011213 +de 17225 044005 +de 17226 007446 +de 17227 013447 +de 17230 052007 +de 17231 007450 +de 17232 052007 +de 17233 073213 +de 17234 121451 +de 17235 101000 +de 17236 003165 +de 17240 044005 +de 17241 007452 +de 17242 013445 +de 17243 050005 +de 17244 132352 +de 17245 032352 +de 17246 024526 +de 17247 103237 +de 17251 033337 +de 17252 044332 +de 17253 100040 +de 17254 003260 +de 17255 073337 +de 17256 005340 +de 17257 103250 +de 17260 011341 +de 17261 004000 +de 17262 022130 +de 17263 003255 +de 17264 101000 +de 17265 025250 +de 17266 073341 +de 17267 044001 +de 17270 011340 +de 17271 044002 +de 17272 010516 +de 17273 044003 +de 17274 011342 +de 17275 073337 +de 17276 144332 +de 17277 050332 +de 17300 100040 +de 17301 003305 +de 17302 005453 +de 17303 014000 +de 17304 050403 +de 17305 073342 +de 17306 044002 +de 17307 111341 +de 17310 005341 +de 17311 050002 +de 17312 044003 +de 17313 016114 +de 17314 050003 +de 17315 023454 +de 17316 003255 +de 17317 044001 +de 17320 054000 +de 17321 017455 +de 17322 101040 +de 17323 003255 +de 17324 044000 +de 17325 150001 +de 17326 044001 +de 17327 064000 +de 17330 150000 +de 17331 140040 +de 17332 050111 +de 17333 001001 +de 17334 120671 +de 17335 000401 +de 17336 003255 +de 17344 000011 +de 17345 000401 +de 17346 103343 +de 17350 045407 +de 17351 101040 +de 17352 003366 +de 17353 057413 +de 17354 022113 +de 17355 003374 +de 17356 003362 +de 17357 145407 +de 17360 065407 +de 17361 103347 +de 17362 105456 +de 17363 100400 +de 17364 025347 +de 17365 003357 +de 17366 005347 +de 17367 051420 +de 17370 120667 +de 17371 045420 +de 17372 011347 +de 17373 003350 +de 17374 033417 +de 17375 004000 +de 17376 014130 +de 17377 010000 +de 17400 001001 +de 17401 000013 +de 17402 121457 +de 17403 001001 +de 17404 120672 +de 17405 073417 +de 17406 003350 +de 17424 056155 +de 17425 000011 +de 17426 156135 +de 17427 156145 +de 17430 050377 +de 17431 056175 +de 17432 056124 +de 17433 016071 +de 17434 022462 +de 17435 016520 +de 17436 022451 +de 17437 016443 +de 17440 056306 +de 17441 016351 +de 17442 016060 +de 17443 011144 +de 17444 003400 +de 17445 000010 +de 17446 177600 +de 17447 000100 +de 17450 177700 +de 17451 015303 +de 17452 177767 +de 17453 000332 +de 17454 177756 +de 17455 000337 +de 17456 056201 +de 17457 016042 +de 20023 000011 +de 20024 003025 +de 20025 033145 +de 20026 025143 +de 20027 003034 +de 20030 073574 +de 20031 033143 +de 20032 072114 +de 20033 100000 +de 20034 072113 +de 20035 051146 +de 20036 045160 +de 20037 170120 +de 20040 026134 +de 20041 051156 +de 20042 000043 +de 20043 051150 +de 20044 005145 +de 20045 051152 +de 20046 005022 +de 20047 051154 +de 20050 024415 +de 20051 101000 +de 20052 024417 +de 20053 101000 +de 20054 030026 +de 20055 143162 +de 20056 001001 +de 20057 045154 +de 20060 011022 +de 20061 045152 +de 20062 011145 +de 20063 045156 +de 20064 170120 +de 20065 010134 +de 20066 000013 +de 20067 045150 +de 20070 171020 +de 20071 045146 +de 20072 073145 +de 20073 000401 +de 20074 103022 +de 20076 004127 +de 20077 010141 +de 20100 072113 +de 20101 140040 +de 20102 111575 +de 20103 004115 +de 20104 051300 +de 20105 005576 +de 20106 111577 +de 20107 005600 +de 20110 111601 +de 20111 004110 +de 20112 111602 +de 20113 004121 +de 20114 051452 +de 20115 021354 +de 20116 024000 +de 20117 024141 +de 20120 003101 +de 20121 004121 +de 20122 011143 +de 20123 010142 +de 20124 111603 +de 20125 111604 +de 20126 011210 +de 20127 111605 +de 20130 111606 +de 20131 111607 +de 20132 111610 +de 20133 011277 +de 20134 004122 +de 20135 073611 +de 20136 051277 +de 20137 024000 +de 20140 003136 +de 20141 030040 +de 20142 103075 +de 20160 177774 +de 20161 177774 +de 20162 020170 +de 20163 021075 +de 20164 005160 +de 20165 170120 +de 20166 010134 +de 20167 072114 +de 20170 033144 +de 20171 021211 +de 20172 021305 +de 20173 021327 +de 20174 121612 +de 20175 021200 +de 20176 073144 +de 20177 003056 +de 20201 005613 +de 20202 113614 +de 20203 101040 +de 20204 011210 +de 20205 025210 +de 20206 101000 +de 20207 103200 +de 20212 025274 +de 20213 100000 +de 20214 003255 +de 20215 025275 +de 20216 100000 +de 20217 003257 +de 20220 025276 +de 20221 100000 +de 20222 003261 +de 20223 072127 +de 20224 004121 +de 20225 123615 +de 20226 100000 +de 20227 003233 +de 20230 024000 +de 20231 003225 +de 20232 103211 +de 20233 045305 +de 20234 040677 +de 20235 100400 +de 20236 005616 +de 20237 051305 +de 20240 107617 +de 20241 101040 +de 20242 003253 +de 20243 100100 +de 20244 003264 +de 20245 001001 +de 20246 044272 +de 20247 101040 +de 20250 004115 +de 20251 050272 +de 20252 000401 +de 20253 004121 +de 20254 003230 +de 20255 005620 +de 20256 011274 +de 20257 005574 +de 20260 011275 +de 20261 004125 +de 20262 011276 +de 20263 003223 +de 20264 033273 +de 20265 004000 +de 20266 016127 +de 20267 010000 +de 20270 021354 +de 20271 073273 +de 20272 003245 +de 20306 072113 +de 20307 004127 +de 20310 011353 +de 20311 001001 +de 20312 044440 +de 20313 100040 +de 20314 003324 +de 20315 121621 +de 20316 001001 +de 20317 120672 +de 20320 024000 +de 20321 025353 +de 20322 003311 +de 20323 103305 +de 20324 064440 +de 20325 003320 +de 20326 003315 +de 20330 004131 +de 20331 011352 +de 20332 005352 +de 20333 012415 +de 20334 006120 +de 20335 010000 +de 20336 001001 +de 20337 105622 +de 20340 100040 +de 20341 125622 +de 20342 003346 +de 20343 000013 +de 20344 121623 +de 20345 001001 +de 20346 120672 +de 20347 025352 +de 20350 003332 +de 20351 103327 +de 20355 044265 +de 20356 100400 +de 20357 003445 +de 20360 140040 +de 20361 127575 +de 20362 101040 +de 20363 003367 +de 20364 064421 +de 20365 065457 +de 20366 101000 +de 20367 125624 +de 20370 101000 +de 20371 044426 +de 20372 101040 +de 20373 003416 +de 20374 016114 +de 20375 100040 +de 20376 004114 +de 20377 050426 +de 20400 044433 +de 20401 101040 +de 20402 003414 +de 20403 065452 +de 20404 103354 +de 20405 140040 +de 20406 050433 +de 20407 044160 +de 20410 016106 +de 20411 006112 +de 20412 040672 +de 20413 111625 +de 20414 004125 +de 20415 003431 +de 20416 044433 +de 20417 100040 +de 20420 003433 +de 20421 065452 +de 20422 003440 +de 20423 001001 +de 20424 121626 +de 20425 000401 +de 20426 105602 +de 20427 111625 +de 20430 050433 +de 20431 051452 +de 20432 103354 +de 20433 045452 +de 20434 123602 +de 20435 016114 +de 20436 003430 +de 20437 003426 +de 20440 045452 +de 20441 022123 +de 20442 100000 +de 20443 121627 +de 20444 103354 +de 20445 023630 +de 20446 100000 +de 20447 121627 +de 20450 021464 +de 20451 003426 +de 20465 004112 +de 20466 050440 +de 20467 004000 +de 20470 014127 +de 20471 023544 +de 20472 100000 +de 20473 103464 +de 20474 023545 +de 20475 103464 +de 20476 103464 +de 20477 115631 +de 20500 101040 +de 20501 103543 +de 20502 064265 +de 20503 103464 +de 20504 001001 +de 20505 033546 +de 20506 005632 +de 20507 021547 +de 20510 005633 +de 20511 021547 +de 20512 073546 +de 20513 005634 +de 20514 050646 +de 20515 050653 +de 20516 044622 +de 20517 111635 +de 20520 050627 +de 20521 005636 +de 20522 050634 +de 20523 140040 +de 20524 050641 +de 20525 050440 +de 20526 166627 +de 20527 010000 +de 20530 023637 +de 20531 021557 +de 20532 101000 +de 20533 073546 +de 20534 064627 +de 20535 064634 +de 20536 003523 +de 20537 005640 +de 20540 111641 +de 20541 000401 +de 20542 103464 +de 20550 015546 +de 20551 011573 +de 20552 073573 +de 20553 121642 +de 20554 103547 +de 20555 021557 +de 20556 003552 +de 20560 132402 +de 20561 032402 +de 20562 024564 +de 20563 044002 +de 20564 101040 +de 20565 103557 +de 20566 010000 +de 20567 005643 +de 20570 052012 +de 20571 050012 +de 20572 103557 +de 20574 177747 +de 20575 045565 +de 20576 101006 +de 20577 052620 +de 20600 020276 +de 20601 051353 +de 20602 051361 +de 20603 022273 +de 20604 022303 +de 20605 004601 +de 20606 027263 +de 20607 027264 +de 20610 021561 +de 20611 177775 +de 20612 022320 +de 20613 032261 +de 20614 015155 +de 20615 151360 +de 20616 000020 +de 20617 167274 +de 20620 177716 +de 20621 012604 +de 20622 053137 +de 20623 013106 +de 20624 062303 +de 20625 050254 +de 20626 011133 +de 20627 026120 +de 20630 177767 +de 20631 005153 +de 20632 000317 +de 20633 000312 +de 20634 000377 +de 20635 052660 +de 20636 177770 +de 20637 001777 +de 20640 003231 +de 20641 150247 +de 20642 015504 +de 20643 140000 +de 21075 021460 +de 21076 021362 +de 21077 021432 +de 21100 121672 +de 21101 121673 +de 21102 021564 +de 21103 021640 +de 21104 021134 +de 21105 021500 +de 21106 000401 +de 21107 021526 +de 21110 073674 +de 21111 005675 +de 21112 123676 +de 21113 100000 +de 21114 100000 +de 21115 120061 +de 21116 016114 +de 21117 024000 +de 21120 003112 +de 21121 005677 +de 21122 113676 +de 21123 100040 +de 21124 120061 +de 21125 010452 +de 21126 101000 +de 21127 001001 +de 21130 024416 +de 21131 024503 +de 21132 103700 +de 21133 120061 +de 21135 005701 +de 21136 011356 +de 21137 072113 +de 21140 033355 +de 21141 044165 +de 21142 101400 +de 21143 003274 +de 21144 073356 +de 21145 001001 +de 21146 044000 +de 21147 007702 +de 21150 013702 +de 21151 101040 +de 21152 003232 +de 21153 004124 +de 21154 011357 +de 21155 044000 +de 21156 017703 +de 21157 050000 +de 21160 100100 +de 21161 003226 +de 21162 141044 +de 21163 013355 +de 21164 121704 +de 21165 003203 +de 21166 010000 +de 21167 140040 +de 21170 066000 +de 21171 140100 +de 21172 010000 +de 21173 120671 +de 21174 044010 +de 21175 141044 +de 21176 010515 +de 21177 044007 +de 21200 121705 +de 21201 044006 +de 21202 003221 +de 21203 105356 +de 21204 141044 +de 21205 013355 +de 21206 121706 +de 21207 003226 +de 21210 010000 +de 21211 140040 +de 21212 066000 +de 21213 006120 +de 21214 011361 +de 21215 044030 +de 21216 141044 +de 21217 010515 +de 21220 044014 +de 21221 007707 +de 21222 013710 +de 21223 073361 +de 21224 120670 +de 21225 101000 +de 21226 073356 +de 21227 121711 +de 21230 025357 +de 21231 003160 +de 21232 005355 +de 21233 121712 +de 21234 100000 +de 21235 003232 +de 21236 073713 +de 21237 044000 +de 21240 101040 +de 21241 003244 +de 21242 021303 +de 21243 003237 +de 21244 073714 +de 21245 044000 +de 21246 101040 +de 21247 003271 +de 21250 100400 +de 21251 003267 +de 21252 033360 +de 21253 010000 +de 21254 044007 +de 21255 013355 +de 21256 007715 +de 21257 100040 +de 21260 003245 +de 21261 044000 +de 21262 111360 +de 21263 120671 +de 21264 024565 +de 21265 073360 +de 21266 003245 +de 21267 021303 +de 21270 003245 +de 21271 073355 +de 21272 121716 +de 21273 000401 +de 21274 024000 +de 21275 025356 +de 21276 004000 +de 21277 014132 +de 21300 100400 +de 21301 003140 +de 21302 103134 +de 21304 140100 +de 21305 033360 +de 21306 010000 +de 21307 044001 +de 21310 013355 +de 21311 007715 +de 21312 100040 +de 21313 103303 +de 21314 044000 +de 21315 111360 +de 21316 021321 +de 21317 073360 +de 21320 103303 +de 21322 004000 +de 21323 026326 +de 21324 110326 +de 21325 005717 +de 21326 011353 +de 21327 140040 +de 21330 050013 +de 21331 044002 +de 21332 100400 +de 21333 004120 +de 21334 141206 +de 21335 014565 +de 21336 010565 +de 21337 140040 +de 21340 066003 +de 21341 101040 +de 21342 003347 +de 21343 033354 +de 21344 010000 +de 21345 120671 +de 21346 073354 +de 21347 024000 +de 21350 025353 +de 21351 003337 +de 21352 103321 +de 21363 004131 +de 21364 011430 +de 21365 072113 +de 21366 045662 +de 21367 011372 +de 21370 001001 +de 21371 044504 +de 21373 015720 +de 21374 015721 +de 21375 011376 +de 21377 021423 +de 21400 021423 +de 21401 021423 +de 21402 021411 +de 21403 021423 +de 21404 021421 +de 21405 021423 +de 21406 021421 +de 21407 021423 +de 21410 021423 +de 21411 140040 +de 21412 050504 +de 21413 104700 +de 21414 101040 +de 21415 003423 +de 21416 004107 +de 21417 111722 +de 21420 003423 +de 21421 005723 +de 21422 121724 +de 21423 000401 +de 21424 024000 +de 21425 025430 +de 21426 003366 +de 21427 103362 +de 21433 072127 +de 21434 001001 +de 21435 004116 +de 21436 111455 +de 21437 005717 +de 21440 011457 +de 21441 044627 +de 21442 011456 +de 21443 105456 +de 21444 100040 +de 21445 125455 +de 21446 025456 +de 21447 025457 +de 21450 003443 +de 21451 000401 +de 21452 024000 +de 21453 003434 +de 21454 103432 +de 21455 066505 +de 21461 004131 +de 21462 011477 +de 21463 072113 +de 21464 125722 +de 21465 003473 +de 21466 001001 +de 21467 000013 +de 21470 121725 +de 21471 001001 +de 21472 120672 +de 21473 024000 +de 21474 025477 +de 21475 003464 +de 21476 103460 +de 21501 073726 +de 21502 001001 +de 21503 044543 +de 21504 056567 +de 21505 101400 +de 21506 003513 +de 21507 021510 +de 21511 120745 +de 21512 140040 +de 21513 050543 +de 21514 140040 +de 21515 050567 +de 21516 000401 +de 21517 024000 +de 21520 003502 +de 21521 001001 +de 21522 125727 +de 21523 103500 +de 21524 010542 +de 21525 103500 +de 21527 025561 +de 21530 103526 +de 21531 072132 +de 21532 001001 +de 21533 105730 +de 21534 007702 +de 21535 013702 +de 21536 101040 +de 21537 003550 +de 21540 105730 +de 21541 007731 +de 21542 013731 +de 21543 101040 +de 21544 003550 +de 21545 005732 +de 21546 115730 +de 21547 111730 +de 21550 000401 +de 21551 024000 +de 21552 003532 +de 21553 004107 +de 21554 040575 +de 21555 014107 +de 21556 040577 +de 21557 011561 +de 21560 103526 +de 21565 101000 +de 21566 005733 +de 21567 011565 +de 21570 004141 +de 21571 013562 +de 21572 101040 +de 21573 103564 +de 21574 004141 +de 21575 006120 +de 21576 101040 +de 21577 003626 +de 21600 010000 +de 21601 004141 +de 21602 040575 +de 21603 006752 +de 21604 011563 +de 21605 055630 +de 21606 011624 +de 21607 004000 +de 21610 022116 +de 21611 003624 +de 21612 100000 +de 21613 003621 +de 21614 073563 +de 21615 001001 +de 21616 044437 +de 21617 100040 +de 21620 103564 +de 21621 005563 +de 21622 015734 +de 21623 011565 +de 21625 000401 +de 21626 004141 +de 21627 011562 +de 21630 103564 +de 21631 030270 +de 21632 030370 +de 21633 030170 +de 21634 030300 +de 21635 030500 +de 21636 030400 +de 21637 101000 +de 21641 001001 +de 21642 004142 +de 21643 100400 +de 21644 003656 +de 21645 010000 +de 21646 044332 +de 21647 100040 +de 21650 003656 +de 21651 004143 +de 21652 010515 +de 21653 005735 +de 21654 120670 +de 21655 025660 +de 21656 000401 +de 21657 103640 +de 21661 037454 +de 21662 070170 +de 21663 070160 +de 21665 070151 +de 21666 100000 +de 21667 100000 +de 21670 100000 +de 21671 100000 +de 21672 027112 +de 21673 026512 +de 21674 177666 +de 21675 054115 +de 21676 041557 +de 21677 102111 +de 21700 020164 +de 21701 032271 +de 21702 000017 +de 21703 001400 +de 21704 015033 +de 21705 007244 +de 21706 015205 +de 21707 070377 +de 21710 003400 +de 21711 015347 +de 21712 015114 +de 21713 000340 +de 21714 000327 +de 21715 000077 +de 21716 002374 +de 21717 177770 +de 21720 000005 +de 21721 103377 +de 21722 056306 +de 21723 016341 +de 21724 016273 +de 21725 016042 +de 21726 177754 +de 21727 004161 +de 21730 072371 +de 21731 000300 +de 21732 000100 +de 21733 101000 +de 21734 030470 +de 21735 002000 +de 22057 005524 +de 22060 011301 +de 22061 121525 +de 22062 073526 +de 22063 001001 +de 22064 044510 +de 22065 100040 +de 22066 004112 +de 22067 140024 +de 22070 041277 +de 22071 024000 +de 22072 003064 +de 22073 040274 +de 22074 013272 +de 22075 021310 +de 22076 127527 +de 22077 021310 +de 22100 026746 +de 22101 021310 +de 22102 004747 +de 22103 021310 +de 22104 004750 +de 22105 021310 +de 22106 072124 +de 22107 001001 +de 22110 044543 +de 22111 056567 +de 22112 021310 +de 22113 024000 +de 22114 003107 +de 22115 004105 +de 22116 021310 +de 22117 105530 +de 22120 021310 +de 22121 000013 +de 22122 105531 +de 22123 001001 +de 22124 120672 +de 22125 021310 +de 22126 004142 +de 22127 021310 +de 22130 127532 +de 22131 021310 +de 22132 127533 +de 22133 021310 +de 22134 011277 +de 22135 072127 +de 22136 001001 +de 22137 140040 +de 22140 127534 +de 22141 057310 +de 22142 140407 +de 22143 100400 +de 22144 140040 +de 22145 023535 +de 22146 005535 +de 22147 101000 +de 22150 011302 +de 22151 004121 +de 22152 067310 +de 22153 023535 +de 22154 005535 +de 22155 101000 +de 22156 021310 +de 22157 044440 +de 22160 100040 +de 22161 005536 +de 22162 052165 +de 22163 022106 +de 22164 100000 +de 22165 012753 +de 22166 141340 +de 22167 013302 +de 22170 021310 +de 22171 105537 +de 22172 141340 +de 22173 006116 +de 22174 013277 +de 22175 041676 +de 22176 011277 +de 22177 024000 +de 22200 003136 +de 22201 041674 +de 22202 021310 +de 22203 072123 +de 22204 105540 +de 22205 021310 +de 22206 024000 +de 22207 003204 +de 22210 027301 +de 22211 140407 +de 22212 121525 +de 22213 140040 +de 22214 027276 +de 22215 100040 +de 22216 103541 +de 22217 073542 +de 22220 004112 +de 22221 120664 +de 22222 105543 +de 22223 121525 +de 22224 105544 +de 22225 121525 +de 22226 005545 +de 22227 021310 +de 22230 072127 +de 22231 127546 +de 22232 021310 +de 22233 127547 +de 22234 021310 +de 22235 024000 +de 22236 003231 +de 22237 073526 +de 22240 005550 +de 22241 011277 +de 22242 005551 +de 22243 011300 +de 22244 140040 +de 22245 127300 +de 22246 021310 +de 22247 025300 +de 22250 025277 +de 22251 003244 +de 22252 024000 +de 22253 003240 +de 22254 027301 +de 22255 140407 +de 22256 121525 +de 22257 103541 +de 22260 073563 +de 22261 073567 +de 22262 073573 +de 22263 073577 +de 22264 073603 +de 22265 073607 +de 22266 073613 +de 22267 073617 +de 22270 073623 +de 22271 073627 +de 22275 003014 +de 22311 000401 +de 22312 027301 +de 22313 015301 +de 22314 027301 +de 22315 121525 +de 22316 140040 +de 22317 103310 +de 22321 005552 +de 22322 111553 +de 22323 072121 +de 22324 105527 +de 22325 101040 +de 22326 105554 +de 22327 100040 +de 22330 033272 +de 22331 004142 +de 22332 027273 +de 22333 023273 +de 22334 100000 +de 22335 003345 +de 22336 033272 +de 22337 010000 +de 22340 005275 +de 22341 127555 +de 22342 072142 +de 22343 127555 +de 22344 011275 +de 22345 004753 +de 22346 111556 +de 22347 140040 +de 22350 127556 +de 22351 012473 +de 22352 100020 +de 22353 012751 +de 22354 100010 +de 22355 012117 +de 22356 100004 +de 22357 012115 +de 22360 100002 +de 22361 012114 +de 22362 072124 +de 22363 011274 +de 22364 105557 +de 22365 100040 +de 22366 105560 +de 22367 013274 +de 22370 024000 +de 22371 003363 +de 22372 012567 +de 22373 027272 +de 22374 013272 +de 22375 101040 +de 22376 103320 +de 22377 011276 +de 22400 004417 +de 22401 117553 +de 22402 111561 +de 22403 103320 +de 22405 010747 +de 22406 032750 +de 22407 004122 +de 22410 015404 +de 22411 010746 +de 22412 104746 +de 22413 010746 +de 22414 103404 +de 22416 012106 +de 22417 100040 +de 22420 005562 +de 22421 015264 +de 22422 001001 +de 22423 021505 +de 22424 101000 +de 22425 103415 +de 22427 012106 +de 22430 100040 +de 22431 005562 +de 22432 015266 +de 22433 001001 +de 22434 021505 +de 22435 103426 +de 22436 172677 +de 22437 044111 +de 22440 016000 +de 22441 140100 +de 22442 017563 +de 22443 072675 +de 22444 115564 +de 22445 100400 +de 22446 004112 +de 22447 111564 +de 22450 103426 +de 22452 012106 +de 22453 007565 +de 22454 100040 +de 22455 005562 +de 22456 015265 +de 22457 021505 +de 22460 101000 +de 22461 103451 +de 22463 012106 +de 22464 007565 +de 22465 100040 +de 22466 005562 +de 22467 015267 +de 22470 021505 +de 22471 103462 +de 22472 172700 +de 22473 044111 +de 22474 016000 +de 22475 140100 +de 22476 017563 +de 22477 072676 +de 22500 115566 +de 22501 100400 +de 22502 004112 +de 22503 111566 +de 22504 103462 +de 22506 016130 +de 22507 011523 +de 22510 004000 +de 22511 016130 +de 22512 101400 +de 22513 003521 +de 22514 105523 +de 22515 101400 +de 22516 141206 +de 22517 111523 +de 22520 025505 +de 22521 000401 +de 22522 103505 +de 22524 000301 +de 22525 030403 +de 22526 177774 +de 22527 003560 +de 22530 001005 +de 22531 040000 +de 22532 021660 +de 22533 021431 +de 22534 060464 +de 22535 000377 +de 22536 000200 +de 22537 052625 +de 22540 077777 +de 22541 030165 +de 22542 100003 +de 22543 030456 +de 22544 030450 +de 22545 000302 +de 22546 050625 +de 22547 050620 +de 22550 177766 +de 22551 122260 +de 22552 004000 +de 22553 030464 +de 22554 000746 +de 22555 053170 +de 22556 001777 +de 22557 070440 +de 22560 041246 +de 22561 030210 +de 22562 177760 +de 22563 000011 +de 22564 073617 +de 22565 000077 +de 22566 073623 +de 23033 005633 +de 23034 011163 +de 23035 005634 +de 23036 011164 +de 23037 005635 +de 23040 011632 +de 23041 011162 +de 23042 140040 +de 23043 010473 +de 23044 000013 +de 23045 003076 +de 23047 131004 +de 23050 003047 +de 23051 007636 +de 23052 013637 +de 23053 103046 +de 23055 070104 +de 23056 003075 +de 23057 030104 +de 23060 170004 +de 23061 003060 +de 23062 070004 +de 23063 003062 +de 23064 030004 +de 23065 103054 +de 23066 005640 +de 23067 011164 +de 23070 005641 +de 23071 011163 +de 23072 005635 +de 23073 011632 +de 23074 103642 +de 23075 021046 +de 23076 021165 +de 23077 140040 +de 23100 011145 +de 23101 021261 +de 23102 005643 +de 23103 121164 +de 23104 021215 +de 23105 140040 +de 23106 011145 +de 23107 011144 +de 23110 121163 +de 23111 006752 +de 23112 011161 +de 23113 015644 +de 23114 010000 +de 23115 044000 +de 23116 100400 +de 23117 003122 +de 23120 005162 +de 23121 021126 +de 23122 044000 +de 23123 010000 +de 23124 005161 +de 23125 042000 +de 23127 101040 +de 23130 103126 +de 23131 004473 +de 23132 101040 +de 23133 100002 +de 23134 103126 +de 23135 005645 +de 23136 121164 +de 23137 021173 +de 23140 003104 +de 23156 177777 +de 23163 024052 +de 23164 024163 +de 23166 005643 +de 23167 121164 +de 23170 005646 +de 23171 121164 +de 23172 103165 +de 23174 005647 +de 23175 121164 +de 23176 121164 +de 23177 121164 +de 23200 103173 +de 23202 007145 +de 23203 101040 +de 23204 025201 +de 23205 045144 +de 23206 103201 +de 23210 072113 +de 23211 004114 +de 23212 021201 +de 23213 025207 +de 23214 103207 +de 23216 140040 +de 23217 027146 +de 23220 100000 +de 23221 140407 +de 23222 015144 +de 23223 011144 +de 23224 004112 +de 23225 011220 +de 23226 103215 +de 23230 140100 +de 23231 011244 +de 23232 021165 +de 23233 005244 +de 23234 021302 +de 23235 005650 +de 23236 121164 +de 23237 021207 +de 23240 025145 +de 23241 005244 +de 23242 021244 +de 23243 103227 +de 23245 140100 +de 23246 011151 +de 23247 021207 +de 23250 003253 +de 23251 005151 +de 23252 011150 +de 23253 021173 +de 23254 073151 +de 23255 044000 +de 23256 021302 +de 23257 021173 +de 23260 103244 +de 23262 005651 +de 23263 011355 +de 23264 021215 +de 23265 005151 +de 23266 101400 +de 23267 021207 +de 23270 003277 +de 23271 011147 +de 23272 004114 +de 23273 021126 +de 23274 005147 +de 23275 073151 +de 23276 050000 +de 23277 140500 +de 23300 011151 +de 23301 103261 +de 23303 011147 +de 23304 000201 +de 23305 072125 +de 23306 004121 +de 23307 011333 +de 23310 005652 +de 23311 041077 +de 23312 023653 +de 23313 100000 +de 23314 003326 +de 23315 025333 +de 23316 101000 +de 23317 121164 +de 23320 005654 +de 23321 041075 +de 23322 024000 +de 23323 003312 +de 23324 121164 +de 23325 103302 +de 23326 025333 +de 23327 003317 +de 23330 004121 +de 23331 011333 +de 23332 003320 +de 23334 021173 +de 23335 005147 +de 23336 141140 +de 23337 121164 +de 23340 005147 +de 23341 141050 +de 23342 003136 +de 23343 021215 +de 23344 140040 +de 23345 027144 +de 23346 027143 +de 23347 027142 +de 23350 027141 +de 23351 005145 +de 23352 041477 +de 23353 011145 +de 23354 003110 +de 23356 015146 +de 23357 015146 +de 23360 040175 +de 23361 015146 +de 23362 041175 +de 23363 017655 +de 23364 011146 +de 23365 021207 +de 23366 025145 +de 23367 003110 +de 23370 005316 +de 23371 011355 +de 23372 003110 +de 23373 021215 +de 23374 005144 +de 23375 021302 +de 23376 003137 +de 23377 021215 +de 23400 003110 +de 23401 021215 +de 23402 005316 +de 23403 011220 +de 23404 003110 +de 23405 005150 +de 23406 003364 +de 23407 073146 +de 23410 044000 +de 23411 003364 +de 23412 005147 +de 23413 003364 +de 23414 005656 +de 23415 003364 +de 23416 105657 +de 23417 003364 +de 23420 021215 +de 23421 021207 +de 23422 005147 +de 23423 021244 +de 23424 003104 +de 23425 021215 +de 23426 021207 +de 23427 005147 +de 23430 011147 +de 23431 007660 +de 23432 100040 +de 23433 005150 +de 23434 013147 +de 23435 007661 +de 23436 013147 +de 23437 003423 +de 23440 021261 +de 23441 004121 +de 23442 003445 +de 23443 021261 +de 23444 004114 +de 23445 015150 +de 23446 011150 +de 23447 021227 +de 23450 003104 +de 23451 121163 +de 23452 141240 +de 23453 011147 +de 23454 121163 +de 23455 013147 +de 23456 011147 +de 23457 003364 +de 23460 021215 +de 23461 021207 +de 23462 100000 +de 23463 011157 +de 23464 004114 +de 23465 021126 +de 23466 072122 +de 23467 004117 +de 23470 021201 +de 23471 011160 +de 23472 072121 +de 23473 004115 +de 23474 021201 +de 23475 101000 +de 23476 073160 +de 23477 103157 +de 23500 021126 +de 23501 005662 +de 23502 003513 +de 23503 005154 +de 23504 050000 +de 23505 003553 +de 23506 005526 +de 23507 003513 +de 23510 005570 +de 23511 003513 +de 23512 005203 +de 23513 011546 +de 23514 072123 +de 23515 004751 +de 23516 021201 +de 23517 011156 +de 23520 072122 +de 23521 004117 +de 23522 021201 +de 23523 011154 +de 23524 021215 +de 23525 021207 +de 23526 100000 +de 23527 011153 +de 23530 072121 +de 23531 004115 +de 23532 021201 +de 23533 011152 +de 23534 005152 +de 23535 017153 +de 23536 016114 +de 23537 011155 +de 23540 101400 +de 23541 003135 +de 23542 073152 +de 23543 044000 +de 23544 013154 +de 23545 007156 +de 23547 003553 +de 23550 004000 +de 23551 021227 +de 23552 073151 +de 23553 024000 +de 23554 025155 +de 23555 003543 +de 23556 003076 +de 23557 021126 +de 23560 021215 +de 23561 021207 +de 23562 003135 +de 23563 120672 +de 23564 121663 +de 23565 000013 +de 23566 003076 +de 23567 004473 +de 23570 100040 +de 23571 003575 +de 23572 005162 +de 23573 021126 +de 23574 140040 +de 23575 013664 +de 23576 010473 +de 23577 040677 +de 23600 013665 +de 23601 121164 +de 23602 003076 +de 23603 021215 +de 23604 021207 +de 23605 003135 +de 23606 007666 +de 23607 013667 +de 23610 111670 +de 23611 003076 +de 23612 021215 +de 23613 072121 +de 23614 004115 +de 23615 021201 +de 23616 111671 +de 23617 021207 +de 23620 100000 +de 23621 111672 +de 23622 003076 +de 23623 021126 +de 23624 005632 +de 23625 027164 +de 23626 011632 +de 23627 003076 +de 23631 103630 +de 23633 023046 +de 23634 023054 +de 23635 023630 +de 23636 000177 +de 23637 000200 +de 23640 024163 +de 23641 024052 +de 23642 024157 +de 23643 000215 +de 23644 024400 +de 23645 000243 +de 23646 000212 +de 23647 000240 +de 23650 000257 +de 23651 003360 +de 23652 000130 +de 23653 000260 +de 23654 000026 +de 23655 000060 +de 23656 016306 +de 23657 025506 +de 23660 001000 +de 23661 077000 +de 23662 003503 +de 23663 003525 +de 23664 000020 +de 23665 000306 +de 23666 170377 +de 23667 140000 +de 23670 025165 +de 23671 025166 +de 23672 025167 +de 24012 120666 +de 24013 140500 +de 24014 011050 +de 24015 007500 +de 24016 013501 +de 24017 100040 +de 24020 013502 +de 24021 100040 +de 24022 013503 +de 24023 111504 +de 24024 120666 +de 24025 011051 +de 24026 120666 +de 24027 003040 +de 24030 011047 +de 24031 141050 +de 24032 101040 +de 24033 003036 +de 24034 005047 +de 24035 021076 +de 24036 025067 +de 24037 003012 +de 24040 011047 +de 24041 021076 +de 24042 005047 +de 24043 141340 +de 24044 021076 +de 24045 003026 +de 24053 072114 +de 24054 001001 +de 24055 120672 +de 24056 100000 +de 24057 120665 +de 24060 140040 +de 24061 027067 +de 24062 101040 +de 24063 003070 +de 24064 005505 +de 24065 011163 +de 24066 003116 +de 24070 027046 +de 24071 101040 +de 24072 003057 +de 24073 001001 +de 24074 000013 +de 24075 103052 +de 24077 101400 +de 24100 103076 +de 24101 140100 +de 24102 141140 +de 24103 100040 +de 24104 003110 +de 24105 010472 +de 24106 005335 +de 24107 011052 +de 24110 011046 +de 24111 120667 +de 24112 005046 +de 24113 100040 +de 24114 003111 +de 24115 103076 +de 24116 005207 +de 24117 073506 +de 24120 120664 +de 24121 004112 +de 24122 021176 +de 24123 072114 +de 24124 005050 +de 24125 120664 +de 24126 005051 +de 24127 120664 +de 24130 005507 +de 24131 011213 +de 24132 005210 +de 24133 007510 +de 24134 000201 +de 24135 041050 +de 24136 013511 +de 24137 021176 +de 24140 004472 +de 24141 100040 +de 24142 003152 +de 24143 000201 +de 24144 072114 +de 24145 120664 +de 24146 025213 +de 24147 003154 +de 24150 004112 +de 24151 003117 +de 24152 005512 +de 24153 011163 +de 24154 004112 +de 24155 021176 +de 24156 003135 +de 24157 005335 +de 24160 011163 +de 24161 011067 +de 24162 003121 +de 24164 011210 +de 24165 007510 +de 24166 013207 +de 24167 000201 +de 24170 011211 +de 24171 033212 +de 24172 001001 +de 24173 120672 +de 24174 072114 +de 24175 103176 +de 24177 011207 +de 24200 005211 +de 24201 000201 +de 24202 005210 +de 24203 073212 +de 24204 001001 +de 24205 000013 +de 24206 103163 +de 24214 005337 +de 24215 011360 +de 24216 005340 +de 24217 015360 +de 24220 011361 +de 24221 010000 +de 24222 044000 +de 24223 101040 +de 24224 003244 +de 24225 121332 +de 24226 004000 +de 24227 121333 +de 24230 121334 +de 24231 005513 +de 24232 011362 +de 24233 073361 +de 24234 044000 +de 24235 101040 +de 24236 003244 +de 24237 011361 +de 24240 121333 +de 24241 121334 +de 24242 025362 +de 24243 003233 +de 24244 025360 +de 24245 003216 +de 24246 005357 +de 24247 011360 +de 24250 073360 +de 24251 045350 +de 24252 011361 +de 24253 045357 +de 24254 011362 +de 24255 073362 +de 24256 044000 +de 24257 101040 +de 24260 003305 +de 24261 011363 +de 24262 005362 +de 24263 010000 +de 24264 101400 +de 24265 003275 +de 24266 025362 +de 24267 044001 +de 24270 023506 +de 24271 100000 +de 24272 003305 +de 24273 017514 +de 24274 011363 +de 24275 121332 +de 24276 005362 +de 24277 140100 +de 24300 121333 +de 24301 121334 +de 24302 005363 +de 24303 121333 +de 24304 121334 +de 24305 025362 +de 24306 025361 +de 24307 003255 +de 24310 025360 +de 24311 003250 +de 24312 103335 +de 24313 073515 +de 24314 045400 +de 24315 033360 +de 24316 121336 +de 24317 073360 +de 24320 024000 +de 24321 003314 +de 24322 073516 +de 24323 044104 +de 24324 033360 +de 24325 121336 +de 24326 073360 +de 24327 024000 +de 24330 003323 +de 24331 103335 +de 24332 023165 +de 24333 023302 +de 24334 023173 +de 24335 023076 +de 24336 023227 +de 24337 177727 +de 24340 000343 +de 24341 177770 +de 24342 177770 +de 24343 177770 +de 24344 177730 +de 24345 177774 +de 24346 177730 +de 24347 177720 +de 24350 033457 +de 24351 013333 +de 24352 016155 +de 24353 032030 +de 24354 100020 +de 24355 000517 +de 24356 033477 +de 24357 177771 +de 24364 000134 +de 24365 000674 +de 24366 012654 +de 24367 012604 +de 24370 000675 +de 24371 013106 +de 24372 000676 +de 24373 016042 +de 24374 020144 +de 24375 003412 +de 24376 004420 +de 24377 000111 +de 24400 123076 +de 24401 123110 +de 24402 023414 +de 24403 123603 +de 24404 023370 +de 24405 023510 +de 24406 123110 +de 24407 123110 +de 24410 123612 +de 24411 024313 +de 24412 023101 +de 24413 123110 +de 24414 123612 +de 24415 023443 +de 24416 023512 +de 24417 123567 +de 24420 123110 +de 24421 023623 +de 24422 123110 +de 24423 023460 +de 24424 123416 +de 24425 123110 +de 24426 123110 +de 24427 023506 +de 24430 123110 +de 24431 123110 +de 24432 023500 +de 24433 123110 +de 24434 023425 +de 24435 123110 +de 24436 023440 +de 24437 023412 +de 24440 123377 +de 24441 024214 +de 24442 023451 +de 24443 123110 +de 24444 023557 +de 24445 123110 +de 24446 123110 +de 24447 123110 +de 24450 123110 +de 24451 123110 +de 24452 023407 +de 24453 123377 +de 24454 123343 +de 24455 123401 +de 24456 023405 +de 24457 023420 +de 24460 123355 +de 24461 123355 +de 24462 123355 +de 24463 123355 +de 24464 123355 +de 24465 123355 +de 24466 123355 +de 24467 123355 +de 24470 123355 +de 24471 123355 +de 24472 123110 +de 24473 123110 +de 24474 123110 +de 24475 123373 +de 24476 023334 +de 24477 023135 +de 24500 040377 +de 24501 040005 +de 24502 000033 +de 24503 040333 +de 24504 023162 +de 24505 024053 +de 24506 100001 +de 24507 177014 +de 24510 000177 +de 24511 100200 +de 24512 023110 +de 24513 177770 +de 24514 100111 +de 24515 177764 +de 24516 177760 +de 25062 011115 +de 25063 070004 +de 25064 003077 +de 25065 140040 +de 25066 022474 +de 25067 003112 +de 25070 003104 +de 25071 030104 +de 25072 005511 +de 25073 170004 +de 25074 003112 +de 25075 004121 +de 25076 010474 +de 25077 000043 +de 25100 171020 +de 25101 005115 +de 25102 000401 +de 25103 103061 +de 25104 005503 +de 25105 100040 +de 25106 003112 +de 25107 131004 +de 25110 003107 +de 25111 011116 +de 25112 030004 +de 25113 004114 +de 25114 003076 +de 25117 140040 +de 25120 011503 +de 25121 010673 +de 25122 011504 +de 25123 011163 +de 25124 111512 +de 25125 004106 +de 25126 013513 +de 25127 111514 +de 25130 012753 +de 25131 011165 +de 25132 005515 +de 25133 170020 +de 25134 003174 +de 25135 005170 +de 25136 011160 +de 25137 000401 +de 25140 072113 +de 25141 120665 +de 25142 005503 +de 25143 100040 +de 25144 003137 +de 25145 001001 +de 25146 026474 +de 25147 101400 +de 25150 101040 +de 25151 003137 +de 25152 005116 +de 25153 007516 +de 25154 013517 +de 25155 011163 +de 25156 000401 +de 25157 103160 +de 25161 011164 +de 25162 003137 +de 25170 025171 +de 25171 023520 +de 25172 100000 +de 25173 003221 +de 25174 005165 +de 25175 120664 +de 25176 140040 +de 25177 120664 +de 25200 005163 +de 25201 013517 +de 25202 100040 +de 25203 003207 +de 25204 004106 +de 25205 013521 +de 25206 011165 +de 25207 005163 +de 25210 140500 +de 25211 141340 +de 25212 011164 +de 25213 140040 +de 25214 011504 +de 25215 005164 +de 25216 072112 +de 25217 120664 +de 25220 003135 +de 25221 004673 +de 25222 011504 +de 25223 005166 +de 25224 120664 +de 25225 005167 +de 25226 120664 +de 25227 004112 +de 25230 021277 +de 25231 140500 +de 25232 141340 +de 25233 021277 +de 25234 013517 +de 25235 013164 +de 25236 120664 +de 25237 003227 +de 25240 140040 +de 25241 021277 +de 25242 023522 +de 25243 100000 +de 25244 003253 +de 25245 001001 +de 25246 040075 +de 25247 005164 +de 25250 041075 +de 25251 000401 +de 25252 003241 +de 25253 070104 +de 25254 003274 +de 25255 030104 +de 25256 005523 +de 25257 170004 +de 25260 003257 +de 25261 025503 +de 25262 120665 +de 25263 140040 +de 25264 026474 +de 25265 101040 +de 25266 003262 +de 25267 005503 +de 25270 016114 +de 25271 100400 +de 25272 140040 +de 25273 011503 +de 25274 005164 +de 25275 120664 +de 25276 003227 +de 25300 021160 +de 25301 023520 +de 25302 100000 +de 25303 003215 +de 25304 023524 +de 25305 103277 +de 25306 003240 +de 25307 103277 +de 25310 072113 +de 25311 033505 +de 25312 120666 +de 25313 025503 +de 25314 011501 +de 25315 007525 +de 25316 022106 +de 25317 022752 +de 25320 003323 +de 25321 101000 +de 25322 011506 +de 25323 120667 +de 25324 005501 +de 25325 041475 +de 25326 011502 +de 25327 101400 +de 25330 005504 +de 25331 101040 +de 25332 003353 +de 25333 005522 +de 25334 021450 +de 25335 005523 +de 25336 021450 +de 25337 005523 +de 25340 021450 +de 25341 005501 +de 25342 021412 +de 25343 120666 +de 25344 100000 +de 25345 003350 +de 25346 021412 +de 25347 003356 +de 25350 025505 +de 25351 021412 +de 25352 003370 +de 25353 120666 +de 25354 100000 +de 25355 003437 +de 25356 120666 +de 25357 003374 +de 25360 025505 +de 25361 011501 +de 25362 141050 +de 25363 101040 +de 25364 003370 +de 25365 005501 +de 25366 141140 +de 25367 021450 +de 25370 140040 +de 25371 011503 +de 25372 011502 +de 25373 003310 +de 25374 011501 +de 25375 005502 +de 25376 100400 +de 25377 003407 +de 25400 005501 +de 25401 141140 +de 25402 021450 +de 25403 005501 +de 25404 141050 +de 25405 021450 +de 25406 003356 +de 25407 005501 +de 25410 021412 +de 25411 003356 +de 25413 000201 +de 25414 004126 +de 25415 011507 +de 25416 005526 +de 25417 041077 +de 25420 000201 +de 25421 011510 +de 25422 000201 +de 25423 021450 +de 25424 005510 +de 25425 000201 +de 25426 005527 +de 25427 041075 +de 25430 025507 +de 25431 003420 +de 25432 005522 +de 25433 021450 +de 25434 005523 +de 25435 021450 +de 25436 103412 +de 25437 025505 +de 25440 005501 +de 25441 007530 +de 25442 013531 +de 25443 100040 +de 25444 003370 +de 25445 005511 +de 25446 021450 +de 25447 003370 +de 25451 023517 +de 25452 101000 +de 25453 100000 +de 25454 103450 +de 25455 072113 +de 25456 070104 +de 25457 003472 +de 25460 030104 +de 25461 170004 +de 25462 003472 +de 25463 120667 +de 25464 140040 +de 25465 026474 +de 25466 101400 +de 25467 101040 +de 25470 003463 +de 25471 103450 +de 25472 005505 +de 25473 100040 +de 25474 003370 +de 25475 120666 +de 25476 003472 +de 25477 010472 +de 25500 003370 +de 25511 000334 +de 25512 024046 +de 25513 140000 +de 25514 024050 +de 25515 000040 +de 25516 000177 +de 25517 000200 +de 25520 000273 +de 25521 140100 +de 25522 000215 +de 25523 000212 +de 25524 000272 +de 25525 000377 +de 25526 000130 +de 25527 000026 +de 25530 007400 +de 25531 004400 +de 26071 005645 +de 26072 010660 +de 26073 005646 +de 26074 010661 +de 26075 005647 +de 26076 010662 +de 26077 073346 +de 26100 005637 +de 26101 050265 +de 26102 140040 +de 26103 051500 +de 26104 005640 +de 26105 110660 +de 26106 110661 +de 26107 110662 +de 26110 024000 +de 26111 003100 +de 26112 072106 +de 26113 140040 +de 26114 011644 +de 26115 050165 +de 26116 111650 +de 26117 103070 +de 26121 033365 +de 26122 011372 +de 26123 073342 +de 26124 140040 +de 26125 055365 +de 26126 024000 +de 26127 003125 +de 26130 100040 +de 26131 120061 +de 26132 073365 +de 26133 045500 +de 26134 141206 +de 26135 011366 +de 26136 004000 +de 26137 141206 +de 26140 011367 +de 26141 141340 +de 26142 011370 +de 26143 013367 +de 26144 011371 +de 26145 005372 +de 26146 101040 +de 26147 003152 +de 26150 005344 +de 26151 003167 +de 26152 044433 +de 26153 100040 +de 26154 103120 +de 26155 072514 +de 26156 044006 +de 26157 141044 +de 26160 073365 +de 26161 067505 +de 26162 053505 +de 26163 101040 +de 26164 103120 +de 26165 004514 +de 26166 015343 +de 26167 011372 +de 26170 073346 +de 26171 105372 +de 26172 007347 +de 26173 015353 +de 26174 101040 +de 26175 005347 +de 26176 011373 +de 26177 141340 +de 26200 011374 +de 26201 105372 +de 26202 007350 +de 26203 015366 +de 26204 023350 +de 26205 005350 +de 26206 101000 +de 26207 011375 +de 26210 005371 +de 26211 052265 +de 26212 007363 +de 26213 023352 +de 26214 003262 +de 26215 101000 +de 26216 011376 +de 26217 104662 +de 26220 007350 +de 26221 013373 +de 26222 126662 +de 26223 007347 +de 26224 141340 +de 26225 017374 +de 26226 100400 +de 26227 003252 +de 26230 005376 +de 26231 100040 +de 26232 003320 +de 26233 104662 +de 26234 007347 +de 26235 013375 +de 26236 126662 +de 26237 007350 +de 26240 017375 +de 26241 015351 +de 26242 100400 +de 26243 003310 +de 26244 024000 +de 26245 003171 +de 26246 025377 +de 26247 101000 +de 26250 073365 +de 26251 103120 +de 26252 045500 +de 26253 007356 +de 26254 100040 +de 26255 003230 +de 26256 005356 +de 26257 053500 +de 26260 051500 +de 26261 003230 +de 26262 007352 +de 26263 011376 +de 26264 045500 +de 26265 007356 +de 26266 100040 +de 26267 003230 +de 26270 104662 +de 26271 007347 +de 26272 141340 +de 26273 023374 +de 26274 003277 +de 26275 003230 +de 26276 003230 +de 26277 141340 +de 26300 112662 +de 26301 013373 +de 26302 110662 +de 26303 044265 +de 26304 007361 +de 26305 013370 +de 26306 050265 +de 26307 003230 +de 26310 045500 +de 26311 007357 +de 26312 100040 +de 26313 003244 +de 26314 005357 +de 26315 053500 +de 26316 051500 +de 26317 003244 +de 26320 045500 +de 26321 007357 +de 26322 100040 +de 26323 003244 +de 26324 104662 +de 26325 007350 +de 26326 023375 +de 26327 003332 +de 26330 003244 +de 26331 003244 +de 26332 112662 +de 26333 013375 +de 26334 110662 +de 26335 044265 +de 26336 007360 +de 26337 013367 +de 26340 050265 +de 26341 003244 +de 26342 177534 +de 26343 040107 +de 26344 026345 +de 26345 177777 +de 26346 177700 +de 26347 174000 +de 26350 003777 +de 26351 000010 +de 26352 000037 +de 26353 004000 +de 26354 020000 +de 26355 000040 +de 26356 060000 +de 26357 000140 +de 26360 177740 +de 26361 160377 +de 26362 160340 +de 26363 017437 +de 26364 104676 +de 26513 073627 +de 26514 140040 +de 26515 055642 +de 26516 024000 +de 26517 003515 +de 26520 100040 +de 26521 120061 +de 26522 073630 +de 26523 033642 +de 26524 110660 +de 26525 024000 +de 26526 015642 +de 26527 011642 +de 26530 004106 +de 26531 141340 +de 26532 141206 +de 26533 110660 +de 26534 024000 +de 26535 015642 +de 26536 011642 +de 26537 005644 +de 26540 015631 +de 26541 011644 +de 26542 110660 +de 26543 024000 +de 26544 015642 +de 26545 011642 +de 26546 044265 +de 26547 100400 +de 26550 003602 +de 26551 104662 +de 26552 007347 +de 26553 141340 +de 26554 023633 +de 26555 003614 +de 26556 003614 +de 26557 044265 +de 26560 007636 +de 26561 050265 +de 26562 033643 +de 26563 104662 +de 26564 110660 +de 26565 015642 +de 26566 011642 +de 26567 024000 +de 26570 003546 +de 26571 140407 +de 26572 110660 +de 26573 073643 +de 26574 044265 +de 26575 007632 +de 26576 141340 +de 26577 016114 +de 26600 010420 +de 26601 103512 +de 26602 104662 +de 26603 007347 +de 26604 141340 +de 26605 023633 +de 26606 003624 +de 26607 003624 +de 26610 044265 +de 26611 007363 +de 26612 013634 +de 26613 003622 +de 26614 044265 +de 26615 007635 +de 26616 100040 +de 26617 003563 +de 26620 005635 +de 26621 052265 +de 26622 050265 +de 26623 003563 +de 26624 005640 +de 26625 110662 +de 26626 003564 +de 26627 177651 +de 26630 177675 +de 26631 000400 +de 26632 017400 +de 26633 000260 +de 26634 000340 +de 26635 060000 +de 26636 117777 +de 26637 100000 +de 26640 177777 +de 26641 125362 +de 26645 073106 +de 26646 073212 +de 26647 073316 +de 26650 073216 +de 27113 073261 +de 27114 140040 +de 27115 055263 +de 27116 024000 +de 27117 003115 +de 27120 100040 +de 27121 120061 +de 27122 073230 +de 27123 105241 +de 27124 007243 +de 27125 101040 +de 27126 003132 +de 27127 105241 +de 27130 017251 +de 27131 111241 +de 27132 105241 +de 27133 007244 +de 27134 101040 +de 27135 003141 +de 27136 105241 +de 27137 017252 +de 27140 111241 +de 27141 024000 +de 27142 003123 +de 27143 025263 +de 27144 003170 +de 27145 005237 +de 27146 011263 +de 27147 073230 +de 27150 044265 +de 27151 007245 +de 27152 101040 +de 27153 003166 +de 27154 044265 +de 27155 017246 +de 27156 050265 +de 27157 007245 +de 27160 100040 +de 27161 003166 +de 27162 005235 +de 27163 111242 +de 27164 005236 +de 27165 050265 +de 27166 024000 +de 27167 003150 +de 27170 025264 +de 27171 003206 +de 27172 005240 +de 27173 011264 +de 27174 073230 +de 27175 044265 +de 27176 007247 +de 27177 101040 +de 27200 003204 +de 27201 044265 +de 27202 017250 +de 27203 050265 +de 27204 024000 +de 27205 003175 +de 27206 073231 +de 27207 140040 +de 27210 011266 +de 27211 127232 +de 27212 017234 +de 27213 100400 +de 27214 003217 +de 27215 025266 +de 27216 003212 +de 27217 005233 +de 27220 017266 +de 27221 100400 +de 27222 140040 +de 27223 015260 +de 27224 051274 +de 27225 024000 +de 27226 003207 +de 27227 103112 +de 27230 177700 +de 27231 177773 +de 27232 052632 +de 27233 000004 +de 27234 002450 +de 27235 177777 +de 27236 100000 +de 27237 177772 +de 27240 177767 +de 27241 066500 +de 27242 073316 +de 27243 060000 +de 27244 000140 +de 27245 060000 +de 27246 020000 +de 27247 000340 +de 27250 000040 +de 27251 020000 +de 27252 000040 +de 27253 000001 +de 27254 000005 +de 27255 000015 +de 27256 000033 +de 27257 000037 +de 27260 027253 +de 27261 177630 +de 27262 147750 +de 30056 004114 +de 30057 011213 +de 30060 005436 +de 30061 027213 +de 30062 023436 +de 30063 100000 +de 30064 003104 +de 30065 101040 +de 30066 003075 +de 30067 073575 +de 30070 105576 +de 30071 111577 +de 30072 024000 +de 30073 003070 +de 30074 003104 +de 30075 021256 +de 30076 073575 +de 30077 005600 +de 30100 111577 +de 30101 141206 +de 30102 024000 +de 30103 003100 +de 30104 005601 +de 30105 011455 +de 30106 005602 +de 30107 011440 +de 30110 005603 +de 30111 011212 +de 30112 072125 +de 30113 033441 +de 30114 033211 +de 30115 105212 +de 30116 101040 +de 30117 003170 +de 30120 004417 +de 30121 057211 +de 30122 100400 +de 30123 140407 +de 30124 057465 +de 30125 100400 +de 30126 003170 +de 30127 140040 +de 30130 011214 +de 30131 004000 +de 30132 012124 +de 30133 100040 +de 30134 003153 +de 30135 045465 +de 30136 040572 +de 30137 101040 +de 30140 003153 +de 30141 140407 +de 30142 011215 +de 30143 004106 +de 30144 140407 +de 30145 011216 +de 30146 025214 +de 30147 025216 +de 30150 003146 +de 30151 025215 +de 30152 003143 +de 30153 045465 +de 30154 140407 +de 30155 006417 +de 30156 015214 +de 30157 051211 +de 30160 045457 +de 30161 021403 +de 30162 045451 +de 30163 021403 +de 30164 143204 +de 30165 073604 +de 30166 004112 +de 30167 120664 +de 30170 073211 +de 30171 025212 +de 30172 024000 +de 30173 003114 +de 30174 072116 +de 30175 120665 +de 30176 003060 +de 30177 030217 +de 30200 030243 +de 30201 030267 +de 30202 030347 +de 30203 022057 +de 30217 005605 +de 30220 021403 +de 30221 004415 +de 30222 021403 +de 30223 073606 +de 30224 001001 +de 30225 044543 +de 30226 056567 +de 30227 000401 +de 30230 021403 +de 30231 024000 +de 30232 003224 +de 30233 072132 +de 30234 044265 +de 30235 021403 +de 30236 105607 +de 30237 021403 +de 30240 024000 +de 30241 003234 +de 30242 003165 +de 30243 004115 +de 30244 021403 +de 30245 004417 +de 30246 021403 +de 30247 073610 +de 30250 105611 +de 30251 021403 +de 30252 024000 +de 30253 003250 +de 30254 021256 +de 30255 003165 +de 30257 073610 +de 30260 140040 +de 30261 001001 +de 30262 111611 +de 30263 024000 +de 30264 003262 +de 30265 000401 +de 30266 103256 +de 30267 072116 +de 30270 005465 +de 30271 007612 +de 30272 101040 +de 30273 003301 +de 30274 140407 +de 30275 011346 +de 30276 120664 +de 30277 025346 +de 30300 003276 +de 30301 131040 +de 30302 003301 +de 30303 140040 +de 30304 100040 +de 30305 004112 +de 30306 013454 +de 30307 011454 +de 30310 005446 +de 30311 101000 +de 30312 003165 +de 30313 101040 +de 30314 003333 +de 30315 015613 +de 30316 011446 +de 30317 100040 +de 30320 003165 +de 30321 004415 +de 30322 017345 +de 30323 111343 +de 30324 025343 +de 30325 005465 +de 30326 015342 +de 30327 011465 +de 30330 017344 +de 30331 101400 +de 30332 003337 +de 30333 004415 +de 30334 011345 +de 30335 005446 +de 30336 003315 +de 30337 140040 +de 30340 011437 +de 30341 003165 +de 30342 000010 +de 30343 030000 +de 30344 000760 +de 30347 001001 +de 30350 104342 +de 30351 026342 +de 30352 000401 +de 30353 011401 +de 30354 004746 +de 30355 021403 +de 30356 004747 +de 30357 021403 +de 30360 004750 +de 30361 021403 +de 30362 005401 +de 30363 010000 +de 30364 021403 +de 30365 005614 +de 30366 011402 +de 30367 044000 +de 30370 021403 +de 30371 024000 +de 30372 025402 +de 30373 003367 +de 30374 001001 +de 30375 073401 +de 30376 120671 +de 30377 000401 +de 30400 003165 +de 30404 033411 +de 30405 072116 +de 30406 120664 +de 30407 073411 +de 30410 103403 +de 30412 120666 +de 30413 003412 +de 30414 120666 +de 30415 120666 +de 30416 120666 +de 30417 100000 +de 30420 003414 +de 30421 100400 +de 30422 003412 +de 30423 007615 +de 30424 015616 +de 30425 011433 +de 30426 120666 +de 30427 100000 +de 30430 003414 +de 30431 111433 +de 30432 003416 +de 30474 120666 +de 30475 003474 +de 30476 003474 +de 30477 140500 +de 30500 003515 +de 30501 000401 +de 30502 005572 +de 30503 101040 +de 30504 003527 +de 30505 004112 +de 30506 073617 +de 30507 120664 +de 30510 120665 +de 30511 004341 +de 30512 101040 +de 30513 003510 +de 30514 140040 +de 30515 011572 +de 30516 005451 +de 30517 120664 +de 30520 005443 +de 30521 120664 +de 30522 004114 +de 30523 120664 +de 30524 140040 +de 30525 026414 +de 30526 120664 +de 30527 072115 +de 30530 120665 +de 30531 005621 +de 30532 011573 +de 30533 001001 +de 30534 105573 +de 30535 011573 +de 30536 105573 +de 30537 011574 +de 30540 101040 +de 30541 003501 +de 30542 010000 +de 30543 044012 +de 30544 101400 +de 30545 003534 +de 30546 044000 +de 30547 111573 +de 30550 000401 +de 30551 025572 +de 30552 005622 +de 30553 011571 +de 30554 072115 +de 30555 025574 +de 30556 105574 +de 30557 120664 +de 30560 025571 +de 30561 003555 +de 30562 005574 +de 30563 015622 +de 30564 001001 +de 30565 026325 +de 30566 110325 +de 30567 000401 +de 30570 003531 +de 30575 177760 +de 30576 072030 +de 30577 172010 +de 30600 120574 +de 30601 050057 +de 30602 100342 +de 30603 130434 +de 30604 100003 +de 30605 000005 +de 30606 177754 +de 30607 073106 +de 30610 177423 +de 30611 071716 +de 30612 000777 +de 30613 000400 +de 30614 177666 +de 30615 000037 +de 30616 030434 +de 30617 100002 +de 30620 000341 +de 30621 030620 +de 30622 177766 +de 31056 005753 +de 31057 001001 +de 31060 011121 +de 31061 004675 +de 31062 021123 +de 31063 015356 +de 31064 011356 +de 31065 000401 +de 31066 072675 +de 31067 172677 +de 31070 044007 +de 31071 103055 +de 31073 065375 +de 31074 101000 +de 31075 103754 +de 31077 005755 +de 31100 001001 +de 31101 011121 +de 31102 004676 +de 31103 172700 +de 31104 021123 +de 31105 015374 +de 31106 011374 +de 31107 000401 +de 31110 072676 +de 31111 105756 +de 31112 103076 +de 31114 141206 +de 31115 065405 +de 31116 101000 +de 31117 103113 +de 31124 016130 +de 31125 101400 +de 31126 003156 +de 31127 044111 +de 31130 016000 +de 31131 017757 +de 31132 140100 +de 31133 011122 +de 31134 021717 +de 31135 014120 +de 31136 015121 +de 31137 011120 +de 31140 125120 +de 31141 101000 +de 31142 044006 +de 31143 141340 +de 31144 006120 +de 31145 101040 +de 31146 003154 +de 31147 016114 +de 31150 015121 +de 31151 011121 +de 31152 125121 +de 31153 101000 +de 31154 005122 +de 31155 103123 +de 31156 073123 +de 31157 042002 +de 31161 111760 +de 31162 010000 +de 31163 044105 +de 31164 016000 +de 31165 016116 +de 31166 140100 +de 31167 011337 +de 31170 021717 +de 31171 173761 +de 31172 055331 +de 31173 011340 +de 31174 125340 +de 31175 101000 +de 31176 005337 +de 31177 055622 +de 31200 051622 +de 31201 103160 +de 31203 025627 +de 31204 070471 +de 31205 103202 +de 31206 025634 +de 31207 025202 +de 31210 101000 +de 31211 103202 +de 31213 064426 +de 31214 065641 +de 31215 101000 +de 31216 103212 +de 31220 100040 +de 31221 025217 +de 31222 101040 +de 31223 065646 +de 31224 101000 +de 31225 103217 +de 31227 025630 +de 31230 070472 +de 31231 103226 +de 31232 025635 +de 31233 025226 +de 31234 101000 +de 31235 103226 +de 31237 025631 +de 31240 070473 +de 31241 103236 +de 31242 025636 +de 31243 025236 +de 31244 101000 +de 31245 103236 +de 31247 025632 +de 31250 070474 +de 31251 103246 +de 31252 025637 +de 31253 025246 +de 31254 101000 +de 31255 103246 +de 31257 025633 +de 31260 070475 +de 31261 103256 +de 31262 025640 +de 31263 025256 +de 31264 101000 +de 31265 103256 +de 31267 050111 +de 31270 173762 +de 31271 131040 +de 31272 003271 +de 31273 050010 +de 31274 173763 +de 31275 103266 +de 31277 050030 +de 31300 131040 +de 31301 003300 +de 31302 050044 +de 31303 103276 +de 31305 131040 +de 31306 003305 +de 31307 173764 +de 31310 056010 +de 31311 021322 +de 31312 103765 +de 31314 131040 +de 31315 003314 +de 31316 173764 +de 31317 056044 +de 31320 021322 +de 31321 103766 +de 31323 040475 +de 31324 173767 +de 31325 055415 +de 31326 051415 +de 31327 065515 +de 31330 103322 +de 31331 031660 +de 31332 031666 +de 31333 031674 +de 31334 031702 +de 31335 031710 +de 31336 031716 +de 31720 033742 +de 31721 022120 +de 31722 003731 +de 31723 101000 +de 31724 100400 +de 31725 003733 +de 31726 010000 +de 31727 045743 +de 31730 003740 +de 31731 040575 +de 31732 022120 +de 31733 004120 +de 31734 101000 +de 31735 010000 +de 31736 045743 +de 31737 014116 +de 31740 073742 +de 31741 103717 +de 31745 000001 +de 31746 000001 +de 31747 000002 +de 31750 000002 +de 31751 000002 +de 31752 000002 +de 31753 031341 +de 31754 154137 +de 31755 031357 +de 31756 056124 +de 31757 000011 +de 31760 012655 +de 31761 012654 +de 31762 015156 +de 31763 115156 +de 31764 007131 +de 31765 007213 +de 31766 007215 +de 31767 006673 +de 31770 005450 +de 31771 007127 +de 31772 007201 +de 31773 010052 +de 31774 010076 +de 31775 010122 +de 31776 010146 +de 31777 010172 +de 32000 010235 +de 32001 012420 +de 32002 014121 +de 32003 014613 +de 32004 015102 +de 32005 015261 +de 32006 016457 +de 32007 017115 +de 32010 064426 +de 32011 003213 +de 32012 003215 +de 32013 070471 +de 32014 070472 +de 32015 070473 +de 32016 070474 +de 32017 070475 +de 32020 101040 +de 32021 011655 +de 32022 143137 +de 32023 044007 +de 32024 050111 +de 32025 050030 +de 32026 141206 +de 32027 105432 +de 37026 005732 +de 37027 026567 +de 37030 100040 +de 37031 103025 +de 37032 011000 +de 37033 011001 +de 37034 011002 +de 37035 011003 +de 37036 005733 +de 37037 011024 +de 37040 001001 +de 37041 121734 +de 37042 003112 +de 37043 004000 +de 37044 015735 +de 37045 010024 +de 37046 015736 +de 37047 010025 +de 37050 073737 +de 37051 045732 +de 37052 111740 +de 37053 024000 +de 37054 003051 +de 37055 030473 +de 37056 021060 +de 37057 103025 +de 37061 073741 +de 37062 140040 +de 37063 051022 +de 37064 024000 +de 37065 003063 +de 37066 010036 +de 37067 072124 +de 37070 033022 +de 37071 032475 +de 37072 140040 +de 37073 067004 +de 37074 101040 +de 37075 003103 +de 37076 033114 +de 37077 140100 +de 37100 010000 +de 37101 120671 +de 37102 073114 +de 37103 024000 +de 37104 003072 +de 37105 005742 +de 37106 011015 +de 37107 005743 +de 37110 111744 +de 37111 103060 +de 37112 024144 +de 37113 003025 +de 37125 011117 +de 37126 033120 +de 37127 105745 +de 37130 073746 +de 37131 100040 +de 37132 073747 +de 37133 100400 +de 37134 073750 +de 37135 004000 +de 37136 170120 +de 37137 026134 +de 37140 011121 +de 37141 000043 +de 37142 011115 +de 37143 120672 +de 37144 004025 +de 37145 140100 +de 37146 017751 +de 37147 011116 +de 37150 015752 +de 37151 011123 +de 37152 005015 +de 37153 100400 +de 37154 003171 +de 37155 070473 +de 37156 100000 +de 37157 003171 +de 37160 105123 +de 37161 007733 +de 37162 013024 +de 37163 101040 +de 37164 003212 +de 37165 013024 +de 37166 011024 +de 37167 001001 +de 37170 021317 +de 37171 005116 +de 37172 015735 +de 37173 010024 +de 37174 015736 +de 37175 010025 +de 37176 030473 +de 37177 073120 +de 37200 001001 +de 37201 005121 +de 37202 170120 +de 37203 010134 +de 37204 000013 +de 37205 005115 +de 37206 171020 +de 37207 005117 +de 37210 000401 +de 37211 103124 +de 37212 105123 +de 37213 072113 +de 37214 040576 +de 37215 021273 +de 37216 072114 +de 37217 105123 +de 37220 040575 +de 37221 021273 +de 37222 105123 +de 37223 006114 +de 37224 011023 +de 37225 010000 +de 37226 105123 +de 37227 041676 +de 37230 053011 +de 37231 100100 +de 37232 003171 +de 37233 105123 +de 37234 141340 +de 37235 006752 +de 37236 101040 +de 37237 003171 +de 37240 011122 +de 37241 073023 +de 37242 045002 +de 37243 100040 +de 37244 003171 +de 37245 105123 +de 37246 006112 +de 37247 051020 +de 37250 001001 +de 37251 104324 +de 37252 101040 +de 37253 003171 +de 37254 011014 +de 37255 045011 +de 37256 012114 +de 37257 051011 +de 37260 005116 +de 37261 051002 +de 37262 010000 +de 37263 005122 +de 37264 050111 +de 37265 001001 +de 37266 024563 +de 37267 104324 +de 37270 026324 +de 37271 000401 +de 37272 003172 +de 37274 053007 +de 37275 101100 +de 37276 003312 +de 37277 045007 +de 37300 012114 +de 37301 051007 +de 37302 045000 +de 37303 001001 +de 37304 100040 +de 37305 003307 +de 37306 021317 +de 37307 000401 +de 37310 140500 +de 37311 051000 +de 37312 005753 +de 37313 011013 +de 37314 004112 +de 37315 111744 +de 37316 103273 +de 37320 120745 +de 37321 021060 +de 37322 003171 +de 37332 011324 +de 37333 004502 +de 37334 170120 +de 37335 026134 +de 37336 011326 +de 37337 000043 +de 37340 011323 +de 37341 120672 +de 37342 033325 +de 37343 140040 +de 37344 010036 +de 37345 005015 +de 37346 100400 +de 37347 003364 +de 37350 021407 +de 37351 021407 +de 37352 005014 +de 37353 100400 +de 37354 003364 +de 37355 021377 +de 37356 005754 +de 37357 010036 +de 37360 010037 +de 37361 005755 +de 37362 011014 +de 37363 030073 +de 37364 073325 +de 37365 001001 +de 37366 005326 +de 37367 170120 +de 37370 010134 +de 37371 000013 +de 37372 005323 +de 37373 171020 +de 37374 005324 +de 37375 000401 +de 37376 103331 +de 37400 001001 +de 37401 005012 +de 37402 041577 +de 37403 013011 +de 37404 041576 +de 37405 011330 +de 37406 103377 +de 37410 005005 +de 37411 012114 +de 37412 011005 +de 37413 001001 +de 37414 073005 +de 37415 045000 +de 37416 101040 +de 37417 103407 +de 37420 100400 +de 37421 003445 +de 37422 011327 +de 37423 021377 +de 37424 045007 +de 37425 040676 +de 37426 013330 +de 37427 013005 +de 37430 053016 +de 37431 011330 +de 37432 073327 +de 37433 044111 +de 37434 141240 +de 37435 015330 +de 37436 050010 +de 37437 004000 +de 37440 015752 +de 37441 010036 +de 37442 054111 +de 37443 140100 +de 37444 003360 +de 37445 140040 +de 37446 067000 +de 37447 140100 +de 37450 010000 +de 37451 001001 +de 37452 120671 +de 37453 103407 +de 37455 140040 +de 37456 026476 +de 37457 100040 +de 37460 003476 +de 37461 005015 +de 37462 101400 +de 37463 003471 +de 37464 025015 +de 37465 103454 +de 37466 005755 +de 37467 011014 +de 37470 103454 +de 37471 005013 +de 37472 101400 +de 37473 103454 +de 37474 025013 +de 37475 003501 +de 37476 001001 +de 37477 021060 +de 37500 103454 +de 37501 025014 +de 37502 101000 +de 37503 103454 +de 37512 001001 +de 37513 004500 +de 37514 170120 +de 37515 026134 +de 37516 011504 +de 37517 000401 +de 37520 105756 +de 37521 022121 +de 37522 100000 +de 37523 003612 +de 37524 005743 +de 37525 111757 +de 37526 073006 +de 37527 045002 +de 37530 101040 +de 37531 003612 +de 37532 011505 +de 37533 004454 +de 37534 013760 +de 37535 101040 +de 37536 003605 +de 37537 013761 +de 37540 100040 +de 37541 003560 +de 37542 073505 +de 37543 044011 +de 37544 110052 +de 37545 044012 +de 37546 024052 +de 37547 110052 +de 37550 073006 +de 37551 045020 +de 37552 100400 +de 37553 003605 +de 37554 001001 +de 37555 073505 +de 37556 120671 +de 37557 003577 +de 37560 005505 +de 37561 127762 +de 37562 010000 +de 37563 050111 +de 37564 001001 +de 37565 120671 +de 37566 073505 +de 37567 044111 +de 37570 015505 +de 37571 015763 +de 37572 010052 +de 37573 073006 +de 37574 045020 +de 37575 100400 +de 37576 111757 +de 37577 073006 +de 37600 140040 +de 37601 051002 +de 37602 005006 +de 37603 012114 +de 37604 011006 +de 37605 001001 +de 37606 000013 +de 37607 120101 +de 37610 001001 +de 37611 120672 +de 37612 073004 +de 37613 045000 +de 37614 100040 +de 37615 003704 +de 37616 051016 +de 37617 004046 +de 37620 101040 +de 37621 003704 +de 37622 121734 +de 37623 003704 +de 37624 000401 +de 37625 033506 +de 37626 027022 +de 37627 100040 +de 37630 003646 +de 37631 004047 +de 37632 016046 +de 37633 141206 +de 37634 050111 +de 37635 104046 +de 37636 050011 +de 37637 024000 +de 37640 024046 +de 37641 004047 +de 37642 016046 +de 37643 101400 +de 37644 003635 +de 37645 003662 +de 37646 104046 +de 37647 050011 +de 37650 024046 +de 37651 104046 +de 37652 050012 +de 37653 004115 +de 37654 050111 +de 37655 004046 +de 37656 024046 +de 37657 016047 +de 37660 100040 +de 37661 003676 +de 37662 140040 +de 37663 026475 +de 37664 011022 +de 37665 100040 +de 37666 004112 +de 37667 073004 +de 37670 051016 +de 37671 001001 +de 37672 000013 +de 37673 120077 +de 37674 001001 +de 37675 120672 +de 37676 073004 +de 37677 005506 +de 37700 051000 +de 37701 005004 +de 37702 012114 +de 37703 011004 +de 37704 004036 +de 37705 001001 +de 37706 000013 +de 37707 101040 +de 37710 021331 +de 37711 001001 +de 37712 005504 +de 37713 170120 +de 37714 010134 +de 37715 120672 +de 37716 103511 +de 37717 121407 +de 37720 121661 +de 37721 101000 +de 37722 024475 +de 37723 101000 +de 37724 101000 +de 37725 003531 +de 37726 100000 +de 37727 024476 +de 37730 037124 +de 37731 037331 +de 37732 004000 +de 37733 000200 +de 37734 004372 +de 37735 100010 +de 37736 000101 +de 37737 177765 +de 37740 142374 +de 37741 177762 +de 37742 177750 +de 37743 101000 +de 37744 021663 +de 37745 001005 +de 37746 154000 +de 37747 150000 +de 37750 140000 +de 37751 000111 +de 37752 000010 +de 37753 177770 +de 37754 037330 +de 37755 177774 +de 37756 013140 +de 37757 013314 +de 37760 013400 +de 37761 007453 +de 37762 013334 +de 37763 000011 + +; ****** OFFICIAL BBN PATCHES FROM PATCH.3050 ****** +de 03631 140040 +de 03632 110147 +de 03633 004121 +de 03634 110146 +de 03635 003074 +de 02511 003631 +de 00146 011206 +de 00147 011211 + +de 22567 072121 +de 22570 004342 +de 22571 111573 +de 22572 003324 +de 22573 030440 +de 22323 003567 + +de 30107 101000 +de 30115 045442 +de 22524 000303 + + +; ****** NEUHAUSER/RLA LOCAL PATCHES ******* + +; Changing 3416 to -2 limits the startup to two "fake" hosts - DDT and the +; console terminal. It disables the statistics task, which was causing +; problems ... +;;d 3614 177776 + +; Disable the software WDT. I'm not completely sure what this was originally +; for, but it appears to reboot the IMP if it goes 3 minutes w/o receiving any +; message from a host or another IMP. That makes testing difficult! +d -m 21131 NOP + +; Patch the DELSPD table to give a wider range of acceptable line speeds .... +;;de 11331 777 +;;de 11332 577 +;;de 11333 577 +;;de 11334 577 + +; Disable the requirement for one IHY message every short interval ... +;;de -m 20375 NOP + +; One remaining kludge - the IMP code around IHWAIT trashes the DMC pointers +; for modem line #5. IHWAIT is actually IMP to HOST code, and it's deciding +; that host #4 is down, so it aborts any I/O and clears the host 4 DMC pointers. +; Trouble is, host 4 shares DMC channels with modem 5! Needless to say, that +; trashes modem 5. I think this is actually a bug in the original IMP code +; (the IHWAIT code should check the HOST34 flag to see if host 4 exists before +; zeroing the DMC pointers), but what do I know?? +; +; In any case, this patch will allow five modem lines to work. All it does +; is modify the host interface DMC tables at IHB1 and IHB2 so that the pointers +; for host 4 are the same as host 3. Since neither exists it doesn't really +; matter, and this keeps IHWAIT from trashing modem 5... +de 16140 46 +de 16150 47 + +; Set the start address ... +de p 02000 diff --git a/H316/tests/impconfig.cmd b/H316/tests/impconfig.cmd new file mode 100644 index 00000000..34706ed6 --- /dev/null +++ b/H316/tests/impconfig.cmd @@ -0,0 +1,65 @@ +;; ***** GENERIC IMP CONFIGURATION ***** + +; This simh command file sets up the H316 simulator configuration for a generic +; IMP node. Note that it doesn't load any IMP code (the caller is expected to +; do that) and it doesn't define any IMP node specific settings (e.g. modem +; links, IMP address, etc). +; +; RLA [4-Jun-13] +RESET ALL + +; Define the CPU configuration ... +; NOTE - real IMPs only had 16K of memory! +SET CPU 16K NOHSA DMA=0 DMC EXTINT=16 + +; Disable all the devices an IMP doesn't have ... +SET LPT DISABLED +SET MT DISABLED +SET CLK DISABLED +SET FHD DISABLED +SET DP DISABLED + +; Enable the IMP device but leave the station address undefined ... +SET IMP ENABLED +;;SET IMP NUM=1 + +; Enable the RTC to count at 50kHz (20us intervals) ... +SET RTC ENABLED +SET RTC INTERVAL=20 +SET RTC QUANTUM=32 + +; Enable the WDT but don't ever time out (we have enough problems!)... +SET WDT ENABLED +SET WDT DELAY=0 + +; Enable only modem line 1 and disable all the rest ... +SET MI1 ENABLED +SET MI2 DISABLED +SET MI3 DISABLED +SET MI4 DISABLED +SET MI5 DISABLED + +; Enable only one host interface and disable all the rest ... +SET HI1 ENABLED +SET HI2 DISABLED +SET HI3 DISABLED +SET HI4 DISABLED + +; Just ignore I/Os to disconnected devices ... +DEPOSIT CPU STOP_DEV 0 + +; SS4 ON is required to run DDT! +DEPOSIT CPU SS4 1 + +; Set the TTY speed to realistic values (about 9600BPS in this case) ... +DEPOSIT TTY KTIME 1000 +DEPOSIT TTY TTIME 1000 + +; Don't know for sure what SS2 does, but it appears to have something to do +; with the IMP startup. Leave it ON for now... +DEPOSIT CPU SS2 1 + +; All done .... +SET CPU HISTORY=65000 +SET CONSOLE DEBUG=STDERR +SET WDT DEBUG=LIGHTS \ No newline at end of file diff --git a/H316/tests/imploop.cmd b/H316/tests/imploop.cmd new file mode 100644 index 00000000..f0c298c0 --- /dev/null +++ b/H316/tests/imploop.cmd @@ -0,0 +1,25 @@ +;; *** IMP FIVE MODEM LINE LOOPBACK TEST *** + +; Set the simulator configuration ... +echo IMP five modem line interface loopback test... +do impconfig.cmd +SET IMP NUM=2 + +; Load the IMP code ... +echo Loading IMP code ... +do impcode.cmd + +; Start up the modem links! +SET MI1 ENABLED +DEPOSIT MI1 ILOOP 1 +SET MI2 ENABLED +DEPOSIT MI2 ILOOP 1 +SET MI3 ENABLED +DEPOSIT MI3 ILOOP 1 +SET MI4 ENABLED +DEPOSIT MI4 ILOOP 1 +SET MI5 ENABLED +DEPOSIT MI5 ILOOP 1 + +; And we're done .. +echo Type GO to start ... diff --git a/H316/tests/imploop4.cmd b/H316/tests/imploop4.cmd new file mode 100644 index 00000000..5fc88f12 --- /dev/null +++ b/H316/tests/imploop4.cmd @@ -0,0 +1,21 @@ +;; *** IMP LINE FOUR (ONLY!) LOOPBACK TEST *** + +; Set the simulator configuration ... +echo IMP line four loopback test... +do impconfig.cmd +SET IMP NUM=2 + +; Load the IMP code ... +echo Loading IMP code ... +do impcode.cmd + +; Start up the modem links! +SET MI1 DISABLED +SET MI2 DISABLED +SET MI3 DISABLED +SET MI4 ENABLED +DEPOSIT MI4 ILOOP 1 +SET MI5 DISABLED + +; And we're done .. +echo Type GO to start ... diff --git a/H316/tests/mdmtest1.cmd b/H316/tests/mdmtest1.cmd new file mode 100644 index 00000000..854c0083 --- /dev/null +++ b/H316/tests/mdmtest1.cmd @@ -0,0 +1,61 @@ +; TEST1 - send a test modem message + +; Set up the configuration ... +RESET ALL +SET CPU 32K NOHSA DMA=0 DMC EXTINT=16 +SET LPT DISABLED +SET MT DISABLED +SET CLK DISABLED +SET FHD DISABLED +SET DP DISABLED +SET IMP DISABLED +SET RTC DISABLED +SET WDT DISABLED +SET MI1 ENABLED +SET MI2 DISABLED +SET MI3 DISABLED +SET MI4 DISABLED +SET MI5 DISABLED +SET HI1 DISABLED +SET HI2 DISABLED +SET HI3 DISABLED +SET HI4 DISABLED + +; Deposit the test message in memory at 000100..000107 ... +DEPOSIT ALL 0 +DEPOSIT 100 100000 +DEPOSIT 101 011111 +DEPOSIT 102 122222 +DEPOSIT 103 033333 +DEPOSIT 104 144444 +DEPOSIT 105 055555 +DEPOSIT 106 166666 +DEPOSIT 107 077777 + +; Store a little program to set up the DMC and do start modem output .. +DEPOSIT 32 100 +DEPOSIT 33 107 +DEPOSIT -m 10 OCP 0071 +DEPOSIT -m 11 HLT +DEPOSIT P 10 + +; Tell the world ... +echo +echo Here are the DMC pointers before sending - +ex 32:33 +echo +echo And here is the data we're sending - +ex 100:107 + +; Away we go! +echo +echo Starting simulation ... +ATTACH MI1 4431::4432 +go + +; All done... +echo +echo Here are the DMC pointers after sending ... +ex 32:33 + + diff --git a/H316/tests/mdmtest2.cmd b/H316/tests/mdmtest2.cmd new file mode 100644 index 00000000..379aa460 --- /dev/null +++ b/H316/tests/mdmtest2.cmd @@ -0,0 +1,54 @@ +; TEST2 - receive a test modem message + +; Set up the configuration ... +RESET ALL +SET CPU 32K NOHSA DMA=0 DMC EXTINT=16 +SET LPT DISABLED +SET MT DISABLED +SET CLK DISABLED +SET FHD DISABLED +SET DP DISABLED +SET IMP DISABLED +SET RTC DISABLED +SET WDT DISABLED +SET MI1 ENABLED +SET MI2 DISABLED +SET MI3 DISABLED +SET MI4 DISABLED +SET MI5 DISABLED +SET HI1 DISABLED +SET HI2 DISABLED +SET HI3 DISABLED +SET HI4 DISABLED + +; Clear the receiver buffer at 000100 ... +DEPOSIT ALL 0 + +; Store a little program to receive the message ... +DEPOSIT 20 100 +DEPOSIT 21 177 +DEPOSIT -m 10 OCP 0471 +DEPOSIT -m 11 SKS 0271 +DEPOSIT -m 12 JMP 11 +DEPOSIT -m 13 HLT +DEPOSIT P 10 + +; Tell the world ... +echo +echo Here are the DMC pointers before receiving - +ex 20:21 + +; and wait for "GO" ... +echo +echo Starting simulation ... +ATTACH MI1 4432::4431 +go + +; All done ... +echo +echo Here is the data we received - +ex 100:107 +echo +echo And here are the DMC pointers after receiving - +ex 20:21 +echo diff --git a/H316/tests/testrtc.cmd b/H316/tests/testrtc.cmd new file mode 100644 index 00000000..d4f9bc73 --- /dev/null +++ b/H316/tests/testrtc.cmd @@ -0,0 +1,42 @@ +; This is a super simple simh script to test the IMP RTC and verify that it is +; incrementing at the correct 100us interval. It simply waits for the clock +; count to overflow (which takes 65535 * 100us or about 6.5 seconds) and then +; repeats for a total of 10 iterations. If all is well, this loop should take +; pretty close to 65 seconds to complete. +; +; RLA [15-Jun-13] +echo +echo SIMH IMP RTC INTERVAL CALIBRATION TEST + +; Turn on the RTC (this requires extended interrupt support) +set cpu extint=16 +set rtc enabled + +; Turn the clock on (OCP 40 ==> CLKON) ... +d 1000 030040 + +; Loop reading the clock register until it becomes negative ... +d 1001 131040 +d -m 1002 HLT +d -m 1003 SMI +d -m 1004 JMP 1001 + +; Loop reading the clock register until it becomes positive again ... +d 1005 131040 +d -m 1006 HLT +d -m 1007 SPL +d -m 1010 JMP 1005 + +; And repeat the above for ten iterations ... +d -m 1011 IRS 1015 +d -m 1012 JMP 1001 +d -m 1013 HLT +d -m 1014 0 +d -m 1015 177766 + +; That's it... +d p 1000 +echo Start your stopwatch and at the same moment type "GO". +echo The program should halt in exactly 65 seconds ... + + diff --git a/README.md b/README.md index 59f648dc..7e6cbca8 100644 --- a/README.md +++ b/README.md @@ -68,6 +68,7 @@ A remote console session will close when an EOF character is entered (i.e. ^D or Serial Console Support Separate TCP listening ports per line Outgoing connections per line (virtual Null Modem cable). + Packet sending and reception semantics for simulated network device support using either TCP or UDP transport. #### Asynchronous I/O * Disk and Tape I/O can be asynchronous. Asynchronous support exists diff --git a/Visual Studio Projects/H316.vcproj b/Visual Studio Projects/H316.vcproj index aa72d8c3..c8ba5429 100644 --- a/Visual Studio Projects/H316.vcproj +++ b/Visual Studio Projects/H316.vcproj @@ -45,7 +45,7 @@ Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="./;../" - PreprocessorDefinitions="_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;SIM_NEED_GIT_COMMIT_ID" + PreprocessorDefinitions="_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;SIM_NEED_GIT_COMMIT_ID;VM_IMPTIP" MinimalRebuild="true" BasicRuntimeChecks="3" RuntimeLibrary="1" @@ -128,7 +128,7 @@ InlineFunctionExpansion="1" OmitFramePointers="true" AdditionalIncludeDirectories="./;../" - PreprocessorDefinitions="_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;SIM_NEED_GIT_COMMIT_ID" + PreprocessorDefinitions="_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;SIM_NEED_GIT_COMMIT_ID;VM_IMPTIP" StringPooling="true" RuntimeLibrary="0" EnableFunctionLevelLinking="true" @@ -201,14 +201,30 @@ RelativePath="..\H316\h316_fhd.c" > + + + + + + + + @@ -217,6 +233,10 @@ RelativePath="..\H316\h316_sys.c" > + + @@ -266,6 +286,10 @@ RelativePath="..\H316\h316_defs.h" > + + diff --git a/descrip.mms b/descrip.mms index 1a6f8ea2..52a09d4f 100644 --- a/descrip.mms +++ b/descrip.mms @@ -383,8 +383,10 @@ H316_LIB = $(LIB_DIR)H316-$(ARCH).OLB H316_SOURCE = $(H316_DIR)H316_STDDEV.C,$(H316_DIR)H316_LP.C,\ $(H316_DIR)H316_CPU.C,$(H316_DIR)H316_SYS.C,\ $(H316_DIR)H316_FHD.C,$(H316_DIR)H316_MT.C,\ - $(H316_DIR)H316_DP.C -H316_OPTIONS = /INCL=($(SIMH_DIR),$(H316_DIR))/DEF=($(CC_DEFS)) + $(H316_DIR)H316_DP.C,$(H316_DIR)H316_RTC.C,\ + $(H316_DIR)H316_IMP.C,$(H316_DIR)H316_HI.C,\ + $(H316_DIR)H316_MI.C,$(H316_DIR)H316_UDP.C +H316_OPTIONS = /INCL=($(SIMH_DIR),$(H316_DIR))/DEF=($(CC_DEFS),"VM_IMPTIP=1") # # Hewlett-Packard HP-2100 Simulator Definitions. diff --git a/doc/Summary of IMP IO Device Codes.doc b/doc/Summary of IMP IO Device Codes.doc new file mode 100644 index 00000000..c3724000 Binary files /dev/null and b/doc/Summary of IMP IO Device Codes.doc differ diff --git a/doc/h316_imp.doc b/doc/h316_imp.doc new file mode 100644 index 00000000..6604510d Binary files /dev/null and b/doc/h316_imp.doc differ diff --git a/makefile b/makefile index 3dc92f9f..f1c9bc3b 100644 --- a/makefile +++ b/makefile @@ -868,8 +868,9 @@ PDP8_OPT = -I ${PDP8D} H316D = H316 H316 = ${H316D}/h316_stddev.c ${H316D}/h316_lp.c ${H316D}/h316_cpu.c \ ${H316D}/h316_sys.c ${H316D}/h316_mt.c ${H316D}/h316_fhd.c \ - ${H316D}/h316_dp.c -H316_OPT = -I ${H316D} + ${H316D}/h316_dp.c ${H316D}/h316_rtc.c ${H316D}/h316_imp.c \ + ${H316D}/h316_hi.c ${H316D}/h316_mi.c ${H316D}/h316_udp.c +H316_OPT = -I ${H316D} -D VM_IMPTIP HP2100D = HP2100 diff --git a/sim_sock.c b/sim_sock.c index 0aa039cc..23d56ace 100644 --- a/sim_sock.c +++ b/sim_sock.c @@ -69,6 +69,8 @@ /* OS dependent routines sim_master_sock create master socket + sim_connect_sock connect a socket to a remote destination + sim_connect_sock_ex connect a socket to a remote destination sim_accept_conn accept connection sim_read_sock read from socket sim_write_sock write from socket @@ -99,6 +101,11 @@ SOCKET sim_connect_sock (const char *hostport, const char *default_host, const c return INVALID_SOCKET; } +SOCKET sim_connect_sock_ex (const char *sourcehostport, const char *hostport, const char *default_host, const char *default_port, t_bool datagram) +{ +return INVALID_SOCKET; +} + SOCKET sim_accept_conn (SOCKET master, char **connectaddr); { return INVALID_SOCKET; @@ -710,12 +717,12 @@ return 0; #endif /* endif !Win32 && !VMS */ -static SOCKET sim_create_sock (int af) +static SOCKET sim_create_sock_ex (int af, t_bool datagram) { SOCKET newsock; int32 err; -newsock = socket (af, SOCK_STREAM, 0); /* create socket */ +newsock = socket (af, (datagram ? SOCK_DGRAM : SOCK_STREAM), 0);/* create socket */ if (newsock == INVALID_SOCKET) { /* socket error? */ err = WSAGetLastError (); #if defined(WSAEAFNOSUPPORT) @@ -727,6 +734,11 @@ if (newsock == INVALID_SOCKET) { /* socket error? */ return newsock; } +static SOCKET sim_create_sock (int af) +{ +return sim_create_sock_ex (af, FALSE); +} + /* Some platforms and/or network stacks have varying support for listening on an IPv6 socket and receiving connections from both IPv4 and IPv6 client @@ -823,27 +835,70 @@ return newsock; /* got it! */ SOCKET sim_connect_sock (const char *hostport, const char *default_host, const char *default_port) { +return sim_connect_sock_ex (NULL, hostport, default_host, default_port, FALSE); +} + +SOCKET sim_connect_sock_ex (const char *sourcehostport, const char *hostport, const char *default_host, const char *default_port, t_bool datagram) +{ SOCKET newsock = INVALID_SOCKET; int32 sta; char host[CBUFSIZE], port[CBUFSIZE]; t_stat r; struct addrinfo hints; -struct addrinfo *result = NULL; +struct addrinfo *result = NULL, *source = NULL; r = sim_parse_addr (hostport, host, sizeof(host), default_host, port, sizeof(port), default_port, NULL); if (r != SCPE_OK) - return newsock; + return INVALID_SOCKET; memset(&hints, 0, sizeof(hints)); hints.ai_family = AF_UNSPEC; -hints.ai_protocol = IPPROTO_TCP; -hints.ai_socktype = SOCK_STREAM; +hints.ai_protocol = (datagram ? IPPROTO_UDP : IPPROTO_TCP); +hints.ai_socktype = (datagram ? SOCK_DGRAM : SOCK_STREAM); if (p_getaddrinfo(host[0] ? host : NULL, port[0] ? port : NULL, &hints, &result)) - return newsock; -newsock = sim_create_sock (result->ai_family); /* create socket */ + return INVALID_SOCKET; + +if (sourcehostport) { + + /* Validate the local/source side address which we'll bind to */ + r = sim_parse_addr (sourcehostport, host, sizeof(host), NULL, port, sizeof(port), NULL, NULL); + if (r != SCPE_OK) { + p_freeaddrinfo (result); + return INVALID_SOCKET; + } + + memset(&hints, 0, sizeof(hints)); + hints.ai_flags = AI_PASSIVE; + hints.ai_family = result->ai_family; /* Same family as connect destination */ + hints.ai_protocol = (datagram ? IPPROTO_UDP : IPPROTO_TCP); + hints.ai_socktype = (datagram ? SOCK_DGRAM : SOCK_STREAM); + if (p_getaddrinfo(host[0] ? host : NULL, port[0] ? port : NULL, &hints, &source)) { + p_freeaddrinfo (result); + return INVALID_SOCKET; + } + + newsock = sim_create_sock_ex (result->ai_family, datagram);/* create socket */ + if (newsock == INVALID_SOCKET) { /* socket error? */ + p_freeaddrinfo (result); + p_freeaddrinfo (source); + return newsock; + } + + sta = bind (newsock, source->ai_addr, source->ai_addrlen); + p_freeaddrinfo(source); + source = NULL; + if (sta == SOCKET_ERROR) { /* bind error? */ + p_freeaddrinfo (result); + return sim_err_sock (newsock, "bind", 1); + } + } + if (newsock == INVALID_SOCKET) { /* socket error? */ - p_freeaddrinfo (result); - return newsock; + newsock = sim_create_sock_ex (result->ai_family, datagram);/* create socket */ + if (newsock == INVALID_SOCKET) { /* socket error? */ + p_freeaddrinfo (result); + return newsock; + } } sta = sim_setnonblock (newsock); /* set nonblocking */ diff --git a/sim_sock.h b/sim_sock.h index 44721c49..6be04067 100644 --- a/sim_sock.h +++ b/sim_sock.h @@ -104,6 +104,7 @@ t_stat sim_parse_addr (const char *cptr, char *host, size_t hostlen, const char *default_host, char *port, size_t port_len, const char *default_port, const char *validate_addr); SOCKET sim_master_sock (const char *hostport, t_stat *parse_status); SOCKET sim_connect_sock (const char *hostport, const char *default_host, const char *default_port); +SOCKET sim_connect_sock_ex (const char *sourcehostport, const char *hostport, const char *default_host, const char *default_port, t_bool datagram); SOCKET sim_accept_conn (SOCKET master, char **connectaddr); int32 sim_check_conn (SOCKET sock, t_bool rd); int32 sim_read_sock (SOCKET sock, char *buf, int32 nbytes); diff --git a/sim_tmxr.c b/sim_tmxr.c index 02bb8dc5..d61f21e2 100644 --- a/sim_tmxr.c +++ b/sim_tmxr.c @@ -862,6 +862,10 @@ if (lp->destination || lp->port || lp->txlogname) { sprintf (growstring(&tptr, 32), ",Buffered=%d", lp->txbsz); if (!lp->txbfd && (lp->mp->buffered > 0)) sprintf (growstring(&tptr, 32), ",UnBuffered"); + if (lp->mp->datagram != lp->datagram) + sprintf (growstring(&tptr, 8), ",%s", lp->datagram ? "UDP" : "TCP"); + if (lp->port) + sprintf (growstring(&tptr, 12 + strlen (lp->port)), ",%s%s", lp->port, ((lp->mp->notelnet != lp->notelnet) && (!lp->datagram)) ? (lp->notelnet ? ";notelnet" : ";telnet") : ""); if (lp->destination) { if (lp->serport) { char portname[CBUFSIZE]; @@ -870,10 +874,8 @@ if (lp->destination || lp->port || lp->txlogname) { sprintf (growstring(&tptr, 25 + strlen (lp->destination)), ",Connect=%s%s%s", portname, strcmp("9600-8N1", lp->serconfig) ? ";" : "", strcmp("9600-8N1", lp->serconfig) ? lp->serconfig : ""); } else - sprintf (growstring(&tptr, 25 + strlen (lp->destination)), ",Connect=%s%s", lp->destination, (lp->mp->notelnet != lp->notelnet) ? (lp->notelnet ? ";notelnet" : ";telnet") : ""); + sprintf (growstring(&tptr, 25 + strlen (lp->destination)), ",Connect=%s%s", lp->destination, ((lp->mp->notelnet != lp->notelnet) && (!lp->datagram)) ? (lp->notelnet ? ";notelnet" : ";telnet") : ""); } - if (lp->port) - sprintf (growstring(&tptr, 12 + strlen (lp->port)), ",%s%s", lp->port, (lp->mp->notelnet != lp->notelnet) ? (lp->notelnet ? ";notelnet" : ";telnet") : ""); if (lp->txlogname) sprintf (growstring(&tptr, 12 + strlen (lp->txlogname)), ",Log=%s", lp->txlogname); if (lp->loopback) @@ -1136,7 +1138,7 @@ for (i = 0; i < mp->lines; i++) { /* check each line in se (!lp->modem_control || (lp->modembits & TMXR_MDM_DTR))) { sprintf (msg, "tmxr_poll_conn() - establishing outgoing connection to: %s", lp->destination); tmxr_debug_connect_line (lp, msg); - lp->connecting = sim_connect_sock (lp->destination, "localhost", NULL); + lp->connecting = sim_connect_sock_ex (lp->datagram ? lp->port : NULL, lp->destination, "localhost", NULL, lp->datagram); } } @@ -1204,7 +1206,7 @@ if ((lp->destination) && (!lp->serport)) { if ((!lp->modem_control) || (lp->modembits & TMXR_MDM_DTR)) { sprintf (msg, "tmxr_reset_ln_ex() - connecting to %s", lp->destination); tmxr_debug_connect_line (lp, msg); - lp->connecting = sim_connect_sock (lp->destination, "localhost", NULL); + lp->connecting = sim_connect_sock_ex (lp->datagram ? lp->port : NULL, lp->destination, "localhost", NULL, lp->datagram); } } tmxr_init_line (lp); /* initialize line state */ @@ -1382,7 +1384,7 @@ if (lp->mp && lp->modem_control) { /* This API ONLY works on mo sprintf (msg, "tmxr_set_get_modem_bits() - establishing outgoing connection to: %s", lp->destination); tmxr_debug_connect_line (lp, msg); - lp->connecting = sim_connect_sock (lp->destination, "localhost", NULL); + lp->connecting = sim_connect_sock_ex (lp->datagram ? lp->port : NULL, lp->destination, "localhost", NULL, lp->datagram); } } } @@ -1900,6 +1902,8 @@ if (nbytes) { /* >0? write */ lp->txbpr = 0; lp->txcnt = lp->txcnt + sbytes; /* update counts */ nbytes = nbytes - sbytes; + if ((nbytes == 0) && (lp->datagram)) /* if Empty buffer on datagram line */ + lp->txbpi = lp->txbpr = 0; /* Start next packet at beginning of buffer */ } if (sbytes < 0) { /* I/O Error? */ lp->txbpi = lp->txbpr = 0; /* Drop the data we already know we can't send */ @@ -2012,7 +2016,7 @@ char tbuf[CBUFSIZE], listen[CBUFSIZE], destination[CBUFSIZE], SOCKET sock; SERHANDLE serport; char *tptr = cptr; -t_bool nolog, notelnet, listennotelnet, unbuffered, modem_control, loopback; +t_bool nolog, notelnet, listennotelnet, unbuffered, modem_control, loopback, datagram; TMLN *lp; t_stat r = SCPE_ARG; @@ -2031,6 +2035,7 @@ while (*tptr) { memset(port, '\0', sizeof(port)); memset(option, '\0', sizeof(option)); nolog = notelnet = listennotelnet = unbuffered = loopback = FALSE; + datagram = mp->datagram; if (line != -1) notelnet = listennotelnet = mp->notelnet; modem_control = mp->modem_control; @@ -2100,6 +2105,18 @@ while (*tptr) { modem_control = TRUE; continue; } + if ((0 == MATCH_CMD (gbuf, "DATAGRAM")) || (0 == MATCH_CMD (gbuf, "UDP"))) { + if ((NULL != cptr) && ('\0' != *cptr)) + return SCPE_2MARG; + notelnet = datagram = TRUE; + continue; + } + if ((0 == MATCH_CMD (gbuf, "STREAM")) || (0 == MATCH_CMD (gbuf, "TCP"))) { + if ((NULL != cptr) && ('\0' != *cptr)) + return SCPE_2MARG; + datagram = FALSE; + continue; + } if (0 == MATCH_CMD (gbuf, "CONNECT")) { if ((NULL == cptr) || ('\0' == *cptr)) return SCPE_ARG; @@ -2114,21 +2131,24 @@ while (*tptr) { strncpy (hostport, cptr, sizeof(hostport)-1); if ((cptr = strchr (hostport, ';'))) *(cptr++) = '\0'; - sock = sim_connect_sock (hostport, "localhost", NULL); - if (sock != INVALID_SOCKET) - sim_close_sock (sock, 0); - else - return SCPE_ARG; if (cptr) { get_glyph (cptr, cptr, 0); /* upcase this string */ if (0 == MATCH_CMD (cptr, "NOTELNET")) notelnet = TRUE; else if (0 == MATCH_CMD (cptr, "TELNET")) - notelnet = FALSE; + if (datagram) + return SCPE_ARG; + else + notelnet = FALSE; else return SCPE_ARG; } + sock = sim_connect_sock_ex (NULL, hostport, "localhost", NULL, datagram); + if (sock != INVALID_SOCKET) + sim_close_sock (sock, 0); + else + return SCPE_ARG; cptr = hostport; } strcpy(destination, cptr); @@ -2231,7 +2251,7 @@ while (*tptr) { } } } - if (listen[0]) { + if ((listen[0]) && (!datagram)) { sock = sim_master_sock (listen, &r); /* make master socket */ if (r != SCPE_OK) return r; @@ -2306,7 +2326,16 @@ while (*tptr) { } } else { - sock = sim_connect_sock (destination, "localhost", NULL); + lp->datagram = datagram; + if (datagram) { + if (listen[0]) { + lp->port = (char *)realloc (lp->port, 1 + strlen (listen)); + strcpy(lp->port, listen); /* save port */ + } + else + return SCPE_ARG; + } + sock = sim_connect_sock_ex (datagram ? listen : NULL, destination, "localhost", NULL, datagram); if (sock != INVALID_SOCKET) { _mux_detach_line (lp, FALSE, TRUE); lp->destination = (char *)malloc(1+strlen(destination)); @@ -2370,7 +2399,7 @@ while (*tptr) { lp->txlog = NULL; } } - if (listen[0]) { + if ((listen[0]) && (!datagram)) { if ((mp->lines == 1) && (mp->master)) /* single line mux can have either line specific OR mux listener but NOT both */ return SCPE_ARG; sock = sim_master_sock (listen, &r); /* make master socket */ @@ -2409,7 +2438,16 @@ while (*tptr) { } } else { - sock = sim_connect_sock (destination, "localhost", NULL); + lp->datagram = datagram; + if (datagram) { + if (listen[0]) { + lp->port = (char *)realloc (lp->port, 1 + strlen (listen)); + strcpy(lp->port, listen); /* save port */ + } + else + return SCPE_ARG; + } + sock = sim_connect_sock_ex (datagram ? listen : NULL, destination, "localhost", NULL, datagram); if (sock != INVALID_SOCKET) { _mux_detach_line (lp, FALSE, TRUE); lp->destination = (char *)malloc(1+strlen(destination)); @@ -3673,7 +3711,10 @@ if (ln >= 0) if ((lp->sock) || (lp->connecting)) { /* tcp connection? */ if (lp->destination) /* remote connection? */ - fprintf (st, "Connection to remote port %s\n", lp->destination);/* print port name */ + if (lp->datagram) + fprintf (st, "Datagram Connection from %s to remote port %s\n", lp->port, lp->destination);/* print port name */ + else + fprintf (st, "Connection to remote port %s\n", lp->destination);/* print port name */ else /* incoming connection */ fprintf (st, "Connection from IP address %s\n", lp->ipad); } @@ -3689,7 +3730,7 @@ if (lp->sock) { free (peername); } -if (lp->port) +if ((lp->port) && (!lp->datagram)) fprintf (st, "Listening on port %s\n", lp->port); /* print port name */ if (lp->serport) /* serial connection? */ diff --git a/sim_tmxr.h b/sim_tmxr.h index e8c08f35..13d0667c 100644 --- a/sim_tmxr.h +++ b/sim_tmxr.h @@ -114,7 +114,7 @@ struct tmln { int32 tsta; /* Telnet state */ int32 rcve; /* rcv enable */ int32 xmte; /* xmt enable */ - int32 dstb; /* disable Tlnt bin */ + int32 dstb; /* disable Telnet binary mode */ t_bool notelnet; /* raw binary data (no telnet interpretation) */ int32 rxbpr; /* rcv buf remove */ int32 rxbpi; /* rcv buf insert */ @@ -151,6 +151,7 @@ struct tmln { char *destination; /* Outgoing destination address:port */ t_bool loopback; /* Line in loopback mode */ t_bool halfduplex; /* Line in half-duplex mode */ + t_bool datagram; /* Line is datagram packet oriented */ int32 lpbpr; /* loopback buf remove */ int32 lpbpi; /* loopback buf insert */ int32 lpbcnt; /* loopback buf used count */ @@ -176,6 +177,7 @@ struct tmxr { uint32 last_poll_time; /* time of last connection poll */ t_bool notelnet; /* default telnet capability for incoming connections */ t_bool modem_control; /* multiplexer supports modem control behaviors */ + t_bool datagram; /* Lines are datagram packet oriented */ }; int32 tmxr_poll_conn (TMXR *mp);