Top all-time · #3576
Reenigne blog
Personal blog · reenigne.org/bloghardwareprogramming
Reenigne blog is a personal blog at reenigne.org about hardware and programming. Since 2011, 20 different Hacker News readers have linked it 34 times, most often “8086 Microcode Disassembled”. It is still writing: the last post was on 2026-05-23, and you can follow it by feed.
Too few sampled comments (22) to say how often HN recommends it.?
Why HN links it
HN readers link this blog for reverse-engineering write-ups on 8086/8088 microcode, CGA graphics, PC speaker music playback and DRAM refresh. These are cited in threads about CPUs, emulation and retro hardware.
Summarised by Claude from a sample of 22 HN comments that link here. Each comment is marked recommending, critical or neutral (citing without judging); how this works.
Most-linked posts?
- 8086 Microcode Disassembled8 people · 10 mentions · first linked 2020-09-03
- 8088 PC Speaker MOD player: How it’s done3 people · 4 mentions · first linked 2015-04-10
- /blog/8088-pc-speaker-mod-player-how-its-done/3 people · 3 mentions · first linked 2019-02-07
- 1K colours on CGA: How it's done2 people · 2 mentions · first linked 2015-04-08
What Hacker News says?
It was done that way in the original 8086/88: https://www.reenigne.org/blog/8086-microcode-disassembled/ (its successor the 80186 already had a divider in hardware)
Comment linking /blog/8086-microcode-disassembled/
on “Intel Microcode Decryptor”Submitted 8086 Microcode Disassembled as a story · 233 points
HN discussionOn the early PCs you could easily control the refresh rate (it was done by the timer tick), and some applications, notably games, would reprogram it to refresh less and still get away with it while enjoying a small but possibly critical boost in performance: https://www.reenigne.org/blog/how-to-get-away-with-disabling...
Comment linking /blog/how-to-get-away-with-disabling-dram-refresh/
on “Every 7.8μs your computer’s memory has a hiccup”Submitted 1K colours on CGA: How it's done as a story · 227 points
HN discussionCISC and RISC are mostly an ISA concept. Most chips are "microcoded", at least here and there. The term does not define a whole micro-architecture, esp in modern complex ones, but I'm not really sure how you would implement old school CISC chips without microcode concepts. The 8086 was microcoded: https://www.reenigne.org/blog/8086-microcode-disassembled/ . It basically means that "you" program some low level intern…
Comment linking /blog/8086-microcode-disassembled/
on “A preview of x64 emulation on Windows for ARM”Submitted 8088 PC Speaker MOD player: How it’s done as a story · 120 points
HN discussion> with the smaller CPUs you can lookup exactly how long each instruction will take and thus get the timing right Reminds me of the good old demo scene hack to get 18-bit color[1] back in the VGA days (and probably earlier) by changing the color palette per pixel through careful timing of the instructions. IIRC you ignore the pixel values entirely, writing effectively a single "color", ie palette index, and then just…
Comment linking /blog/1k-colours-on-cga-how-its-done/
on “10BASE-T using Raspberry Pi Pico with 2 GPIO pins”Submitted How do you use a computer that's 30 years old, has no monitor, and no keyboard? as a story · 71 points
HN discussionThe outro credits manage to play a MOD file just via PC speakers (which normally can just make bleeps)...quite an accomplishment! [1] [1] http://www.reenigne.org/blog/8088-pc-speaker-mod-player-how-...
Comment linking /blog/8088-pc-speaker-mod-player-how-its-done/
on “8088 MPH: We Break All Your Emulators (2015)”Submitted More 8088 MPH how it's done as a story · 56 points
HN discussionThe democoder in me thinks of "that's not a bug, it's a feature" and wonders if, like the branch delay slot, the delayed memory effect was used to squeeze in an extra instruction and save a cycle or two in optimised code. A similar trick can be found in this interesting article: http://www.reenigne.org/blog/8088-pc-speaker-mod-player-how-... This means that the 8088 will execute the unpatched version of the instruct…
Comment linking /blog/8088-pc-speaker-mod-player-how-its-done/
on “Don't remove the $(nop) command below”Submitted 80386 Microcode Disassembled as a story · 41 points
HN discussionHere you go: http://www.reenigne.org/misc/cga_1k_colours.png
Comment linking /misc/cga_1k_colours.png
on “1K colours on CGA: How it's done”Submitted 8086 Microcode Disassembled as a story · 7 points
HN discussionThe 8086's microcode has been disassembled (and is mostly documented) by the way [1] 1. https://www.reenigne.org/blog/8086-microcode-disassembled/
Comment linking /blog/8086-microcode-disassembled/
on “A look at the die of the 8086 processor (2020)”Submitted ISA Bus sniffer as a story · 3 points
HN discussionSelf-modifying code that depends on the pre-fetch queue might be the best place to look for intent. Might be easy to tell if the program is doing it for some larger purpose or simply to fail subtly or overtly if it sees unrealistic processor behavior. Indeed, in the PC world taking advantage of the prefetch queue as a sort of "loop buffer" was relatively common in demos, where a loop would patch instructions to exec…
Comment linking /blog/8088-pc-speaker-mod-player-how-its-done/
on “Classic NES Series Anti-Emulation Measures”Submitted 8086 Microcode Disassembled as a story · 2 points
HN discussionThat makes me curious; I wonder what on a modern PC relies on periodic interrupts, and would lock up the machine if they didn't occur. I know on the original PC and XT, DRAM refresh relied on interrupts but that stopped being the case with the AT: https://www.reenigne.org/blog/how-to-get-away-with-disabling...
Comment linking /blog/how-to-get-away-with-disabling-dram-refresh/
on “Speculative execution, variant 4: speculative store bypass”Submitted What are all those pins for? (2009) as a story · 1 points
HN discussionThe most amazing thing I've heard done with a PC speaker is in the last part of this equally amazing demo (starts at 6:37 --- the parts before have more "normal" beeper music): https://www.youtube.com/watch?v=yHXx3orN35Y Explanation here: https://www.reenigne.org/blog/8088-pc-speaker-mod-player-how...
Comment linking /blog/8088-pc-speaker-mod-player-how-its-done/
on “PC Speaker To Eleven”Submitted How to get away with disabling DRAM refresh as a story · 1 points
HN discussionI wrote a program called xtce-trace ( https://www.reenigne.org/software/xtce_trace.zip ) to do just this (albeit non-interactively - you just give it a program and it will generate a cycle-by-cycle trace of which lines of microcode are executed). GloriousCow aka Daniel Balsom recently fixed some of its bugs and turned it into an actual emulator ( https://github.com/dbalsom/XTCE-Blue ), though it's not finished yet s…
Comment linking /software/xtce_trace.zip
on “8086 Microcode Browser”x86 used microcode from the beginning: https://www.reenigne.org/blog/8086-microcode-disassembled/
Comment linking /blog/8086-microcode-disassembled/
on “Apple Silicon M1 Disruption”A more recent example of an finite loop with no exit condition can be found in the credits section of the 2015 demoscene production "8088 MPH". The loop (which can be found at https://www.reenigne.org/blog/8088-pc-speaker-mod-player-how... under "v:") has two jumps (one conditional, one unconditional) both backwards, and runs with interrupts disabled. The CPU's instruction pointer stays within that block until the e…
Comment linking /blog/8088-pc-speaker-mod-player-how-its-done/
on “Mel's Hack – The Missing Bits”This wouldn't be complete without mentioning the enhanced CGA version a lot of Europeans experienced via Amstrad/Schneider PCs in the 80s (they tended to be the cheapest way to get a PC here, back then). "The Amstrad used an "enhanced" CGA graphic mode, which could display 640x200 pixels with 16 colors (or grayscale)." http://www.old-computers.com/museum/computer.asp?c=183&st=1 http://www.nostalgianerd.com/amstrad-p…
Comment linking /computer/basic2.gif
on “How CGA Graphics worked [video]”> Yes, an interpreter is exactly what microcoding is. In a sense, yes, it is indeed! But when I think "microcode" then I think something like the 8086's horizontal microcode [1], where each line of microcode is wired directly to the various functional units and the microcode jumps and branches are (in some sense) determined based off (some of) the bits in the instruction register. Characteristics of microcode includ…
Comment linking /blog/8086-microcode-disassembled/
on “Glacial – Microcoded RISC-V core designed for low FPGA resource utilization”And the award for most innovative use of the manufacturing test mode goes to reenigne (of 8088MPH fame), who used it to make a web service that runs user-submitted snippets of 8086 code on a genuine IBM XT: http://www.reenigne.org/xtserver/
Comment linking /xtserver/
on “IBM 5150 POST – 'Manufacturing Test' mode”Are you sure? https://www.reenigne.org/blog/8088-pc-speaker-mod-player-how...
Comment linking /blog/8088-pc-speaker-mod-player-how-its-done/
on “Donkey.bas is 45 Years Old – 131 line of Glory”The first part of my technical writeup is now at http://www.reenigne.org/blog/1k-colours-on-cga-how-its-done/
Comment linking /blog/1k-colours-on-cga-how-its-done/
on “8088 MPH – CGA DOS Demo”