Commit Graph

39 Commits

Author SHA1 Message Date
Elliot Nunn
a2598146d1 mucking around 2017-12-26 09:36:08 +08:00
Elliot Nunn
35d10f2b06 Use placeholder files to create BuildResults/
Running the Make/CreateBuildResultsFolders script after a clone, or
after clobbering BuildResults/, was a pain. Now a clean build can be
guaranteed with:

rm -rf BuildResults
git checkout BuildResults
2017-12-26 09:28:58 +08:00
Elliot Nunn
860d8e2302 Annotate ExpandMemRec field offsets 2017-12-12 10:34:11 +08:00
Elliot Nunn
cce70c2315 Build Slot Mgr from source
(Slot Mgr is for compatibility only on PCI Macs.)
2017-11-27 11:04:25 +08:00
Elliot Nunn
d5615091e0 Correct names of NK Event Group wrapper code
The names of the NanoKernel MP calls made by this 68k ROM library were
found by inspecting the PowerPC MPLibrary, which makes these and many
other MP calls. The document "Adding Multitasking Capability to
Applications Using Multiprocessing Services" gave some background
information. It also helped to determine the function signatures of the
MP calls and of these ROM wrappers.
2017-11-27 11:04:24 +08:00
Elliot Nunn
3226ee4220 Reverse the Universal Info table
This was tricky. The table seems to be vestigial, anyway.
2017-11-27 11:04:24 +08:00
Elliot Nunn
59cdc89312 Build MMU.lib from sources
The sources needed no changes (how embarrassing), except to remove an
unnecessary dependence on a nonexistent SoundPrivate.a. Lastly.lib had
an incorrect position for SIDESOUNDBUFFER, which has been fixed.
2017-11-27 11:04:24 +08:00
Elliot Nunn
42c4fdcc5f Remove branch islands
The unlinker's new ISLANDGUESS HIDE' option removes autogenerated BSR.L
from the binary dumps and makes tweaks that will cause them to be
regenerated by the linker. MPW's linker seems to have the correct branch
island placement policy, because round-tripping is preserved. When
building from edited sources, there is a remote possibility that the
arrangement of branch islands inside a dumped file will be changed,
disrupting references within that file.
2017-11-27 11:04:24 +08:00
Elliot Nunn
3921dbd4a3 Correctly reverse Standard and Interface libs
Previously these were lumped in with Lastly. Now they are unlinked and
correctly labelled, and Lastly contains only a small amount of PowerPC-
specific code.
2017-11-27 11:04:23 +08:00
Elliot Nunn
e7fd9a4d3e Declare between-file branches
The unlink tool now REFGUESSes branches between object files, with some
manual guidance. If you patch the ROM enough to change its function
offsets, it should still work fine.

(One potential exception: if the linker needs to put a new "BSR.L"
island module *within* a pre-built object file, that module file's
internal references *may* be disrupted. This situation is fairly
unlikely, but with improved reversal it will be addressed.)
2017-11-27 11:04:23 +08:00
Elliot Nunn
b92720ecc8 Build Data Access Mgr stub from source
Turns out, the source was just a stub for PACK 13
2017-11-27 11:04:23 +08:00
Elliot Nunn
a7076d28b9 Switch to new unlinker
"DeVectorize" was a hideous several-thousand-line Python script that
split 70% of the ROM into barely passable MPW object files. The new
unlinker, "unlink", produces much nicer files and enjoys a clean
separation of code from data. Using DumpObj, you can get a very readable
listing of a given object file (GoNativeROMLib.o has improved a great
deal). With a bit more work, unlink will be superior to FDisasm for all
68k Mac ROM reversal.
2017-11-27 11:04:22 +08:00
Elliot Nunn
6500e0d0a6 Make Vectorize more robust 2017-11-27 11:04:08 +08:00
Elliot Nunn
3fd8dde36b Shrink Vectorize buffer and use MemoryMgr calls
This lets the build run in Mini vMac (8 MB Mac II). For some reason, calloc can't create buffers as large as NewPtr.
2017-10-30 16:54:57 +08:00
Elliot Nunn
3d17253346 Add missing code to CQD
The ROM now round-trips with QuickDraw mostly built from source.
(~30% of the ROM is now built from source.)
2017-10-11 20:33:53 +08:00
Elliot Nunn
b295a57713 Clean QuickDraw lurkers
Only three monolithic chunks of code to go!
2017-10-09 15:46:40 +08:00
Elliot Nunn
cf23aad670 Crack QuickDraw
That is to day, put *something* in its place with the right length and
symbol locations. Now we can be sure that no incorrect bytes are due to
confused branch instructions, and therefore that they must all be fixed.
2017-10-09 12:37:27 +08:00
Elliot Nunn
1833036a99 Reverse roughly to 81838 2017-10-08 23:26:23 +08:00
Elliot Nunn
1a0bf7c4ad Reverse TextEdit 2017-10-07 20:25:07 +08:00
Elliot Nunn
10e586a0ec Reverse printing glue 2017-10-07 19:30:19 +08:00
Elliot Nunn
debed6c064 Identify Expansion Bus Manager entry points
The ExpansionBusDispatch trap (AAF3) is implemented in ROM using a
DispatchHelper table. Using a header from the embryonic Expansion Bus Mgr in
CubeE (rather suspect) and from the Universal Interfaces (solid), the names of
24 of the 47 dispatch selectors have been found. This commit updates the
dumped ExpansionBusMgr.lib with new symbol names.

All but two of the 47 dispatch selectors are Vectorized, so this commit also
updates VectorTable.a with selector numbers and, where possible, names. The
two non-Vectorized dispatch selectors (27 and 28) both point to the same 'nop'
function immediately before ExpansionBusDispatch.
2017-10-07 12:30:01 +08:00
Elliot Nunn
bc7aa41f2e Identify trap AA7F as _MPDispatch 2017-10-04 17:51:30 +08:00
Elliot Nunn
8198d61f3b Fix typos in suggested NK log code 2017-10-04 17:43:46 +08:00
Elliot Nunn
2415ed21b7 Make the final ROM link depend on the actual linker
Now the linker (RomLayout) does not need to be built manually.
2017-09-26 00:13:22 +08:00
Elliot Nunn
3e6f715fc8 Consider GoNativeResources worthy of a 'rsrc' type 2017-09-26 00:05:43 +08:00
Elliot Nunn
3d67e9358c Correct the hard-coded DeclData build date
The ROM now round-trips perfectly (cf. Mac OS ROM 9.6.1).
2017-09-26 00:04:19 +08:00
Elliot Nunn
a4bb805064 Add RomLayout, the ROM postlinker 2017-09-26 00:00:58 +08:00
Elliot Nunn
695baf22a7 Update list of resources in ROM 2017-09-25 23:58:16 +08:00
Elliot Nunn
745bc8d17e Dump new resources in updated ROM 2017-09-25 23:55:42 +08:00
Elliot Nunn
e016ae9469 Update declarative ROM resources 2017-09-25 23:52:41 +08:00
Elliot Nunn
9ce52d6bfb Get InSANE (PACKs 4 and 5) building
Only had to add it to the reconstructed Toolbox.make
2017-09-25 22:22:08 +08:00
Elliot Nunn
22821c555c Update SANE (PACK 7) and get it building
SANE is the Standard Apple Numeric Environment (a float library deprecated in
favour of the native PowerPC float unit). The only change to the PACK 7
resource was in the vicinity of a _StripAddress call. SANE also had to be
added to the reconstructed Toolbox.make file.
2017-09-25 22:19:24 +08:00
Elliot Nunn
05d70e6d1f Update the EDisk (RAM Disk) driver 2017-09-25 13:49:58 +08:00
Elliot Nunn
7deeb23f98 Add RomLink, a bytecode interpreter
The "RomLink" bytecode language can be used to link a tree of binary chunks
into a flat file. The bytecode specifying each binary chunk lives in a
Resource Manager resource. The RomLink's only purpose is to flatten
DeclData.rsrc into a "Slot 0" (motherboard) DeclData, so it seems like
overkill. Nonetheless, DeclData.rsrc is very complicated (and so are its
antecedents, DeclData.r and the include file RomLink).

This implementation is incomplete. It is just enough to build the vestigial
DeclROM that TNT and later machines retain for Open Transport.
2017-09-25 00:25:16 +08:00
Elliot Nunn
d934e7e93c Add a script to convert line endings between Mac (CR) and Unix (LF) formats
ConvertLineEndings acts only on TEXT files, so run SuggestFileTypes first.
Then:

:Make:ConvertLineEndings > "{TempFolder}FixLines" ; "{TempFolder}FixLines"

ConvertLineEndings is both an MPW script and a C program. The script builds
the fast MPW C Tool, and suggests a command that will use the Tool to fix all
the line endings in the repository.
2017-09-23 23:16:09 +08:00
Elliot Nunn
de930505f5 Add scripts to make a git-mangled repo buildable
CreateBuildResultsFolders is necessary because git does not track empty
directories (fair enough) despite the build system requiring their presence.

SuggestFileTypes is necessary because git does not track Finder metadata.

Both scripts are flexible in how they are run and robust -- important in a
newly cloned repo.
2017-09-20 20:10:19 +08:00
Elliot Nunn
9f1fa052dc Build updated MainCode image (matches Mac OS ROM 9.6.1+) 2017-09-20 19:58:54 +08:00
Elliot Nunn
64c9515a18 Reimplement the Vectorize tool 2017-09-20 19:54:25 +08:00
Elliot Nunn
0ba83392d4 Bring in CubeE sources
Resource forks are included only for .rsrc files. These are DeRezzed into their data fork. 'ckid' resources, from the Projector VCS, are not included.

The Tools directory, containing mostly junk, is also excluded.
2017-09-20 18:04:16 +08:00