1
0
mirror of https://github.com/cc65/cc65.git synced 2024-12-25 02:29:52 +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
_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
closedir.c
clrscr.s
color.s
cout.s
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
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
diocommon.s Just removed some trailing spaces. 2018-09-08 23:14:54 +02:00
dioopen.s
dioread.s
diosectcount.s
diosectsize.s
diowrite.s
dir.h
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
filename.s
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
home.s
initcwd.s Just removed some trailing spaces. 2018-09-08 23:14:54 +02:00
iobuf.s
irq.s Made use of recently added Apple scrcode macro. 2016-03-27 18:27:53 +02:00
isdevice.s
joy_stat_stddrv.s
joy_stddrv.s
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
mli.s Protect random counter against ProDOS. 2018-09-08 23:29:59 +02:00
mouse_stat_stddrv.s
mouse_stddrv.s
open.s Renamed INITBSS to INIT and INIT to ONCE. 2016-03-06 21:27:19 +01:00
opendir.c
oserrlist.s
oserror.s Implement exec() for Atari XDOS. 2016-06-13 20:40:01 +02:00
randomize.s
rdkey.s
read.s Renamed INITBSS to INIT and INIT to ONCE. 2016-03-06 21:27:19 +01:00
readdir.c
reboot.s Renamed INITBSS to INIT and INIT to ONCE. 2016-03-06 21:27:19 +01:00
revers.s
rewinddir.c
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
sysmkdir.s
sysremove.s
sysrename.s
sysrmdir.s
sysuname.s
tgi_colors.s
tgi_stat_stddrv.s
tgi_stddrv.s
videomode.s Made use of 65C02 opcode (thx to polluks). 2020-03-05 14:38:36 +01:00
vtabz.s
waitvsync.s Added waitvsync() for the Enhanced Apple //e. 2020-06-18 21:44:57 +02:00
wherex.s
wherey.s
write.s