Testing
Software
Test Bed
Miscellaneous
Blogs
|
|
|
The main goal has been to get
BSD2.9
running a Micro PDP-11/23 Plus.
-
-
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:
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.
-
-
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
-
-
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.
-
-
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
-
-
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.
-
-
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.
-
-
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-A | A | B | C | D |
| slot one | empty |
| slot two | KDF11-BA |
| slot three | MSV11-PL |
| slot four | RLV12 |
| slot five | empty | RQDX3 |
| 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:
-
-
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-A | A | B | C | D |
| slot one | KDF11-BA |
| slot two | MSV11-PL |
| slot three | MSV11-PK |
| slot four | RLV12 |
| slot five | empty | RQDX3 |
| 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
-
-
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
|
|
|