Skip to content

sp9k/monster

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Screenshot 2024-09-17 at 7 52 42 PM

OVERVIEW

Screenshot 2024-09-17 at 7 52 42 PM

Monster is an all-in-one development system comprised of an editor, assembler, debugger, and linker all running natively on the Commodore Vic-20. The design philosophy is uncompromising maximalism without sacrificing efficiency or code density. This is in contrast to most existing Vic-20 assemblers (and most native development tools on 8-bit computers in general), which not only put memory efficiency first and foremost, but also let it guide the overall usability and design.

Large RAM expansions have become ubiquitous on the Vic-20 in recent years, so the philosophy of this project is to provide a rich feature set for a generously expanded memory configuration. Virtually any feature that I deem valuable in an assembly IDE is implemented.

Features include:

  • 40 column bitmap-based editor
  • vi-like keybindings
  • interactive source-level debugger
  • linker
  • breakpoint editor
  • memory viewer/editor
  • robust label support (including anonymous and local)
  • save/load files and export to .PRG
  • directory viewer
  • symbol viewer
  • auto-formatter and realtime syntax checking
  • powerful macro support
  • virtual memory for user program isolation
  • 8x8 custom character editor
  • many, many more...

For more information about each of the major components of Monster, refer to the documents linked below.

Assembler

Editor

Debugger

Monitor

Linker


REQUIREMENTS

Monster requires a Final Expansion 3 to function. The Final Expansion 3 contains 512KB of expansion memory, which is available via 16 banks. Much of this RAM is used to store the multiple source code buffers (up to 8), but it is also used to store code, debug-info, and other data.

The banked memory allows the user program to execute in almost complete isolation. The user program state is entirely backed up in the FE3, which means that, although this environment consumes a vast amount of memory itself, everything except address $9c02 (the bank select register) and a couple tiny interrupt handlers is preserved when control moves between the editor and the user program. Moreso even than small monitor cartridges, the program itself is virtually unaware of the resident tooling.

RUNNING

Prebuilt binaries can be found for all the necessary files in the bin/ directory. These can also be built from source with the Makefile. Build instructions can be found in the next section of this README.

To run from Disk find the BOOT.PRG and MASM.PRG files. Write these to your disk of choice and load Monster as you would any other program on your Vic-20:

LOAD "BOOT.PRG",8,1
RUN

The cartridge binary, monster.bin, can be flashed to your FE3 to boot Monster directly from ROM. Copy this file to your IEC storage device along with the installer (install.prg). Then run the following commands on your Vic-20 from the BASIC prompt:

LOAD "INSTALLER.PRG",8,1
RUN

This will flash Monster to the Final Expansion. Reset the computer to enter Monster.

If you wish to run Monster in an emulator (VICE), ensure that VICE is installed on your machine and run make start-disk or make start-cart from the root of the project to attach the corresponding disk or cartridge image. Alternatively, simply run VICE with the -cartfe argument:

xvic -cartfe monster.bin

BUILD INSTRUCTIONS

DEPENDENCIES

  • cc65 (tested with version 2.19)
  • make
  • python3 (any version should do)

The build process also requires python3 (any version should do).

BUILD STEPS

Clone this repo git clone https://github.com/gummyworm/monster.git

cd to the directory you cloned to and run make for the appropriate target

Monster can be built for two targets: disk and cartridge. The disk format is useful if you want to test on your Final Expansion 3 without erasing its firmware.

The cartridge is a better choice for emulators or power users on real hardware. It loads significantly faster (although JiffyDOS mostly closes the gap between the two)

To build the disk version, run make disk

To build the cart version, run make cart


EXAMPLE PROGRAM

Here is a simple hello world program to demonstrate the basic syntax of the assembler:

.ORG $1400
START:
  JSR $E5B5
  LDX #$00
  LDA #' '
CLR:
  STA $1000,X
  STA $1100,X
  DEX
  BNE CLR
DISP:
  LDA MSG,X
  BEQ DONE
  JSR $FFD2
  INX
  BNE DISP
DONE:
  JMP DONE

MSG:
.DB "HELLO WORLD!",0

About

40 column editor, macro-assembler and debugger for the Commodore Vic-20

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published