Author Topic: Mac OS 9.2.2 Memory Limit of 1.5 GB... Some Answers  (Read 104433 times)

Offline DieHard

  • Global Moderator
  • Platinum Member
  • *****
  • Posts: 2368
Re: Mac OS 9.2.2 Memory Limit of 1.5 GB... Some Answers
« Reply #100 on: May 24, 2017, 02:31:48 PM »
Attached is a screenshot of the crash I obtain when booting with "Second limit-breaking ROM".

Damn !  We were going so quick  thought we would have the full extra 512MB by midnight :)

All joking aside, this is absolutely amazing, even stealing 64MB is like XMas considering Apple never intended to throw us even that small bone.

Offline ELN

  • Gold Member
  • *****
  • Posts: 295
  • new to the forums
Re: Mac OS 9.2.2 Memory Limit of 1.5 GB... Some Answers
« Reply #101 on: May 24, 2017, 04:41:27 PM »
Attached is a screenshot of the crash I obtain when booting with "Second limit-breaking ROM".

That's a pretty miserable crash, but very fixable. My PageMap patching code is very hacky, and made some clearly incorrect assumptions about the state of the map on other people's machines. I should have a fix in a day or two.

So thanks for testing, guys. I'll have another image for you in a couple of days. If you're willing to believe that the second image does work, then we're up to 1.625 GB.

Offline MacOS Plus

  • Gold Member
  • *****
  • Posts: 418
  • The 9serve Lives!
Re: Mac OS 9.2.2 Memory Limit of 1.5 GB... Some Answers
« Reply #102 on: May 24, 2017, 09:14:02 PM »
  Okay, so I tried this again after getting home from work this evening.  The first ROM prevents my MDD FW400 from recognizing the drive as a valid boot device.  The second ROM does get recognized but fails in exactly the same way as it did for MacTron.  (I won't bother posting an identical screenshot.)  I don't know what the deal is with the first version of the ROM not playing nice with my machine, but at least I know it's just something with that file given that the second version is recognized.  I will try again on the MDD once you have made further adjustments.

<edit>  Just for the hell of it I tried booting ROM v2 on a Quicksilver.  Now I know that's not particularly useful since this machine cannot have more than 1.5GB of RAM installed in it at all, but I just wanted to see if the boot would complete on a different machine.  It did boot without issue with a machine max RAM of 1.5GB present.  Here's the log output:

Code: [Select]
NKLogReader by ELN.
NKNanoKernelInfo: logi addr 68ffedc0, struct ver 0228, 352 bytes.
NKNanoKernelInfo is within the Kernel Data Page. KDP phys addr 5f7fe000.
NanoKernel log starts after one blank line.

Hello from the builtin multitasking NanoKernel. Version: 0228
Kernel code base at 0x00f10000  Physical RAM size 0x5fffc000 bytes
Created motherboard coherence group. ID 00010001
NKCreateAddressSpaceSub - group at 0x5f7fc1c0 00010001
Created system address space. ID 00030001
 BATs ffc0007f 00c00043   6800001f 00f00043   00000000 00000000   00000000 00000000
Init ready queue 00000000 00000000 00008652
Init ready queue 00000001 00000000 00043290
Init ready queue 00000002 00000000 00219480
Init ready queue 00000003 00000000 010ca400
System context at 0x5f7ff100  Vector save area at 0x5f7fb8e0  SDR1 0x5f80003f
Adding blue task 00050001 to the ready queue
Starting timeslicing
Adding idle task 00070001 to the ready queue
NKCreateAddressSpaceSub - group at 0x5f7fc1c0 00010001
Priming the system free list with 208 pages.
VMMaxVirtualPages: 00064000 VMLogicalPages: 00000000
Interrupt handler kind: 06
Converting PMDTs to areas
 CreateArea [ 00000000 5f645fff ] ID 000a0001 placed ... created
 CreateArea [ 64000000 6417ffff ] ID 000b0001 placed ... created
 CreateArea [ 68fef000 68feffff ] ID 000c0001 placed ... created
 CreateArea [ 68ff5000 68ffefff ] ID 000d0001 placed ... created
 CreateArea [ 68fff000 68ffffff ] ID 000e0001 placed ... created
 CreateArea [ 6fffe000 6fffefff ] ID 000f0001 placed ... created
 CreateArea [ 80000000 8fffffff ] ID 00100001 placed ... created
 CreateArea [ 90000000 9001ffff ] ID 00110001 placed ... created
 CreateArea [ 91000000 91ffffff ] ID 00120001 placed ... created
 CreateArea [ 98000000 9fffffff ] ID 00130001 placed ... created
 CreateArea [ f0000000 f4ffffff ] ID 00140001 placed ... created
 CreateArea [ f5000000 f5000fff ] ID 00150001 placed ... created
 CreateArea [ f5001000 f50fffff ] ID 00160001 placed ... created
 CreateArea [ f5100000 f51fffff ] ID 00170001 placed ... created
 CreateArea [ f5200000 f53fffff ] ID 00180001 placed ... created
 CreateArea [ f5400000 ffffffff ] ID 00190001 placed ... created
 CreateArea [ 68f16000 68f16fff ] ID 001a0001 placed ... created
 CreateArea [ deadb000 deadbfff ] ID 001b0001 placed ... created
Reset system - Into the 68K fire: 0000d032 6806e8c0
ResetSystem trap entered
Kernel code base at 0x00f10000  Physical RAM size 0x5fffc000 bytes
Created motherboard coherence group. ID 00010001
NKCreateAddressSpaceSub - group at 0x5f7fc1c0 00010001
Created system address space. ID 00030001
 BATs ffc0007f 00c00043   6800001f 00f00043   00000000 00000000   00000000 00000000
Init ready queue 00000000 00000000 00008652
Init ready queue 00000001 00000000 00043290
Init ready queue 00000002 00000000 00219480
Init ready queue 00000003 00000000 010ca400
System context at 0x5f7ff100  Vector save area at 0x5f7fb8e0  SDR1 0x5f80003f
Adding blue task 00050001 to the ready queue
Starting timeslicing
Adding idle task 00070001 to the ready queue
NKCreateAddressSpaceSub - group at 0x5f7fc1c0 00010001
Priming the system free list with 208 pages.
VMMaxVirtualPages: 00064000 VMLogicalPages: 0005f646
Interrupt handler kind: 06
Converting PMDTs to areas
 CreateArea [ 00000000 5f645fff ] ID 000a0001 placed ... created
 CreateArea [ 64000000 6417ffff ] ID 000b0001 placed ... created
 CreateArea [ 68fef000 68feffff ] ID 000c0001 placed ... created
 CreateArea [ 68ff5000 68ffefff ] ID 000d0001 placed ... created
 CreateArea [ 68fff000 68ffffff ] ID 000e0001 placed ... created
 CreateArea [ 6fffe000 6fffefff ] ID 000f0001 placed ... created
 CreateArea [ 80000000 8fffffff ] ID 00100001 placed ... created
 CreateArea [ 90000000 9001ffff ] ID 00110001 placed ... created
 CreateArea [ 91000000 91ffffff ] ID 00120001 placed ... created
 CreateArea [ 98000000 9fffffff ] ID 00130001 placed ... created
 CreateArea [ f0000000 f4ffffff ] ID 00140001 placed ... created
 CreateArea [ f5000000 f5000fff ] ID 00150001 placed ... created
 CreateArea [ f5001000 f50fffff ] ID 00160001 placed ... created
 CreateArea [ f5100000 f51fffff ] ID 00170001 placed ... created
 CreateArea [ f5200000 f53fffff ] ID 00180001 placed ... created
 CreateArea [ f5400000 ffffffff ] ID 00190001 placed ... created
 CreateArea [ 68f16000 68f16fff ] ID 001a0001 placed ... created
 CreateArea [ deadb000 deadbfff ] ID 001b0001 placed ... created
Reset system - Into the 68K fire: 0002d032 6806c9e8
Extend free pool: phys 0x5ff3e000  virt 0x00000000  count: 1
Extend free pool: phys 0x5ff3d000  virt 0x00000000  count: 2
Extend free pool: phys 0x5ff3c000  virt 0x00000000  count: 3
Extend free pool: phys 0x5ff3b000  virt 0x00000000  count: 4
Extend free pool: phys 0x5ff3a000  virt 0x00000000  count: 5
Extend free pool: phys 0x5ff39000  virt 0x00000000  count: 6
Extend free pool: phys 0x5ff38000  virt 0x00000000  count: 7
Extend free pool: phys 0x5ff37000  virt 0x00000000  count: 8
Extend free pool: phys 0x5ff36000  virt 0x00000000  count: 9
Extend free pool: phys 0x5ff35000  virt 0x00000000  count: 10
Skeleton key inserted at00021032 013c9360
Extend free pool: phys 0x5ff34000  virt 0x00000000  count: 11
Extend free pool: phys 0x5ff33000  virt 0x00000000  count: 12

  If this is of any use or you need the log for the original ROM, let me know.  Oh, and the archives seem to be working correctly now with Classilla and Stuffit Expander in OS 9.
« Last Edit: May 25, 2017, 05:42:20 AM by nanopico »

Offline nanopico

  • Moderator
  • Platinum Member
  • *****
  • Posts: 767
Re: Mac OS 9.2.2 Memory Limit of 1.5 GB... Some Answers
« Reply #103 on: May 25, 2017, 05:43:20 AM »
  Okay, so I tried this again after getting home from work this evening.  The first ROM prevents my MDD FW400 from recognizing the drive as a valid boot device.  The second ROM does get recognized but fails in exactly the same way as it did for MacTron.  (I won't bother posting an identical screenshot.)  I don't know what the deal is with the first version of the ROM not playing nice with my machine, but at least I know it's just something with that file given that the second version is recognized.  I will try again on the MDD once you have made further adjustments.

<edit>  Just for the hell of it I tried booting ROM v2 on a Quicksilver.  Now I know that's not particularly useful since this machine cannot have more than 1.5GB of RAM installed in it at all, but I just wanted to see if the boot would complete on a different machine.  It did boot without issue with a machine max RAM of 1.5GB present.  Here's the log output:

Code: [Select]
NKLogReader by ELN.
NKNanoKernelInfo: logi addr 68ffedc0, struct ver 0228, 352 bytes.
NKNanoKernelInfo is within the Kernel Data Page. KDP phys addr 5f7fe000.
NanoKernel log starts after one blank line.

Hello from the builtin multitasking NanoKernel. Version: 0228
Kernel code base at 0x00f10000  Physical RAM size 0x5fffc000 bytes
Created motherboard coherence group. ID 00010001
NKCreateAddressSpaceSub - group at 0x5f7fc1c0 00010001
Created system address space. ID 00030001
 BATs ffc0007f 00c00043   6800001f 00f00043   00000000 00000000   00000000 00000000
Init ready queue 00000000 00000000 00008652
Init ready queue 00000001 00000000 00043290
Init ready queue 00000002 00000000 00219480
Init ready queue 00000003 00000000 010ca400
System context at 0x5f7ff100  Vector save area at 0x5f7fb8e0  SDR1 0x5f80003f
Adding blue task 00050001 to the ready queue
Starting timeslicing
Adding idle task 00070001 to the ready queue
NKCreateAddressSpaceSub - group at 0x5f7fc1c0 00010001
Priming the system free list with 208 pages.
VMMaxVirtualPages: 00064000 VMLogicalPages: 00000000
Interrupt handler kind: 06
Converting PMDTs to areas
 CreateArea [ 00000000 5f645fff ] ID 000a0001 placed ... created
 CreateArea [ 64000000 6417ffff ] ID 000b0001 placed ... created
 CreateArea [ 68fef000 68feffff ] ID 000c0001 placed ... created
 CreateArea [ 68ff5000 68ffefff ] ID 000d0001 placed ... created
 CreateArea [ 68fff000 68ffffff ] ID 000e0001 placed ... created
 CreateArea [ 6fffe000 6fffefff ] ID 000f0001 placed ... created
 CreateArea [ 80000000 8fffffff ] ID 00100001 placed ... created
 CreateArea [ 90000000 9001ffff ] ID 00110001 placed ... created
 CreateArea [ 91000000 91ffffff ] ID 00120001 placed ... created
 CreateArea [ 98000000 9fffffff ] ID 00130001 placed ... created
 CreateArea [ f0000000 f4ffffff ] ID 00140001 placed ... created
 CreateArea [ f5000000 f5000fff ] ID 00150001 placed ... created
 CreateArea [ f5001000 f50fffff ] ID 00160001 placed ... created
 CreateArea [ f5100000 f51fffff ] ID 00170001 placed ... created
 CreateArea [ f5200000 f53fffff ] ID 00180001 placed ... created
 CreateArea [ f5400000 ffffffff ] ID 00190001 placed ... created
 CreateArea [ 68f16000 68f16fff ] ID 001a0001 placed ... created
 CreateArea [ deadb000 deadbfff ] ID 001b0001 placed ... created
Reset system - Into the 68K fire: 0000d032 6806e8c0
ResetSystem trap entered
Kernel code base at 0x00f10000  Physical RAM size 0x5fffc000 bytes
Created motherboard coherence group. ID 00010001
NKCreateAddressSpaceSub - group at 0x5f7fc1c0 00010001
Created system address space. ID 00030001
 BATs ffc0007f 00c00043   6800001f 00f00043   00000000 00000000   00000000 00000000
Init ready queue 00000000 00000000 00008652
Init ready queue 00000001 00000000 00043290
Init ready queue 00000002 00000000 00219480
Init ready queue 00000003 00000000 010ca400
System context at 0x5f7ff100  Vector save area at 0x5f7fb8e0  SDR1 0x5f80003f
Adding blue task 00050001 to the ready queue
Starting timeslicing
Adding idle task 00070001 to the ready queue
NKCreateAddressSpaceSub - group at 0x5f7fc1c0 00010001
Priming the system free list with 208 pages.
VMMaxVirtualPages: 00064000 VMLogicalPages: 0005f646
Interrupt handler kind: 06
Converting PMDTs to areas
 CreateArea [ 00000000 5f645fff ] ID 000a0001 placed ... created
 CreateArea [ 64000000 6417ffff ] ID 000b0001 placed ... created
 CreateArea [ 68fef000 68feffff ] ID 000c0001 placed ... created
 CreateArea [ 68ff5000 68ffefff ] ID 000d0001 placed ... created
 CreateArea [ 68fff000 68ffffff ] ID 000e0001 placed ... created
 CreateArea [ 6fffe000 6fffefff ] ID 000f0001 placed ... created
 CreateArea [ 80000000 8fffffff ] ID 00100001 placed ... created
 CreateArea [ 90000000 9001ffff ] ID 00110001 placed ... created
 CreateArea [ 91000000 91ffffff ] ID 00120001 placed ... created
 CreateArea [ 98000000 9fffffff ] ID 00130001 placed ... created
 CreateArea [ f0000000 f4ffffff ] ID 00140001 placed ... created
 CreateArea [ f5000000 f5000fff ] ID 00150001 placed ... created
 CreateArea [ f5001000 f50fffff ] ID 00160001 placed ... created
 CreateArea [ f5100000 f51fffff ] ID 00170001 placed ... created
 CreateArea [ f5200000 f53fffff ] ID 00180001 placed ... created
 CreateArea [ f5400000 ffffffff ] ID 00190001 placed ... created
 CreateArea [ 68f16000 68f16fff ] ID 001a0001 placed ... created
 CreateArea [ deadb000 deadbfff ] ID 001b0001 placed ... created
Reset system - Into the 68K fire: 0002d032 6806c9e8
Extend free pool: phys 0x5ff3e000  virt 0x00000000  count: 1
Extend free pool: phys 0x5ff3d000  virt 0x00000000  count: 2
Extend free pool: phys 0x5ff3c000  virt 0x00000000  count: 3
Extend free pool: phys 0x5ff3b000  virt 0x00000000  count: 4
Extend free pool: phys 0x5ff3a000  virt 0x00000000  count: 5
Extend free pool: phys 0x5ff39000  virt 0x00000000  count: 6
Extend free pool: phys 0x5ff38000  virt 0x00000000  count: 7
Extend free pool: phys 0x5ff37000  virt 0x00000000  count: 8
Extend free pool: phys 0x5ff36000  virt 0x00000000  count: 9
Extend free pool: phys 0x5ff35000  virt 0x00000000  count: 10
Skeleton key inserted at00021032 013c9360
Extend free pool: phys 0x5ff34000  virt 0x00000000  count: 11
Extend free pool: phys 0x5ff33000  virt 0x00000000  count: 12

  If this is of any use or you need the log for the original ROM, let me know.  Oh, and the archives seem to be working correctly now with Classilla and Stuffit Expander in OS 9.

I edited this for you to remove ELN's info to the public.  Hope that's ok.
If it ain't broke, don't fix it, or break it so you can fix it!

Offline MacOS Plus

  • Gold Member
  • *****
  • Posts: 418
  • The 9serve Lives!
Re: Mac OS 9.2.2 Memory Limit of 1.5 GB... Some Answers
« Reply #104 on: May 25, 2017, 09:24:59 AM »
  Yes, thanks.  I didn't catch that it was in there at the top of the text.  I'll keep that in mind for later.

Offline ELN

  • Gold Member
  • *****
  • Posts: 295
  • new to the forums
Re: Mac OS 9.2.2 Memory Limit of 1.5 GB... Some Answers
« Reply #105 on: June 04, 2017, 02:00:42 AM »
Hi everyone,

I have added a new component to the Mac OS ROM: the "Wedge". The Wedge is a chunk of C code inserted into the ROM that runs between the Trampoline and the NanoKernel. It takes the structures prepared by the Trampoline, carefully patches them, spits out some textual debug output, and then hands control to the NanoKernel. The debug output remains hidden in memory while the machine boots up. Once (and if) the machine is booted, it can be read by a small app, WedgeLogReader.

At present the only task of the Wedge is to expand the main segment of Mac OS memory. This allows an extra 128MB of RAM to be used, on top of the 1.5GB limit.

Why go to the trouble of bootstrapping a C runtime? Two reasons:

  • Ease. Patching the PageMap is too complex to accomplish reliably in RISC assembly (see the crash reports above).
  • Portability. The code can be tested on your machine in userspace before risking a crash on boot.

And what cool stuff is in the attached archive?

  • PowerMacInfo, in case you didn't already have a copy. This will crash on a Wedge ROM, because it hardcodes the InfoRecord Page address.
  • WedgeDryRun, a text app to test the Wedge code on your machine. If this crashes, let me know.
  • Mac OS ROM, with all the trimmings. Besides bumping the RAM limit slightly, this should work on all unsupported G4 desktops (including the 9serve, MacOS Plus!). The annoying NanoKernel log window is off by default. If you find it stable and you want the extra RAM, then this is ready for production use!
  • WedgeLogReader, a text app to dump the Wedge log left over from boot. Naturally, it only shows useful information if you booted with the Wedge.
  • NKLogReader, again in case you didn't have a copy.

Those testers who had trouble with the previous patched ROMs, would you please try this out? The best information to post would be: WedgeDryRun output, WedgeLogReader output, NKLogReader output, and before/after screenshots of About This Computer. Please post text inline! That way I can read it on my phone, and it gets indexed by Google.

For the morbidly curious, here is the Wedge C code. The same code runs in both the attached ROM and the WedgeLogReader. I don't suppose that one of the admins feels like changing the tab size to 4?

Code: [Select]
#include <PPCInfoRecordsPriv.h>
#include <MacTypes.h>


#define kFlagNone 0
#define kFlagIRP 1
#define kFlagKDP 2
#define kFlagEDP 3


#define LA_InfoRecord_Orig 0x5fffe000UL
#define LA_UniversalArea_Orig 0x64000000UL
#define LA_RiscRom_Orig 0x68000000UL
#define LA_ConfigInfo_Orig 0x68fef000UL
#define LA_KernelData_Orig 0x68ffe000UL
#define LA_KernelData_Orig 0x68fff000UL


#define kConfigInfoSize 4096
#define kHardwareInfoSize 192


#define kPatchInfoRecord 0x00000001UL
#define kPatchUniversalArea 0x00000010UL
#define kCanPatchEmulator 0x80000000UL


#define kDelta 0x80000000UL


void *memcpy(void *dest, void *src, long n)
{
long i;

char *d = (char *)dest;
char *s = (char *)src;

if(dest < src) /* copy left to right */
{
for(i=0; i<n; i++) d[i] = s[i];
}
else /* copy right to left */
{
for(i=n-1; i>=0; i--) d[i] = s[i];
}

return dest;
}


void *memset(void *dest, int v, long n)
{
char *d = (char *)dest;

while(n) d[--n] = (char)v;

return dest;
}


struct PME
{
unsigned long word1; /* LogicalPageIndexInSegment(16b) || PageCountMinus1(16b) */
unsigned long word2; /* PhysicalPage(20b) || pageAttr(12b) */
};
typedef struct PME PME;


PME *getPageMapPtr(NKConfigurationInfo *ConfigInfo)
{
return (PME *)((long)ConfigInfo + (long)ConfigInfo->PageMapInitOffset);
}


int pmeIsBlank(PME *pme)
{
if(pme->word1 != 0x0000ffffUL) return 0;
if((pme->word2 & 0x00000f00UL) != 0x00000a00UL) return 0;
return 1;
}


int segmentOf(unsigned long LA)
{
return LA >> 28;
}


/*
Create a PageMapEntry (specifying a logical-to-physical mapping within a PowerPC segment)
and insert it into a ConfigInfo struct, taking care not to corrupt the structure.

(Intended to replicate the behaviour of the Trampoline, based on its debug output)
*/

int AddPageMapEntry(NKConfigurationInfo *ci, unsigned long LA, unsigned long count, unsigned long PA, unsigned long pageAttr, unsigned long flags)
{
PME *pageMapBase = getPageMapPtr(ci);

PME newEnt;
int entryOffset; /* offset of our new entry within the PageMap (bytes) */

int i;


/* Format string lifted from Trampoline (changed a tiny bit). */

printf("AddPageMapEntry: LA = 0x%08X, count = 0x%05X, PA = 0x%08X, pageAttr = 0x%04X, flags = 0x%02X.\n", LA, count, PA, pageAttr, flags);


/* "Design" the new entry. */

newEnt.word1 = ((LA << 4) & 0xffff0000UL) | (count - 1);
newEnt.word2 = (PA & 0xfffff000UL) | pageAttr;


/* Choose an offset for the entry. */

entryOffset = ci->SegMap32SupInit[segmentOf(LA) * 2];

for(;;)
{
PME *existing;

existing = (PME *)((long)pageMapBase + (long)entryOffset);

if(pmeIsBlank(existing)) break;
if((existing->word1 & 0xffff0000UL) > (newEnt.word1 & 0xffff0000UL)) break;

entryOffset += sizeof(PME);
}


/* Shift the entries above our new entry by 8 bytes. */

for(i=0; i<8; i++)
{
if(*((char *)pageMapBase + ci->PageMapInitSize + i) != 0)
{
printf("PageMap overflow!\n", entryOffset/sizeof(PME));
return 100;
}
}

for(i = ci->PageMapInitSize - 1; i >= entryOffset; i--)
{
*((char *)pageMapBase + i + 8) = *((char *)pageMapBase + i);
}


/* Bump the declared PageMap size by 8 bytes. (ignored by kernel?) */

ci->PageMapInitSize += sizeof(PME);


/* The SegMap (four copies) contains an offset into the PageMap at every second word -- update these. */

for(i=segmentOf(LA)+1; i<16; i++)
{
ci->SegMap32SupInit[i * 2] += sizeof(PME);
ci->SegMap32UsrInit[i * 2] += sizeof(PME);
ci->SegMap32CPUInit[i * 2] += sizeof(PME);
ci->SegMap32OvlInit[i * 2] += sizeof(PME);
}


/* Adjust the pointers to the special PageMap entries. */

if(ci->PageMapIRPOffset >= entryOffset) ci->PageMapIRPOffset += sizeof(PME);
if(ci->PageMapKDPOffset >= entryOffset) ci->PageMapKDPOffset += sizeof(PME);
if(ci->PageMapEDPOffset >= entryOffset) ci->PageMapEDPOffset += sizeof(PME);


/* Set the correct pointer if it is a special one */

if(flags == kFlagIRP)
ci->PageMapIRPOffset = entryOffset;
else if(flags == kFlagKDP)
ci->PageMapKDPOffset = entryOffset;
else if(flags == kFlagEDP)
ci->PageMapEDPOffset = entryOffset;


/* Save our new entry in the gap we have made in the PageMap. */

memcpy((char *)pageMapBase + entryOffset, &newEnt, sizeof(PME));

return 0;
}


/*
Create a blank PageMap inside a pre-existing ConfigInfo structure, with only
those "dummy" entries that the Trampoline would create before calling
AddPageMapEntry.

(Intended to replicate the behaviour of the Trampoline, based on its debug output)
*/

void ErasePageMapTable(NKConfigurationInfo *ci)
{
PME *pageMapBase;
long *pmp;
int seg;


printf("ErasePageMapTable at offset 0x%x\n\n", ci->PageMapInitOffset);

/* Zero out the existing PageMap */

pageMapBase = getPageMapPtr(ci);
memset(pageMapBase, 0, ci->PageMapInitSize);


/* Count up with pmp */

pmp = (long *)pageMapBase;

ci->PageMapInitOffset = (long)pageMapBase - (long)ci;

for(seg=0; seg<16; seg++)
{
ci->SegMap32SupInit[seg * 2] =
ci->SegMap32UsrInit[seg * 2] =
ci->SegMap32CPUInit[seg * 2] =
ci->SegMap32OvlInit[seg * 2] = (long)pmp - (long)pageMapBase;

if(seg <= 5)
{
*pmp++ = 0x0000ffffUL; *pmp++ = 0x00000a00UL;
*pmp++ = 0x0000ffffUL; *pmp++ = 0x00000a00UL;
}
else if(seg >= 6 && seg <= 7)
{
*pmp++ = 0x0000ffffUL; *pmp++ = 0x00000a01UL;
*pmp++ = 0x0000ffffUL; *pmp++ = 0x00000a01UL;
*pmp++ = 0x0000ffffUL; *pmp++ = 0x00000a00UL;
}
else if(seg >= 8)
{
*pmp++ = 0x0000ffffUL; *pmp++ = 0x00000a01UL + (seg << 28);
*pmp++ = 0x0000ffffUL; *pmp++ = 0x00000a00UL;
}
}

ci->PageMapInitSize = (long)pmp - (long)pageMapBase;


/* Zero out the special pointers */

ci->PageMapIRPOffset = 0;
ci->PageMapKDPOffset = 0;
ci->PageMapEDPOffset = 0;
}


int PatchMacOSAddressSpace(long patches, unsigned long makeMemAvail, NKConfigurationInfo *ci, NKConfigurationInfo *newci, NKHWInfo *hi, NKHWInfo *newhi)
{
int seg;
PME *pageMapBase;
PME *entryp;

unsigned long LA, newLA, count, PA, pageAttr, flags;

int ret;
int offset;

unsigned long i;


pageMapBase = getPageMapPtr(ci);

ErasePageMapTable(newci);

printf("PatchMacOSAddressSpace: makeMemAvail %08x\n", makeMemAvail);

for(seg=0; seg<16; seg++)
{
for(offset = ci->SegMap32SupInit[seg*2];; offset += sizeof (PME)) /* Iterate over PMEs. */
{
entryp = (PME *)((long)pageMapBase + offset);


/* Misc error conditions */

if(seg < 15 && offset >= ci->SegMap32SupInit[(seg+1) * 2])
{
printf("Overran this segment of the PageMap!\n\n");
return 101;
}
if(offset >= ci->PageMapInitSize)
{
printf("Overran the whole PageMap!\n\n");
return 102;
}

if(pmeIsBlank(entryp)) break;


/* Extract info from PME */

LA = newLA = (seg << 28) | (entryp->word1 >> 4 & 0x0ffff000UL);
count = (entryp->word1 & 0x0000ffffUL) + 1;
PA = entryp->word2 & 0xfffff000UL;
pageAttr = entryp->word2 & 0x00000fffUL;

if(offset == ci->PageMapIRPOffset)
flags = kFlagIRP;
else if(offset == ci->PageMapKDPOffset)
flags = kFlagKDP;
else if(offset == ci->PageMapEDPOffset)
flags = kFlagEDP;
else
flags = kFlagNone;

printf("    nontrivial PME   LA = 0x%08X, count = 0x%05X, PA = 0x%08X, pageAttr = 0x%04X, flags = 0x%02X.\n    ", LA, count, PA, pageAttr, flags);


/* Delete those two annoying PMEs that signal to end the MacOS area */
/* (LA 50000000 count fffe PA 00000000 pageAttr a00) */

if((LA << 4) == 0 && (pageAttr & 0xf00) == 0xa00)
{
printf("MacOS area delimiter: skipping\n\n");
continue;
}


/* Move the InfoRecord page. */

if((patches & kPatchInfoRecord) && LA == LA_InfoRecord_Orig)
{
printf("**IRP**\n    ");

newLA += kDelta;

/* IRP logical address in ConfigInfo */
newci->LA_InfoRecord = newLA;

/* IRP logical address is hardcoded into emulator by lis/ori, so change that. */
if(patches & kCanPatchEmulator)
{
unsigned short hi = LA >> 16;
unsigned short lo = LA & 0xffff;
unsigned short *em = (unsigned short *)0x00f60000UL;

for(i=0; i<0x10000; i+=2)
{
if(em[i+1] == hi && em[i+3] == lo)
{
printf("Patching Emulator lis/ori @ %05x\n    ", i*2);
em[i+1] = newLA >> 16;
em[i+3] = newLA & 0xffff;
break;
}
}
}
}


/* Move the area containing the Universal structures and the Device Tree */

if((patches & kPatchUniversalArea) && LA == LA_UniversalArea_Orig)
{
printf("**Universal/DeviceTree area**\n    ");

newLA += kDelta;

/* Logical address pointers in HardwareInfo */
newhi->DeviceTreeBase = hi->DeviceTreeBase - LA + newLA;
newhi->UniversalInfoTableBase = hi->UniversalInfoTableBase - LA + newLA;
}


if(newLA < makeMemAvail)
{
printf("makeMemAvail is too large with this PME in the way.\n\n");
return 103;
}


/* If this PME was unchanged then newLA will just equal the original LA. */

ret = AddPageMapEntry(newci, newLA, count, PA, pageAttr, flags);
if(ret) return ret;

printf("\n");
}
}


/* Done all meaningful PMEs... put the "MacOS area delimiter" back in */

printf("    Reinserting the MacOS area delimiters:\n");
for(i=0; i<2; i++)
{
printf("    ");
ret = AddPageMapEntry(newci, makeMemAvail & 0xf0000000UL, makeMemAvail >> 12 & 0xffffUL, 0UL, 0xa00, 0);
if(ret) return ret;
}

printf("\n");

return 0;
}


void DebugDumpPageMap(NKConfigurationInfo *ci)
{
PME *pageMapBase, *pme;
int i, j;

pageMapBase = getPageMapPtr(ci);

printf("DebugDumpPageMap\n");

for(i=0; i<ci->PageMapInitSize; i+=sizeof(PME))
{
for(j=0; j<16; j++)
{
if(ci->SegMap32SupInit[j*2] == i)
{
printf("%X ", j);
break;
}
}
if(j == 16) printf("  ");

pme = (PME *)((long)pageMapBase + i);

printf("%03x: %08x %08x", i, pme->word1, pme->word2);

if(i == ci->PageMapIRPOffset)
{
printf(" IRP");
}
else if(i == ci->PageMapEDPOffset)
{
printf(" EDP");
}
else if(i == ci->PageMapKDPOffset)
{
printf(" KDP");
}

printf("\n");
}
printf("\n");
}


/* Main function for Wedge patch */

void wedge(NKConfigurationInfo *ci, NKProcessorInfo *pi, NKSystemInfo *si, NKDiagnosticInfo *di, OSType rtasFour, unsigned long rtasProc, NKHWInfo *hi)
{
char ci_tmp[kConfigInfoSize], hi_tmp[kHardwareInfoSize];
int ret;

printf("Hello from the Wedge.\n");
printf("      ConfigInfo (r3) @ %08x\n", ci);
printf("   ProcessorInfo (r4) @ %08x\n", pi);
printf("      SystemInfo (r5) @ %08x\n", si);
printf("  DiagnosticInfo (r6) @ %08x\n", di);
printf("            RTAS (r7) = %08x\n", rtasFour);
printf("        RTASProc (r8) @ %08x\n", rtasProc);
printf("    HardwareInfo (r9) @ %08x\n", hi);
printf("\n");


/* PatchMacOSAddressSpace */

DebugDumpPageMap((NKConfigurationInfo *)ci);

printf("Rearranging the MacOS address space...\n\n");
memcpy(ci_tmp, ci, sizeof ci_tmp);
memcpy(hi_tmp, hi, sizeof hi_tmp);

ret = PatchMacOSAddressSpace(kPatchInfoRecord | kPatchUniversalArea | kCanPatchEmulator,
                             0x68000000UL,
                             (NKConfigurationInfo *)ci, (NKConfigurationInfo *)ci_tmp,
                             (NKHWInfo *)hi, (NKHWInfo *)hi_tmp);

if(!ret)
{
printf("Copying modified ConfigInfo and HWInfo over the originals.\n\n");
memcpy(ci, ci_tmp, sizeof ci_tmp);
memcpy(hi, hi_tmp, sizeof hi_tmp);

DebugDumpPageMap((NKConfigurationInfo *)ci);
}
else
{
printf("PatchMacOSAddressSpace failed with error %d.\n", ret);
}


/* Insert more clever, interesting patches here. */


/* Uses r3-r9 -- compiler doesn't really need a prototype for this. */
printf("\nHanding over to the NanoKernel.\n");
NanoKernelJump(ci, pi, si, di, rtasFour, rtasProc, hi);
}


/* Main function for MPW Tool */

void main(void)
{
char ci_tmp[kConfigInfoSize], hi_tmp[kHardwareInfoSize];
char *ci, *hi;
long nk_struct_ver, nk_struct_len;
int ret;

printf("Hello from the (dry-run) Wedge.\n");

ci = (char *)0x68fef000UL;
printf("      ConfigInfo @ %08x\n", ci);

NKLocateInfoRecord(6, &hi, &nk_struct_ver, &nk_struct_len);
printf("    HardwareInfo @ %08x\n", hi);

printf("\n");


DebugDumpPageMap((NKConfigurationInfo *)ci);

printf("Copying the system ConfigInfo and HardwareInfo structs.\n\n");
memcpy(ci_tmp, ci, sizeof ci_tmp);
memcpy(hi_tmp, hi, sizeof hi_tmp);

ret = PatchMacOSAddressSpace(kPatchInfoRecord | kPatchUniversalArea,
                             0x68000000UL,
                             (NKConfigurationInfo *)ci, (NKConfigurationInfo *)ci_tmp,
                             (NKHWInfo *)hi, (NKHWInfo *)hi_tmp);

if(!ret)
{
printf("PatchMacOSAddressSpace succeeded (but was forbidden from patching the Emulator).\n\n");

DebugDumpPageMap((NKConfigurationInfo *)ci_tmp);
}
else
{
printf("PatchMacOSAddressSpace failed with error %d.\n", ret);
}
}

And here is some sample output.

Code: [Select]
Hello from the Wedge.
      ConfigInfo (r3) @ 00003000
   ProcessorInfo (r4) @ 0fffff40
      SystemInfo (r5) @ 0ffffe00
  DiagnosticInfo (r6) @ 00000000
            RTAS (r7) = 52544153
        RTASProc (r8) @ 00000000
    HardwareInfo (r9) @ 0ffffd40

DebugDumpPageMap
0 000: 0000ffff 00000a00
  008: 0000ffff 00000a00
1 010: 0000ffff 00000a00
  018: 0000ffff 00000a00
2 020: 0000ffff 00000a00
  028: 0000ffff 00000a00
3 030: 0000ffff 00000a00
  038: 0000ffff 00000a00
4 040: 0000ffff 00000a00
  048: 0000ffff 00000a00
5 050: 0000fffd 00000a00
  058: 0000fffd 00000a00
  060: fffe0000 00000012 IRP
  068: 0000ffff 00000a00
  070: 0000ffff 00000a00
6 078: 4000017f 0ab00012
  080: 8fef0000 00003013
  088: 8ffe0000 00000011 KDP
  090: 8fff0000 00000012 EDP
  098: 0000ffff 00000a01
  0a0: 0000ffff 00000a01
  0a8: 0000ffff 00000a00
7 0b0: 0000ffff 00000a01
  0b8: 0000ffff 00000a01
  0c0: 0000ffff 00000a00
8 0c8: 0000ffff 8000003a
  0d0: 0000ffff 80000a01
  0d8: 0000ffff 00000a00
9 0e0: 0000000f 9000003a
  0e8: 0020001f 9002003a
  0f0: 80007fff 98000032
  0f8: 0000ffff 90000a01
  100: 0000ffff 00000a00
A 108: 0000ffff a0000a01
  110: 0000ffff 00000a00
B 118: 0000ffff b0000a01
  120: 0000ffff 00000a00
C 128: 0000ffff c0000a01
  130: 0000ffff 00000a00
D 138: 0000ffff d0000a01
  140: 0000ffff 00000a00
E 148: 0000ffff e0000a01
  150: 0000ffff 00000a00
F 158: 0000ffff f000003a
  160: 0000ffff f0000a01
  168: 0000ffff 00000a00

Rearranging the MacOS address space...

ErasePageMapTable at offset 0x3ac

PatchMacOSAddressSpace: makeMemAvail 68000000
    nontrivial PME   LA = 0x50000000, count = 0x0FFFE, PA = 0x00000000, pageAttr = 0x0A00, flags = 0x00.
    MacOS area delimiter: skipping

    nontrivial PME   LA = 0x50000000, count = 0x0FFFE, PA = 0x00000000, pageAttr = 0x0A00, flags = 0x00.
    MacOS area delimiter: skipping

    nontrivial PME   LA = 0x5FFFE000, count = 0x00001, PA = 0x00000000, pageAttr = 0x0012, flags = 0x01.
    **IRP**
    Patching Emulator lis/ori @ 181e8
    AddPageMapEntry: LA = 0xDFFFE000, count = 0x00001, PA = 0x00000000, pageAttr = 0x0012, flags = 0x01.

    nontrivial PME   LA = 0x64000000, count = 0x00180, PA = 0x0AB00000, pageAttr = 0x0012, flags = 0x00.
    **Universal/DeviceTree area**
    AddPageMapEntry: LA = 0xE4000000, count = 0x00180, PA = 0x0AB00000, pageAttr = 0x0012, flags = 0x00.

    nontrivial PME   LA = 0x68FEF000, count = 0x00001, PA = 0x00003000, pageAttr = 0x0013, flags = 0x00.
    AddPageMapEntry: LA = 0x68FEF000, count = 0x00001, PA = 0x00003000, pageAttr = 0x0013, flags = 0x00.

    nontrivial PME   LA = 0x68FFE000, count = 0x00001, PA = 0x00000000, pageAttr = 0x0011, flags = 0x02.
    AddPageMapEntry: LA = 0x68FFE000, count = 0x00001, PA = 0x00000000, pageAttr = 0x0011, flags = 0x02.

    nontrivial PME   LA = 0x68FFF000, count = 0x00001, PA = 0x00000000, pageAttr = 0x0012, flags = 0x03.
    AddPageMapEntry: LA = 0x68FFF000, count = 0x00001, PA = 0x00000000, pageAttr = 0x0012, flags = 0x03.

    nontrivial PME   LA = 0x80000000, count = 0x10000, PA = 0x80000000, pageAttr = 0x003A, flags = 0x00.
    AddPageMapEntry: LA = 0x80000000, count = 0x10000, PA = 0x80000000, pageAttr = 0x003A, flags = 0x00.

    nontrivial PME   LA = 0x90000000, count = 0x00010, PA = 0x90000000, pageAttr = 0x003A, flags = 0x00.
    AddPageMapEntry: LA = 0x90000000, count = 0x00010, PA = 0x90000000, pageAttr = 0x003A, flags = 0x00.

    nontrivial PME   LA = 0x90020000, count = 0x00020, PA = 0x90020000, pageAttr = 0x003A, flags = 0x00.
    AddPageMapEntry: LA = 0x90020000, count = 0x00020, PA = 0x90020000, pageAttr = 0x003A, flags = 0x00.

    nontrivial PME   LA = 0x98000000, count = 0x08000, PA = 0x98000000, pageAttr = 0x0032, flags = 0x00.
    AddPageMapEntry: LA = 0x98000000, count = 0x08000, PA = 0x98000000, pageAttr = 0x0032, flags = 0x00.

    nontrivial PME   LA = 0xF0000000, count = 0x10000, PA = 0xF0000000, pageAttr = 0x003A, flags = 0x00.
    AddPageMapEntry: LA = 0xF0000000, count = 0x10000, PA = 0xF0000000, pageAttr = 0x003A, flags = 0x00.

    Reinserting the MacOS area delimiters:
    AddPageMapEntry: LA = 0x60000000, count = 0x08000, PA = 0x00000000, pageAttr = 0x0A00, flags = 0x00.
    AddPageMapEntry: LA = 0x60000000, count = 0x08000, PA = 0x00000000, pageAttr = 0x0A00, flags = 0x00.

Copying modified ConfigInfo and HWInfo over the originals.

DebugDumpPageMap
0 000: 0000ffff 00000a00
  008: 0000ffff 00000a00
1 010: 0000ffff 00000a00
  018: 0000ffff 00000a00
2 020: 0000ffff 00000a00
  028: 0000ffff 00000a00
3 030: 0000ffff 00000a00
  038: 0000ffff 00000a00
4 040: 0000ffff 00000a00
  048: 0000ffff 00000a00
5 050: 0000ffff 00000a00
  058: 0000ffff 00000a00
6 060: 00007fff 00000a00
  068: 00007fff 00000a00
  070: 8fef0000 00003013
  078: 8ffe0000 00000011 KDP
  080: 8fff0000 00000012 EDP
  088: 0000ffff 00000a01
  090: 0000ffff 00000a01
  098: 0000ffff 00000a00
7 0a0: 0000ffff 00000a01
  0a8: 0000ffff 00000a01
  0b0: 0000ffff 00000a00
8 0b8: 0000ffff 8000003a
  0c0: 0000ffff 80000a01
  0c8: 0000ffff 00000a00
9 0d0: 0000000f 9000003a
  0d8: 0020001f 9002003a
  0e0: 80007fff 98000032
  0e8: 0000ffff 90000a01
  0f0: 0000ffff 00000a00
A 0f8: 0000ffff a0000a01
  100: 0000ffff 00000a00
B 108: 0000ffff b0000a01
  110: 0000ffff 00000a00
C 118: 0000ffff c0000a01
  120: 0000ffff 00000a00
D 128: fffe0000 00000012 IRP
  130: 0000ffff d0000a01
  138: 0000ffff 00000a00
E 140: 4000017f 0ab00012
  148: 0000ffff e0000a01
  150: 0000ffff 00000a00
F 158: 0000ffff f000003a
  160: 0000ffff f0000a01
  168: 0000ffff 00000a00


Handing over to the NanoKernel.
« Last Edit: June 04, 2017, 02:11:59 AM by ELN »

Online Knezzen

  • Administrator
  • Platinum Member
  • *****
  • Posts: 979
  • Pro Tools Addict!
    • Macintosh Garden
Re: Mac OS 9.2.2 Memory Limit of 1.5 GB... Some Answers
« Reply #106 on: June 04, 2017, 02:37:19 AM »
Out of curiosity, technically speaking, what stops you to extend the usable RAM space beyond the 128mb you already extended onto?
Pro Tools addict and admin at Macintosh Garden, Mac OS 9 Lives! and System 7 Today

Offline ELN

  • Gold Member
  • *****
  • Posts: 295
  • new to the forums
Re: Mac OS 9.2.2 Memory Limit of 1.5 GB... Some Answers
« Reply #107 on: June 04, 2017, 03:03:28 AM »
Out of curiosity, technically speaking, what stops you to extend the usable RAM space beyond the 128mb you already extended onto?

Very good question.

Note the "nontrivial PME" lines in the output above. These list the areas that the Trampoline instructs the NanoKernel to locate in logical memory, in addition to the MacOS logical area starting at address zero. The Wedge is moving two of them to a location much higher in memory.

The first one is the InfoRecord Page (IRP). With that at 5fffe000, the main area can only expand to a whisker under 1.5GB. By moving the IRP and another small area at 64000000, we can expand up to the next obstacle at 68000000 (which is actually a mapping of the upper megabyte of the ROM, and is not listed in the PageMap above). This gives us 1.625GB. With luck, we will get the full 2GB soon.

The data and code in these hardcoded areas mostly concern the interface between the low-level PowerPC system and the high-level 68k system. There is rarely a need for application code to access them directly, and there are (usually) ways of querying their addresses at runtime, but some software still hardcodes them. Moving them therefore presents a small problem for application compatibility. For example, moving the IRP seems to crash PowerMacInfo and Apple System Profiler (and the 68k DR Emulator, but that's fixed). A similar problem arose when the first PCI Power Macs moved the ROM image from 40000000 (1GB) to FFC00000 (just below the 4GB mark). I suspect that this is the cause of the instability reported on Macs with more than 1GB of RAM.

Online Knezzen

  • Administrator
  • Platinum Member
  • *****
  • Posts: 979
  • Pro Tools Addict!
    • Macintosh Garden
Re: Mac OS 9.2.2 Memory Limit of 1.5 GB... Some Answers
« Reply #108 on: June 04, 2017, 03:11:13 AM »
Great explanation! Hoping for the best so I can make use of all the memory in my MDD. Not that I ever used the full 1.5GB usable right now, but anyway ;)
Pro Tools addict and admin at Macintosh Garden, Mac OS 9 Lives! and System 7 Today

Offline Daniel

  • Gold Member
  • *****
  • Posts: 300
  • Programmer, Hacker, Thinker
Re: Mac OS 9.2.2 Memory Limit of 1.5 GB... Some Answers
« Reply #109 on: June 04, 2017, 06:14:30 AM »
I just tested it out. It works! I don't have any 2 GB macs, but it works just fine on at least one system. Here are the Wedge and NK logs if they are useful.
« Last Edit: June 04, 2017, 06:33:30 AM by Daniel »

Offline MacTron

  • Global Moderator
  • Platinum Member
  • *****
  • Posts: 2116
  • keep it simple
Re: Mac OS 9.2.2 Memory Limit of 1.5 GB... Some Answers
« Reply #110 on: June 04, 2017, 09:04:16 AM »
It Works!  ;D

AWESOME ! ;D
« Last Edit: June 04, 2017, 09:17:30 AM by MacTron »
Please don't PM about things that are not private.

Offline MacTron

  • Global Moderator
  • Platinum Member
  • *****
  • Posts: 2116
  • keep it simple
Re: Mac OS 9.2.2 Memory Limit of 1.5 GB... Some Answers
« Reply #111 on: June 04, 2017, 09:14:37 AM »
Now I'll post the logs:
NKLogReader:
Code: [Select]
NKNanoKernelInfo: logi addr 68ffedc0, struct ver 0228, 352 bytes.
NKNanoKernelInfo is within the Kernel Data Page. KDP phys addr 7f7fe000.

              NanoKernel Log
              --------------
Hello from the builtin multitasking NanoKernel. Version: 0228
Kernel code base at 0x00f40000  Physical RAM size 0x7fffb000 bytes
Created motherboard coherence group. ID 00010001
NKCreateAddressSpaceSub - group at 0x7f7fc1c0 00010001
Created system address space. ID 00030001
 BATs ffc0007f 00c00043   6800001f 00f00043   00000000 00000000   00000000 00000000
Init ready queue 00000000 00000000 0000a8eb
Init ready queue 00000001 00000000 00054758
Init ready queue 00000002 00000000 002a3ac0
Init ready queue 00000003 00000000 0151d600
System context at 0x7f7ff100  Vector save area at 0x7f7fb8e0  SDR1 0x7f80003f
Adding blue task 00050001 to the ready queue
Starting timeslicing
Adding idle task 00070001 to the ready queue
NKCreateAddressSpaceSub - group at 0x7f7fc1c0 00010001
Priming the system free list with 272 pages.
VMMaxVirtualPages: 00068000 VMLogicalPages: 00000000
Interrupt handler kind: 06
Physical RAM greater than the initial logical area.
 Moving 95622 pages into the system free page list.
Converting PMDTs to areas
 CreateArea [ 00000000 67ffffff ] ID 000a0001 placed ... created
 CreateArea [ 68fef000 68feffff ] ID 000b0001 placed ... created
 CreateArea [ 68ff5000 68ffefff ] ID 000c0001 placed ... created
 CreateArea [ 68fff000 68ffffff ] ID 000d0001 placed ... created
 CreateArea [ 80000000 8005ffff ] ID 000e0001 placed ... created
 CreateArea [ 80060000 80060fff ] ID 000f0001 placed ... created
 CreateArea [ 80061000 8007ffff ] ID 00100001 placed ... created
 CreateArea [ 80080000 80080fff ] ID 00110001 placed ... created
 CreateArea [ 80081000 80081fff ] ID 00120001 placed ... created
 CreateArea [ 90000000 9000ffff ] ID 00130001 placed ... created
 CreateArea [ 90020000 9003ffff ] ID 00140001 placed ... created
 CreateArea [ 98000000 9fffffff ] ID 00150001 placed ... created
 CreateArea [ dfffe000 dfffefff ] ID 00160001 placed ... created
 CreateArea [ e4000000 e417ffff ] ID 00170001 placed ... created
 CreateArea [ f0000000 ffffffff ] ID 00180001 placed ... created
 CreateArea [ 68f16000 68f16fff ] ID 00190001 placed ... created
 CreateArea [ deadb000 deadbfff ] ID 001a0001 placed ... created
Reset system - Into the 68K fire: 0000d032 6806e8c0
ResetSystem trap entered
Kernel code base at 0x00f40000  Physical RAM size 0x7fffb000 bytes
Created motherboard coherence group. ID 00010001
NKCreateAddressSpaceSub - group at 0x7f7fc1c0 00010001
Created system address space. ID 00030001
 BATs ffc0007f 00c00043   6800001f 00f00043   00000000 00000000   00000000 00000000
Init ready queue 00000000 00000000 0000a8eb
Init ready queue 00000001 00000000 00054758
Init ready queue 00000002 00000000 002a3ac0
Init ready queue 00000003 00000000 0151d600
System context at 0x7f7ff100  Vector save area at 0x7f7fb8e0  SDR1 0x7f80003f
Adding blue task 00050001 to the ready queue
Starting timeslicing
Adding idle task 00070001 to the ready queue
NKCreateAddressSpaceSub - group at 0x7f7fc1c0 00010001
Priming the system free list with 272 pages.
VMMaxVirtualPages: 00068000 VMLogicalPages: 00068000
Interrupt handler kind: 06
Physical RAM greater than the initial logical area.
 Moving 95622 pages into the system free page list.
Converting PMDTs to areas
 CreateArea [ 00000000 67ffffff ] ID 000a0001 placed ... created
 CreateArea [ 68fef000 68feffff ] ID 000b0001 placed ... created
 CreateArea [ 68ff5000 68ffefff ] ID 000c0001 placed ... created
 CreateArea [ 68fff000 68ffffff ] ID 000d0001 placed ... created
 CreateArea [ 80000000 8005ffff ] ID 000e0001 placed ... created
 CreateArea [ 80060000 80060fff ] ID 000f0001 placed ... created
 CreateArea [ 80061000 8007ffff ] ID 00100001 placed ... created
 CreateArea [ 80080000 80080fff ] ID 00110001 placed ... created
 CreateArea [ 80081000 80081fff ] ID 00120001 placed ... created
 CreateArea [ 90000000 9000ffff ] ID 00130001 placed ... created
 CreateArea [ 90020000 9003ffff ] ID 00140001 placed ... created
 CreateArea [ 98000000 9fffffff ] ID 00150001 placed ... created
 CreateArea [ dfffe000 dfffefff ] ID 00160001 placed ... created
 CreateArea [ e4000000 e417ffff ] ID 00170001 placed ... created
 CreateArea [ f0000000 ffffffff ] ID 00180001 placed ... created
 CreateArea [ 68f16000 68f16fff ] ID 00190001 placed ... created
 CreateArea [ deadb000 deadbfff ] ID 001a0001 placed ... created
Reset system - Into the 68K fire: 0002d032 6806c9e8
 VMAllocateMemory - creating area at 0x69000000 00080000
 CreateArea [ 69000000 6907ffff ] ID 001b0001 placed ... created
Extend free pool: phys 0x7ff2d000  virt 0x00000000  count: 1
CPU plugin registered
SIGP kResetProcessor
Creating idle task
SIGP kSynchClock
SIGP kStartProcessor
Processor scheduled
Sch: Symmetric Multiprocessing
Sch: On CPU 0001  ID-00000000  SDR1: 7f80003f  CpuDescriptor: 7ff2d750  KDP: 7f7fe000
Sch: Starting SMP idle task
EWA 7ff2da90 ContextPtr 7ff2d430 Flags 00480000 Enables 00000000
Adding idle task 0x7ff2d330 to the ready queue
Sch: Going to 00009002 00f54f04
Extend free pool: phys 0x7ff2c000  virt 0x00000000  count: 2
Extend free pool: phys 0x7ff2b000  virt 0x00000000  count: 3
Extend free pool: phys 0x7ff2a000  virt 0x00000000  count: 4
Extend free pool: phys 0x7ff29000  virt 0x00000000  count: 5
Extend free pool: phys 0x7ff28000  virt 0x00000000  count: 6
Extend free pool: phys 0x7ff27000  virt 0x00000000  count: 7
Extend free pool: phys 0x7ff26000  virt 0x00000000  count: 8
Extend free pool: phys 0x7ff25000  virt 0x00000000  count: 9
Extend free pool: phys 0x7ff24000  virt 0x00000000  count: 10
Extend free pool: phys 0x7ff23000  virt 0x00000000  count: 11

WedgeDryRun:
Code: [Select]
Hello from the (dry-run) Wedge.
      ConfigInfo @ 68fef000
    HardwareInfo @ dfffef00

DebugDumpPageMap
0 000: 0000ffff 00000a00
  008: 0000ffff 00000a00
1 010: 0000ffff 00000a00
  018: 0000ffff 00000a00
2 020: 0000ffff 00000a00
  028: 0000ffff 00000a00
3 030: 0000ffff 00000a00
  038: 0000ffff 00000a00
4 040: 0000ffff 00000a00
  048: 0000ffff 00000a00
5 050: 0000ffff 00000a00
  058: 0000ffff 00000a00
6 060: 00007fff 00000a00
  068: 00007fff 00000a00
  070: 8fef0000 00003013
  078: 8ffe0000 00000011 KDP
  080: 8fff0000 00000012 EDP
  088: 0000ffff 00000a01
  090: 0000ffff 00000a01
  098: 0000ffff 00000a00
7 0a0: 0000ffff 00000a01
  0a8: 0000ffff 00000a01
  0b0: 0000ffff 00000a00
8 0b8: 0000005f 8000003a
  0c0: 00600000 8006003a
  0c8: 0061001e 8006103a
  0d0: 00800000 8008003a
  0d8: 00810000 8008103a
  0e0: 0000ffff 80000a01
  0e8: 0000ffff 00000a00
9 0f0: 0000000f 9000003a
  0f8: 0020001f 9002003a
  100: 80007fff 98000032
  108: 0000ffff 90000a01
  110: 0000ffff 00000a00
A 118: 0000ffff a0000a01
  120: 0000ffff 00000a00
B 128: 0000ffff b0000a01
  130: 0000ffff 00000a00
C 138: 0000ffff c0000a01
  140: 0000ffff 00000a00
D 148: fffe0000 00000012 IRP
  150: 0000ffff d0000a01
  158: 0000ffff 00000a00
E 160: 4000017f 55600012
  168: 0000ffff e0000a01
  170: 0000ffff 00000a00
F 178: 0000ffff f000003a
  180: 0000ffff f0000a01
  188: 0000ffff 00000a00

Copying the system ConfigInfo and HardwareInfo structs.

ErasePageMapTable at offset 0x3ac

PatchMacOSAddressSpace: makeMemAvail 68000000
    nontrivial PME   LA = 0x60000000, count = 0x08000, PA = 0x00000000, pageAttr = 0x0A00, flags = 0x00.
    MacOS area delimiter: skipping

    nontrivial PME   LA = 0x60000000, count = 0x08000, PA = 0x00000000, pageAttr = 0x0A00, flags = 0x00.
    MacOS area delimiter: skipping

    nontrivial PME   LA = 0x68FEF000, count = 0x00001, PA = 0x00003000, pageAttr = 0x0013, flags = 0x00.
    AddPageMapEntry: LA = 0x68FEF000, count = 0x00001, PA = 0x00003000, pageAttr = 0x0013, flags = 0x00.

    nontrivial PME   LA = 0x68FFE000, count = 0x00001, PA = 0x00000000, pageAttr = 0x0011, flags = 0x02.
    AddPageMapEntry: LA = 0x68FFE000, count = 0x00001, PA = 0x00000000, pageAttr = 0x0011, flags = 0x02.

    nontrivial PME   LA = 0x68FFF000, count = 0x00001, PA = 0x00000000, pageAttr = 0x0012, flags = 0x03.
    AddPageMapEntry: LA = 0x68FFF000, count = 0x00001, PA = 0x00000000, pageAttr = 0x0012, flags = 0x03.

    nontrivial PME   LA = 0x80000000, count = 0x00060, PA = 0x80000000, pageAttr = 0x003A, flags = 0x00.
    AddPageMapEntry: LA = 0x80000000, count = 0x00060, PA = 0x80000000, pageAttr = 0x003A, flags = 0x00.

    nontrivial PME   LA = 0x80060000, count = 0x00001, PA = 0x80060000, pageAttr = 0x003A, flags = 0x00.
    AddPageMapEntry: LA = 0x80060000, count = 0x00001, PA = 0x80060000, pageAttr = 0x003A, flags = 0x00.

    nontrivial PME   LA = 0x80061000, count = 0x0001F, PA = 0x80061000, pageAttr = 0x003A, flags = 0x00.
    AddPageMapEntry: LA = 0x80061000, count = 0x0001F, PA = 0x80061000, pageAttr = 0x003A, flags = 0x00.

    nontrivial PME   LA = 0x80080000, count = 0x00001, PA = 0x80080000, pageAttr = 0x003A, flags = 0x00.
    AddPageMapEntry: LA = 0x80080000, count = 0x00001, PA = 0x80080000, pageAttr = 0x003A, flags = 0x00.

    nontrivial PME   LA = 0x80081000, count = 0x00001, PA = 0x80081000, pageAttr = 0x003A, flags = 0x00.
    AddPageMapEntry: LA = 0x80081000, count = 0x00001, PA = 0x80081000, pageAttr = 0x003A, flags = 0x00.

    nontrivial PME   LA = 0x90000000, count = 0x00010, PA = 0x90000000, pageAttr = 0x003A, flags = 0x00.
    AddPageMapEntry: LA = 0x90000000, count = 0x00010, PA = 0x90000000, pageAttr = 0x003A, flags = 0x00.

    nontrivial PME   LA = 0x90020000, count = 0x00020, PA = 0x90020000, pageAttr = 0x003A, flags = 0x00.
    AddPageMapEntry: LA = 0x90020000, count = 0x00020, PA = 0x90020000, pageAttr = 0x003A, flags = 0x00.

    nontrivial PME   LA = 0x98000000, count = 0x08000, PA = 0x98000000, pageAttr = 0x0032, flags = 0x00.
    AddPageMapEntry: LA = 0x98000000, count = 0x08000, PA = 0x98000000, pageAttr = 0x0032, flags = 0x00.

    nontrivial PME   LA = 0xDFFFE000, count = 0x00001, PA = 0x00000000, pageAttr = 0x0012, flags = 0x01.
    AddPageMapEntry: LA = 0xDFFFE000, count = 0x00001, PA = 0x00000000, pageAttr = 0x0012, flags = 0x01.

    nontrivial PME   LA = 0xE4000000, count = 0x00180, PA = 0x55600000, pageAttr = 0x0012, flags = 0x00.
    AddPageMapEntry: LA = 0xE4000000, count = 0x00180, PA = 0x55600000, pageAttr = 0x0012, flags = 0x00.

    nontrivial PME   LA = 0xF0000000, count = 0x10000, PA = 0xF0000000, pageAttr = 0x003A, flags = 0x00.
    AddPageMapEntry: LA = 0xF0000000, count = 0x10000, PA = 0xF0000000, pageAttr = 0x003A, flags = 0x00.

    Reinserting the MacOS area delimiters:
    AddPageMapEntry: LA = 0x60000000, count = 0x08000, PA = 0x00000000, pageAttr = 0x0A00, flags = 0x00.
    AddPageMapEntry: LA = 0x60000000, count = 0x08000, PA = 0x00000000, pageAttr = 0x0A00, flags = 0x00.

PatchMacOSAddressSpace succeeded (but was forbidden from patching the Emulator).

DebugDumpPageMap
0 000: 0000ffff 00000a00
  008: 0000ffff 00000a00
1 010: 0000ffff 00000a00
  018: 0000ffff 00000a00
2 020: 0000ffff 00000a00
  028: 0000ffff 00000a00
3 030: 0000ffff 00000a00
  038: 0000ffff 00000a00
4 040: 0000ffff 00000a00
  048: 0000ffff 00000a00
5 050: 0000ffff 00000a00
  058: 0000ffff 00000a00
6 060: 00007fff 00000a00
  068: 00007fff 00000a00
  070: 8fef0000 00003013
  078: 8ffe0000 00000011 KDP
  080: 8fff0000 00000012 EDP
  088: 0000ffff 00000a01
  090: 0000ffff 00000a01
  098: 0000ffff 00000a00
7 0a0: 0000ffff 00000a01
  0a8: 0000ffff 00000a01
  0b0: 0000ffff 00000a00
8 0b8: 0000005f 8000003a
  0c0: 00600000 8006003a
  0c8: 0061001e 8006103a
  0d0: 00800000 8008003a
  0d8: 00810000 8008103a
  0e0: 0000ffff 80000a01
  0e8: 0000ffff 00000a00
9 0f0: 0000000f 9000003a
  0f8: 0020001f 9002003a
  100: 80007fff 98000032
  108: 0000ffff 90000a01
  110: 0000ffff 00000a00
A 118: 0000ffff a0000a01
  120: 0000ffff 00000a00
B 128: 0000ffff b0000a01
  130: 0000ffff 00000a00
C 138: 0000ffff c0000a01
  140: 0000ffff 00000a00
D 148: fffe0000 00000012 IRP
  150: 0000ffff d0000a01
  158: 0000ffff 00000a00
E 160: 4000017f 55600012
  168: 0000ffff e0000a01
  170: 0000ffff 00000a00
F 178: 0000ffff f000003a
  180: 0000ffff f0000a01
  188: 0000ffff 00000a00

WedgeLogReader:
Code: [Select]
Hello from the Wedge.
      ConfigInfo (r3) @ 00003000
   ProcessorInfo (r4) @ 7fffff40
      SystemInfo (r5) @ 7ffffe00
  DiagnosticInfo (r6) @ 00000000
            RTAS (r7) = 52544153
        RTASProc (r8) @ 00000000
    HardwareInfo (r9) @ 7ffffd40

DebugDumpPageMap
0 000: 0000ffff 00000a00
  008: 0000ffff 00000a00
1 010: 0000ffff 00000a00
  018: 0000ffff 00000a00
2 020: 0000ffff 00000a00
  028: 0000ffff 00000a00
3 030: 0000ffff 00000a00
  038: 0000ffff 00000a00
4 040: 0000ffff 00000a00
  048: 0000ffff 00000a00
5 050: 0000fffd 00000a00
  058: 0000fffd 00000a00
  060: fffe0000 00000012 IRP
  068: 0000ffff 00000a00
  070: 0000ffff 00000a00
6 078: 4000017f 55600012
  080: 8fef0000 00003013
  088: 8ffe0000 00000011 KDP
  090: 8fff0000 00000012 EDP
  098: 0000ffff 00000a01
  0a0: 0000ffff 00000a01
  0a8: 0000ffff 00000a00
7 0b0: 0000ffff 00000a01
  0b8: 0000ffff 00000a01
  0c0: 0000ffff 00000a00
8 0c8: 0000005f 8000003a
  0d0: 00600000 8006003a
  0d8: 0061001e 8006103a
  0e0: 00800000 8008003a
  0e8: 00810000 8008103a
  0f0: 0000ffff 80000a01
  0f8: 0000ffff 00000a00
9 100: 0000000f 9000003a
  108: 0020001f 9002003a
  110: 80007fff 98000032
  118: 0000ffff 90000a01
  120: 0000ffff 00000a00
A 128: 0000ffff a0000a01
  130: 0000ffff 00000a00
B 138: 0000ffff b0000a01
  140: 0000ffff 00000a00
C 148: 0000ffff c0000a01
  150: 0000ffff 00000a00
D 158: 0000ffff d0000a01
  160: 0000ffff 00000a00
E 168: 0000ffff e0000a01
  170: 0000ffff 00000a00
F 178: 0000ffff f000003a
  180: 0000ffff f0000a01
  188: 0000ffff 00000a00

Rearranging the MacOS address space...

ErasePageMapTable at offset 0x3ac

PatchMacOSAddressSpace: makeMemAvail 68000000
    nontrivial PME   LA = 0x50000000, count = 0x0FFFE, PA = 0x00000000, pageAttr = 0x0A00, flags = 0x00.
    MacOS area delimiter: skipping

    nontrivial PME   LA = 0x50000000, count = 0x0FFFE, PA = 0x00000000, pageAttr = 0x0A00, flags = 0x00.
    MacOS area delimiter: skipping

    nontrivial PME   LA = 0x5FFFE000, count = 0x00001, PA = 0x00000000, pageAttr = 0x0012, flags = 0x01.
    **IRP**
    Patching Emulator lis/ori @ 181e8
    AddPageMapEntry: LA = 0xDFFFE000, count = 0x00001, PA = 0x00000000, pageAttr = 0x0012, flags = 0x01.

    nontrivial PME   LA = 0x64000000, count = 0x00180, PA = 0x55600000, pageAttr = 0x0012, flags = 0x00.
    **Universal/DeviceTree area**
    AddPageMapEntry: LA = 0xE4000000, count = 0x00180, PA = 0x55600000, pageAttr = 0x0012, flags = 0x00.

    nontrivial PME   LA = 0x68FEF000, count = 0x00001, PA = 0x00003000, pageAttr = 0x0013, flags = 0x00.
    AddPageMapEntry: LA = 0x68FEF000, count = 0x00001, PA = 0x00003000, pageAttr = 0x0013, flags = 0x00.

    nontrivial PME   LA = 0x68FFE000, count = 0x00001, PA = 0x00000000, pageAttr = 0x0011, flags = 0x02.
    AddPageMapEntry: LA = 0x68FFE000, count = 0x00001, PA = 0x00000000, pageAttr = 0x0011, flags = 0x02.

    nontrivial PME   LA = 0x68FFF000, count = 0x00001, PA = 0x00000000, pageAttr = 0x0012, flags = 0x03.
    AddPageMapEntry: LA = 0x68FFF000, count = 0x00001, PA = 0x00000000, pageAttr = 0x0012, flags = 0x03.

    nontrivial PME   LA = 0x80000000, count = 0x00060, PA = 0x80000000, pageAttr = 0x003A, flags = 0x00.
    AddPageMapEntry: LA = 0x80000000, count = 0x00060, PA = 0x80000000, pageAttr = 0x003A, flags = 0x00.

    nontrivial PME   LA = 0x80060000, count = 0x00001, PA = 0x80060000, pageAttr = 0x003A, flags = 0x00.
    AddPageMapEntry: LA = 0x80060000, count = 0x00001, PA = 0x80060000, pageAttr = 0x003A, flags = 0x00.

    nontrivial PME   LA = 0x80061000, count = 0x0001F, PA = 0x80061000, pageAttr = 0x003A, flags = 0x00.
    AddPageMapEntry: LA = 0x80061000, count = 0x0001F, PA = 0x80061000, pageAttr = 0x003A, flags = 0x00.

    nontrivial PME   LA = 0x80080000, count = 0x00001, PA = 0x80080000, pageAttr = 0x003A, flags = 0x00.
    AddPageMapEntry: LA = 0x80080000, count = 0x00001, PA = 0x80080000, pageAttr = 0x003A, flags = 0x00.

    nontrivial PME   LA = 0x80081000, count = 0x00001, PA = 0x80081000, pageAttr = 0x003A, flags = 0x00.
    AddPageMapEntry: LA = 0x80081000, count = 0x00001, PA = 0x80081000, pageAttr = 0x003A, flags = 0x00.

    nontrivial PME   LA = 0x90000000, count = 0x00010, PA = 0x90000000, pageAttr = 0x003A, flags = 0x00.
    AddPageMapEntry: LA = 0x90000000, count = 0x00010, PA = 0x90000000, pageAttr = 0x003A, flags = 0x00.

    nontrivial PME   LA = 0x90020000, count = 0x00020, PA = 0x90020000, pageAttr = 0x003A, flags = 0x00.
    AddPageMapEntry: LA = 0x90020000, count = 0x00020, PA = 0x90020000, pageAttr = 0x003A, flags = 0x00.

    nontrivial PME   LA = 0x98000000, count = 0x08000, PA = 0x98000000, pageAttr = 0x0032, flags = 0x00.
    AddPageMapEntry: LA = 0x98000000, count = 0x08000, PA = 0x98000000, pageAttr = 0x0032, flags = 0x00.

    nontrivial PME   LA = 0xF0000000, count = 0x10000, PA = 0xF0000000, pageAttr = 0x003A, flags = 0x00.
    AddPageMapEntry: LA = 0xF0000000, count = 0x10000, PA = 0xF0000000, pageAttr = 0x003A, flags = 0x00.

    Reinserting the MacOS area delimiters:
    AddPageMapEntry: LA = 0x60000000, count = 0x08000, PA = 0x00000000, pageAttr = 0x0A00, flags = 0x00.
    AddPageMapEntry: LA = 0x60000000, count = 0x08000, PA = 0x00000000, pageAttr = 0x0A00, flags = 0x00.

Copying modified ConfigInfo and HWInfo over the originals.

DebugDumpPageMap
0 000: 0000ffff 00000a00
  008: 0000ffff 00000a00
1 010: 0000ffff 00000a00
  018: 0000ffff 00000a00
2 020: 0000ffff 00000a00
  028: 0000ffff 00000a00
3 030: 0000ffff 00000a00
  038: 0000ffff 00000a00
4 040: 0000ffff 00000a00
  048: 0000ffff 00000a00
5 050: 0000ffff 00000a00
  058: 0000ffff 00000a00
6 060: 00007fff 00000a00
  068: 00007fff 00000a00
  070: 8fef0000 00003013
  078: 8ffe0000 00000011 KDP
  080: 8fff0000 00000012 EDP
  088: 0000ffff 00000a01
  090: 0000ffff 00000a01
  098: 0000ffff 00000a00
7 0a0: 0000ffff 00000a01
  0a8: 0000ffff 00000a01
  0b0: 0000ffff 00000a00
8 0b8: 0000005f 8000003a
  0c0: 00600000 8006003a
  0c8: 0061001e 8006103a
  0d0: 00800000 8008003a
  0d8: 00810000 8008103a
  0e0: 0000ffff 80000a01
  0e8: 0000ffff 00000a00
9 0f0: 0000000f 9000003a
  0f8: 0020001f 9002003a
  100: 80007fff 98000032
  108: 0000ffff 90000a01
  110: 0000ffff 00000a00
A 118: 0000ffff a0000a01
  120: 0000ffff 00000a00
B 128: 0000ffff b0000a01
  130: 0000ffff 00000a00
C 138: 0000ffff c0000a01
  140: 0000ffff 00000a00
D 148: fffe0000 00000012 IRP
  150: 0000ffff d0000a01
  158: 0000ffff 00000a00
E 160: 4000017f 55600012
  168: 0000ffff e0000a01
  170: 0000ffff 00000a00
F 178: 0000ffff f000003a
  180: 0000ffff f0000a01
  188: 0000ffff 00000a00


Handing over to the NanoKernel.
Please don't PM about things that are not private.

Offline MacOS Plus

  • Gold Member
  • *****
  • Posts: 418
  • The 9serve Lives!
Re: Mac OS 9.2.2 Memory Limit of 1.5 GB... Some Answers
« Reply #112 on: June 04, 2017, 10:14:59 AM »
  I guess we're calling this ROM v3?  Well, this time it's recognized properly as bootable on MDD FW800/2GB/Sonnet with no hiccups.  Pretty cool!  Here's the outputs:

NKLogReader:
Code: [Select]
NKNanoKernelInfo: logi addr 68ffedc0, struct ver 0228, 352 bytes.
NKNanoKernelInfo is within the Kernel Data Page. KDP phys addr 7f7fe000.
NanoKernel log starts after one blank line.

Hello from the builtin multitasking NanoKernel. Version: 0228
Kernel code base at 0x00f40000  Physical RAM size 0x7fffb000 bytes
Created motherboard coherence group. ID 00010001
NKCreateAddressSpaceSub - group at 0x7f7fc1c0 00010001
Created system address space. ID 00030001
 BATs ffc0007f 00c00043   6800001f 00f00043   00000000 00000000   00000000 00000000
Init ready queue 00000000 00000000 0000a8eb
Init ready queue 00000001 00000000 00054758
Init ready queue 00000002 00000000 002a3ac0
Init ready queue 00000003 00000000 0151d600
System context at 0x7f7ff100  Vector save area at 0x7f7fb8e0  SDR1 0x7f80003f
Adding blue task 00050001 to the ready queue
Starting timeslicing
Adding idle task 00070001 to the ready queue
NKCreateAddressSpaceSub - group at 0x7f7fc1c0 00010001
Priming the system free list with 272 pages.
VMMaxVirtualPages: 00068000 VMLogicalPages: 00000000
Interrupt handler kind: 06
Physical RAM greater than the initial logical area.
 Moving 95622 pages into the system free page list.
Converting PMDTs to areas
 CreateArea [ 00000000 67ffffff ] ID 000a0001 placed ... created
 CreateArea [ 68fef000 68feffff ] ID 000b0001 placed ... created
 CreateArea [ 68ff5000 68ffefff ] ID 000c0001 placed ... created
 CreateArea [ 68fff000 68ffffff ] ID 000d0001 placed ... created
 CreateArea [ 80000000 8005ffff ] ID 000e0001 placed ... created
 CreateArea [ 80060000 80060fff ] ID 000f0001 placed ... created
 CreateArea [ 80061000 8007ffff ] ID 00100001 placed ... created
 CreateArea [ 80081000 80081fff ] ID 00110001 placed ... created
 CreateArea [ 80082000 80082fff ] ID 00120001 placed ... created
 CreateArea [ 81000000 81ffffff ] ID 00130001 placed ... created
 CreateArea [ 90000000 9000ffff ] ID 00140001 placed ... created
 CreateArea [ 90020000 9003ffff ] ID 00150001 placed ... created
 CreateArea [ 98000000 9fffffff ] ID 00160001 placed ... created
 CreateArea [ dfffe000 dfffefff ] ID 00170001 placed ... created
 CreateArea [ e4000000 e417ffff ] ID 00180001 placed ... created
 CreateArea [ f0000000 ffffffff ] ID 00190001 placed ... created
 CreateArea [ 68f16000 68f16fff ] ID 001a0001 placed ... created
 CreateArea [ deadb000 deadbfff ] ID 001b0001 placed ... created
Reset system - Into the 68K fire: 0000d032 6806e8c0
ResetSystem trap entered
Kernel code base at 0x00f40000  Physical RAM size 0x7fffb000 bytes
Created motherboard coherence group. ID 00010001
NKCreateAddressSpaceSub - group at 0x7f7fc1c0 00010001
Created system address space. ID 00030001
 BATs ffc0007f 00c00043   6800001f 00f00043   00000000 00000000   00000000 00000000
Init ready queue 00000000 00000000 0000a8eb
Init ready queue 00000001 00000000 00054758
Init ready queue 00000002 00000000 002a3ac0
Init ready queue 00000003 00000000 0151d600
System context at 0x7f7ff100  Vector save area at 0x7f7fb8e0  SDR1 0x7f80003f
Adding blue task 00050001 to the ready queue
Starting timeslicing
Adding idle task 00070001 to the ready queue
NKCreateAddressSpaceSub - group at 0x7f7fc1c0 00010001
Priming the system free list with 272 pages.
VMMaxVirtualPages: 00068000 VMLogicalPages: 00068000
Interrupt handler kind: 06
Physical RAM greater than the initial logical area.
 Moving 95622 pages into the system free page list.
Converting PMDTs to areas
 CreateArea [ 00000000 67ffffff ] ID 000a0001 placed ... created
 CreateArea [ 68fef000 68feffff ] ID 000b0001 placed ... created
 CreateArea [ 68ff5000 68ffefff ] ID 000c0001 placed ... created
 CreateArea [ 68fff000 68ffffff ] ID 000d0001 placed ... created
 CreateArea [ 80000000 8005ffff ] ID 000e0001 placed ... created
 CreateArea [ 80060000 80060fff ] ID 000f0001 placed ... created
 CreateArea [ 80061000 8007ffff ] ID 00100001 placed ... created
 CreateArea [ 80081000 80081fff ] ID 00110001 placed ... created
 CreateArea [ 80082000 80082fff ] ID 00120001 placed ... created
 CreateArea [ 81000000 81ffffff ] ID 00130001 placed ... created
 CreateArea [ 90000000 9000ffff ] ID 00140001 placed ... created
 CreateArea [ 90020000 9003ffff ] ID 00150001 placed ... created
 CreateArea [ 98000000 9fffffff ] ID 00160001 placed ... created
 CreateArea [ dfffe000 dfffefff ] ID 00170001 placed ... created
 CreateArea [ e4000000 e417ffff ] ID 00180001 placed ... created
 CreateArea [ f0000000 ffffffff ] ID 00190001 placed ... created
 CreateArea [ 68f16000 68f16fff ] ID 001a0001 placed ... created
 CreateArea [ deadb000 deadbfff ] ID 001b0001 placed ... created
Reset system - Into the 68K fire: 0002d032 6806c9e8
 VMAllocateMemory - creating area at 0x69000000 00080000
 CreateArea [ 69000000 6907ffff ] ID 001c0001 placed ... created
Extend free pool: phys 0x7ff2d000  virt 0x00000000  count: 1
Extend free pool: phys 0x7ff2c000  virt 0x00000000  count: 2
Extend free pool: phys 0x7ff2b000  virt 0x00000000  count: 3
Extend free pool: phys 0x7ff2a000  virt 0x00000000  count: 4
Extend free pool: phys 0x7ff29000  virt 0x00000000  count: 5
Extend free pool: phys 0x7ff28000  virt 0x00000000  count: 6
Extend free pool: phys 0x7ff27000  virt 0x00000000  count: 7
Extend free pool: phys 0x7ff26000  virt 0x00000000  count: 8
Extend free pool: phys 0x7ff25000  virt 0x00000000  count: 9
Extend free pool: phys 0x7ff24000  virt 0x00000000  count: 10
TB drift adjusted to 40064738  ppb ( 13041 / 325462 )
Skeleton key inserted at00021032 010843d0
Extend free pool: phys 0x7ff23000  virt 0x00000000  count: 11
Extend free pool: phys 0x7ff22000  virt 0x00000000  count: 12

WedgeDryRun:
Code: [Select]
Hello from the (dry-run) Wedge.
      ConfigInfo @ 68fef000
    HardwareInfo @ dfffef00

DebugDumpPageMap
0 000: 0000ffff 00000a00
  008: 0000ffff 00000a00
1 010: 0000ffff 00000a00
  018: 0000ffff 00000a00
2 020: 0000ffff 00000a00
  028: 0000ffff 00000a00
3 030: 0000ffff 00000a00
  038: 0000ffff 00000a00
4 040: 0000ffff 00000a00
  048: 0000ffff 00000a00
5 050: 0000ffff 00000a00
  058: 0000ffff 00000a00
6 060: 00007fff 00000a00
  068: 00007fff 00000a00
  070: 8fef0000 00003013
  078: 8ffe0000 00000011 KDP
  080: 8fff0000 00000012 EDP
  088: 0000ffff 00000a01
  090: 0000ffff 00000a01
  098: 0000ffff 00000a00
7 0a0: 0000ffff 00000a01
  0a8: 0000ffff 00000a01
  0b0: 0000ffff 00000a00
8 0b8: 0000005f 8000003a
  0c0: 00600000 8006003a
  0c8: 0061001e 8006103a
  0d0: 00810000 8008103a
  0d8: 00820000 8008203a
  0e0: 10000fff 8100003a
  0e8: 0000ffff 80000a01
  0f0: 0000ffff 00000a00
9 0f8: 0000000f 9000003a
  100: 0020001f 9002003a
  108: 80007fff 98000032
  110: 0000ffff 90000a01
  118: 0000ffff 00000a00
A 120: 0000ffff a0000a01
  128: 0000ffff 00000a00
B 130: 0000ffff b0000a01
  138: 0000ffff 00000a00
C 140: 0000ffff c0000a01
  148: 0000ffff 00000a00
D 150: fffe0000 00000012 IRP
  158: 0000ffff d0000a01
  160: 0000ffff 00000a00
E 168: 4000017f 55600012
  170: 0000ffff e0000a01
  178: 0000ffff 00000a00
F 180: 0000ffff f000003a
  188: 0000ffff f0000a01
  190: 0000ffff 00000a00

Copying the system ConfigInfo and HardwareInfo structs.

ErasePageMapTable at offset 0x3ac

PatchMacOSAddressSpace: makeMemAvail 68000000
    nontrivial PME   LA = 0x60000000, count = 0x08000, PA = 0x00000000, pageAttr = 0x0A00, flags = 0x00.
    MacOS area delimiter: skipping

    nontrivial PME   LA = 0x60000000, count = 0x08000, PA = 0x00000000, pageAttr = 0x0A00, flags = 0x00.
    MacOS area delimiter: skipping

    nontrivial PME   LA = 0x68FEF000, count = 0x00001, PA = 0x00003000, pageAttr = 0x0013, flags = 0x00.
    AddPageMapEntry: LA = 0x68FEF000, count = 0x00001, PA = 0x00003000, pageAttr = 0x0013, flags = 0x00.

    nontrivial PME   LA = 0x68FFE000, count = 0x00001, PA = 0x00000000, pageAttr = 0x0011, flags = 0x02.
    AddPageMapEntry: LA = 0x68FFE000, count = 0x00001, PA = 0x00000000, pageAttr = 0x0011, flags = 0x02.

    nontrivial PME   LA = 0x68FFF000, count = 0x00001, PA = 0x00000000, pageAttr = 0x0012, flags = 0x03.
    AddPageMapEntry: LA = 0x68FFF000, count = 0x00001, PA = 0x00000000, pageAttr = 0x0012, flags = 0x03.

    nontrivial PME   LA = 0x80000000, count = 0x00060, PA = 0x80000000, pageAttr = 0x003A, flags = 0x00.
    AddPageMapEntry: LA = 0x80000000, count = 0x00060, PA = 0x80000000, pageAttr = 0x003A, flags = 0x00.

    nontrivial PME   LA = 0x80060000, count = 0x00001, PA = 0x80060000, pageAttr = 0x003A, flags = 0x00.
    AddPageMapEntry: LA = 0x80060000, count = 0x00001, PA = 0x80060000, pageAttr = 0x003A, flags = 0x00.

    nontrivial PME   LA = 0x80061000, count = 0x0001F, PA = 0x80061000, pageAttr = 0x003A, flags = 0x00.
    AddPageMapEntry: LA = 0x80061000, count = 0x0001F, PA = 0x80061000, pageAttr = 0x003A, flags = 0x00.

    nontrivial PME   LA = 0x80081000, count = 0x00001, PA = 0x80081000, pageAttr = 0x003A, flags = 0x00.
    AddPageMapEntry: LA = 0x80081000, count = 0x00001, PA = 0x80081000, pageAttr = 0x003A, flags = 0x00.

    nontrivial PME   LA = 0x80082000, count = 0x00001, PA = 0x80082000, pageAttr = 0x003A, flags = 0x00.
    AddPageMapEntry: LA = 0x80082000, count = 0x00001, PA = 0x80082000, pageAttr = 0x003A, flags = 0x00.

    nontrivial PME   LA = 0x81000000, count = 0x01000, PA = 0x81000000, pageAttr = 0x003A, flags = 0x00.
    AddPageMapEntry: LA = 0x81000000, count = 0x01000, PA = 0x81000000, pageAttr = 0x003A, flags = 0x00.

    nontrivial PME   LA = 0x90000000, count = 0x00010, PA = 0x90000000, pageAttr = 0x003A, flags = 0x00.
    AddPageMapEntry: LA = 0x90000000, count = 0x00010, PA = 0x90000000, pageAttr = 0x003A, flags = 0x00.

    nontrivial PME   LA = 0x90020000, count = 0x00020, PA = 0x90020000, pageAttr = 0x003A, flags = 0x00.
    AddPageMapEntry: LA = 0x90020000, count = 0x00020, PA = 0x90020000, pageAttr = 0x003A, flags = 0x00.

    nontrivial PME   LA = 0x98000000, count = 0x08000, PA = 0x98000000, pageAttr = 0x0032, flags = 0x00.
    AddPageMapEntry: LA = 0x98000000, count = 0x08000, PA = 0x98000000, pageAttr = 0x0032, flags = 0x00.

    nontrivial PME   LA = 0xDFFFE000, count = 0x00001, PA = 0x00000000, pageAttr = 0x0012, flags = 0x01.
    AddPageMapEntry: LA = 0xDFFFE000, count = 0x00001, PA = 0x00000000, pageAttr = 0x0012, flags = 0x01.

    nontrivial PME   LA = 0xE4000000, count = 0x00180, PA = 0x55600000, pageAttr = 0x0012, flags = 0x00.
    AddPageMapEntry: LA = 0xE4000000, count = 0x00180, PA = 0x55600000, pageAttr = 0x0012, flags = 0x00.

    nontrivial PME   LA = 0xF0000000, count = 0x10000, PA = 0xF0000000, pageAttr = 0x003A, flags = 0x00.
    AddPageMapEntry: LA = 0xF0000000, count = 0x10000, PA = 0xF0000000, pageAttr = 0x003A, flags = 0x00.

    Reinserting the MacOS area delimiters:
    AddPageMapEntry: LA = 0x60000000, count = 0x08000, PA = 0x00000000, pageAttr = 0x0A00, flags = 0x00.
    AddPageMapEntry: LA = 0x60000000, count = 0x08000, PA = 0x00000000, pageAttr = 0x0A00, flags = 0x00.

PatchMacOSAddressSpace succeeded (but was forbidden from patching the Emulator).

DebugDumpPageMap
0 000: 0000ffff 00000a00
  008: 0000ffff 00000a00
1 010: 0000ffff 00000a00
  018: 0000ffff 00000a00
2 020: 0000ffff 00000a00
  028: 0000ffff 00000a00
3 030: 0000ffff 00000a00
  038: 0000ffff 00000a00
4 040: 0000ffff 00000a00
  048: 0000ffff 00000a00
5 050: 0000ffff 00000a00
  058: 0000ffff 00000a00
6 060: 00007fff 00000a00
  068: 00007fff 00000a00
  070: 8fef0000 00003013
  078: 8ffe0000 00000011 KDP
  080: 8fff0000 00000012 EDP
  088: 0000ffff 00000a01
  090: 0000ffff 00000a01
  098: 0000ffff 00000a00
7 0a0: 0000ffff 00000a01
  0a8: 0000ffff 00000a01
  0b0: 0000ffff 00000a00
8 0b8: 0000005f 8000003a
  0c0: 00600000 8006003a
  0c8: 0061001e 8006103a
  0d0: 00810000 8008103a
  0d8: 00820000 8008203a
  0e0: 10000fff 8100003a
  0e8: 0000ffff 80000a01
  0f0: 0000ffff 00000a00
9 0f8: 0000000f 9000003a
  100: 0020001f 9002003a
  108: 80007fff 98000032
  110: 0000ffff 90000a01
  118: 0000ffff 00000a00
A 120: 0000ffff a0000a01
  128: 0000ffff 00000a00
B 130: 0000ffff b0000a01
  138: 0000ffff 00000a00
C 140: 0000ffff c0000a01
  148: 0000ffff 00000a00
D 150: fffe0000 00000012 IRP
  158: 0000ffff d0000a01
  160: 0000ffff 00000a00
E 168: 4000017f 55600012
  170: 0000ffff e0000a01
  178: 0000ffff 00000a00
F 180: 0000ffff f000003a
  188: 0000ffff f0000a01
  190: 0000ffff 00000a00

WedgeLogReader:
Code: [Select]
Hello from the Wedge.
      ConfigInfo (r3) @ 00003000
   ProcessorInfo (r4) @ 7fffff40
      SystemInfo (r5) @ 7ffffe00
  DiagnosticInfo (r6) @ 00000000
            RTAS (r7) = 52544153
        RTASProc (r8) @ 00000000
    HardwareInfo (r9) @ 7ffffd40

DebugDumpPageMap
0 000: 0000ffff 00000a00
  008: 0000ffff 00000a00
1 010: 0000ffff 00000a00
  018: 0000ffff 00000a00
2 020: 0000ffff 00000a00
  028: 0000ffff 00000a00
3 030: 0000ffff 00000a00
  038: 0000ffff 00000a00
4 040: 0000ffff 00000a00
  048: 0000ffff 00000a00
5 050: 0000fffd 00000a00
  058: 0000fffd 00000a00
  060: fffe0000 00000012 IRP
  068: 0000ffff 00000a00
  070: 0000ffff 00000a00
6 078: 4000017f 55600012
  080: 8fef0000 00003013
  088: 8ffe0000 00000011 KDP
  090: 8fff0000 00000012 EDP
  098: 0000ffff 00000a01
  0a0: 0000ffff 00000a01
  0a8: 0000ffff 00000a00
7 0b0: 0000ffff 00000a01
  0b8: 0000ffff 00000a01
  0c0: 0000ffff 00000a00
8 0c8: 0000005f 8000003a
  0d0: 00600000 8006003a
  0d8: 0061001e 8006103a
  0e0: 00810000 8008103a
  0e8: 00820000 8008203a
  0f0: 10000fff 8100003a
  0f8: 0000ffff 80000a01
  100: 0000ffff 00000a00
9 108: 0000000f 9000003a
  110: 0020001f 9002003a
  118: 80007fff 98000032
  120: 0000ffff 90000a01
  128: 0000ffff 00000a00
A 130: 0000ffff a0000a01
  138: 0000ffff 00000a00
B 140: 0000ffff b0000a01
  148: 0000ffff 00000a00
C 150: 0000ffff c0000a01
  158: 0000ffff 00000a00
D 160: 0000ffff d0000a01
  168: 0000ffff 00000a00
E 170: 0000ffff e0000a01
  178: 0000ffff 00000a00
F 180: 0000ffff f000003a
  188: 0000ffff f0000a01
  190: 0000ffff 00000a00

Rearranging the MacOS address space...

ErasePageMapTable at offset 0x3ac

PatchMacOSAddressSpace: makeMemAvail 68000000
    nontrivial PME   LA = 0x50000000, count = 0x0FFFE, PA = 0x00000000, pageAttr = 0x0A00, flags = 0x00.
    MacOS area delimiter: skipping

    nontrivial PME   LA = 0x50000000, count = 0x0FFFE, PA = 0x00000000, pageAttr = 0x0A00, flags = 0x00.
    MacOS area delimiter: skipping

    nontrivial PME   LA = 0x5FFFE000, count = 0x00001, PA = 0x00000000, pageAttr = 0x0012, flags = 0x01.
    **IRP**
    Patching Emulator lis/ori @ 181e8
    AddPageMapEntry: LA = 0xDFFFE000, count = 0x00001, PA = 0x00000000, pageAttr = 0x0012, flags = 0x01.

    nontrivial PME   LA = 0x64000000, count = 0x00180, PA = 0x55600000, pageAttr = 0x0012, flags = 0x00.
    **Universal/DeviceTree area**
    AddPageMapEntry: LA = 0xE4000000, count = 0x00180, PA = 0x55600000, pageAttr = 0x0012, flags = 0x00.

    nontrivial PME   LA = 0x68FEF000, count = 0x00001, PA = 0x00003000, pageAttr = 0x0013, flags = 0x00.
    AddPageMapEntry: LA = 0x68FEF000, count = 0x00001, PA = 0x00003000, pageAttr = 0x0013, flags = 0x00.

    nontrivial PME   LA = 0x68FFE000, count = 0x00001, PA = 0x00000000, pageAttr = 0x0011, flags = 0x02.
    AddPageMapEntry: LA = 0x68FFE000, count = 0x00001, PA = 0x00000000, pageAttr = 0x0011, flags = 0x02.

    nontrivial PME   LA = 0x68FFF000, count = 0x00001, PA = 0x00000000, pageAttr = 0x0012, flags = 0x03.
    AddPageMapEntry: LA = 0x68FFF000, count = 0x00001, PA = 0x00000000, pageAttr = 0x0012, flags = 0x03.

    nontrivial PME   LA = 0x80000000, count = 0x00060, PA = 0x80000000, pageAttr = 0x003A, flags = 0x00.
    AddPageMapEntry: LA = 0x80000000, count = 0x00060, PA = 0x80000000, pageAttr = 0x003A, flags = 0x00.

    nontrivial PME   LA = 0x80060000, count = 0x00001, PA = 0x80060000, pageAttr = 0x003A, flags = 0x00.
    AddPageMapEntry: LA = 0x80060000, count = 0x00001, PA = 0x80060000, pageAttr = 0x003A, flags = 0x00.

    nontrivial PME   LA = 0x80061000, count = 0x0001F, PA = 0x80061000, pageAttr = 0x003A, flags = 0x00.
    AddPageMapEntry: LA = 0x80061000, count = 0x0001F, PA = 0x80061000, pageAttr = 0x003A, flags = 0x00.

    nontrivial PME   LA = 0x80081000, count = 0x00001, PA = 0x80081000, pageAttr = 0x003A, flags = 0x00.
    AddPageMapEntry: LA = 0x80081000, count = 0x00001, PA = 0x80081000, pageAttr = 0x003A, flags = 0x00.

    nontrivial PME   LA = 0x80082000, count = 0x00001, PA = 0x80082000, pageAttr = 0x003A, flags = 0x00.
    AddPageMapEntry: LA = 0x80082000, count = 0x00001, PA = 0x80082000, pageAttr = 0x003A, flags = 0x00.

    nontrivial PME   LA = 0x81000000, count = 0x01000, PA = 0x81000000, pageAttr = 0x003A, flags = 0x00.
    AddPageMapEntry: LA = 0x81000000, count = 0x01000, PA = 0x81000000, pageAttr = 0x003A, flags = 0x00.

    nontrivial PME   LA = 0x90000000, count = 0x00010, PA = 0x90000000, pageAttr = 0x003A, flags = 0x00.
    AddPageMapEntry: LA = 0x90000000, count = 0x00010, PA = 0x90000000, pageAttr = 0x003A, flags = 0x00.

    nontrivial PME   LA = 0x90020000, count = 0x00020, PA = 0x90020000, pageAttr = 0x003A, flags = 0x00.
    AddPageMapEntry: LA = 0x90020000, count = 0x00020, PA = 0x90020000, pageAttr = 0x003A, flags = 0x00.

    nontrivial PME   LA = 0x98000000, count = 0x08000, PA = 0x98000000, pageAttr = 0x0032, flags = 0x00.
    AddPageMapEntry: LA = 0x98000000, count = 0x08000, PA = 0x98000000, pageAttr = 0x0032, flags = 0x00.

    nontrivial PME   LA = 0xF0000000, count = 0x10000, PA = 0xF0000000, pageAttr = 0x003A, flags = 0x00.
    AddPageMapEntry: LA = 0xF0000000, count = 0x10000, PA = 0xF0000000, pageAttr = 0x003A, flags = 0x00.

    Reinserting the MacOS area delimiters:
    AddPageMapEntry: LA = 0x60000000, count = 0x08000, PA = 0x00000000, pageAttr = 0x0A00, flags = 0x00.
    AddPageMapEntry: LA = 0x60000000, count = 0x08000, PA = 0x00000000, pageAttr = 0x0A00, flags = 0x00.

Copying modified ConfigInfo and HWInfo over the originals.

DebugDumpPageMap
0 000: 0000ffff 00000a00
  008: 0000ffff 00000a00
1 010: 0000ffff 00000a00
  018: 0000ffff 00000a00
2 020: 0000ffff 00000a00
  028: 0000ffff 00000a00
3 030: 0000ffff 00000a00
  038: 0000ffff 00000a00
4 040: 0000ffff 00000a00
  048: 0000ffff 00000a00
5 050: 0000ffff 00000a00
  058: 0000ffff 00000a00
6 060: 00007fff 00000a00
  068: 00007fff 00000a00
  070: 8fef0000 00003013
  078: 8ffe0000 00000011 KDP
  080: 8fff0000 00000012 EDP
  088: 0000ffff 00000a01
  090: 0000ffff 00000a01
  098: 0000ffff 00000a00
7 0a0: 0000ffff 00000a01
  0a8: 0000ffff 00000a01
  0b0: 0000ffff 00000a00
8 0b8: 0000005f 8000003a
  0c0: 00600000 8006003a
  0c8: 0061001e 8006103a
  0d0: 00810000 8008103a
  0d8: 00820000 8008203a
  0e0: 10000fff 8100003a
  0e8: 0000ffff 80000a01
  0f0: 0000ffff 00000a00
9 0f8: 0000000f 9000003a
  100: 0020001f 9002003a
  108: 80007fff 98000032
  110: 0000ffff 90000a01
  118: 0000ffff 00000a00
A 120: 0000ffff a0000a01
  128: 0000ffff 00000a00
B 130: 0000ffff b0000a01
  138: 0000ffff 00000a00
C 140: 0000ffff c0000a01
  148: 0000ffff 00000a00
D 150: fffe0000 00000012 IRP
  158: 0000ffff d0000a01
  160: 0000ffff 00000a00
E 168: 4000017f 55600012
  170: 0000ffff e0000a01
  178: 0000ffff 00000a00
F 180: 0000ffff f000003a
  188: 0000ffff f0000a01
  190: 0000ffff 00000a00


Handing over to the NanoKernel.

Original "About This Computer":


ROM v3 "About This Computer":


Next I'll move this over to the 9serve and try again!
« Last Edit: June 04, 2017, 11:12:43 AM by MacOS Plus »

Offline MacOS Plus

  • Gold Member
  • *****
  • Posts: 418
  • The 9serve Lives!
Re: Mac OS 9.2.2 Memory Limit of 1.5 GB... Some Answers
« Reply #113 on: June 04, 2017, 12:01:12 PM »
Logs from 9serve Rev.1/2GB/2x1.0GHz:

NKLogReader:
Code: [Select]
NKNanoKernelInfo: logi addr 68ffedc0, struct ver 0228, 352 bytes.
NKNanoKernelInfo is within the Kernel Data Page. KDP phys addr 7f7fe000.
NanoKernel log starts after one blank line.

Hello from the builtin multitasking NanoKernel. Version: 0228
Kernel code base at 0x00f40000  Physical RAM size 0x7fffb000 bytes
Created motherboard coherence group. ID 00010001
NKCreateAddressSpaceSub - group at 0x7f7fc1c0 00010001
Created system address space. ID 00030001
 BATs ffc0007f 00c00043   6800001f 00f00043   00000000 00000000   00000000 00000000
Init ready queue 00000000 00000000 00008652
Init ready queue 00000001 00000000 00043290
Init ready queue 00000002 00000000 00219480
Init ready queue 00000003 00000000 010ca400
System context at 0x7f7ff100  Vector save area at 0x7f7fb8e0  SDR1 0x7f80003f
Adding blue task 00050001 to the ready queue
Starting timeslicing
Adding idle task 00070001 to the ready queue
NKCreateAddressSpaceSub - group at 0x7f7fc1c0 00010001
Priming the system free list with 272 pages.
VMMaxVirtualPages: 00068000 VMLogicalPages: 00000000
Interrupt handler kind: 06
Physical RAM greater than the initial logical area.
 Moving 95622 pages into the system free page list.
Converting PMDTs to areas
 CreateArea [ 00000000 67ffffff ] ID 000a0001 placed ... created
 CreateArea [ 68fef000 68feffff ] ID 000b0001 placed ... created
 CreateArea [ 68ff5000 68ffefff ] ID 000c0001 placed ... created
 CreateArea [ 68fff000 68ffffff ] ID 000d0001 placed ... created
 CreateArea [ 80000000 8005ffff ] ID 000e0001 placed ... created
 CreateArea [ 80060000 80060fff ] ID 000f0001 placed ... created
 CreateArea [ 80061000 8007ffff ] ID 00100001 placed ... created
 CreateArea [ 80080000 80080fff ] ID 00110001 placed ... created
 CreateArea [ 80081000 80081fff ] ID 00120001 placed ... created
 CreateArea [ 90000000 9000ffff ] ID 00130001 placed ... created
 CreateArea [ 90020000 9003ffff ] ID 00140001 placed ... created
 CreateArea [ a0000000 afffffff ] ID 00150001 placed ... created
 CreateArea [ dfffe000 dfffefff ] ID 00160001 placed ... created
 CreateArea [ e4000000 e417ffff ] ID 00170001 placed ... created
 CreateArea [ f0000000 f4ffffff ] ID 00180001 placed ... created
 CreateArea [ f5000000 f5000fff ] ID 00190001 placed ... created
 CreateArea [ f5001000 f50fffff ] ID 001a0001 placed ... created
 CreateArea [ f5100000 f51fffff ] ID 001b0001 placed ... created
 CreateArea [ f5200000 f53fffff ] ID 001c0001 placed ... created
 CreateArea [ f5400000 ffffffff ] ID 001d0001 placed ... created
 CreateArea [ 68f16000 68f16fff ] ID 001e0001 placed ... created
 CreateArea [ deadb000 deadbfff ] ID 001f0001 placed ... created
Reset system - Into the 68K fire: 0000d032 6806e8c0
ResetSystem trap entered
Kernel code base at 0x00f40000  Physical RAM size 0x7fffb000 bytes
Created motherboard coherence group. ID 00010001
NKCreateAddressSpaceSub - group at 0x7f7fc1c0 00010001
Created system address space. ID 00030001
 BATs ffc0007f 00c00043   6800001f 00f00043   00000000 00000000   00000000 00000000
Init ready queue 00000000 00000000 00008652
Init ready queue 00000001 00000000 00043290
Init ready queue 00000002 00000000 00219480
Init ready queue 00000003 00000000 010ca400
System context at 0x7f7ff100  Vector save area at 0x7f7fb8e0  SDR1 0x7f80003f
Adding blue task 00050001 to the ready queue
Starting timeslicing
Adding idle task 00070001 to the ready queue
NKCreateAddressSpaceSub - group at 0x7f7fc1c0 00010001
Priming the system free list with 272 pages.
VMMaxVirtualPages: 00068000 VMLogicalPages: 00068000
Interrupt handler kind: 06
Physical RAM greater than the initial logical area.
 Moving 95622 pages into the system free page list.
Converting PMDTs to areas
 CreateArea [ 00000000 67ffffff ] ID 000a0001 placed ... created
 CreateArea [ 68fef000 68feffff ] ID 000b0001 placed ... created
 CreateArea [ 68ff5000 68ffefff ] ID 000c0001 placed ... created
 CreateArea [ 68fff000 68ffffff ] ID 000d0001 placed ... created
 CreateArea [ 80000000 8005ffff ] ID 000e0001 placed ... created
 CreateArea [ 80060000 80060fff ] ID 000f0001 placed ... created
 CreateArea [ 80061000 8007ffff ] ID 00100001 placed ... created
 CreateArea [ 80080000 80080fff ] ID 00110001 placed ... created
 CreateArea [ 80081000 80081fff ] ID 00120001 placed ... created
 CreateArea [ 90000000 9000ffff ] ID 00130001 placed ... created
 CreateArea [ 90020000 9003ffff ] ID 00140001 placed ... created
 CreateArea [ a0000000 afffffff ] ID 00150001 placed ... created
 CreateArea [ dfffe000 dfffefff ] ID 00160001 placed ... created
 CreateArea [ e4000000 e417ffff ] ID 00170001 placed ... created
 CreateArea [ f0000000 f4ffffff ] ID 00180001 placed ... created
 CreateArea [ f5000000 f5000fff ] ID 00190001 placed ... created
 CreateArea [ f5001000 f50fffff ] ID 001a0001 placed ... created
 CreateArea [ f5100000 f51fffff ] ID 001b0001 placed ... created
 CreateArea [ f5200000 f53fffff ] ID 001c0001 placed ... created
 CreateArea [ f5400000 ffffffff ] ID 001d0001 placed ... created
 CreateArea [ 68f16000 68f16fff ] ID 001e0001 placed ... created
 CreateArea [ deadb000 deadbfff ] ID 001f0001 placed ... created
Reset system - Into the 68K fire: 0002d032 6806c9e8
 VMAllocateMemory - creating area at 0x69000000 00080000
 CreateArea [ 69000000 6907ffff ] ID 00200001 placed ... created
Extend free pool: phys 0x7ff2d000  virt 0x00000000  count: 1
VMMakePageCacheable for I/O 00090008
VMMakePageCacheable for I/O 00090009
VMMakePageCacheable for I/O 0009000a
VMMakePageCacheable for I/O 0009000b
VMMakePageCacheable for I/O 0009000c
VMMakePageCacheable for I/O 0009000d
VMMakePageCacheable for I/O 0009000e
VMMakePageCacheable for I/O 0009000f
Extend free pool: phys 0x7ff2c000  virt 0x00000000  count: 2
Extend free pool: phys 0x7ff2b000  virt 0x00000000  count: 3
Extend free pool: phys 0x7ff2a000  virt 0x00000000  count: 4
Extend free pool: phys 0x7ff29000  virt 0x00000000  count: 5
Extend free pool: phys 0x7ff28000  virt 0x00000000  count: 6
Extend free pool: phys 0x7ff27000  virt 0x00000000  count: 7
Extend free pool: phys 0x7ff26000  virt 0x00000000  count: 8
Extend free pool: phys 0x7ff25000  virt 0x00000000  count: 9
Extend free pool: phys 0x7ff24000  virt 0x00000000  count: 10
TB drift adjusted to 33175978  ppb ( 8612 / 259605 )
Extend free pool: phys 0x7ff23000  virt 0x00000000  count: 11
Extend free pool: phys 0x7ff22000  virt 0x00000000  count: 12

WedgeDryRun:
Code: [Select]
Hello from the (dry-run) Wedge.
      ConfigInfo @ 68fef000
    HardwareInfo @ dfffef00

DebugDumpPageMap
0 000: 0000ffff 00000a00
  008: 0000ffff 00000a00
1 010: 0000ffff 00000a00
  018: 0000ffff 00000a00
2 020: 0000ffff 00000a00
  028: 0000ffff 00000a00
3 030: 0000ffff 00000a00
  038: 0000ffff 00000a00
4 040: 0000ffff 00000a00
  048: 0000ffff 00000a00
5 050: 0000ffff 00000a00
  058: 0000ffff 00000a00
6 060: 00007fff 00000a00
  068: 00007fff 00000a00
  070: 8fef0000 00003013
  078: 8ffe0000 00000011 KDP
  080: 8fff0000 00000012 EDP
  088: 0000ffff 00000a01
  090: 0000ffff 00000a01
  098: 0000ffff 00000a00
7 0a0: 0000ffff 00000a01
  0a8: 0000ffff 00000a01
  0b0: 0000ffff 00000a00
8 0b8: 0000005f 8000003a
  0c0: 00600000 8006003a
  0c8: 0061001e 8006103a
  0d0: 00800000 8008003a
  0d8: 00810000 8008103a
  0e0: 0000ffff 80000a01
  0e8: 0000ffff 00000a00
9 0f0: 0000000f 9000003a
  0f8: 0020001f 9002003a
  100: 0000ffff 90000a01
  108: 0000ffff 00000a00
A 110: 0000ffff a0000032
  118: 0000ffff a0000a01
  120: 0000ffff 00000a00
B 128: 0000ffff b0000a01
  130: 0000ffff 00000a00
C 138: 0000ffff c0000a01
  140: 0000ffff 00000a00
D 148: fffe0000 00000012 IRP
  150: 0000ffff d0000a01
  158: 0000ffff 00000a00
E 160: 4000017f 55600012
  168: 0000ffff e0000a01
  170: 0000ffff 00000a00
F 178: 00004fff f000003a
  180: 50000000 f500003a
  188: 500100fe f500103a
  190: 510000ff f510003a
  198: 520001ff f520003a
  1a0: 5400abff f540003a
  1a8: 0000ffff f0000a01
  1b0: 0000ffff 00000a00

Copying the system ConfigInfo and HardwareInfo structs.

ErasePageMapTable at offset 0x3ac

PatchMacOSAddressSpace: makeMemAvail 68000000
    nontrivial PME   LA = 0x60000000, count = 0x08000, PA = 0x00000000, pageAttr = 0x0A00, flags = 0x00.
    MacOS area delimiter: skipping

    nontrivial PME   LA = 0x60000000, count = 0x08000, PA = 0x00000000, pageAttr = 0x0A00, flags = 0x00.
    MacOS area delimiter: skipping

    nontrivial PME   LA = 0x68FEF000, count = 0x00001, PA = 0x00003000, pageAttr = 0x0013, flags = 0x00.
    AddPageMapEntry: LA = 0x68FEF000, count = 0x00001, PA = 0x00003000, pageAttr = 0x0013, flags = 0x00.

    nontrivial PME   LA = 0x68FFE000, count = 0x00001, PA = 0x00000000, pageAttr = 0x0011, flags = 0x02.
    AddPageMapEntry: LA = 0x68FFE000, count = 0x00001, PA = 0x00000000, pageAttr = 0x0011, flags = 0x02.

    nontrivial PME   LA = 0x68FFF000, count = 0x00001, PA = 0x00000000, pageAttr = 0x0012, flags = 0x03.
    AddPageMapEntry: LA = 0x68FFF000, count = 0x00001, PA = 0x00000000, pageAttr = 0x0012, flags = 0x03.

    nontrivial PME   LA = 0x80000000, count = 0x00060, PA = 0x80000000, pageAttr = 0x003A, flags = 0x00.
    AddPageMapEntry: LA = 0x80000000, count = 0x00060, PA = 0x80000000, pageAttr = 0x003A, flags = 0x00.

    nontrivial PME   LA = 0x80060000, count = 0x00001, PA = 0x80060000, pageAttr = 0x003A, flags = 0x00.
    AddPageMapEntry: LA = 0x80060000, count = 0x00001, PA = 0x80060000, pageAttr = 0x003A, flags = 0x00.

    nontrivial PME   LA = 0x80061000, count = 0x0001F, PA = 0x80061000, pageAttr = 0x003A, flags = 0x00.
    AddPageMapEntry: LA = 0x80061000, count = 0x0001F, PA = 0x80061000, pageAttr = 0x003A, flags = 0x00.

    nontrivial PME   LA = 0x80080000, count = 0x00001, PA = 0x80080000, pageAttr = 0x003A, flags = 0x00.
    AddPageMapEntry: LA = 0x80080000, count = 0x00001, PA = 0x80080000, pageAttr = 0x003A, flags = 0x00.

    nontrivial PME   LA = 0x80081000, count = 0x00001, PA = 0x80081000, pageAttr = 0x003A, flags = 0x00.
    AddPageMapEntry: LA = 0x80081000, count = 0x00001, PA = 0x80081000, pageAttr = 0x003A, flags = 0x00.

    nontrivial PME   LA = 0x90000000, count = 0x00010, PA = 0x90000000, pageAttr = 0x003A, flags = 0x00.
    AddPageMapEntry: LA = 0x90000000, count = 0x00010, PA = 0x90000000, pageAttr = 0x003A, flags = 0x00.

    nontrivial PME   LA = 0x90020000, count = 0x00020, PA = 0x90020000, pageAttr = 0x003A, flags = 0x00.
    AddPageMapEntry: LA = 0x90020000, count = 0x00020, PA = 0x90020000, pageAttr = 0x003A, flags = 0x00.

    nontrivial PME   LA = 0xA0000000, count = 0x10000, PA = 0xA0000000, pageAttr = 0x0032, flags = 0x00.
    AddPageMapEntry: LA = 0xA0000000, count = 0x10000, PA = 0xA0000000, pageAttr = 0x0032, flags = 0x00.

    nontrivial PME   LA = 0xDFFFE000, count = 0x00001, PA = 0x00000000, pageAttr = 0x0012, flags = 0x01.
    AddPageMapEntry: LA = 0xDFFFE000, count = 0x00001, PA = 0x00000000, pageAttr = 0x0012, flags = 0x01.

    nontrivial PME   LA = 0xE4000000, count = 0x00180, PA = 0x55600000, pageAttr = 0x0012, flags = 0x00.
    AddPageMapEntry: LA = 0xE4000000, count = 0x00180, PA = 0x55600000, pageAttr = 0x0012, flags = 0x00.

    nontrivial PME   LA = 0xF0000000, count = 0x05000, PA = 0xF0000000, pageAttr = 0x003A, flags = 0x00.
    AddPageMapEntry: LA = 0xF0000000, count = 0x05000, PA = 0xF0000000, pageAttr = 0x003A, flags = 0x00.

    nontrivial PME   LA = 0xF5000000, count = 0x00001, PA = 0xF5000000, pageAttr = 0x003A, flags = 0x00.
    AddPageMapEntry: LA = 0xF5000000, count = 0x00001, PA = 0xF5000000, pageAttr = 0x003A, flags = 0x00.

    nontrivial PME   LA = 0xF5001000, count = 0x000FF, PA = 0xF5001000, pageAttr = 0x003A, flags = 0x00.
    AddPageMapEntry: LA = 0xF5001000, count = 0x000FF, PA = 0xF5001000, pageAttr = 0x003A, flags = 0x00.

    nontrivial PME   LA = 0xF5100000, count = 0x00100, PA = 0xF5100000, pageAttr = 0x003A, flags = 0x00.
    AddPageMapEntry: LA = 0xF5100000, count = 0x00100, PA = 0xF5100000, pageAttr = 0x003A, flags = 0x00.

    nontrivial PME   LA = 0xF5200000, count = 0x00200, PA = 0xF5200000, pageAttr = 0x003A, flags = 0x00.
    AddPageMapEntry: LA = 0xF5200000, count = 0x00200, PA = 0xF5200000, pageAttr = 0x003A, flags = 0x00.

    nontrivial PME   LA = 0xF5400000, count = 0x0AC00, PA = 0xF5400000, pageAttr = 0x003A, flags = 0x00.
    AddPageMapEntry: LA = 0xF5400000, count = 0x0AC00, PA = 0xF5400000, pageAttr = 0x003A, flags = 0x00.

    Reinserting the MacOS area delimiters:
    AddPageMapEntry: LA = 0x60000000, count = 0x08000, PA = 0x00000000, pageAttr = 0x0A00, flags = 0x00.
    AddPageMapEntry: LA = 0x60000000, count = 0x08000, PA = 0x00000000, pageAttr = 0x0A00, flags = 0x00.

PatchMacOSAddressSpace succeeded (but was forbidden from patching the Emulator).

DebugDumpPageMap
0 000: 0000ffff 00000a00
  008: 0000ffff 00000a00
1 010: 0000ffff 00000a00
  018: 0000ffff 00000a00
2 020: 0000ffff 00000a00
  028: 0000ffff 00000a00
3 030: 0000ffff 00000a00
  038: 0000ffff 00000a00
4 040: 0000ffff 00000a00
  048: 0000ffff 00000a00
5 050: 0000ffff 00000a00
  058: 0000ffff 00000a00
6 060: 00007fff 00000a00
  068: 00007fff 00000a00
  070: 8fef0000 00003013
  078: 8ffe0000 00000011 KDP
  080: 8fff0000 00000012 EDP
  088: 0000ffff 00000a01
  090: 0000ffff 00000a01
  098: 0000ffff 00000a00
7 0a0: 0000ffff 00000a01
  0a8: 0000ffff 00000a01
  0b0: 0000ffff 00000a00
8 0b8: 0000005f 8000003a
  0c0: 00600000 8006003a
  0c8: 0061001e 8006103a
  0d0: 00800000 8008003a
  0d8: 00810000 8008103a
  0e0: 0000ffff 80000a01
  0e8: 0000ffff 00000a00
9 0f0: 0000000f 9000003a
  0f8: 0020001f 9002003a
  100: 0000ffff 90000a01
  108: 0000ffff 00000a00
A 110: 0000ffff a0000032
  118: 0000ffff a0000a01
  120: 0000ffff 00000a00
B 128: 0000ffff b0000a01
  130: 0000ffff 00000a00
C 138: 0000ffff c0000a01
  140: 0000ffff 00000a00
D 148: fffe0000 00000012 IRP
  150: 0000ffff d0000a01
  158: 0000ffff 00000a00
E 160: 4000017f 55600012
  168: 0000ffff e0000a01
  170: 0000ffff 00000a00
F 178: 00004fff f000003a
  180: 50000000 f500003a
  188: 500100fe f500103a
  190: 510000ff f510003a
  198: 520001ff f520003a
  1a0: 5400abff f540003a
  1a8: 0000ffff f0000a01
  1b0: 0000ffff 00000a00

WedgeLogReader:
Code: [Select]
Hello from the Wedge.
      ConfigInfo (r3) @ 00003000
   ProcessorInfo (r4) @ 7fffff40
      SystemInfo (r5) @ 7ffffe00
  DiagnosticInfo (r6) @ 00000000
            RTAS (r7) = 52544153
        RTASProc (r8) @ 00000000
    HardwareInfo (r9) @ 7ffffd40

DebugDumpPageMap
0 000: 0000ffff 00000a00
  008: 0000ffff 00000a00
1 010: 0000ffff 00000a00
  018: 0000ffff 00000a00
2 020: 0000ffff 00000a00
  028: 0000ffff 00000a00
3 030: 0000ffff 00000a00
  038: 0000ffff 00000a00
4 040: 0000ffff 00000a00
  048: 0000ffff 00000a00
5 050: 0000fffd 00000a00
  058: 0000fffd 00000a00
  060: fffe0000 00000012 IRP
  068: 0000ffff 00000a00
  070: 0000ffff 00000a00
6 078: 4000017f 55600012
  080: 8fef0000 00003013
  088: 8ffe0000 00000011 KDP
  090: 8fff0000 00000012 EDP
  098: 0000ffff 00000a01
  0a0: 0000ffff 00000a01
  0a8: 0000ffff 00000a00
7 0b0: 0000ffff 00000a01
  0b8: 0000ffff 00000a01
  0c0: 0000ffff 00000a00
8 0c8: 0000005f 8000003a
  0d0: 00600000 8006003a
  0d8: 0061001e 8006103a
  0e0: 00800000 8008003a
  0e8: 00810000 8008103a
  0f0: 0000ffff 80000a01
  0f8: 0000ffff 00000a00
9 100: 0000000f 9000003a
  108: 0020001f 9002003a
  110: 0000ffff 90000a01
  118: 0000ffff 00000a00
A 120: 0000ffff a0000032
  128: 0000ffff a0000a01
  130: 0000ffff 00000a00
B 138: 0000ffff b0000a01
  140: 0000ffff 00000a00
C 148: 0000ffff c0000a01
  150: 0000ffff 00000a00
D 158: 0000ffff d0000a01
  160: 0000ffff 00000a00
E 168: 0000ffff e0000a01
  170: 0000ffff 00000a00
F 178: 00004fff f000003a
  180: 50000000 f500003a
  188: 500100fe f500103a
  190: 510000ff f510003a
  198: 520001ff f520003a
  1a0: 5400abff f540003a
  1a8: 0000ffff f0000a01
  1b0: 0000ffff 00000a00

Rearranging the MacOS address space...

ErasePageMapTable at offset 0x3ac

PatchMacOSAddressSpace: makeMemAvail 68000000
    nontrivial PME   LA = 0x50000000, count = 0x0FFFE, PA = 0x00000000, pageAttr = 0x0A00, flags = 0x00.
    MacOS area delimiter: skipping

    nontrivial PME   LA = 0x50000000, count = 0x0FFFE, PA = 0x00000000, pageAttr = 0x0A00, flags = 0x00.
    MacOS area delimiter: skipping

    nontrivial PME   LA = 0x5FFFE000, count = 0x00001, PA = 0x00000000, pageAttr = 0x0012, flags = 0x01.
    **IRP**
    Patching Emulator lis/ori @ 181e8
    AddPageMapEntry: LA = 0xDFFFE000, count = 0x00001, PA = 0x00000000, pageAttr = 0x0012, flags = 0x01.

    nontrivial PME   LA = 0x64000000, count = 0x00180, PA = 0x55600000, pageAttr = 0x0012, flags = 0x00.
    **Universal/DeviceTree area**
    AddPageMapEntry: LA = 0xE4000000, count = 0x00180, PA = 0x55600000, pageAttr = 0x0012, flags = 0x00.

    nontrivial PME   LA = 0x68FEF000, count = 0x00001, PA = 0x00003000, pageAttr = 0x0013, flags = 0x00.
    AddPageMapEntry: LA = 0x68FEF000, count = 0x00001, PA = 0x00003000, pageAttr = 0x0013, flags = 0x00.

    nontrivial PME   LA = 0x68FFE000, count = 0x00001, PA = 0x00000000, pageAttr = 0x0011, flags = 0x02.
    AddPageMapEntry: LA = 0x68FFE000, count = 0x00001, PA = 0x00000000, pageAttr = 0x0011, flags = 0x02.

    nontrivial PME   LA = 0x68FFF000, count = 0x00001, PA = 0x00000000, pageAttr = 0x0012, flags = 0x03.
    AddPageMapEntry: LA = 0x68FFF000, count = 0x00001, PA = 0x00000000, pageAttr = 0x0012, flags = 0x03.

    nontrivial PME   LA = 0x80000000, count = 0x00060, PA = 0x80000000, pageAttr = 0x003A, flags = 0x00.
    AddPageMapEntry: LA = 0x80000000, count = 0x00060, PA = 0x80000000, pageAttr = 0x003A, flags = 0x00.

    nontrivial PME   LA = 0x80060000, count = 0x00001, PA = 0x80060000, pageAttr = 0x003A, flags = 0x00.
    AddPageMapEntry: LA = 0x80060000, count = 0x00001, PA = 0x80060000, pageAttr = 0x003A, flags = 0x00.

    nontrivial PME   LA = 0x80061000, count = 0x0001F, PA = 0x80061000, pageAttr = 0x003A, flags = 0x00.
    AddPageMapEntry: LA = 0x80061000, count = 0x0001F, PA = 0x80061000, pageAttr = 0x003A, flags = 0x00.

    nontrivial PME   LA = 0x80080000, count = 0x00001, PA = 0x80080000, pageAttr = 0x003A, flags = 0x00.
    AddPageMapEntry: LA = 0x80080000, count = 0x00001, PA = 0x80080000, pageAttr = 0x003A, flags = 0x00.

    nontrivial PME   LA = 0x80081000, count = 0x00001, PA = 0x80081000, pageAttr = 0x003A, flags = 0x00.
    AddPageMapEntry: LA = 0x80081000, count = 0x00001, PA = 0x80081000, pageAttr = 0x003A, flags = 0x00.

    nontrivial PME   LA = 0x90000000, count = 0x00010, PA = 0x90000000, pageAttr = 0x003A, flags = 0x00.
    AddPageMapEntry: LA = 0x90000000, count = 0x00010, PA = 0x90000000, pageAttr = 0x003A, flags = 0x00.

    nontrivial PME   LA = 0x90020000, count = 0x00020, PA = 0x90020000, pageAttr = 0x003A, flags = 0x00.
    AddPageMapEntry: LA = 0x90020000, count = 0x00020, PA = 0x90020000, pageAttr = 0x003A, flags = 0x00.

    nontrivial PME   LA = 0xA0000000, count = 0x10000, PA = 0xA0000000, pageAttr = 0x0032, flags = 0x00.
    AddPageMapEntry: LA = 0xA0000000, count = 0x10000, PA = 0xA0000000, pageAttr = 0x0032, flags = 0x00.

    nontrivial PME   LA = 0xF0000000, count = 0x05000, PA = 0xF0000000, pageAttr = 0x003A, flags = 0x00.
    AddPageMapEntry: LA = 0xF0000000, count = 0x05000, PA = 0xF0000000, pageAttr = 0x003A, flags = 0x00.

    nontrivial PME   LA = 0xF5000000, count = 0x00001, PA = 0xF5000000, pageAttr = 0x003A, flags = 0x00.
    AddPageMapEntry: LA = 0xF5000000, count = 0x00001, PA = 0xF5000000, pageAttr = 0x003A, flags = 0x00.

    nontrivial PME   LA = 0xF5001000, count = 0x000FF, PA = 0xF5001000, pageAttr = 0x003A, flags = 0x00.
    AddPageMapEntry: LA = 0xF5001000, count = 0x000FF, PA = 0xF5001000, pageAttr = 0x003A, flags = 0x00.

    nontrivial PME   LA = 0xF5100000, count = 0x00100, PA = 0xF5100000, pageAttr = 0x003A, flags = 0x00.
    AddPageMapEntry: LA = 0xF5100000, count = 0x00100, PA = 0xF5100000, pageAttr = 0x003A, flags = 0x00.

    nontrivial PME   LA = 0xF5200000, count = 0x00200, PA = 0xF5200000, pageAttr = 0x003A, flags = 0x00.
    AddPageMapEntry: LA = 0xF5200000, count = 0x00200, PA = 0xF5200000, pageAttr = 0x003A, flags = 0x00.

    nontrivial PME   LA = 0xF5400000, count = 0x0AC00, PA = 0xF5400000, pageAttr = 0x003A, flags = 0x00.
    AddPageMapEntry: LA = 0xF5400000, count = 0x0AC00, PA = 0xF5400000, pageAttr = 0x003A, flags = 0x00.

    Reinserting the MacOS area delimiters:
    AddPageMapEntry: LA = 0x60000000, count = 0x08000, PA = 0x00000000, pageAttr = 0x0A00, flags = 0x00.
    AddPageMapEntry: LA = 0x60000000, count = 0x08000, PA = 0x00000000, pageAttr = 0x0A00, flags = 0x00.

Copying modified ConfigInfo and HWInfo over the originals.

DebugDumpPageMap
0 000: 0000ffff 00000a00
  008: 0000ffff 00000a00
1 010: 0000ffff 00000a00
  018: 0000ffff 00000a00
2 020: 0000ffff 00000a00
  028: 0000ffff 00000a00
3 030: 0000ffff 00000a00
  038: 0000ffff 00000a00
4 040: 0000ffff 00000a00
  048: 0000ffff 00000a00
5 050: 0000ffff 00000a00
  058: 0000ffff 00000a00
6 060: 00007fff 00000a00
  068: 00007fff 00000a00
  070: 8fef0000 00003013
  078: 8ffe0000 00000011 KDP
  080: 8fff0000 00000012 EDP
  088: 0000ffff 00000a01
  090: 0000ffff 00000a01
  098: 0000ffff 00000a00
7 0a0: 0000ffff 00000a01
  0a8: 0000ffff 00000a01
  0b0: 0000ffff 00000a00
8 0b8: 0000005f 8000003a
  0c0: 00600000 8006003a
  0c8: 0061001e 8006103a
  0d0: 00800000 8008003a
  0d8: 00810000 8008103a
  0e0: 0000ffff 80000a01
  0e8: 0000ffff 00000a00
9 0f0: 0000000f 9000003a
  0f8: 0020001f 9002003a
  100: 0000ffff 90000a01
  108: 0000ffff 00000a00
A 110: 0000ffff a0000032
  118: 0000ffff a0000a01
  120: 0000ffff 00000a00
B 128: 0000ffff b0000a01
  130: 0000ffff 00000a00
C 138: 0000ffff c0000a01
  140: 0000ffff 00000a00
D 148: fffe0000 00000012 IRP
  150: 0000ffff d0000a01
  158: 0000ffff 00000a00
E 160: 4000017f 55600012
  168: 0000ffff e0000a01
  170: 0000ffff 00000a00
F 178: 00004fff f000003a
  180: 50000000 f500003a
  188: 500100fe f500103a
  190: 510000ff f510003a
  198: 520001ff f520003a
  1a0: 5400abff f540003a
  1a8: 0000ffff f0000a01
  1b0: 0000ffff 00000a00


Handing over to the NanoKernel.

  Before/After RAM stats same as the results with the MDD (as expected), so I won't bother with additional screenshots.  BTW, posting this from the 9serve!

Offline MacTron

  • Global Moderator
  • Platinum Member
  • *****
  • Posts: 2116
  • keep it simple
Re: Mac OS 9.2.2 Memory Limit of 1.5 GB... Some Answers
« Reply #114 on: June 04, 2017, 01:26:04 PM »
I just added 256 MB or RAM to my main working computer (a G4 MDD) and I started to do real life test, In this picture we can see Cubase using 1.54 Gb or RAM, (mainly loaded by Kompakt sampler instruments). No problems by now ...  ;D

« Last Edit: June 05, 2017, 08:55:43 AM by MacTron »
Please don't PM about things that are not private.

Offline MacOS Plus

  • Gold Member
  • *****
  • Posts: 418
  • The 9serve Lives!
Re: Mac OS 9.2.2 Memory Limit of 1.5 GB... Some Answers
« Reply #115 on: June 04, 2017, 03:44:49 PM »
  I figured you would be the first to max it out with synths!  When we eventually get the full two gigs, please give us a report on latency. ;)

Offline DieHard

  • Global Moderator
  • Platinum Member
  • *****
  • Posts: 2368
Re: Mac OS 9.2.2 Memory Limit of 1.5 GB... Some Answers
« Reply #116 on: June 04, 2017, 06:42:03 PM »
We should inform the other forums about this !  This is pretty crazy... 15 years after the OS 9 funeral it is getting a genetic overhaul,
128MB might not seem like much until you consider that 128MB is what many users had in the Classic Mac OS era to run OS 9 and all their applications.

In the big scheme of things, this is quite remarkable :)

Offline MacOS Plus

  • Gold Member
  • *****
  • Posts: 418
  • The 9serve Lives!
Re: Mac OS 9.2.2 Memory Limit of 1.5 GB... Some Answers
« Reply #117 on: June 04, 2017, 07:31:31 PM »
  Remember a time when a 128MB DIMM stick wasn't just a leftover at the bottom of your spare pile?  Nostalgic...

Offline ELN

  • Gold Member
  • *****
  • Posts: 295
  • new to the forums
Re: Mac OS 9.2.2 Memory Limit of 1.5 GB... Some Answers
« Reply #118 on: June 04, 2017, 08:10:19 PM »
I just added 256 MB or RAM to my main working computer (a G4 MDD) and I started to do real life test, In this picture we can see Cubase using 1.54 Gb or RAM, (mainly loaded by kompak sampler instruments). No problems by now ...  ;D

This is good to see! We are considering some other ways of pushing the limit even further. It might require us to patch the Process Manager to divide up its heap. It would be very useful for me to know the memory layout on your machine running Cubase.

Would you mind collecting some data for me? A screenshot of this app while Cubase is running, and the details in the Memory panel of the Get Info window for Cubase.

https://www.macintoshrepository.org/1253-memory-mapper-1-5

And by the way, is it possible to enable VM on a machine with 2GB of RAM? Would someone mind checking?

We should inform the other forums about this !

Go for it!

Offline nanopico

  • Moderator
  • Platinum Member
  • *****
  • Posts: 767
Re: Mac OS 9.2.2 Memory Limit of 1.5 GB... Some Answers
« Reply #119 on: June 04, 2017, 08:20:20 PM »
I just added 256 MB or RAM to my main working computer (a G4 MDD) and I started to do real life test, In this picture we can see Cubase using 1.54 Gb or RAM, (mainly loaded by kompak sampler instruments). No problems by now ...  ;D

This is good to see! We are considering some other ways of pushing the limit even further. It might require us to patch the Process Manager to divide up its heap. It would be very useful for me to know the memory layout on your machine running Cubase.

Would you mind collecting some data for me? A screenshot of this app while Cubase is running, and the details in the Memory panel of the Get Info window for Cubase.

https://www.macintoshrepository.org/1253-memory-mapper-1-5

And by the way, is it possible to enable VM on a machine with 2GB of RAM? Would someone mind checking?

We should inform the other forums about this !

Go for it!

If I recall, there is a point where you can no longer turn on virtual memory because you have enough RAM.  I don't recall off the top of my head though.
If it ain't broke, don't fix it, or break it so you can fix it!