1
0
mirror of https://github.com/cc65/cc65.git synced 2024-08-15 21:29:23 +00:00
Commit Graph

1031 Commits

Author SHA1 Message Date
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
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
AIDA Shinra
fd67284b4d Followed the discussions in the Pull request #682.
* Fixed a misspelling
* Fixed styles
* Added sample codes
2018-06-14 02:02:16 +09:00
AIDA Shinra
2b25329423 Support for preprocessing info file via cpp or m4. 2018-06-14 02:02:16 +09:00
AIDA Shinra
a3ab3cb458 Changed the wording of the doc/da65.sgml. 2018-06-13 01:23:01 +09:00
AIDA Shinra
03bb2f6a48 Followed discussions in the Pull reequest #681.
In particular, renamed "virtual operands" to "inline parameters".
2018-06-12 00:18:11 +09:00
AIDA Shinra
9283e9ca98 Support for "virtual operands" of subroutines like this:
jsr	SomeProc
.byte	$00, $01 ; argument to SomeProc
; return here from SomeProc
bit	$3F
2018-06-10 18:09:11 +09:00
Greg King
6d87370881 Fixed strpbrk().
Added its prototype.  Documented it.
2018-05-29 14:29:50 -04:00
Bas Wassink
b98517f90b Add __fastcall__ to cbm_k_second() documentation 2018-05-25 13:17:12 +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
4459b8973b
Merge pull request #659 from polluks/patch-10
Fixed typos and added references for #655
2018-05-23 15:51:25 +02:00
Oliver Schmidt
b6b11e3b43
Merge pull request #660 from polluks/patch-11
More references
2018-05-23 15:48:43 +02:00
Stefan
d28fce082d
Update funcref.sgml 2018-05-23 13:40:14 +00:00
Stefan
21a69c8aff
Update tgi.sgml 2018-05-23 13:34:37 +00:00
Stefan
714a347dc9
Update funcref.sgml 2018-05-23 13:32:17 +00:00
Stefan
0a1e68d7a9
Update funcref.sgml 2018-05-23 13:30:57 +00:00
Stefan
1dcd4a19ea
More references 2018-05-23 04:51:32 +00:00
Stefan
9e4833e21f
Added documentation of cbm_k_untlk 2018-05-23 04:27:05 +00:00
Stefan
37e6b05b4a
Fixed typos and added references for #655 2018-05-23 01:51:54 +00:00
compyx
e3a8cfcdb0 cbm_k_tksa() from the PET docs 2018-05-22 18:48:43 +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
Stefan
b3358c462e
Update c64.sgml
Do not use last page!
2018-05-14 23:10:34 +00:00
Stefan
df79409f76
Update c64.sgml
soft80 is NMI ready
2018-05-14 14:17:09 +00:00
Marco van den Heuvel
04675fca2a Order fix. 2018-05-02 11:23:43 -07:00
Marco van den Heuvel
b1c3daca3a Fixed the order of some functions. 2018-05-01 14:45:51 -07:00
Marco van den Heuvel
b12678e90d Fixed a typo. 2018-04-30 14:34:46 -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
11629bcf99 Added C65/C64DX accelerator code and documentation. 2018-04-27 14:22:41 -07: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
Marco van den Heuvel
28f26991ac Updated c128 accelerator code and documentation. 2018-04-21 09:52:50 -07:00
Greg King
30aed2330d Updated a joystick adapter URL. 2018-04-21 04:30:56 -04:00
Marco van den Heuvel
3f5683b391 Added C128 in C64 mode accelerator code and documentation. 2018-04-20 12:08:28 -07:00
Marco van den Heuvel
c5f15fa1d5 Fixed some comment and documentation errors. 2018-04-15 11:55:58 -07:00
Marco van den Heuvel
6076316f38 Added c64dtv accelerator code and documentation. 2018-04-14 10:40:13 -07: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
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
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
4fdc2d7209 Fix documentation building issue. 2018-03-18 12:06:43 -07:00
Marco van den Heuvel
12f72a5ed7 Added vic20 emd documentation. 2018-03-17 09:25:42 -07: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
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
Marco van den Heuvel
74117bbe46 Merge remote-tracking branch 'upstream/master' 2018-03-06 18:00:57 -08:00
Marco van den Heuvel
2418c0e0af Updated documentation for the reu emd. 2018-03-06 18:00:36 -08:00
Oliver Schmidt
223750cde9 CC65_HOME is gone for quite some time by now. 2018-03-06 20:43:08 +01:00
Marco van den Heuvel
24cfcfdd4f Merge remote-tracking branch 'upstream/master' 2018-03-02 14:09:22 -08:00
Oliver Schmidt
57abfcd581 Joystick drivers don't depend on interrupts anymore. 2018-03-02 22:17:49 +01:00
Marco van den Heuvel
5a9d908007 Added 2a03/2a07 and HuC6280 detection. 2018-03-01 14:57:42 -08:00