* Changed the way that Atmos programs are started.

- Put a BASIC-language stub at the beginning.
  - Removed the Autostart flag.

  Those changes make it easy to give command-line arguments to a program.

* Made the Atmos configure file accept a special symbol definition on ld65's command line.  We can use "__RAMEND__" to increase the amount of RAM that's available to programs.
This commit is contained in:
Greg King
2014-11-09 06:32:11 -05:00
parent d75f9c2051
commit 09e50d433d
5 changed files with 116 additions and 47 deletions

View File

@@ -1,22 +1,30 @@
SYMBOLS {
__STACKSIZE__: type = weak, value = $0800; # 2k stack
__TAPEHDR__: type = import;
__BASHDR__: type = import;
__PROGFLAG__: type = weak, value = $00; # $00=BASIC, $80=machine code
__AUTORUN__: type = weak, value = $00; # $C7=run, $00=only load
__STACKSIZE__: type = weak, value = $0800; # 2K stack
__RAMEND__: type = weak, value = $9800; # graphics RAM not grabbed
# __RAMEND__: type = weak, value = $B400; # graphics RAM grabbed
}
MEMORY {
ZP: file = "", define = yes, start = $00E2, size = $001A;
TAPEHDR: file = %O, type = ro, start = $0000, size = $0011;
RAM: file = %O, define = yes, start = $0500, size = $9300 - __STACKSIZE__;
TAPEHDR: file = %O, type = ro, start = $0000, size = $001F;
BASHEAD: file = %O, define = yes, start = $0501, size = $000D;
RAM: file = %O, define = yes, start = __BASHEAD_LAST__, size = __RAMEND__ - __RAM_START__ - __STACKSIZE__;
}
SEGMENTS {
ZEROPAGE: load = ZP, type = zp;
TAPEHDR: load = TAPEHDR, type = ro;
BASHDR: load = BASHEAD, type = ro, define = yes, optional = yes;
STARTUP: load = RAM, type = ro;
LOWCODE: load = RAM, type = ro, optional = yes;
INIT: load = RAM, type = ro, define = yes, optional = yes;
CODE: load = RAM, type = ro;
RODATA: load = RAM, type = ro;
INIT: load = RAM, type = ro, define = yes, optional = yes;
DATA: load = RAM, type = rw;
ZPSAVE: load = RAM, type = bss, define = yes;
ZPSAVE: load = RAM, type = rw, define = yes;
BSS: load = RAM, type = bss, define = yes;
ZEROPAGE: load = ZP, type = zp;
}
FEATURES {
CONDES: type = constructor,