Casio_asm/doc/cfg_file.md

1.7 KiB

Assembler configuration files

These files are used by the assembler to use custom MMU mappings in the resulting bytecode file.

File format

This file is a text file for ease of creation on the calculator. It is parsed by splitting it around the UNIX newline character, and numbers are written in hex without prefix.

First line

The first line represents the entry point, which is the address of the first instruction to be executed by the processor.

Second line

The second line contains the offset at which the code is located in RAM, as seen by the assembler.

Subsequent lines

All subsequent lines are individual segment information, with the first line being the type, in decimal.

Common data

Second line of a block is the access code, which is a combination (binary OR) of these access codes:
4: read
2: write
3: execute

Third line is the offset at which the segment will reside in RAM.

Fourth line is the length of the block in RAM.

Block types

Block type 0 represents the ROM, which is just the contents of the bytecode file, excluding the header.
Block type 1 represents RAM, which will be zeroed-out before being mapped.
Block type 2 represents the stack, which can be mapped in RAM.
Block type 3 represents a file to be linked recursively. Beware, as infinite loops will not be detected.
Block type 4 represents a file to be mapped directly. Beware, as a RW file will actually be written to disk on memory write.
Block type 5 represents the VRAM which will always be mapped as RW.

Block types 3 and 4 have a special field which is the filename, in raw ASCII.