* device/lib/_memcpy.c,
* device/lib/_memmove.c,
* device/lib/_mulint.c,
* device/lib/ser_ir.c,
* device/lib/ser_ir_cts_rts.c,
* device/lib/_strcmp.c,
* device/lib/_strtok.c: fixed pragmas to non-deprecated form
* src/z80/main.c (_process_pragma): add support for pragmas bank and
portmode; added deprecation warning for bank= and protmode= forms.
Also, guard against buffer overflow.
* src/z80/gen.c (aopGet): generate better code for sfr banked read
git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@3130
4a8a32a2-be11-0410-ad9d-
d568d2c75423
+2004-01-13 Erik Petrich <epetrich@ivorytower.norman.ok.us>
+
+ * device/include/z180.h,
+ * device/lib/_memcpy.c,
+ * device/lib/_memmove.c,
+ * device/lib/_mulint.c,
+ * device/lib/ser_ir.c,
+ * device/lib/ser_ir_cts_rts.c,
+ * device/lib/_strcmp.c,
+ * device/lib/_strtok.c: fixed pragmas to non-deprecated form
+ * src/z80/main.c (_process_pragma): add support for pragmas bank and
+ portmode; added deprecation warning for bank= and protmode= forms.
+ Also, guard against buffer overflow.
+ * src/z80/gen.c (aopGet): generate better code for sfr banked read
+
2004-01-13 Erik Petrich <epetrich@ivorytower.norman.ok.us>
* src/hc08/main.c (_hc08_genAssemblerPreamble): fixed bug #875487. Also
changed interrupt vector table generation to only emit declared vectors.
* device/include/Makefile.in: added missing backslash
- * device/lib/pic16/Makefile.rules: pass $(MODELFLAGS) to compiler
+ * device/lib/pic16/Makefile.rules: add $(MODELFLAGS) to $(CFLAGS)
2004-01-13 Vangelis Rokas <vrokas@otenet.gr>
#endif
/* will want this to be the case by default (I think) */
-#pragma portmode=z180
+#pragma portmode z180
static void _ENABLE_Z180_ASSEMBLER_(void) _naked { _asm .hd64 _endasm; }
{
#if _SDCC_Z80_STYLE_LIB_OPT
-#pragma NOINDUCTION
+#pragma noinduction
char * d = dst;
char * s = src;
{
#if _SDCC_Z80_STYLE_LIB_OPT
-#pragma NOINDUCTION
+#pragma noinduction
char * d;
char * s;
#if defined(_MULINT_ASM_LARGE)
-#pragma SAVE
-#pragma LESS_PEDANTIC
+#pragma save
+#pragma less_pedantic
int
_mulint (int a, int b)
{
ret
_endasm;
}
-#pragma RESTORE
+#pragma restore
#elif defined(_MULINT_ASM_SMALL) || defined(_MULINT_ASM_SMALL_AUTO)
-#pragma SAVE
-#pragma LESS_PEDANTIC
+#pragma save
+#pragma less_pedantic
int
_mulint_dummy (void) _naked
{
_endasm ;
}
-#pragma RESTORE
+#pragma restore
#else
)
{
#if _SDCC_Z80_STYLE_LIB_OPT
-#pragma NOINDUCTION
+#pragma noinduction
char ret = 0 ;
char * src = asrc;
#include "string.h"
#if defined(SDCC_MODEL_LARGE) || defined (SDCC_MODEL_FLAT24)
-#pragma NOINDUCTION
-#pragma NOINVARIANT
+#pragma noinduction
+#pragma noinvariant
#endif
char * strtok (
ES = 1;
return (c);
}
-#pragma SAVE
-#pragma NOINDUCTION
+#pragma save
+#pragma noinduction
void ser_puts (unsigned char *s)
{
unsigned char c;
ser_putc (c);
}
}
-#pragma RESTORE
+#pragma restore
void ser_gets (unsigned char *s, unsigned char len)
{
unsigned char pos, c;
return (c);
}
-#pragma SAVE
-#pragma NOINDUCTION
+#pragma save
+#pragma noinduction
void ser_puts(unsigned char *s)
{
unsigned char c;
ser_putc (c);
}
}
-#pragma RESTORE
+#pragma restore
void ser_gets(unsigned char *s, unsigned char len)
{
{ /*.p.t.20030716 handling for i/o port read access for Z80 */
if( aop->paged )
{ /* banked mode */
- if( aop->bcInUse ) emit2( "push bc" );
-
- emit2( "ld bc,#%s", aop->aopu.aop_dir );
- emit2( "in a,(c)" );
-
- if( aop->bcInUse )
- emit2( "pop bc" );
- else
- spillPair (PAIR_BC);
+ /* reg A goes to address bits 15-8 during "in a,(x)" instruction */
+ emit2( "ld a,!msbimmeds", aop->aopu.aop_dir);
+ emit2( "in a,(!lsbimmeds)", aop->aopu.aop_dir);
}
else if( z80_opts.port_mode == 180 )
{ /* z180 in0/out0 mode */
static int
_process_pragma (const char *sz)
{
- if( startsWith( sz, "bank=" ))
+ if( startsWith( sz, "bank=" ) || startsWith( sz, "bank " ))
{
char buffer[128];
- strcpy (buffer, sz + 5);
+
+ if (sz[4]=='=')
+ werror(W_DEPRECATED_PRAGMA, "bank=");
+
+ strncpy (buffer, sz + 5, sizeof (buffer));
+ buffer[sizeof (buffer) - 1 ] = '\0';
chomp (buffer);
if (isdigit (buffer[0]))
{
/* Arg was a bank number. Handle in an ASM independent
way. */
char num[128];
- strcpy (num, sz + 5);
+ strncpy (num, sz + 5, sizeof (num));
+ num[sizeof (num) -1] = '\0';
chomp (num);
switch (_G.asmType)
code->sname = gbz80_port.mem.code_name;
return 0;
}
- else if( startsWith( sz, "portmode=" ))
+ else if( startsWith( sz, "portmode=" ) || startsWith( sz, "portmode " ))
{ /*.p.t.20030716 - adding pragma to manipulate z80 i/o port addressing modes */
char bfr[128];
- strcpy( bfr, sz + 9 );
+ if (sz[8]=='=')
+ werror(W_DEPRECATED_PRAGMA, "portmode=");
+
+ strncpy( bfr, sz + 9, sizeof (bfr));
+ bfr[sizeof (bfr) - 1] = '\0';
chomp( bfr );
if ( !strcmp( bfr, "z80" )){ z80_opts.port_mode = 80; }