Dungeoning & Dragoning and My New Rules, No Clerics Allowed

So I have, uh, three tabletop RPGs in development right now. One's a little corporate sabotage game, inspired by Severance, Brazil, Paranoia… One of my mini horror games with poor long-term survivability, but neat premise, should be fun.

Second is my sword & planet RPG, still needs a lot of work for space & time & dimension mechanics; it works great for fantasy swordfighting but that's not the whole point. I considered using variant Traveller/Cepheus Engine for this, but the tone is not "grizzled vets play Elite", so I'm off in my own direction here.

Third is yet another in a long series of D&D house rules that become their own OGL game, and that's what I'm on about today. In replacement for my overly-variant and overly-3.x-mechanics Stone Halls & Serpent Men, or handwritten Olde House Rules. Name to be decided later.

I've been reading a lot of the very oldest games & magazines, and really getting in the space of "what does this game need instead of what Gary published?"

  • New rules, basically OGL, spells & monsters are mostly stock from Swords & Wizardry White Box SRD, but some have partial to total rewrites. A handful of entirely new monsters, or takes on mythical/literary monsters. All new encounter table! I'm only using d20, d6 dice, and things you can do with those.
  • Stats change Wisdom to Willpower (WIL). Stat bonuses are B/X-ish, -3 to +3, which works with a d20-based mechanic. Saves & skill rolls are all based on stats.
  • HP start a little higher, Classed types get their CON score as base, but only d6 +/- 1 HD per Level. Somewhat like Arduin Grimoire. With limited healing, you need a bit more buffer between alive/dead. If you hit 0, you make death saves at penalty and probably die soon, but it's possible to be knocked out & captured like John Carter et al. do in every book.
  • Species are Human, Dwarf, Wood Elf, Beastfolk. As previously noted in The Thing About Orcs, I don't do kill-on-sight intelligent beings. You can have wars against hostile tribes, but the Badger Beastfolk who runs the bakery is not at war with you. High Elves are, as usual for me, The Big Bad (as well as Serpent Men, because I'm a Kull fanboy). No "dark elves", "half-demon goth chick", "dragon scalyfucker", "hobbit", etc. species. As I noted in Orcs, Humans-only doesn't work well without cultural markers that are harder to explain.
  • Classes are Fighter, Thief, Magician, and Spellsword (mediocre warriors with mediocre magic). No multi-class, no Clerics. Not doing anything fancy with career paths. Other than a few more experience options, and "Orgies, Inc" style pay-for-EP, it's a normal experience system! Who knew I could do that?! Should be interesting at least for this game.
  • Magic has a number of hard limits, which will make you invest in traditional fantasy accoutrements like flying mounts and magic potions instead of being superheroes with pointy hats. It is Vancian, in the sense that I've actually read Jack Vance so it works like that. Minimized spell/item creation rules, but there is some support for stuck-in-a-tower research campaigns.
  • Adventuring rules are simplified quite a bit, down to what I actually do in play; the more complex mechanics in SHSM rarely got used, the simple stuff does.
  • I may just pull the Inspirational Media (aka "Appendix N") chapter from SHSM and post it as a page. That media list is what I mean by "pulp fantasy".
  • Currently it's about 32 pages, not too densely packed, might be a bit more if I include more setting detail; certainly not above 48 pages, which seems a fine oldest-school size. Not bothering with art except the cover? I don't think so. Literature doesn't need interior art, use your imagination.

No Clerics Allowed

The lack of Clerics is contentious, but Delta's DND and Binder Full of Notes share my arguments.

I don't see heroic Clerics in any of the pulp swords & sorcery I like. There's Priest-Magicians in Moorcock's Elric stories or Thieves World, and they're the baddies. New campaign world is more like Fritz Leiber's Nehwon, where at best the few priests seen are charlatans, at worst cultists. The only historical place they come from is Archbishop Turpin from La Chanson de Roland; even Le Morte d'Arthur has only knights who praise their god, not magic Clerics. The only fantasy Cleric I can think of that I like is Duncan from Deryni Rising, and he's a secretly-apostate priest who uses black magic to save his people from Christian Human genocide!

They don't appear in Chainmail (Heroes & Wizards), or Dave Arneson's games (Adventures in Fantasy has skill-based fighters, who develop faerry[sic] magic skills later). The only reason they were ever in the game was Gary had an annoying vampire PC, and rather than do anything OOC (unaware that Rousseau had published The Social Contract in 1762), he made a grudge class for someone else.

Getting rid of Clerics makes Undead terrifying, and I love the Undead but don't love turning the undead. You don't have a living body shield who can just turn Undead all day; a Magician's Protection, Area spell lasts a few turns and only delays your murder or waiting for sunrise. Healing becomes slow (high-Level Magicians can cast 1 healing spell per day) or expensive (potions and scrolls), which encourages you to creatively avoid combat, not wade in and heal later, unless you have superior power. No raise dead, resurrection, or restoration (tho "level drain" has a different meaning in my game).

The super weird part of Clerics in D&D is they're based very heavily on Medieval Catholic priests; they carry crosses (not "holy symbols") in OD&D, they use "blessed holy water", their miracles are all based on Jesus stories, their hierarchy is based on the Medieval Catholic Church (with some weird level titles). But then they do nothing related to the Church! Because they're just Van Helsing minus the science.

The thing that stands out to me most is they have no interaction with Faerie or other gods. Historically and in myth, The Church ordered Christians to mass murder any Pagans who wouldn't convert, and fought endlessly to genocide/unexist the Little People, the Fair Folk, the People Under the Hill, Trolls, whatever you call them; their worship barely survived at all in Iceland, Finland, Norway, they're just "fairy tales" now. The worlds of Law (Christianity) & Chaos (Faerie) are openly at war in Poul Anderson's Three Hearts & Three Lions. Clerics should be all carrying iron staves and fighting against the Fey. They do in Ars Magica. But it's never come up in D&D?

Blackmoor/Eldritch Wizardry/AD&D added Druids (historically, more Sage political leaders than lightning-throwing Poison Ivy/Captain Planet superheroes), who should literally be at bloody war all the time with Christian Clerics, but everyone's copacetic, it's an ecumenical matter. Church and Holly Grove are next door in the tiny village of Hommlett. They have Clay Golems, explicitly based on the Golem of Prague, made by Clerics instead of Jewish Rabbis (again, Sages, not magic Clerics except in some Torah stories). What. I do use Golems, I love "programmed clay/flesh/iron machine goes crazy" stories; but the religious issue is impossible to resolve.

If I cared one whit for religious ceremony and all that, well, you can still have religions without Clerics, as seen in our world. They can be non-Classed, Thieves (most appropriately), or Fighters, or even Magicians if you don't mind the cognitive dissonance. But the only old-timey-religions that have ever been in my games are demon-summoning cultists Ph'nglui mglw'nafh Cthulhu R'lyeh wgah'nagl fhtagn!, or fascist Templar priests, who are more political than religious.

So, the gameplay is better without Clerics. The world is much better (more like the pulp S&S I want) without Clerics. Even in a historical setting (which I very much do not do), Clerics shouldn't have superpowers.

Why Not 5E?

Because I don't need 1000 pages of corporate rules to tell me how to move down a corridor, check for traps, fight or flight. I really hate the superheroic power level. It's nearly impossible to disentangle the healing rules from it.

2022 TODO

No looking back. Burn our 2021 ships behind us. Forward is death or glory.

  • Ship Haunted Dungeon. Work on other games which are not CRPG/roguelike for a while.
  • Write more Scheme, maybe publish some of it. If Scheme's so efficient, why am I such a bum who can't ship?
  • Playtest & ship my new tabletop RPG.
  • Boardgames? I've been thinking about condensing some of my ideas into a more concrete, boardgame model. Print or software, I dunno yet.
  • Read more, watch less garbage/browse the web less. I didn't do too badly on reading in 2021:
    • Fujino Omori: Is It Wrong To Try To Pick Up Girls In The Dungeon light novel. I loved the anime, and played the mobile game for like 2 years, it's being adapted too slowly for my taste, so I read the books some. It's amusing easy-reader trash about JRPG fantasyland, and I don't care.
    • Tim Pratt: The Wrong Stars. Started on the sequel and it sucked, DNF.
    • Michael Warren Lucas: Drinking Heavy Water, Butterfly Stomp Waltz
    • Alastair Reynolds: Shadow Captain, Bone Silence, The Prefect, Elysium Fire, Beyond the Aquila Rift (had read several in earlier mags/collections, but many were "new"), Revelation Space, Redemption Ark. Look. I'm aware that's too many. But I want to read the new one, so I have to catch up and I'd forgotten everything in the RS setting.
    • Rudy Rucker: Million Mile Road Trip (been sitting on tsundoku for too long)
    • Neal Stephenson: Cryptonomicon (reread after 22 years). Dude, Neal used to be able to write a doorstop I liked reading.
    • Andy Weir: Project Hail Mary
    • Martha Wells: Fugitive Telemetry
    • random old pulps from the '40s-80s off archive.org. Complete Manly Wade Wellman in Weird Tales has been a nice trip, lot of Fritz Leiber and Roger Zelazny.
  • Top of my tsundoku:
    • Hannu Rajaniemi: The Quantum Thief
    • Alastair Reynolds: Absolution Gap, Chasm City, Inhibitor Phase and then I will be free! I might go a year or more without another Reynolds book oh sweet mother of fuck yes.
    • Rudy Rucker: Juicy Ghosts, have read the short story
    • Martin Gardner: The Last Recreations
    • Isaac Bonewits: Real Magic an Introduction (research for better game design!)
    • Black Magic Omnibus vol.1 & vol.2
    • Andrzej Sapkowski: Time of Contempt. I read up thru Blood of Elves a couple years ago (prompted by the TV show, yes), and keep picking up the next one and stopping. I dunno why, they're pretty similar to my D&D-type fantasy campaigns.
  • Do some more software & project maintenance. A lot of my stuff that I have in various places is either unmaintained, broken, or just unadvertised in any way. Might set aside one work day a week to this.
  • Actual contract work. I'm never going back to an office in my life. I should be #1 online earner, but I really can't be arsed to talk to recruiters, clients, get the job, and do it, a lot of the time. Probably should be slightly more than zero productive citizen.

Dear Santa

Hey, Big Red.

I'm… look, good and bad are relative terms at the best of times, but this whole year I ain't killed anyone nor committed insurrection against my country, so you're grading on a curve, right?

Great. All I want is… it's a little harder than just some Star Wars figures…

  • JWST launch to go correctly. I really need this one. Less than a day to go.
  • Not to die in a nuclear apocalypse over any of the multiple pending wars. Bad part of the '70s/'80s/'90s lifestyle.
  • Continue not finding lumps in places that oughtn't'a have lumps.
  • Internet to continue working long enough for me to download survival manuals for the post-apocalypse lifestyle to come.
  • A bottle of Scotch, Laphroaig Quarter Cask, or you know, whatever hooch your elves make is fine.
  • Can I have one sequel, remake, or side story flick in a series I like that isn't an absolute dumpster fire? Like, TRON: Legacy was OK. How about The Last Starfighter II and it's not terrible? That's probably too much to ask. Peace on Earth, Goodwill to Humanity is more plausible.

Thanks in advance. It's been a rough one.

Matrix Rain for Atari

I haven't seen the new movie yet, but I was in a mood to do something this primitive.

  • Matriculated Rain: matrix.atr: Download, unzip, load in your Atari 8-bit computer or emulator of choice (Atari800MacX: ⌘D, select this as D1), and reboot (Atari800MacX: sh-F5). There's probably some way to ESCAPE.

It'll go into attract mode eventually, which I think is cool, add 11 POKE 77,0 to disable it. Or any key that doesn't exit will clear it.

Not any really interesting coding tricks, except I replaced POSITION:? with POKE for speed. I use PEEK(764)=255 and then re-POKE it to test if there's a waiting key, but then use GET to read it in ATASCII instead of scan code.

(updated almost immediately: I realized on XL machines I can turn on accented characters instead of graphics blocks. Take out the POKE 756,204 line if you don't like that.)

(updated 2021-12-24: I made it pour in from random starts, rather than top of screen, looks somewhat more like the old intro.)

When View Source is Outlawed…

… only outlaws will have View Source.

  • mhoye post: Google is pushing thru disabling View Source in Chrome.

I'm impressed but unsurprised that nobody at Google said "wait, is this the right thing to do?", because of course they didn't, they're at Google, they already failed any moral test.

Like every nerd of a certain age, I learned web dev by doing View Source, and to this day it's my basic tool for finding out how/why/stop doing a thing on a site. Safari's inspector hasn't been crippled yet; given Little Timmy "Apple" Cook's bullshit about platform lockdown lately, I'm concerned.

So, this aggression will not stand, man.

I have a View Source bookmarklet which works fine in Mobile Safari and Chromium. It's only inline, and you have to copy-paste into a real editor to do much, but it gives you the site's content. They can't stop you.

wget or curl are useful ways of grabbing a page and all its resources.

Of course the real l33t h4xx0rz know:

% telnet foo 80
GET / HTTP/1.1
Host: foo<ENTER><ENTER>

Or you can make stelnet for https sites (thanks to @feld for the )

% echo 'openssl s_client -connect "$1:$2"' >bin/stelnet
% chmod 755 bin/stelnet
% stelnet foo 443
GET / HTTP/1.1
Host: foo<ENTER><ENTER>

Fuck those guys.

A Flotilla of Shit

Modern software is junk. Almost every program uses vastly more resources than it needs, and does its main task worse than older, more focused programs.

I don't think I have a single "new" program that's as good as the thing it replaced, not a single program as good and light as the stuff we had 30 years ago. So where possible I use 30-40 year old software, and I resent the complex stuff I have to deal with. It's polluting the planet, literally boiling the oceans.

Case 1

This blog is in WordPress, which is in PHP on a giant tower of shitty software, like 20 "plugins" to fix things that are inadequate and wrong in it. I've done what I can to lighten it some, streamline layout, but that's lipstick & yoga pants on a pig. 25 years ago I had a simple blog (uh, actually also in PHP, tho I had another one in Perl, so that's not any better). But that was <1000 LOC, it just needed a tiny local database, and really could've just used flat files. And before the blog, I had just my hierarchical web site, and before that I had Gopher.

Gopher was basically perfect. Just a structured tree of documents, accessed by raw socket connections or manually by telnet. If you wanted to make a journal ("web log" -> "blog" was a decade away), you put links to plain text entries on a Gopher menu.

iMark's Gopher Hole _   _   0
gMugshot    /images/mark.gif    example.com 70
1Games  /games  example.com 70
iJournal    _   _   0
01990-09-01 /journal/1990-09-01.txt example.com 70
01990-08-25 /journal/1990-08-25.txt example.com 70
.

etc. Actually at the time I probably would've done chronological order, not reverse.

We have Gemini now trying to be like Gopher, but it has TLS, and a complex connection protocol, and error messages (Gopher just responded "3" if something went wrong, possibly followed by a message), and then the page you get is presentation, not a menu; it doesn't tell you the content type of any link, it tries to style content in-line, like a lower-resource WWW. But to run Gemini, you need a web server to update TLS, it won't stay up without constant maintenance, and it uses more resources than just serving a web page.

Case 2

Mastodon is a giant database that constantly messages other databases to tell them about posts… and it still sometimes takes a while to propagate messages, or fails utterly. There's no markup except URLs, and either polls or images (can't have both, and aren't inline). The only control you have over your experience is blocking people, and crude text-match filters.

30 years ago, we had USENET, email, and IRC/ICB chat. USENET was often slow, some servers would only connect once a day, others every hour, some every 15 minutes or so. You might need a couple hops to get to someone. But your message length was unlimited, most clients handled some markup with *bold*, /italic/, _underline_, and <URLs and FTP hostnames>. Images had to be UUEncoded, but most clients could insert them easily, graphical ones could display them inline, and download them; I used text-only strn so I'd download and run xv to see images. But the power we had in those clients was so much better. strn did scoring, I had thousands of lines of regular expressions and header lines to match with scores up or down. I'd go into a newsgroup, and the best stuff would be at the top, mediocre stuff below it if I cared, junk and spam and assholes deleted.

If you wanted to immediately contact someone, email or chat existed. There's an experimental chat system on Pleroma, but not on Mastodon yet/ever. Or you can use the modern equivalent of that, burn 1GB of RAM and a CPU core running Slack or Discord. Madness.

Case 3

Emacs. Eight-hundred Megs And Constantly Swapping. Is emacs the original sin, or were there flotilla-of-shit programs before it? Back in the day, you could start micro-emacs ("me" on Atari ST, later uemacs) in milliseconds, or emacs in many tens of seconds or even minutes. The emacs people would just leave this giant blob of an interpreter, editor, half an operating system but not really, running all day, eat most available RAM and CPU, and load files into it. The me and vi people would instantly open a file, edit, and close, barely a blip on the system resources. 30 years later, uemacs starts in nanoseconds, and emacs starts in seconds, but it's just as obnoxious.

Today I use BBEdit, which is svelte for an IDE, but it's a giant pig compared to what "a text editor" needs to be; I keep trying other IDE-types like Sublime Text or Atom, and they're too heavy for me to tolerate. And in console, I run Vim, which isn't as bloated as emacs, but it's fat. None of these make me happy. STeVIe was much lighter, and I've repeatedly considered going back to it if I can recompile it. I did manage to compile Linus' build of uemacs and it's nice, but I can't get used to it again after 25-ish years off it; my console habits are vi, it seems.

Resolved

The end goal of software is not to put everything in it, a flight simulator in your spreadsheet (fucking Excel!); a computer in your fridge for playing ads; a web server, email client, and text editor in your math program "notebook"; a fucking NTFS miner in your MS Paint clone.

The end goal of good software is to do ONE THING. To do it fast, efficiently, and correctly, in the least resources you can.

Re-evaluate your use of flotilla of shit software, and dump it.

BASIC at 57

We had a lingua franca, including the first 15 years of personal computing, that could be taught in a few hours and immediately used practically, and then it vanished almost utterly in the late '90s. Two generations are completely illiterate in the language of their ancestors.

Now, there's a couple of heirs to BASIC.

Python mostly took that role. For a while it looked like every computer would have a good version, but then between the Python 2/3 fiasco and hardening systems, you mostly get an old Python shipped on platform, and have to manually install from Python.org. IDLE (with my IdleStart shortcut ) is still a pretty great REPL, editor, and runner. import turtle as T; T.reset() and you can start doing turtle graphics in 10 seconds. The Raspberry Pi Beginner's Guide has a lot of Python as starting language (and Scratch, which is more a cruel joke than a language), which isn't great at graphics on a low-power computer but it is possible. The problem is it's considerably slower than a good BASIC, can't make use of multi-core, and relies on Tkinter for most graphics, which is even slower. Python's an evolutionary dead-end.

JavaScript is everywhere, and trivial to get started with… except you immediately run into a security wall, so you have to run a web server (easiest is, ironically, python3 -m http.server -b 0.0.0.0 8000 which serves all files in current directory). Edit file, reload browser page. And then doing anything in JS is a big hike up the mountain of JS, HTML, CSS. But it does run. Teaching everything you need to do interactive programs in it is hard bordering on a semester's coursework.

Scheme and LISP can be used this way, as seen in the Land of Lisp book, and Racket, but SBCL is a complex and terrible runtime for an ugly dialect of LISP (IMO, don't throw bombs at me), Racket has a broken REPL and their focus is on language experiments, not so much being useful. The other Schemes vary from hard engineering to even launch, to easy enough but poorly supported like my favorite Chez Scheme. I've been working on a "Beginner's Scheme" book for a while, and it's hard to compress what you need to know to get anything done, into small, fun parts.

It's actually easier to do Programming on Your Phone.

But there's still nice enough BASICs, in particular Chipmunk BASIC, and the old BASIC books & magazines work fine in it:

Just make a BASIC folder, download all those PDFs into it, and read them to see how quickly they go from "here's the BASIC commands" to "write a real program". And how you can make computing fun, not a chore.

I've been spending a little "non-productive" time hacking on my BASIC CRPG that'll run on the SpecNext when it arrives later this year… I do my work for now in Chipmunk; because NextBASIC has some strict limitations, I keep those limitations in my program, like single-letter array names. Graphics will have to be totally rewritten (but most of the UI is text-mode and portable), some data storage, too. Happily NextBASIC does have named functions (PROC, or SUB in Chipmunk), local variables, and loops (REPEAT:WHILE x:...:REPEAT UNTIL x, verbose but usable), so there's less GOTO and no GOSUB in my code.

I thought the line numbers and other limitations would kill me when I started doing it again, but in practice it hasn't bothered me much. I start each logical section at multiples of 10 or 100, add 1 per line, indent function and loop bodies, rarely have to renumber them. Since I don't GOTO/GOSUB much, finding them is less of a problem, only time I need specific line numbers is RESTORE xxx for DATA.

I'm starting to see BASIC as an interesting language again: Low-level enough to do something on simple machines, and reveal exactly how your algorithms work, high-level enough that you can get something done (much easier than ASM). You wouldn't want to build a large system in it, but focused problems, "tunnels through rock" as Chris Crawford wrote in De Re Atari, are well suited to it.

The original home computers having "turn on, maybe hit one key, you're in BASIC" interaction was amazing, unparalleled in any other system since, and we need to get back to as close to that as possible.

VR Micro Online

I've got a new project in the works, VR Micro

A shared infosystem based on spatial reasoning,
a world of many interconnected maps,
with documents and services physically represented as objects.
Users have avatars and can see and interact with each other.

The short version is, this is a file share, as a memory palace by way of graphical adventure games. It is to "real" (but costs too much and makes you puke) VR, as HTML was to "real" (but never shipped) hypertext like Xanadu: It's small and simple enough to actually work. To be something a semi-normal person could run on a rented server and make some maps and share their thought world.

All I have so far is a spec, but I got the server stood up this morning, I expect to have a standalone client working soon™, and then can work on the server.

I plan to keep it all licensed BSD for code, CC-BY for content. You are of course encouraged to contribute feedback, source, content, and/or money.

Hey, you like this? Servers aren't free. You know I have a Patreon tip jar up there? <rattle> <rattle>

Nanorogue2 in BASIC

I've completed my BASIC 10-Liner contest entry, download on itch.io

Just shove the disk (.atr) in Atari800MacX or any other compatible Atari 800XL emulator, disable BASIC and hit reset, it should boot up into the launcher:

Where you can read docs or source:

And play the game!

So, the source for my first pass was manually-packed down, and I couldn't really fit everything I wanted in there, or switch to text-graphics mode. With some rethinking, and a better source editing tool, I could… So I wrote a filter program "Basic2List.py" that removes comments & blank lines, joins up everything after a numbered line with colons, lets me insert binary codes with \xFF escapes. It still looks a little dense, because I have to manually use abbreviated statement names or remove spaces, I'd like to make it smart enough about BASIC source to do that itself.

But it lets me turn source like:

5   POKE731,1       // noclick
    GR.1            // 20x20 wide chars, 40x4 regular
    SE.1,13,15      // palette 1 to gold
    W=20            // world size
    DIME$(27),M(W,W)    // E$() encounter table, M() map
    //RRRZZZD$$..........#######>
    E$="\xF2\xF2\xF2\xFA\xFA\xFA\xE4\x04\x04\xAE\xAE\xAE\xAE\xAE\xAE\xAE\xAE\xAE\xAE#######\x3E"
    H=10        // Hit Points
    L=1     // Level
    // G=0      // Gold, default value
    ?"NANOROGUE BY MDHUGHES"

into:

5 POKE731,1:GR.1:SE.1,13,15:W=20:DIME$(27),M(W,W):E$="RRRZZZD$$..........#######>":H=10:L=1:?"NANOROGUE BY MDHUGHES"

(except the RRR... are inverse & graphics chars)

See the Atari BASIC Quick Reference Guide to learn the abbreviations and some of Atari's peculiarities. And it's running in Turbo Basic XL which really helped the program size, so I was able to squeeze in stairs!

Last time I was using the compiler, and that worked but it distorted my sounds, and I couldn't make LAUNCHER.CTB run NANOROG2.CTB! So if I just left them all uncompiled (but tokenized) .BAS files it works fine.

The only down side is it's stuck in easy mode. I'd love to have a difficulty which increases the GP to Level Up, and makes monsters hit harder (but not reward more), but that didn't quite make the cut.

Generally I'm pretty pleased by this!

The ZX Spectrum (non-Next) port is turning out to be hard, it lacks a few things and doesn't have ELSE, either, so I don't know if it can be done.

10-Line BASIC Contest

Let's go back to the 1980s!

So I knocked down a tiny subset of my already tiny BASIC demo program, NANOROGUE, and plan to make 10-line versions for Atari 800 and ZX Spectrum. Getting it running on desktop in Chipmunk BASIC was trivial. Just a little ANSI for screen positioning.

Initially I just used standard Atari BASIC, and that worked fine, if very very tightly packed, and not fast… but the lack of an ELSE statement left me with an 11-line program, I wanted to end with 50 ... :GOTO 20:ELSE:GOTO 20:ENDIF but had to move it to a new line. Very frustrating. So I'm using an enhanced BASIC, which is allowed for the PUR-120 tier, for one command.

Being "compiled" (to bytecode, don't expect miracles) and making AUTORUN.SYS easier than my own utility is nice. TBXL is at least a 1985 tool; though at the time I was using the "official" BASIC XE cartridge instead, which had similar features, and mainly moving over to Action!, 6502 ASM, and C. But for retrocomputing it's fair game.

Making a TBXL executable & bootable disk is a little fussy.

  1. Make a blank floppy ATR (emulator disk format), format it, put Atari DOS 2.5 on it or whatever you like (from DOS 2.5, H to write DOS files). This is your program disk. Like TRON, everything you do will be encoded on it, and losing it will subject you to immediate deresolution.
  2. Turbo BASIC XL disk in D1, program disk in D2. Control menu, Disable BASIC, Cold Reset (Sh-F5). You should see a red load screen, then READY. Check you're in TBXL by typing DIR.
  3. Write your program. I recommend writing BASIC as LST files in a desktop editor, then Cmd-E "Edit an atr disk image", click "Atari/Mac Linefeed Translation", "Import Files From Mac". In BASIC, ENTER "D2:FOO.LST". RUN to test it. But if you like living the '80s lifestyle all the way (or using non-ASCII chars, which are annoying to work with), you can work entirely in TBXL.
  4. Save your program tokenized: SAVE "D2:FOO.BAS"
  5. BRUN "D1:COMPILER.COM", now swap D1 and D2 (Cmd-D, click the swap buttons; you want your program disk in D1!), hit 1, pick FOO.BAS, save as AUTORUN.CTB. Swap disks back (you want your program disk in D2!).
  6. Ctrl-D, J for Ja (yes) to go to DOS-XE. COPY D1:RUNTIME.COM D2:AUTORUN.SYS
  7. Now put your program disk in D1, reset, and it should come right up into your program, then prompt for Dos, Run, or Load when it ends. Nice!


So resuming work on NANOROG, I get:

The only down side is this tiny version has a very slow redraw, it renders the entire screen each move, instead of just fixing last/new positions. I'm pondering changing it to graphics 1 (wide text, 4 colors) and poking screen memory which is probably faster than printing. I made some acceptable bleeps and buzzes with SOUND commands; I'm a poor sound designer, but I get there with some trial and error.

Anyway, next week's task is the ZX Spectrum version. Speccy BASIC is pretty good, so I expect I can knock that out quick and without all these shenanigans.