mirror of https://github.com/KarolS/millfork.git
CBM BASIC loader should use the actual address of main (fixes #111)
This commit is contained in:
parent
38ad919ed9
commit
a260d0a806
|
@ -2,6 +2,11 @@
|
||||||
|
|
||||||
### A note about Commodore 64
|
### A note about Commodore 64
|
||||||
|
|
||||||
|
#### Unusual main function location
|
||||||
|
|
||||||
|
If you're creating a prg file and your `main` function may be located at address $2710 hex (10000 decimal) or higher,
|
||||||
|
you might need to define the `DISPLACED_MAIN=1` preprocessor feature.
|
||||||
|
|
||||||
#### Multifile programs
|
#### Multifile programs
|
||||||
|
|
||||||
A multifile program is a program stored on a disk that consists of the main program file that is executed first
|
A multifile program is a program stored on a disk that consists of the main program file that is executed first
|
||||||
|
|
|
@ -103,6 +103,8 @@ Some libraries may require that some of these be defined.
|
||||||
|
|
||||||
* `KEYBOARD` – 1 if the target has a keyboard, 0 otherwise
|
* `KEYBOARD` – 1 if the target has a keyboard, 0 otherwise
|
||||||
|
|
||||||
|
* `DISPLACED_MAIN` – set this to 1 if the `main` function is in a very unusual location for the target
|
||||||
|
|
||||||
* `USE_MOUSE_MBM` – set this to 1 if you want to enable middle button support for the mouse.
|
* `USE_MOUSE_MBM` – set this to 1 if you want to enable middle button support for the mouse.
|
||||||
|
|
||||||
* `JOYSTICKS` – the maximum number of joysticks using standard hardware configurations, may be 0
|
* `JOYSTICKS` – the maximum number of joysticks using standard hardware configurations, may be 0
|
||||||
|
|
|
@ -0,0 +1,31 @@
|
||||||
|
#template $ADDR$
|
||||||
|
|
||||||
|
#if not(CBM)
|
||||||
|
#warn cbm/basic_loader module should be only used on Commodore targets
|
||||||
|
#endif
|
||||||
|
|
||||||
|
const array _basic_loader @ $ADDR$ = [
|
||||||
|
#if DISPLACED_MAIN
|
||||||
|
@word_le [
|
||||||
|
$ADDR$ + 0xB
|
||||||
|
],
|
||||||
|
#else
|
||||||
|
@word_le [
|
||||||
|
$ADDR$ + if(main.addr >= 10000, 1/0, 0xA) // use -D DISPLACED_MAIN=1 if you get an error here
|
||||||
|
],
|
||||||
|
#endif
|
||||||
|
10,
|
||||||
|
0,
|
||||||
|
$9e,
|
||||||
|
#if DISPLACED_MAIN
|
||||||
|
$30 + (main.addr/10000)%%10,
|
||||||
|
#endif
|
||||||
|
$30 + (main.addr/1000)%%10,
|
||||||
|
$30 + (main.addr/100)%%10,
|
||||||
|
$30 + (main.addr/10)%%10,
|
||||||
|
$30 + (main.addr/1)%%10,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
|
|
@ -1,19 +1 @@
|
||||||
#if not(CBM)
|
import cbm/basic_loader<$401>
|
||||||
#warn loader_0401 module should be only used on Commodore targets
|
|
||||||
#endif
|
|
||||||
|
|
||||||
const array _basic_loader @$401 = [
|
|
||||||
$0b,
|
|
||||||
4,
|
|
||||||
10,
|
|
||||||
0,
|
|
||||||
$9e,
|
|
||||||
$31,
|
|
||||||
$30,
|
|
||||||
$33,
|
|
||||||
$37,
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
0
|
|
||||||
]
|
|
||||||
|
|
||||||
|
|
|
@ -1,19 +1 @@
|
||||||
#if not(CBM)
|
import cbm/basic_loader<$801>
|
||||||
#warn loader_0801 module should be only used on Commodore targets
|
|
||||||
#endif
|
|
||||||
|
|
||||||
const array _basic_loader @$801 = [
|
|
||||||
$0b,
|
|
||||||
$08,
|
|
||||||
10,
|
|
||||||
0,
|
|
||||||
$9e,
|
|
||||||
$32,
|
|
||||||
$30,
|
|
||||||
$36,
|
|
||||||
$31,
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
0
|
|
||||||
]
|
|
||||||
|
|
||||||
|
|
|
@ -22,4 +22,5 @@ asm void __init_16bit() @$80D {
|
||||||
clc
|
clc
|
||||||
xce
|
xce
|
||||||
sep #$30
|
sep #$30
|
||||||
}
|
jmp main
|
||||||
|
}
|
||||||
|
|
|
@ -1,19 +1 @@
|
||||||
#if not(CBM)
|
import cbm/basic_loader<$1001>
|
||||||
#warn loader_1001 module should be only used on Commodore targets
|
|
||||||
#endif
|
|
||||||
|
|
||||||
const array _basic_loader @$1001 = [
|
|
||||||
$0b,
|
|
||||||
$10,
|
|
||||||
10,
|
|
||||||
0,
|
|
||||||
$9e,
|
|
||||||
$34,
|
|
||||||
$31,
|
|
||||||
$30,
|
|
||||||
$39,
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
0
|
|
||||||
]
|
|
||||||
|
|
||||||
|
|
|
@ -1,19 +1 @@
|
||||||
#if not(CBM)
|
import cbm/basic_loader<$1201>
|
||||||
#warn loader_1201 module should be only used on Commodore targets
|
|
||||||
#endif
|
|
||||||
|
|
||||||
const array _basic_loader @$1201 = [
|
|
||||||
$0b,
|
|
||||||
$12,
|
|
||||||
10,
|
|
||||||
0,
|
|
||||||
$9e,
|
|
||||||
$34,
|
|
||||||
$36,
|
|
||||||
$32,
|
|
||||||
$31,
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
0
|
|
||||||
]
|
|
||||||
|
|
||||||
|
|
|
@ -1,19 +1 @@
|
||||||
#if not(CBM)
|
import cbm/basic_loader<$1c01>
|
||||||
#warn loader_1c01 module should be only used on Commodore targets
|
|
||||||
#endif
|
|
||||||
|
|
||||||
const array _basic_loader @$1C01 = [
|
|
||||||
$0b,
|
|
||||||
$1C,
|
|
||||||
10,
|
|
||||||
0,
|
|
||||||
$9e,
|
|
||||||
$37,
|
|
||||||
$31,
|
|
||||||
$38,
|
|
||||||
$31,
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
0
|
|
||||||
]
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue