1
0
mirror of https://github.com/cc65/cc65.git synced 2024-12-25 17:29:50 +00:00
Commit Graph

98 Commits

Author SHA1 Message Date
Oliver Schmidt
dacee3b9ed Removed IRQ support from TGI drivers.
All but one TGI drivers didn't use IRQs. Especially when the TGI driver kernel was the only .interruptor this meant quite some unnecessary overhead because it pulled in the whole IRQ infrastructure.

The one driver using IRQs (the graphics driver for the 160x102x16 mode on the Lynx) now uses a library reference to set up a JMP to its IRQ handler.
2018-02-02 18:15:45 +01:00
Oliver Schmidt
1976d6cd32 Removed IRQ support from joystick drivers.
All but one joystick drivers didn't use IRQs. Espsecially when the joystick driver kernel was the only .interruptor this meant quite some unnecessary overhead because it pulled in the whole IRQ infrastructure.

I was told that the one driver using IRQs (the DXS/HIT-4 Player joystick driver for the C64) can be reworked to not do it. Until this is done that driver is defunct.
2018-02-01 22:38:36 +01:00
Oliver Schmidt
bd9b4ef60c Replaced three (logically) identical files with a single file. 2017-10-23 18:35:06 +02:00
Oliver Schmidt
7f52a770d9 Removed joy_masks array.
So far the joy_masks array allowed several joystick drivers for a single target to each have different joy_read return values. However this meant that every call to joy_read implied an additional joy_masks lookup to post-process the return value.

Given that almost all targets only come with a single joystick driver this seems an inappropriate overhead. Therefore now the target header files contain constants matching the return value of the joy_read of the joystick driver(s) on that target.

If there indeed are several joystick drivers for a single target they must agree on a common return value for joy_read. In some cases this was alredy the case as there's a "natural" return value for joy_read. However a few joystick drivers need to be adjusted. This may cause some overhead inside the driver. But that is for sure smaller than the overhead introduced by the joy_masks lookup before.

!!! ToDo !!!

The following three joystick drivers become broken with this commit and need to be adjusted:
- atrmj8.s
- c64-numpad.s
- vic20-stdjoy.s
2017-08-19 19:11:28 +02:00
Christian Groessler
39a1a142e3 gamate, lynx, nes, pce: remove joy_stddrv.s
These targets don't support dynamically loaded joystick drivers.
2017-02-06 19:26:12 +01:00
Alex Thissen
ef7e9db116 Changed __BLOCKSIZE__ to __BANK0BLOCKSIZE__.
Added __BANK1BLOCKSIZE__ which defaults to 0.
2016-09-11 22:26:52 +02:00
alexthissen
e786d1cf49 Update exehdr.s
Fix for memory bank 1 which should be zero for almost all cartridges for emulators to work correctly.
2016-08-27 21:58:13 +02: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
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
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
Karri Kaksonen
100ecb0a45 Use LOWCODE segment 2014-03-19 11:32:44 +02:00
Oliver Schmidt
b0dd6c614f Added library reference tgi_libref to TGI interface. 2013-06-01 12:42:00 +02:00
Oliver Schmidt
ae409e4978 Added library reference ser_libref to SER interface. 2013-06-01 11:03:14 +02:00
Oliver Schmidt
23650cb946 Added library reference joy_libref to JOY interface. 2013-06-01 00:36:08 +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
81e467cdc2 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:15:30 +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
karri
a658c56774 Add lynx_snd_stop_channel
git-svn-id: svn://svn.cc65.org/cc65/trunk@5977 b7a2c559-68d2-44c3-8de9-860c34a00d81
2013-01-28 19:42:02 +00:00
karri
dc0292d405 Export lynx_snd_active
git-svn-id: svn://svn.cc65.org/cc65/trunk@5976 b7a2c559-68d2-44c3-8de9-860c34a00d81
2013-01-28 17:52:38 +00:00
karri
0137681d77 Update sound driver
git-svn-id: svn://svn.cc65.org/cc65/trunk@5974 b7a2c559-68d2-44c3-8de9-860c34a00d81
2013-01-28 17:42:18 +00:00
karri
4697cf255f Add __fastcall__ stuff
git-svn-id: svn://svn.cc65.org/cc65/trunk@5950 b7a2c559-68d2-44c3-8de9-860c34a00d81
2012-12-17 17:31:07 +00:00
karri
1cfe0edee2 Add sound support
git-svn-id: svn://svn.cc65.org/cc65/trunk@5949 b7a2c559-68d2-44c3-8de9-860c34a00d81
2012-12-12 14:30:20 +00:00
karri
3ed3ff68c5 Work in progress
git-svn-id: svn://svn.cc65.org/cc65/trunk@5948 b7a2c559-68d2-44c3-8de9-860c34a00d81
2012-12-12 14:29:39 +00:00
karri
7e5149d7f5 Add basic sound support
git-svn-id: svn://svn.cc65.org/cc65/trunk@5947 b7a2c559-68d2-44c3-8de9-860c34a00d81
2012-12-11 12:33:50 +00:00
karri
a7bd8bbc62 Fix bug in cls
git-svn-id: svn://svn.cc65.org/cc65/trunk@5944 b7a2c559-68d2-44c3-8de9-860c34a00d81
2012-12-02 11:45:36 +00:00
karri
c7f6e87e10 Add collision indices to all sprites jsut in case
git-svn-id: svn://svn.cc65.org/cc65/trunk@5943 b7a2c559-68d2-44c3-8de9-860c34a00d81
2012-12-01 13:32:24 +00:00
karri
7b3e3b99a3 Add collision screen erasure to tgi_clear
git-svn-id: svn://svn.cc65.org/cc65/trunk@5939 b7a2c559-68d2-44c3-8de9-860c34a00d81
2012-11-21 13:11:18 +00:00
karri
8d545b2e17 Add erasure of collision buffer to tgi_clear
git-svn-id: svn://svn.cc65.org/cc65/trunk@5938 b7a2c559-68d2-44c3-8de9-860c34a00d81
2012-11-20 06:19:50 +00:00
ol.sc
6860ac7dfd Introduced static standard drivers.
git-svn-id: svn://svn.cc65.org/cc65/trunk@5891 b7a2c559-68d2-44c3-8de9-860c34a00d81
2012-11-01 19:53:47 +00:00
ol.sc
dbc66c247a Added missing standard driver definitions.
git-svn-id: svn://svn.cc65.org/cc65/trunk@5890 b7a2c559-68d2-44c3-8de9-860c34a00d81
2012-11-01 15:58:27 +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
karri
e412d455b9 Palette updated
git-svn-id: svn://svn.cc65.org/cc65/trunk@5879 b7a2c559-68d2-44c3-8de9-860c34a00d81
2012-10-26 10:18:45 +00:00
karri
ff77d42188 Fine tune palette
git-svn-id: svn://svn.cc65.org/cc65/trunk@5878 b7a2c559-68d2-44c3-8de9-860c34a00d81
2012-10-26 09:05:27 +00:00
karri
56ccd62087 Cammys optimized Lynx palette
git-svn-id: svn://svn.cc65.org/cc65/trunk@5866 b7a2c559-68d2-44c3-8de9-860c34a00d81
2012-10-23 10:07:17 +00:00
karri
b9d9513f76 Change address of sec loader
git-svn-id: svn://svn.cc65.org/cc65/trunk@5825 b7a2c559-68d2-44c3-8de9-860c34a00d81
2012-09-15 12:57:37 +00:00
karri
2222df9143 Shring the bootloader by 20 bytes and remove restrictions on file size
git-svn-id: svn://svn.cc65.org/cc65/trunk@5824 b7a2c559-68d2-44c3-8de9-860c34a00d81
2012-09-11 13:01:39 +00:00
uz
c03a5caf19 Added an implementation of clock() for the Lynx console. By Greg King.
git-svn-id: svn://svn.cc65.org/cc65/trunk@5477 b7a2c559-68d2-44c3-8de9-860c34a00d81
2012-02-06 20:17:54 +00:00
uz
7ed3fdc803 Fixed range errors when negative numbers where used as bytes. This wasn't
flagged by older ca65 versions because of errors in the range checks.


git-svn-id: svn://svn.cc65.org/cc65/trunk@5166 b7a2c559-68d2-44c3-8de9-860c34a00d81
2011-08-15 15:23:31 +00:00
uz
4026a28c60 Added a new flags byte to the TGI headers. Bumped the API version.
git-svn-id: svn://svn.cc65.org/cc65/trunk@5083 b7a2c559-68d2-44c3-8de9-860c34a00d81
2011-07-17 11:23:27 +00:00
ol.sc
4aa00e84e1 Removed tgi_load() and all corresponding infrastructure. The idea behind tgi_load() was to be able to describe a TGI mode in a target-neutral way by resolution and colordepth. However it turned out that there arn't any cc65 targets sharing any resolution. As a result the only working target-independent approach for a TGI program is to call tgi_loaddriver(tgi_stddrv); and then look up the resolution provided - and to adapt to that resolution.
git-svn-id: svn://svn.cc65.org/cc65/trunk@5016 b7a2c559-68d2-44c3-8de9-860c34a00d81
2011-05-02 10:38:48 +00:00
ol.sc
b47113ad80 Removed recently added TGI mode tables for Atmos and Lynx as according to Greg King those targets don't load drivers dynamically.
git-svn-id: svn://svn.cc65.org/cc65/trunk@5011 b7a2c559-68d2-44c3-8de9-860c34a00d81
2011-05-01 21:32:03 +00:00
ol.sc
a0d53cff6b Documented the reason for having a pixel aspect ratio (PAR) of 1 on the Lynx.
git-svn-id: svn://svn.cc65.org/cc65/trunk@5002 b7a2c559-68d2-44c3-8de9-860c34a00d81
2011-04-30 12:47:53 +00:00
ol.sc
f9b25bad48 Added TGI mode tables for Atmos and Lynx
git-svn-id: svn://svn.cc65.org/cc65/trunk@4997 b7a2c559-68d2-44c3-8de9-860c34a00d81
2011-04-25 19:05:43 +00:00
uz
cc3424a545 Access routines for different eeprom types. By Karri Kaksonen.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4994 b7a2c559-68d2-44c3-8de9-860c34a00d81
2011-04-25 18:42:50 +00:00
ol.sc
5e37ed1a16 Target-specific black & white values for use by the target-shared TGI kernel
git-svn-id: svn://svn.cc65.org/cc65/trunk@4993 b7a2c559-68d2-44c3-8de9-860c34a00d81
2011-04-25 17:11:23 +00:00
uz
d78e52fd40 New uploader that can be hiding in top of memory waiting for a BLL-kind of
loadable application over the ComLynx serial port. By Karri Kaksonen.


git-svn-id: svn://svn.cc65.org/cc65/trunk@4982 b7a2c559-68d2-44c3-8de9-860c34a00d81
2011-04-06 19:54:55 +00:00