It’s been a while since my last post — sorry (a more substantial post is a bit long in the tooth, but may appear soon) —, so it may time to quickly announce a few updates to the site.
Since it’s end of the year, which is also the traditional time to look for a calendar, there is now one at www.masswerk.at/time/calendar. Pick a year and print it out in order to show off that you really understand how days work! :-). We had this already at our time display, but now you can have an entire year of this! E.g., here’s a link to 2023, which happens to be next year. (Make sure to disable headers & footers and to enable backgrounds in your print dialog.) If you really don’t like the idea of the layout (how dare you?), you may also export a no-frills plain-text version.
Another update is also related to time, namely it’s an international time zone conversion utility. Which can be found at www.masswerk.at/time/convert. Now, JavaScript (and by this, your browser) features localized dates with time zones, nowadays, but this only supports foward conversions from UTC timestamps to localized dates. This, however, also involves finding a corresponding UTC date to a given local date so that you can pick a date and time in one timezone and see what this may be in annother time zone. Which is, what this utility does. (Please mind the disclaimer. Especially mind that things become a bit tricky with DST/standard time crossovers and there may be more than a single UTC reference for a given localized time-date combination. E.g., when a local clock rewinds to 2:00 am at 3:00 am, once a year.)
This is what it looks like. Technically, we use our trusty TZIntl.js library for this. And thanks to this, this utility runs entirely on your local computer, in the browser, without connecting to an external service or leaking any data.
Links to both utilities can be found at the bottom of our fancy time display, which is always behind the tiny clock icon at the very end of the site navigation.
The final news is about the PET 2001 emulator: First, the emulator now supports quantifiers in PETSCII escapes in any BASIC source file or pasted code, like "{4 SPACES}" or "{12 RIGHT}", which adds another layer of compatibility to some listings as may be found in traditional type-in code. (It may even come handy for designing screen output more comfortably.) The other one is a rather major one, but without much of an external effect: The emulator now supports varying ROM sizes, which means, it now also comes with ROM 4.0. However, the IEEE interface emulation still only supports LOAD and SAVE commands, so there isn’t much utility to the advanced disk commands of Commodore BASIC 4.0. Still, there is otherwise full support for ROM 4.0, including text-to-BASIC, BASIC-to-text imports and exports and even click-anywhere-on-the-screen-to-place-the-cursor functionality (AKA, “Touch Cursor”). I guess, still sufficient added capability to elevate the emulator to version 1.5.
To common knowledge, a joke explained is a dead joke. However, apparently it’s totally accepted and “ok” to explain a mechanical joke. As our last installment was pretty much a mechanical joke (it even has a crank!), we may thus feel free to do so. And, as we’re feeling like it, we’ll attempt to do so…
Some may have noticed already, but some time ago the Virtual 6502 suite received an update on its GUI, featuring both dark and light mode.
Maybe somewhat less obvious, the assembler now supports anonymous (or temporary) labels. Meaning, you can mark any address/instruction by a “!” or a colon (“:”) for an empty label at the start of the line and may refer to this by an “!” or a colon and any number of plus or minus signs as a quantifier as a target address, where “!-” refers to anonymous label immediately before and “!++” to the second-next anonymous label and so on. (E.g., “BNE !+” may be a useful construct, where you just want to skip a couple of instructions and do not want to think of yet another label for this.)
The disassembler received an option to include cycle counts as comments for each instruction. And there’s a new option to format the output to lower-case.
And, I redrew some diagrams for the 6502 instruction sheet in hand-coded SVG :-), so blurry scans no more.
Last fall, the Virtual 6502 suite also received support for the BBC Micro (or Acorn 8-bits in general) and the assembler integrated in BBC BASIC. I had planned a write-up on this, but this somehow vanished in the cracks. Anyways, in order to assure round-trips through the entire suite, this eventually involved parsing and executing some BASIC instructions, as well, especially string functions. (This is mostly for the peculiar indirection mechanism of BBC BASIC Level I, which doesn’t feature any constructs for including any literals directly in the assembler code, but requires a break-out to BASIC in order to insert values into memory by the help of some special BASIC variables. As this is used mostly for strings, this afforded some BASIC string processing capabilities, as well, in order to run/process actual BBC BASIC sources. This is also includes a basic “understanding” of FOR-loops, at least enough to recognize the loop variable and to ignore them otherwise. You get the idea… Retrofitting this to what was once a very simple assembler was a bit of an adventure. However, there’s now a “BBC Micro” checkbox to each of the applications for doing the 6502 BBC-style.)
Finally, there’s a minor bug-fix to the emulator and the disassembler, where we attempted to output a character literal for 0x7F, which is a non-printable character.
Moreover, the Digital Library finally features Wittgenstein’s tractatus logico-philosophicus, which had been a safe bet for a candidate right from the beginning, because the unique proposition numbers of the tractatus and sequence numbers are a match made in heaven — or hell (you decide) — at least not at ground level. Diagrams are a bit difficult, though. (We have to admit, however interesting this may be, the inprint of punch card remains a somewhat questionable choice of media for literature.)
Expanding the catalog of questionable media for the sake of literature.
Meanwhile, the mass:werk Digital Library has been busy expanding its catalog of nerdy presentations of famous works of literature. (The library currently has a focus on prototypical exponents of materialist philosophy, like Jane Austen.)
Classic PDP-1 ‘display hacks’ emulation brought up to new standards.
The emulation of the Minskytron and other so-called “display hacks” for the DEC PDP-1 is now en par with the Spacewar! emulation, in fact, it uses the same script and resources.
Moreover, the emulation of David Mapes’ “Graphical Fun” has been overhauled, as well. (David Mapes invented at LLNL independently the same fast circle algorithm as Marvin Minsky and used it for animations similar to the Minskytron.)
Spacewar! 2B, the very version shown at the MIT’s Parent Weekend on Sat. 28 / Sun. 29 April, 1962, is labeled “2 Apr 62” — exactly 60 years ago today! Moreover, a first article on the game was published in the April 1962 issue of “Decuscope – Information for Digital Equipment Computer Users” (Vol. 1 No. 1, April 1962, pp 2 and 4).
Happy birthday!
To celebrate the event, the emulation was slightly overhauled, the appearance was updated and significant portions of the descriptive text were rewritten.