1
0
mirror of https://github.com/cc65/cc65.git synced 2024-12-23 19:29:37 +00:00
Commit Graph

243 Commits

Author SHA1 Message Date
Marco van den Heuvel
89c3ed6d7f Added C64/C128 SuperCPU accelerator functions and started on a generic framework for accelerators. 2018-04-09 19:36:53 -07:00
Greg King
b844572159 Moved most of the tgi_colors.s files into the libsrc/common/ directory.
Only the Apple2 and Lynx platforms use different codes for the white color; they have their own files.
2018-03-27 07:28:46 -04:00
Marco van den Heuvel
d34c93a464 Set X register to 0 so that 16bit promotion works as expected. 2018-03-20 14:05:55 -07:00
Marco van den Heuvel
5d4116f05f Added isfast function which returns a 1 when the C128 is in 2MHz mode. 2018-03-20 13:11:24 -07:00
Marco van den Heuvel
b783280577 Replaced reu commands with defined constants. 2018-03-05 17:46:51 -08:00
Marco van den Heuvel
40e93dd931 Improved reu size detection. 2018-03-05 15:01:55 -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
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
mrdudz
892732f340 fix cpeeks() for C128 VDC 2017-12-12 17:05:24 +01:00
mrdudz
74b5540f76 copy cpeeks from generic version, this at least makes it work for 40 columns 2017-12-12 03:48:43 +01:00
mrdudz
9a609f6766 fix petscii conversion for C128 2017-12-11 21:53:00 +01:00
mrdudz
8902730756 cbm stuff from greggs pull request 2017-12-11 19:52:11 +01:00
Oliver Schmidt
4aa19494f5 Removed dysfunctional kbrepeatdelay() and kbrepeatrate().
As discussed in https://github.com/cc65/cc65/pull/452 after my premature merge the two functions in question don't work as expected.

Additionally I adjusted several style deviations in the pull request in question.
2017-08-30 16:37:59 +02:00
Oliver Schmidt
b5a4e5667a Merge pull request #452 from mrdudz/kbrepeat
kbrepeatdelay and kbrepeatrate for cbm targets
2017-08-20 14:15:37 +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
Bob Andrews
5dcebbccb6 Merge branch 'master' into kbrepeat 2017-08-06 20:22:52 +02:00
Oliver Schmidt
6002e59c28 Merge pull request #453 from mrdudz/waitvsync
waitvblank for cbm targets
2017-07-18 15:38:27 +02:00
mrdudz
8eee51913a add headers/fix formatting 2017-07-18 01:04:53 +02:00
mrdudz
1abce3a2a1 rename all waitvblank() to waitvsync() 2017-07-17 23:15:05 +02:00
mrdudz
3ff4a1333c use BIT so akku wont get trashed at least in 40 cols mode 2017-06-22 00:19:39 +02:00
mrdudz
49aad01bf1 dont trash akku if possible, use VDC register when in 80column mode 2017-06-21 23:18:00 +02:00
mrdudz
a42feca228 fixed some stuff, compiles again :) 2017-06-17 02:37:34 +02:00
mrdudz
035621aa95 fixed code a bit so it compiles again :) 2017-06-17 02:26:54 +02:00
Stefan
75028e4108 shorter code 2017-05-18 23:58:10 +02:00
Oliver Schmidt
13482984ca Introduced internal gotoxy that pops both parameters.
About all CONIO functions offering a <...>xy variant call
  popa
  _gotoxy

By providing an internal gotoxy variant that starts with a popa all those CONIO function can be shortened by 3 bytes. As soon as program calls more than one CONIO function this means an overall code size reduction.
2016-06-05 14:58:38 +02:00
Oliver Schmidt
1d1ba3ed3b Adjusted constructors.
The constructors are _NOT_ allowed anymore to access the BSS. Rather they must use the DATA segment or the INIT 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.
2016-03-16 16:28:32 +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
mrdudz
eb96a90e5f initial import from old sources 2016-02-28 22:35:46 +01:00
mrdudz
85760e0c53 initial import from old sources 2016-02-28 22:13:05 +01:00
Bob Andrews
3f72e59e93 Merge pull request #241 from blackystardust/c128-function-ram-emd
C128 function ram emd
2016-02-27 18:08:55 +01:00
Marco van den Heuvel
433eeb1bc7 Renamed MMU_CFG_INT_FROM -> MMU_CFG_IFROM and MMU_CFG_EXT_FROM -> MMU_CFG_EFROM 2015-12-02 00:30:30 -08:00
Marco van den Heuvel
7cd80e7450 optimized the sei/cli pairing a bit. 2015-12-02 00:21:55 -08:00
Marco van den Heuvel
f55505820a optimized the sei/cli pairing a bit for internal function ram emd as well. 2015-12-02 00:17:29 -08:00
Marco van den Heuvel
83c63a65c3 optimized the sei/cli pairing a bit. 2015-12-02 00:14:56 -08:00
Marco van den Heuvel
2e2f19ba79 Finished adding c128 internal/external function ram emd's. 2015-11-30 20:14:45 -08:00
Marco van den Heuvel
7df35cac94 Started on making c128 function ram emd's. 2015-11-30 09:53:30 -08:00
Marco van den Heuvel
18208f4d2e Fixed the c128 ram (bank 1) emd. 2015-11-29 23:04:23 -08:00
Marco van den Heuvel
cf9e7856cf Removed an 'rts'. 2015-11-29 11:35:25 -08: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
Oliver Schmidt
326da85145 Consistently place constructors (and their exclusive subroutines) in "INIT". 2015-10-09 21:44:20 +02:00
Oliver Schmidt
575f859a03 Keep low level VIC sprite stuff out of user code. 2015-10-09 18:33:35 +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
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
a27e7562fd Added comments that explain why some instructions are implied. 2014-05-05 13:55:14 -04:00
Greg King
7d512ca238 Back-migrated some phantom-key rejection optimizations. 2014-05-05 06:28:19 -04:00