Split off Cube-E/NewWorld hackery

This commit is contained in:
Elliot Nunn 2019-04-16 11:32:02 +08:00
parent 80bb3c8f35
commit 70f17034d2
8 changed files with 71732 additions and 0 deletions

View File

@ -0,0 +1,192 @@
From: Horst Beepmanh <>
Subject: Include-file shims
Generally in line with my tolerance of theoretical impurity. Some
"header" files had their name changed, and this allows them to be
accessed using the old name.
---
diff --git a/Interfaces/AIncludes/ATalkEqu.a b/Interfaces/AIncludes/ATalkEqu.a
new file mode 100644
--- /dev/null
+++ b/Interfaces/AIncludes/ATalkEqu.a
@@ -0,0 +1 @@
+ INCLUDE 'AppleTalk.a'
diff --git a/Interfaces/AIncludes/ATalkEqu.a.idump b/Interfaces/AIncludes/ATalkEqu.a.idump
new file mode 100644
--- /dev/null
+++ b/Interfaces/AIncludes/ATalkEqu.a.idump
@@ -0,0 +1 @@
+TEXTMPS
\ No newline at end of file
diff --git a/Interfaces/AIncludes/PackMacs.a b/Interfaces/AIncludes/PackMacs.a
new file mode 100644
--- /dev/null
+++ b/Interfaces/AIncludes/PackMacs.a
@@ -0,0 +1 @@
+ INCLUDE 'Packages.a'
diff --git a/Interfaces/AIncludes/PackMacs.a.idump b/Interfaces/AIncludes/PackMacs.a.idump
new file mode 100644
--- /dev/null
+++ b/Interfaces/AIncludes/PackMacs.a.idump
@@ -0,0 +1 @@
+TEXTMPS
\ No newline at end of file
diff --git a/Interfaces/AIncludes/PaletteEqu.a b/Interfaces/AIncludes/PaletteEqu.a
new file mode 100644
--- /dev/null
+++ b/Interfaces/AIncludes/PaletteEqu.a
@@ -0,0 +1 @@
+ INCLUDE 'Palettes.a'
diff --git a/Interfaces/AIncludes/PaletteEqu.a.idump b/Interfaces/AIncludes/PaletteEqu.a.idump
new file mode 100644
--- /dev/null
+++ b/Interfaces/AIncludes/PaletteEqu.a.idump
@@ -0,0 +1 @@
+TEXTMPS
\ No newline at end of file
diff --git a/Interfaces/AIncludes/PrEqu.a b/Interfaces/AIncludes/PrEqu.a
new file mode 100644
--- /dev/null
+++ b/Interfaces/AIncludes/PrEqu.a
@@ -0,0 +1 @@
+ INCLUDE 'Printing.a'
diff --git a/Interfaces/AIncludes/PrEqu.a.idump b/Interfaces/AIncludes/PrEqu.a.idump
new file mode 100644
--- /dev/null
+++ b/Interfaces/AIncludes/PrEqu.a.idump
@@ -0,0 +1 @@
+TEXTMPS
\ No newline at end of file
diff --git a/Interfaces/AIncludes/PrintCallsEqu.a b/Interfaces/AIncludes/PrintCallsEqu.a
new file mode 100644
--- /dev/null
+++ b/Interfaces/AIncludes/PrintCallsEqu.a
@@ -0,0 +1 @@
+ INCLUDE 'PrintTrapsEqu.a'
diff --git a/Interfaces/AIncludes/PrintCallsEqu.a.idump b/Interfaces/AIncludes/PrintCallsEqu.a.idump
new file mode 100644
--- /dev/null
+++ b/Interfaces/AIncludes/PrintCallsEqu.a.idump
@@ -0,0 +1 @@
+TEXTMPS
\ No newline at end of file
diff --git a/Interfaces/AIncludes/QDOffscreenEqu.a b/Interfaces/AIncludes/QDOffscreenEqu.a
new file mode 100644
--- /dev/null
+++ b/Interfaces/AIncludes/QDOffscreenEqu.a
@@ -0,0 +1 @@
+ INCLUDE 'QDOffscreen.a'
diff --git a/Interfaces/AIncludes/QDOffscreenEqu.a.idump b/Interfaces/AIncludes/QDOffscreenEqu.a.idump
new file mode 100644
--- /dev/null
+++ b/Interfaces/AIncludes/QDOffscreenEqu.a.idump
@@ -0,0 +1 @@
+TEXTMPS
\ No newline at end of file
diff --git a/Interfaces/AIncludes/QuickEqu.a b/Interfaces/AIncludes/QuickEqu.a
new file mode 100644
--- /dev/null
+++ b/Interfaces/AIncludes/QuickEqu.a
@@ -0,0 +1 @@
+ INCLUDE 'QuickDraw.a'
diff --git a/Interfaces/AIncludes/QuickEqu.a.idump b/Interfaces/AIncludes/QuickEqu.a.idump
new file mode 100644
--- /dev/null
+++ b/Interfaces/AIncludes/QuickEqu.a.idump
@@ -0,0 +1 @@
+TEXTMPS
\ No newline at end of file
diff --git a/Interfaces/AIncludes/SCSIEqu.a b/Interfaces/AIncludes/SCSIEqu.a
new file mode 100644
--- /dev/null
+++ b/Interfaces/AIncludes/SCSIEqu.a
@@ -0,0 +1 @@
+ INCLUDE 'SCSI.a'
diff --git a/Interfaces/AIncludes/SCSIEqu.a.idump b/Interfaces/AIncludes/SCSIEqu.a.idump
new file mode 100644
--- /dev/null
+++ b/Interfaces/AIncludes/SCSIEqu.a.idump
@@ -0,0 +1 @@
+TEXTMPS
\ No newline at end of file
diff --git a/Interfaces/AIncludes/ScriptEqu.a b/Interfaces/AIncludes/ScriptEqu.a
new file mode 100644
--- /dev/null
+++ b/Interfaces/AIncludes/ScriptEqu.a
@@ -0,0 +1 @@
+ INCLUDE 'Script.a'
diff --git a/Interfaces/AIncludes/ScriptEqu.a.idump b/Interfaces/AIncludes/ScriptEqu.a.idump
new file mode 100644
--- /dev/null
+++ b/Interfaces/AIncludes/ScriptEqu.a.idump
@@ -0,0 +1 @@
+TEXTMPS
\ No newline at end of file
diff --git a/Interfaces/AIncludes/ShutDownEqu.a b/Interfaces/AIncludes/ShutDownEqu.a
new file mode 100644
--- /dev/null
+++ b/Interfaces/AIncludes/ShutDownEqu.a
@@ -0,0 +1 @@
+ INCLUDE 'ShutDown.a'
diff --git a/Interfaces/AIncludes/ShutDownEqu.a.idump b/Interfaces/AIncludes/ShutDownEqu.a.idump
new file mode 100644
--- /dev/null
+++ b/Interfaces/AIncludes/ShutDownEqu.a.idump
@@ -0,0 +1 @@
+TEXTMPS
\ No newline at end of file
diff --git a/Interfaces/AIncludes/SlotEqu.a b/Interfaces/AIncludes/SlotEqu.a
new file mode 100644
--- /dev/null
+++ b/Interfaces/AIncludes/SlotEqu.a
@@ -0,0 +1 @@
+ INCLUDE 'Slots.a'
diff --git a/Interfaces/AIncludes/SlotEqu.a.idump b/Interfaces/AIncludes/SlotEqu.a.idump
new file mode 100644
--- /dev/null
+++ b/Interfaces/AIncludes/SlotEqu.a.idump
@@ -0,0 +1 @@
+TEXTMPS
\ No newline at end of file
diff --git a/Interfaces/AIncludes/ToolEqu.a b/Interfaces/AIncludes/ToolEqu.a
new file mode 100644
--- /dev/null
+++ b/Interfaces/AIncludes/ToolEqu.a
@@ -0,0 +1 @@
+ INCLUDE 'ToolUtils.a'
diff --git a/Interfaces/AIncludes/ToolEqu.a.idump b/Interfaces/AIncludes/ToolEqu.a.idump
new file mode 100644
--- /dev/null
+++ b/Interfaces/AIncludes/ToolEqu.a.idump
@@ -0,0 +1 @@
+TEXTMPS
\ No newline at end of file
diff --git a/Interfaces/AIncludes/VideoEqu.a b/Interfaces/AIncludes/VideoEqu.a
new file mode 100644
--- /dev/null
+++ b/Interfaces/AIncludes/VideoEqu.a
@@ -0,0 +1 @@
+ INCLUDE 'Video.a'
diff --git a/Interfaces/AIncludes/VideoEqu.a.idump b/Interfaces/AIncludes/VideoEqu.a.idump
new file mode 100644
--- /dev/null
+++ b/Interfaces/AIncludes/VideoEqu.a.idump
@@ -0,0 +1 @@
+TEXTMPS
\ No newline at end of file
diff --git a/Internal/Asm/DecompressorPatchEqu.a b/Internal/Asm/DecompressorPatchEqu.a
new file mode 100644
--- /dev/null
+++ b/Internal/Asm/DecompressorPatchEqu.a
@@ -0,0 +1 @@
+ INCLUDE 'Decompression.a'
diff --git a/Internal/Asm/DecompressorPatchEqu.a.idump b/Internal/Asm/DecompressorPatchEqu.a.idump
new file mode 100644
--- /dev/null
+++ b/Internal/Asm/DecompressorPatchEqu.a.idump
@@ -0,0 +1 @@
+TEXTMPS
\ No newline at end of file
--
2.18.0

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,880 @@
From: Horst Beepmanh <>
Subject: Filthy hacks for NewWorld ROM
---
diff --git a/Make/System.make b/Make/System.make
--- a/Make/System.make
+++ b/Make/System.make
@@ -165,26 +165,10 @@ ResourceFiles = ∂
"{MiscDir}APTK57.rsrc" ∂
LinkedPatchObjs = ∂
- "{ObjDir}PatchProtector.a.o" ∂
- "{ObjDir}ProcessManagerSegmentTweaks.a.o" ∂
- "{ObjDir}SCSILinkPatch.a.o" ∂
- "{ObjDir}FileMgrPatches.a.o" ∂
- "{ObjDir}LaterFileMgrPatches.a.o" ∂
- "{ObjDir}AllB&WQDPatch.a.o" ∂
- "{ObjDir}Mouse.a.o" ∂
- "{ObjDir}ResourceMgrPatches.a.o" ∂
- "{ObjDir}SonyPatches.a.o" ∂
- "{ObjDir}BrightnessPatches.a.o" ∂
- "{ObjDir}MMUPatches.a.o" ∂
- "{ObjDir}MenuMgrPatch.a.o" ∂
- "{ObjDir}MenuMgrPatchII.a.o" ∂
- "{ObjDir}SlotMgrPatch.a.o" ∂
- "{ObjDir}SlotMgrInit.a.o" ∂
- "{ObjDir}SlotMgr.a.o" ∂
- "{ObjDir}DialogMgrPatches.a.o" ∂
- "{ObjDir}QuickDrawPatches.a.o" ∂
- "{ObjDir}WindowMgrPatches.a.o" ∂
+ "{LibDir}HelpMgr.lib" ∂
+ "{LibDir}IconUtils.lib" ∂
"{IfObjDir}interface.o" ∂
+ "{Libraries}Runtime.o" ∂
"{ObjDir}TrashTalk.a.o"
diff --git a/OS/StartMgr/Boot3.a b/OS/StartMgr/Boot3.a
--- a/OS/StartMgr/Boot3.a
+++ b/OS/StartMgr/Boot3.a
@@ -459,6 +459,21 @@ kDALCreator equ 'dald' ; <12>
BootCode MAIN
+ MOVEQ #19,D0 ; Clear low bit of ECR19 to turn off DR
+ DC.W $FE04 ; _MoveFromECR
+ MOVE.L A0,D1
+ BCLR #1,D1
+ MOVE.L D1,A0
+ DC.W $FE05 ; _MoveToECR
+
+
+ lea @thestring,a0
+ move.l #96,d0
+ dc.w $fe1f
+ bra.s @afterwards
+ string c
+@thestring dc.b 'Hello from the System 7 boot3 resource^n'
+@afterwards
; Registers passed in from boot blocks:
; A3 = handle to this resource
@@ -512,7 +527,16 @@ CheckForPreGibblySystem
btst #systemEnabledBit,ExtensionsEnabledByte
beq.s @gibblyPresent
moveq #dsOldSystem,d0
- _SysError
+
+ lea @thestring,a0
+ move.l #96,d0
+ dc.w $fe1f
+ bra.s @afterwards
+ string c
+@thestring dc.b 'CheckForPreGibblySystem failed^n'
+@afterwards
+
+; _SysError
@gibblyPresent
; ——————————————————————————————————————————————————————————————————————————————————————————————————
@@ -588,6 +612,18 @@ ShowStartupScreen
; Now, do the welcome screen.
bsr EraseMyIcon
+
+
+ lea @thestring,a0
+ move.l #96,d0
+ dc.w $fe1f
+ bra.s @afterwards
+ string c
+@thestring dc.b 'Got past EraseMyIcon^n'
+@afterwards
+
+
+
moveq #dsGreeting,d0 ; put up the greeting
_SysError
@@ -653,6 +689,14 @@ FixMMUTypeAndKillMemoryDispatch
; according to a calculated Clock rate (25 or 33Mhz currently). <SAM>
+ lea @thestring,a0
+ move.l #96,d0
+ dc.w $fe1f
+ bra.s @afterwards
+ string c
+@thestring dc.b 'Got to CheckFor040CacheInhibit^n'
+@afterwards
+
CheckFor040CacheInhibit ; <5> SAM
CMPI.B #cpu68040,cpuFlag ; Are we on an 040?
@@ -705,12 +749,28 @@ CheckFor040CacheInhibit ; <5> SAM
; ——————————————————————————————————————————————————————————————————————————————————————————————————
+ lea @thestring,a0
+ move.l #96,d0
+ dc.w $fe1f
+ bra.s @afterwards
+ string c
+@thestring dc.b 'Got to InstallDispatch^n'
+@afterwards
+
; Install the new dispatcher for systems that need it.
import InstallDispatch
jsr InstallDispatch
;——————————————————————————————————————————————————————————————————————————————————————————————————
+XXXXXXX
+ lea @thestring,a0
+ move.l #96,d0
+ dc.w $fe1f
+ bra.s @afterwards
+ string c
+@thestring dc.b 'Got to CheckForExtensionsDisabled^n'
+@afterwards
CheckForExtensionsDisabled
@@ -853,6 +913,14 @@ RememberPhysicalMemTop
; ——————————————————————————————————————————————————————————————————————————————————————————————————
+ lea @thestring,a0
+ move.l #96,d0
+ dc.w $fe1f
+ bra.s @afterwards
+ string c
+@thestring dc.b 'Got to DoWeHaveEnoughRAMToBoot^n'
+@afterwards
+
DoWeHaveEnoughRAMToBoot
; Weve got to have at least minRAMNeeded to get 7.0 on its feet. minRAMNeeded was chosen
@@ -890,6 +958,14 @@ LoadTemporaryStripAddress
@done
; ——————————————————————————————————————————————————————————————————————————————————————————————————
+ lea @thestring,a0
+ move.l #96,d0
+ dc.w $fe1f
+ bra.s @afterwards
+ string c
+@thestring dc.b 'Got to LoadVMAndDebugger^n'
+@afterwards
+
LoadVMAndDebugger
; Load VM and MacsBug, but do it in a different order if Joes debugging signature is found.
@@ -976,6 +1052,14 @@ CleanUpBootPort
; ——————————————————————————————————————————————————————————————————————————————————————————————————
+ lea @thestring,a0
+ move.l #96,d0
+ dc.w $fe1f
+ bra.s @afterwards
+ string c
+@thestring dc.b 'Got to RelocateBootWorld^n'
+@afterwards
+
RelocateBootWorld
; If VM has added memory to the machine, relocate all the boot stuff to the new MemTop/2 <10>
@@ -1129,6 +1213,14 @@ LoadFileSystemCache
; ——————————————————————————————————————————————————————————————————————————————————————————————————
+ lea @thestring,a0
+ move.l #96,d0
+ dc.w $fe1f
+ bra.s @afterwards
+ string c
+@thestring dc.b 'Got to LoadPTCHZero^n'
+@afterwards
+
LoadPTCHZero
MOVEQ #0,D0 ; load patches for all ROMs
@@ -1149,9 +1241,9 @@ LoadPTCHROMSpecific
; *** obsolete, get rid of this eventually
- MOVEA.L ROMBase,a0 ; ID = ROM version number
- MOVE.W 8(A0),D0 ; load ROM-specific patch
- BSR LoadPTCH
+; MOVEA.L ROMBase,a0 ; ID = ROM version number
+; MOVE.W 8(A0),D0 ; load ROM-specific patch
+; BSR LoadPTCH
LoadLinkedPatches
lea LinkedPatchName,a0
@@ -1198,6 +1290,14 @@ LoadLinkedPatches
_SysError
@done
+ lea @thestring,a0
+ move.l #96,d0
+ dc.w $fe1f
+ bra.s @afterwards
+ string c
+@thestring dc.b 'Got to LoadPTCHROMSpecific ... actually i killed that^n'
+@afterwards
+
; ——————————————————————————————————————————————————————————————————————————————————————————————————
@@ -1219,6 +1319,14 @@ TestForNeedToReset
; ——————————————————————————————————————————————————————————————————————————————————————————————————
+ lea @thestring,a0
+ move.l #96,d0
+ dc.w $fe1f
+ bra.s @afterwards
+ string c
+@thestring dc.b 'Got to SetupProcessMgrLaunch^n'
+@afterwards
+
SetupProcessMgrLaunch
; So that old code that patches Launch will still work, we point the Launch trap to the code used
@@ -1314,6 +1422,14 @@ LoadINITResourcesInSystemFile
; ——————————————————————————————————————————————————————————————————————————————————————————————————
+ lea @thestring,a0
+ move.l #96,d0
+ dc.w $fe1f
+ bra.s @afterwards
+ string c
+@thestring dc.b 'Got to LoadAROSE^n'
+@afterwards
+
LoadAROSE
; Load A/ROSE.
@@ -1335,21 +1451,37 @@ LoadAROSE
; ——————————————————————————————————————————————————————————————————————————————————————————————————
+ lea @thestring,a0
+ move.l #96,d0
+ dc.w $fe1f
+ bra.s @afterwards
+ string c
+@thestring dc.b 'Got to LoadAppleTalk^n'
+@afterwards
+
LoadAppleTalk
; Load AppleTalk from System.
- btst.b #hwCbAUX,HWCfgFlags ; are we under A/UX?
- bnz.s @noALAP
-
- move.l #'lmgr',d5 ; call common routine to load and execute resource <29>
- clr.w d6
- clr.w d3 ; clear the DontCloseOnError flag
- bsr ExecuteFromSystem ; <34>
-@noALAP
+; btst.b #hwCbAUX,HWCfgFlags ; are we under A/UX?
+; bnz.s @noALAP
+;
+; move.l #'lmgr',d5 ; call common routine to load and execute resource <29>
+; clr.w d6
+; clr.w d3 ; clear the DontCloseOnError flag
+; bsr ExecuteFromSystem ; <34>
+;@noALAP
; ——————————————————————————————————————————————————————————————————————————————————————————————————
+ lea @thestring,a0
+ move.l #96,d0
+ dc.w $fe1f
+ bra.s @afterwards
+ string c
+@thestring dc.b 'Got to LoadNetBoot^n'
+@afterwards
+
LoadNetBoot ; <33>
; Load NetBoot.
@@ -1385,6 +1517,14 @@ LoadNetBoot ; <33>
; ——————————————————————————————————————————————————————————————————————————————————————————————————
+ lea @thestring,a0
+ move.l #96,d0
+ dc.w $fe1f
+ bra.s @afterwards
+ string c
+@thestring dc.b 'Got to LoadSystemComponents^n'
+@afterwards
+
LoadSystemComponents ; <9>
; Register any components lurking in the system file <9>
@@ -1402,9 +1542,30 @@ LoadSystemComponents ; <9>
@skipThings
+
+ForceBalloons
+ lea @thestring,a0
+ move.l #96,d0
+ dc.w $fe1f
+ bra.s @afterwards
+ string c
+@thestring dc.b 'Got to LoadSystemComponents^n'
+@afterwards
+
; ——————————————————————————————————————————————————————————————————————————————————————————————————
+GapHerePlease
+
+ lea @thestring,a0
+ move.l #96,d0
+ dc.w $fe1f
+ bra.s @afterwards
+ string c
+@thestring dc.b 'Got to LoadINITFiles^n'
+@afterwards
+
LoadINITFiles
+ bra @skipINITs
; This section searches the default volume for files of type cdev, RDEV
; and INIT. When it finds one, it opens it and attempts to Get1IndResource
@@ -1472,6 +1633,15 @@ LoadINITFiles
; ——————————————————————————————————————————————————————————————————————————————————————————————————
+FontsOverNet
+ lea @thestring,a0
+ move.l #96,d0
+ dc.w $fe1f
+ bra.s @afterwards
+ string c
+@thestring dc.b 'Got to _AddScriptFonts^n'
+@afterwards
+
; Now that networks are usable, give script systems a chance to install fonts over the network. <14>
subq #2,sp ; make room for OSErr result
@@ -1481,11 +1651,29 @@ LoadINITFiles
;------------------------------------------------------------------------------------------------
+TellTSMStuff
+ lea @thestring,a0
+ move.l #96,d0
+ dc.w $fe1f
+ bra.s @afterwards
+ string c
+@thestring dc.b 'Got to TSM^n'
+@afterwards
+
; Go tell text services manager what the system script is and what its default language is
- bsr TellTSMScriptAndLanguage
+; bsr TellTSMScriptAndLanguage
; ——————————————————————————————————————————————————————————————————————————————————————————————————
+SetNewPtrStartup
+ lea @thestring,a0
+ move.l #96,d0
+ dc.w $fe1f
+ bra.s @afterwards
+ string c
+@thestring dc.b 'Got to set SetNewPtrStartup^n'
+@afterwards
+
; Switch from the boot-time NewPtrStartup to one that returns an error. <30>
move.l BootGlobals.postBootNewPtrStartup(a5),a0
@@ -1494,6 +1682,15 @@ LoadINITFiles
; ——————————————————————————————————————————————————————————————————————————————————————————————————
+NoMoreTwoHeaps
+ lea @thestring,a0
+ move.l #96,d0
+ dc.w $fe1f
+ bra.s @afterwards
+ string c
+@thestring dc.b 'Got to _RsrcZoneInit^n'
+@afterwards
+
; We still have two heaps. We are going to get minSysHeapFreeAfterBoot bytes, even if it
; means growing the system heap again. This time, though, well stop reserving anything,
; and take as much as we need.
@@ -1512,6 +1709,15 @@ LoadINITFiles
; is used to start the Process Mgr. Any patches to Launch will be executed, followed by the Process
; Mgr. itself.
+DoTheMF
+ lea @thestring,a0
+ move.l #96,d0
+ dc.w $fe1f
+ bra.s @afterwards
+ string c
+@thestring dc.b 'Got to MultiFinder^n'
+@afterwards
+
clr.w -(sp) ; for the wierdos who look
clr.l -(sp) ; we pass the parameters like the old launch
pea #'MultiFinder' ; (rest in peace)
@@ -1567,6 +1773,15 @@ StartProcessMgr
SUB.W #processMgrStackSize,A0 ; make space for stack
_SetApplLimit ; set the new limit
+ lea @thestring,a0
+ move.l #96,d0
+ dc.w $fe1f
+ bra.s @afterwards
+ string c
+@thestring dc.b 'Start the Process Mgr^n'
+@afterwards
+
+
; Start the Process Mgr.
rts
@@ -2943,6 +3158,16 @@ EndCachesOffMFMPatch EQU *
EndOfBootCode
+BLAT proc export
+ move.l 4(sp),a0
+ add.l #1,a0
+ move.l #96,d0
+ dc.w $fe1f
+ move.l (sp),a0
+ addq #8,sp
+ jmp (a0)
+
+
; ——————————————————————————————————————————————————————————————————————————————————————————————————
end
diff --git a/Patches/BeforePatches.a b/Patches/BeforePatches.a
--- a/Patches/BeforePatches.a
+++ b/Patches/BeforePatches.a
@@ -513,6 +513,16 @@ RAMSysInit PROC EXPORT
Move.L D1,-(SP) ;save our handle
+ lea @thestring,a0
+ move.l #96,d0
+ dc.w $fe1f
+ bra.s @afterwards
+ string c
+@thestring dc.b 'started ptch 0^n'
+@afterwards
+BarrierHere
+
+
;#####################################################################################
; P001 P027 24Jan87 JTC Allocate extended memory for international folks.
; This is not a patch, but it belongs in line.
@@ -558,7 +568,17 @@ RAMSysInit PROC EXPORT
_DisposPtr ; still in a0 after move <29June89smb>
beq.s @noSpandex ; exit if everything is ok <7>
-@ErrorXit _SysError ; <24Aug89smb>
+@ErrorXit
+
+ lea @thestring,a0
+ move.l #96,d0
+ dc.w $fe1f
+ bra.s @afterwards
+ string c
+@thestring dc.b '@ErrorXit^n'
+@afterwards
+
+ _SysError ; <24Aug89smb>
@MakeExpandMem
clr.l ExpandMem ; aka BasicGlob
@@ -573,6 +593,16 @@ RAMSysInit PROC EXPORT
@noSpandex ; skip around when no room
+ lea @thestring3,a0
+ move.l #96,d0
+ dc.w $fe1f
+ bra.s @afterwards3
+ string c
+@thestring3 dc.b 'done with expandmem^n'
+@afterwards3
+
+
+
;____________________________________________________________________________________
; Jam system version number. <PP149>
move.w #SysVers,SysVersion ; jam sys version number <v1.1>
@@ -595,6 +625,16 @@ RAMSysInit PROC EXPORT
@appleTalkIsActive
+Bazza
+
+ lea @thestring3,a0
+ move.l #96,d0
+ dc.w $fe1f
+ bra.s @afterwards3
+ string c
+@thestring3 dc.b 'atlk done^n'
+@afterwards3
+
;____________________________________________________________________________________
; Install the keyboard translation code.
@@ -662,6 +702,15 @@ RAMSysInit PROC EXPORT
@badError
; A serious error occurred somewhere. Do that crazy system bomb thing.
+
+ lea @thestring2,a0
+ move.l #96,d0
+ dc.w $fe1f
+ bra.s @afterwards2
+ string c
+@thestring2 dc.b '@ErrorXit^n'
+@afterwards2
+
move.l #dsSysErr,d0 ; pick system bomb number.
_SysError ; pow, biff, boffo.
@doneInit
@@ -687,43 +736,6 @@ RAMSysInit PROC EXPORT
@1
;######################### DeCompressor INSTALLATION ********#####################
-
- IMPORT OldCheckLoadJump,MyCheckLoad
- Lea OldCheckLoadJump+2,A0 ; < Denman 1/17/90 >
- Move.L jCheckLoad,(A0) ; store the old address in our code
-
-; Set new trap address to this ptr
-
- Lea MyCheckLoad,A0 ; compute the address of the patch code.
- Move.L A0,jCheckLoad ; stuff in my checkLoad hook.
-
-; Fix the BIND's to ROM addresses for the Decompressor (SizeRsrc patch).
-
- FixROMAddresses ; bind the addresses
-
-; install our patch to _SizeRsrc.
-
- PatchOSJump Read,$A002 ;Remember the old address of _Read.
- InstOSTp ReadDecompression,$A002 ;set the read trap to ReadDecompression
-
-; loop through all the open resource files, and clear the alternate attributes byte
-; then, set it for the system file
-
-SetupResourceFileAttributes
- move.l TopMapHndl,a0 ;start with the first map
-@next
- move.l a0,d0 ;are we done?
- bz.s @done
- move.l (a0),a0 ;get the map pointer
- bclr #decompressionPasswordBit,mInMemoryAttr(a0) ; <25> clear the flags for this map
- move.l mNext(a0),a0 ;go on to the next map
- bra.s @next
-@done
- move.l SysMapHndl,a0 ;get the system map
- move.l (a0),a0
- bset #decompressionPasswordBit,mInMemoryAttr(a0) ; allow dcmps here
- bset #dontCountOrIndexDuplicatesBit,mInMemoryAttr(a0) ; <23> Dont count duplicate resources in the System file
- bset #twoDeepBit,mInMemoryAttr(a0) ; <24> One deep calls on the System file will search two (or more) maps.
;#####################################################################################
;######################### A/UX CONDITIONAL INSTALLATION ********#####################
@@ -731,10 +743,30 @@ SetupResourceFileAttributes
; Patches in this group are bypassed when running on A/UX.
+FixRomEtc
+ lea @thestring3,a0
+ move.l #96,d0
+ dc.w $fe1f
+ bra.s @afterwards3
+ string c
+@thestring3 dc.b 'adb?^n'
+@afterwards3
+
+
MOVE.W HwCfgFlags,D0 ; check em the compulsive way <PPyyy>
BTST #hwCbAUX,D0 ; is it A/UX time? <PPyyy>
BNE skipOSInstalls ; if so skip this OS stuff <PPyyy>
+FixRomEtc2
+ lea @thestring3,a0
+ move.l #96,d0
+ dc.w $fe1f
+ bra.s @afterwards3
+ string c
+@thestring3 dc.b 'adb stuff^n'
+@afterwards3
+
+
;############################################################################# <6>
; Install ADBReInitPatch - Save old jADBProc and put ADBReInitPatch addr in
; jADBProc. Only do this on ADB machines!
@@ -755,6 +787,14 @@ SetupResourceFileAttributes
;#####################################################################################
skipOSInstalls ; end of the line for OS/hardware <PPyyy>
+ lea @thestring3,a0
+ move.l #96,d0
+ dc.w $fe1f
+ bra.s @afterwards3
+ string c
+@thestring3 dc.b 'DONE^n'
+@afterwards3
+
;#####################################################################################
;############################### END INSTALL CODE ####################################
;#####################################################################################
diff --git a/ProcessMgr/MenuMgrPatches.c b/ProcessMgr/MenuMgrPatches.c
--- a/ProcessMgr/MenuMgrPatches.c
+++ b/ProcessMgr/MenuMgrPatches.c
@@ -69,6 +69,9 @@
#include "Script.h"
#include "Language.h"
+#pragma parameter blat(__A0)
+void blat(char *str) = {0x7060, 0xFE1F};
+
/* -----------------------------------------------------------------------------
*
* Data and prototypes.
@@ -1101,18 +1104,25 @@ InitSystemMenus(void)
register MenuHandle menuHdl;
Str255 itemText;
+ Debugger();
+ blat("InitMenus^n");
/* Reach an understanding with the Menu Mgr */
InitMenus();
+ blat("InitAppleMenuList^n");
/* Set up the Apple menus list */
InitAppleMenuList();
+ DebugStr("\pdid InitAppleMenuList");
+ blat("-HMInitHelpMenu^n");
/* Let the Help Mgr install the Help menu */
- HMInitHelpMenu();
+ //HMInitHelpMenu();
+ blat("-InitKeybdMenu^n");
/* Let international install the Keyboard menu */
- (void) InitKeybdMenu();
+// (void) InitKeybdMenu();
+ blat("Get process list menu^n");
/* Get process list menu */
if ((ApplicationMenuHdl = menuHdl = GetResource('MENU', kApplicationMenuID)) == nil)
{
@@ -1127,8 +1137,9 @@ InitSystemMenus(void)
GetItem(menuHdl, HIDE_APP_ITEM, &itemText);
hHideCurrent = NewString(itemText);
+ blat("InsertMenu^n");
/* Place it in the bar as the far right-hand (system) menu */
- InsertMenu(menuHdl, 0);
+ //InsertMenu(menuHdl, 0);
/* Set up the suites for the generic icons (we only ever need small icons) */
SetResLoad(false);
diff --git a/ProcessMgr/Startup.c b/ProcessMgr/Startup.c
--- a/ProcessMgr/Startup.c
+++ b/ProcessMgr/Startup.c
@@ -98,6 +98,9 @@ void FloatKernelUp(void);
void FloatEppcUp(void);
void FloatAUXUp(void);
+#pragma parameter blat(__A0)
+void blat(char *str) = {0x7060, 0xFE1F};
+
main(void)
{
LaunchResults finderLaunchResults;
@@ -105,11 +108,18 @@ main(void)
HighLevelEventRecord theEvent;
FSSpec finderSpec;
+ blat("I am the Process Manager!^n");
+ blat("...and this is a second line^n");
+
_DataInit(); /* Initialize our global data */
InitializeEnvironment(); /* Adjust machine environment to our liking */
+ blat("InitializeEnvironment done^n");
InstallPatches(); /* Install our patches */
+ blat("InstallPatches done^n");
InitializeScheduler(); /* Initialize our global structures */
+ blat("PM made it past basic init^n");
+
/* Locate Process Mgr's scrap handle BEFORE launches */
ourScrapHdl = SCRAPHANDLE;
@@ -120,6 +130,8 @@ main(void)
if ((EXTENSIONSENABLEBYTE & (1 << ExtensionsEnabledBit)) != 0)
LaunchFacelessTasks();
+ blat("launched faceless tasks!^n");
+
THEZONE = ProcessMgrZone;
if ((finderLaunchResults.LaunchError = FSMakeFSSpec(BOOTVOL, 0, FINDERNAME, &finderSpec)) == noErr)
StandardLaunch(&finderSpec, launchUseMinimum, 0, nil, &finderLaunchResults, nil);
@@ -127,6 +139,8 @@ main(void)
/* Quick Restore: Have to set zone to sys to do _UnloadSeg correctly */
THEZONE = SYSZONE; CURMAP = SYSMAP; TOPMAPHANDLE = GetOverrideMap(SYSMAPHANDLE);
+ blat("about to know if finder launch failed...^n");
+
/* Bomb box if the Finder launch failed */
if (finderLaunchResults.LaunchError != noErr)
SysError(dsFinderErr);
@@ -236,13 +250,17 @@ InitializeEnvironment(void)
/* Save initial location zero before we call any traps that might change it! */
initLocationZero = LOCATIONZERO;
+ blat("Pre InitConfig^n");
/* Get configuration information */
InitConfig();
+ blat("Post InitConfig^n");
/* Get table of switchable low memory locations (in System Heap) */
+ blat("Pre GetSwitchTab^n");
GetSwitchTab();
/* Expand the zone up to the APPLLIMIT */
+ blat("Pre MaxApplZone^n");
MaxApplZone();
/* initialize the scrap, if necessary */
@@ -252,11 +270,13 @@ InitializeEnvironment(void)
THEZONE = APPLZONE;
/* Unload data init seg and release its CODE resource (to get it out of map). */
+ blat("Pre UnloadSeg/ReleaseResource^n");
pCodeEntry = _DataInit;
UnloadSeg(pCodeEntry);
ReleaseResource(GET_SCOD_HDL_FROM_FNC_PTR(pCodeEntry));
/* Set up dynamic heaps */
+ blat("Pre InitHeaps^n");
InitHeaps();
THEZONE = SYSZONE;
@@ -293,8 +313,11 @@ InitializeEnvironment(void)
/* Initialize window manager in system heap ('cause it's shared in our patch)
* NOTE: Calls InitFonts for InitWindow's sake on older machines.
*/
+ blat("Pre InitFonts^n");
InitFonts();
+ blat("Pre InitWindows^n");
InitWindows();
+ blat("Pre GetCurLayer^n");
MFLayer = GetCurLayer();
IMLayer = nil;
THEZONE = APPLZONE;
@@ -306,9 +329,11 @@ InitializeEnvironment(void)
#endif HAS_AUX_PROCESSMGR
/* We want to run from the boot volume. */
+ blat("Pre SetVol^n");
SetVol(nil, BOOTVOL);
/* Set up volume notification mechanism */
+ blat("Pre VNInit^n");
VNInit();
}
@@ -401,6 +426,8 @@ InitializeScheduler(void)
*/
THEZONE = SYSZONE;
+ blat("strings...^n");
+
/* Get menu strings for scrap coercion */
hdl = Get1Resource('STR#',-16414);
pStrListCopyNamePrefix = (hdl == nil) ? nil : *((StrListHdl)hdl);
@@ -433,6 +460,8 @@ InitializeScheduler(void)
THEZONE = APPLZONE;
RsrcZoneInit();
+ blat("menu time^n");
+
/* Switch to SYSZONE because any of the _GetResource calls below could move
* memory within the call, which is a problem for the rsrc mgr routine
* CheckLoad(). It saves and restores THEZONE, but our heap can move so restoring
@@ -467,8 +496,10 @@ InitializeScheduler(void)
standardMenuDefProcRsrc = (Handle) StripAddress(realMDefHdl);
}
+ blat("InitSystemMenus^n");
/* Insert the system menus now that we have the MDEF */
- InitSystemMenus();
+ //InitSystemMenus();
+ blat("...good^n");
/* Get rid of useless font width tables, etc. Must be done after InitSystemMenus,
* because menu installers need font info set up.
diff --git a/Toolbox/HelpMgr/BalloonExtensions.a b/Toolbox/HelpMgr/BalloonExtensions.a
--- a/Toolbox/HelpMgr/BalloonExtensions.a
+++ b/Toolbox/HelpMgr/BalloonExtensions.a
@@ -60,7 +60,7 @@ HelpMgrTesting EQU 0
;
;___________________________________________________________________________________
-HelpMgrInstall InstallProc
+HelpMgrInstall InstallProc (SuperMario)
IMPORT ptchHMBootInitHelpManager
IMPORT ptchHMGestaltIsThereHelp
@@ -113,7 +113,7 @@ HMProblemMessage
;
;___________________________________________________________________________________
-Pack14Entry PatchProc _Pack14
+Pack14Entry PatchProc _Pack14, (SuperMario)
IMPORT ptchHMPascalGetBalloons
diff --git a/Toolbox/IconUtils/IconUtils.a b/Toolbox/IconUtils/IconUtils.a
--- a/Toolbox/IconUtils/IconUtils.a
+++ b/Toolbox/IconUtils/IconUtils.a
@@ -590,7 +590,7 @@ EXIT MOVEA.L (SP), A1
; IconDispatch - dispatcher for all Icon utilities.
;----------------------------------------------------------------------------------
-IconDispatch BeginDispatcher $ABC9,(Plus,SE,II,Portable,IIci)
+IconDispatch BeginDispatcher $ABC9,(Plus,SE,II,Portable,IIci,SuperMario)
DispatchSelectors __PlotIconID=selectPlotIconID
DispatchSelectors __GetIconSuite=selectGetIconSuite
diff --git a/Toolbox/MenuMgr/MenuMgrExtensions.a b/Toolbox/MenuMgr/MenuMgrExtensions.a
--- a/Toolbox/MenuMgr/MenuMgrExtensions.a
+++ b/Toolbox/MenuMgr/MenuMgrExtensions.a
@@ -25,7 +25,7 @@
; Set the low memory bit
-InvalMenuBar PatchProc _InvalMenuBar,(Plus,SE,II,Portable,IIci)
+InvalMenuBar PatchProc _InvalMenuBar,(Plus,SE,II,Portable,IIci,SuperMario)
bset #MenuBarInvalidBit,MenuBarInvalidByte ; set the invalid bit
rts
--
2.18.0

View File

@ -0,0 +1,34 @@
I tried to get System 7.1 (Cube-E) running on top of a NewWorld ROM in
QEMU. It was really fun. Some observations follow...
The NewWorld ROM is recognised as a SuperMario ROM ($077D).
The Linked Patches are easier to work with than they look. Just add an
object file to LinkedPatchObjs that takes advantage of the
LinkedPatchMacros (InstallProc, PatchProc, leaResident...) and the
loader will make sure it becomes part of the System. Let there be no
doubt, the Linked Patches are an integral part of System 7. They should
be RE'd.
Relatively little of the on-disk System deals with hardware directly.
The ROM kinda-sorta acts as a hardware abstraction layer. Only it has
heaps of bugs and missing features that need to be worked around. For
example, I expected hardware interrupts to ruin everything but this
didn't happen.
MacsBug works! It's a bit nicer than spamming the NanoKernel log.
MacsBug did eventually start giving me nonsense explanations for
software exceptions. I thought this could be worked around by disabling
the DR emulator, but this seemingly had no effect.
Developing the System *and* the ROM at the same time must have been a
huge relief for the NewWorld devs. Being unable to edit the ROM directly
(because my build system wasn't set up) was very frustrating.
Things that I couldn't figure out: Balloon Help wouldn't install despite
much massaging, and this tripped up the Process Mgr. The global MenuList
was, at a later stage, getting corrupted and I couldn't figure that out.
Skipping over it, eventually the Memory Manager and Trap Dispatcher
would die.
It was great fun! Definitely worth revisiting later.