Commit Graph

114 Commits

Author SHA1 Message Date
Stephen Heumann
33ab148cea Merge commit 'd95f9f29d27d02d8c57bd23620f41afbf7607ac5' 2018-02-27 23:01:51 -06:00
Stephen Heumann
62f6b712e7 Add support for 'F', 'a', and 'A' conversion specifiers for scanf (C99).
These all behave identically to 'f'. Note that none of these accept the hexadecimal floating-point representation as input, which they should under C99.
2018-02-27 21:39:49 -06:00
Stephen Heumann
a6d7d91f37 Add initial support for 'F', 'a', and 'A' conversion specifiers for printf (C99).
'F' is currently treated identically to 'f'. This should be a correct implementation for 'F' under C99. (It's not quite correct for 'f', which should print "inf" or "nan" in lower case according to C99.)

'A' and 'a' are not correctly formatted (they are currently treated identically to 'E' and 'e', rather than using the hexadecimal floating-point representation specified by C99), but at least they print the number in some form and consume the correct number of bytes so that the stack isn't corrupted and subsequent conversion specifications print the right values.

The floating-point formats are also moved to the top of the list of conversion specifiers to check, which means they are checked last. This should marginally speed up the integer cases.
2018-02-27 21:29:22 -06:00
Stephen Heumann
f58ef8aea3 Add support for 'z', 't', and 'j' length modifiers in printf and scanf (C99).
'z' corresponds to size_t, 't' to ptrdiff_t, and 'j' to intmax_t. In ORCA/C, these are all 32-bit types, so these size modifiers are equivalent to 'l'. (Note that C99/C11 require intmax_t to be at least 64-bit, but that is not currently the case in ORCA/C since there is no 64-bit integer type.)
2018-02-27 18:44:07 -06:00
Stephen Heumann
e3c0c962d4 Revert various stdio changes to make it match the version in the ORCA/C 2.1.1 B3 ORCALib binary on Opus ][.
The reverted changes relate mainly to adding a second character position in the putback buffer, but the library with those changes crashes on basic stdio operations like printing a string.

For now, this patch reverts stdio to a working, tested version. If the reverted changes are valuable, they can be fixed and then reintroduced later.
2018-02-26 22:49:10 -06:00
Kelvin Sherlock
d95f9f29d2 during initial count of arguments on the command-line, use the same logic as the second count when the argv vector is built. 2018-02-24 22:40:01 -05:00
Stephen Heumann
89acbf2ced
Merge pull request #2 from ksherlock/toupper
tolower/toupper should work with EOF/-1
2017-11-01 18:10:48 -05:00
Stephen Heumann
56b101a214 Change keep location for stdio to be in the obj directory. 2017-10-31 23:09:27 -05:00
Stephen Heumann
9d116eae35 Rename isctrl() function to correct standard name of iscntrl().
This doesn't affect the macro, which already had the correct name.

Fixes the bug in the libca15.c test case.
2017-10-31 22:52:12 -05:00
Stephen Heumann
649aef5b0f Change sys_nerr from 6 to 12, to reflect actual number of error messages.
Fixes the bug in the libca05.c test case.
2017-10-31 22:50:22 -05:00
Kelvin Sherlock
6ebb56af57 fix tolower/toupper to work with EOF/-1 2017-10-31 22:10:46 -04:00
Stephen Heumann
e4a8afe476
Merge pull request #1 from ksherlock/crlf
Convert to LF for line endings.
2017-10-31 19:24:09 -05:00
Kelvin Sherlock
578bda8439 CR -> LF 2017-10-31 13:14:07 -04:00
mikew50
954c3a02b5 ORCA libraries, from the Opus ][ CD 2017-10-01 18:00:58 -06:00