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

2683 Commits

Author SHA1 Message Date
Greg King
69e3bbea7e Reverted 'Used more mundane addressing in some of the instructions in "zlib/inflatemem.s".'
This reverted some of commit e7e65044e6.
2017-02-07 07:33:27 -05:00
Christian Groessler
984f901604 Merge remote-tracking branch 'upstream/master' into something_to_pull2 2017-02-06 19:32:00 +01: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
jede
d2fc2c74fb Correcting scrsize.s into _scrsize.s 2017-02-03 21:11:37 +01:00
jede
d76911d38a Fixing telestrat.h 2017-02-02 22:53:28 +01:00
jede
5abb40b229 Last push for tonight :) 2017-02-02 00:11:11 +01:00
jede
4b77072fed Correcting alignment 2017-02-02 00:05:50 +01:00
jede
0e649f24ea Correcting some code from github comments 2017-02-01 23:58:33 +01:00
Christian Groessler
a08f905224 Cleanups for Creativision. 2017-02-01 20:09:03 +01:00
Christian Groessler
0b2a699b46 Merge remote-tracking branch 'upstream/master' into creativision-neu 2017-02-01 18:49:31 +01:00
Christian Groessler
07f840f11c Merge remote-tracking branch 'upstream/master' into creativision 2017-02-01 18:15:05 +01:00
Christian Groessler
034c668b15 pce/memcpy.s: remove superfluous comma in comment 2017-02-01 17:52:30 +01:00
jede
d9778994fa Correcting some spaces 2017-01-31 22:33:19 +01:00
jede
6f58b9a22d Correcting comments alignment
Correcting an address error in telestrat.inc when cleaning files which broke read.s primitive
2017-01-31 22:20:19 +01:00
jede
b5fef66f37 Merge telemon24 and telemon30 into telestrat target.
Cleaning, and replace tab to spaces
Converting hex lowercase value into uppercase char.
Changing := and = when it was needed
2017-01-31 22:09:14 +01:00
jede
06b2b83ab2 Correcting spaces 2017-01-29 23:18:32 +01:00
jede
29881fb7c9 Revert 2017-01-29 22:28:54 +01:00
jede
d1b5a6632d Adding telemon30 and telemon24 primitives 2017-01-29 21:18:49 +01:00
Christian Groessler
bba7c980e4 libsrc/c16/get_tv.s: remove code duplication
Use the plus4 version of get_tv.s.
2017-01-26 16:43:47 +01:00
Christian Groessler
f613ee0f57 More optimization in libsrc/atari/is_cmdline_dos.s.
Suggestion by Spiro Trikaliotis.
2017-01-24 21:01:42 +01:00
Christian Groessler
6f463d60a3 Small space optimization in libsrc/atari/is_cmdline_dos.s. 2017-01-24 20:21:56 +01:00
jede
038ac5a65a Correcting doc adding telemon 2.4 primitives 2017-01-22 21:41:49 +01:00
Greg King
54ff808c2c Added a way to show the default mouse pointer on C64 TGI (graphics) screens. 2017-01-18 16:05:47 -05:00
Florent Flament
c1aac0de0e Add C support for Atari 2600 (VCS) 2017-01-13 21:12:22 +01:00
jede
d5ba063602 Correcting some bugs 2017-01-04 20:03:19 +01:00
Marshall Ward
09495519c0 NES memory map amend (16k prg, 8k chr default)
The configuration file and runtime (crt0.s) provided for the default NES
ROM layout (2x16k PRG, 8k CHR) incorrectly added interrupts (IRQ1, IRQ2,
TIMERIRQ) which are not supported by the NES hardware.  For example, see
the NESdev wiki, which makes no reference to these interrupts.

    https://wiki.nesdev.com/w/index.php/CPU_memory_map

The VECTORS region was also incorrectly set to 0xFFF6, which would have
left the 0xFFF4 normally unspecified.  This did not result in any error,
however, since cc65 simply placed ROMV directly after ROM0 regardless of
start address.

(This layout may be due to a copy-and-paste from the PC-Engine
configuration, whose interrupt registers start at 0xFFF6, begins with
the three interrupts listed above, followed by NMI and START, and does
not end with a final IRQ interrupt.)

Despite the absence of any actual error, since START is still placed at
0xFFFC, this patch removes the nonexistent interrupts and also correctly
aligns the ROM0 and ROMV regions.  It also has the (admittedly very
minor) benefit of freeing up 6 additional bytes for ROM0.
2016-12-24 08:32:54 +11:00
jede
15ac85b50c Adding ch376.h header, correcting some bugs 2016-12-14 23:45:20 +01:00
jede
252e4afb9c Adding files for telemon30 2016-12-14 21:22:10 +01:00
Oliver Schmidt
819ecbda26 Merge pull request #348 from SvOlli/release
ca65: added .P4510 and .IFP4510 pseudo commands
2016-09-20 16:19:45 +02:00
Oliver Schmidt
709ee6a28b Merge pull request #341 from alexthissen/master
Update exehdr.s for Lynx target
2016-09-14 10:23:44 +02:00
Christian Groessler
6198e10f67 Atari: fix lookup of default device on XDOS.
Stefan Dorndorf, author of XDOS, pointed out that retrieving the
default device by looking at an undocumented memory location won't
work in future XDOS versions.
He also showed a way to get the default device in a compatible
manner.

This change implements his method and adds a version check (XDOS
versions below 2.4 don't support this -- for them the behaviour
will be the same as, for example, AtariDOS: no notion of a default
drive).
2016-09-12 23:40:25 +02:00
Alex Thissen
ef7e9db116 Changed __BLOCKSIZE__ to __BANK0BLOCKSIZE__.
Added __BANK1BLOCKSIZE__ which defaults to 0.
2016-09-11 22:26:52 +02:00
Sven Oliver Moll
c0d2643952 added 4510 cpu detection to getcpu.s 2016-09-07 19:44:11 +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
Greg King
2c03b9a1bc Added C-code interfaces for the CBM Kernal functions SCNKEY and UDTIM. 2016-08-07 15:50:10 -04:00
Greg King
e7e65044e6 Used more mundane addressing in some of the instructions in "zlib/inflatemem.s".
That avoids conflicts with ca65's future .setdp feature.
2016-07-19 10:42:49 -04:00
Brad Smith
32d000fb4c Fix broken rand() implementation. The high 8 bits were unused, reducing it to a 24-bit implementation (while still doing all the work for a 32-bit one). The best entropy is in the unused high byte, returning these bits in A instead of bits 8-15, which had considerably lower entropy (i.e. rand() & 255 was effectively a 16-bit LCG). 2016-07-11 20:48:47 -04:00
Greg King
c2945bf1ff Made the zlib's inflatemem()'s source file use enhanced instructions for all 65SC02-compatible CPUs (not only the 65C02). 2016-07-10 05:05:38 -04:00
Oliver Schmidt
e47485f925 Added CONIO cursor support.
For quite some time I deliberately didn't add cursor support to the Apple II CONIO imöplementation. I consider it inappropriate to increase the size of cgetc() unduly for a rather seldom used feature.

There's no hardware cursor on the Apple II so displaying a cursor during keyboard input means reading the character stored at the cursor location, writing the cursor character, reading the keyboard and finally writing back the character read initially.

The naive approach is to reuse the part of cputc() that determines the memory location of the character at the cursor position in order to read the character stored there. However that means to add at least one additional JSR / RTS pair to cputc() adding 4 bytes and 12 cycles :-( Apart from that this approach means still a "too" large cgetc().

The approach implemented instead is to include all functionality required by cgetc() into cputc() - which is to read the current character before writing a new one. This may seem surprising at first glance but an LDA(),Y / TAX sequence adds only 3 bytes and 7 cycles so it cheaper than the JSR / RTS pair and allows to brings down the code increase in cgetc() down to a reasonable value.

However so far the internal cputc() code in question saved the X register. Now it uses the X register to return the old character present before writing the new character for cgetc(). This requires some rather small adjustments in other functions using that internal cputc() code.
2016-06-19 15:03:20 +02:00
Greg King
f91a7e749b Fixed the Plus/4 joystick driver.
It chooses a stick correctly.  And, it reads the fire button.
2016-06-18 13:18:26 -04:00
Christian Groessler
a9c69bb8c9 A small rearrangement of instructions in Atari's exec() to let the comments
make sense again.
2016-06-16 00:47:13 +02:00
Christian Groessler
ec7751332f Fix exec() for atarixl target.
The final part of exec() called 'excexit' and only then restored the
stack pointer to its value at program entry.  'excexit' does all
cleanup (the same as '_exit()'), which means that on the atarixl
target the ROM is banked in again.  On big programs the 'SP_save'
variable might reside at a high memory address which is no longer
accessible after the ROM has been banked in.
The change just moves the restoration of the stack pointer before
the call to 'excexit'.

Another change lets exec.s compile if UCASE_FILENAME is not defined.
And some other small cleanups, also in open.s.
2016-06-15 23:52:16 +02:00
Oliver Schmidt
2c8b8d90bf Merge pull request #311 from groessler/something_to_pull
Fix doesclrscrafterexit() function on atarixl target.
2016-06-15 08:59:50 +02:00
Christian Groessler
d0faf471b8 Some improvements to Atari exec() after review. 2016-06-14 20:44:57 +02:00
Christian Groessler
4aa9a414c6 Fix doesclrscrafterexit() function on atarixl target.
On atarixl, the screen is always cleared, regardless of the running DOS.
2016-06-13 21:16:27 +02:00
Christian Groessler
94ba9575ec Implement exec() for Atari XDOS.
- Adds new ENOEXEC error code, also used by Apple2 targets.
- Maximum command line length is 40, incl. program name. This is
  an XDOS restriction.
- testcode/lib/tinyshell.c has been extended to be able to run
  programs.
2016-06-13 20:40:01 +02:00
Oliver Schmidt
2f486b6201 Merge pull request #307 from groessler/something_to_pull2
Add Atari version of of doesclrscrafterexit().
2016-06-07 15:13:28 +02:00
Christian Groessler
5705d0b55b Use 'return0' for default 'doesclrscrafterexit()' implementation in libsrc/common.
Fix include/atari.h formatting.
2016-06-07 15:05:00 +02:00
Christian Groessler
346d88a6a7 Add issues from pull request #307. 2016-06-07 12:07:38 +02:00
Christian Groessler
c7874b9f60 Add Atari version of of doesclrscrafterexit().
- Update documentation.
- Update atari.h and apple2.h header files.
- Adapt Atari test/target programs.
- Fix a typo in "div" entry in funcref.sgml.
2016-06-07 00:42:51 +02:00
Christian Groessler
27841c7b40 Some Atari runtime library fixes.
* libsrc/atari/ucase_fn.s: Fix handling if input parameter 'tmp2' is 0.
* libsrc/atari/open.s: Set 'tmp2' parameter for 'ucase_fn' if DEFAULT_DEVICE
  is not defined.
2016-06-06 22:45:20 +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
d670998814 Added Apple II version of doesclrscrafterexit().
The prototype and documentation is supposed to be provided together with the ATARI version.
2016-06-05 13:01:42 +02:00
Oliver Schmidt
89329f1519 Merge pull request #287 from silverdr/target_goodies
moved output of target utils and drivers to separate directory
2016-06-01 11:01:56 +02:00
Oliver Schmidt
f1a052f259 Merge pull request #303 from groessler/something_to_pull
Atari: get current drive on XDOS
2016-05-31 12:47:11 +02:00
Christian Groessler
0114a850d9 Atari, getdefdev.s: use mnemonics for 'crvec'. 2016-05-31 12:24:21 +02:00
Christian Groessler
4d02d47832 Use atexit() to wait for key press at program ternination.
Idea by polluks.
2016-05-31 10:38:02 +02:00
Christian Groessler
c1f17e9c18 Atari: make __getdefdev function ROM-friendly 2016-05-31 09:28:53 +02:00
Christian Groessler
9523fa2d33 Atari: get current drive on XDOS 2016-05-31 07:37:58 +02:00
Patrycjusz R. Łogiewa
4dcfc036c8 samples zip and install targets moved into samples/Makefile as agreed 2016-05-30 17:42:01 +02:00
Oliver Schmidt
b979fb5763 Minor adjustment to recent change. 2016-05-30 14:31:53 +02:00
Christian Groessler
a6c306500a Small optimization in apple2 exec.s. 2016-05-30 14:16:37 +02:00
Patrycjusz R. Łogiewa
e36a636eee Indenting optimised 2016-05-29 16:34:22 +02:00
Patrycjusz R. Łogiewa
ac5bb6707d Post-review changes 2016-05-29 16:19:03 +02:00
Christian Groessler
b3d7c09ba1 forgot to add the new file atari/is_cmdline_dos.s in my last commit... 2016-05-25 01:06:53 +02:00
Christian Groessler
da65866e24 Atari: add new function '_is_cmdline_dos()' and some other small changes.
- use this function instead of directly looking at _dos_type in the included
  targetutil and test programs
- fixes/improvements to the Atari runtime library regarding the recently
  changed _dos_type values
- libsrc/atari/targetutil/w2cas.c: exit if no filename was entered
- add documentation for the new function
2016-05-25 00:57:43 +02:00
Christian Groessler
6d7dfad80b add support for XDOS command lines 2016-05-24 03:06:00 +02:00
Patrycjusz R. Łogiewa
cc747946b2 removed variable usage 2016-05-16 22:35:24 +02:00
Patrycjusz R. Łogiewa
37f9929094 adapted for zip/install targets 2016-05-16 22:14:05 +02:00
Patrycjusz R. Łogiewa
ba10c74a7a directory structure changed from driver-centric to target-centric 2016-05-16 19:49:43 +02:00
OzHawk
1369bed881 Update kernal.s 2016-05-16 08:41:13 +09:30
Patrycjusz R. Łogiewa
93f55c274b moved output of target utils and drivers to separate directory 2016-05-13 14:28:58 +02:00
OzHawk
8bd2628d1e Update the missing entries in the kernel jump table for the Vic20 with the actual function addresses.
The Vic20 does not have kernal table entries for the following functions.

;-----------------------------------------------------------------------------
; Functions which are not in the kernal jump table for VIC-20 but are for C64

CINT        := $E518
IOINIT      := $FDF9
RAMTAS      := $FD8D

All other kernal entries are the same as the C64, however, without this change, the startup code fails.

Without this change the vic20.lib builds incorrectly.
2016-05-11 19:24:16 +09:30
Oliver Schmidt
f103617512 Use .macpack to include macro package. 2016-03-27 18:29:45 +02:00
Oliver Schmidt
e92f354740 Made use of recently added Apple scrcode macro. 2016-03-27 18:27:53 +02:00
Oliver Schmidt
c0e82f4200 Merge pull request #279 from greg-king5/atmos-reconfig
Convert the Atmos configuration to the new constructor segment model.
2016-03-27 00:36:05 +01:00
Oliver Schmidt
29d1400340 Allow _sys() to call ROM routines.
_sys() is supposed to be (primarily) intended to call ROM routines. Leveraging the "file overlay" mechanism of the cc65 build system allows to provide a Apple II specific _sys() implementation that temporarily switches in the ROM.
2016-03-25 21:57:06 +01:00
Greg King
7773fcb1e1 Converted the Atmos configuration to the new constructor segment model. 2016-03-18 11:28:56 -04:00
Oliver Schmidt
e3cbc7e8b8 Moved run location of ONCE segment.
Make the same changes to the Apple II that were done with 0ee9b2e446 to the C64.

Notes:
- The startup code deliberately doesn't make use of symbols defined for the LC segment as that segment is optional.
- The <...>-asm.cfg configs move the segment BSS to an own memory area BSS although this doesn't seem necessary. However the benefit is that the size of the memeory area MAIN is identical to the number of bytes loaded from disk into RAM. To keep this an invariant for all Apple II configs allows to simplify the EXEHDR to just refer to the symbols defined for MAIN.
2016-03-17 21:07:19 +01: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
a2c9cb021a Moved things into ONCE.
Code and or data used only during initialization belongs into the ONCE segment.
2016-03-15 22:55:36 +01:00
Oliver Schmidt
56a8c69b14 Use AX paradigm. 2016-03-13 21:23:45 +01:00
Oliver Schmidt
a3a22733f8 Cleaned up C64 linker configs.
The BSS segment and the ONCE segment share the same start address. So they need to be placed in two different memory areas.

So far BSS was placed in the MAIN memory area and ONCE was placed in an additional memory area. Both memory areas were written to the output file. They just "happened" to be loadable and runnable at a stretch.

Now ONCE is placed in the MAIN memory area and BSS is placed in an additional memory area. Only MAIN is written to the output file. It becomes more obvious that BSS is "just" defined to share memory with ONCE.
2016-03-13 14:32:07 +01:00
Oliver Schmidt
084453ba57 Don't presume the stack size to be a multiple of pages. 2016-03-10 10:07:09 +01:00
Oliver Schmidt
69fbcb30fd Use AX paradigm for stack initalization. 2016-03-07 01:44:19 +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
Oliver Schmidt
3d08abcfa8 Load INITBSS segment from disk.
Conceptually the INITBSS segment is not initialized in any way. Therefore it makes sense to not load it from disk. However the INIT segment has to be loaded from disk and therefore moved to its run location above the INITBSS segment. The necessary move routine increases runtime RAM usage :-(

Therefore we now "unnecessarily" load the INITBSS segment from disk too meaning that the INIT segment is loaded at its run location. Therefore there's no need for the move routine anymore.

After all we trade disk space for (runtime) RAM space - an easy decision ;-)

Notes:

- The code allowing to re-run a program without re-load present so far could not have worked as far as I can see as it only avoided to re-run the move routine but still tried to re-run the code in the INIT segment that was clobbered by zeroing the BSS. Therefore I removed the code in question altogether. I'm personally not into this "dirty re-run" but if someone wants to add an actually working solution I won't block that.

- INITBSS is intentionally not just merged with the DATA segment as ROM-based targets can't reuse the INIT segment for the BSS and therefore have no reason to place the INIT segment above INITBSS.

- Because ROM-based targets don't copy INITBSS from the ROM (like it is done with the DATA segment) all users of INITBSS _MUST_NOT_ presume INITBSS to be initialized with zeros!
2016-02-28 19:45:36 +01:00
Oliver Schmidt
54e09fdd03 Added basic frame for new target 'creativision'.
Kym Greenshields <kym.greenshields@gmail.com> has expressed interest
in contributing and maintaining support for the VTech CreatiVision system.

this resembles commit 8e6b8dd0af from oliver
2016-02-28 19:05:40 +01:00
Bob Andrews
a8d3b83c43 Merge pull request #7 from cvemu/master
Initial Creativision Import
2016-02-28 18:25:01 +01:00
Bob Andrews
25f4482641 Merge pull request #238 from mrdudz/gamate
Bit Corporation 'Gamate' support
2016-02-27 18:44:26 +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
silverdr
2bcdf32458 blackystardust pull request with post-review changes 2016-02-26 23:55:55 +01:00
Lauri Kasanen
a954e713ad nes: Fix reading the second controller
See
http://wiki.nesdev.com/w/index.php/Controller_port_registers
2015-12-14 19:28:53 +02:00
Oliver Schmidt
377f31d085 Fixed soft80 shutdown.
A call to $FDA3 cannot be used because it re-enables the BASIC ROM. If a large program (such as Contiki's webbrowser80) has destructor code or data "behind" that ROM, then the program might crash when it tries to quit gracefully. Changing that code to set CIA2_PRA works well enough.
2015-12-02 21:34:08 +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
mrdudz
8a499fdf4e fixup conio.c some more. also includes merge of upstream/master because git is retarded. 2015-12-02 00:13:32 +01:00
mrdudz
7de50b17c7 fix comments 2015-12-01 16:55:02 +01: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
mrdudz
a95c95a5d3 added black line :) 2015-11-30 18:49:52 +01: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
mrdudz
b39a8b7a61 more cleanup 2015-11-29 20:04:10 +01:00
mrdudz
c636675521 moved cart header into seperate file, moved nmi stub into several file, tweaked linker config 2015-11-29 16:01:36 +01:00
mrdudz
1893e24da9 updated 2015-11-29 01:24:01 +01:00
mrdudz
9fbf8a4299 conio and most other stuff working now 2015-11-29 01:14:59 +01:00
mrdudz
4a49b0c8f8 reset screen editor at shutdown 2015-11-22 19:20:58 +01:00
mrdudz
88e7b5776a some more fiddling 2015-11-22 19:02:47 +01:00
mrdudz
60285097e3 initial import of the gamate stuff 2015-11-14 13:15:29 +01:00
Oliver Schmidt
f70acd9f51 Merge pull request #227 from mrdudz/soft80syms
remove unneeded exports
2015-11-07 13:37:46 +01:00
mrdudz
54de8ac031 remove unneeded exports 2015-11-07 11:45:38 +01:00
Greg King
5e36315d05 Style changes. 2015-11-07 00:29:07 -05:00
Greg King
999d57401c Added a version of memset() that uses the HuC6280's TII instruction to get more speed. 2015-11-06 23:59:19 -05:00
Greg King
8180ac20d3 Added code to handle the special case of a zero-length move.
Added more tests of memcpy() and memmove().
2015-11-02 17:09:45 -05:00
Greg King
8e8d112029 Added pce-specific substitutes for memcpy() and memmove().
They are smaller and faster because they take advantage of the pce CPU's block-copy instructions.

Also, made a small improvement to the common memmove(), so that it is similar to the pce version.
2015-10-23 18:02:21 -04:00
mrdudz
8f8f12ceab use tii instead of copy loop to copy data section to ram 2015-10-22 19:48:21 +02:00
mrdudz
60334c40e6 added size optimized monochrom soft80 driver 2015-10-19 02:49:32 +02:00
mrdudz
d6d016bb80 updated comments 2015-10-19 02:47:40 +02:00
mrdudz
8263083506 move variables into INITBSS 2015-10-15 15:11:05 +02:00
mrdudz
63d4c93006 Merge remote-tracking branch 'upstream/master' into soft80 2015-10-15 15:07:44 +02: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
mrdudz
b9c688d997 remove deleted function from comment 2015-10-14 17:52:14 +02:00
mrdudz
e6f5c7d8da some comments 2015-10-14 17:50:44 +02:00
mrdudz
f391c1c3d5 remove soft80_bordercolor override 2015-10-14 17:33:58 +02:00
mrdudz
59dd15aa55 split regular color.s into color.s and bordercolor.s 2015-10-14 17:25:35 +02:00
mrdudz
c708031374 use 'soft80_internal_cellcolor' for the current cell color, and CHARCOLOR for the actual textcolor 2015-10-14 17:24:16 +02:00
Oliver Schmidt
023b461bb8 According to the contributor the VGA data is accessed only by the constructor. 2015-10-14 11:50:54 +02:00
Oliver Schmidt
8f67dd5cc7 Merge pull request #215 from greg-king5/c64-init
Save space by using the apple2 target's INIT overlay scheme on the c64 target.
2015-10-14 10:43:11 +02:00
mrdudz
08d7eefdd7 another size optimization, make bgcolor() much more robust 2015-10-13 04:14:04 +02:00
mrdudz
f462c173fb move some stuff to init segment, saves roughly 1480 bytes :) 2015-10-12 23:39:47 +02:00
mrdudz
362a172477 remove chline/cvline dupes 2015-10-12 21:23:27 +02:00
mrdudz
f876ff4c09 Merge remote-tracking branch 'upstream/master' into soft80 2015-10-12 21:13:32 +02:00
Oliver Schmidt
5e960d106e Allow to override chars used for horizontal and vertical lines. 2015-10-12 21:04:06 +02:00
mrdudz
d6f48629ad export mouse driver related symbols 2015-10-12 21:02:48 +02:00
mrdudz
5840d1c08c increase conio constructor priority 2015-10-12 20:46:53 +02:00
mrdudz
df3549f502 Merge remote-tracking branch 'upstream/master' into soft80 2015-10-12 20:43:19 +02:00
mrdudz
57a43b6735 style issues 2015-10-12 20:38:06 +02:00
Oliver Schmidt
08efc299ff Allow to override mouse sprite location data. 2015-10-12 20:18:13 +02:00
mrdudz
e9f0b7943e some renaming, preparing plot table names 2015-10-12 19:57:33 +02:00
mrdudz
bf3ea5328f inverted result for checkchar, saving some bytes and cycles 2015-10-12 19:03:50 +02:00
mrdudz
4557e8d004 optimize charcode conversion, shorter and faster now :) 2015-10-12 18:53:55 +02:00
mrdudz
aed0549760 remove some commented out code 2015-10-12 18:09:50 +02:00
mrdudz
ead9950044 some code shuffling to get rid of long branches 2015-10-12 18:01:48 +02:00
mrdudz
cf8b21b27e size optimization 2015-10-12 17:12:44 +02:00
mrdudz
bc85d90468 check for space bottom up, which is faster for the average case 2015-10-12 16:15:40 +02:00
mrdudz
a2b514a7cf fix some style issues 2015-10-12 15:54:08 +02:00
mrdudz
21732e3c5b maintain lsb of cursor x position internally, saves some bytes and some cycles too :) 2015-10-12 15:44:41 +02:00
mrdudz
2a0f6c420b moved bordercolor function into a seperate file 2015-10-12 15:18:36 +02:00
mrdudz
7f2df8e8e6 move internal text/bgcolor variables into the file that also contains the init code for them. also rename them to avoid namespace pollution 2015-10-12 15:04:55 +02:00
mrdudz
07f1879f85 added some more comments and -headers 2015-10-12 14:40:12 +02:00
mrdudz
d8d7f53d1b move charset to seperate file again, added comments on charset layout 2015-10-11 17:13:28 +02:00
Oliver Schmidt
c4966ac6a6 Fixed stupid adressing mode bug.
Thanks Greg for pointing out :-)
2015-10-10 11:15:43 +02:00
mrdudz
03c6af3e15 rewrote color voodoo 2015-10-09 23:39:37 +02:00
Oliver Schmidt
ccc7c2b1f9 Minor style adjustment. 2015-10-09 22:18:51 +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
8c609dd931 Explained why two variables were moved out of the BSS segment. 2015-10-09 12:00:41 -04:00
Oliver Schmidt
f21e3ae895 According to the contributor the prio wasn't intentionally set. 2015-10-09 13:42:25 +02:00
mrdudz
0b9d67d8a8 use default prio for the constructor 2015-10-09 13:40:10 +02:00
mrdudz
f712e9448a some cleanup/rework 2015-10-09 13:34:23 +02:00
mrdudz
e54ad81ce8 some more rework, second attempt on fixing the color issues. added ifdefs to disable the color voodoo alltogether for debugging purposes. 2015-10-08 20:43:25 +02:00
Greg King
ca70700a0b Restored the old C-stack initiation code.
I had forgotten that the stack must be put below the CBM overlays.
2015-10-08 06:04:49 -04:00
Greg King
8a880580dc Reduced the size of the moveinit subroutine.
Made other changes that were recommended by Oliver.
* Changed its name from move_init to moveinit.
* Used self-modifying code in the subroutine.
* The INIT segment doesn't need to be optional (it's used by the start-up file).
2015-10-07 14:56:14 -04:00
mrdudz
67dabb8489 attempted fix for the color problem noticed by oliver 2015-10-06 20:18:40 +02:00
mrdudz
ee54f7f40c optimized clrscr for size 2015-10-06 19:33:43 +02:00
Greg King
074e10d288 Adapted, to the c64 target, the INIT-segment overlay scheme from the apple2 targets.
When a program starts running, INIT is moved from one place to another place.  Then, INIT's code is executed; and, the first place is re-used for variables.  After the INIT code has finished, the second place can be re-used by the heap and the C stack.  That means that initiation code and data won't waste any RAM space after they stop being needed.
2015-10-05 05:47:43 -04:00
mrdudz
23473641f4 fix clrscr so it doesnt wipe sprite pointers 2015-10-01 17:16:02 +02:00
mrdudz
5ea842b88b SCREEN->screensize 2015-10-01 15:03:11 +02:00
Greg King
6217f8fa3a Made the Commodore version of exec() work in programs that are so big that they load into all of BASIC RAM.
The function won't cause an "out of memory" error.
2015-09-28 11:27:39 -04:00
mrdudz
4949836d16 fixed kplot 2015-09-28 17:12:20 +02:00
mrdudz
841d764a83 some cleanup, checked usage of __bgcolor and __textcolor 2015-09-28 16:10:11 +02:00
mrdudz
7486923c17 dont use seperate file for charset data 2015-09-28 15:57:16 +02:00
mrdudz
6cc654cca8 added extra check for graphical chars 2015-09-28 15:10:57 +02:00
mrdudz
257183fa55 removed duplicate copy of charset and shift it at init time, saves 1k 2015-09-27 19:34:43 +02:00
mrdudz
c221fe22f6 prepend soft80_ to some more internally used functions 2015-09-27 19:10:06 +02:00
mrdudz
b5a6578dca include bitmap and vram row tables directly rather than generating them (saves space) 2015-09-27 18:49:30 +02:00
mrdudz
fba28f46f6 fix initial text- and background colors 2015-09-27 18:36:53 +02:00
mrdudz
9e08c53b01 initial commit of soft80 implementation 2015-09-27 18:12:25 +02:00
Greg King
b82bb4f5ba Moved two errno helper functions into separate files.
Only the function that actually is needed will be linked.  It is very useful for targets that do not have file-system I/O.
2015-09-25 14:06:58 -04:00
Oliver Schmidt
b2657ecef5 Merge pull request #177 from mrdudz/pcenginetarget
new target: PC Engine (TurboGrafx16)
2015-09-24 09:58:28 +02:00
mrdudz
7d453a72fb use 'plot' instead of 'PLOT' 2015-09-20 12:18:41 +02:00
mrdudz
296489ba6c added interruptor support 2015-09-19 15:55:43 +02:00
mrdudz
859604407b fixed more flaws found by greg :) 2015-09-19 15:37:39 +02:00
Oliver Schmidt
45313075fe Merge pull request #208 from greg-king5/big-jump
Improve the longjmp() and setjmp() functions.
2015-09-11 21:06:50 +02:00
Greg King
dbf0adcec9 Improved longjmp() and setjmp(). 2015-09-11 14:18:22 -04: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
mrdudz
088a25437d fixed VDC register assignments 2015-09-07 12:55:36 +02:00
mrdudz
af2ba26c62 fix gregs complaints :) 2015-09-04 14:14:17 +02:00
mrdudz
d0a1dc73b8 Merge remote-tracking branch 'upstream/master' into pcenginetarget 2015-09-04 13:40:52 +02:00
mrdudz
57b8af1adc style fixes 2015-08-29 15:58:57 +02:00
Greg King
9c55bd1c96 Fixed bugs in the interface for C-level interrupt handlers.
* Added an important ".code" directive.

* Import a linker-created zero-page symbol as an absolute address; then, convert it to zero-page when it is used.

Fixes bug report #198.
2015-08-26 19:33:34 -04:00
Oliver Schmidt
657cc003be Merge pull request #184 from greg-king5/fastcall
Update some fastcall info.
2015-07-23 17:11:49 +02:00
Greg King
52eec1f236 Updated the fastcall information in a document and two Assembly files. 2015-07-22 13:31:14 -04:00
Oliver Schmidt
673b27cc1b Added empty IRQ backend.
The driver kernels all require IRQ handling even if the actual drivers don't make use of it. So in order to successfully link a NES program using the joystick and/or TGI driver there has to be at least a "dummy" IRQ backend.
2015-07-22 11:36:54 +02:00
mrdudz
0e29a0993f Merge remote-tracking branch 'upstream/master' into pcenginetarget 2015-07-20 18:42:04 +02:00
mrdudz
313d2dd210 added missing chline, cvline 2015-07-19 18:06:16 +02:00
Greg King
a9982de475 Added _directerrno() to the sim6502/sim65c02 libraries. 2015-07-18 18:23:08 -04:00
Greg King
0b6bcb565e Fixed a hardware-stack leak. 2015-07-17 20:36:56 -04:00
mrdudz
996c7b493e moved all notes into regular documentation 2015-07-16 21:39:13 +02:00
mrdudz
e77060458a fixed joypad bits 2015-07-16 20:15:05 +02:00
mrdudz
3119be2a1e added some cbm-like gfx chars to draw lines and boxes 2015-07-16 17:33:00 +02:00
mrdudz
d229d51be5 make sure clocktick starts at zero 2015-07-16 16:54:40 +02:00
mrdudz
21ef6b8510 fixed screensize, timertick, revers mode 2015-07-16 16:00:32 +02:00
mrdudz
1414411bba added waitvblank and fixed get_tv 2015-07-15 19:46:26 +02:00
mrdudz
c3d45e4c47 fixed issues found by gregg 2015-07-15 13:18:12 +02:00
mrdudz
ac27ed301a _tickcount -> tickcount 2015-07-14 19:55:41 +02:00
mrdudz
83391ab67c some more tweaking, added docs page 2015-07-14 17:22:47 +02:00
mrdudz
515a61a302 added imports for conio init to conio functions, so the constructor will get linked and called automatically 2015-07-13 12:10:09 +02:00
mrdudz
9e1d39a409 more cleanup and fixing 2015-07-12 16:40:52 +02:00
mrdudz
891cb97b2f more cleanup, joystick works again 2015-07-12 14:27:24 +02:00
mrdudz
21999b081f simple conio test works again 2015-07-12 10:32:55 +02:00
mrdudz
877fd532c2 Merge remote-tracking branch 'upstream/master' into pcenginetarget 2015-07-11 13:05:26 +02:00
Greg King
146daa1d0a Made some string output functions reject an invalid NULL buffer pointer. 2015-07-09 14:46:28 -04:00
Greg King
219905c6bc Fix two string output functions' handling of their buffer-size parameter.
That parameter's type is unsigned; but, the functions return an int.  If the size is too big for a signed integer, then return an error code.
If the size is zero, then don't write anything into a buffer (the buffer pointer may be NULL).  But, do format and count the arguments.
2015-07-09 10:43:45 -04:00
Greg King
08e18c93c5 Added explicit settings of calling conventions in pointer-to-function declarations in system and library headers. 2015-06-22 00:15:48 -04:00
Oliver Schmidt
fe023a1218 Merge pull request #151 from greg-king5/fastcall
Make __fastcall__ be the default calling convention.
2015-05-26 22:39:33 +02:00
Oliver Schmidt
0f1c3b0181 Fixed comment. 2015-04-27 09:39:50 +02:00
Oliver Schmidt
1748bb1ab6 Use well-known location BLTU2 for "memmove()". 2015-04-26 14:09:21 +02:00
Oliver Schmidt
3c1cd0d867 Added cmdline support to exec().
The starting point is the CALL2051:REM <cmdline> approach. It uses the BASIC input buffer at $200. ProDOS stores the name of the loaded program at $280 (which we want for argv[0]) leaving us with 128 char buffer. If we run the program via exec() we don't need the CALL2051 but only the REM token (which is just one char). So have a maximum cmdline length of 126 (plus a terminating zero).

There's no specification for ProDOS BIN file cmdline parameters so exec() just supports the CALL2051:REM <cmdline> approach. In contrast ProDOS SYS files allow for a 'startup filename'. A ProDOS filename is short than 126 chars so having exec() general cut the cmdline after 126 chars seems reasonable. If the SYS file we exec() allows for less we cut the cmdline further.

Our 'loader.system' SYS file however allows for an unusually 126 char long "startup filename" as it is targeted towards cc65 BIN porgrams with their 126 cmdline length.
2015-04-26 14:09:20 +02:00
Oliver Schmidt
ae4f9336b3 Behave more like BASIC.SYSTEM and allow for argv[0]. 2015-04-19 21:59:05 +02:00
Oliver Schmidt
24e902059c Allow up 127 chars of cmdline for programs started by the loader. 2015-04-19 21:17:46 +02:00
Stephan Mühlstrasser
7fb206e381 Macro-based implementation of screen layout configuration modules. 2015-03-23 19:02:45 +01:00
Stephan Mühlstrasser
8b10534429 Improved fix with suggestions by Greg King. 2015-03-15 00:40:42 +01:00
Stephan Mühlstrasser
4836cf9842 Fix bad tabbing 2015-03-14 00:06:00 +01:00
Stephan Mühlstrasser
72a9e331e3 Fixed uninitialized use of low byte of address "load". 2015-03-14 00:01:12 +01:00
Greg King
38231a5cc6 Made _afailed() and uncompress() be fastcall functions. 2015-03-13 07:35:47 -04:00
Greg King
66d79da3c2 Made cbm_load() be a fastcall function. 2015-03-13 05:46:40 -04:00
Greg King
a798b1d648 Made __fastcall__ be the default calling convention for non-variadic functions. 2015-03-10 05:53:52 -04:00
Greg King
9dbce378fe Described how to change the boot loader's actions. 2015-03-08 10:06:00 -04:00
Greg King
2d50267bd8 Added a second OSI C1P program file format.
Unlike the first format, the new format is already loadable; it doesn't need to be converted.
2015-03-07 16:39:44 -05:00
Stephan Mühlstrasser
981ab10fac Replaced magic numbers with symbolic constants. 2015-03-01 20:53:57 +01:00
Stephan Mühlstrasser
1d6aa84d9a Optimization by replacing absolute with relative jump. 2015-02-28 20:29:08 +01:00
Stephan Mühlstrasser
4737ad93d5 Temporarily undo the 25 line change.
This is not yet consistent with the first visible character on
the screen.
2015-02-25 23:50:02 +01:00
Stephan Mühlstrasser
52865410d2 Fix wrong expression for top of C stack.
Thanks to Greg King for this fix.
2015-02-25 23:48:57 +01:00
Stephan Mühlstrasser
8deeb2c59e Match screen dimensions as in BASIC.
Experiments show that under BASIC by default
25 rows by 24 columns are used. 24 columns is
also the width that is fully displayed on a real
C1P on the monitor. conio now matches that now.
2015-02-23 23:07:00 +01:00
Stephan Mühlstrasser
772a98d1ec Merge branch 'c1p_kbhit' into c1p_scrsize 2015-02-23 19:17:54 +01:00
Stephan Mühlstrasser
83f16425c9 Loading A once before the loop is sufficient. 2015-02-23 19:17:27 +01:00
Stephan Mühlstrasser
cc2dc578fe Merge branch 'c1p_kbhit' into c1p_scrsize 2015-02-23 19:11:50 +01:00
Stephan Mühlstrasser
73ae95bd1c Clear bottom line when scrolling.
Fix provided by Jeff Tranter.
2015-02-23 19:06:22 +01:00
Stephan Mühlstrasser
c3b014560e Consistent naming for screen dimension constants. 2015-02-22 19:55:19 +01:00
Stephan Mühlstrasser
a7dabcda47 Define the screen dimension defines in a more meaningful way. 2015-02-22 16:27:13 +01:00
Stephan Mühlstrasser
965aded1ba Merge branch 'c1p_kbhit' into c1p 2015-02-22 11:45:02 +01:00
Stephan Mühlstrasser
7a975fa182 Mask control keys from first keyboard scan row. 2015-02-21 22:52:01 +01:00