As some here probably know, I have been working the last couple of years
working towards an FGPA gate-authentic replica of the IBM 1410 - the
larger cousin to the IBM 1401.
In 2018 I developed an application for gathering information of of ALDs
and stuffing it into a MySQL database, then spent the rest of the year
entering the information from the ALDs into the system, but I did not
share that application or the data.
Then I took a year off - it had been a grind.
This year I took up the torch again. I put the application up on
github, gave it the requisite GPL attributions, and started tracking my
bugs, fixes and enhancements there, even though I am working alone. I
fixed some of the warts, generalized it some, fixed a few bugs, added
some database checking reports and data checking reports, and so on.
I also spent quite a bit of time generalizing it, so that it will
hopefully be usable (perhaps with some more fixes / enhancements /
generalizing for most any SMS machine (IBM 1620, IBM 709x, IBM 1401 etc.
etc. etc.)
The application is available on github at:
https://github.com/cube1us/IBM1410SMS
The actual "root" source control is on my system at home using
subversion. I use "git svn" to keep a git version in sync, and then
push that to github.
The application was/is developed in C# under Visual Studio 2017 to run
under Windows, primarily because I was interested in trying out C#. I
would expect it to build in VS 2019 with little or no change, but have
not tried it. I could have used a more basic tool setup (say, C or C++
and a non-windows presentation layer), but I figured not all that many
people would be interested in the thing, and the VS environment eased
development quite a bit. I suspect it would work OK under WINE, but I
have not tried doing so.
There are also a couple of tools, one in Perl for generating database
related classes from the database, and one in Python for checking for
database referential integrity. ( was curious about Python, and this
seemed a good candidate for an evaluation of it. It did, however
reinforce my dislike for many things about Python.
The application is comprised of two Visual Studio projects, one for the
data gather app itself, the other a very very light weight database
interface, that ought to make it not too hard to port it to a different
DBMS.
github also has a copy of the database, the MySQL Workbench data model
(and a PDF print) and documentation in MS Word (and a PDF print).
The code is not good. There, I said it. It is not truly OO at all. I
didn't do much refactoring even when I saw common code or saw
considerable potential to consolidate code. The downside of that is
that there is lots of duplicate code. The upside is that you don't have
to go umpteen layers deep in OO design to figure out what the darn thing
does. Doesn't even use database views, though they probably would have
been helpful. Just a bunch of tables. Lots of tables in a close but
not fully relational model.
The data gathered by the application in the database comprises about:
917 ALD (Automated Logic Diagram) 11" x 17" pages
10596 Logic Blocks on those pages (so average of 11.5 per page)
1281 DOT functions (Wired OR / AND)
14021 Inter-sheet signals (which appear on multiple sheets)
4222 Distinct inter-sheet signals
32746 Connections between the above items
That connection number makes me shake my head - I had to enter each and
every one of the darn things. Yeesh.
Capturing all of that was between something like 600 and 1000 hours,
maybe more (but not 2000 hours), after maybe 200 hours on the initial
version of the application.
My next phase is working hard on the part of the project that generates
HDL for FPGA synthesis. I expect that to take many months as I
synthesize, simulate with the tool set and figure stuff out.
I'd be interesting in hearing from folks what toolsets they have used
for HDL (VHDL in particular). I started with Xilinx ISE and then
graduated to Vivado for later chipsets - unfortunately, Vivado seems to
be something of a dog, in terms of time to compile HDL and synthesize logic.
If folks find this interesting, and especially if they want to use it,
I'd love to know about it. I intend to keep this a single-person
effort, git-wise, but folks can feel free to fork (if anyone wants to
bother ;) ), and let me know if they find anything seriously wrong.
For what it's worth, my IBM 1410 cycle-level simulator for the IBM 1410
is also available, at:
https://github.com/cube1us/1410