*** Instructions, how to fill a PDP-11 memory over blinkenlight console *** Generated by PDP11GUI v 1.33.0.1552 (debug), 29.11.2011 21:32:45 *************** Memory content to dump ********************** 1 2 .title Console serial port 3 4 ; http://www.psych.usyd.edu.au/pdp-11/hints.html 5 ; Any DL-11 style serial port (including the console) can be simply 6 ; tested by depositing 060 (octal) into its 'transmitter buffer ', 7 ; 0777566 in the case of the console. A '0' should appear on the 8 ; console. If it is anything else, check the baud rate settings. 9 ; 10 ; To check the input register, press the '0', then examine the 11 ; receive register 0777562 and it should contain 060. 12 ; 13 ; Needles to say, if you are using any of the Qbus processors, 14 ; or a PDP11/24, /44, /84 or /94 then you need the serial console 15 ; working to do anything. 16 ; 17 ; As simple serial echo test would be:- 18 19 .asect 20 21 177560 kbs = 177560 22 23 24 001000 .=1000 25 26 start: 27 001000 012700 177560 mov #kbs, r0 28 29 001004 105710 wait: tstb (r0) ; character received? 30 001006 100376 bpl wait ; no, loop 31 001010 016060 000002 000006 mov 2(r0),6(r0) ; transmit data 32 33 001016 000772 br wait ; get next character 34 35 ; Note:- PDP11 guru's will notice that I don't test for 36 ; transmitter ready, as there is little point given that you 37 ; cannot type fast enough for it to overrun! 37 ************************************************************* Phase 1 - Preparation --------------------- - Set all switches to normal position. - Set HALT/RUN switch to HALT position. - Power ON. - Perform a lamp test. - Machines like PDP-11/70: Set upper rotary switch to "CONS PHY" and lower rotary switch to "DATA PATH". Phase 2 - Enter data -------------------- Step 2.1 To do: Initalize current address to 001000 How: Set all switches DOWN, then switch 9 UP. Then press LOAD ADRS. Check: LED display = _ ___ __ __ ___ __ __ ___ __ __ ___ __ __ ___ __ __ _ ADDRESS [_._|_.__.__._|_.__.__O_|_.__.__._|_.__.__._|_.__.__._] 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Step 2.2 To do: Fill memory at address 001000 with value 012700 How: Set all switches DOWN, then switches 12,10,8-6 UP. Then raise DEP. Check: LED display = _ ___ __ __ ___ __ __ ___ __ __ ___ __ __ ___ __ __ _ ADDRESS [ . | . . . | . . O | . . . | . . . | . . . ] DATA [_._|_.__.__O_|_.__O__._|_O__O__O_|_.__.__._|_.__.__._] 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Step 2.3 To do: Fill memory at address 001002 with value 177560 How: Set all switches DOWN, then switches 15-8,6-4 UP. Then raise DEP. Check: LED display = _ ___ __ __ ___ __ __ ___ __ __ ___ __ __ ___ __ __ _ ADDRESS [ . | . . . | . . O | . . . | . . . | . O . ] DATA [_O_|_O__O__O_|_O__O__O_|_O__.__O_|_O__O__._|_.__.__._] 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Step 2.4 To do: Fill memory at address 001004 with value 105710 How: Set all switches DOWN, then switches 15,11,9-6,3 UP. Then raise DEP. Check: LED display = _ ___ __ __ ___ __ __ ___ __ __ ___ __ __ ___ __ __ _ ADDRESS [ . | . . . | . . O | . . . | . . . | O . . ] DATA [_O_|_.__.__._|_O__.__O_|_O__O__O_|_.__.__O_|_.__.__._] 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Step 2.5 To do: Fill memory at address 001006 with value 100376 How: Set all switches DOWN, then switches 15,7-1 UP. Then raise DEP. Check: LED display = _ ___ __ __ ___ __ __ ___ __ __ ___ __ __ ___ __ __ _ ADDRESS [ . | . . . | . . O | . . . | . . . | O O . ] DATA [_O_|_.__.__._|_.__.__._|_.__O__O_|_O__O__O_|_O__O__._] 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Step 2.6 To do: Fill memory at address 001010 with value 016060 How: Set all switches DOWN, then switches 12-10,5-4 UP. Then raise DEP. Check: LED display = _ ___ __ __ ___ __ __ ___ __ __ ___ __ __ ___ __ __ _ ADDRESS [ . | . . . | . . O | . . . | . . O | . . . ] DATA [_._|_.__.__O_|_O__O__._|_.__.__._|_O__O__._|_.__.__._] 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Step 2.7 To do: Fill memory at address 001012 with value 000002 How: Set all switches DOWN, then switch 1 UP. Then raise DEP. Check: LED display = _ ___ __ __ ___ __ __ ___ __ __ ___ __ __ ___ __ __ _ ADDRESS [ . | . . . | . . O | . . . | . . O | . O . ] DATA [_._|_.__.__._|_.__.__._|_.__.__._|_.__.__._|_.__O__._] 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Step 2.8 To do: Fill memory at address 001014 with value 000006 How: Set all switches DOWN, then switches 2-1 UP. Then raise DEP. Check: LED display = _ ___ __ __ ___ __ __ ___ __ __ ___ __ __ ___ __ __ _ ADDRESS [ . | . . . | . . O | . . . | . . O | O . . ] DATA [_._|_.__.__._|_.__.__._|_.__.__._|_.__.__._|_O__O__._] 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Step 2.9 To do: Fill memory at address 001016 with value 000772 How: Set all switches DOWN, then switches 8-3,1 UP. Then raise DEP. Check: LED display = _ ___ __ __ ___ __ __ ___ __ __ ___ __ __ ___ __ __ _ ADDRESS [ . | . . . | . . O | . . . | . . O | O O . ] DATA [_._|_.__.__._|_.__.__._|_O__O__O_|_O__O__O_|_.__O__._] 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Phase 3 - Verify data --------------------- Step 3.1 - 3.9 To do: Read the memory again and verify content. How: Repeat steps 2.1. - 2.9., but press the EXAM switch instead of raising DEP. Check: The LED patterns must be look like shown above. Phase 4 - Program control ------------------------- Step 4.1 To do: Set program start address to 001000 How: Set all switches DOWN, then switch 9 UP. Then press LOAD ADRS. Check: LED display = _ ___ __ __ ___ __ __ ___ __ __ ___ __ __ ___ __ __ _ ADDRESS [_._|_.__.__._|_.__.__O_|_.__.__._|_.__.__._|_.__.__._] 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Step 4.2 To do: Reset UNIBUS and start CPU How: Set ENABLE/HALT switch to the ENABLE position. Depress and release the START switch. Check: RUN LED goes ON. Step 4.3 To do: HALT, single step and continue CPU How: To halt a running program, set ENABLE/HALT switch to the HALT position. Check: Run LED goes OFF. How: To single step, leave ENABLE/HALT in HALT position, and press CONT for each program step. How: To start the program again, set ENABLE/HALT switch to ENABLE. Check: Run LED goes ON.