1
0
mirror of https://github.com/cc65/cc65.git synced 2024-11-13 13:11:06 +00:00
Commit Graph

80 Commits

Author SHA1 Message Date
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
031bd2ebf0 Fixed the random-seed generators for the Commodore targets.
They use a byte from the time counter; but, it is stored in big-endian order.
2015-09-11 10:03:07 -04:00
Greg King
74c2415795 Changed literal zeroes of the style "#>0" into the style "#>$0000". 2014-09-10 19:15:07 -04: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
Greg King
0390c34e88 Changed multi-line C comments into another style.
The left side doesn't look unbalanced.
2014-06-30 16:51:07 -04:00
Oliver Schmidt
2c975d3642 Create static drivers directly from source files.
Up to now static drivers were created via co65 from dynamic drivers. However there was an issue with that approach:

The dynamic drivers are "o65 simple files" which obligates that they start with the 'code' segment. However dynamic drivers need to start with the module header - which is written to. For dynamic drivers this isn't more than a conceptual issue because they are always contain a 'data' segment and may therefore only be loaded into writable memory.

However when dynamic drivers are converted to static drivers using co65 then that issue becomes a real problem as then the 'code' segment may end up in non-writable memory - and thus writing to the module header fails.

Instead of changing the way dynamic drivers work I opted to rather make static driver creation totally independent from dynamic drivers. This allows to place the module header in the 'data' segment (see 'module.mac').
2014-06-04 23:50:18 +02:00
Oliver Schmidt
d6c3bd29ac Renamed JUMPTABLE and cleaned up module.cfg.
This change was suppsed to fix the issue that the former JUMPTABLE is merked as 'ro' while it is actually written to in several scenarios. When drivers are converted using co65 and then compiled into ROMs the JUMPTABLE isn't copied to RAM and therefore the write operations in question fail.

However unfortunately I didn't succeed in changing that :-( Just setting the former JUMPTABLE to 'rw' broke the drivers. So I placed the DATA segment directly after the former JUMPTABLE segment. This made the drivers converted with co65 work again - obviously after changing libsrc/Makefile:235 from '--code-label' to '--data-label'. But the actual dynamic drivers still didn't work as the former JUMPTABLE wasn't placed as the beginning of the loaded file anymore. That effect could be changed by exchanging src/ld65/o65.c:1391 with src/ld65/o65.c:1394 but doing so broke the drivers again :-((
2014-05-01 21:44:39 +02:00
Greg King
42595fbf13 Added command-line argument parsing to the CBM510 and CBM610 targets. 2014-04-03 08:23:28 -04:00
Oliver Schmidt
ae409e4978 Added library reference ser_libref to SER interface. 2013-06-01 11:03:14 +02:00
Oliver Schmidt
619b215260 Added library reference em_libref to EMD interface.
Occasionally dynamically drivers suffer from not being to refer to
content in the C library. Therefore I added a mechanism to allow
a C library for a certian target to define a symbol that will be
handed over to dynamic drivers for that target. Then the drivers
can use their refernce to that symbol to access content in the C
library.
2013-06-01 00:11:31 +02:00
Oliver Schmidt
85885001b1 Removed (pretty inconsistently used) tab chars from source code base. 2013-05-09 13:57:12 +02:00
Oliver Schmidt
008b4c4e1d Replaced whole bunch for Makefiles with a single generic Makefile.
- No complex shell logic.
- "Source file shadowing" for all targets via vpath.
- Dependency handling.
- True incremental build.
- Don't write into source directories.
- Easy cleanup by just removing 'wrk'.
2013-05-04 22:10:48 +02:00
ol.sc
7c9171ee87 Moved IRQ hooking / unhooking from startup code to constructor / destructor to avoid linking in the hooking / unhooking code (and callirq) for the majority of cc65 prorams not linking in interruptors.
git-svn-id: svn://svn.cc65.org/cc65/trunk@5985 b7a2c559-68d2-44c3-8de9-860c34a00d81
2013-02-12 22:39:38 +00:00
ol.sc
3ba33a0205 Minor adjustment.
git-svn-id: svn://svn.cc65.org/cc65/trunk@5924 b7a2c559-68d2-44c3-8de9-860c34a00d81
2012-11-07 22:34:08 +00:00
ol.sc
1bba8355da Fixed typo.
git-svn-id: svn://svn.cc65.org/cc65/trunk@5889 b7a2c559-68d2-44c3-8de9-860c34a00d81
2012-10-31 23:39:58 +00:00
ol.sc
a3c940e315 Convert dynamically loadable drivers into statically linkable drivers and add them to the target libraries.
git-svn-id: svn://svn.cc65.org/cc65/trunk@5887 b7a2c559-68d2-44c3-8de9-860c34a00d81
2012-10-29 20:26:26 +00:00
uz
285aaf8933 Patch by Stefan Haubenthal: Remove __fastcall__ in comments and/or the
function description for functions that don't take any parameters.


git-svn-id: svn://svn.cc65.org/cc65/trunk@5573 b7a2c559-68d2-44c3-8de9-860c34a00d81
2012-03-04 13:08:54 +00:00
uz
fa1b5047dd Fixed order of options in call to ld65, which became important after the
latest changes.


git-svn-id: svn://svn.cc65.org/cc65/trunk@4843 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-11-09 21:33:14 +00:00
uz
e4d63daff1 Comment fix.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4636 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-03-23 19:39:32 +00:00
uz
b256d6fb46 Made Olivers devnum patch (r4588) work with the PET-II models. On these
machines, the program runs in a separate 64K bank, and zeropage variables need
to be copied from the system bank into the execution bank to read by a simple
load operation. The change is currently untested!


git-svn-id: svn://svn.cc65.org/cc65/trunk@4597 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-02-20 19:46:51 +00:00
ol.sc
d1aad57b98 Initialize _curunit from the zeropage value DEVNUM (aka First Address) in a constructor with a very high priority to be called before DEVNUM gets overwritten by other constructors.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4588 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-02-14 23:12:54 +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
bfbf94404b Squeezed bytes and cycles out of the kbhit functions for almost all platforms.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4480 b7a2c559-68d2-44c3-8de9-860c34a00d81
2009-11-24 18:31:16 +00:00
uz
753bbab40d Systime implementation for the CBM610, derived from the C64.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4225 b7a2c559-68d2-44c3-8de9-860c34a00d81
2009-09-24 20:12:40 +00:00
uz
5c5d01d84a Moved most platform assembler includes into asminc, so they will be available
in the distribution. 
Added --forget-inc-paths to the command line of the assembler in the
Makefiles, because the assembler does now have builtin paths and will find
include files from an installation first.
Hopefully fixed any problems that arose from the two changes.


git-svn-id: svn://svn.cc65.org/cc65/trunk@4223 b7a2c559-68d2-44c3-8de9-860c34a00d81
2009-09-24 17:44:22 +00:00
uz
f8d3fccc01 get_tv() implementation for the CBM610 by Stefan Haubenthal.
git-svn-id: svn://svn.cc65.org/cc65/trunk@3998 b7a2c559-68d2-44c3-8de9-860c34a00d81
2009-08-06 20:24:41 +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
931add050e Added a systime implementation by Stefan Haubenthal with a few changes. The
routine reads the TOD clock of CIA1 on the C64 and C128. Since systime was a
dummy routine common for all CBMs before, this change adds an individual dummy
routine for all other CBM systems. CBM510/610 do also have a TOD clock, so a
similar function as in the C64 could be used ...


git-svn-id: svn://svn.cc65.org/cc65/trunk@3974 b7a2c559-68d2-44c3-8de9-860c34a00d81
2009-07-27 18:44:37 +00:00
uz
d352b85c87 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 and R3951 where this change was done for other platforms.
                         


git-svn-id: svn://svn.cc65.org/cc65/trunk@3954 b7a2c559-68d2-44c3-8de9-860c34a00d81
2009-02-22 18:23:31 +00:00
uz
4812feb44b git-svn-id: svn://svn.cc65.org/cc65/trunk@3863 b7a2c559-68d2-44c3-8de9-860c34a00d81 2008-08-02 22:02:54 +00:00
cuz
0fcc998024 Inline InitBuffers
git-svn-id: svn://svn.cc65.org/cc65/trunk@3503 b7a2c559-68d2-44c3-8de9-860c34a00d81
2005-05-05 10:32:06 +00:00
cuz
a170b50687 CLOSE is actually the same as INSTALL/UNINSTALL
git-svn-id: svn://svn.cc65.org/cc65/trunk@3502 b7a2c559-68d2-44c3-8de9-860c34a00d81
2005-05-05 10:25:27 +00:00
cuz
f096dc95ae Carry is clear on IRQ entry
git-svn-id: svn://svn.cc65.org/cc65/trunk@3500 b7a2c559-68d2-44c3-8de9-860c34a00d81
2005-05-05 10:11:23 +00:00
cuz
107ead3211 Adjusted IRQ handler for new callirq semantics
git-svn-id: svn://svn.cc65.org/cc65/trunk@3498 b7a2c559-68d2-44c3-8de9-860c34a00d81
2005-05-05 10:00:17 +00:00
cuz
d0bee35728 Move constructor code into the INIT segment
git-svn-id: svn://svn.cc65.org/cc65/trunk@3405 b7a2c559-68d2-44c3-8de9-860c34a00d81
2005-02-26 09:28:46 +00:00
cuz
303304fe90 Add definitions for tools so the makefile is useful by itself.
git-svn-id: svn://svn.cc65.org/cc65/trunk@3262 b7a2c559-68d2-44c3-8de9-860c34a00d81
2004-10-26 19:28:26 +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
af461406cb Fix: No ST constant available
git-svn-id: svn://svn.cc65.org/cc65/trunk@2885 b7a2c559-68d2-44c3-8de9-860c34a00d81
2004-03-02 17:10:43 +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
96ef6d828f PET-II improvements
git-svn-id: svn://svn.cc65.org/cc65/trunk@2849 b7a2c559-68d2-44c3-8de9-860c34a00d81
2003-12-28 18:35:00 +00:00
cuz
40a48c59b8 Fixed a typo
git-svn-id: svn://svn.cc65.org/cc65/trunk@2845 b7a2c559-68d2-44c3-8de9-860c34a00d81
2003-12-27 16:10:53 +00:00
cuz
f3b1ddfe8a Fixed a comment
git-svn-id: svn://svn.cc65.org/cc65/trunk@2842 b7a2c559-68d2-44c3-8de9-860c34a00d81
2003-12-27 14:32:37 +00:00
cuz
b9327d23f8 Removed the old rs232 code
git-svn-id: svn://svn.cc65.org/cc65/trunk@2838 b7a2c559-68d2-44c3-8de9-860c34a00d81
2003-12-26 21:05:25 +00:00
cuz
97494bc1f3 Design change: Do keyboard polling internally without calling the kernal
in the system bank. For one this performs better (several %), second it
allows to handle the function keys in conformance with other platforms.
Without the custom keyboard routine, we would have to apply some more
magic to the function keys to make them work as with other cc65 targets.


git-svn-id: svn://svn.cc65.org/cc65/trunk@2811 b7a2c559-68d2-44c3-8de9-860c34a00d81
2003-12-21 18:43:25 +00:00
cuz
16f737af65 Minor changes and cleanup
git-svn-id: svn://svn.cc65.org/cc65/trunk@2796 b7a2c559-68d2-44c3-8de9-860c34a00d81
2003-12-20 23:38:42 +00:00
cuz
a7042ddbe4 Complete redesign of the CBM610 support.
Use wrappers to call the kernal in bank 15 instead of implementing kernal
functionality within the cc65 libs (eats performance but is much smaller and
simpler).
Improved startup/shutdown code allows a return to the system bank without
calling the BASIC cold start vector.


git-svn-id: svn://svn.cc65.org/cc65/trunk@2793 b7a2c559-68d2-44c3-8de9-860c34a00d81
2003-12-20 23:13:26 +00:00
cuz
e2e6a62e5c Debugged the driver
git-svn-id: svn://svn.cc65.org/cc65/trunk@2790 b7a2c559-68d2-44c3-8de9-860c34a00d81
2003-12-20 19:09:30 +00:00
cuz
290de026d1 Changed chip register names, fixed a bug
git-svn-id: svn://svn.cc65.org/cc65/trunk@2789 b7a2c559-68d2-44c3-8de9-860c34a00d81
2003-12-19 23:04:30 +00:00
cuz
4b5cd3b981 Fixed variable names
git-svn-id: svn://svn.cc65.org/cc65/trunk@2783 b7a2c559-68d2-44c3-8de9-860c34a00d81
2003-12-19 12:39:21 +00:00