1
0
mirror of https://github.com/KarolS/millfork.git synced 2024-05-28 13:41:31 +00:00

Update documentation and CHANGELOG

This commit is contained in:
Karol Stasiak 2019-08-16 18:00:04 +02:00
parent e1c32c2e31
commit b3ca130299
5 changed files with 41 additions and 0 deletions

View File

@ -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!**

View File

@ -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:

View 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.

View File

@ -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) { }
}

View File

@ -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)