mirror of
https://github.com/KarolS/millfork.git
synced 2024-07-07 21:28:59 +00:00
Documentation tweaks
This commit is contained in:
parent
52c5a10e6e
commit
e0cd000b99
@ -40,7 +40,7 @@ Therefore, it's recommended to stick to mappers that have a fixed bank at the en
|
|||||||
|
|
||||||
Mappers that should be fine: NROM (0), CNROM (1), UxROM(2), MMC2 (9), MMC3 (4), MMC4 (10), MMC6 (4).
|
Mappers that should be fine: NROM (0), CNROM (1), UxROM(2), MMC2 (9), MMC3 (4), MMC4 (10), MMC6 (4).
|
||||||
|
|
||||||
Mappers that can have arbitrary bank at the end and are therefore not recommended: MMC1 (1), MMC5 (5).
|
Mappers that can have arbitrary bank at the end are therefore not recommended: MMC1 (1), MMC5 (5).
|
||||||
|
|
||||||
You should define at least three segments:
|
You should define at least three segments:
|
||||||
|
|
||||||
|
@ -23,13 +23,13 @@ It is imported automatically, you don't need to add any import statements.
|
|||||||
If you are targeting both RAM-based and ROM-based platforms, wrap the call in `#if INIT_RW_MEMORY`...`#endif`,
|
If you are targeting both RAM-based and ROM-based platforms, wrap the call in `#if INIT_RW_MEMORY`...`#endif`,
|
||||||
as the `init_rw_memory` function is not available for RAM-based targets. For example:
|
as the `init_rw_memory` function is not available for RAM-based targets. For example:
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
#if INIT_RW_MEMORY
|
#if INIT_RW_MEMORY
|
||||||
// do a bankswitch to the SEGMENT segment if applicable
|
// do a bankswitch to the SEGMENT segment if applicable
|
||||||
init_rw_memory()
|
init_rw_memory()
|
||||||
#endif
|
#endif
|
||||||
// ... rest of the code
|
// ... rest of the code
|
||||||
}
|
}
|
||||||
|
|
||||||
If the default implementation of `init_rw_memory` is unsatisfactory for your needs,
|
If the default implementation of `init_rw_memory` is unsatisfactory for your needs,
|
||||||
consider implementing your own and putting it in the `init_rw_memory` module
|
consider implementing your own and putting it in the `init_rw_memory` module
|
||||||
|
@ -89,17 +89,25 @@ However, if the command-line option `-flenient-encoding` is used,
|
|||||||
then literals using `default` and `scr` encodings replace unsupported characters with supported ones.
|
then literals using `default` and `scr` encodings replace unsupported characters with supported ones.
|
||||||
If the replacement is one character long, only a warning is issued, otherwise an error is raised.
|
If the replacement is one character long, only a warning is issued, otherwise an error is raised.
|
||||||
|
|
||||||
|
## Struct constructors
|
||||||
|
|
||||||
|
You can create a constant of a given struct type by listing constant values of fields as arguments:
|
||||||
|
|
||||||
|
struct point { word x, word y }
|
||||||
|
point(5,6)
|
||||||
|
|
||||||
|
|
||||||
## Array initialisers
|
## Array initialisers
|
||||||
|
|
||||||
An array is initialized with either:
|
An array is initialized with either:
|
||||||
|
|
||||||
* a string literal
|
* (only byte arrays) a string literal
|
||||||
|
|
||||||
* a `file` expression
|
* (only byte arrays) a `file` expression
|
||||||
|
|
||||||
* a `for`-style expression
|
* a `for`-style expression
|
||||||
|
|
||||||
* a format, followed by an array initializer:
|
* (only byte arrays) a format, followed by an array initializer:
|
||||||
|
|
||||||
* `@word` (=`@word_le`): for every term of the array initializer, emit two bytes, first being the low byte of the value, second being the high byte:
|
* `@word` (=`@word_le`): for every term of the array initializer, emit two bytes, first being the low byte of the value, second being the high byte:
|
||||||
`@word [$1122]` is equivalent to `[$22, $11]`
|
`@word [$1122]` is equivalent to `[$22, $11]`
|
||||||
@ -114,18 +122,18 @@ An array is initialized with either:
|
|||||||
* `@struct`: every term of the initializer is interpreted as a struct constructor (see below)
|
* `@struct`: every term of the initializer is interpreted as a struct constructor (see below)
|
||||||
and treated as a list of bytes with no padding
|
and treated as a list of bytes with no padding
|
||||||
`@struct [s(1, 2)]` is equivalent to `[1, 2]` when `struct s {byte x, byte y}` is defined
|
`@struct [s(1, 2)]` is equivalent to `[1, 2]` when `struct s {byte x, byte y}` is defined
|
||||||
`@struct [s(1, 2), s(3, 4)]` is equivalent to `[1, 0, 2, 0, 3, 0, 4, 0]` when `struct s {word x, word y}` is defined
|
`@struct [s(1, 2), s(3, 4)]` is equivalent to `[1, 0, 2, 0, 3, 0, 4, 0]` on little-endian machines when `struct s {word x, word y}` is defined
|
||||||
|
|
||||||
|
|
||||||
* a list of byte literals and/or other array initializers, surrounded by brackets:
|
* a list of literals and/or other array initializers, surrounded by brackets:
|
||||||
|
|
||||||
|
array a = [1, 2]
|
||||||
array a = [1, 2]
|
array b = "----" scr
|
||||||
array b = "----" scr
|
array c = ["hello world!" ascii, 13]
|
||||||
array c = ["hello world!" ascii, 13]
|
array d = file("d.bin")
|
||||||
array d = file("d.bin")
|
array e = file("d.bin", 128, 256)
|
||||||
array e = file("d.bin", 128, 256)
|
array f = for x,0,until,8 [x * 3 + 5] // equivalent to [5, 8, 11, 14, 17, 20, 23, 26]
|
||||||
array f = for x,0,until,8 [x * 3 + 5] // equivalent to [5, 8, 11, 14, 17, 20, 23, 26]
|
array(point) g = [point(2,3), point(5,6)]
|
||||||
|
array(point) i = for x,0,until,100 [point(x, x+1)]
|
||||||
|
|
||||||
Trailing commas (`[1, 2,]`) are not allowed.
|
Trailing commas (`[1, 2,]`) are not allowed.
|
||||||
|
|
||||||
|
@ -69,7 +69,7 @@ control codes for changing the text background color
|
|||||||
|
|
||||||
##### Escape sequence availability
|
##### Escape sequence availability
|
||||||
|
|
||||||
Encoding | new line | braces | backspace | cursor movement | text colour and reverse | background colour
|
Encoding | new line | braces | backspace | cursor movement | text colour, reverse | background colour
|
||||||
--|--|--|--|--|--|--
|
--|--|--|--|--|--|--
|
||||||
`pet` | yes | no | no | yes | yes | no
|
`pet` | yes | no | no | yes | yes | no
|
||||||
`petscr` | no | no | no | no | no | no
|
`petscr` | no | no | no | no | no | no
|
||||||
|
@ -412,6 +412,7 @@ class ArraySuite extends FunSuite with Matchers {
|
|||||||
|
|
|
|
||||||
| array(word) a = [1,2,3]
|
| array(word) a = [1,2,3]
|
||||||
| array(coord) c = [coord(1,2),coord(3,4)]
|
| array(coord) c = [coord(1,2),coord(3,4)]
|
||||||
|
| array(coord) h @$8000 = for i,0,until,100 [coord(i,i)]
|
||||||
|
|
|
|
||||||
| word output @$c000
|
| word output @$c000
|
||||||
| coord output2 @$c002
|
| coord output2 @$c002
|
||||||
|
Loading…
Reference in New Issue
Block a user