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

3163 Commits

Author SHA1 Message Date
jede
ee7514fea2 Remove BASHEAD segment which is not useful 2018-10-19 23:43:40 +02:00
Christian Groessler
df3c43bede Atari: implement clock_getres() 2018-09-28 09:47:20 +02:00
Christian Groessler
6dc7309e50 Atari: add support for BW-DOS. Initially contributed by Daniel Serpell. 2018-09-27 17:37:59 +02:00
Christian Groessler
9c7cccf3e5 Atari: clock_gettime() and clock_settime() implementations
They are using SpartaDOS-X interfaces and are therefore only working
in this environment.
2018-09-25 21:11:05 +02:00
Christian Groessler
118bc996fb libsrc/atari/getdefdev.s: small comment change 2018-09-20 23:58:23 +02:00
Christian Groessler
d52d986aca libsrc/atari/getdefdev.s: small optimization and fix a typo 2018-09-14 16:54:20 +02:00
Christian Groessler
4691974466 Atari: Make a good "default device" on AtariDOS (2.0 and 2.5) and MyDOS.
The default device will be the one the program was loaded from instead of
always D1:.
2018-09-13 22:33:54 +02:00
Christian Groessler
08d164a811 fix comment in last change 2018-09-12 01:20:12 +02:00
Christian Groessler
e4e3dbf756 atarixl: check at startup whether RAM beneath the ROM is in use
If detected, the program refuses to run, preventing a crash.
The check only works with SpartaDOS. I don't have an overview which
DOSes potentially use the RAM under the ROM. Or which other installed
programs might use it.

No additional runtime memory space is consumed, since the change
is in the "system check" load chunk which gets replaced by the
user program during loading.
2018-09-12 01:05:52 +02:00
Oliver Schmidt
a9a102b0e8 Protect random counter against ProDOS.
Although documented nowhere (!!!) ProDOS trashes the random counter locations $4E/$4F. Is discovered this because my TCP connections didn't have random local ports.

It's a really funny coincidence that David Finnigan discovered only 3 years ago the very same issue because of the very same reason: https://groups.google.com/forum/#!topic/comp.sys.apple2.programmer/1ciep_Oetvo
2018-09-08 23:29:59 +02:00
Oliver Schmidt
cddc4da3bb Just removed some trailing spaces. 2018-09-08 23:14:54 +02:00
Oliver Schmidt
73faf60fe0 Support randomize().
In order to have randomize() work as expected (and the Apple II random number generation in general) it is necessary to update the random counter during keypress wait just like the ROM function does.
2018-09-08 18:45:20 +02:00
Christian Groessler
b6ccd4d5d4 Atari: RealDOS adaptations
RealDOS is a SpartaDOS clone. Handle it the same way as SpartaDOS.
2018-09-06 15:55:07 +02:00
Christian Groessler
e9b8f5d814 Atari: Add detection of RealDOS (http://www.realdos.net/realdos.html). 2018-09-06 12:08:50 +02:00
Christian Groessler
1cc4fa9356 Atari: fix interrupt handling if extended memory is banked in
Extendend memory is mapped over the main memory in the 0x4000..0x7FFF
area. Many DOSes disable interrupts while extended memory is banked in,
but not all (e.g. SpartaDOS-X).
This change modifies the initial interrupt handler to map in main memory
before chaining to the "worker" handlers.
Since the initial interrupt handler uses a data segment to store the
trampoline to chain to the original handler, introduce a new "LOWBSS"
segment to hold this trampoline. Otherwise the trampoline may end up
inside the 0x4000..0x7FFF area.

Add a link time warning if "LOWCODE" segment lays within the extended
memory window.
2018-09-05 11:28:15 +02:00
Christian Groessler
d199ca1460 Atari, Atari5200: disable "attract mode" on mouse or joystick input
Fixes #736.
2018-09-05 11:23:12 +02:00
Oliver Schmidt
70a131e09a Just a minor comment improvement. 2018-09-02 23:07:26 +02:00
Greg King
39694d0aaa Fixed bugs; and, improved the efficiency of some pce library functions. 2018-08-30 11:48:46 +02:00
Greg King
959eff34a3 Fixed and improved some pce comments. 2018-08-30 11:48:46 +02:00
Greg King
2cc822b44e Fixed some mistakes (mostly in the documentation). 2018-08-30 11:48:46 +02:00
Greg King
b5d939c858 Style changes. 2018-08-30 11:48:46 +02:00
Greg King
203200e259 Used I/O mirror locations that avoid (redirected) zero-page accesses. 2018-08-30 11:48:46 +02:00
Greg King
f2d2f3c193 Moved the NES font into its own object module.
It can be replaced by a custom font when a program is built.
2018-08-29 12:13:58 -04:00
greg-king5
a08192b53e
Merge pull request #706 from xlar54/master
* tgi driver for c128 VIC-II

* Made the VIC-IIe TGI driver put its bitmap behind the ROMs.

* c128-hi.tgi doc
2018-08-29 10:34:05 -04:00
Christian Groessler
2d4210b309 Atari5200 joystick driver: enable POT input.
The "Atari800" emulator doesn't emulate this aspect, therefore the problem
wasn't noticed before.
2018-08-24 17:04:31 +02:00
Stefan
f3ef819b43 Update crt0.s 2018-08-21 12:21:56 +02:00
Stefan
3ae5161636 CMOS optimisation 3rd
"The decimal flag D is cleared" [...]
http://shu.emuunlim.com/download/pcedocs/pce_cpu.html
2018-08-21 12:21:56 +02:00
Stefan
199226d089 Update irq.s 2018-08-20 22:31:08 +02:00
Stefan
e335b50ed1 CMOS optimisation
The Lynx CPU always cleared the flag.
2018-08-20 22:30:41 +02:00
Patrick Pelletier
b37d0a444c lseek: Return EINVAL if new position is less than 0 or greater than 2^24 - 1.
Also, implemented @greg-king5's suggestion to save a byte on error paths.
2018-08-20 22:24:48 +02:00
Patrick Pelletier
59a4ab8778 lseek: Implement additional feedback from PR #723.
* Check CPU_ISET_65SC02 rather than APPLE2ENH.
* Set sreg and sreg+1 to $FF on error, to return -1 as a long.
2018-08-20 22:24:48 +02:00
Patrick Pelletier
8cb930b50e lseek: use STZ for APPLE2ENH
(As suggested in pull request.)
2018-08-20 22:24:48 +02:00
Patrick Pelletier
68a115cacf Fix ftell() on Apple II to return the correct value.
Fixes this issue:
https://github.com/cc65/cc65/issues/722

ftell() returns the value returned by lseek(), and lseek() for the
Apple II wasn't returning a value.
2018-08-20 22:24:48 +02:00
Oliver Schmidt
1644bcdf03 Implemented line wrap.
According to https://github.com/cc65/wiki/wiki/Direct-console-IO it is undefined what happens when the end of the sceen is reached. But it is _not_ undefined what happens when the end of the line is reached. So implement the usual thing - which was easy enough to do after all.
2018-08-20 00:30:17 +02:00
Oliver Schmidt
f8c6c58373 Made Apple II CONIO more flexible.
Originally the Apple II had a 64 char set and used the upper two bits to control inverse and blinking. The Apple //e brought then an alternate char set without blinking but more individual chars. However, it does _not_ contain 128 chars and use the upper bit to control inverse as one would assume. Rather it contains more than 128 chars - the MouseText chars. And because Apple wanted to provide as much backward compatibility as possible with the original char set, the alternate char set has a rather weird layout for chars > 128 with the inverse lowercase chars _not_ at (normal lowercase char + 128).

So far the Apple II CONIO implementation mapped chars 128-255 to chars 0-127 (with the exception of \r and \n). It made use of alternate chars > 128 transparently for the user via reverse(1). The user didn't have direct access to the MouseText chars, they were only used interally for things like chline() and cvline().

Now the mapping of chars 128-255 to 0-127 is removed. Using chars > 128 gives the user direct access to the "raw" alternate chars > 128. This especially give the use direct access to the MouseText chars. But this clashes with the exsisting (and still desirable) revers(1) logic. Combining reverse(1) with chars > 128 just doesn't result in anything usable!

What motivated this change? When I worked on the VT100 line drawing support for Telnet65 on the Apple //e (not using CONIO at all) I finally understood how MouseText is intended to be used to draw arbitrary grids with just three chars: A special "L" type char, the underscore and a vertical bar at the left side of the char box. I notice that with those chars it is possible to follow the CONIO approach to boxes and grids: Combining chline()/cvline() with special CH_... char constants for edges and intersections.

But in order to actually do so I needed to be able to define CH_... constants that when fed into the ordinary cputc() pipeline end up as MouseText chars. The obvious approach was to allow chars > 128 to directly access MouseText chars :-)

Now that the native CONIO box/grid approach works I deleted the Apple //e proprietary textframe() function that I added as replacement quite some years ago.

Again: Please note that chline()/cvline() and the CH... constants don't work with reverse(1)!
2018-08-20 00:30:17 +02:00
Greg King
7b8d4b28c7 Fixed the system banking in the cbm510 and the cbm610 targets' versions of clock_gettime() and clock_settime().
Their library function calls must run in the execution bank.
2018-08-19 17:12:54 -04:00
Oliver Schmidt
03a99569e3 Optimize for size. 2018-08-19 14:35:30 +02:00
Oliver Schmidt
250e4ed9e0 Added dummy clock_settime() for the Atari.
Allow to build ip65/date65.
2018-08-18 01:36:56 +02:00
Oliver Schmidt
fe5af26f9f Express assumption about struct timespec.
We basically cast a struct timespec pointer to a time_t pointer when we pass the clock_settime() paramter to localtime(). Explicitly express that in the source code.
2018-08-18 01:29:40 +02:00
Oliver Schmidt
eb9872c684 Added clock_settime() for some CBMs.
The CIA TOD only stores the time but not the date. Therefore the date set by clock_settime() ist just stored inside the C library for retrieval via clock_gettime().

The "very special" handling of 12AM/PM is based on https://groups.google.com/d/msg/comp.sys.cbm/ysVYSX4AMbc/vHrXCWEhCOUJ saying:

==========

24hr: Wr => Rd => Nx
--------------------
  0 : 92 => 12 => 01   <= Switch from 00 to 01 (24-hour notation)
  1 : 01 => 01 => 02
  2 : 02 => 02 => 03
 11 : 11 => 11 => 92
 12 : 12 => 92 => 81   <= Switch from 12 to 13 (24-hour notation)
 13 : 81 => 81 => 82
 14 : 82 => 82 => 83
 23 : 91 => 91 => 12

1. column ("24hr"): hour to be tested (decimal)
2. column ("Wr"):   hour written to TOD register (BCD)
3. column ("Rd"):   hour read from TOD register (BCD) immediately after writing the value in column 2 to see the conversion between AM/PM, if any
4. column ("Nx"):   next hour (BCD) after the hour switch

==========

Thanks Paul!
2018-08-18 01:29:40 +02:00
Oliver Schmidt
cb7ec508f6 Fixed 12 AM/PM handling.
Midnight is 12 AM and noon is 12 PM (see https://en.wikipedia.org/wiki/12-hour_clock). Therefore we need to subtract 12 hours in exactly those two hours.
2018-08-18 01:29:40 +02:00
Patrick Pelletier
411a5a9483 Don't pass mode argument to open() from _fopen().
It isn't necessary, since paravirt.c has a default if the mode isn't
pushed onto the stack.
2018-08-17 23:28:45 +02:00
Patrick Pelletier
aba320eade Allow "mode" argument to open() to be passed from 6502 code.
Implements this suggestion:
https://github.com/cc65/cc65/pull/719#issuecomment-413809096
2018-08-17 23:28:45 +02:00
Oliver Schmidt
f40dcb5883 Added clock_getres() / clock_settime() for the Apple II.
The situation on the Apple II is rather special: There are several types of RTCs. It's not desirable to have specific code for all of them. As the OS supports file timestamps RTC owners usually use OS drivers for their RTC. Those drivers read the RTC and write the result in a "date/time location" in RAM. The OS reads the date/time from the RAM location. If there's no RTC the RAM location keeps containing zeros. The OS uses those zeros as timestamps and the files show up in a directory as "<NO DATE>".

There's no common interface to set RTCs so if an RTC _IS_ present there's just nothing to do. However, if there's _NO_ RTC present the user might very well be interest to "manually" set the RAM location in order to have timestamps. But he surely doesn't want to manually set the RAM location over an over again. Rather he wants to set it just once after booting the OS.

From that perspective it makes most sense to not set both the date and the time but rather only set the date and have the time just stay zero. Then files show up in a directory as "DD-MON-YY  0:00".

So clock_settime() checks if the current time equals 0:00. If it does _NOT_ then an RTC is supposed to be active and clock_settime() fails with ERANGE. Otherwise clock_settime() ignores sets the date - and completely ignores the time provided as parameter.

clock_getres() too checks if the current time equals 0:00. If it does _NOT_ then an RTC is supposed to be active and clock_getres() returns a time resolution of one minute. Otherwise clock_getres() presumes that the only one who sets the RAM location is clock_settime() and therefore returns a time resolution of one day.
2018-08-15 21:34:35 +02:00
Oliver Schmidt
326ca263c9 Minor style fix. 2018-08-15 19:40:56 +02:00
Oliver Schmidt
59a8149556 Added clock_getres() for CBMs.
All CBMs have a clock (CIA TOD) resolution of 1/10 second.
2018-08-15 19:40:27 +02:00
Oliver Schmidt
842c151edd Replaced _systime with clock_gettime.
We want to add the capability to not only get the time but also set the time, but there's no "setter" for the "getter" time().

The first ones that come into mind are gettimeofday() and settimeofday(). However, they take a struct timezone argument that doesn't make sense - even the man pages says "The use of the timezone structure is obsolete; the tz argument should normally be specified as NULL." And POSIX says "Applications should use the clock_gettime() function instead of the obsolescent gettimeofday() function."

The ...timeofday() functions work with microseconds while the clock_...time() functions work with nanoseconds. Given that we expect our targets to support only 1/10 of seconds the microseconds look preferable at first sight. However, already microseconds require the cc65 data type 'long' so it's not such a relevant difference to nanoseconds. Additionally clock_getres() seems useful.

In order to avoid code duplication clock_gettime() takes over the role of the actual time getter from _systime(). So time() now calls clock_gettime() instead of _systime().

For some reason beyond my understanding _systime() was mentioned in time.h. _systime() worked exactly like e.g. _sysremove() and those _sys...() functions are all considered internal. The only reason I could see would be a performance gain of bypassing the time() wrapper. However, all known _systime() implementations internally called mktime(). And mktime() is implemented in C using an iterative algorithm so I really can't see what would be left to gain here. From that perspective I decided to just remove _systime().
2018-08-15 16:06:44 +02:00
Oliver Schmidt
55a07c1dcd Removed stray /t char. 2018-08-15 16:06:44 +02:00
Oliver Schmidt
bbed9fdb63 Fixed typo. 2018-08-15 16:06:44 +02:00
Oliver Schmidt
a9ce4dc76c "Inverted" time_t value handling.
So far time_t values were interpreted as local time values. However, usually time_t values are to be interpreted as "seconds since 1 Jan 1970 in UTC". Therefore all logic handling time_t values has to be changed.

- So far gmtime() called localtime() with an adjusted time_t, now localtime() calls gmtime() with an adjusted time_t.
- mktime() has to do "the opposite" of localtime(), to keep it that way mktime() does now the inverse adjustment made by localtime().
- All currently present time() implementations internally call mktime() so they don't require individual adjustments.
2018-08-02 17:12:12 +02:00
Greg King
5e67eee362 Made the VIC-IIe TGI driver put its bitmap behind the ROMs. 2018-07-29 23:46:03 -04:00
Greg King
e6fc904e3c Fixed some code, to adapt to register-use changes caused by pull request #652. 2018-07-27 09:21:31 -04:00
Oliver Schmidt
e86a7db18b Some minor cleanups. 2018-07-26 14:35:26 +02:00
Oliver Schmidt
e949a3e642 Fixed regression introduced by https://github.com/cc65/cc65/pull/652. 2018-07-26 14:31:17 +02:00
IrgendwerA8
c9869c1a26 Quick fix for missing _div() adaptation after 95223be. 2018-07-26 10:44:22 +02:00
Scott Hutter
1981af0bbd tgi driver for c128 VIC-II 2018-07-23 15:54:15 -05:00
Olli Savia
fdce8fb34d Added a blank line between .include statements and .import/.export statements 2018-07-04 17:40:28 +03:00
Olli Savia
f7636fe8f2 Removed .import for std kernal entries. Added .include "cbm.inc" 2018-07-03 22:47:42 +03:00
Olli Savia
032a3877e0 Added .import for std kernal entries 2018-07-03 22:44:59 +03:00
Olli Savia
3e94f7f55c Moved C128 specific definitions to cbm_kernal.inc 2018-07-01 09:58:39 +03:00
Olli Savia
820c0efcb3 Use common include file cbm_kernal.inc 2018-07-01 09:56:37 +03:00
Olli Savia
4c45de2c45 Updated comment 2018-07-01 09:54:39 +03:00
Olli Savia
635a99c083 TAB to space conversion 2018-06-30 16:25:43 +03:00
Olli Savia
d5bc751f54 Removed RAMTAS 2018-06-29 22:59:53 +03:00
Olli Savia
96e6a0a114 Common include file is now cbm_kernal.inc 2018-06-29 22:58:16 +03:00
Olli Savia
42e9b971c5 Merge remote-tracking branch 'upstream/master' into cbmkernal_stage2 2018-06-29 22:50:02 +03:00
Olli Savia
f7fbac4c6b Use common include file cbmkernal.inc 2018-06-27 21:39:24 +03:00
Oliver Schmidt
86945a1270
Merge pull request #687 from polluks/patch-12
Smaller driver code
2018-06-21 22:37:29 +02:00
Stefan
6a70d1dab1
Removed unused label 2018-06-21 20:30:14 +00:00
greg-king5
4980fade74
Made LINE plot single-point lines correctly. 2018-06-21 08:18:53 -04:00
Stefan
23534beaa6
Smaller driver code 2018-06-21 00:25:33 +00:00
Fabrizio Caruso
9af2d6b4a1 spaces instead of tab 2018-06-06 21:18:47 +02:00
Fabrizio Caruso
e626180b28 Fix joystick for the Supervision target 2018-06-06 21:11:17 +02:00
Greg King
6d87370881 Fixed strpbrk().
Added its prototype.  Documented it.
2018-05-29 14:29:50 -04:00
IrgendwerA8
465a651090 Free 2 bytes again. 2018-05-29 01:51:24 +02:00
IrgendwerA8
f55b564ca1 Save the three bytes for the plus4 too. 2018-05-27 00:10:58 +02:00
IrgendwerA8
30a679ba36 Saved 3 bytes for the C16 target. 2018-05-26 20:30:38 +02:00
IrgendwerA8
49a9b88734 Saved even one more byte. 2018-05-26 19:53:44 +02:00
IrgendwerA8
e77ac8a230 1 byte donation for Fabrizio ;) 2018-05-26 16:37:03 +02:00
Oliver Schmidt
95223be101
Merge pull request #663 from IrgendwerA8/more_popptr1_adaptations
Adapted div & mod for popptr1.
2018-05-26 13:01:27 +02:00
IrgendwerA8
8a5d1b9674 Reestablished entry state of signed operation and optimized that (again). 2018-05-25 23:52:42 +02:00
IrgendwerA8
ba5b580368 Fixed first letter of comments (should be upper case). 2018-05-25 16:10:16 +02:00
Oliver Schmidt
0b323f717b
Update symbols.txt 2018-05-25 14:48:20 +02:00
Oliver Schmidt
0138e110cc
Merge pull request #662 from Compyx/master
Add CBM kernal call SECOND to CBM library (see issue #525)
2018-05-25 14:00:36 +02:00
IrgendwerA8
71420223bc Changed the name of the file too. 2018-05-24 11:37:17 +02:00
IrgendwerA8
9c1cb0801c Changed naming absvaludiv -> absvaludiv16. 2018-05-24 11:31:43 +02:00
IrgendwerA8
dd411efd1c Adapted div & mod for popptr1. 2018-05-24 03:55:40 +02:00
compyx
8ffe623e74 Add CBM kernal call SECOND to CBM library (see issue #525) 2018-05-23 17:32:02 +02:00
Oliver Schmidt
9246b14f68
Merge pull request #658 from polluks/patch-9
Indicate a dummy outtext & some clean-up
2018-05-23 17:05:12 +02:00
Oliver Schmidt
746e3d1454
Merge pull request #656 from Compyx/master
Add CBM kernal call TKSA to CBM library (see issue #525)
2018-05-23 09:47:41 +02:00
Oliver Schmidt
f485be1b84
Merge pull request #657 from IrgendwerA8/VariousSpeedSizeOptimizations
Various speed size optimizations
2018-05-23 09:46:30 +02:00
Stefan
a4c06f2572
Clean-up because of tgidrv_line.inc 2018-05-22 22:32:50 +00:00
Stefan
b945beb6a7
Indicate a dummy outtext 2018-05-22 21:18:10 +00:00
IrgendwerA8
6175271651 Removed optimizations which break the compiler ones. 2018-05-22 19:10:07 +02:00
IrgendwerA8
808d3ab471 Fix for 8x16 multiplication if operants are swapped. 2018-05-22 18:35:05 +02:00
IrgendwerA8
ba2c6d9008 Further optimizations in common/conio. 2018-05-22 16:00:05 +02:00
compyx
30ada49458 Add CBM kernal call TKSA to CBM library
This adds the CBM kernal call TKSA as cbm_k_tksa() to the CBM library.
2018-05-22 14:16:00 +02:00
IrgendwerA8
95b4a6f881 Beautified comment. 2018-05-22 11:25:26 +02:00
IrgendwerA8
99e13eeaa2 Fix typo for import. 2018-05-21 18:19:39 +02:00
IrgendwerA8
d7da827be8 Apply faster popptr1 to functions and/or use register instead of stack to save accu. 2018-05-21 18:18:01 +02:00
IrgendwerA8
c40ae4d774 Saved 6 bytes by using popptr1. 2018-05-21 16:21:45 +02:00
IrgendwerA8
d4081b43a6 Fixed comments. 2018-05-21 14:41:12 +02:00
IrgendwerA8
166425f807 Converted unintentionally introduced tabs to spaces. 2018-05-21 14:33:44 +02:00
Irgendwer
32bbacbb78
Merge branch 'master' into popptr1 2018-05-21 13:33:14 +02:00
IrgendwerA8
839aa93198 Resolved conflict and removed adaptation for strpbrk for time being. 2018-05-21 13:30:27 +02:00
IrgendwerA8
911b86de67 Fixed formatting and two import issues. 2018-05-21 13:02:56 +02:00
IrgendwerA8
c95ed4b8b5 Added "popptr1" which is of common use to save some bytes. 2018-05-20 15:30:18 +02:00
Oliver Schmidt
a795a27689
There's no 'closeallstreams' (anymore ?). 2018-05-17 11:11:40 +02:00
Stefan
472a107358
Make NMI ready 2018-05-14 23:22:09 +00:00
Stefan
b449ded176
Update c64-hi.s 2018-05-09 23:56:35 +00:00
Stefan
b81a04f157
Update c64-hi.s 2018-05-09 23:52:52 +00:00
Stefan
cdce753a09
NMI friendly c64-hi
Don't clear all vectors, see #639.
2018-05-09 23:31:42 +00:00
Marco van den Heuvel
cdebf6baa7 Harmonized the comments (as in added 1 space) ;) 2018-05-03 09:11:20 -07:00
Marco van den Heuvel
e88ac62d06 Optimized the code a bit, thanks to Greg for the suggestions/comments. 2018-05-01 14:46:57 -07:00
Marco van den Heuvel
ad7b339c44 Added C64 Turbo Master accelerator code and documentation. 2018-04-30 14:30:35 -07:00
Marco van den Heuvel
5b4929ef98 Removed obsolete bit opcode. 2018-04-29 12:13:52 -07:00
Marco van den Heuvel
d0088fbc0f Fixed a wrong branch. 2018-04-28 13:26:20 -07:00
Marco van den Heuvel
a012fab090 Added a comment to make the situation more clear. 2018-04-28 13:25:16 -07:00
Marco van den Heuvel
11629bcf99 Added C65/C64DX accelerator code and documentation. 2018-04-27 14:22:41 -07:00
Oliver Schmidt
47e4b36180
Merge pull request #631 from blackystardust/master
Added C64 Chameleon accelerator code and documentation.
2018-04-27 20:47:03 +02:00
Marco van den Heuvel
97e69952c4 Removed extern keyword from function prototypes. 2018-04-27 09:16:25 -07:00
Marco van den Heuvel
1428015158 Optimized the code a bit as suggested by Greg. 2018-04-26 09:18:54 -07:00
Greg King
c92a3c5bd5 Improved the accelerator code. Fixed an infinite loop.
Removed the execute permissions from some files.
2018-04-26 05:46:34 -04:00
Marco van den Heuvel
f2e46f0fdf Added C64 Chameleon accelerator code and documentation. 2018-04-25 12:53:29 -07:00
Oliver Schmidt
fc61bc79c5
Merge pull request #629 from blackystardust/master
Added C128 accelerator code and documentation for both C128 mode and C128 in C64 mode.
2018-04-25 15:08:11 +02:00
Marco van den Heuvel
cc2bcb8a4d Changed c128 accelerator code and documention to include both C64 and C128 support. 2018-04-23 19:25:11 -07:00
Oliver Schmidt
fe33a39d6c
Merge pull request #628 from ops/VIAFIX_PET
Pet: Add missing VIA register names
2018-04-23 15:58:13 +02:00
Marco van den Heuvel
28f26991ac Updated c128 accelerator code and documentation. 2018-04-21 09:52:50 -07:00
Marco van den Heuvel
3f5683b391 Added C128 in C64 mode accelerator code and documentation. 2018-04-20 12:08:28 -07:00
Olli Savia
c2adade8a8 Updated to use the new VIA register names 2018-04-20 21:25:43 +03:00
Oliver Schmidt
305c6e7ae4
Merge pull request #626 from blackystardust/master
Added c64dtv accelerator code and documentation.
2018-04-20 20:01:16 +02:00
Oliver Schmidt
53df4da8e8
Merge pull request #625 from ops/VIAFIX
VIC-20: Add missing VIA register names
2018-04-18 17:09:35 +02:00
Oliver Schmidt
d314a27e76
Merge pull request #627 from jedeoric/master
[Telestrat target] fix fwrite bug, cputc, chline, remove & mkdir added
2018-04-16 22:46:56 +02:00
jede
cc2b5af601 Fix comment 2018-04-16 21:51:15 +02:00
Marco van den Heuvel
ef73310cce Fixed more comments. 2018-04-16 11:05:52 -07:00
Marco van den Heuvel
0aa2735d4e Fixed another comment. 2018-04-15 12:15:19 -07:00
Marco van den Heuvel
c5f15fa1d5 Fixed some comment and documentation errors. 2018-04-15 11:55:58 -07:00
jede
626fed88b7 chline added 2018-04-14 22:05:03 +02:00
jede
e34ef0fc17 add cputc & remove 2018-04-14 21:52:11 +02:00
Marco van den Heuvel
cb04bc5465 Fixed an issue with the changing the d040 value while detecting. 2018-04-14 11:31:28 -07:00
Marco van den Heuvel
6076316f38 Added c64dtv accelerator code and documentation. 2018-04-14 10:40:13 -07:00
Oliver Schmidt
a10f36c837
Merge pull request #623 from blackystardust/master
Added C64/C128 SuperCPU accelerator functions and started on a generic framework for accelerators.
2018-04-13 21:43:34 +02:00
Olli Savia
79433ddb60 Updated to use the new VIA register names. 2018-04-11 22:40:46 +03:00
Stefan
a50d214ffb
Simpler get_tv
You don't have to count the beam, just check the KERNAL.
2018-04-10 18:37:10 +00:00
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
Marco van den Heuvel
61e5b9d218 Changed #10 to #-basha for clarity. 2018-04-01 13:14:44 -07:00
Marco van den Heuvel
9db6f059ac Fixed cpu detection. 2018-03-31 18:59:15 -07:00
Oliver Schmidt
8886e6f100
Merge pull request #620 from blackystardust/master
Added c16/plus4 fast(), isfast() and slow() functions, and updated the documentation accordingly.
2018-03-31 11:57:27 +02: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
Greg King
155f3ade41 C64 TGI: LINE: Optimization: Don't check boundaries; LINE always is called by tgi_clippedline().
Submitted in Pull Request #611 by Sven Michael Klose.
2018-03-26 07:28:01 -04:00
Marco van den Heuvel
8424286a3e Add c16 files as well. 2018-03-23 14:31:53 -07:00
Marco van den Heuvel
03ba3f7473 Added c16/plus4 fast(), isfast() and slow() functions, and updated the documentation accordingly. 2018-03-23 14:27:15 -07: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
2533cc8d75 Added the vic20 georam emd. 2018-03-19 11:34:41 -07:00
Marco van den Heuvel
0c7496f08b Added vic20 - ram emd. 2018-03-16 14:23:52 -07:00
Oliver Schmidt
316d8e9d37
Merge pull request #609 from polluks/master
Added missing PCE conio functions.
2018-03-11 08:58:23 +00:00
Stefan
789ce59fb5 Added missing PCE conio functions. 2018-03-11 00:49:40 +01:00
Oliver Schmidt
be30c0bd70
Merge pull request #606 from pfusik/ldec
Optimize deceaxy
2018-03-10 11:28:46 +00:00
Piotr Fusik
18ada212e7 Fix coding style. 2018-03-09 18:48:24 +01:00
Piotr Fusik
970c5f6184 Add comments. 2018-03-08 22:10:11 +01:00
Bob Andrews
7e6942953c
Merge pull request #604 from blackystardust/master
Improved reu size detection.
2018-03-08 19:19:35 +01:00
Oliver Schmidt
d602105dd4
Merge pull request #605 from mrdudz/4playerfix
4playerfix
2018-03-08 08:09:24 +00:00
Oliver Schmidt
8e75906737 Switched Apple II output format to AppleSingle.
Although the primary target OS for the Apple II for sure isn't DOS 3.3 but ProDOS 8 the Apple II binary files contained a DOS 3.3 4-byte header. Recently I was made aware of the AppleSingle file format. That format is a much better way to transport Apple II meta data from the cc65 toolchain to the ProDOS 8 file system. Therefore I asked AppleCommander to support the AppleSingle file format. Now that there's an AppleCommander BETA with AppleSingle support it's the right time for this change.

I bumped version to 2.17 because of this from the perspective of Apple II users of course incompatible change.
2018-03-07 23:05:21 +01:00
Piotr Fusik
5251b67d73 Fix comment typos. 2018-03-07 21:01:29 +01:00
Piotr Fusik
a32c50a6bc Optimize deceaxy. 2018-03-07 20:45:50 +01:00
mrdudz
3afbed48e0 tweak driver to no more use IRQ 2018-03-07 00:20:42 +01: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
Marco van den Heuvel
b37e06da8f Fixed hex digits case. 2018-03-02 14:09:02 -08:00
Marco van den Heuvel
5a9d908007 Added 2a03/2a07 and HuC6280 detection. 2018-03-01 14:57:42 -08:00
Oliver Schmidt
298fe25281
Merge pull request #599 from greg-king5/pce-point-func
Fix how the PC-Engine calls functions through pointers.
2018-03-01 16:50:40 +00:00
Greg King
549f09db9c Made two indirect jumps through the zero-page go through page $20 on the PC-Engine. 2018-02-28 14:59:52 -05:00
Marco van den Heuvel
5d029af79e Fixed the 65816/65802 detection. 2018-02-27 11:44:34 -08:00
Marco van den Heuvel
e79e779aba Removed bit opcode, not needed anymore. 2018-02-26 19:30:25 -08:00
Marco van den Heuvel
e3779978b2 Added proper 65sc02, 65ce02 and 4510 detection. 2018-02-26 19:22:54 -08:00
Greg King
33f602f9ad Shortenned the CBM close() by a byte and a cycle. 2018-02-26 15:07:13 -05:00
Oliver Schmidt
f19651cfea
Merge pull request #594 from greg-king5/pce-32k-rom
Change the PC-Engine's config., so that we can make 8K, 16K, and 32K carts.
2018-02-24 11:00:57 +00:00
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
Greg King
3a0506ccb3 Changed the PC-Engine's configuration file, so that the command line can build 8K, 16K, and 32K carts.
Adjusted the PCE's document, the start-up code, and the PCE library test makefile.  That makefile shows how to post-process the linker's output file.
2018-02-23 16:06:49 -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
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
Oliver Schmidt
27dacca4d3 Added missing dummy libref. 2018-02-01 22:06:59 +01:00
Oliver Schmidt
19ed94fe25 Adjust alternative ProDOS 8 I/O buffer allocation module to linker configs.
The Apple II linker configs don't define symbols for the STARTP segment anymore. There refer to the load/start address in the same way the executable file header does.
2018-01-31 15:06:37 +01:00
Oliver Schmidt
374c7e815c
Merge pull request #577 from polluks/master
Moved initcgetc to initcputc
2018-01-25 12:35:21 +00:00
Stefan
caa40866c3 Moved initcgetc to initcputc 2018-01-23 13:02:47 +01:00
Christian Groessler
643152fb38 Fix last change, put display list at beginning of ROM. 2018-01-21 15:40:22 +01:00
Christian Groessler
2ef6514e47 atari5200: put default display list into its own memory area
This avoids 1K boundary crossing of the display list. Fix for issue #560.
2018-01-19 15:18:43 +01:00
Christian Groessler
f0708db792 crt0.s ("none" target): fix initialization of sp variable. 2018-01-11 13:15:19 +01:00
Greg King
da22c90d33 Shrank Telestrat initcwd.s by 3 bytes.
Changing when a loop test is done allowed the removal of an extra STA instruction.
2018-01-09 04:48:39 -05:00
Oliver Schmidt
1ea5889a87
Merge pull request #564 from bauen1/none-library
Add none.lib
2018-01-05 11:05:30 +00:00
bauen1
94077404f9
Added ctype.s to none.lib as suggested by oliverschmidt 2018-01-05 10:39:23 +01:00
bauen1
aa34aed7dd
Fixed unused import and export of none.cfg and none/crt0.s 2018-01-04 22:27:39 +01:00
bauen1
45482b4fb1
Fixed none/crt0.s to respect none.cfg 2018-01-04 22:14:01 +01:00
bauen1
4759d3956e
Removed initialization of the stack from none.lib 2018-01-04 13:54:00 +01:00
bauen1
98b2b2544d
Added crt0 to none.lib 2018-01-04 12:07:35 +01:00
bauen1
14909f12fe
Implemented the requested changes.
Moved none to its alphabetic place in the Makefile
Reverted all changes to doc/customizing.sgml
2018-01-04 11:17:20 +01:00
bauen1
72bb32fcda
Revert "Renamed none.lib to no-platform.lib"
This reverts commit 26350714ee.

It breaks the build
2018-01-02 15:32:27 +01:00
bauen1
26350714ee
Renamed none.lib to no-platform.lib 2018-01-02 15:15:27 +01:00
Oliver Schmidt
d348d82d5a
Merge pull request #561 from mrdudz/soft80peek
C64 soft80 cpeek stuff
2018-01-01 16:13:04 +00:00
bauen1
b08839cac4
Added libray to none target 2017-12-31 16:15:27 +01:00
mrdudz
783408080c convert to petscii 2017-12-28 17:52:27 +01:00
Christian Groessler
30c6018887 Implementation of getfirstdevice/getnextdevice for Atari. 2017-12-28 04:54:18 +01:00
mrdudz
f207a60365 some cleanup 2017-12-28 02:26:23 +01:00
mrdudz
0543ecabe2 added peek functions for soft80 2017-12-28 01:58:03 +01:00
Stefan
6497da262a
oops
I made a mistake.
2017-12-17 18:45:57 +01:00
Oliver Schmidt
fb193933cb
Merge pull request #552 from polluks/master
Added Oric-1 compatibility #550
2017-12-16 18:26:34 +00:00
Stefan
6faef87b49 Fixed Oric-1 compatibility #550 2017-12-15 23:51:39 +01:00
mrdudz
892732f340 fix cpeeks() for C128 VDC 2017-12-12 17:05:24 +01:00
mrdudz
4da22fc6a0 fix cpeeks for CBM610 2017-12-12 04:32:39 +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
563185998f Removed CBM chartype table. 2017-12-02 11:04:59 +01:00
Stefan
7d1c92dc12
New API 2017-11-21 10:33:48 +01:00
Stefan
c4baf9588e
directive removed 2017-11-21 10:29:35 +01:00
Stefan
f8f464846a
directive removed 2017-11-21 10:27:08 +01:00
Stefan
55117039f0
Merge pull request #3 from polluks/polluks-sv-joy
Added standard joystick driver for the Supervision.
2017-11-21 06:59:55 +01:00
Stefan
949c2aa76f
Add files via upload 2017-11-21 06:57:02 +01:00
Stefan
12bfed04b1
Create supervision-stdjoy.s 2017-11-21 06:53:26 +01:00
jede
4e0958eae6 Bug corrected : Fwrite did not return number of byte written. 2017-11-14 22:04:57 +01:00
Oliver Schmidt
06794b221d Made cbm_k_untlk() available. 2017-11-13 20:38:41 +01:00
Oliver Schmidt
0f87844a7c
Merge pull request #519 from jedeoric/master
[Telestrat] mkdir is now available
2017-11-11 21:09:59 +00:00
Fabrizio Caruso
0a61b061c7
Update gamate-stdjoy.s 2017-11-09 16:42:52 +01:00
Fabrizio Caruso
bf0ae22969
Update gamate-stdjoy.s 2017-11-09 16:36:06 +01:00
U-AMAIISDOM\fcaruso
e4a235b233 Correct bits in gamate joystick detection 2017-11-09 13:51:04 +01:00
Piotr Fusik
84edf4cbfd Fix more than 256 codes of same length.
Fix all 256 literal codes of same length.
2017-11-07 20:10:19 +01:00
Piotr Fusik
d3451bb299 Fix 256 codes of same length 2017-11-06 19:46:26 +01:00
Stefan
9ee4431994
Add files via upload
Alternative joystick interface
2017-11-02 21:11:08 +01:00
jede
807b55862d Now mkdir is working 2017-10-28 00:37:47 +02:00
Oliver Schmidt
15d9373ad7 Merge pull request #507 from jedeoric/master
[telestrat] tgi_line & tgi_outtext are available, toascii.s added, doc updated
2017-10-25 14:49:14 +00:00
jede
3bc0843afc FIX label for setpixelmode 2017-10-23 23:25:08 +02:00
jede
aaf8863de5 Merge branch 'master' of https://github.com/jedeoric/cc65 2017-10-23 23:04:22 +02:00
jede
1403d797f0 Remove toascii.s 2017-10-23 20:52:22 +02:00
Oliver Schmidt
c0ce20e9cc Save/restore jmpvec as it is used by generated code - see g_callind(). 2017-10-23 18:57:28 +02:00
Oliver Schmidt
bd9b4ef60c Replaced three (logically) identical files with a single file. 2017-10-23 18:35:06 +02:00
jede
0517a2c2ab removing extra spaces 2017-10-22 23:12:12 +02:00
jedeoric
af1c7f0c8b Merge branch 'master' into master 2017-10-22 23:11:18 +02:00
jede
93f202850a toascii.s added, doc updated, tgi_line & tgi_outtext are available 2017-10-22 23:06:56 +02:00
Oliver Schmidt
4da1d3232f Merge pull request #504 from jedeoric/master
[Telestrat] TGI initialization,  some bugs (clrscr) correction, cgetc optimization, irq management
2017-10-22 11:14:55 +00:00
jede
351a5ab20a Now setPixel works in TGI. 2017-10-20 21:03:30 +02:00
jede
f964fdbe56 Correction : authors 2017-10-16 18:18:36 +02:00
jede
195b5f0a07 Optimizing (from Polluks tip) 2017-10-16 18:15:53 +02:00
jede
18c94e123f tgi_clear, tgi_init, tgi_done, tgi_getmaxx, tgi_getmaxy are working 2017-10-16 18:08:48 +02:00
jede
7b74264720 irq.s added 2017-10-16 17:34:32 +02:00
jede
db1319de4c clrscr.s switch to text mode 2017-10-16 17:28:00 +02:00
Oliver Schmidt
820b4dbc77 Merge pull request #503 from jedeoric/master
[telestrat] cgetc is now available
2017-10-08 17:56:04 +00:00
jede
a01c8c238c Correcting comments 2017-10-08 18:14:26 +02:00
jede
ff12835ee2 Adding cgetc 2017-10-08 18:11:09 +02:00
Christian Groessler
a084ea8e42 Atari: split "setcursor" function out of cgetc.s source file into setcursor.s.
This function is used by many other CONIO functions, and the user program not
necessarily uses 'cgetc'. Having "setcursor" in a different object file saves
space in this case and also allows the user program to override it (e.g. when
not using GRAPHICS 0 mode).
2017-10-03 21:58:52 +02:00
jede
56360ea054 optimize 2017-10-02 12:20:52 +02:00
jede
a1c8860f63 telestrat : cgetc add for conio 2017-10-01 23:23:03 +02:00
Oliver Schmidt
3a6430b13d Merge pull request #494 from jedeoric/master
[telestrat] Adding some vars, adding getcwd management, changing ZP address and ZP length
2017-09-27 09:52:19 +02:00
jede
d8904c550b Fixing buffer overflow with cwd command (FILENAME_MAX must be at 50 +1 bytes) 2017-09-25 21:39:57 +02:00
jede
86741cb1dd correcting missing _ 2017-09-24 20:07:02 +02:00
jede
5bbb27c8af Fixing bug for cwd 2017-09-24 20:04:50 +02:00
jede
fabb6acf3f Initcwd is now working for telestrat 2017-09-24 19:23:44 +02:00
Oliver Schmidt
308f74561c Merge pull request #482 from greg-king5/pet-kbrepeat
Make the CBM Pet kbrepeat() work on both 40-/80-column machines.
2017-09-06 09:19:04 +02:00
Greg King
51765c6e5c Removed an unwanted button mask table from a VIC-20 joystick driver.
It had put the jump table at the wrong place.  Programs crashed as soon as they tried to initiate the driver.
2017-09-05 16:56:20 -04:00
Greg King
3c0b8c4e86 Made the CBM Pet kbrepeat() work on both 40-column and 80-column machines.
Put the kbrepeat() description in an alphabetical position in the function document.
2017-09-05 09:19:01 -04: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
acf831658f Adjusted to recent driver interface change.
Please note that this change is absolutely untested!

Apart from the recent driver interface change:
- vic20-stdjoy.s was "slightly broken" because it didn't clear x on return from joy_read.
- vic20-ptvjoy.s was "heavily broken" because it returned a totally different set of bits of the first joystick.
2017-08-20 17:17:39 +02:00
Oliver Schmidt
20c85c8a1c Minor style adjustment. 2017-08-20 17:17:38 +02:00
Oliver Schmidt
a817da7c6b Adjusted to recent driver interface change.
Please note that this change is absolutely untested!
2017-08-20 17:17:37 +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
0c54a19a0b Adjusted to recent driver interface change.
The change is inspired by the code of the standard joystick driver. It is however absolutely untested.

Note: Sites like http://raster.atariportal.cz/english.htm state that there needs to be a delay when reading joysticks via the MultiJoy adapter. There's no such delay in the driver. But I don't dare to decide to add it.
2017-08-20 11:49:02 +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
Pascal de Bruijn
19f6ae1d54 make: change uppercase prefix var 2017-07-22 16:38:50 +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
b6d3d32e88 wait for line 0 instead of last line 2017-07-18 01:06:20 +02:00
mrdudz
8eee51913a add headers/fix formatting 2017-07-18 01:04:53 +02:00
mrdudz
c24080f289 do banking 2017-07-18 00:41:54 +02:00
mrdudz
fe850fece8 implement waitvsync for plus4/c16 2017-07-17 23:55:18 +02:00
mrdudz
1abce3a2a1 rename all waitvblank() to waitvsync() 2017-07-17 23:15:05 +02:00
Oliver Schmidt
26a2d8a5c6 Merge pull request #457 from pfusik/const-arrays
Make some arrays const.
2017-06-30 09:28:40 +02:00
Greg King
141c25b42b Added the extra dependency file's directory as an order-only prerequisite.
The extra dependency files are put into different places than the extra object files' location.  Therefore, the rule must pre-make two directories.
2017-06-29 13:56:29 -04:00
Piotr Fusik
b31ae57be1 Make some arrays const. 2017-06-28 20:43:31 +02:00
Greg King
d1501731e4 Added a makefile dependency for the libraries' "extra" files.
Some of the files in "libsrc/*/extra/" include other library files.  But, the "lib/*.o" files weren't rebuilt when those other files changed.

The new dependency rules must be "bootstrapped".  You must force a rebuild of all of the extra library object files (it will create the dependency files).  Use these commands:

rm lib/*.o
make lib
2017-06-28 05:51:46 -04:00
Greg King
bd883327ac Added two functions that make it easier to write portable programs for Ohio Scientific computers. 2017-06-26 02:34:23 -04: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
Greg King
30f941ba39 Added a missing label to some conio cursor movement functions.
It had prevented other functions, e.g. cputs(), from being linked into a program.
2017-06-15 16:44:46 -04:00
Lauri Kasanen
4235e569d2 Small lz4 optimizations 2017-06-09 16:57:47 +03:00
Lauri Kasanen
c444ed5e4f Mention the optimizations in a comment 2017-06-09 10:42:24 +03:00
Lauri Kasanen
bba961e54d Use hex immediates 2017-06-09 10:40:17 +03:00
Lauri Kasanen
cd460a8160 Remove _ from internal vars 2017-06-09 10:37:50 +03:00
Lauri Kasanen
ee49ecdf43 Expand tabs to spaces in lz4.s 2017-06-06 19:31:16 +03:00
Lauri Kasanen
e75a59d7a8 Add LZ4 decompression support 2017-06-06 18:48:25 +03:00
Oliver Schmidt
035baa49bd Merge pull request #438 from bbbradsmith/ca65_rand_comment
rand.s comment update
2017-05-26 15:16:42 +02:00
Brad Smith
950d65e8ed detectabl > detectable 2017-05-25 03:20:11 -04:00
Brad Smith
1602aab6e9 forgot to update comments from earlier #323 rand.s change 2017-05-25 03:01:25 -04:00
Stefan
75028e4108 shorter code 2017-05-18 23:58:10 +02:00
Lauri Kasanen
a84463a3df callptr4 2017-05-01 21:08:03 +03:00
Oliver Schmidt
e43dbe1c24 Just some white space fixes of recently contributed code. 2017-04-06 17:53:57 +02:00
Oliver Schmidt
275b27647e Removed superfluous final linefeed. 2017-04-04 15:43:56 +02:00
Oliver Schmidt
233dd5062a Merge pull request #389 from IrgendwerA8/stringimprovements
Optimization of string functions (size & speed).
2017-04-04 15:39:37 +02:00
Oliver Schmidt
5095dd72b2 Merge pull request #402 from IrgendwerA8/runtime_improvements
few 6502 and some 65SC02 runtime optimizations
2017-03-20 11:34:06 +01:00
IrgendwerA8
1abfa98290 minor style changes 2017-03-19 20:51:54 +01:00
Oliver Schmidt
2048d6cfb5 Removed top blank line. 2017-03-18 20:57:12 +01:00
Christian Groessler
a3d8829be9 Creativison changes.
This change includes some cleanups, removal of mainargs.s (game console
programs never have arguments), and a workaround for a problem I'm seeing.

The problem is that sometimes (in fact, more often than not) the clrscr()
call in testcode/lib/joy-test.c writes some garbage chars on the screen (most
often a "P"). Could be my hardware (I haven't seen it on MAME), but to
me the root cause is still unknown.
2017-03-17 21:42:51 +01:00
IrgendwerA8
0de44517ac few 6502 and some 65SC02 optimizations 2017-03-12 23:21:43 +01:00
Christian Groessler
8a81f9c0c8 Fix line endings (CRLF -> LF) on all affected files. 2017-03-10 11:21:14 +01:00
Oliver Schmidt
b332064cb5 Just some minor style fix. 2017-03-09 14:39:08 +01:00
Christian Groessler
64c4cef901 Implement diagonal direction handling in creativision joystick driver. 2017-03-08 13:19:53 +01:00
IrgendwerA8
8d1b80e6fd Fixed CPU-flag usage which fails on build server?! 2017-03-05 11:38:55 +01:00
IrgendwerA8
81115aa826 Added further optimizations and unit tests. 2017-03-05 02:09:12 +01:00
Christian Groessler
9558ebf86c creativision/crt0.s: enable display interrupts in display controller configuration
Otherwise the joystick zero page locations won't get updated.
2017-03-04 10:04:32 +01:00
IrgendwerA8
3d28f5ca90 Fixed indentation 2017-02-26 22:36:19 +01:00
IrgendwerA8
c240d42a9e Added "strrchr" optimizaion a matching unit test and tiny unit test framework. (Documentation for that will follow later) 2017-02-26 20:03:05 +01:00
jede
b0e035ba2b Cleaning 2017-02-25 22:23:46 +01:00
jede
7bc3bff83f adding gotox.s gotoy.s wherex.s wherey.s 2017-02-25 22:20:17 +01:00
jede
1497330cc0 adding clrscr.s 2017-02-25 22:10:13 +01:00
jede
f6002a149c adding gotoxy.s 2017-02-25 21:32:06 +01:00
IrgendwerA8
6afcc370ed Optimization of two string functions (size & speed). 2017-02-25 20:19:50 +01:00
Christian Groessler
ddae920ee9 remove old joystick code 2017-02-15 15:53:57 +01:00
Christian Groessler
e6530d68dd Fix joystick driver. Add interruptor support.
Note that the joystick driver doesn't support combined movements (like
left/up or right/down). This should be fixed.
2017-02-15 15:45:49 +01:00
Christian Groessler
c0803ed53a fix indentation 2017-02-14 23:52:44 +01:00
Christian Groessler
a5fba551d1 Merge remote-tracking branch 'upstream/master' into something_to_pull2 2017-02-13 21:38:38 +01:00
Piotr Fusik
4266e712f2 Optimize inflatemem.
The new version is 30% shorter and 10% faster.
It also avoids the indirect-X addressing mode, which was a problem for PC-Engine.
2017-02-12 11:41:11 +01:00
Oliver Schmidt
5bbf010029 Merge pull request #371 from jedeoric/master
Create an Oric Telestrat target library
2017-02-10 23:47:13 +01:00
Christian Groessler
38451fa8a4 intermediate check-in -- creativision joystick driver 2017-02-08 14:34:35 +01:00
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