Jim Leonard (Trixter), a demoscene programmer, writes about IBM PC and 8088 hardware, demos, and retro computing history.
HN commenters point to it as a detailed, openly shared source on demoscene techniques, especially the 8088 MPH and 8088 Domination posts.
I learned this lesson many years ago, back in the early/mid 90s. There was a well known American developer named Tran (Thomas Pytel) who wrote some mindblowing stuff back in those days...very proper hacky things in bizarre screen modes using more colors than should have been possible, and using sound hardware in crazy ways to produce more sound channels than anybody thought possible in those days, and all running faster than should have been possible on the hardware of those days. Incredible optimized stuff for the early 90s.
My friends and I would always try and by the best hardware available to run this stuff as quickly as possible. The first person with a 486dx2-66 pretty much ended up running their system on display mode during meetups on all the old demos.
What did Tran have? A 386sx16 if I recall. A machine that was so slow, so last gen, that he was probably unable to even watch most of the demoscene releases available at the time. No math co-processor, 16MHz, and yet he managed to write an amazing amount of highly influential and important code used far outside of the demoscene (most notably PMODE http://en.wikipedia.org/wiki/PMODE which was used in many game productions during that era).
I remember him crediting the fact that his home machine was so slow that it forced him to optimize the hell out of his code to make it run decently, and the side effect was that people with faster machines had their minds blown. I personally think that Tran, and his works, should…
> I think I later upgraded to a 100MB IDE disk, but was still lucky.
Well, it really wasn't luck as much as keeping with the electrical specs. Do that, you'd never see a problem, and the later IDE "cable select" schemes did really help to mitigate a lot of the damage from improperly terminated cables.
> Anyway, thanks for contributing to a great OS!
Well, other than living in infamy due to introducing that bug, I didn't start there until the push to turn 4.0 from a tech demo into a real product. So really all the credit for 3.2 and earlier which set the foundation for Coherent belongs to the other guys, many of whom were long gone by the time I got there like Dave Conroy (who wrote the MicroEMACS I loved to use) and Randall Howard (who went on to found MKS). There were some great people from the earlier days still there though, like Norm Bartek, Hal Snyder and La Monte Yarroll who where there when I joined and of course Steve Ness who was the sole man behind the MWC C Compiler (much as Fred was responsible for that remarkable manual).
Also worth a mention, among all the other notable characters I remember fondly is one of the support/QA folks at MWC: Jim Leonard aka Trixter, who became a notable demoscene figure - https://trixter.oldskool.org/2015/04/07/8088-mph-we-break-all-your-emulators/
Meanwhile, in NTSC land, people were expanding the colour palette by generating interference that would be interpreted by NTSC TVs as additional colour information: https://en.wikipedia.org/wiki/Composite_artifact_colors
PAL wasn't as amenable to this sort of endeavour, so platforms that were more popular outside the US tended to focus on effects like those described here - give the impression of more colour space even when it wasn't there. Efforts like 8088mph (https://trixter.oldskool.org/2015/04/07/8088-mph-we-break-all-your-emulators/) that create much more colour than the hardware was nominally capable of are solidly tied to NTSC, and it's interesting thinking about how much the demo scene ended up split by the behaviour of their TVs.
It's simple enough to explain in a page of pseudocode
More like a paragraph... https://en.wikipedia.org/wiki/Lempel%E2%80%93Ziv%E2%80%93Welch#Encoding
Personally, I like LZ more than LZW because it doesn't have to slowly "build up" the dictionary in the same way as LZW nor need bit-I/O (because you can have an 8, 16, or 32-bit "indicator", followed by that many literal or length/distance pairs) and thus makes for an even simpler (and faster) algorithm. The only downside is that it's more asymmetric, in that compression is usually far slower than decompression (which can be faster than memcpy() - see http://www.oldskool.org/pc/lz4_8088 ) because the former has to do a lot of searching while the latter is mainly copying memory.
Huh, I'm surprised to find that you're right, unless you count NASM. Randall Hyde last updated HLA in 2015 (and it didn't support the 8086 anyway), WalterBright last updated DMC in 2013, and SDCC doesn't support the 8086. But I remember the 8086 as being a lot of needless effort that we had to cope with because it had a large installed base: near, far, and huge pointers, EMS bank switching, shitty TSRs that would stomp your registers, and so on. MS-DOS made it worse.
What are you up to? Something like https://trixter.oldskool.org/2015/04/07/8088-mph-we-break-all-your-emulators/ where the needless effort is the whole point?
If you pay extra for that. Meanwhile _any_ CRT could trade off resolution for refresh rate across a fairly wide range. In fact the standard resolutions for monitors were all just individual points in a larger space of possibilities. They could change aspect ratio as well. This can be quite extreme. Consider the 8088 MPH demo from a few years back (<https://trixter.oldskool.org/2015/04/07/8088-mph-we-break-all-your-emulators/>). See the part near the end with the pictures of 6 of the authors? That video mode only had 100 lines, but scrunched up to make a higher resolution.