VIC-1001 in I/O magazine (JAP)

History and Preservation Issues

Moderator: Moderators

Post Reply
User avatar
Mike
Herr VC
Posts: 4841
Joined: Wed Dec 01, 2004 1:57 pm
Location: Munich, Germany
Occupation: electrical engineer

VIC-1001 in I/O magazine (JAP)

Post by Mike »

The VIC-1001 once got quite some coverage in the Japanese I/O magazine.

There are several (good!) PDF scans of the magazine to be found on archive.org, and I set out to type in EX.MON, published in the 09/1982 issue, on pages 356, 357 and 358:

Image

The tool features a memory hex dump editor and a direct assembler and disassembler, loads into the unexpanded VIC-20 (use LOAD "...",8,1) and it is 1.5 KB in size (download).
  • Start with SYS 4352
  • Enter 4 digit hex number (without $) to either disassemble a line or dump 8 bytes in hex
  • Changes are applied by overtyping disassembly or hex dump and entering line with RETURN
  • Address prompt auto-increments
  • X command switches to assembly mode
  • Y command switches to hex dump mode
  • Z command quits EX.MON and returns to BASIC
While I tested the tool, I found several idiosyncrasies (for not to say, "misfeatures" or "bugs"):
  • (Address) operands generally omit "$"
  • Branch target addresses are prefixed with ":"
  • Address mode (ZP,X) uses non-standard syntax "(ZP),X" as operand
  • LDX ZP,Y and STX ZP,Y use non-standard syntax "ZP,X" as operand
  • LDX ABS,Y uses non-standard syntax "ABS,X" as operand (could be fixed by swapping $147E/$147F)
  • CLD is not accepted (use "CDL" instead - could be fixed by swapping $15E7/$15E8)
That means, EX.MON successfully assembles and disassembles all 151 documented opcodes of the NMOS 6502 - albeit some of them with non-standard syntax. I kept the last two points above as they are, for preservation purposes. Fixing "(ZP),X" and the missing ZP,Y address mode likely requires some more reversing.

Greetings,

Michael
Post Reply