Xiphod / voidstar tech
Sample #1 of Recently Tuned Chappell 1886 Upright (Fur Elise)
updated
vs
X16EMU
"Oscilliscope" for Windows
JACK2 v1.9.22
This video is a "beginner-level" reminder of what BASIC is, followed by an example of how BASLOAD can be used to incorporate and expand upon original BASIC code. Other topics covered include general use of CBM BASIC "screen editor," tokenized BASIC, and the X16 memory map.
00:57 Initial BASIC Reference Example
01:06 Refresher on Editing CBM BASIC Programs
02:37 Refresher about CBM KERNAL Quote Mode
04:01 Overview of Tokenizer BASIC
11:09 Saving BASIC Programs (extension conventions)
14:20 ISO vs PETSCII Character Sets
16:38 Converting Tokenized BASIC to Plain-text BASIC
17:09 Actual example of BASIC to plain-text conversion
18:50 Using X16EDIT to adapt line-number BASIC to BASLOAD
21:50 Reviewing result of BASLOAD generated BASIC
23:06 Example of BASLOAD Settings (Control Codes, SymFile, AutoNum)
24:44 Overview of BASLAOD SYMBOL File
25:43 Overview of the Commander X16 Memory Map
29:30 Background on PEEK/POKE History
32:14 "Ground rules" on CBM/X16 BASIC
35:51 The Large Line-Number BASIC to BASLOAD Example
36:59 Doing Large-Program Conversion on Commander X16
51:36 Epic BASLOAD Promotional Ads!
The BASLOAD manual (in PDF format) is available here
github.com/stefan-b-jakobsson/basload-rom/blob/master/docs/manual.pdf
The X16 list of support BASIC keywords is available here:
github.com/X16Community/x16-docs/blob/master/X16%20Reference%20-%2004%20-%20BASIC.md
For additional questions, come join the Commander X16 forum and/or Discord.
commanderx16.com
For the code discussed and original IBM 5100 reference, see the specific discussion here:
cx16forum.com/forum/viewtopic.php?p=35092#p35092
To learn more about 6502 assembly programming on the X16:
youtube.com/playlist?list=PLG2Yfw0DrMyN-YKuP-KWhVxPn1IVEWXfb
From left to right, these systems are
- ("3-8") a 1992 desktop Intel 80386/20MHz with MS-DOS 5.0 (2MB RAM),
- ("4-8") a 1994 Toshiba T1960CT laptop with an Intel 80486/50MHz operating WFW3.11/MS-DOS 6.22 (12MB RAM), and
- ("5-8") a 1997 IBM ThinkPad 385CD with a base 150MHz Intel Pentium running OS/2 (48MB RAM).
- ("X16") Commander X16, 2MB/65C02 from texelec.com (with no OS)
Like old people tend to do, the '386 uncontrollably emits an odd noise.
A young 8-bit X16 enters the stage immediately playing audio, which the old systems assume is some cocky adolescence about to show off some animated PETSCII. But the '386, being the only system who was actually there when the Second Reality demo was first presented in 1993, recognizes what the X16 is about to play (based on his recollection of the 1997 C64 remix demo). He rally's his pals to fire up the old software, to show this punk X16 how the original demo is supposed to be - but the results end up surprising to everyone!
Excellent demoscene software is a sacred art that is about making a system do something no one thought possible, then presenting that in some fantastic way. They represent intense concentration of effort to implement, to a level very few people can achieve since they often rely on undocumented features (or precise timing side effects). Please experience this video using a good set of speakers and a relaxed state of mind. Also be sure to enable CC (caption), the English CC describe a bit of dialog going on between the systems during the show.
The first portion of the demo is multiple angles on the same play-thru. During startup of the Second Reality SECOND.EXE software, the '386 is configured with SBPro/Poor during the play-thru. The '486 is configured with NoSound/Poor (since it has no enhanced sound hardware), the Pentium is set to SBPro/High (and using 2NDFIX.EXE). The audio during this portion is provided by the Pentium.
The second (dark-mode) portion of the demo is an uninterrupted play-thru. In this run, the '386, '486 and Pentium are all configured as NoSound/Poor. This is because the X16 is providing the audio for this portion. This is why the x86's during this run visually perform much better than the prior one. Surprisingly, each of the '386, '486, and X16 visual is fairly spot on in their timing. The Pentium struggles since OS/2 Presentation Manager and other things are also running.
NOTE: The SimCity audio near the start is coming from the Pentium OS/2 version.
NOTE: The '386 desktop was equipped with a Diamond Stealth 16-bit ISA w/ 2MB RAM. Unknown why it lost the bear-bounce while on SBPro Poor setting, but in the dark version the bear-balance was present when set to NoSound. The Toshiba and ThinkPad had their stock video card hardware (I don't recall the specific specs). The X16 is using the stock VERA module for video.
For info about the '386 build, see here:
https://voidstar.blog/setting-up-a-physical-x86-pc-hardware-80386/
My only nits are:
- The word "Aquarius+" confuses search engines, since there is a medical device of the same name
- Compatible joystick/gamepads are so far a little hard to find
But there is still active firmware update support. This is very much a fun product with several developer options, and a lot familiarity due to being Z80 based.
For info about the system, start with the following:
github.com/fvdhoef/aquarius-plus
00:39 PART 0 - Initial content overview
01:30 autoexec.example
01:36 PART 1 - CP/M Demo
03:43 PART 2 - Cassette Save/Load Demo
05:50 PART 3 - BASIC Examples (Character Set, Mouse/Timer)
07:30 PART 4 - ESP32 WiFi Usage Examples
09:46 PART 5 - Master System (Modern-Make Software)
14:26 PART 6 - PT3 Audio Demo
The doll in the thumbnail is the Aquarius barbie from Mattel (the company that makes various lines of toys, and also released the original Aquarius system in the early 1980s). The original barbies were tagged as being suitable for ages 3 and up.
The Model 100 and 102 remain nice portable systems. The disk drive interface makes use of the standard 5.25" disks. Essentially any Composite monitor can be used.
My parents watched All Creatures Great and Small in the 1980's. Years later, I've come to appreciate how relaxing and splendid that series was. Cheers to simpler times. This is dedicated to them and to all who need something peaceful to remember.
My young memories of the show are mainly the intro theme, played to the sequence of a car roaming through the countryside. The homage here is following a golf cart likewise in a countryside, on a nice weather day where I set out to check the mail that is at the end of a five mile drive.
The song is located here:
archive.org/download/tvtunes_1538
or
archive.org/download/tvtunes_13600
The code is written using BASLOAD, a native utility on the X16 that takes plain-text BASIC that does not require line numbers, and adapts it over to regular CBM BASIC. But most of the principles in the code are easily adapted into other languages.
The 6502 online virtual assembler is located here:
https://www.masswerk.at/6502/assembler.html
The software works using an ISR (interrupt service routine) that is ran inline with the main system kernel. SEMIBIGFONT is used to spruce up the program a little bit. Originally I was going to have the received ASCII get streamed out in this larger font, but then I realized it would be more fun to pipe it straight to the kernel and actually use the system remotely -- but this only works as long as whatever you are invoking doesn't also make heavy use of the Golden RAM region - though there are ways to work around that, such as: the ISR could go into banked memory instead, or a more appropriate way is to adjust BASIC's MEMTOP and place the handler above there.
The X16 system used is my custom made "Carbon Fiber" Developer Edition PR900, that can run for 10+ hours on battery (including with the 12" VGA LCD), built in speakers, 4-port SNES connections, IEC emulated disk drive, and a convenient USB charger port. Next to this on the left is the humble X16 #PR16, just taking it easy running Tony's excellent SLIDESHOW. Its blue case is from bitbybitsynths.com and is described here:
https://voidstar.blog/commander-x16-assembling-the-x16-dev-edition-laser-cut-case/
The code presented here is available in the Commander X16 forum:
cx16forum.com/forum/viewtopic.php?t=7953
SEMIBIGFONT is described here:
cx16forum.com/forum/viewtopic.php?t=7910
BASTERM is described here:
cx16forum.com/forum/viewtopic.php?p=34336
(NOTE: ROMTERM is better and can handle higher speeds, BASTERM is mostly intended just for initial exploration into how interacting with the serial card works - and is generally limited to 2400 baud)
Original VIA/ISR handling on X16 is described here: (be aware you must add "-via2" to the command line of the emulator to activate the VIA#2 component, but the emulator itself does not include a model of the serial port expansion card-- but the VIA/ISR example below is independent of the serial card)
cx16forum.com/forum/viewtopic.php?p=30095
The Tandy Model 100 and 102 systems were sold in the mid-1980s. Millions were sold and they still remain very versatile and enjoyable systems.
An admin is given a visual image of the selected card, to then try to mentally convey to the client. But mainly, this is a demonstration of across-serial communication using BASIC and the X16 system. Also, the loud fan noise is from the HP Protocol Analyzer in the center (not required, but using it to just monitor the token data exchange between the admin and client software).
The ZENER.PRG program is available in the X16 community forum software Download section.
In the modern day, we analyze protocols typically using Wireshark. But specialized devices like this were used in the past to help troubleshoot problems "in the field" (or also for reverse engineering other systems that lacked documentation).
One feature not demonstrated here is the "HEX" mode by pressing F1, where data can be shown in the raw hex values rather than interpreted ASCII values. As can be seen, this system uses a custom font to depict both TX and RX sides of the signals.
04:23 In this section of the video I wanted to emphasize the difference in the amount of CTS/RTS signals between 19200 and 300 Bps (where obviously at higher speed you have more need for flow control, which are extra signals that decrease the efficiency). At 300 Bps, CRT terminals became faster than line printers. At 2400 Bps, systems became faster than most touch typists (and in keyboard-to-keyboard interaction, you don't gain anything going much over 2400 Bps). But for file transfer and "pure data exchange" then 9600 Bps and higher starts to be a game changer. This vintage of HP Protocol Analyzer can only support up to 19200 Bps.
This demo happens to use two Commander X16 65C02-based systems with matching TexElec network/serial cards. But the HP Protocol Analyzer can work with any standard RS232C equipment, which have been commonly available since the mid-1960's.
Here is an overview of one approach to a quick-fix to decreasing the volume of an old PC.
This is a two player game, each player has limited energy and 3 types of weapons. There is also a teleport feature. Beware of your own bombs!
The code is about 1200 lines of PALM assembly, using ASW (Arnold's AS assembler for Win32) results in a 2696 byte machine code file that is loaded into address 0x4000. Having no serial or comm. card for my 5110, I "streamed" the binary in through the keyboard lines from an Arduino-based adapter.
For more info, see forum discussion here:
cx16forum.com/forum/viewtopic.php?p=33320#p33320
Why carbon fiber? To do my part in saving the planet, carbon can be extracted from CO2 emissions and re-purposed back down into a dense 3K twill woven fiber pad! At 5mm thickness, it is very rigid and easy to work with (very little sanding was necessary and none of it ever cracked).
This sequence has three different audio background.
00:01 Option 1 (DJ Visage, The Return)
01:35 Option 2 (DJ Hyperlite, Warm Up)
03:09 Option 3 (MC Mario, Dance Mix)
04:44 Equipment Summary
Here is a description of the main interesting points in the sequence:
002 partial eclipse has started. The black spot near the center is a "sun spot" (another one is slightly lower further to the left).
006
014
016
019
020 the eclipse (of the moon) is approaching the sun spot that is on the surface of the sun
030
066
068
069
070
071 the eclipse of the moon has passed the centrally located sun spot
------
072 Speed Up: the sun (solar) filter has been removed during a couple minutes before totality. The partial remaining portion of the sun (without the solar filter) overwhelms the sensor, so it appears "blown out" with no surface features of the sun.
074
075
079
081
083 last remaining portion of the sun remains uncovered
084 Totality! Solar Eclipse Totality achieved! (the white dot at bottom right is a revealed solar flare)
085 Totality!
086 Totality!
087 Totality!
088 Totality!
089 Totality!
090 Clouded Totality (clouds in the Earth atmosphere adjust the apparent ring around the sun)
091
092
093
094
095
096
097
098
099
100
101
102
103 start of "diamond ring"
104
105
106
107
108 diamond ring
109
111
112
113
114 "Diamond Ring" effect is finished, now see edge of the sun. (solar filter is still removed)
116
117
118
119
120
121
124 Solar Filter re-attached to scope. While faint, you can start to see surface feature of the sun again.
125
127
128
129
130 Speed Up / Fast Forward
134 past sun spot again
136
138
139
140 heavy clouds appear
141 heavy clouds appear
Seriously, it was raining and miserable today. So I stayed inside and decided to figuring out how to use that exposed internal 16-pin DIP socket inside the NEC PC-8001 from 1979.
I had once given up on this, but then came across some PC-8001 reference information that had been translated into English. Now using just three wires, you can get your NEC PC-8001 system onto the internet!
For more info about this, refer to:
https://voidstar.blog/nec-pc-8001/
forum.vcfed.org/index.php?threads/nec-pc-8001-trying-to-make-rs-232-cable.1247409
X16 DevBoard: www.texelec.com
OtterX: www.vectorheadarcade.com
The X16 DevBoard is the official licensed Commander X16 system, complete with multiple expansion slots, onboard support for 2MB RAM, up to 4x SNES gamepads, dual VIA, and excellent active community support.
But for those a bit more experienced with hardware: the OtterX is an amazing compact ITX-form factor kit. Limited to a single expansion slot and onboard 512KB RAM, but it does maintain the IEC port and full VERA support (meaning still has VGA, Composite, S-Video output and onboard SD-card reader). It is made available by a long time X16 contributor (one of the X16 SMC firmware developers).
Here is a sample of some casual gaming on the X16 DevBoard while "stress testing" the OtterX16 by listening to some ZSM formatted audio. All audio in this video is coming from the OtterX board (and through the white speakers shown). While not the best audio capture, it is authentic to what the hardware is producing. And "click/clacks" are from the SNES controller, not the keyboard.
00:08 Rally Speedway [Johan Kårlin]
03:26 Scumbotron [EyeballKid]
06:08 Petaxian [borgar ]
10:05 Quarx [8BitGuy]
12:50 PETSCII Side-Scrolling Platformer [Jimbo]
(Melodius is by MooingLemur)
There are many other great games available on the X16. For this set I focused on ones with good SNES gamepad support.
These are both fun boots-up-to-BASIC low-power 8-bit systems to chill with! Come check out the available developer tools and other related news and projects from the X16 community:
commanderx16.com
github.com/X16Community
(also on Facebook and Discord)
NOTE: I have a special project that I've been working on, that is hopefully ready to present in about a month - a working Poly-88 from 1976!! Stay tuned...
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). I'll 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
There is an excellent Commander X16 emulator available, to help start getting familiarity with the system. While there are some similarities with the C64 (including use of the 6502 instruction-set and the PETSCII character set with console control codes), the X16 is quite its own system.
WEB EMULATOR:
commanderx16.com/webemu/x16emu.html
SOURCE AND RELEASES: (click Releases on the right side)
github.com/X16Community/x16-emulator
For notes on the L3 KeyAT-4 PS/2 used to automate the keyboard inputs, refer to here:
cx16forum.com/forum/viewtopic.php?t=6739
An introductory manual to the X16 is available here:
github.com/voidstar78/X16_MANUALS/blob/main/CommanderX16_IntroducingYourX16_Manual_DRAFT_REV8.pdf
Featuring the X16 logo in 3D!
This is just my own "celebration video" of this moment, but I hope this also gives other folks insight to the potential here to just have a bit of fun again on some real hardware. No ads, no login. Just turn it on and get back to First Principles of computing!
My notes about the X16 are located here:
https://voidstar.blog/voidstars-commander-x16-notes/
00:39 Confetti BASIC program
01:00 Crazy Snake Epic Run!
02:20 Mirrors Edge Audio Demo
04:17 Calliope Audio Demo
05:53 Take to the Skies Concept Demo
06:46 Planet X16 Concept Demo
08:20 Memory Test
08:39 Using SD2IEC Device 9
09:19 BadApple Visual Demo
10:16 MENU Command Usage
10:51 Color Bars Sample
11:00 Sonic on CRT Audio Demo
11:23 Montezuma's Revenge! Play Demo
15:51 Chase Vault Play Demo
17:22 XIXIT Play Demo
19:40 XIXIT Level 19 Issue (has been fixed!)
19:55 Crazy Lander Play Demo
20:36 Crazy Lander Level 2
20:56 Crazy Lander Level 3
22:18 Crazy Lander Level 4 Final Pass
23:23 One Happy Customer
NOTE: This video captures my first couple hours with the system, I wrote some BASIC and then tried the demos and sample games for the first time.
There is no ink within the printer, it uses a heated head instead. For plain paper, the ribbon cartridge is needed, but thermal paper can be used also (by just removing the ribbon cartridge).
After removing all the expansion cartridges, I found that the PC-5000 internal ROM has a built-in sample program that includes an option to print a full production description. This includes a bulleted list of product features that fits on a single page of paper.
While the print quality appears "poor" keep in mind two things: (1) there is a dial to adjust the "print contrast" that can increase the quality and (2) this printer and ribbon cartridge hasn't been used in over 30 years.
This was compiled with cc65 (using a mixture of C and 6502 inline assembly):
- switching video modes
- writing text to the screen
- monitoring key presses and modifiers
- binary to string conversion and padded right alignment
- accessing the RTC jiffies counter
NOTE: For improved performance and less memory footprint, this is not using the standard C library.
This is a story of how the computer came to be an affordable home consumer appliance. Those of GenX and earlier are the last generation of people to know the world before "a computer in every home" became a reality. Nearly all the core aspects of Computer Science were established in academia before the 1970s, but as surplus equipment following the Apollo program made its way into the garages of hobbyist and tinkerers, a "computer liberation" movement began with a direct intention of making all this capability available to the masses. This is a brief highlight of some of the computer systems involved in that transition, where within a decade the personal computer went from still costing more than a house to down to under $1,000, and software-applications began to become their own packaged commodity.
** Credits **
voidstar (script and video editing)
CarrionCrow (background art and composition)
Mandie (narration)
For the Aaron edition (which has greater details in its "More" Video Description):
youtube.com/watch?v=dTHV-qRf-0c
A web site link with further details is IN-WORK, see here:
https://voidstar.blog/domesticating-the-computer/
Additional details here:
https://voidstar.blog/ibm-5100-palm-assembler/
This PALM assembly is over 1300 lines and compiled to 1538 bytes.
The serial interface took 36 seconds to transfer this binary into the IBM 5110's DCP memory. This works out to a transfer rate of about 400 baud (or a person typing this in at about 500 word per minute, which would blow up their keyboard).
Application demo includes:
- output a given string
- 32-bit (two register) main-loop counter
- WASD keyboard input handling
- 1-9 and 0 keyboard input and a representation of binary conversions
- invoking the CRT beeper at varying delay times in response to keypresses
The source code is here:
github.com/voidstar78/5110VEMU/blob/version2/bin/sample7_outc.asm
All of this same PALM code would run on an IBM 5100, only the data values for the keyboard scan codes and screen "symbol codes" would be different.
youtube.com/watch?v=alI_RnLbamo
This is a story of how the computer came to be an affordable home consumer appliance. Those of GenX and earlier are the last generation of people to know the world before "a computer in every home" became a reality. Nearly all the core aspects of Computer Science were established in academia before the 1970s, but as surplus equipment following the Apollo program made its way into the garages of hobbyist and tinkerers, a "computer liberation" movement began with a direct intention of making all this capability available to the masses. This is a brief highlight of some of the computer systems involved in that transition, where within a decade the personal computer went from still costing more than a house to down to under $1,000, and software-applications began to become their own packaged commodity.
*** Credits ***
voidstar (script and video editing)
CarrionCrow (background art and composition)
Amigo Aaron (narration)
Thank You for direct feedback in reviewing content by the following "I-was-there" individuals:
Dennis Roberson (SCAMP/IBM 5100 lead engineer)
Dan Bricklin (VisiCalc)
Scott Adams (AdventureLand games)
Ken Williams (Sierra OnLine)
Thank You for feedback and advise (and your patience dealing with my many revisions) the various members of the following groups:
CoCo Discord crew
retrocomputingforum.com
forum.vcfed.org
cctalk mailing distribution
*** Audio ***
rainforest
sunday evening
Airea 51
venetian canals
A high-resolution copy of the background mural is available here:
github.com/voidstar78/mural1970/tree/version2
For an even deeper historical perspective, highly recommend the following:
Brian Stuart "Whence Came the Personal Computer" (includes PDP-8 usage demo)
1513041.mediaspace.kaltura.com/media/Whence+Came+the+Personal+Computer/1_dq6va75g
Other outstanding world-class Vintage Computing Encyclopedia resources:
oldcomputers.net
www.oldcomputermuseum.com
computerhistory.org
A web site link with further details is IN-WORK, see here:
https://voidstar.blog/domesticating-the-computer/
"The Mother of all Demos" - Douglas Engelbart (1968)
youtube.com/watch?v=2nm47PFALc8
MOSFET – The Most significant invention of the 20th Century
youtube.com/watch?v=bHwl8TdEI6k
The F-14 “Tomcat” First Microprocessor (1968-1970)
firstmicroprocessor.com
"The First Ten Years of Amateur Computing" PDF article - Sol Libes (BYTE July 1978)
tech-insider.org/personal-computers/research/acrobat/7807.pdf
The Complete History of the Home Microprocessor (decent for post 1990s content)
youtube.com/watch?v=EJh4BIujpHA
US Government Census Information (compiled as of 2018)
census.gov/content/dam/Census/library/publications/2018/acs/ACS-39.pdf
"Low-Cost Remote CRT Terminals" - D.J. Theis and L.C. Hobbs
and "Software for Terminal-Oriented Systems" - Datamation 1968
http://www.bitsavers.org/magazines/Datamation/196806.pdf
"The Emerging Microcomputer" article
http://www.bitsavers.org/magazines/Datamation/197412.pdf
The Appliance Computer - 1977
archive.org/details/byte-magazine-1977-01/page/n7/mode/2up
The first complete small computer (page 74) SOL-20 [uses term of "motherboard"]
archive.org/details/byte-magazine-1976-11/page/n73/mode/2up?view=theater
"A mess of parts doth not a computer make" (BYTE magazine "ad")
archive.org/details/byte-magazine-1977-04/page/n5/mode/2up?view=theater
"History of Microcomputer Flight Simulator"
meridianoutpost.com/resources/articles/timeline-Microsoft-Flight-Simulator-history.php
Software in Bags (article)
https://retro365.blog/2019/12/20/bits-from-my-personal-collection-robert-clardy-synergistic-software-and-the-birth-of-the-personal-home-computer-roleplaying-game/
80 Micro August 1980 (TRS-80 factory)
archive.org/details/80-microcomputing-magazine-1980-08/page/n9/mode/2up?view=theater
See also "Intercom" Radio Shack magazine issues (1981):
https://texashistory.unt.edu/ark:/67531/metadc1764417/m1/1/
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 is not meant as a tutorial of any specific terminal program. But there are some "close up" shots towards the end that may help clarify how they are used.
The specific WiModem232 device I used is:
cbmstuff.com/index.php?route=product/product&product_id=60
This same model is also available for C64 and PET. Ask the shop about a case, I highly recommend a case because the edge of the LCD screen is fairly easy to crack when plugging it in without a case. And I do recommend the LCD version, to make it easier to verify what the current baud rate on the modem is.
For the DELUXE RS232 Pak:
The original versions of these are getting harder to find. What I used is a clone production out of Australia from "dr.ians_junque" (search eBay for "New RS232C Serial Interface for Radio Shack Tandy TRS-80 Color Computer 1 2 3"). While it doesn't come with the same case as the original, it does operate identical to the original and uses much of the same components.
An excellent hardware walk-through of this RS232 Pak is available here:
youtube.com/watch?v=iIsdBGWa1kI
If interested in the terminal setup on the PET side of things, I have another video with more information about PETTERM used on that system:
youtube.com/watch?v=PH7YtoxOdrI
Table of Pertinent Time Indexes
00:10 CoCo1 SerialIO Setup
00:20 Loading COMPAC with CTR-80A Cassette (CLOADM)
00:47 Powering up the WiModem232 (initial router connection)
01:33 Observing serial signal with oscilliscope
02:25 PART 2: Swapping CoCo1 to CoCo3
03:30 Machine to machine bit-bang serial communication demo
04:04 PART 3: To show a variety of connection speeds (110 to 19200 baud)
04:14 CoCo3 SerialIO Setup (plus RGB to HDMI video out)
04:43 Demo of 110 baud speed
05:05 Demo of 300 baud (with signal view)
05:13 Demo of 2400 baud
05:30 Comparison of 9600 vs 19200 baud
05:53 PART 4: BBSing at 9600 baud
05:58 Greg-E-Term 2.5
06:49 PARTICLES BBS (since 1992)
06:58 Ultimaterm 2.4
07:53 Ultimaterm 4.1
09:19 V-Term Terminal Emulator 3.04.00
10:12 Twilight Terminal 2.12
12:13 NETMATE 0.53 beta
13:21 Comparison of 4800 vs 19200 baud
13:44 Official End :D
13:53 Graph of 110/300/19200 serial signal speeds
14:02 Oscilloscope monitoring various alphabet signals
14:33 Closeup View: Greg-E-Term 2.5
15:47 Closeup View: Ultimaterm 4.1
17:09 Checking weather using Ultimaterm
17:24 Closeup View: V-Term
17:55 Closeup View: Twilight Terminal
18:52 Checking weather using Twilight Terminal
19:14 (saying hello to hyjinx, AlsGeekLab SysOp)
19:36 Closeup View: NETMATE
20:27 Checking weather using NETMATE
21:36 Static Images: Greg-E-Term
22:07 Static Images: Ultimaterm 2.7
22:25 Static Images: Ultimaterm 4.1
23:07 Static Images: Twilight Terminal
23:33 Static Images: NETMATE
PART 1
00:16 D.I.Y. PALM machine code entry
01:15 Saving machine code to tape
01:43 Loading machine code from tape
01:58 Review of the machine code
02:17 First run of Christmas Star ("wild" 17x16 star)
02:36 "I Still Function" - Magatron
03:10 Demo of RUN/STEP operation (internal switch)
04:02 Running "Christmas Star" in 5110VEMU
06:22 PALM Assembly Code for Star (reference) [will be on github]
PART 2
07:26 IBM 5100 Power Up
07:42 Start of the Star Listing (valid 17x17 star)
PART 3
08:42 A verbose BASIC solution for IBM 5110
09:00 Loading BASIC "Star" program in 5110VEMU
09:26 Full Speed Sample Run
09:34 Step/Trace Sample Run
10:51 Continued Step Sample Run (Language ROS/Executive ROS)
11:43 Quick Overview of Alternative Star Approaches
voidstar's IBM 5100 Notes
https://voidstar.blog/ibm-5100-personal-computer/
https://voidstar.blog/ibm-5100-programming-examples/
For additional solutions and approaches to the Christmas Star Challenge across a variety of platforms, see the following:
VCCC2022 Instructions
http://logiker.com/Vintage-Computing-Christmas-Challenge-2022
VCCC2022 Official Results
demozoo.org/parties/4578
More info available at:
https://voidstar.blog/ibm-5100-personal-computer/
PHASE 1
00:00:14 Insert QIC DC6150 tape
00:00:30 "MARK 3,2,1" of the tape
00:00:40 MARK finish, brief explanation of MARK
00:01:22 Proceed demo ("UTIL" command is like DIRECTORY)
00:01:54 Multi-CRT demonstration
00:02:37 UTIL issued to show no listing (show that must REWIND first)
00:02:50 REWIND/UTIL shows the filenames
00:03:00 LOAD 0 (this clears memory, what most people expect as "NEW")
00:03:37 Modify program, SAVE to file 1 with a new modified filename
00:04:50 LOAD and modify file 2
00:05:43 RUN brief run of the modified program and save
the modified program back to file 2.
00:06:09 REWIND/UTIL to show modified filenames
00:06:27 clear (LOAD 0) and reload file 1
00:06:49 LOAD 2, back to the modified version 2,
brief run demo
00:07:23 conclude initial tape usage demonstration (end phase 1)
PHASE 2
00:07:37 "MARK 8,5,1" show effect of re-MARKing an existing MARKed tape.
00:07:52 "ERROR 158" is "Are you sure?" indicator
00:07:59 graph showing progress of MARKing 8KB files
00:09:22 "LOAD 1,E40" demo to show loading from the external 5106 tape unit
00:10:20 LOAD 0 and load the file again from E40.
00:11:09 "MARK 3,2,1" (full 5100 view only)
00:11:22 confirm re-MARK with "GO"
00:11:46 "UTIL DIR 1" to show all files (blank)
00:12:02 "MARK 2,5,1" (with close up view)
00:12:12 "GO" (using ATTN to clear the end of line)
00:12:33 "UTIL" to (again) show that UTIL while at end of the data portion can be misleading
00:12:36 "UTIL DIR 1" use this to automatically
rewind back to file 1 and show the fill file listing
from that point on.
00:13:07 Load (again) the sample BASIC program from
E40 (external) since all memory and files on E80
have been cleared.
00:13:18 save program back to E80 file slot 1
00:13:42 save program to E80 file slot 2, but this time
showing how long the filename can be (limit 17 characters).
00:15:06 using UP/DOWN arrow keys to edit existing program
change program intro and show four computed values
per line.
00:16:04 brief program sample run
00:16:14 longer program sample run
00:16:25 longer program sample run with "large screen"
00:16:37 show R32 vs L32 switch effects
00:17:08 very long program sample run on "large screens"
00:17:14 show all three external CRTs
00:17:17 reducing the contrast on the 14" JVC monitor
to fix the smearing issue. (this is a monitor issue,
it just does this the longer it is on)
00:17:55 use of R32/L32 modes during long program runtime
00:18:37 back to program listing, end demo phase 2
PHASE 3
00:18:38 "UTIL DIR 1,E40"
00:18:52 HOLD, CMD-MINUS entering the DCP
diagnostic control program
00:19:04 altering address 2000 to enter the
"show all character symbols" program.
00:19:11
The actual entering of the machine code is
fast forwarded because it is already shown
on a prior video demonstration. The reason
it is being entered again is to save it as a
RWS DUMP to a file.
00:19:25 "BR 2000" to briefly show the program
running (and verify it was entered correctly)
00:19:38 "C"-9 to write the RWS DUMP to a tape file
file type is "0048" since that is HEX version of 72.
00:20:22 saving of RWS DUMP to a tape file
00:20:30 notice the "garbage" at the bottom of screen,
00:20:35 one of the ROS addressing check programs
00:20:43 RAM TEST (notice the DCP uses the word RAM instead of RWS).
00:20:58 local CRT view of the test.
00:21:11 RESET system, to prepare to show how to load the dump from file. RESET ensures
clearing of the memory.
00:21:25 UTIL DIR 1 to show file type 72 written to file 3.
00:21:49 enter DCP to begin loading the dump
00:22:06 before loading the program, I do "D 2000" to show the existing memory contents (and that it is not already equal to the test program).
00:22:20 "C"-8 to issue load dump command (tape file back to RAM)
00:22:40 "BR 2000" to run the loaded binary program
PHASE 4
00:22:52 aded modern LCD screen to the BNC chain of output showing a full boot-up sequence
NOTE: the audio is different in this portion, it is recorded directly off the action camera that is further away
00:23:20 "UTIL DIR 1" result, notice file 4 is type "P4"
00:23:31 "C"-8 to load the dump from tape to RAM. Using address 0B00.
00:23:46 "D 0B00" to show the program contents. Some of you might recognize it. Quick preview of the code (to make sure it loaded ok).
00:24:02 "BR 0B00" to run this mystery program.
00:24:38 showing registers while program runs
00:25:41 reset, and to show some BASIC samples
Also showing how key presses are processed in the Level 3 interrupt and scan code results stored in registers, which can be read as memory offsets.
NOTE: This video is a practice to a longer upcoming video about the tape unit (in terms of lighting and avoiding glare on the screen and how to show both the screen and what keys are being pressed).
The program that was entered is described in greater detail at the following link:
https://voidstar.blog/ibm-5100-character-sets/
For general topics about the IBM 5100, see:
https://voidstar.blog/ibm-5100-personal-computer/
And for details of how this particular IBM 5100 was obtained:
https://voidstar.blog/ibm-5100-5110-sources/
This demo is presented on the physical hardware in a "dark mode" (lights off and screen focused) followed by a "light mode" (lights on and full view of the system). See 4:47 for the lights on version.
Demos like these are extraordinary forms of artwork! The original hardware system to do this was first available in 1977 (although most systems at that time did not have a full 32K of RAM and would need a CB2 mod for the audio). By mid-1980, 32K RAM became more widely available/affordable to home consumers, and the 40XX series of Commodore PET included a piezo speaker for the CB2-style audio out. Crafting this kind of audio-visual experience on such an early home-computer requires very precise understanding of the instruction set and determining very clever coding techniques to pull off the desired effects (especially also while intermixed with audio, which represents a form of multitasking).
"Back to the PET" was developed using ca65 (6502 assembler) and multiple support tools, and an emulator (called VICE) - no physical hardware was available during the development. To see how this physical hardware playthrough shown here compares with the emulator, see shiru8bit's original recording here (also with links to the original PRG and source code):
youtube.com/watch?v=3FFPCuDqi_g
Presented with permission, thanks shiru8bit!
To emphasize: I didn't create this demo, it is the work exclusively of shiru8bit. But he didn't have a physical system to run the demo on, so this is a recording to demonstrate how fantastic the results of his dev and testing on an emulator translated over to the real hardware.
NOTE: "Back to the PET" is a homage to a scene in the "8088MPH" demo for the IBM PC (CGA), both inspired by the excellent "Back to the Future" movie released in 1985 with Michael J. Fox.
In honored memory of Jack Tramiel, Leonard Tramiel, Chuck Peddle. For an outstanding in-depth paper about the PETSCII character set, refer to:
https://acris.aalto.fi/ws/portalfiles/portal/39040680/PETSCII_A_Character_Set_and_a_Creative_Platform.pdf
For other Commodore PET related works, see also:
- Attack of the PETSCII Robots
- Destiny Hunter for Commodore PET
- Jim Orlando's excellent Commodore PET software (Defender, Lode Runner, etc.)
- Commodore Stupid PET Tricks
For specific how-to-setup discussion is located here:
https://voidstar.blog/wimodem232-setup-examples
The WiModem devices can be obtained here:
cbmstuff.com
Finding and loading old terminal software can be a challenge. Ask in Comments here or at the links above for help.
I believe a WiModem could be used on even older systems (such as Altair, SOL-20, IBM 5100), but suitable terminal software will have to be written.
WiModem's can also be used on newer systems - I'll be working on a part two that shows 9600 baud on the IBM PC 5150, and how a modern system can use this over USB.
Code available here: github.com/voidstar78/KBD5110
The eventual goal of 5110VEMU is to use the executable insight to examine the CRC totals of ROS, to compare the Executable ROS of Model 1 vs Model 2, and to determine other viable I/O options beyond the standard disk and tape features of the system.
To see actual physical usage of an IBM 5110 (that includes the Bouncing Ball DEMO1 assembly), see my video at youtube.com/watch?v=5I2bBNdsfGY
My main character is a Valkyrie named IMarpesiaI who was a Queen of the Amazons and said to have founded the city of Ephesus (which is a ruined city that I've visited, located in present day Turkey; Ephesus is famous for being where Mary and John escaped to after the death of Jesus). I do have a 2nd Valkyrie named Lampedo (who was the sister of Marpesia). These two women were credited by Giovanni Boccaccio in the 12th century (in a book where he describes over 100 famous women of history).
While this brief set of slides shows the highlights, there are still many more details about BDO that are not shown: Elvia Kzarka quests, Hystria/Aakman, several dungeons, Sycraia underwater area, the joys of Life Skills, housing, manors, and PVP/Node Wars!
Portions of audio credited to:
Throw Off The Bowlines
from Believe by James Paget
jamespaget.bandcamp.com/track/throw-off-the-bowlines
There are three key differences:
- after showing the SEER scrolls, the heart audio is very muffled on the CoCo3, for 3 heart beats (while it plays at full regular volume on the CoCo3)
- on approach towards the GIANT, that giant's audio silenced abruptly on the CoCo3 (typically all creature audio play fully, but this particular one is stuttered since it resumes at the tail end of the audio)
- At the very end of the demo, the knight "should" have a GIANT standing behind him (he doesn't appear in the CoCo3 version, since the GIANT has instead wandered in a different direction down the hall)
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:
github.com/voidstar78/DestinyHunter
I try to avoid getting into the deep-technical behind-the-scenes aspects of the game. If you're 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. I'll be adding CC commentary to cover any highlights that were missed.
I'm not affiliated with either TEXELEC or TFW8B, but I ordered their products and think they are fantastic!
PET and C64 SNES GamePad adapter:
texelec.com/product/snes-adapter-commodore
SD2PET floppy disk drive emulator for PET:
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)
youtube.com/watch?v=-CbyAk3Sn9I&t=5s
King's 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)
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)
youtube.com/watch?v=FbUN5ITWQQo&t=1405s
Sonic the Hedgehog [June 23, 1991] (cursed monsters are actually cute animals)
youtube.com/watch?v=Gsa_4s3CjmI&t=286s


