Home PDP-11/44
Unibone inside the PDP-11/44

Unibone inside the PDP-11/44

The first experiments with the Unibone in the PDP..

Placed in the but last slot because that has NPR cut. Start the machine, connect to the Unibone and start the “demo.sh” program to check memory:

Have fun with UniBone !

Last login: Sun May 21 16:30:51 2023
root@unibone:~# ./demo.sh 
iarg1=8, iarg2=15
[16:31:08.914926 Inf    APP] Printing verbose output.
demo  - QUniBone UNIBUS test application.
    Version DBG v1.5.0, compile Feb 14 2023 15:41:35.
[16:31:08.919726 Inf    APP] Registering Non-PRU GPIO pins.
[16:31:08.921075 Inf  GPIOS] GPIO0 registers at 44E07000 - 44E07FFF (size = 1000)
[16:31:08.922746 Inf  GPIOS] GPIO1 registers at 4804C000 - 4804CFFF (size = 1000)
[16:31:08.924158 Inf  GPIOS] GPIO2 registers at 481AC000 - 481ACFFF (size = 1000)
[16:31:08.925505 Inf  GPIOS] GPIO3 registers at 481AE000 - 481AEFFF (size = 1000)
[16:31:08.939466 Inf    APP] Disable DS8641 drivers.
[16:31:08.953588 Inf    APP] Leave SYSBOOT mode.


*** QUniBone UNIBUS technology demonstrator build Feb 14 2023 16:02:43

tg          Test of single non-PRU GPIO pins
tp          Test I2C paneldriver
tl          Test of IO bus latches
bs          Stimulate UNIBUS bus signals
tm          Test Bus Master: access UNIBUS address range without PDP-11 CPU arbitration
ts          Test shared DDR memory = UNIBUS memory as BUS SLAVE
ti          Test Interrupts (needs physical PDP-11 CPU)
d           Emulate devices, with PDP-11 CPU arbitration
dc          Emulate devices and CPU, PDP-11 must be disabled.
m           Full memory slave emulation with DMA bus master functions by PDP-11 CPU.
i           Info, help
q           Quit

>>>m
[16:31:10.326005 Inf    APP] Connecting to PRU.
[16:31:10.330388 Inf DDRMEM] Shared DDR memory: 4194304 bytes available, 4194304 bytes needed.
[16:31:10.330759 Inf DDRMEM]   Virtual (ARM Linux-side) address: 0xb4758000
[16:31:10.331002 Inf DDRMEM]   Physical (PRU-side) address:9d100000
[16:31:10.331234 Inf DDRMEM]   4194304 bytes of UniBone memory allocated
[16:31:10.334128 Inf    PRU] Loaded and started PRU code with id = 2
[16:31:10.438275 Inf    APP] Registering non-PRU pins.
[16:31:10.440948 Inf  GPIOS] GPIO0 registers at 44E07000 - 44E07FFF (size = 1000)
[16:31:10.443731 Inf  GPIOS] GPIO1 registers at 4804C000 - 4804CFFF (size = 1000)
[16:31:10.446135 Inf  GPIOS] GPIO2 registers at 481AC000 - 481ACFFF (size = 1000)
[16:31:10.448485 Inf  GPIOS] GPIO3 registers at 481AE000 - 481AEFFF (size = 1000)
[16:31:10.459101 Inf    APP] Disable DS8641 drivers.
[16:31:10.462364 Inf    APP] Leave SYSBOOT mode.
[16:31:10.464873 Inf    APP] Registering multiplex bus latches, initialized later by PRU code.
[16:31:10.467139 Inf    APP] Initializing device register maps.
[16:31:10.470287 Inf QUNAPT] QUnibusAdapter: Registering device Test controller
[16:31:10.476300 Inf QUNAPT] QUNIBUSADAPTER::worker(0) started
[16:31:10.479491 Inf QUNAPT] Trying to set thread realtime priority = 50
[16:31:10.482496 Inf QUNAPT] Scheduling is at RT priority.
[16:31:10.482878 Inf QUNAPT] Thread priority is 50

     UNIBUS devices are clients to PDP-11 CPU acting as NPR/INTR Arbitrator
    (CPU active, console processor inactive).
    CPU is physical or emulated.
    Memory access as Bus Master with NPR/NPG/SACK handshake.
	UniBone does not emulate memory.
***
*** Starting full UNIBUS master/slave logic on PRU
***
Device registers by IO page address:
io760200=reg[ 1] cur val=000000, writable=177777. active iopage reg with handle 1 linked to device Test controller reg[CSR]
io760202=reg[ 2] cur val=000000, writable=177777. active iopage reg with handle 2 linked to device Test controller reg[reg01]
io760204=reg[ 3] cur val=000000, writable=177777. active iopage reg with handle 3 linked to device Test controller reg[reg02]
io760206=reg[ 4] cur val=000000, writable=177777. active iopage reg with handle 4 linked to device Test controller reg[reg03]
io760210=reg[ 5] cur val=000000, writable=177777. active iopage reg with handle 5 linked to device Test controller reg[reg04]
io760212=reg[ 6] cur val=000000, writable=177777. active iopage reg with handle 6 linked to device Test controller reg[reg05]
io760214=reg[ 7] cur val=000000, writable=177777. active iopage reg with handle 7 linked to device Test controller reg[reg06]
io760216=reg[ 8] cur val=000000, writable=177777. active iopage reg with handle 8 linked to device Test controller reg[reg07]
io760220=reg[ 9] cur val=000000, writable=177777. active iopage reg with handle 9 linked to device Test controller reg[reg10]
io760222=reg[10] cur val=000000, writable=177777. active iopage reg with handle 10 linked to device Test controller reg[reg11]
io760224=reg[11] cur val=000000, writable=177777. active iopage reg with handle 11 linked to device Test controller reg[reg12]
io760226=reg[12] cur val=000000, writable=177777. active iopage reg with handle 12 linked to device Test controller reg[reg13]
io760230=reg[13] cur val=000000, writable=177777. active iopage reg with handle 13 linked to device Test controller reg[reg14]
io760232=reg[14] cur val=000000, writable=177777. active iopage reg with handle 14 linked to device Test controller reg[reg15]
io760234=reg[15] cur val=000000, writable=177777. active iopage reg with handle 15 linked to device Test controller reg[reg16]
io760236=reg[16] cur val=000000, writable=177777. active iopage reg with handle 16 linked to device Test controller reg[reg17]
io760240=reg[17] cur val=000000, writable=177777. active iopage reg with handle 17 linked to device Test controller reg[reg20]
io760242=reg[18] cur val=000000, writable=177777. active iopage reg with handle 18 linked to device Test controller reg[reg21]
io760244=reg[19] cur val=000000, writable=177777. active iopage reg with handle 19 linked to device Test controller reg[reg22]
io760246=reg[20] cur val=000000, writable=177777. active iopage reg with handle 20 linked to device Test controller reg[reg23]
io760250=reg[21] cur val=000000, writable=177777. active iopage reg with handle 21 linked to device Test controller reg[reg24]
io760252=reg[22] cur val=000000, writable=177777. active iopage reg with handle 22 linked to device Test controller reg[reg25]
io760254=reg[23] cur val=000000, writable=177777. active iopage reg with handle 23 linked to device Test controller reg[reg26]
io760256=reg[24] cur val=000000, writable=177777. active iopage reg with handle 24 linked to device Test controller reg[reg27]
io760260=reg[25] cur val=000000, writable=177777. active iopage reg with handle 25 linked to device Test controller reg[reg30]
io760262=reg[26] cur val=000000, writable=177777. active iopage reg with handle 26 linked to device Test controller reg[reg31]
io760264=reg[27] cur val=000000, writable=177777. active iopage reg with handle 27 linked to device Test controller reg[reg32]
io760266=reg[28] cur val=000000, writable=177777. active iopage reg with handle 28 linked to device Test controller reg[reg33]
io760270=reg[29] cur val=000000, writable=177777. active iopage reg with handle 29 linked to device Test controller reg[reg34]
io760272=reg[30] cur val=000000, writable=177777. active iopage reg with handle 30 linked to device Test controller reg[reg35]
io760274=reg[31] cur val=000000, writable=177777. active iopage reg with handle 31 linked to device Test controller reg[reg36]
io760276=reg[32] cur val=000000, writable=177777. active iopage reg with handle 32 linked to device Test controller reg[reg37]
Registered devices by handle:
Device #1 "Test controller" @io760200: 32 registers
  Reg[ 0]@io760200: active dati dato, resetval=000000, writable=177777.
  Reg[ 1]@io760202: active dati dato, resetval=000000, writable=177777.
  Reg[ 2]@io760204: active dati dato, resetval=000000, writable=177777.
  Reg[ 3]@io760206: active dati dato, resetval=000000, writable=177777.
  Reg[ 4]@io760210: active dati dato, resetval=000000, writable=177777.
  Reg[ 5]@io760212: active dati dato, resetval=000000, writable=177777.
  Reg[ 6]@io760214: active dati dato, resetval=000000, writable=177777.
  Reg[ 7]@io760216: active dati dato, resetval=000000, writable=177777.
  Reg[ 8]@io760220: active dati dato, resetval=000000, writable=177777.
  Reg[ 9]@io760222: active dati dato, resetval=000000, writable=177777.
  Reg[10]@io760224: active dati dato, resetval=000000, writable=177777.
  Reg[11]@io760226: active dati dato, resetval=000000, writable=177777.
  Reg[12]@io760230: active dati dato, resetval=000000, writable=177777.
  Reg[13]@io760232: active dati dato, resetval=000000, writable=177777.
  Reg[14]@io760234: active dati dato, resetval=000000, writable=177777.
  Reg[15]@io760236: active dati dato, resetval=000000, writable=177777.
  Reg[16]@io760240: active dati dato, resetval=000000, writable=177777.
  Reg[17]@io760242: active dati dato, resetval=000000, writable=177777.
  Reg[18]@io760244: active dati dato, resetval=000000, writable=177777.
  Reg[19]@io760246: active dati dato, resetval=000000, writable=177777.
  Reg[20]@io760250: active dati dato, resetval=000000, writable=177777.
  Reg[21]@io760252: active dati dato, resetval=000000, writable=177777.
  Reg[22]@io760254: active dati dato, resetval=000000, writable=177777.
  Reg[23]@io760256: active dati dato, resetval=000000, writable=177777.
  Reg[24]@io760260: active dati dato, resetval=000000, writable=177777.
  Reg[25]@io760262: active dati dato, resetval=000000, writable=177777.
  Reg[26]@io760264: active dati dato, resetval=000000, writable=177777.
  Reg[27]@io760266: active dati dato, resetval=000000, writable=177777.
  Reg[28]@io760270: active dati dato, resetval=000000, writable=177777.
  Reg[29]@io760272: active dati dato, resetval=000000, writable=177777.
  Reg[30]@io760274: active dati dato, resetval=000000, writable=177777.
  Reg[31]@io760276: active dati dato, resetval=000000, writable=177777.
sz                          Size memory: scan addresses from 0, show valid range
m [<startaddr> <endaddr>]   memory range emulated by UniBone. No args = all upper. [octal]
e <addr> [n]                EXAMINE the next <n> words at <addr>. [octal]
e                           EXAMINE single word from next <addr>
d <addr> <val> [<val> ..]   DEPOSIT multiple <val> starting at <addr> [octal]
d <val>                     DEPOSIT <val> into next <addr>
xe                          Like EXAM, but local access to DDR memory. Only in emulated memory range.
xd                          Like DEPOSIT, local access to DDR memory. (CPU cache not updated!)
lb <filename>               Load memory content from disk file, as binary image
ll <filename>               Load memory content from MACRO-11 listing
lp <filename>               Load memory content from Absolute Papertape image
lt <filename>               Load memory content from "adr-value pairs" text file
s <filename>                Save memory content to binary disk file
ta [<startaddr> <endaddr>]  Test memory, addr into each word. Max <endaddr> = 757776
tr [<startaddr> <endaddr>]  Test memory random
init                        Pulse UNIBUS INIT
pwr                         Simulate UNIBUS power cycle (ACLO/DCLO)
dbg c|s|f                   Debug log: Clear, Show on console, dump to File.
                               (file = qunibone.log.csv)
i                           Info about address tables
<  <filename>               Read command from <file>
q                           Quit
Current EXAM/DEPOSIT address is 000000

M>>>[16:31:10.496228 Inf     tc] Test controller::worker(0) started
[16:31:10.499867 Inf     tc] Trying to set thread realtime priority = 50
[16:31:10.502622 Inf     tc] Scheduling is at RT priority.
[16:31:10.502998 Inf     tc] Thread priority is 50


M>>>sz

Found valid addresses in range 0..757776.
Current EXAM/DEPOSIT address is 000000

M>>>e 0

EXAM 000000 -> 000000
Current EXAM/DEPOSIT address is 000000

M>>>d 0 123

DEPOSIT 000000 <- 000123
Current EXAM/DEPOSIT address is 000000

M>>>e 0 

EXAM 000000 -> 000123
Current EXAM/DEPOSIT address is 000000

M>>>tr

Testing 0..757776 randomly (stop with ^C) ...
WRWRWRWRWRWRWRWRWR 10 WRWRWRWRWRWRWRWRWRWR 20 WRWRWRWRWRWRWRWRWRWR 30 WRWRWRWRW
RWRWRWRWRWR 40 WRWRWRWRWRWRWRWRWRWR 50 WRWRWRWRWRWRWRWRWRWR 60 WRWRWRWRWRWRWRWR
WRWR 70 WRWRWRWRWRWRWRWRWRWR 80 WRWRWRWRWRWRWRWRWRWR 90 WRWRWRWRWRWRWRWRWRWR
 100 WRWRWRWRWRWRWRWRWRWR 110 WRWRWRWRWRWRWRWRWRWR 120 WRWRWRWRWRWRWRWRWRWR
 130 WRWRWRWRWRWRWRWRWRWR 140 WRWRWRWRWRWRWRWRWRWR 150 WRWRWRWRWRWRWRWRWRWR
 160 WRWRWRWRWRWRWRWRWRWR 170 WRWRWRWRWRWRWRWRWRWR 180 WRWRWRWRWRWRWRWRWRWR
 190 WRWRWRWRWRWRWRWRWRWR 200 WRWRWRWRWRWRWRWRWRWR 210 WRWRWRWRWRWRWRWRWRWR
 220 WRWRWRWRWRWRWRWRWRWR 230 WRWRWRWRWRWRWRWRWRWR 240 WRWRWRWRWRWRWRWRWRWR
 250 WRWRWRWRWRWRWRWRWRWR 260 WRWRWRWRWRWRWRWRWRWR 270 WRWRWRWRWRWRWRWRWRWR
 280 WRWRWRWRWRWRWRWRWRWR 290 WRWRWRWRWRWRWRWRWRWR 300 WRWRWRWRWRWRWRWRWRWR
 310 WRWRWRWRWRWRWRWRWRWR 320 WRWRWR^[W^[^[^[^[RWRWRWRWRWRWR 330 WRWRWRWRWRWRWRWRWRWR
 340 WR^C
All OK! Total 340 passes, split into 4807 block writes and 4984 block reads
Current EXAM/DEPOSIT address is 000000

This seems to work fine 😉

© 2024 by Frits Jalvingh. All information in here can be freely used (MIT License)