Hellorld! - Nakazoto/CenturionComputer Wiki (2022)

The very first code written for the Centurion in probably 30 years was a simple "Hello World!" program that phire wrote in pure hexadecimal for me to type directly in using the Test Operating System. Unfortunately, when I was typing in the program, I got the location of my "o" confused, and after I typed in the first "o" from "Hello," I picked up starting after the second "o" in "World!" The result was "Hellorld!"

I think it's simultaneously beautiful and hilarious that the first code written for the Centurion in so long had a bug in it. But, I love it all the same and "Hellorld!" is the new gold standard in my book!

Hellorld! - Nakazoto/CenturionComputer Wiki (1)

The code is incredibly simple:

\M1000 79 86 23 C8 E5 EC EC EF F2 EC E4 A1 8D 8A 00 71 80 01

\G1000

Let's break it down!

  • 0x79 86 23 = JSR 0x8623
    • This is a Jump Subroutine direct to the address of 0x8623. That particular location is where the write string subroutine of the Test Operating System lives.
  • 0xC8 E5 EC EC EF F2 EC E4 A1 8D 8A 00 = The ASCII for "Hellorld!".
    • It is important to note that the ASCII is just 7-bits, and the 8th bit, which would normally be parity, is set to 1. So, each hex byte needs to have 80 subtracted from it to get the real 7-bit ASCII value. For example. C8 - 80 = 48 which is "H" in 7-bit ASCII.
    • The final two ASCII characters "8D and 8A" before the "00" are a carriage return and a line feed. The "00" is the null terminator to let the subroutine know it's time to wrap things up.
  • 0x71 80 01 = JMP 0x8001
    • This is a simple Jump direct to the address of 0x8001, which is the beginning of the of the DIAG board ROM program.

In quite possibly the greatest crossover in the history of Youtube, James Sharman ported the Centurion Hellorld! program over to his absolutely stunning 8-bit pipelined homebrew CPU. If you haven't been watching James Sharman's content, go check it out, his CPU is glorious!

Code:

0000: 50 0B 06 00 27 05 02 06 E1 5F 60 48 65 6C 6C 6F 72 6C 64 21 0D 0A

James Sharman's Excellent Channel

The Sharman CPU Running Hellorld!

Hellorld! - Nakazoto/CenturionComputer Wiki (2)

The SWTPC is a brilliant little machine built by a company out of San Antonio (being a Texan, I may be a bit biased), but my good buddy David is slowly bringing one of his SWTPCs back to life, and of course, the best way to test a machine out is by punching in "Hellorld!" The code from 0x0000 to 0x000D is the ASCII representation of "Hellorld!" and from 0x000E to 0x0016 is the actual program, which just runs a ROM subroutine to print characters to the terminal until it sees "04."

Code:

$M 0000 0D 0A 48 45 4C 4C 4F 53 4C 44 21 0D 0A 04 CE 00 00 BD E0 7E BD E0 E3

$J 000E

Hellorld! - Nakazoto/CenturionComputer Wiki (3)

This one is very cool, not because of the code (it's really just PRINT "HELLORLD!" because it's running Basic), but because of what it's running on: The Cactus. The Cactus is homebrew 8-bit computer designed and built from the ground up by the talented CommodoreZ using individual cards that were all hand-wired on perfboard. At the heart is a W65C02S @ 1MHz with 32k SRAM, 2k NVRAM, a 16K EPROM and a host of other brilliant stuff. The front panel blinkenlights are a epic, but there is serial support, which means this homebrew can not only run OSI Basic, but also display "Hellorld!" on a terminal!

More on Cactus here!

Hellorld! - Nakazoto/CenturionComputer Wiki (4)

Aint nothing like getting an oil and gas pipeline mini-computer from the 60s to print "Hellorld!" which is exactly what SomeComputerGuy did, and it's every bit as glorious as it sounds! Not only that, he got it to literally print using an ASR33 teletype as the terminal! The SEL810A is a beautiful "little" minicomputer that's actually built using discrete transistor cards that plug into wire-wrapped backplanes. The machine is surprisingly reliable for creeping up on 70 years old, and it's an absolute work of art inside!

Here's a video of this very SEL810A running Lunar Lander

Code:

Hellorld! - Nakazoto/CenturionComputer Wiki (5)

Hellorld! - Nakazoto/CenturionComputer Wiki (6)

I always love seeing Hellorld on homebrew systems, and this one is a really clean homebrew! The board itself is based on a Western Design Centre 65C02, clocked at 4MHz (though it can go to 14MHz), along with a 65C22 VIA and 65C51 ACIA for terminal communication. There is 128k of flash ROM (flash is cheap compared to EEPROM), but only the top 20k is actually decoded. Likewise with the RAM, only 40k of the 128k is usable. The 4k in-between AC00-ACFF is for I/O. Address decoding is done by a ATF16V8 programmable logic chip (GAL), and allows the memory map to be changed simply by burning a new GAL.

The firmware is from Daryl Rictor's SBC2 project, with a few tweaks for my memory map. The LCD code is Ben Eater's, though I hope to implement a direct CPU bus connection at somepoint, and maybe have memory mapped text that gets sent during regular interrupts

Code:

1000 - A2 FF 9A A9 FF 8D 02 A0 A9 E0 8D 03 A0 A9 38 20 5D 10 A9 0E 20 5D 10 A9 06 20 5D 10 A9 01 20 5D

1020 - 10 A2 00 BD 30 10 F0 07 20 73 10 E8 4C 23 10 60 48 65 6C 6C 6F 72 6C 64 21 00 48 A9 00 8D 02 A0

1040 - A9 40 8D 01 A0 A9 C0 8D 01 A0 AD 00 A0 29 80 D0 EF A9 40 8D 01 A0 A9 FF 8D 02 A0 68 60 20 3A 10

1060 - 8D 00 A0 A9 00 8D 01 A0 A9 80 8D 01 A0 A9 00 8D 01 A0 60 20 3A 10 8D 00 A0 A9 20 8D 01 A0 A9 A0

1080 - 8D 01 A0 A9 20 8D 01 A0 60

Hellorld! - Nakazoto/CenturionComputer Wiki (7)

This is a cool little Homebrew built by ZephyrZ80. If the name of the homebrew and the name of the mad scientist who built it didn't give it away, it's a Z80 based computer running at 10MHz with 32KB of SRAM, 8KB of NVRAM, and a Z85C30 SCC acting as a UART connection for input and output. What's really cool though is it's all currently living on a breadboard, and I always love seeing breadboard computers!

Code:

8000: 21 0C 80 7E A7 28 04 D7 23 18 F8 CF 0D 0A 48 45

8010: 4C 4C 4F 52 4C 44 21 00 1A 1A 1A 1A 1A 1A 1A 1A

Hellorld! - Nakazoto/CenturionComputer Wiki (8)

The PIX80 is a very cool little homebrew designed by PixelBrush. It's designed to be as simple as possible so anyone can get their own version of it up and running using a minimum number of chips. It's helping to break down the barrier of entry for homebrews, and that makes it very special in my book! At it's core, it just needs a Z80 based CPU, 32k of ROM and 32k of RAM, but there are several working and planned peripherals like an LCD display, PS/2 keyboard port, RS-232, VGA and more.

Check out PixelBrush's Wiki on the PIX80 here!

There's a few videos up on Youtube about the homebrew here!

Code:

3E 38 D3 00 3E 38 D3 00 3E 38 D3 00 3E 38 D3 00

3E 0C D3 00 D3 00 3E 01 3E 06 D3 00 3E 80 D3 00

DD 21 00 00 DD 7E 33 FE 00 28 07 D3 01 DD 23 C3

24 00 76 48 65 6C 6C 6F 72 6C 64 21 00

Hellorld! - Nakazoto/CenturionComputer Wiki (9)

The PJ5 is one of my favorite homebrews because it's just so aesthetically pleasing - I mean, just look at that gorgeous display! But, the PJ5 is also one awesome little computer. It's a proper one instruction per clock cycle RISC CPU with an 8x8 hardware multiply and 8x8 hardware divide, as well as shift/rotate and the obligatory 74181 based ALU. It features 16 registers and can run at up to 4MIPS and 4MHz. It is custom architecture and instruction set built from TTL logic chips not based on anything else out there.

Check out this homebrew running Hellorld here!

The PJ5 also has a website with more information here!

Code:

10 00 02 02 00 00 90 02 80 90 03 00 90 04 F0 90 05 00 90 06 09 90 07 00 90 08 00 90 09 00 90 0A 00 90 0B 00 90 0C 00 90 0D 00

90 0E 00 90 0F 00 90 0A 01 90 0B 01 90 0C 01 90 0D 01 90 0E 01 40 96 61 90 05 00 90 03 19 10 00 32 50 0A A1 50 0B B1 50 0C C1

50 0D D1 50 0E E1 90 05 00 90 03 21 10 00 55 42 60 E2 12 00 15 42 66 61 90 05 00 90 03 27 10 00 32 51 0A A1 51 0B B1 51 0C C1

51 0D D1 51 0E E1 90 05 00 90 03 2F 10 00 55 42 60 E1 12 00 23 10 00 15 80 08 60 90 0F 20 32 00 8F 42 68 81 90 0F 48 32 00 8F

42 68 81 90 0F 65 32 00 8F 42 68 81 90 0F 6C 32 00 8F 42 68 81 90 0F 6C 32 00 8F 42 68 81 90 0F 6F 32 00 8F 42 68 81 90 0F 72

32 00 8F 42 68 81 90 0F 6C 32 00 8F 42 68 81 90 0F 64 32 00 8F 42 68 81 90 0F 21 32 00 8F 42 68 81 90 0F 20 32 00 8F 42 68 81

18 00 35 90 09 FF 42 69 91 42 60 91 12 00 56 18 00 35

Hellorld! - Nakazoto/CenturionComputer Wiki (10)

The Sega SG-1000 is the predecessor the famous Master System and rocks the venerable Zilog Z80 with a TMS9918 VDP. Seatsafetyswitch over on the Discord got fired up about writing some assembly for it and came up with this masterpiece! The assembly could potentially run on a Master System or Genesis if, and I quote, "you're willing to get really weird with it." I'm 100% on-board if someone wants to get "weird" with it and get some Hellorld! on a Genesis!

Code:

It's actually too long to paste here in its entirety, but check out the full Assembly file by clicking here!

Hellorld! - Nakazoto/CenturionComputer Wiki (11)

Here's "Hellorld!" on TI-BASIC for the TI-99!

(Also, this was easy mode on the TI-99, next goal is to do it in pure hex using the TI-Bug software!)

Code:

10 PRINT "HELLORLD!"RUN

Hellorld! - Nakazoto/CenturionComputer Wiki (12)

You might also like

Latest Posts

Article information

Author: Moshe Kshlerin

Last Updated: 11/15/2022

Views: 5704

Rating: 4.7 / 5 (57 voted)

Reviews: 80% of readers found this page helpful

Author information

Name: Moshe Kshlerin

Birthday: 1994-01-25

Address: Suite 609 315 Lupita Unions, Ronnieburgh, MI 62697

Phone: +2424755286529

Job: District Education Designer

Hobby: Yoga, Gunsmithing, Singing, 3D printing, Nordic skating, Soapmaking, Juggling

Introduction: My name is Moshe Kshlerin, I am a gleaming, attractive, outstanding, pleasant, delightful, outstanding, famous person who loves writing and wants to share my knowledge and understanding with you.