forked from TCShenanigans/symphony_stdlib
Added support for global variables. This requires including `start.asm` as the first code. This includes a `jmp` to 0x100 for user code, and a magic number that modules can check to verify th the user has correctly reserved the space. The magic number is 0xb301534c: * This has the high bit set so is not a valid instruction * On builds that ignore the high bit this decodes to `nor zr, zr, 0x534c` a no-op. * The immediate is "SL" for standardl ibrary. Due to a bug start pads with U... 0, instead of @addr. `start.asm` also initialises `sp` so it start just below the 64KiB LUT memory alocation. Added some error codes for the upcoming graphics module.
27 lines
754 B
NASM
Executable File
27 lines
754 B
NASM
Executable File
; Error numbers should be 16 bit ODD numbers, so they can be loaded as immediates
|
|
; and can be checked with:
|
|
;
|
|
; qcall falible_function
|
|
; jne falible_ok ; Jump no error
|
|
; ; handle error
|
|
; falible_ok:
|
|
; ; Happy path
|
|
; ; ...
|
|
; OR
|
|
; qcall falible_function
|
|
; je handle_error ; Jump if error
|
|
; ; Happy path
|
|
; ; ...
|
|
; handle_error:
|
|
; ; handle error
|
|
|
|
pub const OK = 0x0000
|
|
pub const SCREEN_INVALID_MODE = 0x0001
|
|
pub const SCREEN_INVALID_WIDTH = 0x0003
|
|
pub const SCREEN_FB_TOO_SMALL = 0x0005
|
|
pub const SCREEN_OUTSIDE_FB = 0x0007
|
|
|
|
pub const MAGIC_BAD = 0x8001
|
|
|
|
; Extended error codes, these would require loading a 32 bit value.
|
|
pub const EXT_OK = 0x00000000 |