Hacking an IBM CGA card for fun and speed!
HTML-код
- Опубликовано: 4 июн 2024
- Announcement: I'll be at VCF Southwest in Dallas June 14, 15 and 16! www.vcfsw.org/
Let's continue fooling around with the old IBM CGA card that I rescued in the last video. In this video let's see what kind of mods I can do to it that could give the card a speed boost, just from some hardware mods. Yes, I know these are are useless mods!
Cleaning corrosion from this card: • Can we save this heavi...
-- Video Links
Area5150 Demo:
www.pouet.net/prod.php?which=...
Adrian's Digital Basement Merch store:
my-store-c82bd2-2.creator-spr...
Support the channel on Patreon:
/ adriansdigitalbasement
Adrian's Digital Basement (Main Channel)
/ @adriansdigitalbasement
My GitHub repository:
github.com/misterblack1?tab=r...
-- Tools
Deoxit D5:
amzn.to/2VvOKy1
store.caig.com/s.nl/it.A/id.16...
O-Ring Pick Set: (I use these to lift chips off boards)
amzn.to/3a9x54J
Elenco Electronics LP-560 Logic Probe:
amzn.to/2VrT5lW
Hakko FR301 Desoldering Iron:
amzn.to/2ye6xC0
Rigol DS1054Z Four Channel Oscilloscope:
www.rigolna.com/products/digi...
Head Worn Magnifying Goggles / Dual Lens Flip-In Head Magnifier:
amzn.to/3adRbuy
TL866II Plus Chip Tester and EPROM programmer: (The MiniPro)
amzn.to/2wG4tlP
www.aliexpress.com/item/33000...
TS100 Soldering Iron:
amzn.to/2K36dJ5
www.ebay.com/itm/TS100-65W-MI...
EEVBlog 121GW Multimeter:
www.eevblog.com/product/121gw/
DSLogic Basic Logic Analyzer:
amzn.to/2RDSDQw
www.ebay.com/itm/USB-Logic-DS...
Magnetic Screw Holder:
amzn.to/3b8LOhG
www.harborfreight.com/4-inch-...
Universal ZIP sockets: (clones, used on my ZIF-64 test machine)
www.ebay.com/itm/14-16-18-20-...
RetroTink 2X Upconverter: (to hook up something like a C64 to HDMI)
www.retrotink.com/
Plato (Clone) Side Cutters: (order five)
www.ebay.com/itm/1-2-5-10PCS-...
Heat Sinks:
www.aliexpress.com/item/32537...
Little squeezy bottles: (available elsewhere too)
amzn.to/3b8LOOI
--- Instructional videos
My video on damage-free chip removal:
• How to remove chips wi...
--- Music
Intro music and other tracks by:
Nathan Divino
@itsnathandivino - Наука
Nothing is pointless if you had fun along the way.
For some reason this reminds me of Layer 3 switch programming.
But then I am a rather anti-normal individual.
The importance of this philosophy cannot be overstated! I’m 42 and it took me way too long to truly accept if I enjoy it, no matter how pointless everyone else may think it is, is well worth doing.
He's trying the software. He's checking the schematics. He's hacking the hardware. Just what I'd expect from an Adrian's video. Great vid.
He's hacking the software, checking it twice; he's probing the IO and making it nice ... Adrian is coming to town!
Sorry, wrong season 😀
He's going for speed. All alone in a time of need.
@@djksfhakhaks Haha! I was thinking of the same song!
@@jeromethiel4323glad to see I'm not alone🤣
That 1 character per frame kind of has its own charm.
would be a fun prank back in the 80s hahaha
Reminds me of viewing a BBS at 1200baud on my C64!
It's about as fast as a 600 baud modem would be. 2x the speed of my first 300 baud modem!!
looks like hacking scene from late 90' movie
Add a small buzzer to it so that it makes beepy clicking noises every character for the full experience :D
that's not snow, but an entire blizzard :))
You took a trashed-out card, and had a bunch of fun with it and got it to work better than new... How can anyone hate that? ... what am I saying, this is the internet... 🤣
Not going to lie, probably one of my favorite videos of yours :-) BTW, the version of quickcrt you found was an updated version of what I used in the 80s, so it was all valid.
For extra fun, you can run NNANSI (not a typo) which not only has faster CGA writing, but has a special mode that uses hardware scrolling to scroll crazy fast without any snow.
Fastest DIR in the west!
DIR>NUL: is even faster!
I can't tell you how engrossing this video was. Adrian just trying things and letting us see the result is just GOLD. We learn, we laugh. Maybe it is just the geek in me, but how Adrian presents, "it just works".
This is incredibly nerdy, and incredibly my jam
For sure, I'm surprised such a crusty card actually came back to life.
I think it's BS that you can't leave a comment without making a donation though. That's becoming more common and my broke ass hates it.
All this talk about ANSI text has reminded me of an ANSI DOS editor program called "TheDraw". It was basically a program that let you draw out ANSI text streams in picture forms like PAINT does in windows, except it was for DOS and it used those ANSI character codes. It allowed you to draw pictures in dos that you could use in BBS's and such. Would be neat to see that or other programs like it shown on your videos.
You could also do ansi animation too!
Wow you brought back some memories. I had completely forgotten about TheDraw. Now I have to start googling to see if there is a copy somewhere
PLEXUS
PLEXUS
PLEXUS
PLEXUS
.....
P
P
@@nickwallette6201 IPILIEXIUS
I had one of the earliest true IBM CGA cards. I worked for IBM in the early 80's. It was a pretty terrible card but the 6845 CRT controller was a competent IC that later clone makers were able to improve on with their cards performance. I believe the 6845 is still being made, if not, they're pretty easy to source 45 years later.
Adrian's giggles around 30:00 are totally infectious. Looking forward to more pointless hardware hacks!
More hardware hacking videos please, this was a great one!
Well all your videos are great, but this was something extra.
Not just a repair, but trying to next level it. Fun stuff to watch!
35:29 it's like playing computer games, where the text intentionally scrolls really slow.
You made a computer game computer!
That was heaps of fun. Thanks Adrian.
Great episode! Love to see some of Adrian's C64 like focus and detail aimed at the PC world, _and_ in cooperation with Trixter! A star studded cast.
This is so much fun! Your videos are always great but this one is especially so, it's just so fun all the kinda random hardware hacking 😃
I think that was a great experiment! Thank you!
Amazing how you understand this so well. I would have no chance. Acceptance of the snow ...
More of those silly mods. The best way to see how things really work! Great episode!
What an exciting endeavour!
I only entered the PC space in 93 and our 386 already had a VGA cart, but it's really interesting to see how it all started.
That was simply awesome. Your "period correctness" is off the charts with this one. It's what I would have wanted to know and do back then (if I had to make do with CGA). I was half expecting an avr or similar coming out of your drawers. But just some bodge wires and jumpers.... *great* work. Also, I like your attitude towards changing old things.
The 14.318/3.58MHz tinkering, try inverting the display enable signal that is already there. That would still toggle the line allowing the software to see what it wants, but it would result in being able to do access RAM most of the time rather than just when the active part of the display is not being drawn. Inverting VS before using it instead would give even more access time. Access time could be extended out even further using a oneshot triggered by HS to give almost full time access but a oneshot would be tied to the vertical rate, so not necessarily a good idea.
Oh that would be a worthy followup.
It would be so cool, hanging around with you, just tinkering 😋 I love your videos and you tought me so much about analyzing faults! 😊
Excellent video. Loved the process and I will say "definitely not pointless."
I probably would only do the thin font mod, but this is very cool that there's so much more things people know about these cards.
I think experimentation like that is really cool. It's how you learn. I've been doing similar stuff with the raspberry pi. A lot of what I've learned comes from Adrian and others on RUclips. I've gone much further than I would ever have been able to do before.
Very nice video, I loved it. I can't remember what software hack I used that time, but for file editing we used Volcov Commander.
Volcov Commander (VC) was released later in the early 90's, but in Hungary, our computers were a few generations behind. It was something like the Norton Commander, but with very little memory usage and bare bone assembly programming. I definitely used on 286 and 386, but I believe it's capable to run in XT as well.
You should have hooked the 3mhz up to the font bold pin for fun! Someone send Adrian a Coleco Adam!
Great mods! Well done.
Beautiful example of learning by "unguided" discovery. LOL. Love the videos !
And THIS was what we did back in the 80s which is where the hacking term came from. Great episode Adrian!
Now that's why I even started being interested in electronics. Thanks!
Even on DOS Vi is the best text editior.
‘I know everything I did here was completely useless’ loool you made me laugh loud! I enjoyed this a lot! Thanks!
TheDraw! That is the ANSI editor of choice!
This is pretty cool.
I like mods like this.The only time I really would have an issue would be if it is a very rare piece of hardware with historical value in its original state, the only mods I'd like in that case would be necessary repairs and mods to use the thing at all. CGA cards are common enough this isn't an issue I'd have.
I watched a YT video where a person engineers a display card from scratch, they started with a timer and using ICs made the v sync and h sync signals by counting timer ticks and testing for bits as the counter went up to tell when a number of ticks occurred. They made additional videos where they added video memory and got it all working. I suppose you could do video card using a pico. It sure is fun learning bits and pieces how this stuff actually works!
I would've thought a Raspberry Pi Pico would be too slow to handle such bandwith of what basically is NTSC, but it seems "ART Pa" here on RUclips made it work.
Check out Ben Eater's 6502-based computer from scratch -- the ultimate "how do puter work" from the most basic steps.
@@belzebub16 I'm doing 640x480 on a PICO with a 640x320 frame buffer. With dual cores + the PIOs, it's quite capable.
@@belzebub16There are pi picos that do vga with the RP2040 io processor
Are you talking about James Sharman? I've watched his VGA from scratch videos multiple times, along with a few other people who have done VGA on a breadboard in order for me to figure out how to the the VGA on my current project, which I'm throwing into a CPLD.
I love it. Circuit bending a CGA card.
this is very cool! And really only possible on this old hardware, where you literally solder around bits and bytes! This is gold for understanding how things work!
I wonder if you could bodge some dual ported Ram on the thing and "route" the acces to different ports depending on the system writing to memory or the CRTC reading and displaying.
huh... can you replace the DRAM with SRAM somehow? just ignore all the refresh shenanigans and use address and data lines accordingly?
I like this stuff. Very in line with mods various enthusiasts would've done, maybe with some outboard buttons or switches. I dunno if there would've been as open access to schematics or much sharing of ideas and stuff back then, though.
I've been using PC's and compatibles since 1985 and today I learned this was a thing.
If you use a double-wide font, your computer will start drinking beer and attending monster truck rallies.
You should present all your mods in this format, even if it means double work, its very accessible to us to follow along with your thought processes and get lots of stuff done too
ooh this is fun!
about the performance mod:
i would reckon the duty cycle of the display-enable signal is the key to speeding things up, rather than its frequency - high represents the display being on, low represents off, so a shorter duty cycle should make it think the display is off for longer
assuming the 3.57MHz clock has a ~50% duty cycle, that's shorter than the ~70% i'd expect from display blanking, but not by all that much
having a very brief pulse at the end of each scan line would probably be ideal for speed, but also compatibility
Interesting video! I didn't think that after Commodore had solved the snow issue with their 80 col models, that would still be an issue on the PC.
There's an active-low minus sign in "-DISPEN". I think that when you tied the signal low, you were creating the "active video" state all the time. So it waited forever for the horizontal retrace. Out of curiosity does it work if you tie pin 4 high instead of to the 3.58MHz clock?
Good job. :)
Have you tried GLaBIOS as a replacement for the system BIOS? It has options where you can choose different levels of CGA snow removal including disabling it entirely to get that same effect as your hardware mod. It also claims to be faster at CGA scrolling than other BIOS ROMs. Would be fun to see you could test and verify that though.
Love the video. I think I prefer the blanking though, so they originally made the right decision back then.
Can you imagine all the support calls or returns they may have had? Snow looks like a fault, whereas the blanking does not.
SHENANIGANS! I love it!
I thought the mods were fun and a good learning experience. And as you noted, there was no permanent damage done and could be reversed. In fact, more mod videos IMHO would be awesome.
This is the advantage to old tech, you have access to everything. With later boards you cannot do much as it's all buried inside large custom chips.
This also reminds me of the video on my old TRS-80, same snow, however you cannot do anything about it in software as there is no register for the software to monitor.
Hi Adrian, I have been seeing your both channels long.
I think this question is off topic about this video but I didn't find the video where I see a tool to bend the legs of the chips, and I wanted to know where did you buy it.
Thanks and keep doing all this because you do a great job
I can say with 100% certainty I will NOT be doing this Mod. Mainly because I don't even OWN this board. 🤣 Otherwise great video & glad you had fun messing.... err I mean Modding it! 😸
Nice hack, Adrian! Have you done a vid on the bidir-mod for parallel ports? It's one of my favorite historical hacks... They didn't need anything more than to reroute a trace! Not even a mod to software/BIOS. And, it made for such great early hackery, like from the book "Build Your Own Computer Controlled Robot" back before Pis, or even Arduinos, or even Basic Stamps!
Not that I've looked but the character dots are probably being produced by a shift register, which latches in the data on the edge of some other signal. Delay that latch signalling a wee bit so that the CG ROM address line has had time to set and the ROM itself now returns data from the alternate space and you'll likely solve the thin / thick character problem. A single buffer of a 74LS07 or the like would probably be long enough.
You know, you keep saying that this was pointless and silly, but this type of hardware hacking is a lot of fun to all of us hobbyists, and I'm sure I'm not alone when I say that I'd love to see more of these videos.
maybe dumb idea, but i was wondering if the disp enable could be used a chip select to between another bank of memory basically creating a double buffer, which would fix the snow and flicker.
For modifying the board, I would have considered putting the chip in a socket. You can pop a pin out of a machined pin socket fairly easily or you can bend the leg of a chip.
I would also have likely tried to put in some sort of deadbug circuit to make the CRT enable easier to control and also make the blanking signal the software waits for always true.
That newer CGA card actually looks like it's got a Video BIOS onboard (the two large chips in the corner). If that's the case, then the reason it doesn't flicker is probably not because it ignores that hardware line, but actually because when the computer first boots up, it detects the expansion card's ROMs, executes the code in them automatically, which replaces the default BIOS routines with its own custom ones (similar to how ZANSI.SYS or FASTCRT do). The software patch is just built into the card.
This was very common for most video cards with more advanced features, as they would add functionality to the stock BIOS routines to support switching to other modes, or using more advanced graphics capabilities, etc, that way too.
I want to do that thin character mod now!
I've been most happy with Clansi. Despite being slower, it also hunts for soviet submarines.
I am not surprised about the font attribute delay (well, I design video pipeline in FPGA for a living) : graphics data has to be read from the character ROM in advance. The attributes are applied while shifting the 8-bit data to the video output, one character delay later.
I think it would be silly to even suggest you may have 'ruined' that card, the same card that was headed to recycling and scrap. How about this: back in the 80s - even to today, people have ALWAYS tried to hack / mod / improve the hardware BEST we possibly could!! Adrian I think it's FANTASTIC that you took the time and had the patience to go through some of these mods on the CGA card MY pc had in it (basically) back when we got our first XT clone.. yeah man.. awesome!
Adrian, the display enable signal is active LOW (it says -DISPEN on the schematic), so you should hook it to 5V instead of ground.
26:00 Awesome! Now, if you could figure out how to get snow instead of freezing/blanking on over-the-air digital TV, we might finally have TV as useful as we had for the half-century prior!
When you are looking for a clock signal to tie the speed up mod to, could you not have tied it to the 4.77 megahertz clock signal on the ISA bus
On the screen around the 5:45 mark is that dates that is scrolling down showing when a particular task was done? If so, that is so interesting to see. A look back in time on how long this was used, and just thinking about the history behind the program of the person using it. So neat, idk why but it is.
so when it was really slow by bodging on the sync signal, what would happen if you inverted the signal?
Hi Adrian, is it possible to put faster chips into the graphics card ? And increase the ram etc? So sort of super mod it with more resources than they could ever have dreamed of when they created the card?
The slow updating text is every Hollywood OS.
Single pixel wide and double pixel wide character sets... seems likely this was intended to support light and heavy (bold) characters in text mode. BUT because of the requirements of composite video bold text is enabled always. Also possibly because they ran out of attributes bits in CGA so the feature couldn't be implemented but IBM already had the ROMs so character set could be selected with this hardware mod. Documentation for ANSI.SYS from Microsoft listed the ansi escape sequence for bold text but it didn't work. So maybe It was supposed to work but the hardware support just never happened
Noticed that when running/installed the quickcrt/f, it returns a message, saying "installed, without snow suppression"
It's weird... I had an original 5150 with CGA BITD, and I do not remember the flickering at all. Of course it has been almost 40 years since then.
I do remember the snow, such as while CopyWrite was failing to dup a disk. I hardly ever loaded ANSI.SYS though because there were few programs I had at the time that would send ANSI escape codes. Also, BASIC seemed to go through the BIOS routines so BASIC programs also didn't benefit from it.
But to answer one of your questions: Turning off the blink bit allows the background to have all 16 colors. With the text blink bit on, the background would take its brightness bit from the foreground text color, IIRC.
PNW pinball convention this weekend I'll be there with my ADB mercy on.
might keep an eye out for ya then! wish I knew about any retro/vintage computing museums in the area though
I am sure the Nim family were quite well known in the early days of computing, they had a gane named after them as well.
This is all just great. But you don't mention the DOS TSR that fixes the snow problem! Long ago I had an idea for a 3D display using crossed polarizers. To implement it, I needed to understand how IBM PC graphics were generated and controlled. So I bought a book called "Programming the EGA and VGA Displays" and I learned x86 assembler (oh what torture) to understand it. Then hardware got way better, and I realized I was barking up the wrong B-tree.
36:48 I think that BIOS procedure can't start writing if signal is already low because it will not know it just started or about to end and how much times i has, so it waits to high and then to low signal yo be sure
The "contention" between CPU and Video Card accessing the video memory as Adrian describes it is why later high performance cards used VRAM instead of DRAM. (VRAM and DRAM are different types of memory. These days everyone says VRAM to mean video memory, but in the 90s it meant a specific type of video memory). VRAM was dual ported, so the video memory could be read and written at the same time.
Yeah, I think they didn't wanna include the logic to introduce wait states to the CPU when the 6845 was accessing things.
@@adrianchadd It's not just about missing logic. The memory system on the CGA card runs at the speed of 160 memory cycles during the active display. In 40-column text mode and all graphics modes, the video refresh logic needs 80 cycles (80 bytes per line, think of the attribute bytes in text mode!) per line, so the memory system alternates between one cycle that can be given to the ISA bus and one cycle for display refreshing.
In 80-column text modes, the display refresh needs to fetch 80 character codes and 80 attribute codes during the active part of a scanline, which mean it will take *all* available memory access time slots during the active period. The active period is around 40µs, so in the worst case, you would need to add 40µs of wait states until there is an unoccupied time slot. This is forbidden, because there is no memory refresh during wait states, and the IBM PC architecture needs a memory refresh cycle every 16µs.
What the CGA card does: It executes the bus video memory access cycles in the time slots designated for processor access even in 80-column text mode. The address requested by the CRTC is substituted by the address requested by the ISA bus, and the data lines obviously also contain the byte read or written by the CPU, not the byte required for display refresh. Nevertheless, the display refresh circuit grabs the data from the memory data lines and treats it as if it were the data required for memory refreshing.
and to this day people think VRAM used in GPUs are different, but no, its just different timings because the traces are shorter and more bits. PCs transfer from RAM at 512 bits, GPUs transfer from RAM at 4096 bits, it just uses more channels with thigh timing, but basically its the same kind of memory. GDDR5 is DDR4
@@monad_tcp i vaguely recall a few designs with dual ported RAM, but RAM got a lot faster and dense very quickly in the early 80s to 90s. I remember reading up on the Amiga designs with VRAM and .. well, then RAM got cheaper and faster.
Combined with wiring memory in parallel - even just using the fast page mode of DRAMs helped - stuff suddenly had freed up cycles.
Then when companies started rolling ASICs they would frequently put a small FIFO in between the system bus and the graphics subsystem bus so you could buffer writes from the CPU -> graphics RAM without requesting wait cycles.
The font data is loaded into the shift register before the attribute data is read, so it won't have the attribute set for wide font when the font data is being read
Ah yes, ok makes sense! It's always offset by one character. (Verified as I've used this card a bunch more.) I suppose this means there really is no way to fix this problem without massive re-engineering?
@@adriansdigitalbasement2 Not if you're using the attribute, no. CGA memory is pairs of bytes, the character code followed by the attribute, so the attribute is always read second. You'd need to come up with some other way of switching between the fonts, which won't be as good as using the attributes...
Maybe instead of cutting the trace and permanently pulling enable pin high, it would be worth adding a capacitor there. So that it stays on during brief interruptions (like, when scrolling), but still keeps off until initialized.
Some VGA drivers use CACHE write-back policy to speed up video memory manipulation ; you write to cache memory instead of actual video memory in the card and then (i supose in blank interval) is flush to the video card (or something like that, i dont remember specific)
My first computer was an IBM 8088 with a CGA video card. We got it used from a thift shop for a few hundred dollars.
10$ from a neighbor moving in 93 go i miss it an idiot tossed it.....
As a TurboPascal programmer i can say that probably few programs used DOS routines to write on the screen, some used BIOS but even TurboPasacal have option to bypass BIOS so that's why you have diffrent results with diffrent programs
Yep, most things, especially later DOS stuff, wrote directly to hardware.
Hi Adrian. IBM probably put the double-pixel font into the character ROM in case you use the composite video output, otherwise you’d get the color fringing that one sees on an Apple //e in 80-columns mode, or in certain games that try to draw their own text into the hi-res screen. 😊
Not me screaming "Relaunch the browser and update already!"
That one-character-per-frame mode simulates ~600bps (for 8N1 equivalent)
'Whatever is rightly done, however humble, is noble.' - Henry Royce
You know, that weird first character not being double width in the flashing mode, reminds me of how the text looks in that first Civilisation game ... Or is that just my bad eyes?
Sorry if I missed a bit, but do we know how it actually does the blinking - does it just omit a character for that cell and only draw the background or is it a special glyph or something?
I think mods are fine, as long as you put a sticker to say what you did. I buy/find a lot of this hardware with wires and mod and I am not sure why, and takes time to reverse. Otherwise, welcome, there are many in the market anyways, some original, some modded.
38:50 Difference is in frequency but also in pulse width which is not 50/50 for hsync
funny, but I would hate the snow :)
Is there a mod to prevent both the flashing and snow and not break certain software?
Your character set mod is delayed by one character because the character generator address needs to be available before the character generator output and character attributes are latched. You could try tapping into pin 3 of U35 instead of pin 2.
Yes, by the way VI uses a alternate text buffer.
There are a lot of remake CGA cards on eBay at the moment.. 50 AUD.
As an academic exercise, the mods and investigation surrounding them were very interesting.
The fact you posed the question to the audience regarding butchering what is presumably a genuine IBM CGA card suggests you at least belatedly realised that the activities would raise the hackles of some viewers.
- Ultimately, it's your board, you have at least one other and as you point out, you'd already resurrected this one from a scrap pile, from where it was in a heavily corroded state.
(I'd tin and wick off the excess solder to protect the exposed copper on the edge connector, BTW - precursor and material to gold plate that exposed copper is horrendously expensive)
- On the other hand, having resurrected a genuine IBM CGA card, it would have been nice to have it in as pristine condition as possible.
- The counter-argument to that is, had you done these mods to a supposed 1:1 clone of an O.G. IBM CGA card, there's always the doubt that it is 100% electronically equivalent to "the real thing", so doing same mods on a clone board may generate false positive and/or false negative findings!
@9:50 Download in die 80”? From a BBS I think or you get it via a computer club.
My grandfather did the one pixel font mod for my dad when he was a kid.