1
0
mirror of https://github.com/Interlisp/maiko.git synced 2026-04-17 08:10:55 +00:00

Use correct type for FIXP (and pointer to it), and reformat for readability in my.h

This commit is contained in:
Nick Briggs
2022-08-13 19:33:24 -07:00
parent 0e7dc75fd9
commit 142b5679cf

View File

@@ -76,40 +76,50 @@
static inline LispPTR static inline LispPTR
aref_switch(unsigned type, LispPTR tos, LispPTR baseL, int index) aref_switch(unsigned type, LispPTR tos, LispPTR baseL, int index)
{ {
LispPTR result; int result;
DLword *wordp; DLword *wordp;
switch (type) switch (type)
{ {
case 38: /* pointer : 32 bits */ case 38: /* pointer : 32 bits */
return(*(((LispPTR *)Addr68k_from_LADDR(baseL)) + index)); return(*(((LispPTR *)Addr68k_from_LADDR(baseL)) + index));
case 20: /* signed : 16 bits */
case 20: /* signed : 16 bits */
result = (GETWORD(((DLword *)Addr68k_from_LADDR(baseL)) + index)) & 0xFFFF; result = (GETWORD(((DLword *)Addr68k_from_LADDR(baseL)) + index)) & 0xFFFF;
if (result & 0x8000) return(result | S_NEGATIVE); if (result & 0x8000) return(result | S_NEGATIVE);
else return(result | S_POSITIVE); else return(result | S_POSITIVE);
case 67: /* Character : 8 bits */
return(S_CHARACTER | ((GETBYTE(((char *)Addr68k_from_LADDR(baseL)) + index)) & 0xFF)); case 67: /* Character : 8 bits */
case 22: /* signed : 32 bits */ return(S_CHARACTER | ((GETBYTE(((char *)Addr68k_from_LADDR(baseL)) + index)) & 0xFF));
result = *(((LispPTR *)Addr68k_from_LADDR(baseL)) + index);
N_ARITH_SWITCH(result); case 22: /* signed : 32 bits */
case 0: /* unsigned : 1 bit per element */ result = *(((int *)Addr68k_from_LADDR(baseL)) + index);
return(S_POSITIVE | (((GETBYTE(((char *)Addr68k_from_LADDR(baseL)) + (index >> 3))) >> (7 - (index & 7))) & 1)); N_ARITH_SWITCH(result);
case 3: /* unsigned : 8 bits per element */
return(S_POSITIVE | ((GETBYTE(((char *)Addr68k_from_LADDR(baseL)) + index)) & 0xFF)); case 0: /* unsigned : 1 bit per element */
case 4: /* unsigned : 16 bits per element */ return(S_POSITIVE | (((GETBYTE(((char *)Addr68k_from_LADDR(baseL)) + (index >> 3))) >> (7 - (index & 7))) & 1));
return(S_POSITIVE | ((GETWORD(((DLword *)Addr68k_from_LADDR(baseL)) + index)) & 0xFFFF));
case 54: /* Float : 32 bits */ case 3: /* unsigned : 8 bits per element */
wordp = createcell68k(TYPE_FLOATP); return(S_POSITIVE | ((GETBYTE(((char *)Addr68k_from_LADDR(baseL)) + index)) & 0xFF));
*((LispPTR *)wordp) = *(((LispPTR *)Addr68k_from_LADDR(baseL)) + index);
return(LADDR_from_68k(wordp)); case 4: /* unsigned : 16 bits per element */
case 68: /* Character : 16 bits */ return(S_POSITIVE | ((GETWORD(((DLword *)Addr68k_from_LADDR(baseL)) + index)) & 0xFFFF));
return(S_CHARACTER | ((GETWORD(((DLword *)Addr68k_from_LADDR(baseL)) + index)) & 0xFFFF));
case 86: /* XPointer : 32 bits */ case 54: /* Float : 32 bits */
return(*(((LispPTR *)Addr68k_from_LADDR(baseL)) + index)); wordp = createcell68k(TYPE_FLOATP);
default: /* Illegal or Unimplemented */ *((LispPTR *)wordp) = *(((LispPTR *)Addr68k_from_LADDR(baseL)) + index);
ERROR_EXIT(tos); return(LADDR_from_68k(wordp));
}/* end switch typenumber */
case 68: /* Character : 16 bits */
return(S_CHARACTER | ((GETWORD(((DLword *)Addr68k_from_LADDR(baseL)) + index)) & 0xFFFF));
case 86: /* XPointer : 32 bits */
return(*(((LispPTR *)Addr68k_from_LADDR(baseL)) + index));
default: /* Illegal or Unimplemented */
ERROR_EXIT(tos);
}/* end switch typenumber */
} }
#define aset_switch(type, tos) \ #define aset_switch(type, tos) \