Lunduke
News • Science & Tech
Make Computers Fun Again - Linux, UNIX, Alternative Operating Systems, Computer History, and Retro Computing. Also dad jokes.
Interested? Want to learn more about the community?
January 04, 2023

First post for 8 bit week, I'll talk about a bug. An 8 bit bug.

I recently made a post about anonymous functions in NovaForth: you can surround some code with braces and it'll compile it and leave the address to it on the stack. For example: "{ 5 + }" will leave on the stack a pointer to some code that adds five to things. I have tests for all of this of course so I know it works.

Except it didn't: "execute" is a word that takes a pointer to a function and calls it. So, "{ 3 5 } execute" should be, create a function that pushes 3 and 5 to the stack, then call that function. But doing that in the NovaForth console ( http://sevendral.com/repl/ ) today did not work! It cleared the stack instead, which usually means that the thing crashed and called "quit". So, a conundrum: I know that brace functions work because they're tested all to hell, therefore the problem is in "execute," but "execute" isn't something that can really have a problem. Here's the entire source to that function:

jmp

A single jump with no arguments. Which is a single byte of code in Vulcan, byte 0x5c as a matter of fact. Like I said, it's an 8-bit bug. :) How can one byte have a bug in it?

The story here is that execute takes the pointer given it, calls it, and returns the result. But the pointer it's given is already on the stack, so we just need to call and return, and that's a tail call of course so we can just omit the extra stack frame and let what we're calling return for us, so, it's a jmp. Great, but, how can one instruction have a bug?

Well turns out it was a little bit trickier: I wanted brace functions to not take up space unnecessarily, so, if you make one from interpret mode it sticks it on the heap but doesn't increment the heap: as long as you're not compiling anything it'll be fine, and it means you can do things like "{ foo blah } 10 do-times" (if you were to write a word that takes a function pointer like that). Brace words written this way failed but brace words nested inside functions, even other brace words, worked great. More of a conundrum!

I'm proud that I figured this out without a debugger, although I do need to write a debugger: the answer was that more than just brace functions get built "temporarily" on the heap. As it turns out, a lot more: words being parsed use the heap as temporary storage, so my "execute" was getting written on top of the newly-compiler temporary function and then I was jumping into it. I've since fixed that but found a couple more things that cannot follow a brace function. I need to rearrange things to either use a separate internal scratch buffer for that stuff, or a separate internal scratch buffer for brace functions, I suppose...

Interested? Want to learn more about the community?
What else you may like…
Videos
Podcasts
Posts
Articles
Omarchy Goes To China

DHH talks to Lunduke about Omarchy's partnership with Alibaba to produce "Omarchy China", including Chinese spyware & censorship tools.

More from The Lunduke Journal:
https://lunduke.com/

Lifetime Sub Sale, Plus Your Name on the LCOS About Window:
https://lunduke.substack.com/p/lifetime-sub-sale-plus-your-name

00:35:27
October 23, 2026
Linux Kernel AI Civil War: Anti-AI Activist Joins the TAB as Torvalds Drops AI Disclosure

"No ethical justification for the use of generative AI in FOSS development," says new Linux Technical Advisory Board Member.

Lifetime Sub Sale, Plus Your Name on the LCOS About Window:
https://lunduke.substack.com/p/lifetime-sub-sale-plus-your-name

More from The Lunduke Journal:
https://lunduke.com/

00:18:43
October 22, 2026
macOS is No Longer UNIX

Apple's UNIX certification expired in August. And they didn't renew it.

Lifetime Sub Sale, Plus Your Name on the LCOS About Window:
https://lunduke.substack.com/p/lifetime-sub-sale-plus-your-name

More from The Lunduke Journal:
https://lunduke.com/

00:07:58
November 22, 2023
The futility of Ad-Blockers

Ads are filling the entirety of the Web -- websites, podcasts, YouTube videos, etc. -- at an increasing rate. Prices for those ad placements are plummeting. Consumers are desperate to use ad-blockers to make the web palatable. Google (and others) are desperate to break and block ad-blockers. All of which results in... more ads and lower pay for creators.

It's a fascinatingly annoying cycle. And there's only one viable way out of it.

Looking for the Podcast RSS feed or other links? Check here:
https://lunduke.locals.com/post/4619051/lunduke-journal-link-central-tm

Give the gift of The Lunduke Journal:
https://lunduke.locals.com/post/4898317/give-the-gift-of-the-lunduke-journal

The futility of Ad-Blockers
November 21, 2023
openSUSE says "No Lunduke allowed!"

Those in power with openSUSE make it clear they will not allow me anywhere near anything related to the openSUSE project. Ever. For any reason.

Well, that settles that, then! Guess I won't be contributing to openSUSE! 🤣

Looking for the Podcast RSS feed or other links?
https://lunduke.locals.com/post/4619051/lunduke-journal-link-central-tm

Give the gift of The Lunduke Journal:
https://lunduke.locals.com/post/4898317/give-the-gift-of-the-lunduke-journal

openSUSE says "No Lunduke allowed!"
September 13, 2023
"Andreas Kling creator of Serenity OS & Ladybird Web Browser" - Lunduke’s Big Tech Show - September 13th, 2023 - Ep 044

This episode is free for all to enjoy and share.

Be sure to subscribe here at Lunduke.Locals.com to get all shows & articles (including interviews with other amazing nerds).

"Andreas Kling creator of Serenity OS & Ladybird Web Browser" - Lunduke’s Big Tech Show - September 13th, 2023 - Ep 044
October 23, 2026

A Quest Diagnostics servar was just hacked using AI. A service providing medical records and billing data has leaked an unknown number of records and personal data.

This is the future. The UK is warning citizens about crippling cyberattacks that are now possible thanks to AI.

Welcome to the chaos when any script kiddie can make millions stealing medical data.

https://techcrunch.com/2026/10/23/lab-testing-giant-quest-diagnostics-confirms-patients-personal-and-health-data-was-compromised-during-breach/

My 3 year old was busy today while I was at work 😂

post photo preview
October 22, 2026
post photo preview
October 17, 2026
post photo preview
LCOS 1.0 Ships on November 1st!

A release date has officially been selected!

The Lunduke Computer Operating System (LCOS) 1.0 will ship on November 1st… just two weeks from now!

A few quick tidbits worth mentioning:

Worth repeating: If you want your name in the LCOS About Window (see the screenshot below), you only have through October 31st to grab a Lifetime Subscription to The Lunduke Journal and make that happen.

Huge thank you to everyone who has contributed with both hardware testing and financial support. We’ve had absolutely tremendous momentum over the last few months, and that wouldn’t have been possible without all of you.

-Lunduke

 
Read full Article
October 13, 2026
post photo preview
LCOS 0.9.3 has Landed! Plus: How to Help.

The Lunduke Computer Operating System (LCOS) is flying towards the official, 1.0 release — with version 0.9.3 now available for testing!

Between now and 1.0, LCOS is laser focused on a) fixing bugs and b) making sure it runs (and runs well) on as much hardware as possible.

Right now, LCOS needs your help. Here’s how:

  1. Test the latest LCOS release on your hardware. Hit any snags? Report them on GitHub, the Lunduke Forum, or via DM on X.

  2. Donate to LCOS (and The Lunduke Journal), so that we can expand our hardware testing lab (among other expenses).

If you haven’t already, watch the LCOS Roadmap video, to get an idea for where we’re heading (in 1.0 and beyond).

Then check out this page, for details on how to support LCOS & The Lunduke Journal (and get your name on the LCOS 1.0 About window in the process).

A huge thank you to everyone who has already contributed (in both ways)! With your help, we are making LCOS into the best gosh darned system in all the land.

-Lunduke

Image
 
Read full Article
Lunduke Lifetime Discount Ends in 1 Day; Zelda, Larry, SQ, & Keen Walls Available

TL;DR: Lifetime Subscription discount ends in one day. There are currently 4 “Lifetime Walls” with space available for more names (the Oregon Trail Wall is now full).

We’ve been running a massive discount on Lunduke Journal Lifetime Subscriptions for the entire months of June and July. And it has been an absolute blast. There are now 21 (twenty-one!) retro computer walls overflowing with your names.

Pure insanity. Huge thank you to everyone who has supported The Lunduke Journal.

But the discounted price only runs through July 31st… and that moment is just about here.

When the calendar ticks over into August (just a hair over 24 hours from now), the Lunduke Journal Lifetime Subscription price goes back to normal.

  • If the calendar still says it’s July, the Lifetime price is still discounted to $125.

  • If the calendar says August… the price returns to $300.

There are, as of this exact moment, 4 retro game themed “Lifetime Walls” which still have some space for more names (check Lunduke.com for the full list):

  1. Legend of Zelda

  2. Commander Keen 4

  3. Space Quest 4

  4. Leisure Suit Larry

Grab a discounted Lifetime Subscription (scroll down for the details), then email Lunduke (bryan at lunduke.com) with which Wall you’d like to appear on.

 

First come, first served. Once a Wall is full, it’s full. So if there’s a specific Wall you’d like to be on, don’t dilly dally.

How to Grab a Discounted Lifetime Subscription:

There are 3 different ways to pick up a Lunduke Journal Lifetime sub. All of them work great. Choose whichever works best for you!

Remember: These discounted prices go back up to normal ($300) on August 1st.

Get a Lifetime Subscription via Locals:

  1. Go to Lunduke.Locals.com/support.

  2. Select “Give Once“.

  3. Enter “125“ into the amount field.

  4. After checking out, Lunduke will toss you an email once your account is set to full lifetime status. (This usually happens within a few hours.)

Get a Lifetime Subscription via Substack:

  1. Go to Lunduke.Substack.com/subscribe.

  2. Select the “Lifetime Subscription” option.

  3. After checking out, Lunduke will toss you an email once your account is set to full lifetime status. (This usually happens within a few hours.)

If you would also like full, Lifetime access to Lunduke.Locals.com (which is included):

  1. Make a free account on Lunduke.Locals.com.

  2. Email “bryan at lunduke.com” with the email address you use on both Substack and Locals (can be different email addresses).

  3. Lunduke will toss you an email once your account is set to full lifetime status on Locals.

Get a Lifetime Subscription with Bitcoin:

Bonus: Save an extra $10 with the Bitcoin option, as Bitcoin processing has fewer fees associated with it.

bc1qyjakve8fywm8pz2v99v57yhjj0vzr2vjze6fcq

  • Email “bryan at lunduke.com” with the following information: What time you made the transaction, how much was sent (in Bitcoin), and the email address you use (or plan to use) on Locals.com or Substack.com.

-Lunduke

Read full Article
See More
Available on mobile and TV devices
google store google store app store app store
google store google store app tv store app tv store amazon store amazon store roku store roku store
Powered by Locals