   1            /               MINIMAL PDP-8 BOOTSTRAP PROGRAM (RX)
   2            /
   3            / Taken from a manual for an 8/e disk subsystem built by DSD;
   4            / shorter and easier to toggle in than DECs bootstrap.
   5            
   6            / The following is a minimal length boot program for both
   7            / the RX01 and RX02.  This boot tries only the specified
   8            / drive with the specified density.  Start at location 32 to
   9            / BOOT drive 0.  Start at location 22 to boot drive 1.
  10            / This has been verified to work with an OS/8 diskette.
  11            
  12            / the contents of locations 60 and 61 can be fudged to
  13            / change what disk and what density are used.
  14            
  15            / configuration section
  16            
  17            IOTADR=0750             / default system drive is at IOT 75
  18            
  19            DRIVE0=0000
  20            DRIVE1=0020
  21            DRIVE=DRIVE0            / set to either DRIVE0 or DRIVE1
  22            
  23            SINGLE=0000
  24            DOUBLE=0400
  25            DENSTY=SINGLE           / set to either SINGLE or DOUBLE
  26            
  27            / RX01 and other opcode definitions
  28            
  29            LCD=6001+IOTADR
  30            XDR=6002+IOTADR
  31            STR=6003+IOTADR
  32            SDN=6005+IOTADR
  33            
  34            NL001=CLA CLL IAC
  35            NL002=CLA CLL CML RTL / VRS was IAC RAL
  36            NL006=CLA CLL CML IAC RTL
  37            
  38            / THIS SECTION IS NEEDED ONLY WHEN BOOTING FROM DRIVE 1.
  39            / READS IN SECTOR 1 TRACK 1 ON DRIVE O OR 1.
  40            / VRS Because of the NL006, this also won't work on the straight-8.
  41            *22
  42 00022 6755 BOTDV1, SDN             /START HERE TO BOOT DRIVE 1.
  43 00023 7000         NOP             /SKIP THIS WHEN CLEARING FLAG
  44 00024 7327         NL006           /SET AC=6
  45 00025 1061         TAD  UNIT       /MAKE INTO READ SECTOR COMMAND
  46 00026 6751         LCD             /COMMAND = CONTROLLER
  47 00027 7301         CLA CLL IAC     /SET AC TO 1 FOR SECTOR, TRACK
  48 00030 4053         JMS  LOAD       /SEND SECTOR TO CONTROLLER
  49 00031 4053         JMS  LOAD       /SEND TRACK TO CONTROLLER
  50            / DOES NOT USE LOCATIONS 22-31 WHEN STARTED AT 32
  51            
  52            / START HERE TO BOOT DRIVE 0 (ASSUME MASTER CLEAR HAS
  53            / READ DRIVE 0 TRACK 1 SECTOR 1 FOR YOU).
  54            
  55            *32
  56 00032 7326 BOTDV0, NL002           / MAKE EMPTY BUFFER COMMAND
  57 00033 6755 CHKFLG, SDN             / WAIT FOR DONE FLAG UP
  58 00034 5054         JMP     LOAD+1  / NO - CHECK FOR READY TRANSFER
  59 00035 1061         TAD     UNIT    / YES-PUT IN READ UNIT, DENSITY
  60 00036 6751         LCD             / SEND EMPTY BUFFER COMMAND
  61 00037 5047         JMP     BOTLP   / START TO LOAD SECTOR BUFFER
  62            
  63            *47     /////////////////
  64            
  65 00047 4053 BOTLP,  JMS     LOAD    / READ NEXT WORD FROM SILO
  66 00050 3002         DCA     2       / START LOADING AT LOC. 2
  67 00051 2050         ISZ     .-1     / BUMP LOAD ADDRESS
  68 00052 5047         JMP     BOTLP   / CONTINUE EMPTYING BUFFER
  69            /
  70 00053 0000 LOAD,   .-.             / DATA TRANSFER SUBROUTINE
  71 00054 6753         STR             / SKIP IF CONTROLLER WILL SPEAK
  72 00055 5033         JMP     CHKFLG  / NO - CHECK IF FINISHED
  73 00056 6752         XDR             / TRANSFER DATA IN OR OUT
  74 00057 5453         JMP I   LOAD    / RETURN TO CALLER
  75            /
  76 00060 7004         7004+DRIVE      / USED BY SECONDARY BOOT
  77                                    / TO SELECT DRIVE 0 OR DRIVE 1
  78 00061 0000 UNIT,   DENSTY+DRIVE    / WHAT TRANSPORT, WHAT DENSITY?
  79            $
