adding big-endian support across compiler, runtime, and library modules

- adding Platform.LittleEndian to centralize endianness detection
- using SYSTEM.GET with correct byte offset for HUGEINT to smaller type reads on big-endian
- fixing Reals.BytesToHex iteration direction and InitEndian for big-endian
- fixing oocLowReal fraction, IsInfinity, IsNaN using Reals.Expo/SetExpo
- fixing Math.ToREAL and MathL.exponent for big-endian
- fixing In.Int and In.LongInt for big-endian
- fixing outtest.wh byte iteration direction for big-endian
- regenerating all bootstrap C sources
- tested on ppc32
This commit is contained in:
Norayr Chilingarian 2026-07-12 18:16:58 +04:00
parent 93c0198f18
commit 4dd3c395fe
198 changed files with 788 additions and 409 deletions

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspamS */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspamS */
#define SHORTINT INT8 #define SHORTINT INT8
#define INTEGER INT16 #define INTEGER INT16

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#define SHORTINT INT8 #define SHORTINT INT8
#define INTEGER INT16 #define INTEGER INT16
@ -19,6 +19,6 @@ export void *Configuration__init(void)
__DEFMOD; __DEFMOD;
__REGMOD("Configuration", 0); __REGMOD("Configuration", 0);
/* BEGIN */ /* BEGIN */
__MOVE("2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8.", Configuration_versionLong, 76); __MOVE("2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8.", Configuration_versionLong, 76);
__ENDMOD; __ENDMOD;
} }

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#ifndef Configuration__h #ifndef Configuration__h
#define Configuration__h #define Configuration__h

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#define SHORTINT INT8 #define SHORTINT INT8
#define INTEGER INT16 #define INTEGER INT16
@ -942,7 +942,11 @@ void Files_ReadNum (Files_Rider *R, ADDRESS *R__typ, SYSTEM_BYTE *x, ADDRESS x__
} }
q += (INT64)__ASH((__MASK(b, -64) - __ASHL(__ASHR(b, 6), 6)), s); q += (INT64)__ASH((__MASK(b, -64) - __ASHL(__ASHR(b, 6), 6)), s);
Files_Assert(x__len <= 8); Files_Assert(x__len <= 8);
__MOVE((ADDRESS)&q, (ADDRESS)x, x__len); if (Platform_LittleEndian) {
__MOVE((ADDRESS)&q, (ADDRESS)x, x__len);
} else {
__MOVE(((ADDRESS)&q + 8) - (__SHORT(x__len, 32768)), (ADDRESS)x, x__len);
}
} }
void Files_WriteBool (Files_Rider *R, ADDRESS *R__typ, BOOLEAN x) void Files_WriteBool (Files_Rider *R, ADDRESS *R__typ, BOOLEAN x)
@ -972,9 +976,7 @@ void Files_WriteSet (Files_Rider *R, ADDRESS *R__typ, UINT32 x)
{ {
CHAR b[4]; CHAR b[4];
INT32 i; INT32 i;
UINT64 y; i = (INT32)x;
y = x;
i = __VAL(INT32, y);
b[0] = __CHR(i); b[0] = __CHR(i);
b[1] = __CHR(__ASHR(i, 8)); b[1] = __CHR(__ASHR(i, 8));
b[2] = __CHR(__ASHR(i, 16)); b[2] = __CHR(__ASHR(i, 16));

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#ifndef Files__h #ifndef Files__h
#define Files__h #define Files__h

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. rtsSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. rtsSF */
#define SHORTINT INT8 #define SHORTINT INT8
#define INTEGER INT16 #define INTEGER INT16

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. rtsSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. rtsSF */
#ifndef Heap__h #ifndef Heap__h
#define Heap__h #define Heap__h

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#define SHORTINT INT8 #define SHORTINT INT8
#define INTEGER INT16 #define INTEGER INT16
@ -52,7 +52,7 @@ extern void *Modules__init(void);
void Modules_Init (INT32 argc, INT32 argvadr) void Modules_Init (INT32 argc, INT32 argvadr)
{ {
Modules_MainStackFrame = argvadr; Modules_MainStackFrame = argvadr;
Modules_ArgCount = __VAL(INT16, argc); Modules_ArgCount = __SHORT(argc, 32768);
__GET(argvadr, Modules_ArgVector, INT32); __GET(argvadr, Modules_ArgVector, INT32);
Modules_InitHeap(); Modules_InitHeap();
Modules_ModulesInit(); Modules_ModulesInit();

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#ifndef Modules__h #ifndef Modules__h
#define Modules__h #define Modules__h

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#define SHORTINT INT8 #define SHORTINT INT8
#define INTEGER INT16 #define INTEGER INT16
@ -9,6 +9,7 @@
#include "OPM.h" #include "OPM.h"
#include "OPS.h" #include "OPS.h"
#include "OPT.h" #include "OPT.h"
#include "Platform.h"
static INT16 OPB_exp; static INT16 OPB_exp;
@ -216,7 +217,11 @@ static void OPB_SetIntType (OPT_Node node)
static void OPB_SetSetType (OPT_Node node) static void OPB_SetSetType (OPT_Node node)
{ {
INT32 i32; INT32 i32;
__GET((ADDRESS)&node->conval->setval + 4, i32, INT32); if (Platform_LittleEndian) {
__GET((ADDRESS)&node->conval->setval + 4, i32, INT32);
} else {
__GET((ADDRESS)&node->conval->setval, i32, INT32);
}
if (i32 == 0) { if (i32 == 0) {
node->typ = OPT_set32typ; node->typ = OPT_set32typ;
} else { } else {
@ -2584,6 +2589,7 @@ export void *OPB__init(void)
__MODULE_IMPORT(OPM); __MODULE_IMPORT(OPM);
__MODULE_IMPORT(OPS); __MODULE_IMPORT(OPS);
__MODULE_IMPORT(OPT); __MODULE_IMPORT(OPT);
__MODULE_IMPORT(Platform);
__REGMOD("OPB", 0); __REGMOD("OPB", 0);
/* BEGIN */ /* BEGIN */
OPB_maxExp = OPB_log(4611686018427387904LL); OPB_maxExp = OPB_log(4611686018427387904LL);

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#ifndef OPB__h #ifndef OPB__h
#define OPB__h #define OPB__h

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#define SHORTINT INT8 #define SHORTINT INT8
#define INTEGER INT16 #define INTEGER INT16

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#ifndef OPC__h #ifndef OPC__h
#define OPC__h #define OPC__h

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#define SHORTINT INT8 #define SHORTINT INT8
#define INTEGER INT16 #define INTEGER INT16
@ -206,12 +206,24 @@ INT64 OPM_SignedMinimum (INT32 bytecount)
INT32 OPM_Longint (INT64 n) INT32 OPM_Longint (INT64 n)
{ {
return __VAL(INT32, n); INT32 r;
if (!Platform_LittleEndian) {
__GET((ADDRESS)&n + 4, r, INT32);
} else {
__GET((ADDRESS)&n, r, INT32);
}
return r;
} }
INT16 OPM_Integer (INT64 n) INT16 OPM_Integer (INT64 n)
{ {
return __VAL(INT16, n); INT16 r;
if (!Platform_LittleEndian) {
__GET((ADDRESS)&n + 6, r, INT16);
} else {
__GET((ADDRESS)&n, r, INT16);
}
return r;
} }
static void OPM_ScanOptions (CHAR *s, ADDRESS s__len) static void OPM_ScanOptions (CHAR *s, ADDRESS s__len)

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#ifndef OPM__h #ifndef OPM__h
#define OPM__h #define OPM__h

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#define SHORTINT INT8 #define SHORTINT INT8
#define INTEGER INT16 #define INTEGER INT16

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#ifndef OPP__h #ifndef OPP__h
#define OPP__h #define OPP__h

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#define SHORTINT INT8 #define SHORTINT INT8
#define INTEGER INT16 #define INTEGER INT16

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#ifndef OPS__h #ifndef OPS__h
#define OPS__h #define OPS__h

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#define SHORTINT INT8 #define SHORTINT INT8
#define INTEGER INT16 #define INTEGER INT16

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#ifndef OPT__h #ifndef OPT__h
#define OPT__h #define OPT__h

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#define SHORTINT INT8 #define SHORTINT INT8
#define INTEGER INT16 #define INTEGER INT16

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#ifndef OPV__h #ifndef OPV__h
#define OPV__h #define OPV__h

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#define SHORTINT INT8 #define SHORTINT INT8
#define INTEGER INT16 #define INTEGER INT16

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#ifndef Out__h #ifndef Out__h
#define Out__h #define Out__h

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#define SHORTINT INT8 #define SHORTINT INT8
#define INTEGER INT16 #define INTEGER INT16

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#ifndef Platform__h #ifndef Platform__h
#define Platform__h #define Platform__h

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#define SHORTINT INT8 #define SHORTINT INT8
#define INTEGER INT16 #define INTEGER INT16
@ -6,8 +6,10 @@
#define SET UINT32 #define SET UINT32
#include "SYSTEM.h" #include "SYSTEM.h"
#include "Platform.h"
static INT16 Reals_realExpHi, Reals_realExpLo, Reals_lrealExpHi, Reals_lrealExpLo;
static void Reals_BytesToHex (SYSTEM_BYTE *b, ADDRESS b__len, SYSTEM_BYTE *d, ADDRESS d__len); static void Reals_BytesToHex (SYSTEM_BYTE *b, ADDRESS b__len, SYSTEM_BYTE *d, ADDRESS d__len);
@ -17,7 +19,9 @@ export void Reals_ConvertHL (LONGREAL x, CHAR *d, ADDRESS d__len);
export void Reals_ConvertL (LONGREAL x, INT16 n, CHAR *d, ADDRESS d__len); export void Reals_ConvertL (LONGREAL x, INT16 n, CHAR *d, ADDRESS d__len);
export INT16 Reals_Expo (REAL x); export INT16 Reals_Expo (REAL x);
export INT16 Reals_ExpoL (LONGREAL x); export INT16 Reals_ExpoL (LONGREAL x);
static void Reals_InitEndian (void);
export void Reals_SetExpo (REAL *x, INT16 ex); export void Reals_SetExpo (REAL *x, INT16 ex);
export void Reals_SetExpoL (LONGREAL *x, INT16 ex);
export REAL Reals_Ten (INT16 e); export REAL Reals_Ten (INT16 e);
export LONGREAL Reals_TenL (INT16 e); export LONGREAL Reals_TenL (INT16 e);
static CHAR Reals_ToHex (INT16 i); static CHAR Reals_ToHex (INT16 i);
@ -58,25 +62,36 @@ LONGREAL Reals_TenL (INT16 e)
INT16 Reals_Expo (REAL x) INT16 Reals_Expo (REAL x)
{ {
INT16 i; CHAR hi, lo;
__GET((ADDRESS)&x + 2, i, INT16); __GET((ADDRESS)&x + Reals_realExpHi, hi, CHAR);
return __MASK(__ASHR(i, 7), -256); __GET((ADDRESS)&x + Reals_realExpLo, lo, CHAR);
return __MASK(__ASHL((INT16)hi, 1) + __ASHR((INT16)lo, 7), -256);
} }
void Reals_SetExpo (REAL *x, INT16 ex) void Reals_SetExpo (REAL *x, INT16 ex)
{ {
CHAR c; CHAR c;
__GET((ADDRESS)x + 3, c, CHAR); __GET((ADDRESS)x + Reals_realExpHi, c, CHAR);
__PUT((ADDRESS)x + 3, __CHR(__ASHL(__ASHR((INT16)c, 7), 7) + __MASK(__ASHR(ex, 1), -128)), CHAR); __PUT((ADDRESS)x + Reals_realExpHi, __CHR(__ASHL(__ASHR((INT16)c, 7), 7) + __MASK(__ASHR(ex, 1), -128)), CHAR);
__GET((ADDRESS)x + 2, c, CHAR); __GET((ADDRESS)x + Reals_realExpLo, c, CHAR);
__PUT((ADDRESS)x + 2, __CHR(__MASK((INT16)c, -128) + __ASHL(__MASK(ex, -2), 7)), CHAR); __PUT((ADDRESS)x + Reals_realExpLo, __CHR(__MASK((INT16)c, -128) + __ASHL(__MASK(ex, -2), 7)), CHAR);
} }
INT16 Reals_ExpoL (LONGREAL x) INT16 Reals_ExpoL (LONGREAL x)
{ {
INT16 i; CHAR hi, lo;
__GET((ADDRESS)&x + 6, i, INT16); __GET((ADDRESS)&x + Reals_lrealExpHi, hi, CHAR);
return __MASK(__ASHR(i, 4), -2048); __GET((ADDRESS)&x + Reals_lrealExpLo, lo, CHAR);
return __MASK(__ASHL((INT16)hi, 4) + __ASHR((INT16)lo, 4), -2048);
}
void Reals_SetExpoL (LONGREAL *x, INT16 ex)
{
CHAR c;
__GET((ADDRESS)x + Reals_lrealExpHi, c, CHAR);
__PUT((ADDRESS)x + Reals_lrealExpHi, __CHR(__ASHL(__ASHR((INT16)c, 7), 7) + __MASK(__ASHR(ex, 4), -128)), CHAR);
__GET((ADDRESS)x + Reals_lrealExpLo, c, CHAR);
__PUT((ADDRESS)x + Reals_lrealExpLo, __CHR(__ASHL(__MASK(ex, -16), 4) + __MASK((INT16)c, -16)), CHAR);
} }
void Reals_ConvertL (LONGREAL x, INT16 n, CHAR *d, ADDRESS d__len) void Reals_ConvertL (LONGREAL x, INT16 n, CHAR *d, ADDRESS d__len)
@ -124,16 +139,25 @@ static CHAR Reals_ToHex (INT16 i)
static void Reals_BytesToHex (SYSTEM_BYTE *b, ADDRESS b__len, SYSTEM_BYTE *d, ADDRESS d__len) static void Reals_BytesToHex (SYSTEM_BYTE *b, ADDRESS b__len, SYSTEM_BYTE *d, ADDRESS d__len)
{ {
INT16 i; INT16 i, j, len;
INT32 l;
CHAR by; CHAR by;
i = 0; len = __SHORT(b__len, 32768);
l = b__len; if (Platform_LittleEndian) {
while (i < l) { i = 0;
} else {
i = len - 1;
}
j = 0;
while ((i >= 0 && i < len)) {
by = __VAL(CHAR, b[__X(i, b__len)]); by = __VAL(CHAR, b[__X(i, b__len)]);
d[__X(__ASHL(i, 1), d__len)] = Reals_ToHex(__ASHR((INT16)by, 4)); d[__X(__ASHL(j, 1), d__len)] = Reals_ToHex(__ASHR((INT16)by, 4));
d[__X(__ASHL(i, 1) + 1, d__len)] = Reals_ToHex(__MASK((INT16)by, -16)); d[__X(__ASHL(j, 1) + 1, d__len)] = Reals_ToHex(__MASK((INT16)by, -16));
i += 1; j += 1;
if (Platform_LittleEndian) {
i += 1;
} else {
i -= 1;
}
} }
} }
@ -147,11 +171,28 @@ void Reals_ConvertHL (LONGREAL x, CHAR *d, ADDRESS d__len)
Reals_BytesToHex((void*)&x, 8, (void*)d, d__len * 1); Reals_BytesToHex((void*)&x, 8, (void*)d, d__len * 1);
} }
static void Reals_InitEndian (void)
{
if (Platform_LittleEndian) {
Reals_realExpHi = 3;
Reals_realExpLo = 2;
Reals_lrealExpHi = 7;
Reals_lrealExpLo = 6;
} else {
Reals_realExpHi = 0;
Reals_realExpLo = 1;
Reals_lrealExpHi = 0;
Reals_lrealExpLo = 1;
}
}
export void *Reals__init(void) export void *Reals__init(void)
{ {
__DEFMOD; __DEFMOD;
__MODULE_IMPORT(Platform);
__REGMOD("Reals", 0); __REGMOD("Reals", 0);
/* BEGIN */ /* BEGIN */
Reals_InitEndian();
__ENDMOD; __ENDMOD;
} }

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#ifndef Reals__h #ifndef Reals__h
#define Reals__h #define Reals__h
@ -15,6 +15,7 @@ import void Reals_ConvertL (LONGREAL x, INT16 n, CHAR *d, ADDRESS d__len);
import INT16 Reals_Expo (REAL x); import INT16 Reals_Expo (REAL x);
import INT16 Reals_ExpoL (LONGREAL x); import INT16 Reals_ExpoL (LONGREAL x);
import void Reals_SetExpo (REAL *x, INT16 ex); import void Reals_SetExpo (REAL *x, INT16 ex);
import void Reals_SetExpoL (LONGREAL *x, INT16 ex);
import REAL Reals_Ten (INT16 e); import REAL Reals_Ten (INT16 e);
import LONGREAL Reals_TenL (INT16 e); import LONGREAL Reals_TenL (INT16 e);
import void *Reals__init(void); import void *Reals__init(void);

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#define SHORTINT INT8 #define SHORTINT INT8
#define INTEGER INT16 #define INTEGER INT16

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#ifndef Strings__h #ifndef Strings__h
#define Strings__h #define Strings__h

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#define SHORTINT INT8 #define SHORTINT INT8
#define INTEGER INT16 #define INTEGER INT16

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#ifndef Texts__h #ifndef Texts__h
#define Texts__h #define Texts__h

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#define SHORTINT INT8 #define SHORTINT INT8
#define INTEGER INT16 #define INTEGER INT16

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#ifndef VT100__h #ifndef VT100__h
#define VT100__h #define VT100__h

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#define SHORTINT INT8 #define SHORTINT INT8
#define INTEGER INT16 #define INTEGER INT16

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#ifndef extTools__h #ifndef extTools__h
#define extTools__h #define extTools__h

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspamS */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspamS */
#define SHORTINT INT8 #define SHORTINT INT8
#define INTEGER INT16 #define INTEGER INT16

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#define SHORTINT INT8 #define SHORTINT INT8
#define INTEGER INT16 #define INTEGER INT16
@ -19,6 +19,6 @@ export void *Configuration__init(void)
__DEFMOD; __DEFMOD;
__REGMOD("Configuration", 0); __REGMOD("Configuration", 0);
/* BEGIN */ /* BEGIN */
__MOVE("2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8.", Configuration_versionLong, 76); __MOVE("2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8.", Configuration_versionLong, 76);
__ENDMOD; __ENDMOD;
} }

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#ifndef Configuration__h #ifndef Configuration__h
#define Configuration__h #define Configuration__h

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#define SHORTINT INT8 #define SHORTINT INT8
#define INTEGER INT16 #define INTEGER INT16
@ -942,7 +942,11 @@ void Files_ReadNum (Files_Rider *R, ADDRESS *R__typ, SYSTEM_BYTE *x, ADDRESS x__
} }
q += (INT64)__ASH((__MASK(b, -64) - __ASHL(__ASHR(b, 6), 6)), s); q += (INT64)__ASH((__MASK(b, -64) - __ASHL(__ASHR(b, 6), 6)), s);
Files_Assert(x__len <= 8); Files_Assert(x__len <= 8);
__MOVE((ADDRESS)&q, (ADDRESS)x, x__len); if (Platform_LittleEndian) {
__MOVE((ADDRESS)&q, (ADDRESS)x, x__len);
} else {
__MOVE(((ADDRESS)&q + 8) - (__SHORT(x__len, 32768)), (ADDRESS)x, x__len);
}
} }
void Files_WriteBool (Files_Rider *R, ADDRESS *R__typ, BOOLEAN x) void Files_WriteBool (Files_Rider *R, ADDRESS *R__typ, BOOLEAN x)
@ -972,9 +976,7 @@ void Files_WriteSet (Files_Rider *R, ADDRESS *R__typ, UINT32 x)
{ {
CHAR b[4]; CHAR b[4];
INT32 i; INT32 i;
UINT64 y; i = (INT32)x;
y = x;
i = __VAL(INT32, y);
b[0] = __CHR(i); b[0] = __CHR(i);
b[1] = __CHR(__ASHR(i, 8)); b[1] = __CHR(__ASHR(i, 8));
b[2] = __CHR(__ASHR(i, 16)); b[2] = __CHR(__ASHR(i, 16));

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#ifndef Files__h #ifndef Files__h
#define Files__h #define Files__h

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. rtsSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. rtsSF */
#define SHORTINT INT8 #define SHORTINT INT8
#define INTEGER INT16 #define INTEGER INT16

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. rtsSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. rtsSF */
#ifndef Heap__h #ifndef Heap__h
#define Heap__h #define Heap__h

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#define SHORTINT INT8 #define SHORTINT INT8
#define INTEGER INT16 #define INTEGER INT16
@ -52,7 +52,7 @@ extern void *Modules__init(void);
void Modules_Init (INT32 argc, INT32 argvadr) void Modules_Init (INT32 argc, INT32 argvadr)
{ {
Modules_MainStackFrame = argvadr; Modules_MainStackFrame = argvadr;
Modules_ArgCount = __VAL(INT16, argc); Modules_ArgCount = __SHORT(argc, 32768);
__GET(argvadr, Modules_ArgVector, INT32); __GET(argvadr, Modules_ArgVector, INT32);
Modules_InitHeap(); Modules_InitHeap();
Modules_ModulesInit(); Modules_ModulesInit();

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#ifndef Modules__h #ifndef Modules__h
#define Modules__h #define Modules__h

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#define SHORTINT INT8 #define SHORTINT INT8
#define INTEGER INT16 #define INTEGER INT16
@ -9,6 +9,7 @@
#include "OPM.h" #include "OPM.h"
#include "OPS.h" #include "OPS.h"
#include "OPT.h" #include "OPT.h"
#include "Platform.h"
static INT16 OPB_exp; static INT16 OPB_exp;
@ -216,7 +217,11 @@ static void OPB_SetIntType (OPT_Node node)
static void OPB_SetSetType (OPT_Node node) static void OPB_SetSetType (OPT_Node node)
{ {
INT32 i32; INT32 i32;
__GET((ADDRESS)&node->conval->setval + 4, i32, INT32); if (Platform_LittleEndian) {
__GET((ADDRESS)&node->conval->setval + 4, i32, INT32);
} else {
__GET((ADDRESS)&node->conval->setval, i32, INT32);
}
if (i32 == 0) { if (i32 == 0) {
node->typ = OPT_set32typ; node->typ = OPT_set32typ;
} else { } else {
@ -2584,6 +2589,7 @@ export void *OPB__init(void)
__MODULE_IMPORT(OPM); __MODULE_IMPORT(OPM);
__MODULE_IMPORT(OPS); __MODULE_IMPORT(OPS);
__MODULE_IMPORT(OPT); __MODULE_IMPORT(OPT);
__MODULE_IMPORT(Platform);
__REGMOD("OPB", 0); __REGMOD("OPB", 0);
/* BEGIN */ /* BEGIN */
OPB_maxExp = OPB_log(4611686018427387904LL); OPB_maxExp = OPB_log(4611686018427387904LL);

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#ifndef OPB__h #ifndef OPB__h
#define OPB__h #define OPB__h

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#define SHORTINT INT8 #define SHORTINT INT8
#define INTEGER INT16 #define INTEGER INT16

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#ifndef OPC__h #ifndef OPC__h
#define OPC__h #define OPC__h

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#define SHORTINT INT8 #define SHORTINT INT8
#define INTEGER INT16 #define INTEGER INT16
@ -206,12 +206,24 @@ INT64 OPM_SignedMinimum (INT32 bytecount)
INT32 OPM_Longint (INT64 n) INT32 OPM_Longint (INT64 n)
{ {
return __VAL(INT32, n); INT32 r;
if (!Platform_LittleEndian) {
__GET((ADDRESS)&n + 4, r, INT32);
} else {
__GET((ADDRESS)&n, r, INT32);
}
return r;
} }
INT16 OPM_Integer (INT64 n) INT16 OPM_Integer (INT64 n)
{ {
return __VAL(INT16, n); INT16 r;
if (!Platform_LittleEndian) {
__GET((ADDRESS)&n + 6, r, INT16);
} else {
__GET((ADDRESS)&n, r, INT16);
}
return r;
} }
static void OPM_ScanOptions (CHAR *s, ADDRESS s__len) static void OPM_ScanOptions (CHAR *s, ADDRESS s__len)

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#ifndef OPM__h #ifndef OPM__h
#define OPM__h #define OPM__h

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#define SHORTINT INT8 #define SHORTINT INT8
#define INTEGER INT16 #define INTEGER INT16

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#ifndef OPP__h #ifndef OPP__h
#define OPP__h #define OPP__h

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#define SHORTINT INT8 #define SHORTINT INT8
#define INTEGER INT16 #define INTEGER INT16

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#ifndef OPS__h #ifndef OPS__h
#define OPS__h #define OPS__h

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#define SHORTINT INT8 #define SHORTINT INT8
#define INTEGER INT16 #define INTEGER INT16

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#ifndef OPT__h #ifndef OPT__h
#define OPT__h #define OPT__h

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#define SHORTINT INT8 #define SHORTINT INT8
#define INTEGER INT16 #define INTEGER INT16

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#ifndef OPV__h #ifndef OPV__h
#define OPV__h #define OPV__h

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#define SHORTINT INT8 #define SHORTINT INT8
#define INTEGER INT16 #define INTEGER INT16

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#ifndef Out__h #ifndef Out__h
#define Out__h #define Out__h

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#define SHORTINT INT8 #define SHORTINT INT8
#define INTEGER INT16 #define INTEGER INT16

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#ifndef Platform__h #ifndef Platform__h
#define Platform__h #define Platform__h

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#define SHORTINT INT8 #define SHORTINT INT8
#define INTEGER INT16 #define INTEGER INT16
@ -6,8 +6,10 @@
#define SET UINT32 #define SET UINT32
#include "SYSTEM.h" #include "SYSTEM.h"
#include "Platform.h"
static INT16 Reals_realExpHi, Reals_realExpLo, Reals_lrealExpHi, Reals_lrealExpLo;
static void Reals_BytesToHex (SYSTEM_BYTE *b, ADDRESS b__len, SYSTEM_BYTE *d, ADDRESS d__len); static void Reals_BytesToHex (SYSTEM_BYTE *b, ADDRESS b__len, SYSTEM_BYTE *d, ADDRESS d__len);
@ -17,7 +19,9 @@ export void Reals_ConvertHL (LONGREAL x, CHAR *d, ADDRESS d__len);
export void Reals_ConvertL (LONGREAL x, INT16 n, CHAR *d, ADDRESS d__len); export void Reals_ConvertL (LONGREAL x, INT16 n, CHAR *d, ADDRESS d__len);
export INT16 Reals_Expo (REAL x); export INT16 Reals_Expo (REAL x);
export INT16 Reals_ExpoL (LONGREAL x); export INT16 Reals_ExpoL (LONGREAL x);
static void Reals_InitEndian (void);
export void Reals_SetExpo (REAL *x, INT16 ex); export void Reals_SetExpo (REAL *x, INT16 ex);
export void Reals_SetExpoL (LONGREAL *x, INT16 ex);
export REAL Reals_Ten (INT16 e); export REAL Reals_Ten (INT16 e);
export LONGREAL Reals_TenL (INT16 e); export LONGREAL Reals_TenL (INT16 e);
static CHAR Reals_ToHex (INT16 i); static CHAR Reals_ToHex (INT16 i);
@ -58,25 +62,36 @@ LONGREAL Reals_TenL (INT16 e)
INT16 Reals_Expo (REAL x) INT16 Reals_Expo (REAL x)
{ {
INT16 i; CHAR hi, lo;
__GET((ADDRESS)&x + 2, i, INT16); __GET((ADDRESS)&x + Reals_realExpHi, hi, CHAR);
return __MASK(__ASHR(i, 7), -256); __GET((ADDRESS)&x + Reals_realExpLo, lo, CHAR);
return __MASK(__ASHL((INT16)hi, 1) + __ASHR((INT16)lo, 7), -256);
} }
void Reals_SetExpo (REAL *x, INT16 ex) void Reals_SetExpo (REAL *x, INT16 ex)
{ {
CHAR c; CHAR c;
__GET((ADDRESS)x + 3, c, CHAR); __GET((ADDRESS)x + Reals_realExpHi, c, CHAR);
__PUT((ADDRESS)x + 3, __CHR(__ASHL(__ASHR((INT16)c, 7), 7) + __MASK(__ASHR(ex, 1), -128)), CHAR); __PUT((ADDRESS)x + Reals_realExpHi, __CHR(__ASHL(__ASHR((INT16)c, 7), 7) + __MASK(__ASHR(ex, 1), -128)), CHAR);
__GET((ADDRESS)x + 2, c, CHAR); __GET((ADDRESS)x + Reals_realExpLo, c, CHAR);
__PUT((ADDRESS)x + 2, __CHR(__MASK((INT16)c, -128) + __ASHL(__MASK(ex, -2), 7)), CHAR); __PUT((ADDRESS)x + Reals_realExpLo, __CHR(__MASK((INT16)c, -128) + __ASHL(__MASK(ex, -2), 7)), CHAR);
} }
INT16 Reals_ExpoL (LONGREAL x) INT16 Reals_ExpoL (LONGREAL x)
{ {
INT16 i; CHAR hi, lo;
__GET((ADDRESS)&x + 6, i, INT16); __GET((ADDRESS)&x + Reals_lrealExpHi, hi, CHAR);
return __MASK(__ASHR(i, 4), -2048); __GET((ADDRESS)&x + Reals_lrealExpLo, lo, CHAR);
return __MASK(__ASHL((INT16)hi, 4) + __ASHR((INT16)lo, 4), -2048);
}
void Reals_SetExpoL (LONGREAL *x, INT16 ex)
{
CHAR c;
__GET((ADDRESS)x + Reals_lrealExpHi, c, CHAR);
__PUT((ADDRESS)x + Reals_lrealExpHi, __CHR(__ASHL(__ASHR((INT16)c, 7), 7) + __MASK(__ASHR(ex, 4), -128)), CHAR);
__GET((ADDRESS)x + Reals_lrealExpLo, c, CHAR);
__PUT((ADDRESS)x + Reals_lrealExpLo, __CHR(__ASHL(__MASK(ex, -16), 4) + __MASK((INT16)c, -16)), CHAR);
} }
void Reals_ConvertL (LONGREAL x, INT16 n, CHAR *d, ADDRESS d__len) void Reals_ConvertL (LONGREAL x, INT16 n, CHAR *d, ADDRESS d__len)
@ -124,16 +139,25 @@ static CHAR Reals_ToHex (INT16 i)
static void Reals_BytesToHex (SYSTEM_BYTE *b, ADDRESS b__len, SYSTEM_BYTE *d, ADDRESS d__len) static void Reals_BytesToHex (SYSTEM_BYTE *b, ADDRESS b__len, SYSTEM_BYTE *d, ADDRESS d__len)
{ {
INT16 i; INT16 i, j, len;
INT32 l;
CHAR by; CHAR by;
i = 0; len = __SHORT(b__len, 32768);
l = b__len; if (Platform_LittleEndian) {
while (i < l) { i = 0;
} else {
i = len - 1;
}
j = 0;
while ((i >= 0 && i < len)) {
by = __VAL(CHAR, b[__X(i, b__len)]); by = __VAL(CHAR, b[__X(i, b__len)]);
d[__X(__ASHL(i, 1), d__len)] = Reals_ToHex(__ASHR((INT16)by, 4)); d[__X(__ASHL(j, 1), d__len)] = Reals_ToHex(__ASHR((INT16)by, 4));
d[__X(__ASHL(i, 1) + 1, d__len)] = Reals_ToHex(__MASK((INT16)by, -16)); d[__X(__ASHL(j, 1) + 1, d__len)] = Reals_ToHex(__MASK((INT16)by, -16));
i += 1; j += 1;
if (Platform_LittleEndian) {
i += 1;
} else {
i -= 1;
}
} }
} }
@ -147,11 +171,28 @@ void Reals_ConvertHL (LONGREAL x, CHAR *d, ADDRESS d__len)
Reals_BytesToHex((void*)&x, 8, (void*)d, d__len * 1); Reals_BytesToHex((void*)&x, 8, (void*)d, d__len * 1);
} }
static void Reals_InitEndian (void)
{
if (Platform_LittleEndian) {
Reals_realExpHi = 3;
Reals_realExpLo = 2;
Reals_lrealExpHi = 7;
Reals_lrealExpLo = 6;
} else {
Reals_realExpHi = 0;
Reals_realExpLo = 1;
Reals_lrealExpHi = 0;
Reals_lrealExpLo = 1;
}
}
export void *Reals__init(void) export void *Reals__init(void)
{ {
__DEFMOD; __DEFMOD;
__MODULE_IMPORT(Platform);
__REGMOD("Reals", 0); __REGMOD("Reals", 0);
/* BEGIN */ /* BEGIN */
Reals_InitEndian();
__ENDMOD; __ENDMOD;
} }

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#ifndef Reals__h #ifndef Reals__h
#define Reals__h #define Reals__h
@ -15,6 +15,7 @@ import void Reals_ConvertL (LONGREAL x, INT16 n, CHAR *d, ADDRESS d__len);
import INT16 Reals_Expo (REAL x); import INT16 Reals_Expo (REAL x);
import INT16 Reals_ExpoL (LONGREAL x); import INT16 Reals_ExpoL (LONGREAL x);
import void Reals_SetExpo (REAL *x, INT16 ex); import void Reals_SetExpo (REAL *x, INT16 ex);
import void Reals_SetExpoL (LONGREAL *x, INT16 ex);
import REAL Reals_Ten (INT16 e); import REAL Reals_Ten (INT16 e);
import LONGREAL Reals_TenL (INT16 e); import LONGREAL Reals_TenL (INT16 e);
import void *Reals__init(void); import void *Reals__init(void);

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#define SHORTINT INT8 #define SHORTINT INT8
#define INTEGER INT16 #define INTEGER INT16

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#ifndef Strings__h #ifndef Strings__h
#define Strings__h #define Strings__h

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#define SHORTINT INT8 #define SHORTINT INT8
#define INTEGER INT16 #define INTEGER INT16

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#ifndef Texts__h #ifndef Texts__h
#define Texts__h #define Texts__h

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#define SHORTINT INT8 #define SHORTINT INT8
#define INTEGER INT16 #define INTEGER INT16

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#ifndef VT100__h #ifndef VT100__h
#define VT100__h #define VT100__h

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#define SHORTINT INT8 #define SHORTINT INT8
#define INTEGER INT16 #define INTEGER INT16

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#ifndef extTools__h #ifndef extTools__h
#define extTools__h #define extTools__h

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspamS */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspamS */
#define SHORTINT INT8 #define SHORTINT INT8
#define INTEGER INT16 #define INTEGER INT16

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#define SHORTINT INT8 #define SHORTINT INT8
#define INTEGER INT16 #define INTEGER INT16
@ -19,6 +19,6 @@ export void *Configuration__init(void)
__DEFMOD; __DEFMOD;
__REGMOD("Configuration", 0); __REGMOD("Configuration", 0);
/* BEGIN */ /* BEGIN */
__MOVE("2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8.", Configuration_versionLong, 76); __MOVE("2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8.", Configuration_versionLong, 76);
__ENDMOD; __ENDMOD;
} }

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#ifndef Configuration__h #ifndef Configuration__h
#define Configuration__h #define Configuration__h

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#define SHORTINT INT8 #define SHORTINT INT8
#define INTEGER INT16 #define INTEGER INT16
@ -942,7 +942,11 @@ void Files_ReadNum (Files_Rider *R, ADDRESS *R__typ, SYSTEM_BYTE *x, ADDRESS x__
} }
q += (INT64)__ASH((__MASK(b, -64) - __ASHL(__ASHR(b, 6), 6)), s); q += (INT64)__ASH((__MASK(b, -64) - __ASHL(__ASHR(b, 6), 6)), s);
Files_Assert(x__len <= 8); Files_Assert(x__len <= 8);
__MOVE((ADDRESS)&q, (ADDRESS)x, x__len); if (Platform_LittleEndian) {
__MOVE((ADDRESS)&q, (ADDRESS)x, x__len);
} else {
__MOVE(((ADDRESS)&q + 8) - (INT64)(__SHORT(x__len, 32768)), (ADDRESS)x, x__len);
}
} }
void Files_WriteBool (Files_Rider *R, ADDRESS *R__typ, BOOLEAN x) void Files_WriteBool (Files_Rider *R, ADDRESS *R__typ, BOOLEAN x)
@ -972,9 +976,7 @@ void Files_WriteSet (Files_Rider *R, ADDRESS *R__typ, UINT32 x)
{ {
CHAR b[4]; CHAR b[4];
INT32 i; INT32 i;
UINT64 y; i = (INT32)x;
y = x;
i = __VAL(INT32, y);
b[0] = __CHR(i); b[0] = __CHR(i);
b[1] = __CHR(__ASHR(i, 8)); b[1] = __CHR(__ASHR(i, 8));
b[2] = __CHR(__ASHR(i, 16)); b[2] = __CHR(__ASHR(i, 16));

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#ifndef Files__h #ifndef Files__h
#define Files__h #define Files__h

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. rtsSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. rtsSF */
#define SHORTINT INT8 #define SHORTINT INT8
#define INTEGER INT16 #define INTEGER INT16

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. rtsSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. rtsSF */
#ifndef Heap__h #ifndef Heap__h
#define Heap__h #define Heap__h

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#define SHORTINT INT8 #define SHORTINT INT8
#define INTEGER INT16 #define INTEGER INT16
@ -52,7 +52,7 @@ extern void *Modules__init(void);
void Modules_Init (INT32 argc, INT64 argvadr) void Modules_Init (INT32 argc, INT64 argvadr)
{ {
Modules_MainStackFrame = argvadr; Modules_MainStackFrame = argvadr;
Modules_ArgCount = __VAL(INT16, argc); Modules_ArgCount = __SHORT(argc, 32768);
__GET(argvadr, Modules_ArgVector, INT64); __GET(argvadr, Modules_ArgVector, INT64);
Modules_InitHeap(); Modules_InitHeap();
Modules_ModulesInit(); Modules_ModulesInit();

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#ifndef Modules__h #ifndef Modules__h
#define Modules__h #define Modules__h

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#define SHORTINT INT8 #define SHORTINT INT8
#define INTEGER INT16 #define INTEGER INT16
@ -9,6 +9,7 @@
#include "OPM.h" #include "OPM.h"
#include "OPS.h" #include "OPS.h"
#include "OPT.h" #include "OPT.h"
#include "Platform.h"
static INT16 OPB_exp; static INT16 OPB_exp;
@ -216,7 +217,11 @@ static void OPB_SetIntType (OPT_Node node)
static void OPB_SetSetType (OPT_Node node) static void OPB_SetSetType (OPT_Node node)
{ {
INT32 i32; INT32 i32;
__GET((ADDRESS)&node->conval->setval + 4, i32, INT32); if (Platform_LittleEndian) {
__GET((ADDRESS)&node->conval->setval + 4, i32, INT32);
} else {
__GET((ADDRESS)&node->conval->setval, i32, INT32);
}
if (i32 == 0) { if (i32 == 0) {
node->typ = OPT_set32typ; node->typ = OPT_set32typ;
} else { } else {
@ -2584,6 +2589,7 @@ export void *OPB__init(void)
__MODULE_IMPORT(OPM); __MODULE_IMPORT(OPM);
__MODULE_IMPORT(OPS); __MODULE_IMPORT(OPS);
__MODULE_IMPORT(OPT); __MODULE_IMPORT(OPT);
__MODULE_IMPORT(Platform);
__REGMOD("OPB", 0); __REGMOD("OPB", 0);
/* BEGIN */ /* BEGIN */
OPB_maxExp = OPB_log(4611686018427387904LL); OPB_maxExp = OPB_log(4611686018427387904LL);

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#ifndef OPB__h #ifndef OPB__h
#define OPB__h #define OPB__h

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#define SHORTINT INT8 #define SHORTINT INT8
#define INTEGER INT16 #define INTEGER INT16

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#ifndef OPC__h #ifndef OPC__h
#define OPC__h #define OPC__h

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#define SHORTINT INT8 #define SHORTINT INT8
#define INTEGER INT16 #define INTEGER INT16
@ -206,12 +206,24 @@ INT64 OPM_SignedMinimum (INT32 bytecount)
INT32 OPM_Longint (INT64 n) INT32 OPM_Longint (INT64 n)
{ {
return __VAL(INT32, n); INT32 r;
if (!Platform_LittleEndian) {
__GET((ADDRESS)&n + 4, r, INT32);
} else {
__GET((ADDRESS)&n, r, INT32);
}
return r;
} }
INT16 OPM_Integer (INT64 n) INT16 OPM_Integer (INT64 n)
{ {
return __VAL(INT16, n); INT16 r;
if (!Platform_LittleEndian) {
__GET((ADDRESS)&n + 6, r, INT16);
} else {
__GET((ADDRESS)&n, r, INT16);
}
return r;
} }
static void OPM_ScanOptions (CHAR *s, ADDRESS s__len) static void OPM_ScanOptions (CHAR *s, ADDRESS s__len)

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#ifndef OPM__h #ifndef OPM__h
#define OPM__h #define OPM__h

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#define SHORTINT INT8 #define SHORTINT INT8
#define INTEGER INT16 #define INTEGER INT16

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#ifndef OPP__h #ifndef OPP__h
#define OPP__h #define OPP__h

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#define SHORTINT INT8 #define SHORTINT INT8
#define INTEGER INT16 #define INTEGER INT16

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#ifndef OPS__h #ifndef OPS__h
#define OPS__h #define OPS__h

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#define SHORTINT INT8 #define SHORTINT INT8
#define INTEGER INT16 #define INTEGER INT16

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#ifndef OPT__h #ifndef OPT__h
#define OPT__h #define OPT__h

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#define SHORTINT INT8 #define SHORTINT INT8
#define INTEGER INT16 #define INTEGER INT16

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#ifndef OPV__h #ifndef OPV__h
#define OPV__h #define OPV__h

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#define SHORTINT INT8 #define SHORTINT INT8
#define INTEGER INT16 #define INTEGER INT16

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#ifndef Out__h #ifndef Out__h
#define Out__h #define Out__h

View file

@ -1,4 +1,4 @@
/* voc 2.1.0 [2026/07/10]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ /* voc 2.1.0 [2026/07/12]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */
#define SHORTINT INT8 #define SHORTINT INT8
#define INTEGER INT16 #define INTEGER INT16

Some files were not shown because too many files have changed in this diff Show more