On Wed, Nov 11, 2009 at 07:46:29AM -0800, Fatih Aygün wrote: > I agree in principle. But, for atari, lack of memory points to a very specific (and probably > common) problem, the fact that the user forgot to set __RESERVED_MEMORY__ when > linking. A separate code for NO_IOCB can save some people hours of debugging. What > about a platform dependent error code? tgi_geterror can return something like > TGI_ERROR_PLATFORM and tgi_getplatformspecificerror can return the appropriate platform > specific error code, which are already a part of the library. I have to admit that I hate the idea of having platform specific error codes in TGI. If every single platform defines its own error codes, how is a programmer supposed to handle that, when writing portable programs? It will also increase code size for the program itself, which needs to check for every platform dependent error code. It will increase code size for the library, which must map all these error codes to strings. When loading the drivers, there's a lot that may go wrong. The device may not present, the library may be out of file descriptors, the driver may not be on disk, there may not be enough memory to load the driver or whatever. All this maps to TGI_ERR_CANNOT_LOAD - and has not been a problem until now. So I'm sure the "saves hours of debugging" argument is greatly exaggerated. Using a platform dependent error function just complicates things and adds another return value that has to be checked. How bloated will we want the API to be? The Atari is already the platform that generates the biggest executables, and I don't want to make this the general policy: ----------------------------------------------------------------------------- uz@trixie:~/src/cc65/test$ cat test.c int main () { return 0; } uz@trixie:~/src/cc65/test$ for sys in apple2 atari atmos c128 c16 c64 plus4 vic20; do make -s SYS=$sys clean all; echo -en "$sys:\t"; ls -l test; done apple2: -rw-r--r-- 1 uz uz 480 2009-11-11 17:14 test atari: -rw-r--r-- 1 uz uz 553 2009-11-11 17:14 test atmos: -rw-r--r-- 1 uz uz 230 2009-11-11 17:14 test c128: -rw-r--r-- 1 uz uz 346 2009-11-11 17:14 test c16: -rw-r--r-- 1 uz uz 322 2009-11-11 17:14 test c64: -rw-r--r-- 1 uz uz 331 2009-11-11 17:14 test plus4: -rw-r--r-- 1 uz uz 359 2009-11-11 17:14 test vic20: -rw-r--r-- 1 uz uz 313 2009-11-11 17:14 test uz@trixie:~/src/cc65/test$ cat test.c #include <stdio.h> int main () { printf ("Hello world!\n"); return 0; } uz@trixie:~/src/cc65/test$ for sys in apple2 atari atmos c128 c16 c64 plus4 vic20; do make -s SYS=$sys clean all; echo -en "$sys:\t"; ls -l test; done apple2: -rw-r--r-- 1 uz uz 2956 2009-11-11 17:14 test atari: -rw-r--r-- 1 uz uz 3273 2009-11-11 17:14 test atmos: -rw-r--r-- 1 uz uz 2478 2009-11-11 17:14 test c128: -rw-r--r-- 1 uz uz 2699 2009-11-11 17:14 test c16: -rw-r--r-- 1 uz uz 2675 2009-11-11 17:14 test c64: -rw-r--r-- 1 uz uz 2684 2009-11-11 17:14 test plus4: -rw-r--r-- 1 uz uz 2759 2009-11-11 17:14 test vic20: -rw-r--r-- 1 uz uz 2666 2009-11-11 17:14 test ----------------------------------------------------------------------------- > Unfortunately I get "Constant expression expected" when I try to use normal constants > with .if directive. I would love to be able to use normal constants if it's feasible and reasonable to > let the .if and similar directives could use them. I hate defines too :) Within local scopes, you must use the global namespace designator (::) to explicitly address symbols in the global namespace. In a local scope, when a symbol is referenced that wasn't defined in that scope before, the assembler cannot decide at that point if a local definition will follow, or if the global symbol should be used. It has to delay that decision until end of assembly. For operations that control code generation, like .res, .if or similar, delaying the decision is not possible so the assembler expects an expression that resolves to something constant at that point of assembly. If you explictly specify that you want the symbol from the global namespace using ::symbol, the error message will go away. Regards Uz -- Ullrich von Bassewitz uz@musoftware.de ---------------------------------------------------------------------- To unsubscribe from the list send mail to majordomo@musoftware.de with the string "unsubscribe cc65" in the body(!) of the mail.Received on Wed Nov 11 17:19:04 2009
This archive was generated by hypermail 2.1.8 : 2009-11-11 17:19:07 CET