schlae / graphics-gremlin Goto Github PK
View Code? Open in Web Editor NEWOpen source retro ISA video card
Open source retro ISA video card
Hello!
Thank you for a great project, published under opensource license!
Could you please add a file LICENSE
or COPYING
with a license text, so the forks (like https://github.com/yeokm1/graphics-gremlin-hdmi) wouldn't loose it by a mistake?
It is easy to add the file with GitHub, it has the license template.
If you want, I can help you.
Olivetti M24 had mostly CGA compatible display adapter with several enhancements:
It would be nice to implement at least the 640x400 / 8x16 font text mode. It is much more readable than the default CGA 8x8 font
Graphics 640x400 mode is nice too, but I don't think it was widely used
I have started a new development branch to implement the graphical mode of the hercules. As Hercules is actually an improved MDA, I have chosen to take this as a basis and update it:
https://github.com/spark2k06/graphics-gremlin/tree/hgc_dev
The VGA 70Hz mode is difficult to maintain, as it would have to be determined which CRTC values are appropriate when these are modified when accessing the graphics mode, so in principle it would only work more or less well from the RGBI output.
I don't have an original monochrome monitor compatible with this output, but my monitor accepts the timings from the VGA output, and we can see that the implementation works, at least with the recommended CRTC values corresponding to the 720x348 graphics mode:
https://www.seasip.info/VintagePC/hercplus.html
It would be nice if someone could check how it would look like on an original monochrome monitor.
There are other software or games that use different values that do not display correctly, like prehistorik or simcga... and right now I don't know how to solve those cases:
The FPGA byte code from November 20, 2021 (the latest) produces memory errors at certain memory addresses in both MDA and CGA modes.
It also results in memory/screen corruption in MDA mode. The location on the screen seem to correspond to these addresses (typically column 64).
The issue is reproducible in several cards built exactly according to the BoM.
Typical error locations:
Different cards might show errors only in some of these locations. Perhaps there is a timing violation that results in memory corruption in for these certain addresses
The arbitration logic between the SRAM, the CGA pixel engine, and the ISA bus isn't quite intelligent enough and triggers a lot of CGA snow--more than the original card.
I do not know if it is something that only happens to me, but below I show a video where this effect can be observed. First run of MSDos EDIT command, results in VGA out of sync, I go out and back in, and it always works fine now:
MDA (70Hz VGA compatible) on some boards has issues with the attribute byte getting corrupted by the previously-read character byte. This shows up as spurious underlines, inverse video, etc on the screen. Likely this is a marginal timing issue as it works fine on some boards but not others.
I want to use the ELV UM-FT2232H Kit because its much cheaper than the FTDI FT2232H Mini Module.
The wiring is a bit different than that, what you give for FTDI FT2232H Mini Module:
I found where to connect the AD0, AD1, AD2, AD4, AD6, AD7 and GND lines,
ELV UM-FT2232H Graphics Gremlin SPI
but what i dont understand are the:
V3V3 to VIO strap
VBUS to VCC strap
V3V3 to VIO strap (2)
Maybe you can give a short explanation which PINs i need to use for this 3 connections?
Thanks
https://github.com/mariusgreuel/um-ft2232h?tab=readme-ov-file
Update: I could program graphics gremlin, without this 3 wires, but i don't know, if it can be dangerous for the FPGA
The timing for CGA modes, 640x200 or 640x400 implemented with scan doubling, seems to be a bit off.
The picture on my VGA monitors appears to be shifted left significantly. On a couple of monitors I was able to adjust the horizontal position and bring the picture to middle of the screen, on my newer monitor, I cannot do that, even at minimal (rightmost) position, the picture appears to be shifted left and clipped
Are there settings in Verilog that I can adjust to change the timing?
Hi
I'm intending to assemble your board however I realised ICE40HX4K-TQ144 is out of stock everywhere.
Will a ICE40HX1K-TQ144 work instead?
If you're willing to live a little bit dangerously the second 74ALVC164245 (U5) may not be necessary because it appears that the HX4K has 5V tolerant I/O pins despite what the datasheet claims.
HI, I have lots of experience assembling boards, but not so much programming fpga so when it gets to the part that says run iceprog to program and you then spend days following guides and compiling this and messing with linux only too find a windows version the next day then the ftdi programmer needs to have it's driver forced because iceprog can't find it and it can't be on a certain sub port, you can imagine someone who does not have fpga experience can have one or two problems.
So after a lot of messing about I can talk to the ftdi, but it will not program the fpga so I need to check a lot of things.
This is how to change the driver
YosysHQ/icestorm#141
and the windows build
https://github.com/YosysHQ/oss-cad-suite-build/releases
Once I have everything working I could document and perhaps it will help others.
I'm trying get some old floptical drives running on several ISA-based platforms I have been working with. I came across this project and I'm glad to see someone is working to make NEW hardware for OLD machines. Anyway...
How about an ISA based video card that goes straight to HDMI?
While this might seem relatively trivial, anyone who is trying to hook up an old ISA/VGA card via a simple VGA->HDMI converter knows - its not. The unfortunate fact of the matter is that most new HDMI monitors don't support the necessary 700x420@70Hz signal used by BIOS/DOS. To make matters even worse, most current HDMI upscalers won't even do this anymore. (I.E. The $200 Startech VGA2HDPRO2 which replaced the previous model VGA2HDMIPRO (which did) doesn't...)
Not expecting you to do this but seems like you might be interested....
Now, if only we had an ISA based controller which supported direct attachment (on board) of SDCards for both floppy and Hard Drive emulation... Maybe add a serial, parallel, game port, and sound function is suitably motivated. Maybe put all of this on the same ISA card with upscaled HDMI output and you have a single ISA card ready to provide any/all retro PC services as needed.
Sorry if this is not appropriate for posting here....
A few parts are currently unavailable from several suppliers with long lead-times from the manufacturer - is there a possibility of alternatives?
U1: iCE40HX4K-TQ144
U10: APX803S00-29SA-7
These all appear to be timing issues. Investigate the relationship between the display enable/vsync bits in the status register and the sequencer.
I don't really go here but I found the following part of the readme file curious:
The circuit board is a 2-layer board, 4.19 x 4.2 inches (106 x 95mm).
Is it possible to use gremlin over another bus, or are you aware of another project which allows this?
Sorry, I realize this is only tangentially related to the project, but I really cannot find any other way to get graphics working on DOS in a modern machine (other than emulating/virtualizing the entire machine).
Using the 3-Nov-2021 build of oss-cad-suite-build results in the CGA text generation code not synthesizing correctly. Instead of a full character, each cell just displays a single column.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.