ceargaest

[tʃæɑ̯rˠɣæːst]

linguist & software engineer in Lenapehoking; jewish ancom trans woman.

since twitter's burning gonna try bringing my posts about language stuff and losing my shit over star wars and such here - hi!


username etymology
bosworthtoller.com/5952

jetsetruri
@jetsetruri

I've been itching to make blog posts about these two topics.

This is the epitome of my excitement, and hyperlinks are done out the wazoo, so sorry in advance for this being so disorganized compared to my previous entries.


A positive ramble about programming

So, starting this off: what encouraged me to write about software development was Remy (Raymii)'s blog posts about running semi-modern Linux on their 2000 HP Jornada and developing in C++ on Android.

Now, with that being said.

I need to this out of my system: I love computers, but it's fucking awesome once you learn to write your own programs. I believe every piece of hardware that runs software should allow the user to develop for theirs, on theirs. (Again, you can run Linux software on Android).

I'm still relatively new to coding, so to get my feet wet, I developed a few identical prototypes in LÖVE, TIC-80, and Batari BASIC (Atari 2600), mostly to study the differences between syntax. Once I get farther, I hope to share them on a separate blog.
The prototypes I mentioned. The TIC-80 one is arguably the most "complete," with a walking animation and jumping. LOVE is the first one I made, and it has jumping, but I lost interest because I just prefer TIC-80. 2600 currently lacks animation and jumping, but the animation is easy to implement, just time-consuming working with sprites without a sprite editor. Batari Basic / Atari 2600 had a flickering "watermark" so I merged several frames together to get an intense phosphor effect and show the whole watermark.

There are also BASIC implementations for other consoles:

C has also caught my attention, because it's possible to develop for, ahem:

and what have you.

An example of C's strengths in action is ClassiCube -- a Minecraft Classic clone I've brought up a dozen times -- which managed to be so damn portable because of it, and potentially even have cross-platform multiplayer if the device can connect to online servers.


A standard for software that can run on devices old & new

What if there was a standard interpreter or hardware spec that people had to develop for? Like the Z-machine that was used by Infocom to port their text adventures (like Zork) to various home computers.

To elaborate further, what I mean is something that could hopefully lead to:

  • Being able to write a program and then run it everywhere, from modern PCs and smartphones to old PDAs and esoteric video game consoles
  • Forcing people to write optimized code, keeping in mind the limitations of the "hardware spec"

The first thought would be an emulator, in which case you're on the right track. NES emulators are found everywhere and can play NES games on anything, from modern computers to old iPods. But what would be like that, but for non-game software?

A photo of a Nintendo DS running uxn, from the official homepage for uxn on Hundred Rabbits' website. According to the site, this photo should be licensed under the Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0) license.

I'm starting with the one that seems to have been made for this. uxn is a virtual machine inspired by retro computing, created by, from what I understand, a small collective called Hundred Rabbits, two artists that reside on a sailboat and develop "low-tech solutions" in lieu of modern computing.

I see uxn as a similar project to fantasy consoles like PICO-8 or TIC-80, but focused less on writing fun games and more on writing useful software for constrained environments, including its own assembly programming language called uxntal. It has a small, yet growing open-source ecosystem of software, often distributed as ROMs, and emulators are widely available for many esoteric devices, ranging from the IBM PC to the original Game Boy to the Nintendo DS.

However, there's also another contender that's more of a happy accident than an intentional solution:
An IBM XT with an IBM 5154 monitor, running PC-DOS. Original photo by "phreakindee" on Flickr, licensed under the Creative Commons CC0 1.0 Universal Public Domain Dedication license.

DOS. Good ol' fashioned DOS.

This is the reason why I wanted to write about this topic, because I wanted to run Turbo C, Pascal or QBasic on my 2DS, like a "big boy" version of Petit Computer.

Why DOS? There's the Apple II, Commodore PET/VIC-20/64, BBC Micro, ZX Spectrum... but I've noticed that DOS emulators are available everywhere and on almost everything (even modded Minecraft) likely thanks to DOS gaming enthusiasts, and it has 40+ years of software to emulate (see here, here, here, and here). The most popular example is DOSBox, but there are some exceptions (faster computers can use DOSBox-X and 86Box, while some resource-constrained devices like the DS use special emulators like DSx86).

Though, unlike uxn, there's unfortunately a higher barrier-to-entry: the most constrained system I've seen uxn run on was the Game Boy, but the weakest device I've seen run DOS outside of an 8088 was the Nintendo DS (and even my original 2DS struggles with DOSBox).

And the "DOS specification" (as I'll call it) is too flexible. I believe a "DOS" computer can range from an 8088 that barely runs Windows 3 to a Pentium processor that can run Ozone.


You must log in to comment.