Uploaded February 2023 | Updated September 2026, 2 weeks ago
This code is a sub-part of this broader example:
github.com/voidstar78/5110VEMU/blob/main/bin/sample7_mega.asm
There are multiple PALM assembly examples in that folder:
github.com/voidstar78/5110VEMU/tree/main/bin
This is not vector graphics. These were found as a perfectly arranged set of font apparently intended for this purpose (of cycling through binary sequences for diagnostics). There is an "upper" and "lower" portion to this font, so you can extend the count past 16-bits (to 20-bits total).
This is an arrangement of the first 64 font symbols stored in the IBM 5110 character set ROM, representing four style sets of 16-character sequences. This arrangement allows users of the system to quickly convert internal binary values (in memory or in registers) into a corresponding visual symbol that depicts the value of each individual bit within a byte. The sequence here only uses one of the upper styles (group two), then cycles through all 16 of the lower styles within that same group in order across 4-bytes.
For example, if a register contains the binary value of 0101 1010 1111 1100, we would convert this to ASCII as follows: reserve memory for the string (e.g. 4 bytes + 1 null terminator character, so 5 bytes), process each nibble (4-bits) into a lookup table, and gradually build up the string "5AFC\0". Numerals (0-9) would need to be indexed differently than letters (A-F), making the conversion typically be a slow subroutine (since in normal ASCII, A-F and 0-9 are not sequential groups).
But if your system has a font that conveys the digital/binary arranged in the natural order of 0-F (or 0 to 15), then no conversion is necessary: use the natural binary value to just index directly into the character set to get the equivalent representation.
And that is what is being done here: the internal processor of the IBM 5110 has an 8-bit ALU but offers 16-bit registers. A small 16-bit counter program was written and is being executed to cycle through all values 0000 to FFFF (coordinated across two registers). Instead of converting the current count from binary to "hex ASCII" (or "hex EBDIC" in the case of the 5110), each byte of the 16-bit count is indexed directly into the second group of the IBM 5110's character set. The binary pattern of each byte is then visually represented, with a short line for "1" (one) and an empty gap for "0" (zero).
The four white symbols shown here represent the 2-bytes of the 16-bit count (4-bit * 4) in order of MSB (most significant) to LSB (least significant). The LSB (on the right) cycles very quickly relative to the MSB (on the left) that increments much more slowly.
Another perspective here is that this depicts the binary "power of two" sequence (that is, depicting how much work/effort it takes to get to the next power of 2).
For more information about the IBM 5100 and IBM 5110 character sets, see:
https://voidstar.blog/ibm-5100-character-sets/
03:56 Reduced speed to show roll over to 0x8000 (half way point!)
04:08 Alternate version (different filter and tempo)
10:02 Amy's Flashlight
Audio:
Oxygene 9 (1998)
Ayla Megamix
This code is a sub-part of this broader example:
github.com/voidstar78/5110VEMU/blob/main/bin/sample7_mega.asm
There are multiple PALM assembly examples in that folder:
github.com/voidstar78/5110VEMU/tree/main/bin
This is not vector graphics. These were found as a perfectly arranged set of font apparently intended for this purpose (of cycling through binary sequences for diagnostics). There is an "upper" and "lower" portion to this font, so you can extend the count past 16-bits (to 20-bits total).
This is an arrangement of the first 64 font symbols stored in the IBM 5110 character set ROM, representing four style sets of 16-character sequences. This arrangement allows users of the system to quickly convert internal binary values (in memory or in registers) into a corresponding visual symbol that depicts the value of each individual bit within a byte. The sequence here only uses one of the upper styles (group two), then cycles through all 16 of the lower styles within that same group in order across 4-bytes.
For example, if a register contains the binary value of 0101 1010 1111 1100, we would convert this to ASCII as follows: reserve memory for the string (e.g. 4 bytes + 1 null terminator character, so 5 bytes), process each nibble (4-bits) into a lookup table, and gradually build up the string "5AFC\0". Numerals (0-9) would need to be indexed differently than letters (A-F), making the conversion typically be a slow subroutine (since in normal ASCII, A-F and 0-9 are not sequential groups).
But if your system has a font that conveys the digital/binary arranged in the natural order of 0-F (or 0 to 15), then no conversion is necessary: use the natural binary value to just index directly into the character set to get the equivalent representation.
And that is what is being done here: the internal processor of the IBM 5110 has an 8-bit ALU but offers 16-bit registers. A small 16-bit counter program was written and is being executed to cycle through all values 0000 to FFFF (coordinated across two registers). Instead of converting the current count from binary to "hex ASCII" (or "hex EBDIC" in the case of the 5110), each byte of the 16-bit count is indexed directly into the second group of the IBM 5110's character set. The binary pattern of each byte is then visually represented, with a short line for "1" (one) and an empty gap for "0" (zero).
The four white symbols shown here represent the 2-bytes of the 16-bit count (4-bit * 4) in order of MSB (most significant) to LSB (least significant). The LSB (on the right) cycles very quickly relative to the MSB (on the left) that increments much more slowly.
Another perspective here is that this depicts the binary "power of two" sequence (that is, depicting how much work/effort it takes to get to the next power of 2).
For more information about the IBM 5100 and IBM 5110 character sets, see:
https://voidstar.blog/ibm-5100-character-sets/
03:56 Reduced speed to show roll over to 0x8000 (half way point!)
04:08 Alternate version (different filter and tempo)
10:02 Amy's Flashlight
Audio:
Oxygene 9 (1998)
Ayla Megamix
![Destiny Hunter playthrough on original Commodore PET 4016 hardware
In this video I describe some of the main game-play aspects of Destiny Hunter, a game I created in March 2021.
02:29 MAP 1 (Beach - JACK and JONAS)
05:33 MAP 2 (Meadow - JERRY)
06:20 MAP 3 (River - CROCS)
07:43 MAP 4 (Divinity Island - STRZYGA)
09:13 MAP 5 (Cave Entrance - JAMES and JUSTIN)
12:01 MAP 6 (Cave - SLUAGHS)
13:18 MAP 7 (Valley - JOSEPH and JIMMY)
15:19 MAP 8 (Mountain - JASMINE)
16:52 Artwork
17:24 Game Instructions
17:36 PET Hardware
17:52 Example of Other Platforms
Originally designed for the Commodore PET (using PETSCII characters), but also ported to the Apple2, TRS80, C64, and IBM PC.
You can obtain the pre-built binary of the game (free) at
www.destinyhunter.org
(playable with multiple emulators or on actual vintage hardware)
The C source is available on github:
https://github.com/voidstar78/DestinyHunter
I try to avoid getting into the deep-technical behind-the-scenes aspects of the game. If youre interested in some of that, seek the Appendix sections of the Destiny Hunter manual (at the web link described above), which has Game Lore background, Rulebook, and other technical details (down to code memory map and design-decision notes).
Half-way through the video, I ended up with too much background neighborhood noise to really complete the commentary. Ill be adding CC commentary to cover any highlights that were missed.
Im not affiliated with either TEXELEC or TFW8B, but I ordered their products and think they are fantastic!
PET and C64 SNES GamePad adapter:
https://texelec.com/product/snes-adapter-commodore/
SD2PET floppy disk drive emulator for PET:
https://www.thefuturewas8bit.com/sd2pet-future.html
To write the game code, I just used notepad++
To compile the code and link together the binaries, I used:
CC65 (PET, C64, Apple2 versions)
Open WATCOM v2 (IBM PC version)
Z88DK (Z80/TRS-80 version)
The binaries make various system/BIOS calls, but otherwise do not depend on any particular operating system.
To reduce wear and tear on original hardware, I used emulators to help during development and testing:
VICE (xpet)
AppleWin
trs80gp
86BOX and PCem
The PET 4016 machine used in this video was upgraded to have 32KB total system RAM. Some of the ROM system calls are at above the 32K address.
TRIVIA
There are 8-maps and Divinity Island has a perfect 8x8 yin-yang as my homage to 8-bit computing! As an additional tribute: there are 8 CHIMEs (spirits), there are 8 player stats, there are 8 SLUAGHs in the cave, the game limits itself to 8 terrain types (6 are shown, 2 are special), and the map names are limited to 8 characters.
TRIBUTES... DH borrows some concepts from various historical games, such as:
Pac-Man [May 22, 1980] (naming opponents and orb is like a power-pellet)
https://www.youtube.com/watch?v CbyAk3Sn9I&t=5s
Kings Quest I [May 10, 1984] (animated interactive-story scenes)
Ultima IV Quest of the Avatar [September 16, 1985] (chimes and persistency relate to the Virtues system)
Legend of Zelda [February 21, 1986] (getting the wooden sword)
https://www.youtube.com/watch?v=4NjvG72nz4w&t=95s
1943 [June 1987] (blessing relate to concept of full-map effect: lightning-attack)
(follow-on of 1942 arcade game released in 1984)
https://www.youtube.com/watch?v=FbUN5ITWQQo&t=1405s
Sonic the Hedgehog [June 23, 1991] (cursed monsters are actually cute animals)
https://www.youtube.com/watch?v=Gsa_4s3CjmI&t=286s Destiny Hunter playthrough on original Commodore PET 4016 hardware](https://i.ytimg.com/vi/n0LiTMPaJ4E/mqdefault.jpg)




![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)




