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

57 Commits

Author SHA1 Message Date
Greg King
39b4b6838f Made dio_read(), dio_write(), and dio_write_verify() catch sector number conversion errors. 2018-02-23 16:12:12 -05:00
Greg King
6fd56bf9b6 Fixed bugs in the geos-cbm DIO sector-number converter functions.
* The 16-bit comparison code actually didn't compare the high byte.
* This implementation supports only the 1541, 1571, and 1581; but, it didn't exclude the other drive types that GEOS supports.
* Two error code numbers were swapped.
* A 1571 converter didn't catch sector numbers that are too high.
* A 1581 converter didn't catch sector numbers that are too high.
2018-02-23 16:12:12 -05:00
Greg King
8476360e9f Fixed bugs in geos-cbm's dio_open().
* Trying to open an unused drive would leave a byte on the hardware stack.

* Too high device numbers weren't caught.
2018-02-23 16:12:12 -05:00
Marco van den Heuvel
b0ef67d14c Added GEOS 1.3 and 1.5 detection. 2018-02-15 15:24:58 -08:00
Marco van den Heuvel
e17b9177de Fixed GeOS -> GEOS and added newline to geossym2.inc. 2018-02-14 10:22:10 -08:00
Marco van den Heuvel
d93f84f4bc Improved GeOS version detection. 2018-02-13 19:19:40 -08:00
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
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
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
Oliver Schmidt
5ed1fac0d6 Use unique variables for cc65 toolchain.
Originally I used the usual variables (like $(CC) and $(CFLAGS) ) but after
all this doesn't make sense as any predefined values and/or user defined
settings can only be wrong.
2013-06-04 23:39:00 +02:00
Oliver Schmidt
b0dd6c614f Added library reference tgi_libref to TGI interface. 2013-06-01 12:42:00 +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
Oliver Schmidt
85885001b1 Removed (pretty inconsistently used) tab chars from source code base. 2013-05-09 13:57:12 +02:00
Oliver Schmidt
88648ce717 Avoid usage of cl65 for library build as it requires 'install'. 2013-05-04 23:38:05 +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
9930379665 Added (naive) implementation of dio_query_sectcount() and dio_query_sectsize() for GEOS 64/128.
git-svn-id: svn://svn.cc65.org/cc65/trunk@5873 b7a2c559-68d2-44c3-8de9-860c34a00d81
2012-10-23 19:29:40 +00:00
ol.sc
6e829979d4 Normalized coding style.
git-svn-id: svn://svn.cc65.org/cc65/trunk@5869 b7a2c559-68d2-44c3-8de9-860c34a00d81
2012-10-23 19:22:05 +00:00
ol.sc
61d4b6b03f Removed DIO specific typedefs which were just aliases to basic types and replaced the term 'drive' with 'device' in order to harmonize with the recently added device.h.
git-svn-id: svn://svn.cc65.org/cc65/trunk@5847 b7a2c559-68d2-44c3-8de9-860c34a00d81
2012-10-11 18:22:49 +00:00
uz
a564450415 Fixed a bug. High byte of the sector number is stored into the wrong place.
Reported by Stefan Haubenthal.
           


git-svn-id: svn://svn.cc65.org/cc65/trunk@5579 b7a2c559-68d2-44c3-8de9-860c34a00d81
2012-03-08 18:59:41 +00:00
ol.sc
fb7d8a7c37 My recent decision to reuse the character specification table from the base target was based on the fact that CBM GEOS used a copy of the CBM character specification table for the last ten years.
However now I understand that CBM GEOS does _not_ use PETSCII so the CBM character specification table doesn't make sense at all. After all this is very plausible because GEOS wants to enable the user to share his files across GEOS variants - so we can share the character specification table too.

git-svn-id: svn://svn.cc65.org/cc65/trunk@5527 b7a2c559-68d2-44c3-8de9-860c34a00d81
2012-02-17 20:23:35 +00:00
ol.sc
51508843f9 Reuse the character specification table from the base target.
git-svn-id: svn://svn.cc65.org/cc65/trunk@5518 b7a2c559-68d2-44c3-8de9-860c34a00d81
2012-02-09 16:41:35 +00:00
ol.sc
764f07e56b Reuse the character specification table from the base target.
git-svn-id: svn://svn.cc65.org/cc65/trunk@5517 b7a2c559-68d2-44c3-8de9-860c34a00d81
2012-02-09 16:40:18 +00:00
ol.sc
52f198b6c4 Normalized coding style.
git-svn-id: svn://svn.cc65.org/cc65/trunk@5513 b7a2c559-68d2-44c3-8de9-860c34a00d81
2012-02-09 10:17:41 +00:00
ol.sc
6411cc66c1 Defining C constants here doesn't seem to make sense as they are defined already in individual assembler files based on official jumptable entries.
As the disk driver jumptable entries don't seem to be published otherwise I didn't delete the definitions but moved the '_' to the end marking them as "secondary" to the ones in the main jumptable.

git-svn-id: svn://svn.cc65.org/cc65/trunk@5506 b7a2c559-68d2-44c3-8de9-860c34a00d81
2012-02-09 07:57:49 +00:00
ol.sc
2a0fd9bda0 Renamed 'UnBlockProcess' to 'UnblockProcess' and 'UnFreezeProcess' to 'UnfreezeProcess' to matchall 3rd party docs.
git-svn-id: svn://svn.cc65.org/cc65/trunk@5504 b7a2c559-68d2-44c3-8de9-860c34a00d81
2012-02-09 07:37:08 +00:00
ol.sc
129d3bf872 - The address given for GetSerialNumber in the "Hitchhiker's Guide To GEOS" is obviously wrong: $4b38.
- According to the "Hitchhiker's Guide To GEOS" GetSerialNumber returns a string on Apple GEOS (in contrast to a number on CBM GEOS).
Given both facts and that the API is presumably not important at all it seems reasonable to just go without it on Apple GEOS.

git-svn-id: svn://svn.cc65.org/cc65/trunk@5503 b7a2c559-68d2-44c3-8de9-860c34a00d81
2012-02-08 19:48:31 +00:00
ol.sc
7a076cf145 Normalized coding style.
git-svn-id: svn://svn.cc65.org/cc65/trunk@5502 b7a2c559-68d2-44c3-8de9-860c34a00d81
2012-02-08 17:21:18 +00:00
ol.sc
75dc65c217 Prepared infrastructure for a shared loadable generic mouse driver based the GEOS API.
git-svn-id: svn://svn.cc65.org/cc65/trunk@5496 b7a2c559-68d2-44c3-8de9-860c34a00d81
2012-02-08 14:30:07 +00:00
ol.sc
baa6c53dec Normalized coding style.
git-svn-id: svn://svn.cc65.org/cc65/trunk@5494 b7a2c559-68d2-44c3-8de9-860c34a00d81
2012-02-07 22:37:13 +00:00
ol.sc
286d5979a2 Adjusted sorting.
git-svn-id: svn://svn.cc65.org/cc65/trunk@5493 b7a2c559-68d2-44c3-8de9-860c34a00d81
2012-02-07 22:36:17 +00:00
ol.sc
ea993a5e31 Moved the assembler include files from 'geos-cbm' to 'geos-common' which are believed to work as-is on Apple GEOS too.
git-svn-id: svn://svn.cc65.org/cc65/trunk@5492 b7a2c559-68d2-44c3-8de9-860c34a00d81
2012-02-07 20:11:36 +00:00
ol.sc
ee8c9944f1 Renamed 'devel' to 'drivers'.
git-svn-id: svn://svn.cc65.org/cc65/trunk@5490 b7a2c559-68d2-44c3-8de9-860c34a00d81
2012-02-07 17:02:34 +00:00
ol.sc
4494a930e3 Moved non-driver files from 'geos-cbm/devel' to 'geos-common/system' which are believed to work as-is on Apple GEOS too.
git-svn-id: svn://svn.cc65.org/cc65/trunk@5488 b7a2c559-68d2-44c3-8de9-860c34a00d81
2012-02-07 16:42:59 +00:00
ol.sc
6542cd2ced "Apple disk names are null-terminated strings of 16 characters or less (counting the null-terminator)."
git-svn-id: svn://svn.cc65.org/cc65/trunk@5487 b7a2c559-68d2-44c3-8de9-860c34a00d81
2012-02-07 16:14:23 +00:00
ol.sc
b944a6acdf Moved the 'conio' files from 'geos-cbm' to 'geos-common' which are believed to work as-is on Apple GEOS too.
git-svn-id: svn://svn.cc65.org/cc65/trunk@5486 b7a2c559-68d2-44c3-8de9-860c34a00d81
2012-02-07 13:53:14 +00:00
ol.sc
829609133c Added adjustment for Apple GEOS screen size.
git-svn-id: svn://svn.cc65.org/cc65/trunk@5485 b7a2c559-68d2-44c3-8de9-860c34a00d81
2012-02-07 13:42:27 +00:00
ol.sc
5f4129f14d Moved the 'common' files from 'geos-cbm' to 'geos-common' which are believed to work as-is on Apple GEOS too.
git-svn-id: svn://svn.cc65.org/cc65/trunk@5449 b7a2c559-68d2-44c3-8de9-860c34a00d81
2012-02-04 22:17:46 +00:00
ol.sc
10374c66ce Moved the 'disk' files from 'geos-cbm' to 'geos-common' which are believed to work as-is on Apple GEOS too.
git-svn-id: svn://svn.cc65.org/cc65/trunk@5447 b7a2c559-68d2-44c3-8de9-860c34a00d81
2012-02-04 21:46:26 +00:00
ol.sc
e6d886750b Moved the 'system' files from 'geos-cbm' to 'geos-common' which are believed to work as-is on Apple GEOS too.
git-svn-id: svn://svn.cc65.org/cc65/trunk@5446 b7a2c559-68d2-44c3-8de9-860c34a00d81
2012-02-04 20:58:15 +00:00
ol.sc
6cdef72fb3 Moved the 'runtime' files from 'geos-cbm' to 'geos-common' which are believed to work as-is on Apple GEOS too.
git-svn-id: svn://svn.cc65.org/cc65/trunk@5445 b7a2c559-68d2-44c3-8de9-860c34a00d81
2012-02-04 19:55:02 +00:00
ol.sc
4c16163c7c Moved the 'process' files from 'geos-cbm' to 'geos-common' which are believed to work as-is on Apple GEOS too.
git-svn-id: svn://svn.cc65.org/cc65/trunk@5444 b7a2c559-68d2-44c3-8de9-860c34a00d81
2012-02-04 17:56:46 +00:00
ol.sc
a525fdafb0 Moved the 'mousesprite' files from 'geos-cbm' to 'geos-common' which are believed to work as-is on Apple GEOS too.
git-svn-id: svn://svn.cc65.org/cc65/trunk@5443 b7a2c559-68d2-44c3-8de9-860c34a00d81
2012-02-04 17:51:17 +00:00
ol.sc
a589fdca80 Added adjustment for Apple GEOS screen size.
git-svn-id: svn://svn.cc65.org/cc65/trunk@5442 b7a2c559-68d2-44c3-8de9-860c34a00d81
2012-02-04 17:39:36 +00:00
ol.sc
6192140c83 Moved the 'menuicon' files from 'geos-cbm' to 'geos-common' which are believed to work as-is on Apple GEOS too.
git-svn-id: svn://svn.cc65.org/cc65/trunk@5441 b7a2c559-68d2-44c3-8de9-860c34a00d81
2012-02-04 17:23:22 +00:00
ol.sc
d0c9ba3c76 Moved the 'graph' files from 'geos-cbm' to 'geos-common' which are believed to work as-is on Apple GEOS too.
git-svn-id: svn://svn.cc65.org/cc65/trunk@5440 b7a2c559-68d2-44c3-8de9-860c34a00d81
2012-02-04 17:17:55 +00:00
ol.sc
0828464f26 Moved the 'graph' files from 'geos-cbm' to 'geos-common' which are believed to work as-is on Apple GEOS too.
git-svn-id: svn://svn.cc65.org/cc65/trunk@5439 b7a2c559-68d2-44c3-8de9-860c34a00d81
2012-02-04 17:17:32 +00:00
ol.sc
abc9eba009 Moved the 'memory' files from 'geos-cbm' to 'geos-common' which are believed to work as-is on Apple GEOS too. The REU stuff isn't available on Apple GEOS.
git-svn-id: svn://svn.cc65.org/cc65/trunk@5438 b7a2c559-68d2-44c3-8de9-860c34a00d81
2012-02-04 14:53:09 +00:00
ol.sc
2f10491672 Moved the 'file' files from 'geos-cbm' to 'geos-common' which are believed to work as-is on Apple GEOS too. 'FollowChain' isn't available on Apple GEOS.
git-svn-id: svn://svn.cc65.org/cc65/trunk@5437 b7a2c559-68d2-44c3-8de9-860c34a00d81
2012-02-04 14:08:37 +00:00