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.
A few new features for the 6502 online disassembler.
Another update to the “virtual 6502” disassembler, which has obtained a few new features regarding symbol tables:
Addresses immediately follwing a declared symbol will be translated to a labeled “+1” address (optionally). This may be useful with any code setting up pointers, etc, where only the low-address is declared as a symbol (as is often the case with zero-page system addresses.)
E.g.,
Symbols may be optionally declared specifically for write access only by a “w” suffix (case-insensitive). Think of the Atari VCS (AKA Atari 2600) and TIA read and write registers sharing the same address.
(The assembler ignores such a suffix in order to provide compatibility with such symbol tables.)
E.g.,
CXP0FB = $02 ;read register
WSYNC = $02 w ;write access only
Predefined symbol tables for the C64, the PET 2001, the Atari VCS, and the BBC Micro/Acorn may be loaded directly from the UI.
The disassembler now supports .DATA pseudo instruction for its symbol tables to declare an address or a range of addresses as data to be excluded from the disassembly (".BYTE" pseudo instructions will be added instead.)
E.g.,
.DATA $2040 ;exclude a single address
.DATA $2040 ... $240F ;exclude range $2040 … $240F (inclusive)
.DATA $2040, $240F ;as above
.DATA D1 ... D1+4 ;expressions are allowed
A comment with a binary representation of the respective byte (e.g., “;%01110101”) will be added to any verbose output format, in order to help identifying sprites and similar patterns.
This should be a useful for drilling down on some code: just keep adding “.DATA” statements to your symbol table as you identify a data section and keep on disassembling.
(Again, such a DATA pseudo-instruction is ignored by the assembler to assure compatibility.)
Moreover, all the “virtual 6502” apps now support input and output in “&…” hex notion to comfort those who were tragically mislead by the BBC (while MOS made it quite clear that is “$…”). ;-) (Seriously, I’ve really the highest respect for the BBC Micro, which was an enormous achievement.)
By this, the disassembler looks much like feature-complete.
Presenting a new old-school video game just a few years late, totally unironically.
Back in 2017, I was asking myself — like about every other person on Earth has done so before ;-) —, what would a Spacewar!-like game with multiple gravitational attractors look like? Would it even be playable? Well, time for an experiment.
Another major update to the venerable “Virtual 6502” emulator – assembler – disassembler suite.
I may have been a bit unresponsive over the last few days, but there is a reason for this. Namely, I invested most of my available time into another round of updates to the “Virtual 6502” suite, consisting of an emulator of the MOS 6502 MPU, an old-school assembler, and a respective disassembler. And this has been a major round of updates. Suffice to say, I think these venerable programs, which had been a bit basic and even dated by now, do now for a competent little suite of programs.
+++ Updated for an even improved version of the disassembler. (June 25, 2021) +++