Assembling the code

The Ophis assembler is a collection of Python modules, controlled by a master script. On Windows, this should all have been combined into an executable file ophis.exe; on other platforms, the Ophis modules should be in the library and the ophis script should be in your path. Typing ophis with no arguments should give a summary of available command line options.

Ophis takes a list of source files and produces an output file based on assembling each file you give it, in order. You can add a line to your program like this to name the output file:

.outfile "hello.prg"

Alternately, you can use the -o option on the command line. This will override any .outfile directives. If you don't specify any name, it will put the output into a file named ophis.bin.

If you are using Ophis as part of some larger toolchain, you can also make it run in pipe mode. If you give a dash - as an input file or as the output target, Ophis will use standard input or output for communication.

Table 2. Ophis Options

OptionEffect
-o FILEOverrides the default filename for output.
-l FILESpecifies an optional listing file that gives the emitted binary in human-readable form, with disassembly.
-m FILESpecifies an optional map file that gives the in-source names for every label used in the program.
-uAllows the 6510 undocumented opcodes as listed in the VICE documentation.
-cAllows opcodes and addressing modes added by the 65C02.
-4Allows opcodes and addressing modes added by the 4502. (Experimental.)
-qQuiet operation. Only reports warnings and errors.
-vVerbose operation. Reports files as they are loaded.

The only options Ophis demands are an input file and an output file. Here's a sample session, assembling the tutorial file here:

localhost$ ophis -v hello1.oph
Loading hello1.oph
Assembly complete: 45 bytes output (14 code, 29 data, 2 filler)
    

This will produce a file named hello.prg. If your emulator can run PRG files directly, this file will now run (and print HELLO, WORLD!) as many times as you type RUN. Otherwise, use a D64 management utility to put the PRG on a D64, then load and run the file off that. If you have access to a device like the 1541 Ultimate II, you can even load the file directly into the actual hardware.