mirror of
https://github.com/elliotnunn/mac-rom.git
synced 2024-06-09 15:29:29 +00:00
4325cdcc78
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.
185 lines
7.5 KiB
Plaintext
185 lines
7.5 KiB
Plaintext
;EASE$$$ READ ONLY COPY of file ÒPackBitsPatch.aÓ
|
|
; 1.0 CCH 11/16/1988 Added to EASE.
|
|
; END EASE MODIFICATION HISTORY
|
|
;
|
|
; File PackBitsPatch.a
|
|
;
|
|
; Copyright © 1987 Apple Computer, Inc. All rights reserved.
|
|
;
|
|
; PMA207 17Jul87 EHB Fixed PackBits to work for scanlines > 127 bytes.
|
|
;________________________________________________________________________________
|
|
; NOTICE: When entering patches use the format that is described below...
|
|
;
|
|
; Please read the following description for
|
|
; the Patch Collator. Patch Collator will
|
|
; aid us in finding out where system
|
|
; patches are located. Therefore, making
|
|
; it a little easier to track down rodents!
|
|
;
|
|
;
|
|
; Patch Collator for the Macintosh System Disk
|
|
; ============================================
|
|
;
|
|
; File: patch.c
|
|
; Language: "C"
|
|
;
|
|
; Date: April 16, 1987
|
|
; Revision: 1.0
|
|
; Author: Charlton E. Lui
|
|
;
|
|
; Patch collator is a simple program that scans through files looking for Apple System Patches.
|
|
; It finds a patch comment by finding a header that looks like this...
|
|
;
|
|
; *** One to one mapping of a fix ***
|
|
; Fix File Date Patch# Fix Routine(s) Routine(s) Fixed
|
|
;*AppleSystemPatch DrawPicturePatch.a 08Jul85 #0 (InstallRDrivers) (InstallRDrivers)
|
|
;
|
|
; *** One to many mapping of a fix ***
|
|
; Fix File Date Patch# Fix Routine(s) Routine(s) Fixed
|
|
;*AppleSystemPatch DrawPicturePatch.a 09Dec85 #13 (SoundVBLAddress) (RecoverHandle,ROMBMap)
|
|
;
|
|
; *** Many to one mapping of a fix ***
|
|
; Fix File Date Patch# Fix Routine(s) Routine(s) Fixed
|
|
;*AppleSystemPatch DrawPicturePatch.a 17May86 #47 (FontMgr,DialogMgr) (GetRsrc)
|
|
;
|
|
; *** One to many mapping of a fix ***
|
|
; Fix File Date Patch# Fix Routine(s) Routine(s) Fixed
|
|
;*AppleSystemPatch DrawPicturePatch.a 23Apr86 #43 (BTFlush,BTClose) (BTFlush,BTClose)
|
|
;
|
|
;
|
|
;
|
|
; The examples show the many mappings a fix may have. Each file should have the appropiate ROM
|
|
; version already inserted atop the file so it does not need be entered.
|
|
;
|
|
; WARNING: To make sure the scan works properly, use parenthesis around the routine field(s).
|
|
;
|
|
; This header will be inserted atop of each patch file. Whenever a new patch is entered the person
|
|
; who is entering the patch will copy the header down to the place where they are making the fix
|
|
; and enter the pertinent information.
|
|
;
|
|
; IMPORTANT! Make sure to take out the asterix before the AppleSystemPatch symbol.
|
|
; The "*" was added so that Patch Collator would not mistake the comments above as
|
|
; an actual patch. So delete the "*" before. Also, make sure that there is no
|
|
; space between the ";"(semicolon) and the "AppleSystemPatch" symbol. It should look like this
|
|
; ";AppleSystemPatch".
|
|
;
|
|
; A file will contain a list of names of the main patch files. Patch collator will use
|
|
; MPW's funnel facility to feed the names into the patch collator.
|
|
;
|
|
; PatchCollator < PatchFiles
|
|
;
|
|
; The files will also be scanned for other patch file includes. The included patch files will
|
|
; be added to the list of patch files.
|
|
;
|
|
; Each file will be scanned for patch information and then entered into a binary tree.
|
|
; The binary tree is used to sort the patch list alpabetically. After it finishes,
|
|
; it disposes of all of the nodes of the tree.
|
|
;
|
|
; Patch Collator uses simple parsing techniques. It does not check whether or not the information
|
|
; is correct or not. Patch Collator will leave that for the AI group.
|
|
;
|
|
; Output will contain the information something like this...
|
|
;
|
|
; Files working on...
|
|
; ===================
|
|
; #1) Reading file PatchPlusROM.a
|
|
; Includes patch files for PatchPlusROM.a are as follows...
|
|
; #3) DrawPicturePatch.a
|
|
; #4) TEPatch.a
|
|
; #5) FontMgrPatch.a
|
|
; #6) MenuMgr.a
|
|
; #7) HMenuPatch.Install
|
|
; #2) Reading file PatchSEROM.a
|
|
; Includes patch files for PatchSEROM.a are as follows...
|
|
; #3) DrawPicturePatch.a
|
|
; #6) MenuMgr.a
|
|
; #7) HMenuPatch.Install
|
|
; #3) **Warning - could not open DrawPicturePatch.a
|
|
; #4) **Warning - could not open TEPatch.a
|
|
; #5) **Warning - could not open FontMgrPatch.a
|
|
; #6) **Warning - could not open MenuMgr.a
|
|
; #7) **Warning - could not open HMenuPatch.Install
|
|
; ====================================================================================================
|
|
; *****PATCH COLLATOR*****
|
|
; ====================================================================================================
|
|
;
|
|
; ** Column Condition:
|
|
; ** X means this trap is patched to fix another trap.
|
|
; Y means that this trap is being fixed by a trap ( possibly itself ).
|
|
;
|
|
; Patch List Condition Patch# Fix File Line# Date
|
|
; ====================================================================================================
|
|
;
|
|
; AsynchDrvrs Y #3 PatchPlusROM.a 2348 14Oct85
|
|
; AsynchDrvrs Y #42 PatchPlusROM.a 2302 14Oct85
|
|
; atalk:lap.a X #P019 PatchSEROM.a 2273 23Dec86
|
|
; atalk:nonres.a X #PA073 PatchSEROM.a 2276 2Mar87
|
|
; AutoInt1 X #21 PatchPlusROM.a 1700 01Jan1904
|
|
; BasicIO X #50 PatchPlusROM.a 2540 11Sep86
|
|
; BasicIO Y #50 PatchPlusROM.a 2540 11Sep86
|
|
; BTClose X #43 PatchPlusROM.a 2404 23Apr86
|
|
; BTClose Y #43 PatchPlusROM.a 2404 23Apr86
|
|
;
|
|
; Notice: The files that couldn't be opened will give a warning. This could have resulted in
|
|
; a typo or perhaps the file was not found in the directory.
|
|
;
|
|
;_______________________________________________________________________________________
|
|
|
|
IF (&TYPE('onMac') = 'UNDEFINED') THEN
|
|
onMac EQU 0
|
|
ENDIF
|
|
IF (&TYPE('onMacPP') = 'UNDEFINED') THEN
|
|
onMacPP EQU 0
|
|
ENDIF
|
|
|
|
;
|
|
; Common base addresses
|
|
;
|
|
IF onMac THEN
|
|
ROMPackBits EQU $0040CF8C
|
|
ELSEIF onMacPP THEN
|
|
ROMPackBits EQU $00417708
|
|
ENDIF
|
|
|
|
|
|
NewPackBits PROC EXPORT
|
|
; Fix File Date Patch# Fix Routine(s) Routine(s) Fixed
|
|
;AppleSystemPatch PackBitsPatch.a 01Jan1904 #??? (PackBits) (PackBits)
|
|
;
|
|
;----------------------------------------------------------------
|
|
; This patch to PackBits allows scanlines passed to packBits to be
|
|
; longer than the 127 byte limit that currently exists on all machines
|
|
; except the Mac II.
|
|
;
|
|
; Note that this patch does not pack images exactly the same as a Mac II.
|
|
; (To do so would have taken more code.)
|
|
;
|
|
; STACK: 0:D3(2) 2:RTS(4) 6:count(2) 8:dst(4) 12:src(4)
|
|
|
|
MOVE D3,-(SP) ; save work register
|
|
MOVE 6(SP),D3 ; get number of bytes to pack
|
|
@nextchunk MOVE D3,D0 ; get size
|
|
MOVEQ #127,D1 ; get max chunk size
|
|
SUB D1,D3 ; is chunk too big?
|
|
BLS.S @lastchunk ; => no, do last chunk
|
|
BSR.S @callROM ; and pack last chunk
|
|
BRA.S @nextchunk ; => repeat for next chunk
|
|
|
|
@lastchunk MOVE D0,D1 ; get size of last chunk
|
|
BSR.S @callROM ; and pack last chunk
|
|
MOVE (SP)+,D3 ; restore work register
|
|
MOVE.L (SP)+,A0 ; get return address
|
|
ADD #10,SP ; strip params
|
|
JMP (A0) ; and return
|
|
|
|
@callROM MOVE.L 12+4(SP),-(SP) ; push src
|
|
MOVE.L 8+8(SP),-(SP) ; push dst
|
|
MOVE D1,-(SP) ; push count
|
|
JSR ROMPackBits ; call the ROM
|
|
RTS ; return to caller
|
|
|
|
|
|
ENDPROC
|
|
|
|
|