VOGONS


First post, by rpocc

User metadata
Rank Newbie
Rank
Newbie

Hi to all.
Today I would like to introduce here my complete Arduino project: PALDump, version 1.0 1.3

Couple of weeks ago I was trying to revive one of my VGA cards, specifically Hedaka OTIVGA, which I've obtained with one of its PAL chips pulled off. I was struggling searching for an easy to build PAL dumper and to my surprise I coudn't find any related project based on Arduino board. Some PAL-related topics were discussed even here, on Vogons, but neither of them seemed to be simple enough to build with basic DIY tools. So, I've started developing one from scratch and made it to the first working release which I've decided to make public.

It uses Arduino MEGA-2560 mainly due up to 23 needed pins while Uno and other MEGA328-based modules have only 19 (including one shared with Serial RX) which barely enough for PAL16L8 and not enough for PAL20L8.

Main features:

  1. Detection of tri-state outputs using the dedicated probe pin.
  2. Analysis of outputs. It reads each output pin and counts occurunces of each state for all 65K/1M of input combinations, detecting inputs, outputs, I/O or buffered outputs, and builds an internal table of active outputs as the boolean function outputs with addition of Output Enable functions per each buffered output.
  3. Analysis of inputs. It tests each pin that could be used as a logic input and detects if any change at this input doesn't affect output functions. Then it builds a table of usable inputs.
  4. Generation of the truth table. It generates the optimized truth table (with excluded unused inputs) in Berkeley format and transfers it via Serial port (USB/UART1) at 115200 bps.

The output can be fed directly to command-line tool Espresso, which in its turn will generate minimized logic equations, which in their respective turn, may be used almost as-is in pld projects for WinCUPL or other similar software.

During writing and testing this tool, I've dumped couple of PLAs from another OTIVGA card, tried to burn a restored .jed file to ATF16V8B and the board had successfully started with either of its chips replaced by the copy, so I believe this can pass as alpha-test.

It would be great if somebody having required equipment will make dumps of their PALs installed on old PC boards and share them with others. There's no yet such a thing as PLA database, similar to BIOS dumps database but it could appear. I've added first made dumps as examples at the project page and later willing to add more dumps from boards I own with specified identification.

The reason why such thing should exist is the same as BIOS dumps: for situations where there is a known board having a missing PAL. I've finally restored my Hedaka U8 after implementing missing functions presented on another OTIVGA board with different schematic. I'm curious to see a dump/equations from original U8 IC to compare it with mine. A set of ready-to-burn JED and PLD files for two versions os OTIVGA are included to the project page as well.

Last edited by rpocc on 2024-03-04, 16:38. Edited 1 time in total.

Reply 1 of 12, by Jo22

User metadata
Rank l33t++
Rank
l33t++

Wonderful idea and project! Kudos! 🙂💙

"Time, it seems, doesn't flow. For some it's fast, for some it's slow.
In what to one race is no time at all, another race can rise and fall..." - The Minstrel

//My video channel//

Reply 2 of 12, by majestyk

User metadata
Rank Oldbie
Rank
Oldbie

Did you come across the "DUPAL" project?

https://github.com/DuPAL-PAL-DUmper

They also have a layout for a small PCB with the most common PAL / GAL sockets.

I also support the idea of creating a how to and FAQ here so everybody can dump their PALs / GALS here just like in the BIOS threads.
At the moment I have 5 PALs waiting to be cloned to complete mainboards that have missing PALs.

Reply 3 of 12, by rpocc

User metadata
Rank Newbie
Rank
Newbie
majestyk wrote on 2024-02-25, 20:44:
Did you come across the "DUPAL" project? […]
Show full quote

Did you come across the "DUPAL" project?

https://github.com/DuPAL-PAL-DUmper

They also have a layout for a small PCB with the most common PAL / GAL sockets.

I also support the idea of creating a how to and FAQ here so everybody can dump their PALs / GALS here just like in the BIOS threads.
At the moment I have 5 PALs waiting to be cloned to complete mainboards that have missing PALs.

Yes, I’ve seen this project but to me it seemed more demanding: you have to print PCB, wait for shipping, collect a whole BOM of parts, solder everything together and at the end you get the tool based on popular but not optimal MCU. I can’t evaluate the performance of that project without trying it but since it’s based on the same 8-bit AVR MCU family as Arduino boards, I think using Arduino as a cheap open platform makes it easier to implement for an enthusiast not so experienced in buying and soldering electronic stuff.

As for the FAQ, I think I’ll do something later. I just finished writing yesterday and had no much time for documenting in details.

The project page contains a short list of requirements and brief workflow but I think I can write a tutorial. The main difficulty with that is that I’m no so bad with coding but quite clumsy with writing long texts in English.

Reply 4 of 12, by rpocc

User metadata
Rank Newbie
Rank
Newbie

The code was updated to version 1.3. Works stable with PAL16L8.

It should support PAL20L8 as well, but all 3 chips I have to test are either registered or give doubtful results due to feedbacks (Paradise EGA board). Probably, in order to correclty support feedback configurations in auto mode, this board will need couple of 4066 and one 4051 chips, or couple of 74138 and ULN2003 because the only way to detect feedbacks is shorting outputs to gnd and Vcc to override their own output. That's not a perfect way to deal with digital IC but at least it allows to detect existence of feedback and treat feedback inputs as independent in the truth table.

I've uploaded a little collection of pld/jed files confirmed to work along with dump files in folder PAL Database at the project page on Github.
TODO: upload a normal schematic, upload images of dumped boards and improve support for PAL20 or at least confirm support for combinatorial configurations without feedbacks. Will try the latter later when I get an ATF22V10 IC to brew my own test chips.
Also, I'm going to add the limited support for Arduino UNO and other MEGA328-based boards.

Last edited by rpocc on 2024-06-12, 06:09. Edited 1 time in total.

Reply 5 of 12, by rpocc

User metadata
Rank Newbie
Rank
Newbie

A few updates to PAL Database:
1. MB Hyundai Super-16V Clone
2. VGA OTI037C_1037162003_REV_A
3. VGA OTI037C_1037164002_REV_D
4. VGA OTI037C_Hedaka_HED-622

All four has properly named pins in source files, so I even found an interesting additional use of this tool: a simple modification allowed to disable internal FDD controller for SUper-16V XT-clone motherboard, which though has no practical use because its BIOS doesn't support high density drives, so there's no big difference in using buit-in or ISA FDD card.

So, currently database contain 12 tested boards with .jed files.
Interesting thing: Today I found a VGA card, OTIVGA revision D, which appeared similar to my Hedaka HED-622 which initially made me start this project. To my great satisfaction, the dump I got appeared completely pin to pin and equation to equation identical to the one I've redesigned made using reverse engineering.

Reply 6 of 12, by retrotechrestoration

User metadata
Rank Newbie
Rank
Newbie
rpocc wrote on 2024-02-25, 12:51:
Hi to all. Today I would like to introduce here my complete Arduino project: PALDump, version 1.0 1.3 […]
Show full quote

Hi to all.
Today I would like to introduce here my complete Arduino project: PALDump, version 1.0 1.3

Couple of weeks ago I was trying to revive one of my VGA cards, specifically Hedaka OTIVGA, which I've obtained with one of its PAL chips pulled off. I was struggling searching for an easy to build PAL dumper and to my surprise I coudn't find any related project based on Arduino board. Some PAL-related topics were discussed even here, on Vogons, but neither of them seemed to be simple enough to build with basic DIY tools. So, I've started developing one from scratch and made it to the first working release which I've decided to make public.

It uses Arduino MEGA-2560 mainly due up to 23 needed pins while Uno and other MEGA328-based modules have only 19 (including one shared with Serial RX) which barely enough for PAL16L8 and not enough for PAL20L8.

I've been trying to get a pal20l8 dumped for another Vogons member here - Some help with one interesting multifunction card (Multitech PC500+ II VIO) . Just straight up reading it with a Dataman was a no go, so I'm wondering if it might be either secured or combinatorial.

I was looking at your github, but the photo showing the Arduino connections wasn't clear to me. I have a MEGA-2560 and all the breadboard components. Could you assist me in setting it up for my pal20l8 chip?

Reply 7 of 12, by rpocc

User metadata
Rank Newbie
Rank
Newbie
retrotechrestoration wrote on 2024-06-11, 18:31:

I've been trying to get a pal20l8 dumped for another Vogons member here - Some help with one interesting multifunction card (Multitech PC500+ II VIO) . Just straight up reading it with a Dataman was a no go, so I'm wondering if it might be either secured or combinatorial.

I was looking at your github, but the photo showing the Arduino connections wasn't clear to me. I have a MEGA-2560 and all the breadboard components. Could you assist me in setting it up for my pal20l8 chip?

Have you tried looking into paldump.h? There is a list of connections in the commentary, where all pins of PAL chips are associated with respective MEGA2560 pins. The only sheet you may need to have in addition is detailed pinout with all MCU ports associated with Arduino pin numbering. Let me know if you need additional explanation, because currently I didn't make a clear picture of schematic of connections.

Reply 8 of 12, by retrotechrestoration

User metadata
Rank Newbie
Rank
Newbie
rpocc wrote on 2024-06-12, 05:57:
retrotechrestoration wrote on 2024-06-11, 18:31:

I've been trying to get a pal20l8 dumped for another Vogons member here - Some help with one interesting multifunction card (Multitech PC500+ II VIO) . Just straight up reading it with a Dataman was a no go, so I'm wondering if it might be either secured or combinatorial.

I was looking at your github, but the photo showing the Arduino connections wasn't clear to me. I have a MEGA-2560 and all the breadboard components. Could you assist me in setting it up for my pal20l8 chip?

Have you tried looking into paldump.h? There is a list of connections in the commentary, where all pins of PAL chips are associated with respective MEGA2560 pins. The only sheet you may need to have in addition is detailed pinout with all MCU ports associated with Arduino pin numbering. Let me know if you need additional explanation, because currently I didn't make a clear picture of schematic of connections.

Yes, I've looked at those diagrams. I'm not sure what you're referring to by Port 1 and Port 2, etc... the code references port G, but in the photo it looks like you're using just port A.

Reply 9 of 12, by rpocc

User metadata
Rank Newbie
Rank
Newbie
retrotechrestoration wrote on 2024-06-12, 12:28:

Yes, I've looked at those diagrams. I'm not sure what you're referring to by Port 1 and Port 2, etc... the code references port G, but in the photo it looks like you're using just port A.

Sorry for being out for so long. I got it, yes it's a bit cryptic.
Ports 1, 2, 3 are defined in the .ino project file since you may want to redefine which ports you're using (eg for other AVR platform or in conjunction with other functions such as display, etc). In my sketch for 2560 it's A, C and K.

#define GLOBAL_PORT1 PORTA
#define GLOBAL_PORT2 PORTC
#define GLOBAL_PORT3 PORTK

Further, in the same file an instance of the class in constructed using these three entities passed as arguments

PALDump PLA(globalPALType, &GLOBAL_PORT1, &GLOBAL_PORT2, &GLOBAL_PORT3, 1);

Reply 10 of 12, by Giants

User metadata
Rank Newbie
Rank
Newbie

Hi here.

Glad to hear that such a project is underway.
I have some PAL16L8 I'd like to dump. (oldschool computer interface)
I have already try to dump them with interfaces available on the net (ex : duPal) without success.
Of course, they are protected against reading.

I'm going to follow this project closely and why not participate when it's stable.

See You

Reply 11 of 12, by kinetix

User metadata
Rank Member
Rank
Member
retrotechrestoration wrote on 2024-06-11, 18:31:

I've been trying to get a pal20l8 dumped for another Vogons member here - Some help with one interesting multifunction card (Multitech PC500+ II VIO) . Just straight up reading it with a Dataman was a no go, so I'm wondering if it might be either secured or combinatorial.

I was looking at your github, but the photo showing the Arduino connections wasn't clear to me. I have a MEGA-2560 and all the breadboard components. Could you assist me in setting it up for my pal20l8 chip?

And I hope you manage to read it. I'll keep waiting for it
Once I have it I'll have to take it to a GAL22V, which are the ones I have available for now. I'll have to make some kind of adapter, in addition to setting the unused inputs to 0 (or 1)

Last edited by kinetix on 2024-09-13, 21:23. Edited 1 time in total.

Reply 12 of 12, by rpocc

User metadata
Rank Newbie
Rank
Newbie
kinetix wrote on 2024-09-13, 19:25:

And I hope you manage to read it. I'll keep waiting for it
Once I have it I'll have to take it to a GAL22V, which are the ones I have available for now. I'll have to make some kind of adapter, in addition to setting the unused inputs to 0 (or 1)

Look at my last comment here. The ports are assigned in the main file, in defines.