1
0
mirror of https://github.com/cc65/cc65.git synced 2024-06-28 19:29:53 +00:00
Commit Graph

211 Commits

Author SHA1 Message Date
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
63b5f75a7f Merge pull request #114 from greg-king5/phantom
Added the phantom-key exorcism code to the other C128 mouse drivers.
2014-05-09 19:30:51 +02:00
Greg King
047d9abc68 Added the long-missing driver-flags byte to the potentiometer (mouse) drivers. 2014-05-05 04:16:04 -04: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
3ef184bdd6 Corrected the default upper limits of some mouse drivers' bounding box.
The upper limits need to be one less than the screen sizes because the minimum co-ordinate is zero instead of one.
2014-03-18 05:17:44 -04:00
Oliver Schmidt
94eb2a2ed7 Some fine tuning of the mouse driver interface harmonization. 2014-01-17 21:09:15 +01:00
Oliver Schmidt
4065cb1983 Harmonized interface between mouse drivers and callbacks.
The Apple2 doesn't have sprites so the Apple2 mouse callbacks place a special character on the text screen to indicate the mouse position. In order to support the necessary character removing and redrawing the Apple2 mouse driver called the Apple2 mouse callbacks in an "unusual way". So far so (sort of) good.

However the upcoming Atari mouse driver aims to support both "sprite-type" mouse callbacks as well as "text-char-type" mouse callbacks. Therefore the interface between mouse drivers and callbacks needs to be extended to allow the mouse callbacks to hide their different types from the mouse driver.

The nature of this change can be seen best by looking at the Apple2 file modifications. The CBM drivers and callbacks (at least the current ones) don't benefit from this change.
2014-01-15 22:47:59 +01:00
Oliver Schmidt
b1c8f8e714 Fixed recent "Minor comment harmonization". 2014-01-12 21:52:18 +01:00
Oliver Schmidt
8ae7ac73b3 Minor comment harmonization. 2014-01-11 23:35:21 +01:00
Greg King
0159358934 Cleaned 2 source files by removing commented-out lines that are active in other files. 2013-08-23 07:36:11 -04:00
Greg King
17333e4732 Fixed some line endings.
My Git and repositories are configured for POSIX; but sometimes, Windows line endings "sneak" into new files.
2013-07-25 13:53:15 -04:00
Greg King
3b544613d2 Moved the lightpen names from <mouse.h> to a new <pen.h>.
Renamed the adjuster pointer.
2013-07-25 13:32:40 -04:00
Greg King
078a1df2f6 Look for NULL pointer more efficiently. 2013-07-05 12:32:19 -04:00
Greg King
e63bf1cde1 Used a library-reference method to calibrate lightpen drivers.
The mouse reference is a pointer.  If it's NULL, the driver uses a default.  If it's non-NULL, then it points to a function that the driver can call.  That function will adjust the driver's calibration value.  It could ask the user to adjust the pen; or, it could read a file that holds a value from a previous calibration.

Application writers can choose how it's done: a function that's provided by the library, a custom function, or nothing.
2013-06-23 03:18:28 -04:00
Greg King
66ca781bb1 Added library reference address to lightpen driver header. 2013-06-03 06:09:22 -04: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
744abda24f Added library reference mouse_libref to MOU interface. 2013-06-01 00:53:17 +02:00
Oliver Schmidt
23650cb946 Added library reference joy_libref to JOY interface. 2013-06-01 00:36:08 +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
Greg King
051c21726b Added Inkwell lightpen drivers for the C64 and the C128.
They use the mouse driver programming interface.

Added a test program for lightpen drivers.  Now, it knows about only those two drivers; it will need updating when others are added.
2013-05-29 20:02:29 -04: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
2e5823d43d Save some bytes by sharing the code doing the actual vector setting. Note: Jumping from segemnt INIT to segment CODE is okay while the other way wouldn't be.
git-svn-id: svn://svn.cc65.org/cc65/trunk@5989 b7a2c559-68d2-44c3-8de9-860c34a00d81
2013-02-14 16:48:05 +00: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
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
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
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
ol.sc
b586d5ef69 Introduced mass-storage device enumaration - with implementation for C64 and C128.
git-svn-id: svn://svn.cc65.org/cc65/trunk@5820 b7a2c559-68d2-44c3-8de9-860c34a00d81
2012-09-09 12:14:45 +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
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
a9de1a9e89 Fixed an error: The LINE function mistakenly enabled the BASIC ROM. (Greg King)
git-svn-id: svn://svn.cc65.org/cc65/trunk@5299 b7a2c559-68d2-44c3-8de9-860c34a00d81
2011-09-13 18:50:29 +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
14cfadbc75 Computed pixel aspect ratio (PAR) by presuming a display aspect ratio (DAR) of 4/3 for a classic CRT and using the given driver resolutions as storage aspect ratio (SAR).
git-svn-id: svn://svn.cc65.org/cc65/trunk@5001 b7a2c559-68d2-44c3-8de9-860c34a00d81
2011-04-30 12:46:03 +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
577247df58 As a test, remove the SYS header from the startup code and use the one
supplied by the new exehdr module.


git-svn-id: svn://svn.cc65.org/cc65/trunk@4862 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-11-14 11:51:05 +00:00
uz
9948b5acfe Remove the load address since it's supplied in its own module now.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4856 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-11-13 16:57:23 +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
ol.sc
d1f5b74f01 Now that we reduce the size of the RAM memory area by the stacksize in the linker configuration we need to add the stacksize to end of the RAM area when setting the initial stack pointer in the startup code.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4822 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-10-02 10:37:20 +00:00
uz
09adce2fec Added patches to make systime work correctly with the different video systems
(Stefan Haubenthal).


git-svn-id: svn://svn.cc65.org/cc65/trunk@4624 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-03-19 20:46:56 +00:00
ol.sc
8663ae5975 Fixed line endings I broke with recent change.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4618 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-03-07 21:00:42 +00:00
ol.sc
9ef9396b71 Added comment based on mailing list posting by Greg King.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4593 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-02-20 09:52:05 +00:00
uz
5f18ddbec9 Patches by Greg King to avoid crosstalk between mouse and keyboard.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4589 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-02-15 17:52:41 +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
d4592d1a7c New EMD driver for the Double Quick Brown Box cartridge, written and
contributed by Marco van den Heuvel with quite some cleanup by me.


git-svn-id: svn://svn.cc65.org/cc65/trunk@4587 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-02-12 11:09:23 +00:00
uz
49f6f3972b Make PIA upper case for orthogonality.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4586 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-02-12 11:07:07 +00:00
uz
6a712d8b9e More driver cleanup.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4585 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-02-12 10:46:57 +00:00