<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hacker News: GloriousCow</title><link>https://news.ycombinator.com/user?id=GloriousCow</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Mon, 25 May 2026 01:29:56 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=GloriousCow" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by GloriousCow in "80386 microcode disassembled"]]></title><description><![CDATA[
<p>The actual output of microcode disassembly is just a text file - a line of code for each microcode word, in essentially a a new dialect - a type of static assembly language. reenigne had to invent names for a lot of things, that will now become the official names of these things, unless Intel ever decides to speak up and make corrections.<p>That language can then be translated into Verilog, and has been.</p>
]]></description><pubDate>Sat, 23 May 2026 21:18:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=48251629</link><dc:creator>GloriousCow</dc:creator><comments>https://news.ycombinator.com/item?id=48251629</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48251629</guid></item><item><title><![CDATA[New comment by GloriousCow in "80386 microcode disassembled"]]></title><description><![CDATA[
<p>We also had decoded the 386's match-decoder PLA, so we knew roughly the locations of different opcodes were in the microcode itself, which was very helpful. Some opcodes have very specific operands, so would have unique field references.  Some forms only operate on EAX/AX, for example, so if you find those instructions you have a hint of how the AX register is encoded as an operand.<p>Other instructions like PUSHA and POPA are implemented as loops that iterate by incrementing the fields corresponding to registers - and we know in what order they operate.<p>Bit by bit, relation by relation, you can puzzle out the format of the microcode. Of course, this is glossing over the enormous added complexity of protected-mode operations.  This was a herculean effort by reenigne, and I don't think it is hyperbole to call it one of the more impressive human achievements I have witnessed in my lifetime.</p>
]]></description><pubDate>Sat, 23 May 2026 20:55:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=48251426</link><dc:creator>GloriousCow</dc:creator><comments>https://news.ycombinator.com/item?id=48251426</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48251426</guid></item><item><title><![CDATA[New comment by GloriousCow in "80386 microcode disassembled"]]></title><description><![CDATA[
<p>Intel had given us some clues - they had written somewhere that the 386 had 2560 microcode words.  The microcode array has 37 banks - each bank resolves one bit from the 37 bits that comprise a microcode word.  But which way to decode them? From top down? Bottom up?  Were they interleaved in weird ways?<p>Documentation from the NEC vs Intel lawsuit ended up documenting the microcode word format for both the 8088 and NEC V20 CPUs, but unfortunately, we were on our own for the 386. But we could take educated guesses - working off the 8088 field format, what additional microcode fields would a 386 add?  What fields would expand and how many bits would they need?<p>We used a lot of python scripts to decode the microcode array into 37-pixel wide, very long bitmaps, in different permutations, to see if any vertical patterns emerged that would hint to us the boundaries of microcode word fields.  And some did emerge!</p>
]]></description><pubDate>Sat, 23 May 2026 20:49:42 +0000</pubDate><link>https://news.ycombinator.com/item?id=48251374</link><dc:creator>GloriousCow</dc:creator><comments>https://news.ycombinator.com/item?id=48251374</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48251374</guid></item><item><title><![CDATA[New comment by GloriousCow in "80386 microcode disassembled"]]></title><description><![CDATA[
<p>I worked a bit on the extraction process so I can chime in here a bit. The first part is to just mark the x,y locations of where all the bits are, generally by the intersection of the rows and columns of the microcode array.<p>Then you have to classify them as 0's or 1's. Each is visually distinct, a 1 being encoded by the presence of a transistor and a gap in the polysilicon. We didn't have to guess which is which is by the nature of Intel microcode we could assume 0's were much more frequent, so a transistor meant a 1.<p>There are some automatic tools designed to perform this work via color thresholding, but they didn't work very well here because some of the mosaic was blurry, and a lot of dust had crept in which created false 1 bits.<p>Instead, we trained a convolutional neural network to classify the extracted bit regions into 0's and 1's.  This was overlaid back onto the original mosaic as white or black squares at 50% opacity.<p>Then we spent several long, tedious days just checking the results for errors. Finally we had the raw 2d array of bits - the next step is to extract the microcode words from the bit array.</p>
]]></description><pubDate>Sat, 23 May 2026 20:28:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=48251148</link><dc:creator>GloriousCow</dc:creator><comments>https://news.ycombinator.com/item?id=48251148</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48251148</guid></item><item><title><![CDATA[New comment by GloriousCow in "80386 microcode disassembled"]]></title><description><![CDATA[
<p>nand2mario has made a Verilog implementation from it. It currently runs DOOM, but some of the more fiddly protected-mode bits prevent it from running full operating systems (besides DOS). I'm sure the bugs will get ironed out eventually.</p>
]]></description><pubDate>Sat, 23 May 2026 20:20:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=48251088</link><dc:creator>GloriousCow</dc:creator><comments>https://news.ycombinator.com/item?id=48251088</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48251088</guid></item><item><title><![CDATA[New comment by GloriousCow in "60fps Video on a CGA? – The GlyphBlaster"]]></title><description><![CDATA[
<p>Replacing the RAM would probably be straightforward - on the CGA its only 16K, so only twice as big as the font ROM. It's slightly trickier, considering the address lines are row and column multiplexed, and there are eight sockets to tap, and you have to be able to support reading and writing.<p>The CGA is dumb and re-fetches memory eight times per character row, so what you could do is tie in to HSYNC, so you could basically synthesize three new address lines from the row counter. That would give you a virtual 128K of video memory - a single character cell could then have 8 different sets of foreground and background colors. You could make some pretty impressive composite art with that!<p>I will likely do this for fun at some point, because I want to see "Never Gonna Give You Up" in the classic magenta & cyan palette, but this is not going to be something that anyone else will likely ever do as the RAM is soldered in - and nobody but Omega-level nerds are going to de-solder eight chips for a meme.</p>
]]></description><pubDate>Fri, 15 May 2026 07:32:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=48145624</link><dc:creator>GloriousCow</dc:creator><comments>https://news.ycombinator.com/item?id=48145624</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48145624</guid></item><item><title><![CDATA[New comment by GloriousCow in "Snow - Classic Macintosh emulator"]]></title><description><![CDATA[
<p>Funny you mention that, I'm actually friends with twvd and we share a discord server and trade UI ideas as we both use the same GUI toolkit. Snow actually uses the disk image library I built for MartyPC.<p>Inspired is a strong word. I didn't invent the concept of an accurate emulator, although I'm certainly a fan of his approach.</p>
]]></description><pubDate>Thu, 26 Jun 2025 17:52:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=44389663</link><dc:creator>GloriousCow</dc:creator><comments>https://news.ycombinator.com/item?id=44389663</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44389663</guid></item><item><title><![CDATA[New comment by GloriousCow in "A cycle-accurate IBM PC emulator in your web browser"]]></title><description><![CDATA[
<p>MartyPC brings cycle-accurate IBM PC emulation to your web browser.<p>Run Area 5150 at 60fps on your phone!<p>Almost every feature from the desktop version is present if practical:<p>- View the realtime state of nearly every component of the system.
- View live disassembly of CPU instructions.
- Edit registers and memory.  
- Slow down or speed up the system.
- Peek on how games draw their graphics with the Memory Visualizer.</p>
]]></description><pubDate>Sun, 04 May 2025 17:19:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=43888008</link><dc:creator>GloriousCow</dc:creator><comments>https://news.ycombinator.com/item?id=43888008</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43888008</guid></item><item><title><![CDATA[A cycle-accurate IBM PC emulator in your web browser]]></title><description><![CDATA[
<p>Article URL: <a href="https://martypc.net/?mount=fd:0:Area%205150%20(Compo%20Version).img">https://martypc.net/?mount=fd:0:Area%205150%20(Compo%20Version).img</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=43888007">https://news.ycombinator.com/item?id=43888007</a></p>
<p>Points: 158</p>
<p># Comments: 25</p>
]]></description><pubDate>Sun, 04 May 2025 17:19:14 +0000</pubDate><link>https://martypc.net/?mount=fd:0:Area%205150%20(Compo%20Version).img</link><dc:creator>GloriousCow</dc:creator><comments>https://news.ycombinator.com/item?id=43888007</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43888007</guid></item><item><title><![CDATA[New comment by GloriousCow in "Hide Photos on Floppies with a Flux Imager"]]></title><description><![CDATA[
<p>This isn't necessarily a new technique, as black and white art has been put on floppies before: <a href="https://github.com/bzotto/picturedsk">https://github.com/bzotto/picturedsk</a><p>But the new wrinkle here is support for grayscale, meaning photos or other grayscale artwork can now be put on a disk.<p>We can even put the art inside of valid sectors to keep the disk appearing completely normal to casual observation from a host computer.</p>
]]></description><pubDate>Sun, 01 Dec 2024 18:07:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=42289720</link><dc:creator>GloriousCow</dc:creator><comments>https://news.ycombinator.com/item?id=42289720</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42289720</guid></item><item><title><![CDATA[Hide Photos on Floppies with a Flux Imager]]></title><description><![CDATA[
<p>Article URL: <a href="https://github.com/dbalsom/fluxfox/tree/main/crates/png2disk">https://github.com/dbalsom/fluxfox/tree/main/crates/png2disk</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=42289719">https://news.ycombinator.com/item?id=42289719</a></p>
<p>Points: 10</p>
<p># Comments: 4</p>
]]></description><pubDate>Sun, 01 Dec 2024 18:07:22 +0000</pubDate><link>https://github.com/dbalsom/fluxfox/tree/main/crates/png2disk</link><dc:creator>GloriousCow</dc:creator><comments>https://news.ycombinator.com/item?id=42289719</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42289719</guid></item><item><title><![CDATA[New comment by GloriousCow in "PC Floppy Copy Protection: Xemag Xelok"]]></title><description><![CDATA[
<p>For the ones that I make to look pretty, the data is colored in buckets of 8 bits, using the bit-count per byte to select a shade in 8 steps from 0-255. So there's at least 8 times less data than you would need.  Then it is downsampled 4x to get nice antialiasing, so that is more data loss.<p>I do have a bit-mode, and if you rendered at high enough resolution you could do it, maybe something like 32k x 32k.  But this is a very inefficient way to store a disk image. :)</p>
]]></description><pubDate>Sun, 06 Oct 2024 22:45:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=41760991</link><dc:creator>GloriousCow</dc:creator><comments>https://news.ycombinator.com/item?id=41760991</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41760991</guid></item><item><title><![CDATA[New comment by GloriousCow in "PC Floppy Copy Protection: Xemag Xelok"]]></title><description><![CDATA[
<p>Or when you win solitaire!</p>
]]></description><pubDate>Sun, 06 Oct 2024 17:46:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=41758723</link><dc:creator>GloriousCow</dc:creator><comments>https://news.ycombinator.com/item?id=41758723</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41758723</guid></item><item><title><![CDATA[New comment by GloriousCow in "PC Floppy Copy Protection: Xemag Xelok"]]></title><description><![CDATA[
<p>In this post in a series on PC copy floppy protections, we take a look at XEMAG duplication's "Xelok" scheme.<p>Xelok was quite devious on the Apple II, implementing "fat tracks" that could not be produced with a conventional disk drive.  However the PC doesn't allow such tricks, so Xelok appears a bit different on the PC platform.<p>We take a look at two titles that use it, Sargon III and The Ancient Art of War.<p>We also take note of a rather amusing bypass for this protection!</p>
]]></description><pubDate>Sun, 06 Oct 2024 17:32:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=41758633</link><dc:creator>GloriousCow</dc:creator><comments>https://news.ycombinator.com/item?id=41758633</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41758633</guid></item><item><title><![CDATA[PC Floppy Copy Protection: Xemag Xelok]]></title><description><![CDATA[
<p>Article URL: <a href="https://martypc.blogspot.com/2024/10/pc-floppy-copy-protection-xemag-xelok.html">https://martypc.blogspot.com/2024/10/pc-floppy-copy-protection-xemag-xelok.html</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=41758632">https://news.ycombinator.com/item?id=41758632</a></p>
<p>Points: 10</p>
<p># Comments: 5</p>
]]></description><pubDate>Sun, 06 Oct 2024 17:32:11 +0000</pubDate><link>https://martypc.blogspot.com/2024/10/pc-floppy-copy-protection-xemag-xelok.html</link><dc:creator>GloriousCow</dc:creator><comments>https://news.ycombinator.com/item?id=41758632</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41758632</guid></item><item><title><![CDATA[New comment by GloriousCow in "PC Floppy Copy Protection: Vault Prolok"]]></title><description><![CDATA[
<p>An investigation into the infamous 80's copy protection scheme PROLOK that involved burning holes on diskettes.<p>Also included is an interview with Quaid Software founder, Robert McQuaid. Vault sued Quaid Software for producing CopyWrite, a utility that could copy PROLOK protected diskettes.</p>
]]></description><pubDate>Sun, 29 Sep 2024 15:39:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=41688089</link><dc:creator>GloriousCow</dc:creator><comments>https://news.ycombinator.com/item?id=41688089</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41688089</guid></item><item><title><![CDATA[PC Floppy Copy Protection: Vault Prolok]]></title><description><![CDATA[
<p>Article URL: <a href="https://martypc.blogspot.com/2024/09/pc-floppy-copy-protection-vault-prolok.html">https://martypc.blogspot.com/2024/09/pc-floppy-copy-protection-vault-prolok.html</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=41688088">https://news.ycombinator.com/item?id=41688088</a></p>
<p>Points: 63</p>
<p># Comments: 8</p>
]]></description><pubDate>Sun, 29 Sep 2024 15:39:23 +0000</pubDate><link>https://martypc.blogspot.com/2024/09/pc-floppy-copy-protection-vault-prolok.html</link><dc:creator>GloriousCow</dc:creator><comments>https://news.ycombinator.com/item?id=41688088</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41688088</guid></item><item><title><![CDATA[New comment by GloriousCow in "PC Floppy Copy Protection: Softguard Superlok"]]></title><description><![CDATA[
<p>EA's INTERLOCK protection (Marble Madness) uses deleted address marks.</p>
]]></description><pubDate>Tue, 10 Sep 2024 02:17:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=41496539</link><dc:creator>GloriousCow</dc:creator><comments>https://news.ycombinator.com/item?id=41496539</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41496539</guid></item><item><title><![CDATA[New comment by GloriousCow in "Emulating the Early Macintosh Floppy Drive"]]></title><description><![CDATA[
<p>An in-depth dive into the Macintosh floppy drive system, including the fascinating IWM (Integrated Woz Machine) custom floppy controller.  The level of fidelity to properly emulate the Macintosh disk drive is impressive, and this should be an essential resource to any aspiring Macintosh emulator developers.</p>
]]></description><pubDate>Sun, 25 Aug 2024 16:04:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=41348339</link><dc:creator>GloriousCow</dc:creator><comments>https://news.ycombinator.com/item?id=41348339</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41348339</guid></item><item><title><![CDATA[Emulating the Early Macintosh Floppy Drive]]></title><description><![CDATA[
<p>Article URL: <a href="https://thomasw.dev/post/mac-floppy-emu/">https://thomasw.dev/post/mac-floppy-emu/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=41348338">https://news.ycombinator.com/item?id=41348338</a></p>
<p>Points: 91</p>
<p># Comments: 42</p>
]]></description><pubDate>Sun, 25 Aug 2024 16:04:21 +0000</pubDate><link>https://thomasw.dev/post/mac-floppy-emu/</link><dc:creator>GloriousCow</dc:creator><comments>https://news.ycombinator.com/item?id=41348338</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41348338</guid></item></channel></rss>