thanks, came through to ENDB here! great explanation!
bb
On Sun, Mar 21, 2021 at 9:35 AM Rick Murphy via cctalk
<cctalk at classiccmp.org> wrote:
 On 3/20/2021 8:51 PM, Kyle Owen via cctalk wrote:
  On Sat, Mar 20, 2021 at 7:19 PM Kyle Owen
<kylevowen at gmail.com> wrote:
  However, it appears as though word count will be
hit by the loading of the
 first block. In fact, my instrumented version of SimH says it's overwritten
 with a zero. If that's the case, it would seem as though the word count
 overflow flag will never get set. Not to mention, the current address will
 be updated next, causing data to be redirected to yet another position.
 
 To continue this thought, it appears as though SimH does the following for
 a read data break:
 0. Increment WC
 1. Increment CA
 2. Compute memory address from the extended memory bits from the TC08 and CA
 3. Store the data from the tape at the memory address specified from 2.
 4. Check if WC equals zero, and handle that accordingly
 From what I can tell, both the PDP-8/E and the
PDP-8/I set the WC overflow 
 based on the carry out from the adders...so if WC
happens to be overwritten
 with a zero, a carry out will never happen in the real hardware. In SimH,
 the entire WC is tested and compared to zero. This behavior seems different.
 Kyle 
 Trying again - my reply got chopped off for some reason.
 You have to read the bootstrap code in the TC0x driver to understand this.
 What happens is that the code watches the buffer pointer (7755) and when
 it hits 7642, the remaining read is directed to field 1. The boot is
 looping on 7616/DTSF and 7617/JMP .-1 when it's overwritten by the boot
 (the NOP below overwrites the DTSF).
 The other weirdness is that a Read Data operation sets the done flag at
 the end of the block, so reading a single block means that the WC is
 unimportant. (Continuous mode reads multiple blocks as controlled by the
 WC).
 Lowercase comments below are mine.
      -Rick
 BOOT1,  TAD 7755        /this gets the buffer pointer
          TAD BM7642      /and checks if it's at 7642
          SNA CLA         /WATCH THE PROGRESS OF THE READ
          JMP BOOT2       /WHEN IT GETS PAST 7643, SWITCH TO FIELD 1
          NOP             /LOADS OVER DTSF IN 7616
          JMP BOOT1       /LOADS OVER JMP .-1 IN 7617 - STARTS BOOTSTRAP
 BOOT2,  TAD B10
          DTLB            /ZAP A 10 INTO STATUS REG B TO LOAD INTO FIELD 1
          DTSF            /FROM HERE ON - LOAD THE FIELD 1 RESIDENT INTO
 FIELD 1
          JMP .-1
 BOOT3,  DTXA            /CONTINUE READING NEXT RECORD(ALSO SEE CODE AT
 7600)
          DTLB            /INTO FIELD 0
          TAD B7577
          DCA 7755        /PAGE 7600
          DCA 7754        /here's where your zero gets set for the WC.
 BOOTX,  CDF CIF 10
          JMP 7642        /JUMP INTO WAIT LOOP IN FIELD 1
          JMP BOOT1       /DISK MONITOR FUDGE - JUMP INTO WAITING LOOP
 B7577,  7577
 B10,    10
 B600,   600
 B620,   620
          ZBLOCK  7642-.  /this gets loaded into field 1.
          DCA 7744
          DTSF            /THIS IS LOADED INTO FIELD 1 WITH MONITOR RESIDENT
          JMP .-1         /IT IS IN THE CD OUTPUT AREA AND SO WILL BE ZAPPED
          CDF CIF 0       /BY THE KEYBOARD MONITOR
 ENDB,   JMP 7605        /OK, FIELD 0 RESIDENT READ IN, START UP MONITOR