Introducing REFDoor

I had several sources of inspiration when working on Darkness 2.0’s simple “DRS” scripting language, from some specific dialects of BASIC to good old MS-DOS Batch. In the end, it most closely resembles a combination of the Exitilus Quest Scripting language (EQS) and RTSoft‘s “REF” scripting language. Syntax aside, REF was definitely the bigger influence in even coming up with a scripting language in the first place, as it might have been my first real exposure to the concept.

I first stumbled upon REF back in 1995 when I randomly nabbed a copy of RTReader version .02, likely from Seth Robinson’s BBS itself. RTReader was a standalone interpreter door for REF, Seth’s own proprietary scripting language. The archive included a single script called “The Bloody Claw Newsletter” which included some updates from Seth on the state of RTSoft and some other random stuff. Most appealing of all, it was filled with Seth’s infamous brand of humor. As a huge Legend of the Red Dragon fan, I was captivated and eagerly awaited the release of the next issue. I also ended up taking a look at the included documentation and, while I remember being impressed, I was mostly puzzled about why someone would put so much effort into such a complicated engine for a relatively simple program. Of course, when Legend of the Red Dragon II: New World was finally publicly released a couple of years later I learned that the game was almost entirely scripted using REF, with RTReader itself likely morphing into LORD 2’s engine at some point. Very cool.

The What's New section of RTNEWS02.REF running in REFDoor

Despite the immense popularity of Seth’s other BBS doors, it seems that relatively few people are familiar with RTReader. While I’ve worked with quite a few similar scripting languages since then, I never forgot about it myself, and when trying to decide what DRS would look like, I dusted off the original RTREAD02.ZIP archive and reacquainted myself with the documentation. With Darkness 2.0 finally released and the nascent version of DRS out in the wild, I found myself thinking back to REF, and wondered if I could implement a scripting language like REF in the same way I had coded DRS’s interpreter.

You see, when coming up with DRS, a core concept was to keep it as simple as possible, both for creating new events with, but also in respect to how I’d implement it – I didn’t want to spend forever on what I knew would be a seldom used side feature, for one. What I ended up doing was interpreting DRS script files in “real time” parsing the file as I read it, line at a time. Most similar interpreters would instead load the entire script into memory, allowing for much faster and more dynamic access to the code. Of course, I ended up having to include some interesting little tricks to get things like hopping to labels that were defined earlier in the script file working, for instance, but in the end it all worked quite well.

So, with REF on my mind, I tossed around the idea of expanding DRS to be more REF like, or replacing it with REF entirely. I even pestered Seth to see if he had the rights to release RTReader’s source code (if he even still had it) so that I could peruse it, curious about how he had handled memory management since this would be the biggest single difference in our interpreters. Still, my original question lingered, could I do something like REF the same way as DRS?

Yes. Yes, I could!

REFDoor's built-in REF Picker Menu

Starting in September 2019 I worked sporadically on writing my own REF interpreter based on my Darkness 2.0 DRS code. Of course, I had to reverse engineer the entire thing – relying on a combination of referencing Seth’s original RTReader and LORD 2 REF documentation, numerous publicly released script files, and good old fashioned observation of how RTReader actually behaved which, quite often, wasn’t exactly 1:1 with what was documented. I did end up occasionally looking at the (incomplete) source code that Seth graciously released, as well as Rick Parrish’s LORD 2 clone‘s source code, but given the constraints of my goal for this new interpreter, I couldn’t exactly rely on either for much more than solving the occasional mystery. It ended up being a fairly large project by my standards (I did end up taking a solid 4 months off from the project right in the middle of it, in my defense) but getting RTWALL.REF and soon after RTNEWS02.REF (the aforementioned Bloody Claw Newsletter) to interpret 100% accurately in March were huge milestones that kept my momentum going decently from then on.

I ended up adding quite a few of LORD 2’s enhancements to the language, and even some of my own, while maintaining 100% backwards compatibility with RTReader. After emailing Seth for permission to include his original archives and him mentioning his LORD 2 REF based mini-game The Brady Bunch Adventure, I also added some additional LORD 2 compatibility to get it (mostly) working properly as well. In the end, I hope this release comes across as fairly polished – I put a lot of care into the features, the accuracy of their functionality, and the documentation.

Download v1.0.0 of REFDoor!

REFDoor is based on the usual XDoor 3.x door kit I use, meaning it’s available in a 16-bit MS-DOS FOSSIL friendly version, as well as a 32-bit Window DOOR32.SYS version. Both builds, as well as all of the aforementioned RTSoft REF scripts, are included in the archive. A big thank you to Seth for allowing me to include them!

The intro screen from BRADY.REF running in REFDoor

Keep in mind that if it’s not obvious by now, this was mostly a project I did for my own selfish purposes, so it’s practical uses are somewhat questionable. That being said, I do think some SysOps and/or developers might be able to make some good use of it – it would be a fairly effective way to make quick, custom doors for BBS software with limited built-in modification capabilities, for instance. Hey, if nothing else, you can easily setup The Brady Bunch Adventure on your 64-bit Windows BBS using it!

So, beyond that? Well, I’m still toying with the idea of adding REF functionality into Darkness 2.x for event and/or IGM creation. I’ve also started doing some prototyping on a new door game that would use REFDoor as a foundation, similar to what Seth did with LORD 2. Who knows for sure, but I had a lot of fun working on it.

You can read a little more on everything else mentioned here in the REFDoor documentation included in the archive if you somehow haven’t read enough already. Enjoy!

As a side note, the only version of RTReader I’ve ever seen is version .02, and it includes The Bloody Claw Newsletter Issue #2. Does anyone have or even know of the existence of an earlier (or later) version of RTReader and/or other issues of The Bloody Claw Newsletter?! If so, contact me!

1. The “What’s New At Robinson Technologies” section from The Bloody Claw Newsletter Issue 2
2. REFDoor’s built-in REF picker menu, which apes the look and functionality of RTReader
3. The introduction screen/menu from The Brady Bunch Adventure

Getting into Amiga – Choices

Introductions out of the way, this whole adventure started in earnest when I saw a post of a local retro computer Facebook group. One of the members was parting with his upgraded Amiga 1200. It looked to be in great condition and included most of the standard upgrades, such as a CompactFlash card-based hard drive, a Gotek floppy drive emulator, and an Indivision scan doubler. The price seemed pretty reasonable, all things considered, and an upgraded A1200 is pretty much the ultimate Amiga in my mind, so I was very tempted. Unfortunately, someone else had been quicker on the draw and already called dibs on the purchase. I watched the comments on the post for a week hoping the original poster would announce that it was still available but alas, no such luck.

This got me thinking more and more about finally getting an Amiga of my own to play with, which led to multiple deep dives into Amiga forums and groups. Thanks to my interest in retro computing I already had some familiarity with the awesome things people had been doing in the Amiga scene for the last decade or more – insane modifications like the Vampire series of FPGA based accelerators, for instance. Of course, there were also numerous other emulation options as well. The more I looked, the more options it seemed I had to choose from.

Joe Decuir

First and most obvious, acquiring an actual Amiga. There seemed to me to be a disconcerting number of challenges involved in collecting real vintage Amiga hardware, including the limitations of the stock hardware from the era, like having to rely on floppy disks, the seemingly bottomless money-pits that are collecting and aftermarket modification, the availability of this stuff here in the US where Amigas are far less common, worrying about exploding capacitors, smoking power supplies, and other issues related to the relatively ancient age of the hardware, the physical space being at odds with my recent efforts to downsize into my modest apartment, NTSC vs PAL issues, and a host of other video output concerns – I certainly didn’t want to have to track down a compatible CRT monitor, and much, much more. All in all, I decided to take getting a real Amiga off of the table.

The next option was hardware emulation. I haven’t ever messed with any of the newer FPGA based computers, though I attended a retro computer festival in my city last year and the MIST FPGAs as well as the newer MISTer FPGAs were fixtures in just about every booth at the convention, emulating various obscure machines to what seemed like a high degree of speed and accuracy. In fact, I attended a talk by Joe Decuir, one of the original Amiga hardware engineers, and he even shouted out the MIST Amiga core during his presentation. I’d heard a bit about them in the past, but I don’t think I ever realized how awesome they were until I saw them being used there.

Using a dedicated FPGA has numerous benefits over real hardware – a relatively tiny form factor, USB input compatibility and scaled VGA output meaning I can use my existing peripherals, swappable SD card based hard disks, “cores” that can emulate not only both older OCS/ECS and newer AGA Amigas, but also innumerable other platforms including the Amiga’s Commodore forebearers as well as its most compared rival, the Atari ST. You can also max out the virtual hardware on any of these platforms, emulating a stock Amiga 1000 running the oldest ROMs and OSes, or a super tricked out Amiga 4000 running newer, post Commodore ROMs and OSes. All in all, aside from being quite far from the experience of using real hardware, the quality of the emulation of the Amiga cores is the biggest concern.

Amiga Forever screenshot

Finally, we have software emulation. WinUAE and its counterparts are all quite mature, which means that not only is emulation and the added modern utility excellent, but there’s also a huge user community out there for support. You also have all of the flexibility in emulation provided by the aforementioned FPGA options, and more. The usability of these platforms is, indeed, incredible. Of course, running a soft emulator on top of a modern OS, on totally modern hardware is without a doubt the most removed from the experience of using a real Amiga.

One middle ground that has gained a lot of popularity lately is building a dedicated Raspberry Pi based Amiga emulator. There’s an excellent UAE based Amiga emulator for ARM called Amiberry which, despite its popularity as a game emulator, can be used for emulating the entire environment. Indeed, there is even an entire distribution dedicated to the cause, Amibian. While you don’t get the other cores or the performance of using an FPGA (or even emulation on a modern, higher end PC) you do get a nice, unobtrusive, dedicated piece of hardware beautifully aping an Amiga.

At the end of the day I decided to go the FPGA route. While the newer MISTer might be a better long term choice with its superior hardware and more active development community, the original MIST’s lower cost of entry, simple operation, and native VGA output won me over, at least for getting my toes wet into the world of FPGAs. I also bought a copy of the latest Amiga Forever, since it seems like a little bit of software emulation can be helpful in supporting any of the above efforts, and, controversy aside, there’s nothing wrong with having “legal” copies of the various Amiga ROMs and Workbench versions it comes with. I’m also still intrigued by the idea of building a dedicated Amibian-based Pi. Given its tiny cost of entry, I think it’d be a fun little project to document here.

So, with that, the journey is off to a start!

1. Joe Decuir is the man. Involved in the Atari 2600, Atari 8 bit PCs, and the Amiga chipset, but also newer technologies like USB and Bluetooth.
2. A stock screenshot of Amiga Forever being used in a totally unrealistic way. Yay!

Getting into Amiga – Introduction

Let’s start this story, well, at the very start…

The earliest experience I can recall relating to a personal computer was looking over the shoulder of a childhood friend whose dad had an elaborate Commodore 64 setup, complete with multiple disk drives, a dot matrix printer, and hordes of floppy disks. Shortly thereafter, possibly talked into it by the same parent (though maybe just a case of trying to “keep up with the Joneses”) my dad brought us home a Commodore VIC-20. We eventually bolstered the old VIC with a tape drive, a dedicated monochrome monitor, and several game cartridges and tapes. While not nearly as nice of a machine as my friend’s C64, that didn’t keep my brother and I from sinking countless hours into playing cartridge games, exploring all of the demos and games we had on tape, and attempting to type in some of the BASIC programs included with the VIC-20’s rather nice user manual (which definitely a challenge as a 5 or 6 year old.)

Commodore VIC 20 Family

Even after we got a shiny new Nintendo Entertainment System (well after most of my friends had acquired one) I still occasionally dusted off the VIC-20 to aimlessly mess around with it. There was just something… different about a computer that a video game console simply couldn’t approach. Even today it’s hard for me to fully describe, but between the seemingly “deeper” gameplay of computer games, to being confronted with a BASIC prompt the moment you turned so many of those old 8-bit machines on, it seemed like the possibilities were limitless, and my imagination had been effectively seized as a result. This was also still in the era of the arcade, and movies like WarGames and TRON, mind you. Unfortunately my VIC-20 stopped working after awhile, but that only served to help my fascination grow into an obsession.

A recurring theme when I talk about my history with computing, the years following the death of my VIC-20 were filled with attempting to get as much time with and exposure to these ever so exotic video game consoles and personal computers as I possibly could. I’d buy random magazines, read books, and watch any movie that had anything to do with computers and video games. I’d play with the relatively out-of-date Apple IIs, 286 PC clones, and the Apple IIGSes in my school computer labs. If I visited a friend whose parents had a computer or video game console, you’d better bet I’d try to convince them to spend some quality time with me on it. Similarly, I used to sneak time on a family friend’s old Sega Master System. Later the same friend, upon finding out about my love of computers and games, gave me a horde of his old Spectrum magazines which were as bewildering as they were fascinating. I’d go to the showrooms at department stores to drool over their demo PCs and I’d browse catalogs and build out my dream computer setups. With that, my fascination turned into a stubborn goal of obtaining a new computer. Aside from a family friend donating a (unfortunately, broken) Commodore Plus/4 to my cause, I’d have to wait quite a while.

Amiga 500 Class of the 90s Bundle

When it comes to Amiga in particular, I recall two specific things that were highly influential to why I’m writing this today. First, a detail that is extremely important is that, despite being an American, I spent many of my more formative years living in the United Kingdom. In the late 80s and early 90s, Amiga, specifically the Amiga 500, was seemingly ubiquitous over there and apparently in many other countries in Europe. It was the machine you’d see when computers were given away to kids on television game shows, and I’d always be there, jealousy watching scenes of teary eyed kids holding massive Amiga boxes over their heads in celebration. A second, more specific memory, was that I ended up randomly buying this January 1990 issue of The One (for 16-bit Games) at the village newsstand, likely motivated exclusively by the pretty pictures inside. Pretty pictures they were indeed – little did I know it, but this magazine was largely devoted to the Amiga and was filled to the brim with articles and advertisements featuring the mind blowingly awesome 16-bit graphics of the machine, the likes of which I’d never seen before that. These graphics were on another level. Aesthetics aside, the games themselves were mostly nothing like what I’d seen in the pages of Nintendo Power or GamePro: I recall seeing ads and articles related to It Came from the Desert, Midwinter, and Space Ace to name just a few. Between all that, I determined that my next computer had to be an Amiga.

Sadly, we moved back to the United States before I ever secured one. While my obsession with computers continued undaunted, the Amiga, not anywhere in any of the local computer shops or department stores, quickly faded as a contender, and eventually, even an option. I bought this single issue of Amiga World before closing that chapter of the saga of my childhood computer obsession for good. Not long after, my parents finally succumbed to my years long campaign of harassment and bought me a reasonably close to top of the line IBM-compatible 486/SX. I only got deeper into all things personal computer from then on, though Amiga wouldn’t be much of a part of any of that outside of being a lingering childhood memory.

Hidden Power BBS Login

Not entirely though. Pretty much as soon as I acquired a modem I got heavily involved in the PC underground BBS scene which was very much adjacent to and influenced by the Amiga underground BBS, demo, and piracy scenes, and “old school” ASCII art (which is largely Amiga ASCII based) became one of my personal specialties. I also dabbled with tracking via PC programs like Impulse Tracker and enjoyed viewing the occasional PC demo, trying to wrap my head around how some of those effects might have been achieved. So, my appreciation for the Amiga never totally died even if it did take on a new and different light over the years.

This more or less brings us to the present day, and I’m going to finally, some 30 years, dig into the fascinating world of Amiga. I’m going to be using the “Amiga” tag almost exclusively to document every step of my journey to some degree. While a lot of the details may be fairly uninteresting to Amiga veterans, I hope some of what I discuss here will at least be interesting or perhaps even helpful to others interested in or already involved in going into similar journeys themselves. Stay tuned!

I may dive more into the above two magazines in later articles, but for now I’ve *somehow* figured out exactly which issues they were and linked to full scans of them I discovered on Amazing!

1. My family and I in the mid 80s. Okay, actually, it’s taken from the cover of the VIC-20 user’s manual…
2. Amiga 500 Class of the 90s pack! In the UK Amigas were sometimes sold in awesome bundles like this one.
3. An example of an Ami/X style underground board, Hidden Power is running Sigma Express with a sweet ASCII by 2Fast.