1
0
mirror of https://github.com/cc65/cc65.git synced 2026-04-20 02:17:07 +00:00
Commit Graph

647 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 3598fb505d Fixed Visual C++ build (and some style adjustments). 2018-08-19 00:01:40 +02:00
Patrick Pelletier e549e23a87 Use non-POSIX values for S_IREAD and S_IWRITE.
(As requested in the PR.)
2018-08-17 23:28:45 +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 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 97be359d4a Updated comment. 2018-07-26 13:09:21 +02:00
Greg King 6d87370881 Fixed strpbrk().
Added its prototype.  Documented it.
2018-05-29 14:29:50 -04:00
compyx dade099b9d CBM kernal call SECOND, update cbm.h 2018-05-23 17:37:48 +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
Marco van den Heuvel ad7b339c44 Added C64 Turbo Master accelerator code and documentation. 2018-04-30 14:30:35 -07:00
Oliver Schmidt 5c07db3a74 Merge pull request #634 from blackystardust/master
Added C65/C64DX accelerator code and documentation.
2018-04-30 22:51:42 +02:00
Oliver Schmidt a482b54ed7 Removed extern keyword from function prototype. 2018-04-29 13:50:09 +02: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 97e69952c4 Removed extern keyword from function prototypes. 2018-04-27 09:16:25 -07:00
Marco van den Heuvel f2e46f0fdf Added C64 Chameleon accelerator code and documentation. 2018-04-25 12:53:29 -07: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 3f5683b391 Added C128 in C64 mode accelerator code and documentation. 2018-04-20 12:08:28 -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
Greg King 098a30725f Moved declarations that are common to the C16 and the Plus4 libraries over to their common header. 2018-04-01 15:47:48 -04: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 0c7496f08b Added vic20 - ram emd. 2018-03-16 14:23:52 -07:00
Marco van den Heuvel 0eb1eb625f Undo my previous commit. 2018-03-09 10:46:02 -08:00
Marco van den Heuvel 22d4b0d497 Improved tv timing detection for the c64. 2018-03-08 16:06:33 -08:00
Marco van den Heuvel 5a9d908007 Added 2a03/2a07 and HuC6280 detection. 2018-03-01 14:57:42 -08:00
Marco van den Heuvel e3779978b2 Added proper 65sc02, 65ce02 and 4510 detection. 2018-02-26 19:22:54 -08: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 d93f84f4bc Improved GeOS version detection. 2018-02-13 19:19:40 -08:00
Greg King 33f05d1162 Added a definition for the CBM610's first CIA chip. 2018-02-10 16:14:53 -05:00
Oliver Schmidt 6f6fd33cae Added size_t. 2018-02-10 11:45:50 +01:00
Greg King e9cbd42b18 Normalized the definitions of structs in <supervision.h>.
The change matches the way that I/O register structures are defined in other headers.  The names are defined as "struct", instead of as "pointer to struct".
2018-02-06 08:52:36 -05:00
Christian Groessler ae4e9fab8c Atari: CONSOL port of GTIA is readable and writable.
Adjust include/_gtia.h accordingly.
2018-02-02 18:28:52 +01:00
Oliver Schmidt d7afadb2fe Factored out target specific inclusion of target header.
So far conio.h included the target header to get the CH_... and COLOR_... macros. However tgi.h never did the same to get the TGI_COLOR_... macros. And some time ago the JOY_..._MASK macros moved from joystick.h into the target header yet joystick.h didn't include the target header.

Why wasn't that issue detected so far? Because about every program using TGI and/or the joystick uses CONIO too and therefore includes the target header that way.

However, conceptually it's clean to factor out the target header inclusion and have tgi.h and joystick.h do it like conio.h.

Apart from that user code may make direct use of target.h too.
2018-02-02 12:59:05 +01:00
Oliver Schmidt 2cf1bb89be Removed ACE header.
There's no code in the tool chain to set __ACE__ nor is there an ace.lib C library.
2018-02-02 12:35:40 +01:00
Oliver Schmidt 935f68f686 Harmonized the style of including headers from headers.
We surely don't care about some file I/O on host machines in 2018 ;-)
2018-02-02 12:28:22 +01:00
Oliver Schmidt f15cd3e468 Removed IRQ support from joystick drivers. 2018-02-02 12:02:52 +01:00
Oliver Schmidt 811424cc1b Added recently published ProDOS version. 2018-01-18 12:37:21 +01:00
mrdudz 8902730756 cbm stuff from greggs pull request 2017-12-11 19:52:11 +01:00
Stefan f2e12b4715 defined DYN_DRV 2017-11-21 10:56:35 +01:00
Stefan e49744ecd0 New API 2017-11-21 10:22:53 +01:00
Stefan f9b4e0b574 Update supervision.h 2017-11-21 10:12:35 +01:00
Oliver Schmidt 06794b221d Made cbm_k_untlk() available. 2017-11-13 20:38:41 +01:00
Stefan 2fd99e9dec Missing declaration 2017-11-09 17:36:21 +01:00
Oliver Schmidt afcfba9355 Use macro actually defined in cbm_filetype.h. 2017-11-06 21:02:14 +01: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
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