1
0
mirror of https://github.com/cc65/cc65.git synced 2024-11-16 18:08:04 +00:00
Commit Graph

35 Commits

Author SHA1 Message Date
Polluks
9563541870 crt0 clean-up 2020-11-29 18:08:33 +01:00
Oliver Schmidt
d8c31cf1d3 Renamed RAM to MAIN for all disk based targets.
The name RAM doesn't make much sense in general for a memeory area because i.e. the zero page is for sure RAM but is not part of the memory area named RAM.

For disk based targets it makes sense to put the disk file more into focus and here MAIN means the main part of the file - in contrast to some header.

Only for ROM based targets the name RAM is kept as it makes sense to focus on the difference between RAM and ROM.
2016-03-07 01:28:55 +01:00
Oliver Schmidt
419eb700b5 Renamed INITBSS to INIT and INIT to ONCE.
The way we want to use the INITBSS segment - and especially the fact that it won't have the type bss on all ROM based targets - means that the name INITBSS is misleading. After all INIT is the best name from my perspective as it serves several purposes and therefore needs a rather generic name.

Unfortunately this means that the current INIT segment needs to be renamed too. Looking for a short (ideally 4 letter) name I came up with ONCE as it contains all code (and data) accessed only once during initialization.
2016-03-06 21:27:19 +01:00
Oliver Schmidt
0ee9b2e446 Changed run location of INIT segment.
So far the INIT segment was run from the later heap+stack. Now the INIT segment is run from the later BSS. The background is that so far the INIT segment was pretty small (from $80 to $180 bytes). But upcoming changes will increase the INIT segment in certain scenarios up to ~ $1000 bytes. So programs with very limited heap+stack might just not been able to move the INIT segment to its run location. But moving the INIT segment to the later BSS allows it to occupy the later BSS+heap+stack.

In order to allow that the constructors are _NOT_ allowed anymore to access the BSS. Rather they must use the DATA segment or the new INITBSS segment. The latter isn't cleared at any point so the constructors may use it to expose values to the main program. However they must make sure to always write the values as they are not pre-initialized.
2015-10-14 22:52:09 +02:00
Greg King
c7969a78b0 Refined the comments in the target start-up files.
Fixed typo errors.  Made the comments consistent across all those files.
2014-08-24 10:10:20 -04:00
Oliver Schmidt
85885001b1 Removed (pretty inconsistently used) tab chars from source code base. 2013-05-09 13:57:12 +02:00
ol.sc
59e96ef740 Turned the 'ST' status byte into a symbol resolved by the linker in order to allow to use it from code living in the 'cbm' directory.
Moved getdevice.s from 'c64'/'c128' to 'cbm' making use of the new 'ST' setup.

git-svn-id: svn://svn.cc65.org/cc65/trunk@5834 b7a2c559-68d2-44c3-8de9-860c34a00d81
2012-09-30 18:20:15 +00:00
uz
5b659547b8 Removed the jump to RESTOR on exit for all the CBM platforms.
git-svn-id: svn://svn.cc65.org/cc65/trunk@5355 b7a2c559-68d2-44c3-8de9-860c34a00d81
2012-01-01 19:58:31 +00:00
uz
8aff2a9159 Fixed a problem with the last change in crt0.s: The symbols for the RAM memory
area had been used but not defined in the linker config. Changed the startup
module and the linker config to use the common loadaddr and exehdr modules.


git-svn-id: svn://svn.cc65.org/cc65/trunk@4870 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-11-16 17:33:25 +00:00
ol.sc
eef8ecc74d User linker generated symbols for stack placement (like most other targets) instead of a hardcoded constant in order to allow control of stack placement via linker configuration.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4821 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-10-02 10:32:26 +00:00
uz
7e2a24176f Replaced $30 by literal '0' for better readability.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4513 b7a2c559-68d2-44c3-8de9-860c34a00d81
2009-12-10 22:12:24 +00:00
uz
13698871cb Removed the call to CLRCH in the startup code.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4512 b7a2c559-68d2-44c3-8de9-860c34a00d81
2009-12-10 21:22:17 +00:00
uz
60bc009991 * Moved the BASIC stub that calls the compiled program into it's own segment
named EXEHDR.
* Renamed BASICHDR to EXEHDR for the PET-II machines.
* Moved the call to CHRCH in front of the code that saves the zero page, since
  open files are sometimes remembered in the zero page, so we need to close
  them before we grab a copy.


git-svn-id: svn://svn.cc65.org/cc65/trunk@4507 b7a2c559-68d2-44c3-8de9-860c34a00d81
2009-12-09 12:42:24 +00:00
uz
c7a33334ba Don't hardcode the address of the SYS call for the startup code of the
Commodore machines.


git-svn-id: svn://svn.cc65.org/cc65/trunk@4474 b7a2c559-68d2-44c3-8de9-860c34a00d81
2009-11-23 12:01:24 +00:00
uz
8216bf1d6a Force an import of the special symbol __STARTUP__ in the C compiler when
main() is encountered. Define this symbol in the startup code. This will
automatically force linking of the startup code which can then reside inside
the standard library as any other object file.


git-svn-id: svn://svn.cc65.org/cc65/trunk@3988 b7a2c559-68d2-44c3-8de9-860c34a00d81
2009-07-31 12:05:42 +00:00
uz
0aea6d28dc Removed an unsed import.
git-svn-id: svn://svn.cc65.org/cc65/trunk@3952 b7a2c559-68d2-44c3-8de9-860c34a00d81
2009-02-22 18:14:54 +00:00
uz
d28ba06f79 Fixed problems with the startup code (Greg King): Interrupts must be hooked
before calling initlib because initlib calls contructors and may install
drivers, which enable hardware interrupts. Similar for donelib.

See also R3897 where this change was done for other platforms.


git-svn-id: svn://svn.cc65.org/cc65/trunk@3951 b7a2c559-68d2-44c3-8de9-860c34a00d81
2009-02-22 18:10:01 +00:00
uz
e5cbba264f Move the irqcount variable from BSS into DATA, since it is used by the
interrupt handler, which is installed *before* zerobss is called.


git-svn-id: svn://svn.cc65.org/cc65/trunk@3950 b7a2c559-68d2-44c3-8de9-860c34a00d81
2009-02-22 18:04:25 +00:00
cuz
f257b2ee81 Moved the data that keeps a copy of the used zero page locations in its own
segment to reduce the executable size.


git-svn-id: svn://svn.cc65.org/cc65/trunk@3849 b7a2c559-68d2-44c3-8de9-860c34a00d81
2008-07-03 19:39:14 +00:00
cuz
cfef8e1e0d Renamed __IRQFUNC_xxx -> __INTERRUPTOR_xxx
git-svn-id: svn://svn.cc65.org/cc65/trunk@3189 b7a2c559-68d2-44c3-8de9-860c34a00d81
2004-09-20 10:24:59 +00:00
cuz
0d7cf8ebce Use new callirq function
git-svn-id: svn://svn.cc65.org/cc65/trunk@2970 b7a2c559-68d2-44c3-8de9-860c34a00d81
2004-04-04 14:28:57 +00:00
cuz
7a5d4f3138 Fixed issues with the last change: The return code must be pulled from stack
before the stack pointer is reset.


git-svn-id: svn://svn.cc65.org/cc65/trunk@2906 b7a2c559-68d2-44c3-8de9-860c34a00d81
2004-03-08 20:38:58 +00:00
cuz
220e5a3898 Place the return code into ST
git-svn-id: svn://svn.cc65.org/cc65/trunk@2884 b7a2c559-68d2-44c3-8de9-860c34a00d81
2004-03-02 17:08:07 +00:00
cuz
be5adac693 Use the assembler version as BASIC line number, so the version of the
assembler (and probably compiler) can be determined from a compiled
executable. Nice idea from Stefan Haubenthal.


git-svn-id: svn://svn.cc65.org/cc65/trunk@2880 b7a2c559-68d2-44c3-8de9-860c34a00d81
2004-02-02 13:34:12 +00:00
cuz
ad6a85b255 Added a serial driver for the builtin 6551 of the Plus/4 (untested, but taken
mostly from the C64 version which is tested and works).
Improved interrupt handling (was needed for the driver).


git-svn-id: svn://svn.cc65.org/cc65/trunk@2754 b7a2c559-68d2-44c3-8de9-860c34a00d81
2003-12-14 17:40:57 +00:00
cuz
467d8ad9c5 Added routines to handle command line params
git-svn-id: svn://svn.cc65.org/cc65/trunk@2012 b7a2c559-68d2-44c3-8de9-860c34a00d81
2003-03-10 21:21:46 +00:00
cuz
96e87c49ee Fixed the break stuff
git-svn-id: svn://svn.cc65.org/cc65/trunk@1593 b7a2c559-68d2-44c3-8de9-860c34a00d81
2002-11-22 23:41:20 +00:00
cuz
b7e7864fc5 Added wrappers for the kernal functions
git-svn-id: svn://svn.cc65.org/cc65/trunk@1587 b7a2c559-68d2-44c3-8de9-860c34a00d81
2002-11-22 22:16:20 +00:00
cuz
6d498d8187 Use external symbols for the CBM kernal jump table functions. This allows
to emulate these functions on platforms where one or more of these functions
are not available (PET, CBM-II).


git-svn-id: svn://svn.cc65.org/cc65/trunk@1544 b7a2c559-68d2-44c3-8de9-860c34a00d81
2002-11-19 23:02:47 +00:00
cuz
33c1e82bda Move zp space out of crt0.s
git-svn-id: svn://svn.cc65.org/cc65/trunk@1291 b7a2c559-68d2-44c3-8de9-860c34a00d81
2002-05-26 09:09:10 +00:00
cuz
e3b2fcc78d Move the conio initialization routines where they belong (cgetc), make them
module constructors/destructors and remove the conio init functions that
were called from the startup code.


git-svn-id: svn://svn.cc65.org/cc65/trunk@479 b7a2c559-68d2-44c3-8de9-860c34a00d81
2000-11-23 19:21:05 +00:00
cuz
f3b93741ab Use the condes feature
git-svn-id: svn://svn.cc65.org/cc65/trunk@470 b7a2c559-68d2-44c3-8de9-860c34a00d81
2000-11-22 22:19:09 +00:00
cuz
00e858c9de Squeeze 2 bytes out of the startup code
git-svn-id: svn://svn.cc65.org/cc65/trunk@413 b7a2c559-68d2-44c3-8de9-860c34a00d81
2000-10-30 21:02:49 +00:00
cuz
e0a619ff90 Place the zero page variables into the ZEROPAGE segment
git-svn-id: svn://svn.cc65.org/cc65/trunk@322 b7a2c559-68d2-44c3-8de9-860c34a00d81
2000-09-07 21:49:13 +00:00
uz
53dd513176 This commit was generated by cvs2svn to compensate for changes in r2,
which included commits to RCS files with non-trunk default branches.


git-svn-id: svn://svn.cc65.org/cc65/trunk@3 b7a2c559-68d2-44c3-8de9-860c34a00d81
2000-05-28 13:40:48 +00:00