I'm very interested in your project and shall follow it to see how it progresses.
How do you find the toolchain, are the supplied examples easy to adapt?
btw, it the toolchain free for personal use?
The PYNQ board seems very good value, I'll probably buy one to play with.they seem to be less expensive from farnell then aliexpress, odd
I wonder if the A9 would be capable of running simh as an alternative to the FPGA simulation.One board to run either configuration sounds interesting.
Small status update after the first milestone is reached:
- Fully implemented all non-EAE instructions
- Fully implemented the original I/O bus, i.e. IOP pulses are generated by IOT instructions and peripherals can assert signals like AC CLEAR, SKIP etc.
- Implemented an I/O controller on the bus that can talk to the ARM to implement actual I/O devices there
- Implemented a reader and punch on the ARM
The system can now load programs using the RIM loader while the teletype reader is simulated by a C++ program. For testing, I loaded MAINDEC 801-1 and ran it successfully, it printed 1 and ?@? on the teletype.Also, I compared my implementation with the video that Bill Cattey took of a real PDP-8/I at the Rhode Island Computer Museum in 2015 and the system behaves exactly as it should including single stepping, state lamps etc.
Sounds like a really good start. A few minor corrections and comments.
1) It was last year at the RICM.
2) It is CRUCIAL that you provide a facility for certain IOT instructions to create a temporary slowdown of the emulated machine.
Sounds like a really good start. A few minor corrections and comments.Thanks for your comments!1) It was last year at the RICM.Right, sorry. For the record, this is the video I was talking about: https://www.dropbox.com/s/rwitfo8kceg62yx/RICM-pdp8i-480p - 1.mp4?dl=0
OK
2) It is CRUCIAL that you provide a facility for certain IOT instructions to create a temporary slowdown of the emulated machine.My plan is to let the system always run at the original speed, including the IOT instructions. The actual performance that the user can feel can still be changed by changing delays in the simulated peripherals, I think this is basically what you suggested but slowing down the peripherals instead of the IOT instructions.
My current implementation for I/O works like this: There is a small I/O controller inside the FPGA part that sits on the bus of the PDP. It can be controlled and configured from the ARM. Each device gets a register, a flag and a few micro-coded instructions that can control what happens on IOT pulses and when to generate interrupts to ARM or the PDP. For example, to implement the TTY reader I configured the I/O controller to handle device 3 like this:
- IOP1: Set IO SKIP if device flag is set
- IOP2: Clear the device flag, put zero on the bus, generate an interrupt in the ARM (so it can write new data)
- IOP4: Put the register on bus
- PDP Interrupt: Set if flag is set
- On I/O memory write: Set flag
This micro program can be configured from software for each device. It decouples the I/O speed from the PDP speed and still allows the IOT instructions to run at original speed even if the ARM only updates the I/O data once a second or slower. That way, I hope to be able to simulate arbitrary peripherals without changing the FPGA design. I already noticed that if I don't implement any delays, even the RIM loader will fail because it executes KCC in one cycle (IOP2) and KRB (IOP2 + 4) in the next cycle and still expects the original data instead of the new one. But I was able to fix this by waiting a few ms in the ARM code before putting new data in the I/O memory.Does this make sense? I've never used or even seen a real PDP-8, so I can't anticipate all peripheral requirements but hope this micro-programmed I/O solution will allow implementing all peripherals. I haven't tried Focal yet because I need to implement the EAE for that first, your comments sound like this will be interesting to observe.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/pidp-8/1Rdv-Syg9H4/unsubscribe.
To unsubscribe from this group and all its topics, send an email to pidp-8+un...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/pidp-8/84952145-f74c-45c4-b784-a8e15fb7182e%40googlegroups.com.
There seem to be a few different version of Vivado available on the Xilinx web site, can yu tell me which I should be using.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/pidp-8/1Rdv-Syg9H4/unsubscribe.
To unsubscribe from this group and all its topics, send an email to pidp-8+un...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/pidp-8/92e0fa93-a17a-4e7b-bd80-387b60ebeed1%40googlegroups.com.
Are you thinking of bypassing the Cadetwriter Teensy to drive the Wheelwriter?
It is very early days learning my way around the pynq, quite steep compared to Quartus even.I have Vivado installed now but it isnt easy to get started with vhld on the ZYNC.All I have managed to get it to do so far is to copy someones overlay to drive a neopixel using Jupyter.
I've been working on a similar project for a while. I am using a Teensy
to talk 9-bit serial (8051 uart mode 2 compatible).
https://github.com/RussellSenior/ww5teletype
Next, I will finalize the visuals and then the first release is almost ready.
Is it possible to build a PDP-8/I Z2 Pynq image from your Git repository yet?
Very excited now - mainly about the birth of my new Grandaughter Sophia this afternoon though :-)
I'll connect the Z2 board to my Pidp8i when I have figured how to use it.
I wish my wheelwriter could be interfaced witha single transistor but I think its the wrong model.
0000 7200 cla / clear accumulator
0001 6046 tls / dummy write (to clear flag)
loop, 0002 6041 tsf / skip if flag set
0003 5002 jmp loop / loop waiting for flag to clear
0004 7604 las / get character from SR into AC
0005 6046 tls / write character to TTY
0006 5002 jmp loop / loop for next character
1) Stop processor if it is running, optionally clear core 2) Store RIM HS loader3) set arddress to 7756 and run4) attach tape 'binloader.pt' to PC045) wait for lights to stop flashing6) attach tape 'hello-pal.pt' to PC047) (not needed) press 'cont'8) wait for flashing to stop9) enter address 0200 and start10) html console shows 'HELLO, WORLD!'
1) stop cpu
2) Store RIM HS loader
4) attach tape 'binloader.pt' to PC04
3) set arddress to 7756 and start 5) wait for lights to stop flashing ( 3seconds)6) stop cpu6) attachh tape 'focal69.pt' to PC047) set address to 7777, load address8) set address to 3777, start9) wait for lights to stop flashing (25 seconds)10) cpu should be stopped (check Run led)11) set address to 7777, load address12) set address to 3777, start13) stop cpu14) set address to 0200, load address15) start cpu, dot prompt appears.
notes:rim loader address 7756 to 7776bootloader address 7612 to 7755
DEC-S8-OSYSB-A-UC1.tu56 | 1/18/74 M OS/8 VIII SYSTEM DECTAPE #1 TAPE 1 OF 2 |
DEC-S8-OSYSB-A-UC2.tu56 | 1/18/74 M OS/8 VIII SYSTEM DECTAPE #2 TAPE 2 OF 2 |
.DATESATURDAY APRIL 18, 1970
.R BUILD
$IN TC DTA0-1
$IN PT8E,PTP,PTR
$IN LPSV ,LPT
$IN KL8E,TTY
$IN RF08,SYS
$SYS RF08
$QLISTDTA0 DTA1 RF08:SYS TTY PTP PTR LPT $PRINT
TC08: SYS TC : *DTA0 *DTA1 DTA2 DTA3 TD8E: SYS DTA0 DTA1 ROM : SYS DTA0 DTA1 TD8A: DTA0 DTA1 TD8B: DTA2 DTA3 RK8E: SYS RKB0 RK05: RKA0 RKB0 RKA1 RKB1 RK8 : SYS RKA1 RK01: RKA0 RKA1 LINC: SYS LNC : LTA0 LTA1 LTA2 LTA3 RF08: *SYS KL8E: *TTY KS33: PTP PTR PT8E: *PTP *PTR LPSV: *LPT TA8A: CSA0 CSA1 VR12: TV $BOOTWRITE ZERO DIRECT?YSYS BUILT.SAVE SYS BUILD
..RU DTA0 DIRECT*
BUILD .SV 33 18-APR-70
935 FREE BLOCKS*^C
flush the disk and reboot into disk os/8
..RU DTA0 PIP**SYS\SYS*\*SYS:*<DTA0:*ILLEGAL SYNTAX*^C
.R DIRECTBAD CORE IMAGE.RU DIRECTDIRECT NOT AVAILABLE.RU DTA0 DIRECT*
BUILD .SV 33 18-APR-70CCL .SV 1PIP .SV 1
931 FREE BLOCKS*RU DTA0 PIP
I was thinking it would be useful to have an indication of when the dec tapes were being accesed.
Hopefully the system will work with real paper tape too, do you think it would?
I was attempting to create a project using you .TCL script today but floundered wondering what directory to source it in or supply on the comman line.
I have been using OS/8 command like these for my tests:
.R PIP
*TEST.TX<PTR:
^ (press esc now?)
^C
.TYPE TEST.TX
.R PIP
*PTP:<TEST.TX
The output below was captured during the transfer, at the same time the minicom connected to the PTP output showed ascii data at 2400:7E1
When I saved the tape file from the GUI all the bytes have the high bit set on. If I mask the file to 7 bits then I can read the original contents.
I was attempting to create a project using you .TCL script today but floundered wondering what directory to source it in or supply on the comman line.The TCL script must be run inside Vivado while no other project is loaded. Tools -> Run TCL script or something like that. The project script will create the project. After that, the block design can be imported in the same way by running that script.I think origin_dir in line 77 of the project script must be set to the parent directory of the directory that contains the git tree.
It appears as if the serial line parameters on the console and tape ports are always 7E1 is that correct and intentional?
Unfortunately my tape device is unable to work with parity set, it is 8 bit only with baud rates from 110 to 2400.
When I send a text file to the tape then the serial port shows the characters as sent, however the tape simulation window and created tape file have the high bit always set on, it this a system thing - something to do with PIP or what I wonder?
.R PIP
*TEST.TX<PTR:
^ (press esc now?)
Are there any requirements or capabilities on the RTS/CTS lines?Is flow control implemented?
Hi David,thanks for trying the new version!
1) This and previous versions get one of two MAC addresses when rebooted, a bit of a nusience with reserved IP address asignmment.
2) I cannot find a way to flush the RF08 disk, files get lost after a crash.
3) the latest (V9) version of the E8 editor crashes the simulation somehow and it becomes unresponsive. reactivation will restore it but the disk changes are lost.I'm using the disk image I made for the previous version of the soc. E8 V9 is very nice on the Pidp8 now.
4) The serial output has parity on my system.
Sorry if this all sounds a bit negative, the system is fantastic actually.
Interesting to see if one would be suitable for SOC-DP8 or anything else really, at around £12 delivered its tempting to try.
I am not having much luck with an RK8 boot. A snippet for the boot would be helpful. I found where the image goes and the correct name.
--
You received this message because you are subscribed to the Google Groups "PiDP-8" group.
To unsubscribe from this group and stop receiving emails from it, send an email to pidp-8+un...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/pidp-8/acddfff8-021e-4d99-8007-20520eb72b8fn%40googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/pidp-8/CD87AB89-DCCE-40ED-8DC0-C3F9643A8428%40gmail.com.
You can install a DW8E chassis in a PDP-8/I to add an Omnibus.
On Jan 16, 2021, at 12:01 PM, folke...@gmail.com <folke...@gmail.com> wrote:
--
You received this message because you are subscribed to the Google Groups "PiDP-8" group.
To unsubscribe from this group and stop receiving emails from it, send an email to pidp-8+un...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/pidp-8/ad3b662d-22f6-4cc8-b0ed-53cc9ccd5c0bn%40googlegroups.com.