From e3bde264090cf82e2c371c6c4436570e1852b541 Mon Sep 17 00:00:00 2001 From: Olaf Barthel Date: Fri, 18 Apr 2008 10:11:59 +0000 Subject: [PATCH] - Added 68k stubs to amiga_rexxvars.c for the OS4 build to use. The new code now works just about exactly like the amiga.lib RVI code used to do, which means that there is no artificial length limit for the number of characters a string retrieved may have, and the code is largely reentrant. git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15191 87f5fb63-7c3d-0410-a384-fd976d0f7a62 --- library/GNUmakefile.os4 | 8 ++++---- library/amiga_rexxvars.c | 16 +++++++--------- library/changes | 5 +++++ 3 files changed, 16 insertions(+), 13 deletions(-) diff --git a/library/GNUmakefile.os4 b/library/GNUmakefile.os4 index 0dffe56..af6d7df 100644 --- a/library/GNUmakefile.os4 +++ b/library/GNUmakefile.os4 @@ -1,5 +1,5 @@ # -# $Id: GNUmakefile.os4,v 1.111 2007-01-06 10:09:48 obarthel Exp $ +# $Id: GNUmakefile.os4,v 1.112 2008-04-18 10:11:59 obarthel Exp $ # # :ts=8 # @@ -212,19 +212,19 @@ lib.threadsafe/baserel/%.o : %.c ############################################################################## define COMPILE -$(MAKEDIR) $(@D) +-$(MAKEDIR) $(@D) echo "Compiling $< [$(@D)]" $(CC) -o $@ -c $(CFLAGS) $< $(LOG_COMMAND) endef define ASSEMBLE -$(MAKEDIR) $(@D) +-$(MAKEDIR) $(@D) echo "Assembling $< [$(@D)]" $(CC) -o $@ -c $(AFLAGS) $< $(LOG_COMMAND) endef define MAKELIB -$(MAKEDIR) $@ +-$(MAKEDIR) $@ $(DELETE) $@ echo "Making $@" $(AR) $@ $^ $(LOG_COMMAND) diff --git a/library/amiga_rexxvars.c b/library/amiga_rexxvars.c index 4ba6584..bf85dd1 100644 --- a/library/amiga_rexxvars.c +++ b/library/amiga_rexxvars.c @@ -1,5 +1,5 @@ /* - * $Id: amiga_rexxvars.c,v 1.18 2008-04-18 10:06:07 obarthel Exp $ + * $Id: amiga_rexxvars.c,v 1.19 2008-04-18 10:11:59 obarthel Exp $ * * :ts=4 * @@ -212,7 +212,7 @@ _IsSymbol(STRPTR name,LONG * symbol_length_ptr) } STATIC VOID -_CurrentEnv(struct RexxTask *task,struct Environment ** environment_ptr); +_CurrentEnv(struct RexxTask *task,struct Environment ** environment_ptr) { STATIC CONST UWORD code[] = { 0x4EAE,0xFF94,0x2488,0x4E75 }; /* jsr -108(a6) ; move.l a0,(a2) ; rts */ @@ -224,7 +224,7 @@ _CurrentEnv(struct RexxTask *task,struct Environment ** environment_ptr); } STATIC struct Node * -_FetchValue(struct Environment * env,struct NexxStr * stem,struct NexxStr * compound,struct Node *symbol_table_node,LONG * is_literal_ptr,struct NexxStr ** value_ptr); +_FetchValue(struct Environment * env,struct NexxStr * stem,struct NexxStr * compound,struct Node *symbol_table_node,LONG * is_literal_ptr,struct NexxStr ** value_ptr) { STATIC CONST UWORD code[] = { 0x4EAE,0xFFB8,0x2488,0x2681,0x4E75 }; /* jsr -72(a6) ; move.l a0,(a2) ; move.l d1,(a3) ; rts */ struct Node * result; @@ -233,7 +233,7 @@ _FetchValue(struct Environment * env,struct NexxStr * stem,struct NexxStr * comp ET_RegisterA0,env, ET_RegisterA1,stem, ET_RegisterD0,compound, - ET_RegisterD1,symbol_table, + ET_RegisterD1,symbol_table_node, ET_RegisterA2,is_literal_ptr, ET_RegisterA3,value_ptr, ET_RegisterA6,RexxSysBase, @@ -243,7 +243,7 @@ _FetchValue(struct Environment * env,struct NexxStr * stem,struct NexxStr * comp } STATIC struct Node * -_EnterSymbol(struct Environment * env,struct NexxStr * stem,struct NexxStr * compound); +_EnterSymbol(struct Environment * env,struct NexxStr * stem,struct NexxStr * compound) { STATIC CONST UWORD code[] = { 0x4EAE,0xFFBE,0x4E75 }; /* jsr -66(a6) ; rts */ struct Node * result; @@ -259,7 +259,7 @@ _EnterSymbol(struct Environment * env,struct NexxStr * stem,struct NexxStr * com } STATIC VOID -_SetValue(struct Environment * env,struct NexxStr * value,struct Node * symbol_table_node); +_SetValue(struct Environment * env,struct NexxStr * value,struct Node * symbol_table_node) { STATIC CONST UWORD code[] = { 0x4EAE,0xFFAC,0x4E75 }; /* jsr -84(a6) ; rts */ struct Node * result; @@ -270,11 +270,9 @@ _SetValue(struct Environment * env,struct NexxStr * value,struct Node * symbol_t ET_RegisterD0,symbol_table_node, ET_RegisterA6,RexxSysBase, TAG_END); - - return(result); } -STATIC VOID +STATIC ULONG _StrcpyN(STRPTR destination,STRPTR source,LONG length) { STATIC CONST UWORD code[] = { 0x4EAE,0xFEF2,0x4E75 }; /* jsr -270(a6) ; rts */ diff --git a/library/changes b/library/changes index a2f457b..6e0b679 100644 --- a/library/changes +++ b/library/changes @@ -1,3 +1,8 @@ +- Added 68k stubs to amiga_rexxvars.c for the OS4 build to use. The new code now + works just about exactly like the amiga.lib RVI code used to do, which means + that there is no artificial length limit for the number of characters a string + retrieved may have, and the code is largely reentrant. + - To work around a bug in the Roadshow TCP/IP stack (since fixed), the waitselect() function now substitutes a 10 microsecond timeout for a zero length timeout.