mirror of
https://github.com/KarolS/millfork.git
synced 2025-01-10 05:29:49 +00:00
Update documentation and CHANGELOG
This commit is contained in:
parent
e1c32c2e31
commit
b3ca130299
@ -2,10 +2,18 @@
|
||||
|
||||
## Current version
|
||||
|
||||
* Added preliminary support for EasyFlash.
|
||||
|
||||
* Allowed defining custom output padding byte value.
|
||||
|
||||
* Allowed passing non-decimal numbers to the `-D` option.
|
||||
|
||||
* Added `nullchar` constant as the null terminator for strings and `NULLCHAR` feature to define its value.
|
||||
|
||||
* Added `vectrex` text encoding.
|
||||
|
||||
* Fixed several serious bugs related to cartridge-based targets.
|
||||
|
||||
## 0.3.6
|
||||
|
||||
* **Breaking change!**
|
||||
|
@ -150,6 +150,8 @@ Default: `after_code`.
|
||||
* `segment_NAME_bank` – the bank number the segment belongs to. Default: `0`.
|
||||
For better debugging on NES, RAM segments should use bank number `$ff`.
|
||||
|
||||
* `segment_NAME_fill` – the byte value used to fill gaps and other unused space in the bank. Default: `0`.
|
||||
|
||||
#### `[output]` section
|
||||
|
||||
* `style` – how multi-segment programs should be output:
|
||||
|
27
docs/api/easyflash-programming-guide.md
Normal file
27
docs/api/easyflash-programming-guide.md
Normal file
@ -0,0 +1,27 @@
|
||||
[< back to index](../doc_index.md)
|
||||
|
||||
### A note about EasyFlash
|
||||
|
||||
The `c64_ef_small` target defines a 128 kB Easyflash cartridge image, with 72 kB effective ROM space.
|
||||
The program is run directly from ROM;
|
||||
typical ROM programming guidelines apply, see [the ROM vs RAM guide](./rom-vs-ram.md).
|
||||
|
||||
The LOROM segment ($8000-$9FFF) is fixed and is the main code segment.
|
||||
|
||||
The HIROM segment ($A000-$BFFF) is banked (banks numbered from `hirom0` to `hirom7`).
|
||||
|
||||
Initially, the `hirom0` bank is banked in.
|
||||
It contains the initialization code, the initial values for RAM, and the EAPI (if used).
|
||||
|
||||
You can switch the bank using the `switch_hirom(0..7)` function.
|
||||
|
||||
In order to use EAPI, you need to include the binary distribution of EAPI at $B800 in `hirom0`, e.g.:
|
||||
|
||||
segment (hirom0) __eapi @ $B800 = file("eapi-am29f040-10")
|
||||
|
||||
and call `eapi_init()`. It sets the `errno` value.
|
||||
The EAPI requires 768 bytes of RAM.
|
||||
You can choose the location of EAPI by defining the `EAPI_ADDR` feature,
|
||||
it should point to a page-aligned address in RAM, $200 or more.
|
||||
|
||||
If you want to reinitialize the EAPI without copying it from ROM again, you can call `eapi_init_again()` instead.
|
@ -18,6 +18,7 @@ It should not be defined as `interrupt`, the handler is, so your routine shouldn
|
||||
The minimal Famicom program thus looks like this:
|
||||
|
||||
void main() {
|
||||
init_rw_memory()
|
||||
// initialize things
|
||||
while(true) { }
|
||||
}
|
||||
|
@ -25,6 +25,9 @@ see [the Commodore programming guide](./commodore-programming-guide.md) for more
|
||||
|
||||
* `c64_crt16k` – Commodore 64, 16K ROM cartridge
|
||||
|
||||
* `c64_ef_small` – Commodore 64, EasyFlash cartridge, 72K of program code.
|
||||
See [the EasyFlash programming guide](./easyflash-programming-guide.md) for more info.
|
||||
|
||||
* `c64_scpu` – Commodore 64 with SuperCPU in emulation mode
|
||||
|
||||
* `c64_scpu16` – Commodore 64 with SuperCPU in native, 16-bit mode (very buggy)
|
||||
|
Loading…
x
Reference in New Issue
Block a user