1
0
mirror of https://github.com/cc65/cc65.git synced 2024-11-03 10:07:02 +00:00
Commit Graph

527 Commits

Author SHA1 Message Date
Oliver Schmidt
56a8c69b14 Use AX paradigm. 2016-03-13 21:23:45 +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
Oliver Schmidt
76a5a72403 Adjusted current working directory initialization on Apple and Atari.
Moving __cwd from BSS into INITBSS does of course ;-) not only impact the CBM targets but all targets with disk I/O support.

Note: Code using `__cwd-1` may trigger an ld65 range error because __cwd may end up at the very begining of a segment. As far as I see this is an ld65 bug which I'm not try to fix - at least here.
2015-10-15 00:15:38 +02: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
ccc7c2b1f9 Minor style adjustment. 2015-10-09 22:18:51 +02: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
2bc4634860 Normalized style.
We don't use .ifndef .else .endif
2014-06-03 18:30:11 +02:00
Oliver Schmidt
99f0a56f63 Merge pull request #122 from groessler/a5200
new target: Atari 5200 console
2014-05-30 22:52:51 +02:00
Christian Groessler
ef1e96aff0 small optimization 2014-05-27 01:50:22 +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
Christian Groessler
f290c1aa28 remove build warning 2014-04-25 13:21:54 +02:00
Christian Groessler
ec417c0dc5 Merge remote-tracking branch 'upstream/master' into a5200 2014-04-25 02:07:44 +02:00
Christian Groessler
401e18d982 Put mouse cursor shape definition into .rodata. 2014-04-24 02:04:08 +02:00
Oliver Schmidt
9e3154220c Merge pull request #106 from groessler/something_to_pull
add P/M (aka 'Sprite') mouse callback for Atari
2014-04-22 20:01:43 +02:00
Christian Groessler
2059e34114 rename ser_libref.s to serref.s in order to be consistent with other targets 2014-04-22 13:42:17 +02:00
Christian Groessler
eefd33d309 Split libref.s into multiple files to prevent inclusion of unnecessary code. 2014-04-22 12:50:07 +02:00
Christian Groessler
7eaf721e7c Selection whether to use page 6 for mouse P/M data is not done in
Makefile.inc, like the other compile-time options. Small fix in the
P/M mouse "show" routine: adapt mouse cursor colors to current
screen colors.
2014-04-21 11:41:37 +02:00
Christian Groessler
88e3e60550 address issue raised in the pull request; add support to not use page 6
again
2014-04-15 11:37:34 +02:00
Christian Groessler
526b440b24 - always use page 6 for P/M mouse cursor
- make cursor character of text mode callback configurable
- change default cursor character of text mode callback from 'plus' to 'diamond'
- set P/M callback as default
2014-04-11 23:51:49 +02:00
Christian Groessler
661203a89a initial version of a P/M mouse callback 2014-04-11 23:51:49 +02:00
Christian Groessler
f266612697 Merge remote-tracking branch 'upstream/master' into a5200 2014-03-20 00:24:11 +01:00
Christian Groessler
889783bedb add some conio functions 2014-03-11 01:17:59 +01:00
Christian Groessler
73df73194a fix indentation 2014-03-07 23:15:57 +01:00
Christian Groessler
b40fe584d8 fix typo 2014-03-07 23:15:11 +01:00
Oliver Schmidt
3f0af9b241 Have src/Makefile and libsrc/Make use disjoint work directories.
Building the clean target in src or libsrc should only delete stuff created by the make in those directories. Having both separated allows the Travis CI build to replace the native binaries with cross built binaries while keeping everything else.
2014-03-05 23:24:35 +01:00
Oliver Schmidt
44ccb27549 Changed Makefile.inc handling.
It seems more appropriate to trigger the inclusion of Makefile.inc via $TARGET (instead of $SRCDIR). This is btw. more consistent with extzp.s inclusion which is triggered via $TARGET too.
2014-03-04 21:46:25 +01:00
Christian Groessler
bf8eb8c22e rename libsrc/atari/tvtype.s to libsrc/atari/get_tv.s 2014-03-04 15:44:10 +01:00
Oliver Schmidt
3f7cd3387f Optimize for size instead for speed. 2014-03-03 21:08:35 +01:00
Christian Groessler
7a9fa9d4cd rename W2CAS.COM to w2cas.com (lowercase) 2014-03-03 18:12:11 +01:00
Christian Groessler
69f81f6d67 make 'w2cas' a targetutil 2014-03-01 13:11:52 +01:00
Christian Groessler
81fe7a3805 cleanups; split 'header' and 'init' part into two source files 2014-02-21 22:43:44 +01:00
Christian Groessler
65874d4604 Merge remote-tracking branch 'upstream/master' into cassette 2014-02-20 01:05:10 +01:00
Christian Groessler
b326a04b1e fix uninitialized use of 'buflen' 2014-02-19 22:39:39 +01:00
Christian Groessler
b496a400ec Merge remote-tracking branch 'upstream/master' into cassette
ecessary,
2014-02-18 21:36:53 +01:00
Christian Groessler
b477023783 Turn off mouse polling interrupt if the mouse hasn't been moved for
some time. Turn it back on when the mouse is moved again.
Since the polling interrupt runs at a rather high frequency (1kHz),
this saves many processor cycles when the mouse is inactive.
2014-02-14 01:44:00 +01:00
Christian Groessler
3bd5d3f88b Merge remote-tracking branch 'upstream/master' into cassette
Conflicts:
	asminc/atari.inc
	libsrc/atari/mou/atrst.s
2014-01-30 10:48:13 +01:00
Christian Groessler
0cf0ed5510 Disable the high frequency mouse polling IRQ while the system does
time critical things (CRITICAL flag set).
2014-01-29 23:40:48 +01:00
Christian Groessler
33bc340814 add missing stddrv defines for atarixl 2014-01-21 23:09:00 +01:00
Christian Groessler
63ce6e28fe Adapt to new mouse driver interface ('prep' and 'draw') 2014-01-20 23:04:31 +01:00
Christian Groessler
9e155eb096 Always print the mouse cursor, even if coordinates haven't changed.
This makes sure that the cursor is always visible, even if the program
has written text to the screen (only valid for non-P/M mouse callbacks).
2014-01-20 23:04:31 +01:00
Christian Groessler
1fd7c2b318 fix bug where the high byte of X and Y positions were destroyed of
the user had lifted the pen
2014-01-20 23:04:31 +01:00
Christian Groessler
ecd10e632a some comment fixes 2014-01-20 23:04:31 +01:00
Christian Groessler
97d512a1e1 Detect pen button. If we read 228 for X or Y position, don't change cursor
position, since the pen was probably lifted from the pad.
2014-01-20 23:04:30 +01:00
Christian Groessler
6026776460 Trakball mouse driver 2014-01-20 23:04:30 +01:00
Christian Groessler
d61b8754fb Adapt to new mouse driver interface ('prep' and 'draw') 2014-01-20 23:04:30 +01:00
Christian Groessler
09aa007191 Change display logic of mouse cursor (hide and show functions). 2014-01-20 23:04:30 +01:00
Christian Groessler
2be7c7c88d Always print the mouse cursor, even if coordinates haven't changed.
This makes sure that the cursor is always visible, even if the program
has written text to the screen (only valid for non-P/M mouse callbacks).
2014-01-20 23:04:30 +01:00
Christian Groessler
77ba5b7e1c Fix timer IRQ hooking for atarixl target. 2014-01-20 23:04:30 +01:00
Christian Groessler
597c4a6b89 add comment 2014-01-20 23:04:29 +01:00
Christian Groessler
c78d7a82fb use ST mouse as static standard driver, too 2014-01-20 23:04:29 +01:00
Christian Groessler
c22b91e3c3 align comment to the same column 2014-01-20 23:04:29 +01:00
Christian Groessler
09da71c5d9 another small cleanup 2014-01-20 23:04:29 +01:00
Christian Groessler
24198a9ebb small cleanup 2014-01-20 23:04:29 +01:00
Christian Groessler
d614fc4e64 When disabling interrupts, restore original interrupt flag afterwards. 2014-01-20 23:04:29 +01:00
Christian Groessler
d742eeca9f Add drivers for ST mouse, Amiga mouse, and Atari trakball. Access
routines taken from old mouse.s.
2014-01-20 23:04:29 +01:00
Christian Groessler
95c6063f90 Add "joystick mouse" driver and default mouse callback routine (not
using P/M graphics).
2014-01-20 23:04:28 +01:00
Christian Groessler
2ab89621a9 Use deferred VBI instead of immediate VBI. A deferred VBI won't be
called if the user program has interrupts disabled which makes it
easier to avoid race conditions.
2014-01-20 23:04:28 +01:00
Christian Groessler
7bfe4c60db Adapt to new mouse driver interface ('prep' and 'draw') 2014-01-20 11:40:13 +01:00
Christian Groessler
ed9ec5a208 Always print the mouse cursor, even if coordinates haven't changed.
This makes sure that the cursor is always visible, even if the program
has written text to the screen (only valid for non-P/M mouse callbacks).
2014-01-20 11:40:13 +01:00
Christian Groessler
9eb79c5ee6 fix bug where the high byte of X and Y positions were destroyed of
the user had lifted the pen
2014-01-20 11:40:12 +01:00
Christian Groessler
c7c44adaff some comment fixes 2014-01-20 11:40:12 +01:00
Christian Groessler
77d23b9eba Detect pen button. If we read 228 for X or Y position, don't change cursor
position, since the pen was probably lifted from the pad.
2014-01-20 11:40:12 +01:00
Christian Groessler
f1646a3695 Trakball mouse driver 2014-01-20 11:40:12 +01:00
Christian Groessler
012268b8e8 Adapt to new mouse driver interface ('prep' and 'draw') 2014-01-18 00:11:18 +01:00
Christian Groessler
f091d0b3cd Merge branch 'master' of https://github.com/oliverschmidt/cc65 into cassette 2014-01-17 23:06:29 +01:00
Christian Groessler
f5e7e92a35 Merge remote-tracking branch 'upstream/master' into something_to_pull 2014-01-17 22:33:29 +01:00
Oliver Schmidt
a0a5a66f9e Minor cleanup. 2014-01-17 21:20:53 +01:00
Christian Groessler
40e49074a4 add support for 16K cartridges 2014-01-17 20:10:28 +01:00
Christian Groessler
2e44abf928 remove segment directive since CODE is the default segment 2014-01-17 11:48:12 +01:00
Christian Groessler
e6ed335056 put code in CODE segment 2014-01-17 11:48:12 +01:00
Christian Groessler
b292597f1e use copydata instead of own routine 2014-01-16 23:56:32 +01:00
Christian Groessler
fd4d7d93ea put this module's code into CODE segment 2014-01-16 23:56:32 +01:00
Christian Groessler
dcbefb1018 fix indentation 2014-01-16 23:56:32 +01:00
Christian Groessler
692ec4a05b remove TABs 2014-01-14 23:13:01 +01:00
Christian Groessler
b237bb9d9a Add support to create cartridges. 2014-01-14 22:53:49 +01:00
Christian Groessler
ff2c44f565 Change display logic of mouse cursor (hide and show functions). 2014-01-14 14:03:06 +01:00
Christian Groessler
3baf01f531 Always print the mouse cursor, even if coordinates haven't changed.
This makes sure that the cursor is always visible, even if the program
has written text to the screen (only valid for non-P/M mouse callbacks).
2014-01-14 14:03:06 +01:00
Christian Groessler
e85a3f9762 Fix timer IRQ hooking for atarixl target. 2014-01-14 14:03:06 +01:00
Christian Groessler
a3814da96f add comment 2014-01-11 01:37:49 +01:00
Christian Groessler
95ba42bb69 use ST mouse as static standard driver, too 2014-01-11 01:37:49 +01:00
Christian Groessler
f2d25348db align comment to the same column 2014-01-11 01:18:07 +01:00
Christian Groessler
a86133bb57 another small cleanup 2014-01-05 11:18:48 +01:00
Christian Groessler
231e597a4b small cleanup 2014-01-05 11:09:19 +01:00
Christian Groessler
f83c77bace When disabling interrupts, restore original interrupt flag afterwards. 2014-01-04 20:33:25 +01:00
Christian Groessler
be595b7304 Add drivers for ST mouse, Amiga mouse, and Atari trakball. Access
routines taken from old mouse.s.
2014-01-04 20:33:24 +01:00
Christian Groessler
a5dfce7c41 Add "joystick mouse" driver and default mouse callback routine (not
using P/M graphics).
2014-01-04 20:33:24 +01:00
Christian Groessler
6a17df69dd Use deferred VBI instead of immediate VBI. A deferred VBI won't be
called if the user program has interrupts disabled which makes it
easier to avoid race conditions.
2014-01-04 20:33:24 +01:00
Christian Groessler
057884ffa9 Atari: initial support to create cassette bootable programs -- unfinished 2014-01-02 19:28:22 +01:00
Christian Groessler
9e91f74297 small optimzation (found by Greg King) 2013-12-07 01:24:05 +01:00
Christian Groessler
2461163f38 remove old (static) serial driver boilerplate 2013-12-06 21:16:10 +01:00
Christian Groessler
932748e6ca remove debug code 2013-12-06 20:53:49 +01:00
Christian Groessler
074136826a add serial driver for Atari, still contains much debug code 2013-12-06 20:53:49 +01:00
Christian Groessler
478a7679a2 Force inclusion of 'shadow RAM preparation' load chunk in crt0.s and
not in the linker config file.
2013-10-18 22:08:26 +02:00
Christian Groessler
9f44d00d17 Put EXE header and main chunk load header into a single file --
it makes no sense to be able to include/exclude them separately.
2013-10-18 14:54:22 +02:00
Christian Groessler
b153ec8896 atari-asm.cfg linker config file 2013-10-18 03:08:26 +02:00
Christian Groessler
bf3a23c34c Rename 'syschk' symbol in the linker config file, which forces inclusion
of the 'system check' load chunki, to '__SYSTEM_CHECK__'.
2013-10-18 03:08:15 +02:00
Christian Groessler
90bac9d38c rename LOWDATA segment to LOWBSS 2013-10-16 18:20:57 +02:00