I've Done All The Dumb Things

57 views
Skip to first unread message

Unibus

unread,
Nov 3, 2025, 6:34:02 PMNov 3
to [PiDP-1]
Hi,

I have a PiDP-1 Rack with USB for Tape I/O, keyboard and mouse. Attached is a video capture of go,[tab]lac x[return]lup,[tab]cma[return][tab]sar 4s[return] i.e code taken from the Programming the DEC PDP-1 web page.

Some problems:-
  • First Tab on line 3 (before the sar 4s) has gone.  Text is shown at the 1 minute mark of the vidro with missing tab. If I had typed [space][tab] it would've tabbed correctly for the instruction. 
  • Punched a tape to the USB stick with Sense Switch 6 up (on). On readback after moving the USB stick from the punch to the reader slot with switch 6 up (on) I received parity errors.
  • When punching to the USB stick there were two installed (Reader and Punch). On readback only one USB stick (after move from punch to reader) and no files created.
  • I double checked the USB assignments and they were OK.
  • There were a couple of hidden files on the USBs from the manufacturer. Reformatted the USB sticks and a punch file was produced. Still had parity issues on the read.
What have I done wrong this time?

Regards,
Garry
Capture - PiDP-1 TAB Failures-4.mp4

Unibus

unread,
Nov 30, 2025, 12:23:07 AM (3 days ago) Nov 30
to [PiDP-1]
Hi,

Just out of curiosity I wanted to disassemble the Expensive Typewriter code to try to work out the problems I'm having with reading and punching text. The first section of tape didn't visually appear to match the disassembled code. Binary code values of the tape was:-
32
77
51
73
00
02
32
77
52
32
77
51
Converting to 18-bits
327751
730002
327752
327751
Translates to
 Memory   Memory
Address  Contents
   7751     730002 
      7752
 
   

Matthias Barthel

unread,
Nov 30, 2025, 2:50:07 AM (3 days ago) Nov 30
to Unibus, [PiDP-1]
Hi,

This is on every rim-file the beginning. This is the rim-loader. The rim-loader ends with 2 jmp-codes, then comes the the start address and the end address from the first program block. It looks like 320100 and 320150, this is followed by the first lines of the program.

On linux you can easily view the bits octal with the xxd command .

Here you can see the code of the rim-loader : https://bitsavers.org/bits/DEC/pdp1/papertapeImages/utils/dmpRIM.c

Matthias 

--
You received this message because you are subscribed to the Google Groups "[PiDP-1]" group.
To unsubscribe from this group and stop receiving emails from it, send an email to pidp-1+un...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/pidp-1/CAHDxiR6%3DQP9QgfrZ5e31SOJz0kjah3a_O46J9UY_DVyVZCcfVQ%40mail.gmail.com.

Bill E

unread,
Nov 30, 2025, 7:07:45 AM (3 days ago) Nov 30
to [PiDP-1]
And here it is, annotated. You can also look at tapes with my disassembler, included in the regular distribution, which is more informative than an octal dump.
* BIN loader that is typically loaded by an initial RIM: (digital-1-3-s-mb_ddt.bin)
 *
 * 7751: 730002 rpb          read tape
 * 7752: 327760 dio 7760     will be a 'dio startaddr' or a 'jmp progstart', deposit to 7760
 * 7753: 107760 xct 7760     execute what we just read; if a jmp, we're done otherwise it's meaningless
 * 7754: 327776 dio 7776     initialize checksum
 * 7755: 730002 rpb          read tape
 * 7756: 327777 dio 7777     deposit to 7777, will be 'dio endaddr + 1'
 * 7757: 730002 rpb          read tape, top of loading loop
 * 7760: 60aaaa dio cur_addr put word in current pc location
 * 7761: 217760 lac i 7760   add the word we stored to the checksum
 * 7762: 407776 add 7776     add to checksum
 * 7763: 247776 dac 7776     update checksum
 * 7764: 447760 idx 7760     7760++, makes the dio point to the next adress to store in
 * 7765: 527777 sas 7777     skip if AC == 'dio endaddr + 1'
 * 7766: 607757 jmp 7757     not done, loop
 * 7767: 207776 lac 7776     add 'dio endaddr + 1' to checksum
 * 7770: 407777 add 7777     the computed checksum is is now in the AC
 * 7771: 730002 rpb          read tape, is checksum from tape
 * 7772: 327776 dio 7776     deposit to 7776
 * 7773: 527776 sas 7776     skip if AC == 7776
 * 7774: 760400 hlt          bad checksum
 * 7775: 607751 jmp 7751     ready for another block or a jmp, back to top
 * 7776: checksum
 * 7777: 32aaaa     dio endaddr + 1
 *
Bill
Reply all
Reply to author
Forward
0 new messages