Uploaded April 2025 | Updated September 2026, 2 weeks ago
I broke my onboard parallel and dual serial IO ports ("onboard" meaning built onto the mainboard of the system). So that's a reminder that those plugs aren't really hot-swappable! Probably in over 90% of the times there is no issue, but I'd say parallel-ports in general is more sensitive just due to having so many more pins. In my case, I was messing with the SDLPT at the time (SD-card to LPT port adapter), which probably had more activity going on across the pins. On the other hand, maybe it was just an old cap that had given up related to those ports - though on inspection, nothing apparent seemed out of place on the board. In any case, everything else on the system still worked fine.
So I disabled those onboard components (via jumpers) and already added an ISA expansion IO card as a workaround. But that only had room for 1 parallel and 1 serial on the back panel slot. I needed my 2nd serial port back (so I can use a serial-mouse while also being able to serial-connect to other systems).
I can't play original Warcraft with keyboard only! I need that mouse support. So having two serial ports helps do multi-player games and mouse at the same time (or things like use a WiModem and a mouse or file transfer at the same time).
While we're in there, let's also toss in a 16550 UART and see what happens! The 16550 chip is essentially identical to the original 8250 (pin-compatible) but has 16-byte FIFO instead of only 1-byte.
Information about this particular 386 setup is available here:
https://voidstar.blog/setting-up-a-physical-x86-pc-hardware-80386/
(includes notes about various upgrades, such as replacing the original CMOS battery)
The manual for this particular serial IO card used in this video is archived here:
minuszerodegrees.net/manuals/Diamond%20Flower%20DIO-200X%20Users%20Manual.pdf
IC (chip) parts were ordered from
(x188 and x189)
mouser.com
(16550)
digikey.com
(alternative is aliexpress.com or ebay.com, or pull from old equipment)
The video also features:
HP 4951C Protocol Analyzer (RS-232 real time collector)
PostMouse SP-345 (one of the only self-powered-over-serial drawing tablets for the PC)
Desert Strike and Jungle Strike were released in 1992/1993 (Gulf War was 1991)
Warcraft: Orcs vs. Humans was originally released in November 1994.
And that NEC PC-8001 that I mentioned...
youtube.com/watch?v=YWsarGG6Xns
This video is to also celebrate 500 subscribers. Thanks ya'll !!!
I broke my onboard parallel and dual serial IO ports ("onboard" meaning built onto the mainboard of the system). So that's a reminder that those plugs aren't really hot-swappable! Probably in over 90% of the times there is no issue, but I'd say parallel-ports in general is more sensitive just due to having so many more pins. In my case, I was messing with the SDLPT at the time (SD-card to LPT port adapter), which probably had more activity going on across the pins. On the other hand, maybe it was just an old cap that had given up related to those ports - though on inspection, nothing apparent seemed out of place on the board. In any case, everything else on the system still worked fine.
So I disabled those onboard components (via jumpers) and already added an ISA expansion IO card as a workaround. But that only had room for 1 parallel and 1 serial on the back panel slot. I needed my 2nd serial port back (so I can use a serial-mouse while also being able to serial-connect to other systems).
I can't play original Warcraft with keyboard only! I need that mouse support. So having two serial ports helps do multi-player games and mouse at the same time (or things like use a WiModem and a mouse or file transfer at the same time).
While we're in there, let's also toss in a 16550 UART and see what happens! The 16550 chip is essentially identical to the original 8250 (pin-compatible) but has 16-byte FIFO instead of only 1-byte.
Information about this particular 386 setup is available here:
https://voidstar.blog/setting-up-a-physical-x86-pc-hardware-80386/
(includes notes about various upgrades, such as replacing the original CMOS battery)
The manual for this particular serial IO card used in this video is archived here:
minuszerodegrees.net/manuals/Diamond%20Flower%20DIO-200X%20Users%20Manual.pdf
IC (chip) parts were ordered from
(x188 and x189)
mouser.com
(16550)
digikey.com
(alternative is aliexpress.com or ebay.com, or pull from old equipment)
The video also features:
HP 4951C Protocol Analyzer (RS-232 real time collector)
PostMouse SP-345 (one of the only self-powered-over-serial drawing tablets for the PC)
Desert Strike and Jungle Strike were released in 1992/1993 (Gulf War was 1991)
Warcraft: Orcs vs. Humans was originally released in November 1994.
And that NEC PC-8001 that I mentioned...
youtube.com/watch?v=YWsarGG6Xns
This video is to also celebrate 500 subscribers. Thanks ya'll !!!
![Commander X16 Audio Demo (Melodius + DreamTracker)
On hardware runtime sample of two fantastic Commander X16 software application: the ZSM and MIDI audio player Melodius and a multi-channel FM + PSG on-system audio editor called DreamTracker.
Audio Track samples credited to...
00:29 dANcE wiTH ME - SofT MANiAC 04 [YM2151+PSG+PCM]
01:57 Dans Le Rue.zsm - cerror & xylo 2009 [PSG+PCM]
03:37 Melody of Certain Feelings - SnugglyBun [PSG+PCM]
04:20 GODS_MD_HS - nicco1690 [YM2151+PSG]
05:43 keys to imagination - aleksi [YM2151]
07:48 Rising Blue Lightning - GTR3QQ [YM2151+PSG+PCM]
08:46 nouveau_cheese - dumbut [YM2151+PSG+PCM]
10:52 Watching Paint Dry - Burnt Fishy [PSG]
12:50 ProgressiveProgressions - Crisps [YM2151+PSG+PCM]
16:03 Shades of Blue - MooingLemur [YM2151+PSG]
19:34 Göte Går På Tivoli - zalza [PSG+PCM]
21:26 X16TIME - Crisps [YM2151+PSG]
27:45 RUNNING.DTR - No Doubt cover [YM2151+PSG+PCM]
33:10 TEARS.DTR - m00dawg [YM2151+PSG+PCM]
The 16x16 LED display is available here from TechDungeon.xyz
https://techdungeon.xyz/index.php/our-products/led-display-2/
I had to program the X16-themed effects myself (Arduino C-like INO files). Ill try to find the INO file and get it onto github. But TechDungeon has a baseline with many examples to start with.
This audio was on X16 DEV108 that has a YM2164 Commander X16 Audio Demo (Melodius + DreamTracker)](https://i.ytimg.com/vi/rgX4HjzRpq4/mqdefault.jpg)









![Destiny Hunter Level Editor usage overview
This is a demonstration of a level editor created for the Destiny Hunter game. Like the game itself, the editor can run on the Commodore PET.
A demo of the game itself is here: https://www.youtube.com/channel/UCClmJOq3rLUTtTNYJU9lBFA
The editor runs in a text mode whereas the game runs in a graphics mode. Essentially this means a slightly different set of characters is available between the modes. Also in the graphics mode, the font spacing is tighter which allows for adjacent text to appear as a solid shape.
The editor allows drawing a map in an easy manner, using letters to denote terrain types (e.g. W for WATER tiles) and also visually showing the blocker status of any individual tile. blockers is just the term used here to indicate that the player and challenges in the game cannot move into that cell (its blocked, like a barrier). When saving the map information to disk, there are two files:
#) the map is compressed using a simple RLE algorithm: each alternating sequence of tiles becomes a [style][count] abbreviated form. For example, a sequence of five waters is stored as W5.
The information is packed onto the actual disk slightly differently. The W5 for example is packed into a [3bit][5bit] (1 byte) encoding since that is how the information is parsed by the game, and so this saves some memory there. The 3-bit means we can only have 8 different tile types (0-7), and the 5-bits means each sequence length can only be up to 32 characters (if you pay attention, 5-bits can only represent up to 31 as a little trick, when reading the data was take N and implicitly add 1, since the existence of single pair of RLE encoding implies at least 1 character in the sequence, so we save a slightly bit of space by this implicit assumption).
Here is an example of how the first map gets encoded:
3 symbol 0 (water), 4 copies (3+1) [_ _ _] [_ _ _ 1 1]
42 symbol 1 (beach), 11 copies (10+1) [001] [01010]
128 symbol 4 (land), 1 copy (0+1)
97 symbol 3 (rocks), 2 copies (1+1)
128 symbol 4 (land), 1 copy (0+1)
38 symbol 1 (beach), 7 copies (0+1)
76 symbol 2 (grass), 13 copies (12+1)
...and so on... NOTE: the above values are in decimal - it would be more convenient for them to be in hex, but to help transfer the data from the PET to the Windows machines I use to compile the software (where these encodings get directly embedded into the code), I had to use a common set of characters (which the numbers 0-9 happened to be, but not the hex values A-F).
#2) The blockers get saved in a separate file. It could have been the same file, but just to keep things easier and more obvious, it was divided into two separate files (for example, we can alter and muck with the RLE encoding format, without impacting the blocker data format, and vice versa). Blockers become a bit mask along each entire row of the game map.
Stage 1 doesnt have a lot of blockers, so here is an example from Stage 6:
0 [0,0,0,0,0],
1 [0,0,0,0,0],
2 [0,2,0,24,0],
3 [128,3,0,240,31],
4 [255,0,0,128,113],
5 [0,0,0,0,0],
...
Rows 0 and 1 arent currently part of the map, so their codes are always 0s. This just keeps the indexing consistent between the data file and the screen, so we dont have to add or subtract by 2 all the time (small detail, but a minor example of wasting a bit of space to reduce computation needs). Row 3 and 4 in this example have a lot of blockers, and the full set of 40 rows is expressed in a 40-bit sequence (5 bytes). For each bit, it means its corresponding column (for that row) is blocked for movement by the players and challenges. There are a couple exception: its not blocked by the bow weapon, and certain creatures may be exempt from being blocked (such as flying or ghost type creatures). So thats the thing about data: its all interpretation and depends on the context. Without that context, a data stream becomes almost useless.
One extra little detail here: the bits in the blocker code sequence are written backwards. Initially I didnt do that, I kept each bit in the same order as the columns. This meant in the code, I constantly had to do 8-ColumnOffset, wasting a bit of computation time- but it made it easier to debug, since I could look at a hex sequence and verify if the expected blocker bit was set. Later I reversed this, to save the computation (but also had to resave all my blocker files). So for example, in the first blocker byte, the first column 0 is bit 0, which is on the right side of the byte, not the left.
In old days, we would draw this as such:
_ _ _ _ _ _ _ _
| ^-column 1
^ column 2
So thats what I mean by backwards, youd normally think of columns going left to right, but thats not how bits are ordered within bytes :) Destiny Hunter Level Editor usage overview](https://i.ytimg.com/vi/wXhexS-ZkhE/mqdefault.jpg)