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?
September 16, 2022

#DOSweek #musings #GW-BASIC

So it turns out I'm NOT actually willing to give up on showing hieroglyphs next to normal letters on DOS. But the problem might be too much to ever solve appropriately. Still, there is an option:

I mentioned before how BIOS is actually a driver pack for microcomputers. Among the things it offers is also a text console. Programs interface to this console is by raising soft interrupts after filling CPU registers with important information. And the interrupts pass through a table that lists the locations of routines that handle them. The table is user-writable (in real mode, and DOS runs in real mode) - I checked, and crashed my computer. xD Which means that, IF you wanted to implement your own console, you could - by providing your own implementation of the BIOS routines and overwriting the handler for interrupts.

So the idea would be to highjack interrupt 0x10, then directly access the video hardware, set it into some high-resolution mode, use your own fonts and then begin servicing requests like you were the true BIOS. For as long as programs don't try to directly access video hardware (and they shouldn't because then even the real BIOS would also be borked), you will be able to maintain the illusion of everything being normal while at the same time enjoying a glitzy 21st century console in full HD with pleasing color gradients and maybe even faint background images. xD

Eeeexcept there is a fly in the ointment. This presumes the programs utilize a dynamically sized user interface. So your assumption is that, first the program will call into BIOS to get some kind of dimensions of the console (I didn't look too deep, but it seems like such a BIOS routine doesn't exist), then it will figure out where it wants things based on this, and then will communicate this computed information back to BIOS as coordinates for characters that make up the TUI. ... I'm not sure all interesting programs do that. What's much more likely to happen is that the programs merely assume the console has one of several dimensions and run with it. Or they might ask the BIOS only which one of these several dimensions are in use and not ask it literral number of characters horizontal x vertical.

So what's probably going to happen is that you end up with a glitzy terminal that only has content in the upper left corner or maybe even has characters all over the place - in case the program relies on implicit BIOS behavior like automatically wrapping long lines and similar.

Still, this could be a way forward. You could pair this with applications that know about this (Lynx, Mutt?) and they will then be able to generate much larger, prettier and more useful TUIs then what is possible with stock BIOS. In fact, you might even be able to create a facitily for embedding images (xterm supports this BTW) and in that way even things like w3m will work. That would be really good.

Anyway, in case you want to explore your Interrupt Vector Table, I wrote a little BASIC script that peeks around and formats the stuff it finds into the format appropriate for IVT.

1 B%=0
120 CYCLE%=4
130 DEF SEG=0
140 ADDR% = (B% * 4) + CYCLE% - 1
150 OCTET% = PEEK(ADDR%)
160 V$ = HEX$(OCTET%)
170 IF LEN(V$) > 1 GOTO 190
180 PRINT "0";
190 PRINT V$;
200 CYCLE%=CYCLE%-1
210 IF CYCLE% <> 2 GOTO 230
220 PRINT ":";
230 IF CYCLE% > 0 GOTO 140
240 PRINT ""

To change which interrupt it peeks, just change the first line and rerun the program.

In case you want to write into IVT, make sure to first change the segment used by the POKE command, like this:
DEF SEG=0

And then you can write stuff:
POKE &h00, &hef : POKE &h01, &hbe

Keep in mind that the write isn't atomic so if you get hit by an interrupt between the two pokes, the system could crash, or worse. Remember - there's no privilege separation in DOS, a bug in your BASIC program could ruin the filesystem and destroy important data. :)

Interested? Want to learn more about the community?
What else you may like…
Videos
Podcasts
Posts
Articles
Google Tells Courts How Google Should Be Punished (and Tried to Hide it)

Released Friday before Christmas -- the ideal time to hide any announcement -- in response to losing an antitrust suit, Google proposes no real changes to their company or search business. Unsurprisingly, Mozilla (who likes Google's money) agrees.

00:27:44
December 19, 2024
ChatGPT Can Not Say "Bryan Lunduke"

Move over David Mayer, Lunduke joins the list of names which OpenAl will not display. Here's how this was accomplished.

00:22:23
December 19, 2024
Mozilla Executive Pay Doubles as Loss of 80% of Revenue Looms

"Mozilla has shifted much of its work toward Al" as funds directed towards African "Digital Justice", "Queer Youth Inclusion", & "Digital Activism for Young Feminists".

00:25:04
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

Not what I was hoping for this afternoon, but still nice to get some classic Mac time in. Grabbed a game from Macintosh Garden; Starship Titanic. I’ve never played it, but I remember being really curious about it as a kid.

Moved it over to the Mac via sneakernet. It’s been decompressing for over 30 minutes… just realized I forgot the onboard USB is 1.1 and I didn’t transfer the files to the HDD before running StuffIt on it. Whoopsie 😅. I really love old systems.

rando win... just click, click, click ... and it goes!
when embracing a system like #Haiku (or Plan9 or OS/2 or I suppose Apple and Microsoft provide, for instance), there is lots of structure in place that provide hooks where you can add new function/feature with very little code.

In the Haiku world, there is an easy way to implement new function in the desktop Tracker called Add-Ons. Implement a bit of code that handles the process_refs() method - essentially all Haiku code works this way, listens for BMessages and reacts.
The default standard Haiku dev IDE has many samples to get started. The Tracker Add-On puts in the boiler-plate for the process_refs() method where you can put your bits. The sample code takes a listing of the current Tracker Selection and lists it in a popup.

Having done these frequently before, I knew it was a small amount of code to get easy utility from Add-Ons. I had high confidence to engage with CoolWhip ***create a Haiku native C++ Tracker AddOn that ...

Computer nerdery meets manly things like fire and steel and hitting things with big hammers. If nothing else, this is an amazing demonstration of how robust QR codes are. (If... you know... taking a blurry photo on your phone from ten feet away at a wonky angle isn't enough.)

Go ahead. Grab a Lifetime Subscription. Treat yourself. (Bitcoin option available.)

Lunduke Journal Lifetime Subscriptions are available through December 26th.

Grab one for yourself.  Grab one for that special nerd in your life.  Support the last bastion of truly independent Tech Journalism.

Everybody wins.

The Famous Lifetime Subscription via Locals (+ Gift Option)

The "World Famous Lunduke Journal Lifetime Subscription" is exactly what it sounds like. Pay once and get full access to The Lunduke Journal (with all the perks of subscription on Locals). For life.

Plus: They make a great, nerdy gift.

New Lifetime Subscriptions are available, for $200, from now through December 26th. Then this option goes "back into the vault".

Here's how to grab one of these coveted bad boys for yourself:

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

  2. Select "Give Once".

  3. Enter "200" 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.)

Want to purchase a Lunduke Journal Lifetime Subscription as a gift for someone else?  Here's how:

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

  2. Select "Give Once".

  3. Enter "200" into the amount field.

  4. Send an email to "bryan at Lunduke.com" with the subject "Lifetime Gift Subscription".  Include the email address and / or Locals user name (if they have one) of the person you would like to gift the subscription to.
  5. Lunduke will email you to confirm details.

The Famous Lifetime Subscription (with Bitcoin)

You can also obtain a Lifetime Subscription via Bitcoin.

  • Make sure you have a Lunduke.Locals.com account (a free account works just fine).

  • Send $200 worth of Bitcoin (or more) to the following address:

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.

Nice and easy.

-Lunduke

Read full Article
December 20, 2024
post photo preview
Funny Programming Pictures Part LXVII
More funny, nerdy pictures than you can [idiom for large quantity understandable by humans]

There are XXXIX pictures in part LXVII of "Funny Programming Pictures".

IX out of X people reading that sentence just googled "Roman Numeral Converter".

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Read full Article
December 18, 2024
The real "Year of The Linux Desktop"...
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