Bridlewood Software Testers Guild


Testing
 Tools
 Problem Reports
 Techniques

Software
 VAX patches
 SIMH scripts

Test Bed
 Micro PDP 11/23
 Micro PDP 11/53
 Micro VAX
 SIMH VAX 11/780
 
 free stuff
 terminals
 cabinets

Miscellaneous
 Apiary Tour
 Vegetarian Recipes

Blogs
 ba23.org
 kirk
 all

Micro PDP-11 23

The main goal has been to get BSD2.9 running a Micro PDP-11/23 Plus.

ba23 image

create RX50 XXDP boot floppy

I used putr.com to initialize a RX50 floppy diskette on a PC. The PC has a 3.5" floppy drive as a: and a 5.25" HD drive as b:
  • format a 5.25" DS/DD floppy -- same floppies I used on an apple2
    		format b: /foreign /rx50
    
  • to make a copy of the formated image for the simh emulator
    		mount b: /foreign /rx50
    		copy/dev/file b: rx50.bin
    
  • the formated floppy was initialized with the byte 0xE5 -- you can use dt to create the same image for the simh emulator , without using putr.com
    		dt of=rx50.img limit=400k pattern='\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5' dispose=keep disable=stats
    

Boot XXDP V2.5 in the the simh emulator to create a boot floppy image.

	$ bin/simhxxdp 
	 
	PDP-11 simulator V2.10-4 

	 BOOTING UP XXDP-XM EXTENDED MONITOR

	XXDP-XM EXTENDED MONITOR - XXDP V2.5 
	REVISION: F0 
	BOOTED FROM DL0 
	124KW OF MEMORY 
	NON-UNIBUS SYSTEM 
	 
	RESTART ADDRESS: 152000 
	TYPE "H" FOR HELP ! 
	 
	.INIT DU0: 
	USER DATA ON DU0 WILL BE DESTROYED ! 
	PROCEED?(Y/N/CR=N)Y 
	 
	.R UPDAT 
	UPDAT .BIC 
	 
	UPDAT - XXDP V2 UPDATE UTILITY REVISION G 
	RESTART: 004140 
	 
	*CREATE DU0: 
	 
	*EXIT 
	 
	.COPY ZRQ???.BIN DU0: 
	ZRQAH0.BIN      
	ZRQBC1.BIN      
	ZRQCH0.BIN      
	ZRQDA0.BIN      
	ZRQGC0.BIN      
	 
	.COPY DRSSM?.SYS DU0: 
	DRSSM .SYS      
	 
	.COPY DATE.SYS DU0: 
	DATE  .SYS      
	 
	.COPY DIR.SYS DU0: 
	DIR   .SYS      
	 
	.COPY XXDPXM.SYS DU0: 
	XXDPXM.SYS      
	 
	.COPY HELP.TXT DU0: 
	HELP  .TXT      
	 
	.COPY DUSZ.SYS DU0: 
	DUSZ  .SYS      
	 
	.COPY DU.SYS DU0: 
	DU    .SYS      
	 
	.DIR DU0: 
	 
	ENTRY# FILNAM.EXT        DATE          LENGTH  START   VERSION 

		1  ZRQAH0.BIN       1-MAR-89         67    000067 
		2  ZRQBC1.BIN       1-MAR-89         20    000172 
		3  ZRQCH0.BIN       1-MAR-89         72    000216 
		4  ZRQDA0.BIN       1-MAR-89         71    000326 
		5  ZRQGC0.BIN       1-MAR-89         74    000435 
		6  DRSSM .SYS       1-MAR-89         24    000547   G.2 
		7  DATE  .SYS       1-MAR-89          2    000577   B.0 
		8  DIR   .SYS       1-MAR-89          7    000601   D.0 
		9  XXDPXM.SYS       1-MAR-89         39    000610   F.0 
	   10  HELP  .TXT       1-MAR-89         29    000657 
	   11  DUSZ  .SYS       1-MAR-89          2    000714   C.0 
	   12  DU    .SYS       1-MAR-89          4    000716   E.0 

	FREE BLOCKS:   334 

	 
	. 
	Simulation stopped, PC: 112446 (BEQ 112440) 
	sim> q 
	Goodbye 
	$  

I then took the new XXDP boot floppy image and copied it back to the formated floppy diskette using putr.com

		mount b: /foreign /rx50
		copy/file/dev nrx50.bin b:

Boot off this floppy, on the 11/23, to format MFM drives with the RQDX1 and RQDX3 controllers.

format RD31

The RD31 drive was originally used in a PC. Before using in a BA23 enclosure, change the drive select from 1 to 3 and make sure the drive is terminated.

If I had the correct software, I could have use either the Micro VAX or the 11/23 to format the drive. I have to use XXDP, on the 11/23, to format the RD31 drive because I do not have access to a VS2000/MV2000 or a MDM tape. I created a RX50 XXDP boot floppy with the RQDX3 diagnostic programs -- it appears to work fine.

I am not really worried about the interleave factor -- a working drive is a higher priority. I do assume that XXDP would pick an optimal interleave factor for the RQDX3 controller. I ignored the manufacturing bad block information, listed on the drive's label. I have no idea how to translate this info into something that XXDP can use. Does the manufacturer start counting at zero or one -- having a off-by-one error seems to be very possible. For now, I will have to hope that the bad block replacement diagnostics will find these bad blocks and any new bad blocks that appeared in the last 15+ years.

I had assumed that the RQDX3 would require extra software to do the bad block replacement because the RQDX3 might not have the firmware to do the bad block replacement by itself. So, I was looking for some extra software (not a whole OS), like RABADS/EVRLK/MDM, to do the bad block replacement. But my assumption here proved to be wrong! Before booting NetBSD, on the Micro VAX , there were 57 replacement blocks used. After using dt to exercise the drive for a few hours, the replacement blocks used grew to 60. So, the RQDX3 must be doing bad block replacement by itself -- no OS support (or extra utilities) required. But I would guess that a specialized utility, with RQDX3 hardware support, could do the bad block replacement diagnostics alot faster. For now, I will just exercise the disk and see what happens.

  • change drive select to 3 and install drive (double check the cables are connected correctly)
  • boot the 11/23 off the XXDP boot floppy
  • run ZRQC??.BIN the first time
    • reply "N" do to autoformat mode
    • reply "N" to manufacturing bad block info
    • reply "N" to revector known bad blocks
  • run ZRQG??.BIN to see how many bad blocks were found
  • run ZRQC??.BIN again (and again) to find more bad blocks
    • reply "N" do to autoformat mode
    • reply "N" to manufacturing bad block info
    • reply "Y" to revector known bad blocks -- it appears the known bad blocks are saved and additional bad blocks can be discovered
  • install the RD31 in a Micro VAX
    • boot NetBSD
    • run dt for four days with the RQDX3 controller
      		dt of=/dev/ra0c limit=41560b flags=sync passes=300
      
    • if you get no errors, then I would assume the drive is ready for use
      Total Statistics: 
               Output device/file name: /dev/ra0c (device type=block)
               Type of I/O's performed: sequential (forward)
             Data pattern read/written: 0x39c39c39
               Total records processed: 24936000 @ 512 bytes/record (0.500 Kbytes)
               Total bytes transferred: 12767232000 (12468000.000 Kbytes, 12175.781 Mbytes)
                Average transfer rates: 36524 bytes/sec, 35.668 Kbytes/sec
               Number I/O's per second: 71.336
                Total passes completed: 300/300
                 Total errors detected: 0/1
                    Total elapsed time: 97h05m54.77s
                     Total system time: 11h11m16.11s
                       Total user time: 35h22m42.12s
                         Starting time: Wed Aug 11 21:48:45 2004
                           Ending time: Sun Aug 15 22:54:40 2004
      

BA23 line clock enable

I found that BSD2.9 was not working. It appears that the clock interrupt was not happening. When I reset the jumpers , BSD2.9 started to work correctly.

damaged dumpster Micro PDP-11

This BA23 was thrown into a trash bin. The rocker switch has been pushed back into the enclosure. Originally was a Micro PDP-11/23 Plus. I used it as a source of spare parts to repair the other micros. The enclosure is no longer operational:
  • outer metal case is warped
  • power supply appears to have blown a fuse
  • rocker switch has been crushed
  • control panel circuit board appears partially damaged
  • signal distribution circuit board (behind the Q22 backplane) has a broken pin on the diskette drive connector

working dumpster Micro PDP-11

This BA23 was also thrown into a trash bin, but appears to be in good shape. Originally was a Micro PDP-11/23 Plus. I usually run this BA23 as a Micro VAX with a RQDX1 to control the RX50 floppy drive.

MFM drives

I found three MFM drives at a local hardware surplus. They all were originally used in a PC.

ST-251
Equivalent to a RD32. Drive powers on okay, but makes funny noises when you do a head seek. I consider the drive to be dead.
ST-225
Equivalent to a RD31. Drive powers on okay, but has too many bad blocks. At last count, it used 100 replacement blocks, which is the limit using the XXDP ZRQC??.BIN formatter. I assume the drive is not useable.
Miniscribe 3425
Same drive geometry as the RD31. This drive appears to be fully functional.

Micro PDP-11

Arrived with RL02 drives and the following boards -- KDF11-BA, MSV11-PL, RLV12 and a RQDX1. This is the system I want to repair and to run BSD2.9, with a MFM drive.

  • replaced the RQDX1 with a RQDX3
  • verify the LTC is enabled
  • board order:
    H9278-AABCD
    slot one empty
    slot two KDF11-BA
    slot three MSV11-PL
    slot four RLV12
    slot five emptyRQDX3
    slot six empty
    slot seven empty
    slot eight empty
  • formatted the Miniscribe 3425 as a RD31 and verified the drive -- record the number of 1024 byte blocks your drive actually has
  • install BSD2.9 -- if the number of recorded 1024 byte blocks is not 22104, then redo the mkfs calculations
  • setup the floppy drive device, the second SLU device and work-a-round date .

Appears to work, but I require more drive space:


	KDF11B-BE ROM V0.8

	  256KW MEMORY
	9 STEP MEMORY TEST
	  STEP 1 2 3 4 5 6 7 8 9
	TOTAL MEMORY ERRORS =     0
	CLOCK ENABLED

	ERR 12 NON-EXISTENT CONTROLLER
	Type ? for HELP
	Enter one of [Boot, Diagnose, Help, List, Map]:b

	Type ? for a list of devices
	Enter device name:du0

	BOOTING FROM DU0IB
	[...  ra(0,0)unix ...]

	Berkeley Unix 2.9BSD

	:login: root

	Welcome to the 2.9BSD (Berkeley) UNIX system.

	# df
	Filesystem  Mounted on  kbytes    used    free  % used
	/dev/ra0a   /             3070    1763    1307     57%
	/dev/ra0c   /usr         15032   14970      62    100%
	# cd /usr/src/sys/RA
	# make unix
	cc -V -S -O -DKERNEL -I. -I/usr/include ../sys/sys2.c
	ed - < :splfix.mtps sys2.s
	as -V - -o sys2.o sys2.s
	rm sys2.s
	[...]
	cc -V -S -O -DKERNEL -I. -I/usr/include ../sys/sys1.c
	ed - < :splfix.mtps sys1.s
	as -V - -o sys1.o sys1.s
	/usr: file system full
	/usr: write failed, file system is full
	as: write error on output
	*** Error code 2

Things left to do:

add another MSV11-P board

The first memory board is a MSV11-PL with 512-Kbyte of RAM. No CSR address and starting address jumpers should be required -- all open. After booting with only this board, the boot ROM says:
		  256KW MEMORY
		9 STEP MEMORY TEST
		  STEP 1 2 3 4 5 6 7 8 9
		TOTAL MEMORY ERRORS =     0
		[...]
		MEMORY
		Starting  Ending
		Address   Address
		00000000  01777776

The second memory board is a MSV11-PK with 256-kbyte of RAM. According to the maintenance guide , the starting address will be 02000000. Have to wrap A to E and to wrap V to Y to get the next CSR address and correct starting address. I think the partial starting address can still be open. After booting with both boards, the boot ROM says:

		  384KW MEMORY 
		9 STEP MEMORY TEST
		  STEP 1 2 3 4 5 6 7 8 9
		TOTAL MEMORY ERRORS =     0
		[...]
		Starting  Ending
		Address   Address
		00000000  02777776

But BSD 2.9 still reports the same amount of memory available -- I will have to investigate if that is hard coded in the kernel config or not:

		Berkeley UNIX (Rev. 2.9.25) Sat Aug 11 17:56:41 EDT 2001
		mem = 158720

The third memory board is a MSV11-PK with 256-kbyte of RAM. This time that partial starting address cannot be zero -- wrap B to E, wrap V to Y and wrap P to R. After booting with three MSV11 boards, I the boot ROM reports an error. Moving the boards to different slots does not change the error:

		  512KW MEMORY
		9 STEP MEMORY TEST
		  STEP 1 2 3 4
		ERR 3 MEMORY FAULT
		 ADDRESS  EXPECTED   ACTUAL
		03700004    177777   077777 
		03700020    177777   077777   
		03700034    177777   077777  
		03700050    177777   077777
		03700064    177777   077777
		03700000    177777   077777
		03700014    177777   077777
		03700030    177777   077777
		03700044    177777   077777
		03700060    177777   077777
		  STEP 5 6 7 8 9
		TOTAL MEMORY ERRORS =    64

For now, I will just use the first two MSV11 boards.

  • board order is now:
    H9278-AABCD
    slot one KDF11-BA
    slot two MSV11-PL
    slot three MSV11-PK
    slot four RLV12
    slot five emptyRQDX3
    slot six empty
    slot seven empty
    slot eight empty

Things left to do:

  • investigate the third MSV11-P errors
  • investigate why BSD 2.9 appears to hard code the available memory

terminal server issues -- 8N1 vs 7E1

I have the 11's serial console connected to a xyplex terminal server. The boot monitor uses 8N1, while UNIX uses 7E1. I was spending too much time using the xyplex CLI to change the serial port settings. I wrote a tcl/expect script to automate booting the 11, through the xyplex terminal server:

The script automates two sessions at once -- the xyplex terminal server and the 11 console:

  • setup terminal server to 8N1
  • wait until the 11 has reset
  • boot the 11 off the hard drive
  • wait until UNIX boots
  • setup terminal server to 7N1
  • give user access to the console

#!/usr/pkg/bin/expect
#
# Boot and get to bsd29 console on pdp11/23.
# This involves baud changes on the terminal server port
#
log_user 1
set timeout 30
#log_file debug.out
set send_slow { 1 .005 }

#
# connect to xyplex terminal server
#
spawn kermit -J ets8p:2000
if { $spawn_id < 0 } {
	send_user "cannot telnet to xyplex\n"; exit 1
}

#
# log into terminal server as admin
#
expect {
	"Type the escape character followed by C to get back" {
		sleep 0.5
		send -s "\r"
		exp_continue
	}

	-re "#$" {
		send -s "access\r"
		exp_continue
	}

	-re "Enter username. $" {
		send -s "pdp11user\r"
		exp_continue
	}

	-re "Xyplex. $" {
		send -s "set priv\r"
		exp_continue
	}

	-re "Password. " {
		send -s "system\r"
	}

	-re "Xyplex>> $" {
	}

	eof timeout		{
		send_user "timed out\n"; exit 1
	}
}

#
# char size needs to be 8 with parity none
#
send -s "set port 5 CHARACTER SIZE 8\r"
expect eof exit timeout {send_user "timed out\n"; exit 1} -re "Xyplex>> $"
send -s "set port 5 parity none\r"
expect eof exit timeout {send_user "timed out\n"; exit 1} -re "Xyplex>> $"

#
# push this spawn_id for later use
#
set ts_id $spawn_id

#
# connect to console using kermit
#
spawn kermit -J ets8p:2500

expect {
	"MEMORY"	{
		exp_continue
	}

	"Type the escape character followed by C to get back" {
		sleep 0.5
		send -s "\r"
		exp_continue
	}

	-re "Enter one of .Boot. Diagnose. Help. List. Map.:$" {
		send -s "b\r"
		exp_continue
	}

	-re "Enter device name:" {
		send -s "du0\r"
		exp_continue
	}

	-re ": $" {
		send "ra(0,0)unix\r"
		exp_continue
	}

	-re "Berkeley UNIX .Rev. " {
	}

	timeout		{
		send "\r"
		exp_continue
	}

	eof {
		send_user "timed out\n"; exit 1
	}
}

#
# char size needs to be 7 with parity even
#
log_user 0
set con_id $spawn_id
set spawn_id $ts_id
send -s "set port 5 CHARACTER SIZE 7\r"
expect eof exit timeout {send_user "timed out\n"; exit 1} -re "Xyplex>> $"
send -s "set port 5 parity even\r"
expect eof exit timeout {send_user "timed out\n"; exit 1} -re "Xyplex>> $"
send -s "quit\r"
expect eof exit timeout {send_user "timed out\n"; exit 1} -re "Xyplex"
close -i $spawn_id
wait -i $spawn_id
set spawn_id $con_id
log_user 1

#
# have run with bsd2.9
#
interact

Ads by PARSE

Irish Vax Wanted!

Are you looking for a good home for your Irish Vax or PDP11?

Old PDP Computers?

Are you looking for a good home for your old PDP8 computer?



www.ba23.org     web                

(Contact me) This page was updated on 2007/11/12. View Kirk Russell's profile on LinkedIn Copyright © 2004 2005 2007 Kirk J. Russell
ALL RIGHTS RESERVED.