Browse Source

+ introduced mos6502page0alloc field to tsysteminfo

Nikolay Nikolov 1 month ago
parent
commit
927427f438
41 changed files with 135 additions and 7 deletions
  1. 13 0
      compiler/systems.pas
  2. 2 0
      compiler/systems/i_aix.pas
  3. 2 0
      compiler/systems/i_amiga.pas
  4. 1 0
      compiler/systems/i_amstradcpc.pas
  5. 6 1
      compiler/systems/i_android.pas
  6. 3 0
      compiler/systems/i_aros.pas
  7. 1 0
      compiler/systems/i_atari.pas
  8. 1 0
      compiler/systems/i_beos.pas
  9. 12 1
      compiler/systems/i_bsd.pas
  10. 13 3
      compiler/systems/i_darwin.pas
  11. 14 0
      compiler/systems/i_embed.pas
  12. 1 0
      compiler/systems/i_emx.pas
  13. 3 0
      compiler/systems/i_freertos.pas
  14. 1 0
      compiler/systems/i_gba.pas
  15. 1 0
      compiler/systems/i_go32v2.pas
  16. 2 0
      compiler/systems/i_haiku.pas
  17. 1 0
      compiler/systems/i_human68k.pas
  18. 2 0
      compiler/systems/i_jvm.pas
  19. 22 1
      compiler/systems/i_linux.pas
  20. 2 0
      compiler/systems/i_macos.pas
  21. 1 0
      compiler/systems/i_morph.pas
  22. 1 0
      compiler/systems/i_msdos.pas
  23. 1 0
      compiler/systems/i_msxdos.pas
  24. 1 0
      compiler/systems/i_nativent.pas
  25. 1 0
      compiler/systems/i_nds.pas
  26. 1 0
      compiler/systems/i_nwl.pas
  27. 1 0
      compiler/systems/i_nwm.pas
  28. 1 0
      compiler/systems/i_oric.pas
  29. 1 0
      compiler/systems/i_os2.pas
  30. 2 0
      compiler/systems/i_palmos.pas
  31. 1 0
      compiler/systems/i_ps1.pas
  32. 1 0
      compiler/systems/i_sinclairql.pas
  33. 3 0
      compiler/systems/i_sunos.pas
  34. 2 0
      compiler/systems/i_symbian.pas
  35. 3 0
      compiler/systems/i_wasi.pas
  36. 1 0
      compiler/systems/i_watcom.pas
  37. 1 0
      compiler/systems/i_wdosx.pas
  38. 1 0
      compiler/systems/i_wii.pas
  39. 6 1
      compiler/systems/i_win.pas
  40. 1 0
      compiler/systems/i_win16.pas
  41. 1 0
      compiler/systems/i_zxspectrum.pas

+ 13 - 0
compiler/systems.pas

@@ -185,6 +185,12 @@ interface
             { indicates that the default value of the ts_wasm_threads target switch is 'on' for this target }
             { indicates that the default value of the ts_wasm_threads target switch is 'on' for this target }
             tf_wasm_threads
             tf_wasm_threads
        );
        );
+{$ifdef MOS6502}
+       tmos6502page0alloc = set of 0..255;
+{$else MOS6502}
+       { little trick to avoid ifdefs and avoid wasting memory on non-6502 targets }
+       tmos6502page0alloc = set of 0..0;
+{$endif MOS6502}
        psysteminfo = ^tsysteminfo;
        psysteminfo = ^tsysteminfo;
        { using packed causes bus errors on processors which require alignment }
        { using packed causes bus errors on processors which require alignment }
        tsysteminfo = record
        tsysteminfo = record
@@ -245,6 +251,13 @@ interface
             lib/Basic/Targets.cpp in the clang (cfe 3.3) source tree, sometimes
             lib/Basic/Targets.cpp in the clang (cfe 3.3) source tree, sometimes
             adapted to match our (custom) stack alignment requirements }
             adapted to match our (custom) stack alignment requirements }
           llvmdatalayout: ansistring;
           llvmdatalayout: ansistring;
+          { MOS 6502 CPU Page 0 Allocation: Which page 0 addresses (between
+            $0000 and $00FF) can be used by the compiler to store temporary
+            values:
+             True: Indicates that this address can be used by the compiler.
+            False: Indicates that this address is used by the computer's
+                   operating system and should not be used by the compiler. }
+          mos6502page0alloc: tmos6502page0alloc;
        end;
        end;
 
 
     tabiinfo = record
     tabiinfo = record

+ 2 - 0
compiler/systems/i_aix.pas

@@ -94,6 +94,7 @@ unit i_aix;
             stackalign   : 16;
             stackalign   : 16;
             abi : abi_powerpc_aix;
             abi : abi_powerpc_aix;
             llvmdatalayout : 'E-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v128:128:128-n32';
             llvmdatalayout : 'E-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v128:128:128-n32';
+            mos6502page0alloc : [];
           );
           );
 
 
        system_powerpc64_aix_info : tsysteminfo =
        system_powerpc64_aix_info : tsysteminfo =
@@ -161,6 +162,7 @@ unit i_aix;
             stackalign   : 16;
             stackalign   : 16;
             abi : abi_powerpc_aix;
             abi : abi_powerpc_aix;
             llvmdatalayout : 'E-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-f128:64:64-v128:128:128-n32:64';
             llvmdatalayout : 'E-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-f128:64:64-v128:128:128-n32:64';
+            mos6502page0alloc : [];
           );
           );
 
 
   implementation
   implementation

+ 2 - 0
compiler/systems/i_amiga.pas

@@ -93,6 +93,7 @@ unit i_amiga;
             stackalign   : 2;
             stackalign   : 2;
             abi : abi_default;
             abi : abi_default;
             llvmdatalayout : 'todo';
             llvmdatalayout : 'todo';
+            mos6502page0alloc : [];
           );
           );
 
 
        system_powerpc_amiga_info : tsysteminfo =
        system_powerpc_amiga_info : tsysteminfo =
@@ -159,6 +160,7 @@ unit i_amiga;
             stackalign   : 16;
             stackalign   : 16;
             abi : abi_powerpc_sysv;
             abi : abi_powerpc_sysv;
             llvmdatalayout : 'E-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v128:128:128-n32';
             llvmdatalayout : 'E-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v128:128:128-n32';
+            mos6502page0alloc : [];
           );
           );
 
 
   implementation
   implementation

+ 1 - 0
compiler/systems/i_amstradcpc.pas

@@ -100,6 +100,7 @@ unit i_amstradcpc;
             stackalign   : 1;
             stackalign   : 1;
             abi          : abi_default;
             abi          : abi_default;
             llvmdatalayout : 'todo';
             llvmdatalayout : 'todo';
+            mos6502page0alloc : [];
           );
           );
 
 
   implementation
   implementation

+ 6 - 1
compiler/systems/i_android.pas

@@ -96,6 +96,7 @@ unit i_android;
             stackalign   : 8;
             stackalign   : 8;
             abi : abi_eabi;
             abi : abi_eabi;
             llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:64:128-a0:0:64-n32-S64';
             llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:64:128-a0:0:64-n32-S64';
+            mos6502page0alloc : [];
           );
           );
 
 
        system_i386_android_info : tsysteminfo =
        system_i386_android_info : tsysteminfo =
@@ -165,6 +166,7 @@ unit i_android;
             stackalign   : 16;
             stackalign   : 16;
             abi : abi_default;
             abi : abi_default;
             llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32-n8:16:32-S128';
             llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32-n8:16:32-S128';
+            mos6502page0alloc : [];
           );
           );
 
 
         system_aarch64_android_info  : tsysteminfo =
         system_aarch64_android_info  : tsysteminfo =
@@ -233,7 +235,8 @@ unit i_android;
              stacksize    : 8*1024*1024;
              stacksize    : 8*1024*1024;
              stackalign   : 16;
              stackalign   : 16;
              abi : abi_default;
              abi : abi_default;
-             llvmdatalayout : 'e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-n32:64-S128'
+             llvmdatalayout : 'e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-n32:64-S128';
+             mos6502page0alloc : [];
            );
            );
 
 
         system_x86_64_android_info : tsysteminfo =
         system_x86_64_android_info : tsysteminfo =
@@ -303,6 +306,7 @@ unit i_android;
              stackalign   : 16;
              stackalign   : 16;
              abi : abi_default;
              abi : abi_default;
              llvmdatalayout : 'e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128';
              llvmdatalayout : 'e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128';
+             mos6502page0alloc : [];
            );
            );
 
 
        system_mipsel_android_info : tsysteminfo =
        system_mipsel_android_info : tsysteminfo =
@@ -371,6 +375,7 @@ unit i_android;
             stackalign   : 8;
             stackalign   : 8;
             abi : abi_default;
             abi : abi_default;
             llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:32-i16:16:32-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-n32-S64';
             llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:32-i16:16:32-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-n32-S64';
+            mos6502page0alloc : [];
           );
           );
 
 
 implementation
 implementation

+ 3 - 0
compiler/systems/i_aros.pas

@@ -93,6 +93,7 @@ unit i_aros;
             stackalign   : 4;
             stackalign   : 4;
             abi : abi_default;
             abi : abi_default;
             llvmdatalayout : 'todo';
             llvmdatalayout : 'todo';
+            mos6502page0alloc : [];
           );
           );
 
 
        system_x86_64_aros_info : tsysteminfo =
        system_x86_64_aros_info : tsysteminfo =
@@ -159,6 +160,7 @@ unit i_aros;
             stackalign   : 16; { fix me: this is a wild guess for now (KB) }
             stackalign   : 16; { fix me: this is a wild guess for now (KB) }
             abi : abi_default;
             abi : abi_default;
             llvmdatalayout : 'todo';
             llvmdatalayout : 'todo';
+            mos6502page0alloc : [];
           );
           );
        system_arm_aros_info : tsysteminfo =
        system_arm_aros_info : tsysteminfo =
           (
           (
@@ -224,6 +226,7 @@ unit i_aros;
             stackalign   : 4;
             stackalign   : 4;
             abi : abi_default;
             abi : abi_default;
             llvmdatalayout : 'todo';
             llvmdatalayout : 'todo';
+            mos6502page0alloc : [];
           );
           );
 
 
   implementation
   implementation

+ 1 - 0
compiler/systems/i_atari.pas

@@ -93,6 +93,7 @@ unit i_atari;
             stackalign   : 2;
             stackalign   : 2;
             abi : abi_default;
             abi : abi_default;
             llvmdatalayout : 'todo';
             llvmdatalayout : 'todo';
+            mos6502page0alloc : [];
           );
           );
 
 
   implementation
   implementation

+ 1 - 0
compiler/systems/i_beos.pas

@@ -104,6 +104,7 @@ unit i_beos;
             stackalign   : 4;
             stackalign   : 4;
             abi : abi_default;
             abi : abi_default;
             llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32-n8:16:32-S32';
             llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32-n8:16:32-S32';
+            mos6502page0alloc : [];
           );
           );
 
 
   implementation
   implementation

+ 12 - 1
compiler/systems/i_bsd.pas

@@ -106,7 +106,8 @@ unit i_bsd;
             stacksize    : 8*1024*1024;
             stacksize    : 8*1024*1024;
             stackalign   : 16;
             stackalign   : 16;
             abi          : abi_default;
             abi          : abi_default;
-            llvmdatalayout : 'e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128'
+            llvmdatalayout : 'e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128';
+            mos6502page0alloc : [];
           );
           );
 
 
        system_i386_freebsd_info : tsysteminfo =
        system_i386_freebsd_info : tsysteminfo =
@@ -180,6 +181,7 @@ unit i_bsd;
             abi          : abi_default;
             abi          : abi_default;
             { note: default LLVM stack alignment is 16 bytes for this target }
             { note: default LLVM stack alignment is 16 bytes for this target }
             llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32-n8:16:32-S32';
             llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32-n8:16:32-S32';
+            mos6502page0alloc : [];
           );
           );
 
 
 
 
@@ -250,6 +252,7 @@ unit i_bsd;
             stackalign   : 16;
             stackalign   : 16;
             abi          : abi_default;
             abi          : abi_default;
             llvmdatalayout : 'e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128';
             llvmdatalayout : 'e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128';
+            mos6502page0alloc : [];
           );
           );
 
 
 
 
@@ -320,6 +323,7 @@ unit i_bsd;
             stackalign   : 16;
             stackalign   : 16;
             abi          : abi_default;
             abi          : abi_default;
             llvmdatalayout : 'e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128';
             llvmdatalayout : 'e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128';
+            mos6502page0alloc : [];
           );
           );
 
 
 
 
@@ -388,6 +392,7 @@ unit i_bsd;
             stackalign   : 4;
             stackalign   : 4;
             abi          : abi_default;
             abi          : abi_default;
             llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32-n8:16:32-S32';
             llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32-n8:16:32-S32';
+            mos6502page0alloc : [];
           );
           );
 
 
        system_i386_openbsd_info : tsysteminfo =
        system_i386_openbsd_info : tsysteminfo =
@@ -456,6 +461,7 @@ unit i_bsd;
             abi          : abi_default;
             abi          : abi_default;
             { note: default LLVM stack alignment is 16 bytes for this target }
             { note: default LLVM stack alignment is 16 bytes for this target }
             llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32-n8:16:32-S32';
             llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32-n8:16:32-S32';
+            mos6502page0alloc : [];
           );
           );
 
 
        system_x86_64_openbsd_info : tsysteminfo =
        system_x86_64_openbsd_info : tsysteminfo =
@@ -528,6 +534,7 @@ unit i_bsd;
             stackalign   : 16;
             stackalign   : 16;
             abi          : abi_default;
             abi          : abi_default;
             llvmdatalayout : 'e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128';
             llvmdatalayout : 'e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128';
+            mos6502page0alloc : [];
           );
           );
 
 
        system_m68k_netbsd_info : tsysteminfo =
        system_m68k_netbsd_info : tsysteminfo =
@@ -595,6 +602,7 @@ unit i_bsd;
             stackalign   : 4;
             stackalign   : 4;
             abi          : abi_default;
             abi          : abi_default;
             llvmdatalayout : 'todo';
             llvmdatalayout : 'todo';
+            mos6502page0alloc : [];
           );
           );
 
 
        system_powerpc_netbsd_info : tsysteminfo =
        system_powerpc_netbsd_info : tsysteminfo =
@@ -662,6 +670,7 @@ unit i_bsd;
             { abi_powerpc_sysv doesn't work yet }
             { abi_powerpc_sysv doesn't work yet }
             abi : abi_powerpc_aix;
             abi : abi_powerpc_aix;
             llvmdatalayout : 'E-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v128:128:128-n32';
             llvmdatalayout : 'E-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v128:128:128-n32';
+            mos6502page0alloc : [];
           );
           );
 
 
        system_x86_64_netbsd_info : tsysteminfo =
        system_x86_64_netbsd_info : tsysteminfo =
@@ -731,6 +740,7 @@ unit i_bsd;
             stackalign   : 16;
             stackalign   : 16;
             abi          : abi_default;
             abi          : abi_default;
             llvmdatalayout : 'e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128';
             llvmdatalayout : 'e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128';
+            mos6502page0alloc : [];
           );
           );
 
 
        system_arm_netbsd_info : tsysteminfo =
        system_arm_netbsd_info : tsysteminfo =
@@ -798,6 +808,7 @@ unit i_bsd;
             stackalign   : 16;
             stackalign   : 16;
             abi : abi_eabihf;
             abi : abi_eabihf;
             llvmdatalayout : 'todo';
             llvmdatalayout : 'todo';
+            mos6502page0alloc : [];
           );
           );
 
 
 
 

+ 13 - 3
compiler/systems/i_darwin.pas

@@ -115,6 +115,7 @@ const
         stackalign   : 16;
         stackalign   : 16;
         abi : abi_powerpc_darwin;
         abi : abi_powerpc_darwin;
         llvmdatalayout : 'E-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:64:64-v128:128:128-n32';
         llvmdatalayout : 'E-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:64:64-v128:128:128-n32';
+        mos6502page0alloc : [];
       );
       );
 
 
 
 
@@ -184,6 +185,7 @@ const
         stackalign   : 16;
         stackalign   : 16;
         abi         : abi_i386_dynalignedstack;
         abi         : abi_i386_dynalignedstack;
         llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:128:128-n8:16:32-S128';
         llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:128:128-n8:16:32-S128';
+        mos6502page0alloc : [];
       );
       );
 
 
 
 
@@ -254,6 +256,7 @@ const
         stackalign   : 16;
         stackalign   : 16;
         abi         : abi_i386_dynalignedstack;
         abi         : abi_i386_dynalignedstack;
         llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:128:128-n8:16:32-S128';
         llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:128:128-n8:16:32-S128';
+        mos6502page0alloc : [];
       );
       );
 
 
 
 
@@ -323,6 +326,7 @@ const
         stackalign   : 16;
         stackalign   : 16;
         abi : abi_powerpc_darwin;
         abi : abi_powerpc_darwin;
         llvmdatalayout : 'E-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v128:128:128-n32:64';
         llvmdatalayout : 'E-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v128:128:128-n32:64';
+        mos6502page0alloc : [];
       );
       );
 
 
 
 
@@ -392,6 +396,7 @@ const
         stackalign   : 16;
         stackalign   : 16;
         abi : abi_default;
         abi : abi_default;
         llvmdatalayout : 'e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128';
         llvmdatalayout : 'e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128';
+        mos6502page0alloc : [];
       );
       );
 
 
 
 
@@ -461,6 +466,7 @@ const
         stackalign   : 16;
         stackalign   : 16;
         abi : abi_default;
         abi : abi_default;
         llvmdatalayout : 'e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128';
         llvmdatalayout : 'e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128';
+        mos6502page0alloc : [];
       );
       );
 
 
 
 
@@ -530,6 +536,7 @@ const
         abi : abi_default;
         abi : abi_default;
         { note: default LLVM stack alignment is 8 bytes for this target }
         { note: default LLVM stack alignment is 8 bytes for this target }
         llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:64:128-a0:0:64-n32-S32';
         llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:64:128-a0:0:64-n32-S32';
+        mos6502page0alloc : [];
       );
       );
 
 
 
 
@@ -598,7 +605,8 @@ const
         stacksize   : 8*1024*1024;
         stacksize   : 8*1024*1024;
         stackalign   : 16;
         stackalign   : 16;
         abi : abi_aarch64_darwin;
         abi : abi_aarch64_darwin;
-        llvmdatalayout : 'e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-n32:64-S128'
+        llvmdatalayout : 'e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-n32:64-S128';
+        mos6502page0alloc : [];
       );
       );
 
 
    system_aarch64_darwin_info  : tsysteminfo =
    system_aarch64_darwin_info  : tsysteminfo =
@@ -666,7 +674,8 @@ const
         stacksize   : 8*1024*1024;
         stacksize   : 8*1024*1024;
         stackalign   : 16;
         stackalign   : 16;
         abi : abi_aarch64_darwin;
         abi : abi_aarch64_darwin;
-        llvmdatalayout : 'e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-n32:64-S128'
+        llvmdatalayout : 'e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-n32:64-S128';
+        mos6502page0alloc : [];
       );
       );
 
 
 
 
@@ -735,7 +744,8 @@ const
         stacksize   : 8*1024*1024;
         stacksize   : 8*1024*1024;
         stackalign   : 16;
         stackalign   : 16;
         abi : abi_aarch64_darwin;
         abi : abi_aarch64_darwin;
-        llvmdatalayout : 'e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-n32:64-S128'
+        llvmdatalayout : 'e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-n32:64-S128';
+        mos6502page0alloc : [];
       );
       );
 
 
 implementation
 implementation

+ 14 - 0
compiler/systems/i_embed.pas

@@ -100,6 +100,7 @@ unit i_embed;
             stackalign   : 16;
             stackalign   : 16;
             abi : abi_default;
             abi : abi_default;
             llvmdatalayout : 'e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128';
             llvmdatalayout : 'e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128';
+            mos6502page0alloc : [];
           );
           );
 
 
        system_arm_embedded_info : tsysteminfo =
        system_arm_embedded_info : tsysteminfo =
@@ -167,6 +168,7 @@ unit i_embed;
             stackalign   : 4;
             stackalign   : 4;
             abi : abi_default;
             abi : abi_default;
             llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:64:128-a0:0:64-n32-S32';
             llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:64:128-a0:0:64-n32-S32';
+            mos6502page0alloc : [];
           );
           );
 
 
        system_avr_embedded_info : tsysteminfo =
        system_avr_embedded_info : tsysteminfo =
@@ -234,6 +236,7 @@ unit i_embed;
             stackalign   : 1;
             stackalign   : 1;
             abi : abi_default;
             abi : abi_default;
             llvmdatalayout : 'todo';
             llvmdatalayout : 'todo';
+            mos6502page0alloc : [];
           );
           );
 
 
        system_mipsel_embedded_info : tsysteminfo =
        system_mipsel_embedded_info : tsysteminfo =
@@ -301,6 +304,7 @@ unit i_embed;
             stackalign   : 8;
             stackalign   : 8;
             abi : abi_default;
             abi : abi_default;
             llvmdatalayout : 'todo';
             llvmdatalayout : 'todo';
+            mos6502page0alloc : [];
           );
           );
 
 
        system_i386_embedded_info : tsysteminfo =
        system_i386_embedded_info : tsysteminfo =
@@ -368,6 +372,7 @@ unit i_embed;
             stackalign   : 4;
             stackalign   : 4;
             abi : abi_default;
             abi : abi_default;
             llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32-n8:16:32-S32';
             llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32-n8:16:32-S32';
+            mos6502page0alloc : [];
           );
           );
 
 
        system_x86_64_embedded_info : tsysteminfo =
        system_x86_64_embedded_info : tsysteminfo =
@@ -435,6 +440,7 @@ unit i_embed;
             stackalign   : 16;
             stackalign   : 16;
             abi : abi_default;
             abi : abi_default;
             llvmdatalayout : 'e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128';
             llvmdatalayout : 'e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128';
+            mos6502page0alloc : [];
          );
          );
 
 
        system_i8086_embedded_info : tsysteminfo =
        system_i8086_embedded_info : tsysteminfo =
@@ -513,6 +519,7 @@ unit i_embed;
             stackalign   : 2;
             stackalign   : 2;
             abi          : abi_default;
             abi          : abi_default;
             llvmdatalayout : 'todo';
             llvmdatalayout : 'todo';
+            mos6502page0alloc : [];
           );
           );
 
 
        system_m68k_embedded_info : tsysteminfo =
        system_m68k_embedded_info : tsysteminfo =
@@ -580,6 +587,7 @@ unit i_embed;
             stackalign   : 4;
             stackalign   : 4;
             abi : abi_default;
             abi : abi_default;
             llvmdatalayout : 'TODO';
             llvmdatalayout : 'TODO';
+            mos6502page0alloc : [];
           );
           );
 
 
        system_riscv32_embedded_info : tsysteminfo =
        system_riscv32_embedded_info : tsysteminfo =
@@ -647,6 +655,7 @@ unit i_embed;
             stackalign   : 16;
             stackalign   : 16;
             abi : abi_riscv_ilp32;
             abi : abi_riscv_ilp32;
             llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:64:128-a0:0:64-n32-S32';
             llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:64:128-a0:0:64-n32-S32';
+            mos6502page0alloc : [];
           );
           );
 
 
        system_riscv64_embedded_info : tsysteminfo =
        system_riscv64_embedded_info : tsysteminfo =
@@ -714,6 +723,7 @@ unit i_embed;
             stackalign   : 8;
             stackalign   : 8;
             abi : abi_riscv_lp64d;
             abi : abi_riscv_lp64d;
             llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:64:128-a0:0:64-n32-S32';
             llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:64:128-a0:0:64-n32-S32';
+            mos6502page0alloc : [];
           );
           );
 
 
        system_xtensa_embedded_info : tsysteminfo =
        system_xtensa_embedded_info : tsysteminfo =
@@ -781,6 +791,7 @@ unit i_embed;
             stackalign   : 16;
             stackalign   : 16;
             abi : abi_xtensa_call0;
             abi : abi_xtensa_call0;
             llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:64:128-a0:0:64-n32-S32';
             llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:64:128-a0:0:64-n32-S32';
+            mos6502page0alloc : [];
           );
           );
 
 
        system_z80_embedded_info : tsysteminfo =
        system_z80_embedded_info : tsysteminfo =
@@ -849,6 +860,7 @@ unit i_embed;
             stackalign   : 1;
             stackalign   : 1;
             abi : abi_default;
             abi : abi_default;
             llvmdatalayout : 'todo';
             llvmdatalayout : 'todo';
+            mos6502page0alloc : [];
           );
           );
 
 
        system_mos6502_embedded_info : tsysteminfo =
        system_mos6502_embedded_info : tsysteminfo =
@@ -917,6 +929,7 @@ unit i_embed;
             stackalign   : 1;
             stackalign   : 1;
             abi : abi_default;
             abi : abi_default;
             llvmdatalayout : 'todo';
             llvmdatalayout : 'todo';
+            mos6502page0alloc : [0..255];
           );
           );
 
 
        system_wasm32_embedded_info : tsysteminfo =
        system_wasm32_embedded_info : tsysteminfo =
@@ -988,6 +1001,7 @@ unit i_embed;
             stackalign   : 16;
             stackalign   : 16;
             abi          : abi_default;
             abi          : abi_default;
             llvmdatalayout : 'todo';
             llvmdatalayout : 'todo';
+            mos6502page0alloc : [];
           );
           );
 
 
  implementation
  implementation

+ 1 - 0
compiler/systems/i_emx.pas

@@ -104,6 +104,7 @@ unit i_emx;
             stackalign   : 4;
             stackalign   : 4;
             abi          : abi_default;
             abi          : abi_default;
             llvmdatalayout : 'todo';
             llvmdatalayout : 'todo';
+            mos6502page0alloc : [];
           );
           );
 
 
 
 

+ 3 - 0
compiler/systems/i_freertos.pas

@@ -100,6 +100,7 @@ unit i_freertos;
             stackalign   : 16;
             stackalign   : 16;
             abi : abi_xtensa_windowed;
             abi : abi_xtensa_windowed;
             llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:64:128-a0:0:64-n32-S32';
             llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:64:128-a0:0:64-n32-S32';
+            mos6502page0alloc : [];
           );
           );
 
 
        system_arm_freertos_info : tsysteminfo =
        system_arm_freertos_info : tsysteminfo =
@@ -167,6 +168,7 @@ unit i_freertos;
             stackalign   : 16;
             stackalign   : 16;
             abi : abi_default;
             abi : abi_default;
             llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:64:128-a0:0:64-n32-S32';
             llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:64:128-a0:0:64-n32-S32';
+            mos6502page0alloc : [];
           );
           );
 
 
 
 
@@ -235,6 +237,7 @@ unit i_freertos;
             stackalign   : 16;
             stackalign   : 16;
             abi : abi_riscv_ilp32;
             abi : abi_riscv_ilp32;
             llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:64:128-a0:0:64-n32-S32';
             llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:64:128-a0:0:64-n32-S32';
+            mos6502page0alloc : [];
           );
           );
 
 
 
 

+ 1 - 0
compiler/systems/i_gba.pas

@@ -94,6 +94,7 @@ unit i_gba;
             stackalign   : 8;
             stackalign   : 8;
             abi : abi_eabi;
             abi : abi_eabi;
             llvmdatalayout : 'todo';
             llvmdatalayout : 'todo';
+            mos6502page0alloc : [];
           );
           );
 
 
   implementation
   implementation

+ 1 - 0
compiler/systems/i_go32v2.pas

@@ -93,6 +93,7 @@ unit i_go32v2;
             stackalign   : 4;
             stackalign   : 4;
             abi          : abi_default;
             abi          : abi_default;
             llvmdatalayout : 'todo';
             llvmdatalayout : 'todo';
+            mos6502page0alloc : [];
           );
           );
 
 
   implementation
   implementation

+ 2 - 0
compiler/systems/i_haiku.pas

@@ -107,6 +107,7 @@ unit i_haiku;
             abi : abi_default;
             abi : abi_default;
             { note: default LLVM stack alignment is 16 bytes for this target }
             { note: default LLVM stack alignment is 16 bytes for this target }
             llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32-n8:16:32-S32';
             llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32-n8:16:32-S32';
+            mos6502page0alloc : [];
           );
           );
 
 
     const
     const
@@ -177,6 +178,7 @@ unit i_haiku;
             stackalign   : 16;
             stackalign   : 16;
             abi : abi_default;
             abi : abi_default;
             llvmdatalayout : 'e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128';
             llvmdatalayout : 'e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128';
+            mos6502page0alloc : [];
           );
           );
 
 
   implementation
   implementation

+ 1 - 0
compiler/systems/i_human68k.pas

@@ -95,6 +95,7 @@ unit i_human68k;
             stackalign   : 2;
             stackalign   : 2;
             abi : abi_default;
             abi : abi_default;
             llvmdatalayout : 'todo';
             llvmdatalayout : 'todo';
+            mos6502page0alloc : [];
           );
           );
 
 
   implementation
   implementation

+ 2 - 0
compiler/systems/i_jvm.pas

@@ -111,6 +111,7 @@ unit i_jvm;
             stackalign   : 4;
             stackalign   : 4;
             abi          : abi_default;
             abi          : abi_default;
             llvmdatalayout : 'todo';
             llvmdatalayout : 'todo';
+            mos6502page0alloc : [];
           );
           );
 
 
 
 
@@ -180,6 +181,7 @@ unit i_jvm;
             stackalign   : 4;
             stackalign   : 4;
             abi          : abi_default;
             abi          : abi_default;
             llvmdatalayout : 'todo';
             llvmdatalayout : 'todo';
+            mos6502page0alloc : [];
           );
           );
 
 
 
 

+ 22 - 1
compiler/systems/i_linux.pas

@@ -104,6 +104,7 @@ unit i_linux;
             abi : abi_i386_dynalignedstack;
             abi : abi_i386_dynalignedstack;
             { note: default LLVM stack alignment is 16 bytes for this target }
             { note: default LLVM stack alignment is 16 bytes for this target }
             llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32-n8:16:32-S32';
             llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32-n8:16:32-S32';
+            mos6502page0alloc : [];
           );
           );
 
 
        system_x86_6432_linux_info : tsysteminfo =
        system_x86_6432_linux_info : tsysteminfo =
@@ -172,6 +173,7 @@ unit i_linux;
             stackalign   : 16;
             stackalign   : 16;
             abi : abi_default;
             abi : abi_default;
             llvmdatalayout : 'todo';
             llvmdatalayout : 'todo';
+            mos6502page0alloc : [];
           );
           );
 
 
        system_m68k_linux_info : tsysteminfo =
        system_m68k_linux_info : tsysteminfo =
@@ -241,6 +243,7 @@ unit i_linux;
             stackalign   : 4;
             stackalign   : 4;
             abi : abi_default;
             abi : abi_default;
             llvmdatalayout : 'todo';
             llvmdatalayout : 'todo';
+            mos6502page0alloc : [];
           );
           );
 
 
        system_powerpc_linux_info : tsysteminfo =
        system_powerpc_linux_info : tsysteminfo =
@@ -309,6 +312,7 @@ unit i_linux;
             stackalign   : 16;
             stackalign   : 16;
             abi : abi_powerpc_sysv;
             abi : abi_powerpc_sysv;
             llvmdatalayout : 'E-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v128:128:128-n32';
             llvmdatalayout : 'E-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v128:128:128-n32';
+            mos6502page0alloc : [];
           );
           );
 
 
        system_powerpc64_linux_info : tsysteminfo =
        system_powerpc64_linux_info : tsysteminfo =
@@ -377,6 +381,7 @@ unit i_linux;
             stackalign   : 16;
             stackalign   : 16;
             abi : abi_powerpc_sysv;
             abi : abi_powerpc_sysv;
             llvmdatalayout : 'E-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-f128:64:64-v128:128:128-n32:64';
             llvmdatalayout : 'E-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-f128:64:64-v128:128:128-n32:64';
+            mos6502page0alloc : [];
           );
           );
 
 
        system_x86_64_linux_info : tsysteminfo =
        system_x86_64_linux_info : tsysteminfo =
@@ -454,6 +459,7 @@ unit i_linux;
             stackalign   : 16;
             stackalign   : 16;
             abi : abi_default;
             abi : abi_default;
             llvmdatalayout : 'e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128';
             llvmdatalayout : 'e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128';
+            mos6502page0alloc : [];
           );
           );
 
 
        system_sparc_linux_info : tsysteminfo =
        system_sparc_linux_info : tsysteminfo =
@@ -524,6 +530,7 @@ unit i_linux;
             stackalign   : 8;
             stackalign   : 8;
             abi : abi_default;
             abi : abi_default;
             llvmdatalayout : 'E-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-n32-S64';
             llvmdatalayout : 'E-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-n32-S64';
+            mos6502page0alloc : [];
           );
           );
 
 
        system_sparc64_linux_info : tsysteminfo =
        system_sparc64_linux_info : tsysteminfo =
@@ -594,6 +601,7 @@ unit i_linux;
             stackalign   : 16;
             stackalign   : 16;
             abi : abi_default;
             abi : abi_default;
             llvmdatalayout : 'E-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-n32-S64';
             llvmdatalayout : 'E-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-n32-S64';
+            mos6502page0alloc : [];
           );
           );
 
 
 {$ifdef FPC_ARMHF}
 {$ifdef FPC_ARMHF}
@@ -670,6 +678,7 @@ unit i_linux;
             stackalign   : 8;
             stackalign   : 8;
             abi : abi_eabihf;
             abi : abi_eabihf;
             llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:64:128-a0:0:64-n32-S64';
             llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:64:128-a0:0:64-n32-S64';
+            mos6502page0alloc : [];
           );
           );
 {$else FPC_ARMHF}
 {$else FPC_ARMHF}
 {$ifdef FPC_ARMEL}
 {$ifdef FPC_ARMEL}
@@ -743,6 +752,7 @@ unit i_linux;
             stackalign   : 8;
             stackalign   : 8;
             abi : abi_eabi;
             abi : abi_eabi;
             llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:64:128-a0:0:64-n32-S64';
             llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:64:128-a0:0:64-n32-S64';
+            mos6502page0alloc : [];
           );
           );
 {$else FPC_ARMEL}
 {$else FPC_ARMEL}
 {$ifdef FPC_ARMEB}
 {$ifdef FPC_ARMEB}
@@ -813,6 +823,7 @@ unit i_linux;
             stackalign   : 4;
             stackalign   : 4;
             abi : abi_default;
             abi : abi_default;
             llvmdatalayout: 'todo';
             llvmdatalayout: 'todo';
+            mos6502page0alloc : [];
           );
           );
 {$else FPC_ARMEB}
 {$else FPC_ARMEB}
        system_arm_linux_info : tsysteminfo =
        system_arm_linux_info : tsysteminfo =
@@ -881,6 +892,7 @@ unit i_linux;
             stackalign   : 4;
             stackalign   : 4;
             abi : abi_default;
             abi : abi_default;
             llvmdatalayout: 'e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:32:64-v128:32:128-a0:0:32-n32-S32';
             llvmdatalayout: 'e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:32:64-v128:32:128-a0:0:32-n32-S32';
+            mos6502page0alloc : [];
           );
           );
 {$endif FPC_ARMEB}
 {$endif FPC_ARMEB}
 {$endif FPC_ARMEL}
 {$endif FPC_ARMEL}
@@ -959,7 +971,8 @@ unit i_linux;
             stacksize    : 8*1024*1024;
             stacksize    : 8*1024*1024;
             stackalign   : 16;
             stackalign   : 16;
             abi : abi_default;
             abi : abi_default;
-            llvmdatalayout : 'e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-n32:64-S128'
+            llvmdatalayout : 'e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-n32:64-S128';
+            mos6502page0alloc : [];
           );
           );
 
 
        system_mipseb_linux_info : tsysteminfo =
        system_mipseb_linux_info : tsysteminfo =
@@ -1030,6 +1043,7 @@ unit i_linux;
             stackalign   : 8;
             stackalign   : 8;
             abi : abi_default;
             abi : abi_default;
             llvmdatalayout : 'E-p:32:32:32-i1:8:8-i8:8:32-i16:16:32-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-n32-S64';
             llvmdatalayout : 'E-p:32:32:32-i1:8:8-i8:8:32-i16:16:32-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-n32-S64';
+            mos6502page0alloc : [];
           );
           );
 
 
        system_mipsel_linux_info : tsysteminfo =
        system_mipsel_linux_info : tsysteminfo =
@@ -1100,6 +1114,7 @@ unit i_linux;
             stackalign   : 8;
             stackalign   : 8;
             abi : abi_default;
             abi : abi_default;
             llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:32-i16:16:32-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-n32-S64';
             llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:32-i16:16:32-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-n32-S64';
+            mos6502page0alloc : [];
           );
           );
 
 
        system_mips64_linux_info : tsysteminfo =
        system_mips64_linux_info : tsysteminfo =
@@ -1170,6 +1185,7 @@ unit i_linux;
             stackalign   : 8;
             stackalign   : 8;
             abi : abi_default;
             abi : abi_default;
             llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:32-i16:16:32-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-n32-S64';
             llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:32-i16:16:32-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-n32-S64';
+            mos6502page0alloc : [];
           );
           );
 
 
        system_mips64el_linux_info : tsysteminfo =
        system_mips64el_linux_info : tsysteminfo =
@@ -1240,6 +1256,7 @@ unit i_linux;
             stackalign   : 8;
             stackalign   : 8;
             abi : abi_default;
             abi : abi_default;
             llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:32-i16:16:32-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-n32-S64';
             llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:32-i16:16:32-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-n32-S64';
+            mos6502page0alloc : [];
           );
           );
 
 
        system_riscv32_linux_info : tsysteminfo =
        system_riscv32_linux_info : tsysteminfo =
@@ -1311,6 +1328,7 @@ unit i_linux;
             stackalign   : 16;
             stackalign   : 16;
             abi : abi_riscv_ilp32;
             abi : abi_riscv_ilp32;
             llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:32-i16:16:32-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-n32-S64';
             llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:32-i16:16:32-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-n32-S64';
+            mos6502page0alloc : [];
           );
           );
 
 
        system_riscv64_linux_info : tsysteminfo =
        system_riscv64_linux_info : tsysteminfo =
@@ -1383,6 +1401,7 @@ unit i_linux;
             stackalign   : 16;
             stackalign   : 16;
             abi : abi_riscv_lp64d;
             abi : abi_riscv_lp64d;
             llvmdatalayout : 'E-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-f128:64:64-v128:128:128-n32:64';
             llvmdatalayout : 'E-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-f128:64:64-v128:128:128-n32:64';
+            mos6502page0alloc : [];
           );
           );
 
 
        system_xtensa_linux_info : tsysteminfo =
        system_xtensa_linux_info : tsysteminfo =
@@ -1453,6 +1472,7 @@ unit i_linux;
             stackalign   : 16;
             stackalign   : 16;
             abi : abi_xtensa_windowed;
             abi : abi_xtensa_windowed;
             llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:32-i16:16:32-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-n32-S64';
             llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:32-i16:16:32-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-n32-S64';
+            mos6502page0alloc : [];
           );
           );
 
 
        system_loongarch64_linux_info : tsysteminfo =
        system_loongarch64_linux_info : tsysteminfo =
@@ -1525,6 +1545,7 @@ unit i_linux;
             stackalign   : 16;
             stackalign   : 16;
             abi : abi_default;
             abi : abi_default;
             llvmdatalayout : 'E-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-f128:64:64-v128:128:128-n32:64';
             llvmdatalayout : 'E-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-f128:64:64-v128:128:128-n32:64';
+            mos6502page0alloc : [];
           );
           );
 
 
   implementation
   implementation

+ 2 - 0
compiler/systems/i_macos.pas

@@ -92,6 +92,7 @@ unit i_macos;
             stackalign   : 16;
             stackalign   : 16;
             abi : abi_powerpc_darwin;
             abi : abi_powerpc_darwin;
             llvmdatalayout : 'todo';
             llvmdatalayout : 'todo';
+            mos6502page0alloc : [];
           );
           );
 
 
      const
      const
@@ -159,6 +160,7 @@ unit i_macos;
             stackalign   : 2;
             stackalign   : 2;
             abi : abi_default;
             abi : abi_default;
             llvmdatalayout : 'todo';
             llvmdatalayout : 'todo';
+            mos6502page0alloc : [];
           );
           );
 
 
   implementation
   implementation

+ 1 - 0
compiler/systems/i_morph.pas

@@ -94,6 +94,7 @@ unit i_morph;
             stackalign   : 16;
             stackalign   : 16;
             abi : abi_powerpc_sysv;
             abi : abi_powerpc_sysv;
             llvmdatalayout : 'E-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v128:128:128-n32';
             llvmdatalayout : 'E-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v128:128:128-n32';
+            mos6502page0alloc : [];
           );
           );
 
 
   implementation
   implementation

+ 1 - 0
compiler/systems/i_msdos.pas

@@ -111,6 +111,7 @@ unit i_msdos;
             stackalign   : 2;
             stackalign   : 2;
             abi          : abi_default;
             abi          : abi_default;
             llvmdatalayout : 'todo';
             llvmdatalayout : 'todo';
+            mos6502page0alloc : [];
           );
           );
 
 
   implementation
   implementation

+ 1 - 0
compiler/systems/i_msxdos.pas

@@ -99,6 +99,7 @@ unit i_msxdos;
             stackalign   : 1;
             stackalign   : 1;
             abi          : abi_default;
             abi          : abi_default;
             llvmdatalayout : 'todo';
             llvmdatalayout : 'todo';
+            mos6502page0alloc : [];
           );
           );
 
 
   implementation
   implementation

+ 1 - 0
compiler/systems/i_nativent.pas

@@ -98,6 +98,7 @@ unit i_nativent;
             stackalign   : 4;
             stackalign   : 4;
             abi          : abi_default;
             abi          : abi_default;
             llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-f80:128:128-v64:64:64-v128:128:128-a0:0:64-f80:32:32-n8:16:32-S32';
             llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-f80:128:128-v64:64:64-v128:128:128-a0:0:64-f80:32:32-n8:16:32-S32';
+            mos6502page0alloc : [];
           );
           );
 
 
   implementation
   implementation

+ 1 - 0
compiler/systems/i_nds.pas

@@ -94,6 +94,7 @@ unit i_nds;
             stackalign   : 8;
             stackalign   : 8;
             abi : abi_eabi;
             abi : abi_eabi;
             llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:64:128-a0:0:64-n32-S64';
             llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:64:128-a0:0:64-n32-S64';
+            mos6502page0alloc : [];
           );
           );
 
 
   implementation
   implementation

+ 1 - 0
compiler/systems/i_nwl.pas

@@ -93,6 +93,7 @@ unit i_nwl;
             stackalign   : 4;
             stackalign   : 4;
             abi : abi_default;
             abi : abi_default;
             llvmdatalayout : 'todo';
             llvmdatalayout : 'todo';
+            mos6502page0alloc : [];
           );
           );
 
 
   implementation
   implementation

+ 1 - 0
compiler/systems/i_nwm.pas

@@ -93,6 +93,7 @@ unit i_nwm;
             stackalign   : 4;
             stackalign   : 4;
             abi : abi_default;
             abi : abi_default;
             llvmdatalayout : 'todo';
             llvmdatalayout : 'todo';
+            mos6502page0alloc : [];
           );
           );
 
 
   implementation
   implementation

+ 1 - 0
compiler/systems/i_oric.pas

@@ -100,6 +100,7 @@ unit i_oric;
             stackalign   : 1;
             stackalign   : 1;
             abi : abi_default;
             abi : abi_default;
             llvmdatalayout : 'todo';
             llvmdatalayout : 'todo';
+            mos6502page0alloc : [$00..$0B,$BB,$BC,$F3..$F9];
           );
           );
 
 
  implementation
  implementation

+ 1 - 0
compiler/systems/i_os2.pas

@@ -104,6 +104,7 @@ unit i_os2;
             stackalign   : 4;
             stackalign   : 4;
             abi          : abi_default;
             abi          : abi_default;
             llvmdatalayout : 'todo';
             llvmdatalayout : 'todo';
+            mos6502page0alloc : [];
           );
           );
 
 
 
 

+ 2 - 0
compiler/systems/i_palmos.pas

@@ -94,6 +94,7 @@ unit i_palmos;
             stackalign   : 2;
             stackalign   : 2;
             abi : abi_default;
             abi : abi_default;
             llvmdatalayout : 'todo';
             llvmdatalayout : 'todo';
+            mos6502page0alloc : [];
           );
           );
 
 
        res_m68k_palmos_info : tresinfo =
        res_m68k_palmos_info : tresinfo =
@@ -171,6 +172,7 @@ unit i_palmos;
             stackalign   : 4;
             stackalign   : 4;
             abi : abi_default;
             abi : abi_default;
             llvmdatalayout : 'todo';
             llvmdatalayout : 'todo';
+            mos6502page0alloc : [];
           );
           );
 
 
        res_arm_palmos_info : tresinfo =
        res_arm_palmos_info : tresinfo =

+ 1 - 0
compiler/systems/i_ps1.pas

@@ -95,6 +95,7 @@ unit i_ps1;
             stackalign   : 8;
             stackalign   : 8;
             abi : abi_default;
             abi : abi_default;
             llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:32-i16:16:32-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-n32-S64';
             llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:32-i16:16:32-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-n32-S64';
+            mos6502page0alloc : [];
           );
           );
 
 
   implementation
   implementation

+ 1 - 0
compiler/systems/i_sinclairql.pas

@@ -94,6 +94,7 @@ unit i_sinclairql;
             stackalign   : 2;
             stackalign   : 2;
             abi : abi_default;
             abi : abi_default;
             llvmdatalayout : 'todo';
             llvmdatalayout : 'todo';
+            mos6502page0alloc : [];
           );
           );
 
 
   implementation
   implementation

+ 3 - 0
compiler/systems/i_sunos.pas

@@ -97,6 +97,7 @@ unit i_sunos;
             abi          : abi_default;
             abi          : abi_default;
             { note: default LLVM stack alignment is 16 bytes for this target }
             { note: default LLVM stack alignment is 16 bytes for this target }
             llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32-n8:16:32-S32';
             llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32-n8:16:32-S32';
+            mos6502page0alloc : [];
           );
           );
 
 
 
 
@@ -168,6 +169,7 @@ unit i_sunos;
             stackalign   : 16;
             stackalign   : 16;
             abi : abi_default;
             abi : abi_default;
             llvmdatalayout : 'e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128';
             llvmdatalayout : 'e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128';
+            mos6502page0alloc : [];
           );
           );
 
 
 
 
@@ -239,6 +241,7 @@ unit i_sunos;
             stackalign   : 8;
             stackalign   : 8;
             abi          : abi_default;
             abi          : abi_default;
             llvmdatalayout : 'E-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-n32-S64';
             llvmdatalayout : 'E-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-n32-S64';
+            mos6502page0alloc : [];
           );
           );
 
 
   implementation
   implementation

+ 2 - 0
compiler/systems/i_symbian.pas

@@ -95,6 +95,7 @@ unit i_symbian;
             stackalign   : 4;
             stackalign   : 4;
             abi          : abi_default;
             abi          : abi_default;
             llvmdatalayout : 'todo';
             llvmdatalayout : 'todo';
+            mos6502page0alloc : [];
           );
           );
 
 
        system_arm_symbian_info : tsysteminfo =
        system_arm_symbian_info : tsysteminfo =
@@ -162,6 +163,7 @@ unit i_symbian;
             stackalign   : 4;
             stackalign   : 4;
             abi          : abi_default;
             abi          : abi_default;
             llvmdatalayout : 'todo';
             llvmdatalayout : 'todo';
+            mos6502page0alloc : [];
           );
           );
 
 
 
 

+ 3 - 0
compiler/systems/i_wasi.pas

@@ -98,6 +98,7 @@ unit i_wasi;
             stackalign   : 16;
             stackalign   : 16;
             abi          : abi_default;
             abi          : abi_default;
             llvmdatalayout : 'todo';
             llvmdatalayout : 'todo';
+            mos6502page0alloc : [];
           );
           );
 
 
 
 
@@ -171,6 +172,7 @@ unit i_wasi;
             stackalign   : 16;
             stackalign   : 16;
             abi          : abi_default;
             abi          : abi_default;
             llvmdatalayout : 'todo';
             llvmdatalayout : 'todo';
+            mos6502page0alloc : [];
           );
           );
 
 
 
 
@@ -243,6 +245,7 @@ unit i_wasi;
             stackalign   : 16;
             stackalign   : 16;
             abi          : abi_default;
             abi          : abi_default;
             llvmdatalayout : 'todo';
             llvmdatalayout : 'todo';
+            mos6502page0alloc : [];
           );
           );
 
 
 
 

+ 1 - 0
compiler/systems/i_watcom.pas

@@ -93,6 +93,7 @@ unit i_watcom;
             stackalign   : 4;
             stackalign   : 4;
             abi          : abi_default;
             abi          : abi_default;
             llvmdatalayout : 'todo';
             llvmdatalayout : 'todo';
+            mos6502page0alloc : [];
           );
           );
 
 
   implementation
   implementation

+ 1 - 0
compiler/systems/i_wdosx.pas

@@ -93,6 +93,7 @@ unit i_wdosx;
             stackalign   : 4;
             stackalign   : 4;
             abi          : abi_default;
             abi          : abi_default;
             llvmdatalayout : 'todo';
             llvmdatalayout : 'todo';
+            mos6502page0alloc : [];
           );
           );
 
 
   implementation
   implementation

+ 1 - 0
compiler/systems/i_wii.pas

@@ -95,6 +95,7 @@ unit i_wii;
             stackalign   : 16;
             stackalign   : 16;
             abi : abi_powerpc_sysv;
             abi : abi_powerpc_sysv;
             llvmdatalayout : 'E-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v128:128:128-n32';
             llvmdatalayout : 'E-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v128:128:128-n32';
+            mos6502page0alloc : [];
           );
           );
 
 
   implementation
   implementation

+ 6 - 1
compiler/systems/i_win.pas

@@ -98,6 +98,7 @@ unit i_win;
             stackalign   : 4;
             stackalign   : 4;
             abi          : abi_default;
             abi          : abi_default;
             llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-f80:128:128-v64:64:64-v128:128:128-a0:0:64-f80:32:32-n8:16:32-S32';
             llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-f80:128:128-v64:64:64-v128:128:128-a0:0:64-f80:32:32-n8:16:32-S32';
+            mos6502page0alloc : [];
           );
           );
 
 
        system_x64_win64_info : tsysteminfo =
        system_x64_win64_info : tsysteminfo =
@@ -169,6 +170,7 @@ unit i_win;
             stackalign   : 16;
             stackalign   : 16;
             abi          : abi_default;
             abi          : abi_default;
             llvmdatalayout : 'e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128';
             llvmdatalayout : 'e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128';
+            mos6502page0alloc : [];
           );
           );
 
 
        system_arm_wince_info : tsysteminfo =
        system_arm_wince_info : tsysteminfo =
@@ -238,6 +240,7 @@ unit i_win;
             stackalign   : 4;
             stackalign   : 4;
             abi          : abi_default;
             abi          : abi_default;
             llvmdatalayout : 'todo';
             llvmdatalayout : 'todo';
+            mos6502page0alloc : [];
           );
           );
 
 
        system_i386_wince_info : tsysteminfo =
        system_i386_wince_info : tsysteminfo =
@@ -307,6 +310,7 @@ unit i_win;
             stackalign   : 4;
             stackalign   : 4;
             abi          : abi_default;
             abi          : abi_default;
             llvmdatalayout : 'todo';
             llvmdatalayout : 'todo';
+            mos6502page0alloc : [];
           );
           );
 
 
        system_aarch64_win64_info : tsysteminfo =
        system_aarch64_win64_info : tsysteminfo =
@@ -377,7 +381,8 @@ unit i_win;
             stacksize    : 16*1024*1024;
             stacksize    : 16*1024*1024;
             stackalign   : 16;
             stackalign   : 16;
             abi          : abi_default;
             abi          : abi_default;
-            llvmdatalayout : 'e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-n32:64-S128'
+            llvmdatalayout : 'e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-n32:64-S128';
+            mos6502page0alloc : [];
           );
           );
 
 
 
 

+ 1 - 0
compiler/systems/i_win16.pas

@@ -116,6 +116,7 @@ unit i_win16;
             stackalign   : 2;
             stackalign   : 2;
             abi          : abi_default;
             abi          : abi_default;
             llvmdatalayout : 'todo';
             llvmdatalayout : 'todo';
+            mos6502page0alloc : [];
           );
           );
 
 
   implementation
   implementation

+ 1 - 0
compiler/systems/i_zxspectrum.pas

@@ -99,6 +99,7 @@ unit i_zxspectrum;
             stackalign   : 1;
             stackalign   : 1;
             abi : abi_default;
             abi : abi_default;
             llvmdatalayout : 'todo';
             llvmdatalayout : 'todo';
+            mos6502page0alloc : [];
           );
           );
 
 
  implementation
  implementation