Mario Patiño [Sat, 3 Aug 2013 17:08:36 +0000 (19:08 +0200)]
Defined a struct to contain the date and time data
To keep backward compatibility auxtype and the date/time are kept
separated.
A struct similar to the one used in dirent.h is used to access the
create_date and create_time fields.
Mario Patiño [Sat, 3 Aug 2013 13:42:16 +0000 (15:42 +0200)]
Promoted _auxtype to a struct to gain access to additional fields
While creating files there was no possibility to explicitly set the
time or date.
This is necessary for example while copying files since the original
time and date should be kept.
Oliver Schmidt [Sat, 27 Jul 2013 15:21:07 +0000 (17:21 +0200)]
Added sprintf() test contributed by Ullrich von Bassewitz.
Comment from the author:
Some may remember that there was a problem with printf reported a long time
ago. I got curious and over the weekend, I wrote a program to test printf. Or
better: The underlying formatting code, which is used for the whole printf()
family of functions including cprintf and sprintf.
The result is what made me say "oops": The program tests 377 different
conversions. The cc65 printf implementation fails in 144 cases. In 31 of these
cases, it fails so badly that it outputs screens of garbage, or even crashes
the machine, so I had to disable these tests to proceed.
Please note that you can compile the code with gcc for x86, but it will show
failures. This is because the expected results are hardcoded and the integer
sizes of gcc are different, so the conversion results won't match the ones
expected in the code.
Greg King [Wed, 10 Jul 2013 06:37:09 +0000 (02:37 -0400)]
Fixed ld65's precalculation of memory-area sizes.
Before this fix, BSS-type and ZP-type segments never were counted. Now, they are counted if their memory areas are filled. (It must be done because their places in the output file are filled.)
The fix allows us to build programs for the CBM510 and CBM610 platforms. We won't see an "Internal error" diagnostic message about a bad file-offset.
Don't save and restore the zero page locations used.
Saves 19 bytes code (in the exe file) and reduces memory footprint
of the program by 45 bytes (code & bss).
Greg King [Sun, 23 Jun 2013 07:18:28 +0000 (03:18 -0400)]
Used a library-reference method to calibrate lightpen drivers.
The mouse reference is a pointer. If it's NULL, the driver uses a default. If it's non-NULL, then it points to a function that the driver can call. That function will adjust the driver's calibration value. It could ask the user to adjust the pen; or, it could read a file that holds a value from a previous calibration.
Application writers can choose how it's done: a function that's provided by the library, a custom function, or nothing.
Oliver Schmidt [Fri, 7 Jun 2013 21:13:46 +0000 (23:13 +0200)]
Added support for 'prefix'.
If the variable 'prefix' is defined then the builtin search paths are set to
$(prefix)/lib/cc65/... allowing to build binaries intended for installation.
Note that the library build still works with these binaries as it generally
overrides the builtin search paths by setting the CC65_HOME env var.
Oliver Schmidt [Tue, 4 Jun 2013 21:39:00 +0000 (23:39 +0200)]
Use unique variables for cc65 toolchain.
Originally I used the usual variables (like $(CC) and $(CFLAGS) ) but after
all this doesn't make sense as any predefined values and/or user defined
settings can only be wrong.
Oliver Schmidt [Fri, 31 May 2013 22:11:31 +0000 (00:11 +0200)]
Added library reference em_libref to EMD interface.
Occasionally dynamically drivers suffer from not being to refer to
content in the C library. Therefore I added a mechanism to allow
a C library for a certian target to define a symbol that will be
handed over to dynamic drivers for that target. Then the drivers
can use their refernce to that symbol to access content in the C
library.
Oliver Schmidt [Fri, 31 May 2013 19:30:14 +0000 (21:30 +0200)]
Explicitly set search paths for libraries build.
The libraries build is prepared to work with binaries not part of the current
working tree. But in this case the default search path surely points to some
other working tree. Even the binaries in this working tree might have been
compiled with non-standard builtin search paths.
Anyway when building the libraries we want always to use the headers from
the current working tree. Therefore we want to set them explicitly. Instead
of setting all in all five paths on the command lines of ca65, cc65 and ld65 I
opted to just set the single environment variable.
Oliver Schmidt [Tue, 28 May 2013 20:07:04 +0000 (22:07 +0200)]
Brought back mouse driver source code.
The mouse driver source code in question was removed two years
ago with commit 6cbbe66c87fc19c322a0dd72a5c8ef094ea90c90.
It seems however desirable to have it around visible in the source
code tree for reference purposes.
Oliver Schmidt [Tue, 28 May 2013 19:56:37 +0000 (21:56 +0200)]
Introduced target 'atarixl'.
The target 'atarixl' is to be used for Atari XL (and better) machines.
It will disable the OS ROM and enable the Shadow RAM available on
those machine.
Note: This commit is only the inital step towards for this goal that just
replicates the target 'atari' as a starting point!
Oliver Schmidt [Tue, 28 May 2013 19:20:37 +0000 (21:20 +0200)]
Renamed Atari drivers.
As a preparation for the introduction of the 'atarixl' target it is
necessary that all drivers have a base name...
- no longer than 7 characters
- with a common prefix
Oliver Schmidt [Mon, 20 May 2013 18:35:42 +0000 (20:35 +0200)]
Added 'sim6502' and 'sim65C02' targets.
The targets allow to run cc65 programs in the sim65 exection
einvironment. As there are no "real" i/o facilities there's no
need for header files. Paravirtualized entry points are mapped
to $FFF0 ff. There's a large cc65 progam area from $0200-$FFEF.
The binary format includes a one-byte header indicating the required
execution environment: The value 0 means 6502 and the value 1
means 65C02. The load adress for the binary is fixed to $0200.
Note: Running sim65C02 programs currently doesn't work bcause
sim65 doesn't actually implement 65C02 opcodes.
Oliver Schmidt [Mon, 20 May 2013 18:20:14 +0000 (20:20 +0200)]
Turned sim65 into a lightweight cc65 execution environment.
The sim65 source code has been a construction site for over a decade.
I was looking for a simple cc65 program execution environment for
regression tests. So I decided to re-purpose sim65 for that task by
removing about everything but the 6502 emulation.
There's no memory mapped i/o emulation whatsoever. Rather exit(),
open(), close(), read() and write() calls are supported by mapping
them through a thin paravirtualization layer to the corresponding
host os functions.
Note: The sim65 6502 emulation provides means to switch between
6502 and 65C02 emulation but currently there are no actual 65C02
opcodes implemented.
Oliver Schmidt [Fri, 17 May 2013 14:21:05 +0000 (16:21 +0200)]
Have 'avail' not be dependent on 'all'.
There are two reasons for removing this dependency:
- If someone does 'make avail' on the top level Makefile he ends up with
binaries but without libraries - not nice. Better do just "nothing" and
have hin understand that he needs to do 'make [all]' on the top level
Makfile first.
- If 'make avail' is done via 'sudo' it isn't desirable to do a large amount
of work as root.
BTW: I wasn't sure if this dependency is a good thing in the first place
but I saw it in many examples ('install' depending on 'all') so I did it too.
Oliver Schmidt [Wed, 15 May 2013 09:59:51 +0000 (11:59 +0200)]
Renamed [un]install goals to [un]avail.
The [un]install make goals have a rather fixed meaning for *ix users. The simple
symlinks provided here don't match the expectations users have from [un]install.
Therefore it is appropriate to rename them to "something" not tied to specific
expectations.
Oliver Schmidt [Wed, 8 May 2013 23:32:48 +0000 (01:32 +0200)]
Hack: Changed TARGET order to have apple2enh.lib available for convert.system.
There's a quite special case of a targetutil for the TARGET geos-apple having to be
built as TARGET apple2enh binary. We can't just add a dependency to ../lib/apple2enhlib
because the TARGETs are built in individual make instances (because of vpath).
Doing that the "right way" would be _very_ complicated and would turn the Makefiles way
less readable. Therefore I decided to solve that by just reordering the TARGETs. Surely
this won't work if i.e. 'make geos-apple' is entered on a clean system. But still I consider
it appropriate.
I ordered the TARGETs btw so that they are more in an alphabetical order...