1
0
mirror of https://github.com/cc65/cc65.git synced 2024-12-23 19:29:37 +00:00
cc65/libsrc/apple2
Oliver Schmidt 04cc463452 Implemented some CONIO peek functions.
Please refer to https://github.com/cc65/cc65/pull/532 for background info.

I wrote in https://sourceforge.net/p/cc65/mailman/message/35873183/

===
cputs() wraps to the next line if the strings is too long to fit in the current line. I don't know if it's worth the effort to allow cpeeks() to continue reading from the next line. I'd like to discuss this aspect with the actual implementers.
===

This is still as unclear today as it was when I wrote the above. Therefore this change just doesn't add cpeeks() at all.

Since f8c6c58373 the Apple II CONIO implementation doesn't "need" revers() anymore - meaning that (nearly) every possible value can be placed in VRAM with a straight cputc() (without the need for a previous revers(1)).

The implementation of cpeekc() leverages that cputc() ability by always returning the value that can be fed into cputc() without a previous revers(1). Accordingly, cpeekrevers() always returns 0.

So after the sequence revers(1); cputc(x); a cpeekc() will return a value different from x! However, I don't see this behavior braking the cpeekc() contract. I see the cpeekc() contract being defined by the sequence textcolor(cpeekcolor()); revers(cpeekrevers()); cputc(cpeekc()); placing the very same value in VRAM that there was before. And that contract is fulfilled.
2020-07-12 22:19:55 +02:00
..
emd Create static drivers directly from source files. 2014-06-04 23:50:18 +02:00
extra Resolved conflict and removed adaptation for strpbrk for time being. 2018-05-21 13:30:27 +02:00
joy Streamlined machine detection. 2020-06-15 19:31:18 +02:00
mou Create static drivers directly from source files. 2014-06-04 23:50:18 +02:00
ser Added SER_ prefix. Whitespace cleanup 2018-11-26 22:14:31 +01:00
targetutil directory structure changed from driver-centric to target-centric 2016-05-16 19:49:43 +02:00
tgi Disable potentially enabled double-width graphics. 2020-05-04 22:23:01 +02:00
_scrsize.s Removed (pretty inconsistently used) tab chars from source code base. 2013-05-09 13:57:12 +02:00
_sys.s Allow _sys() to call ROM routines. 2016-03-25 21:57:06 +01:00
break.s Adjusted comments to match actual prototypes. 2018-11-06 11:13:23 +01:00
cclear.s Introduced internal gotoxy that pops both parameters. 2016-06-05 14:58:38 +02:00
cgetc.s Support randomize(). 2018-09-08 18:45:20 +02:00
chline.s Made Apple II CONIO more flexible. 2018-08-20 00:30:17 +02:00
close.s Removed (pretty inconsistently used) tab chars from source code base. 2013-05-09 13:57:12 +02:00
closedir.c Removed (pretty inconsistently used) tab chars from source code base. 2013-05-09 13:57:12 +02:00
clrscr.s Removed (pretty inconsistently used) tab chars from source code base. 2013-05-09 13:57:12 +02:00
color.s Removed (pretty inconsistently used) tab chars from source code base. 2013-05-09 13:57:12 +02:00
cout.s Removed (pretty inconsistently used) tab chars from source code base. 2013-05-09 13:57:12 +02:00
cpeekc.s Implemented some CONIO peek functions. 2020-07-12 22:19:55 +02:00
cputc.s Implemented line wrap. 2018-08-20 00:30:17 +02:00
crt0.s Moved run location of ONCE segment. 2016-03-17 21:07:19 +01:00
curdevice.s Introduced getcurrentdevice() and implemented it for CBM and Apple. 2012-10-21 14:35:17 +00:00
cvline.s Made Apple II CONIO more flexible. 2018-08-20 00:30:17 +02:00
devicedir.s Fixed regression introduced by https://github.com/cc65/cc65/pull/652. 2018-07-26 14:31:17 +02:00
dioclose.s Removed (pretty inconsistently used) tab chars from source code base. 2013-05-09 13:57:12 +02:00
diocommon.s Just removed some trailing spaces. 2018-09-08 23:14:54 +02:00
dioopen.s Removed (pretty inconsistently used) tab chars from source code base. 2013-05-09 13:57:12 +02:00
dioread.s Removed (pretty inconsistently used) tab chars from source code base. 2013-05-09 13:57:12 +02:00
diosectcount.s Removed (pretty inconsistently used) tab chars from source code base. 2013-05-09 13:57:12 +02:00
diosectsize.s Removed (pretty inconsistently used) tab chars from source code base. 2013-05-09 13:57:12 +02:00
diowrite.s Removed (pretty inconsistently used) tab chars from source code base. 2013-05-09 13:57:12 +02:00
dir.h Removed (pretty inconsistently used) tab chars from source code base. 2013-05-09 13:57:12 +02:00
doesclrscr.s Added Apple II version of doesclrscrafterexit(). 2016-06-05 13:01:42 +02:00
dosdetect.s Matched comment to the one in the C header file. 2020-04-02 09:45:11 +02:00
exec.s Minor adjustment to recent change. 2016-05-30 14:31:53 +02:00
exehdr.s Switched Apple II output format to AppleSingle. 2018-03-07 23:05:21 +01:00
filedes.inc
filedes.s Removed (pretty inconsistently used) tab chars from source code base. 2013-05-09 13:57:12 +02:00
filename.s Removed (pretty inconsistently used) tab chars from source code base. 2013-05-09 13:57:12 +02:00
get_ostype.s Added waitvsync() for the Enhanced Apple //e. 2020-06-18 21:44:57 +02:00
getdevice.s Just a minor comment improvement. 2018-09-02 23:07:26 +02:00
getres.s Use MACHID to check for realtime clock. 2019-09-10 09:49:06 +02:00
gettime.s Adjusted comments to match actual prototypes. 2018-11-06 11:13:23 +01:00
gotoxy.s Introduced internal gotoxy that pops both parameters. 2016-06-05 14:58:38 +02:00
gotoy.s Removed (pretty inconsistently used) tab chars from source code base. 2013-05-09 13:57:12 +02:00
home.s Removed (pretty inconsistently used) tab chars from source code base. 2013-05-09 13:57:12 +02:00
initcwd.s Just removed some trailing spaces. 2018-09-08 23:14:54 +02:00
iobuf.s Removed (pretty inconsistently used) tab chars from source code base. 2013-05-09 13:57:12 +02:00
irq.s Made use of recently added Apple scrcode macro. 2016-03-27 18:27:53 +02:00
isdevice.s I wasn't aware that the unit numbers in the ProDOS device list contain device type identifiers in the low nibble. So if we can't use the device list entries as-is we can as well present the high nibble as low nibble to the user thus providing more meaningful device numbers. 2012-10-15 21:59:51 +00:00
joy_stat_stddrv.s Removed (pretty inconsistently used) tab chars from source code base. 2013-05-09 13:57:12 +02:00
joy_stddrv.s Removed (pretty inconsistently used) tab chars from source code base. 2013-05-09 13:57:12 +02:00
joyref.s Reflect that the Apple //c supports only one joystick. 2020-06-04 23:24:24 +02:00
kbhit.s
libref.s Reflect that the Apple //c supports only one joystick. 2020-06-04 23:24:24 +02:00
lseek.s lseek: Return EINVAL if new position is less than 0 or greater than 2^24 - 1. 2018-08-20 22:24:48 +02:00
mainargs.s Adjusted constructors. 2016-03-16 16:28:32 +01:00
mcbdefault.s Made Apple II CONIO more flexible. 2018-08-20 00:30:17 +02:00
mli.inc Removed (pretty inconsistently used) tab chars from source code base. 2013-05-09 13:57:12 +02:00
mli.s Protect random counter against ProDOS. 2018-09-08 23:29:59 +02:00
mouse_stat_stddrv.s Removed (pretty inconsistently used) tab chars from source code base. 2013-05-09 13:57:12 +02:00
mouse_stddrv.s Removed (pretty inconsistently used) tab chars from source code base. 2013-05-09 13:57:12 +02:00
open.s Renamed INITBSS to INIT and INIT to ONCE. 2016-03-06 21:27:19 +01:00
opendir.c Removed (pretty inconsistently used) tab chars from source code base. 2013-05-09 13:57:12 +02:00
oserrlist.s Removed (pretty inconsistently used) tab chars from source code base. 2013-05-09 13:57:12 +02:00
oserror.s Implement exec() for Atari XDOS. 2016-06-13 20:40:01 +02:00
randomize.s Removed (pretty inconsistently used) tab chars from source code base. 2013-05-09 13:57:12 +02:00
rdkey.s Removed (pretty inconsistently used) tab chars from source code base. 2013-05-09 13:57:12 +02:00
read.s Renamed INITBSS to INIT and INIT to ONCE. 2016-03-06 21:27:19 +01:00
readdir.c Removed (pretty inconsistently used) tab chars from source code base. 2013-05-09 13:57:12 +02:00
reboot.s Renamed INITBSS to INIT and INIT to ONCE. 2016-03-06 21:27:19 +01:00
revers.s Removed (pretty inconsistently used) tab chars from source code base. 2013-05-09 13:57:12 +02:00
rewinddir.c Removed (pretty inconsistently used) tab chars from source code base. 2013-05-09 13:57:12 +02:00
rwcommon.s Added "popptr1" which is of common use to save some bytes. 2018-05-20 15:30:18 +02:00
settime.s Use MACHID to check for realtime clock. 2019-09-10 09:49:06 +02:00
syschdir.s Removed (pretty inconsistently used) tab chars from source code base. 2013-05-09 13:57:12 +02:00
sysmkdir.s Removed (pretty inconsistently used) tab chars from source code base. 2013-05-09 13:57:12 +02:00
sysremove.s Removed (pretty inconsistently used) tab chars from source code base. 2013-05-09 13:57:12 +02:00
sysrename.s Removed (pretty inconsistently used) tab chars from source code base. 2013-05-09 13:57:12 +02:00
sysrmdir.s Removed (pretty inconsistently used) tab chars from source code base. 2013-05-09 13:57:12 +02:00
sysuname.s
tgi_colors.s Removed (pretty inconsistently used) tab chars from source code base. 2013-05-09 13:57:12 +02:00
tgi_stat_stddrv.s Removed (pretty inconsistently used) tab chars from source code base. 2013-05-09 13:57:12 +02:00
tgi_stddrv.s Removed (pretty inconsistently used) tab chars from source code base. 2013-05-09 13:57:12 +02:00
videomode.s Made use of 65C02 opcode (thx to polluks). 2020-03-05 14:38:36 +01:00
vtabz.s Removed (pretty inconsistently used) tab chars from source code base. 2013-05-09 13:57:12 +02:00
waitvsync.s Added waitvsync() for the Enhanced Apple //e. 2020-06-18 21:44:57 +02:00
wherex.s Removed (pretty inconsistently used) tab chars from source code base. 2013-05-09 13:57:12 +02:00
wherey.s Removed (pretty inconsistently used) tab chars from source code base. 2013-05-09 13:57:12 +02:00
write.s Removed (pretty inconsistently used) tab chars from source code base. 2013-05-09 13:57:12 +02:00