ol.sc [Mon, 22 Oct 2012 17:37:10 +0000 (17:37 +0000)]
On Cywin with its (too) expensive fork() this change cuts down minimal re-build times from nearly 2 minutes to approx. 6 seconds. Additionally it looks in all directories in the first list for "override" files, not just in one.
ol.sc [Fri, 19 Oct 2012 07:19:08 +0000 (07:19 +0000)]
The 128+x character codes were very likely intended to be interpreted by cputs and translated into explicit drawing of short lines. However there was no code to do so at all. Given that the emulation of a characterbased API on a graphics system isn't the premier choice for a sophisticated UI it doesn't seem appropriate to invest into actually implementing the approach described above. Therefore I just replaced the character codes with a '+'.
ol.sc [Fri, 19 Oct 2012 06:53:55 +0000 (06:53 +0000)]
Removed cpputs/cpputsxy as they don't work and as there's really very little use for proprietary extensions of a character API emulated on a graphics systems.
ol.sc [Tue, 16 Oct 2012 21:39:40 +0000 (21:39 +0000)]
Implemented __syschdir on CBM. As getcwd returns a cached directory any direct access to __curunit would cause inconsistencies. Therefore __curunit was renamed to curunit to prohibit user access.
ol.sc [Tue, 16 Oct 2012 06:34:38 +0000 (06:34 +0000)]
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.
ol.sc [Mon, 15 Oct 2012 21:59:51 +0000 (21:59 +0000)]
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.
ol.sc [Thu, 11 Oct 2012 18:22:49 +0000 (18:22 +0000)]
Removed DIO specific typedefs which were just aliases to basic types and replaced the term 'drive' with 'device' in order to harmonize with the recently added device.h.
ol.sc [Wed, 10 Oct 2012 19:32:30 +0000 (19:32 +0000)]
initcwd will be called from the upcoming __syschdir so it has to be moved out of the INIT segment - and so it doesn't make sense anymore to keep devicestr as separate module anymore as the integration with initcwd allows to omit the jmp from the latter to the former.
ol.sc [Tue, 2 Oct 2012 16:41:40 +0000 (16:41 +0000)]
Turned the 'ST' status byte into a symbol resolved by the linker in order to allow to use it from code living in the 'cbm' directory.
Moved getdevice.s from 'c64'/'c128' to 'cbm' making use of the new 'ST' setup.
Turned the 'ST' status byte into a symbol resolved by the linker in order to allow to use it from code living in the 'cbm' directory.
Moved getdevice.s from 'c64'/'c128' to 'cbm' making use of the new 'ST' setup.
Adjusted according to the recently updated readdir() doc that now says:
"On several platforms, namely the CBMs and the Atari, the disk drives get confused when opening/closing files between directory reads. So for example a program that reads the list of files on a disk, and after each call to readdir, opens the file to process it, will fail.
Possible solutions are reading the directory into memory before processing the file list, or to reset the directory by seeking to the correct position after opening/closing a file:
seekdir (DIR, telldir (DIR));
Platforms known to work without problems are: Apple."
uz [Mon, 17 Sep 2012 15:09:39 +0000 (15:09 +0000)]
Fixed a bug reported by thefox: The .CHARMAP command must not accept indices
or character codes with a value of zero. The assembler runs into a CHECK in
tgttrans anyway if the index is zero.
Added a "fillval" attribute to the segment definition. When given, it
overrides the value from the memory area for all space that lies within the
segment itself.
uz [Wed, 22 Aug 2012 21:24:54 +0000 (21:24 +0000)]
Do not try to dump an expression that has errors (circular references in this
case) because the dump routine doesn't detect this and runs into an endless
recursion.
uz [Mon, 20 Aug 2012 20:07:05 +0000 (20:07 +0000)]
New option --relax-checks that disable the check for a match beween size oif
an expression and the address size. Will allow short branches between segments
among other things. Suggested by Spiro Trikaliotis.
ol.sc [Wed, 8 Aug 2012 21:23:18 +0000 (21:23 +0000)]
Added somewhat more complex demo. It looks for emdrivers in the current directory and tries to load them until one loads successfully. In that case it "streams" its overlay files into extended memory. Finally it loads its overlays from extended memory (or disk) and calls into them.
Choose another way to fix the issue from r5804: When parsing the directory
name, add a file mask, so the result is "$0:*" or similar. When specified like
this, the drive accepts the r/o specifier ",R" so we don't have to complicate
the code in open().
Don't add the current directory to the list of search paths. If the main file
is located there, it is added anyway. If the main file is located elsewhere,
we don't want to search in the current directory.
Don't add the current directory to the list of search paths. If the main file
is located there, it is added anyway. If the main file is located elsewhere,
we don't want to search in the current directory.
uz [Sun, 22 Jul 2012 11:07:46 +0000 (11:07 +0000)]
Rewrote tgi_load_driver in assembler and fixed a possible memory leak when
doing so. Changed the behaviour in case a driver is already loaded: Since the
library cannot know if this driver was linked statically or loaded
dynamically, an already installed driver is considered an error. It must be
removed before calling tgi_load_driver.
uz [Tue, 17 Jul 2012 18:30:05 +0000 (18:30 +0000)]
Fixed an error in the macro package that prevented the macros to work
correctly. The short forms of the jumps were never choosen. The error was
introduced with release 3176 in 2004(!) and reported by thefox.
uz [Sun, 15 Jul 2012 12:34:35 +0000 (12:34 +0000)]
Move the _filetype variable into its own module, so people who want to change
the default can replace exactly this module without interfering with other
stuff.