PC Paper Tape or Teletype
The paper tape bootstrap is a two stage process. First the bootstrap loader must be toggled in at the appropriate location (set table for xx). A special bootstrap tape (Absolute Loader) must be in the reader with the leader (punch 351) in the read frame. The program is then started at location xx7744. The program is self-modifying, so if you read the wrong tape, or position it incorrectly, it will corrupt itself. The program will halt when the last frame of the loader is read. Put in the tape you want loaded (on blank leader) and press continue or start at xx7500Loc. Cont. Label Instruction Comment ================================================ xx7744 016701 mov device,r1 get csr address xx7746 000026 xx7750 012702 loop: mov #offset,r2 get offset xx7752 000352 offset: xx7754 005211 inc (r1) read frame xx7756 105711 wait: tstb (r1) wait for ready xx7760 100376 bpl wait xx7762 116162 movb (r1),bnk(r2) store data xx7764 000002 xx7766 xx7400 xx7770 005267 inc offset bump address xx7772 177756 xx7774 000765 br loop xx7776 177550 device: HSR csr, or 177560 for teletype Where xx Memory Size =========================== 017744 4k 037744 8K 057744 12K 077744 16k 117744 20k 137744 24k 157744 28k
All these bootstraps (except paper tape) are designed to read in 512 bytes into locations 0-776, and then start program execution at 0. If you are having system problems, then it pays to have the bootstrap halt, so that you can check for error conditions in device registers.
The first serious program I studied in 1973, a bootstrap loader for a PDP-11 Clone called TDC-16. I am showing this because I could not locate the TDC16 version.
For a long time we were trying hard to shave off one instruction. I think some one did it but it was a hack.
PDP-11 had a CSR – Command Status Register and a data register. You set the command bits in the CSR and checked the status bit (in CSR) and read the data from the data register.
In the case of DMA devices, you just set the address for data transfer and initiate your command (you need not move the data manually since the direct memory access controller would transfer it to the set of locations).
Why is this beautiful? Because I fell in love with programming when I read this little program that did so much and the simple elegance of PDP-11 instruction set.
I remained an assembly language programmer from 1972-1984 even though around 79 we started doing Basic-Plus, Cobol and an open source C in 1983-84.