Runtime (crt0)

By default, when using my link scripts, the standard runtime is initialised by crt0 as follows:

Address Size Link Script Variable Comment
0x03fffe ~256k _STACK_SIZE Stack (SSP). Grows towards 0. At round about 0x0000400 it would start stomping all over the memory area used by the monitor
0x040000 n/a _RUN_ADDRESS Start of user program (.text), followed by initialised data (.data) and then unititialised data (.bss). The .bss area is initialised to all zeroes before main() is called.

Heap

crt0 allocates all free memory from the end of the .bss area to the end of ram to the heap (malloc/free).

Global Variables

crt0 sets the following global variables:

uint8_t cpu_speed_mhz. This uses the counter in the PI/T to figure out roughly how fast the CPU is being clocked at. Within a MHz or so.

uint8_t cpu_type. Figures out what CPU is installed: 0 - 68000/68008, 1 - 68010, 2 - 68020, 3 - 68030

uint8_t running_in_rom. When non-zero, indicates that the code is running in ROM. 0 indicates it's running in RAM.

To access any of these variables, simply include machine.h.

0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9