Casio_asm/doc/cfg_file.md

39 lines
1.7 KiB
Markdown
Raw Permalink Normal View History

2018-06-29 10:54:22 +02:00
# Assembler configuration files
These files are used by the [assembler][assembler] to use custom MMU mappings in the resulting [bytecode file][bin_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][proc].
### Second line
The second line contains the offset at which the code is located in RAM, as seen by the [assembler][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][bin_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.
[assembler]: ./assembler.md
[bin_file]: ./bin_file.md
[proc]: ./proc.md