mirror of
https://github.com/elliotnunn/supermario.git
synced 2024-12-01 18:50:30 +00:00
217 lines
11 KiB
Plaintext
217 lines
11 KiB
Plaintext
;
|
||
; File: ScriptMgrUtil.a (formerly SMgrUtil.a)
|
||
;
|
||
; Contains: Script Manager dispatcher and utility routines
|
||
;
|
||
; Written by: Joe Ternasky, September 13, 1986
|
||
;
|
||
; Copyright: © 1986-1990, 1992 by Apple Computer, Inc., all rights reserved.
|
||
;
|
||
; Change History (most recent first):
|
||
;
|
||
; <8> 4/30/92 JSM ScriptMgrDispatch.a and ScriptMgrKeyGetSet.a now compiled
|
||
; separately for ROM builds, don’t include them here, get rid of
|
||
; conditionals: smgrUseStdExit is always true. This file has no
|
||
; more conditionals.
|
||
; <7> 5/24/90 PKE Reorganized files: Moved ScriptUtil dispatcher and FontScript,
|
||
; Font2Script, IntlScript to new file ScriptMgrDispatch.a. This is
|
||
; included here (ptch 4) for 6.x, and included in
|
||
; ScriptMgrExtTail.a (ptch 27) for 7.0. In the latter case, we
|
||
; still have the BitBucket routines here because they are used by
|
||
; the RomanUtil dispatcher.
|
||
; <6> 5/11/90 PKE Expand dispatch table for new internal routine _AddScriptFonts.
|
||
; <5> 5/5/90 PKE Expand dispatch table for new internal routines InitScripts and
|
||
; InitKeybdMenu.
|
||
; <4> 4/10/90 PKE Use smgrSysVers, smgrROMVers, and forRom symbols instead of
|
||
; buildLevel. Deleted conditionalized definition of SysVers. Moved
|
||
; KeyScript, Get/SetEnvirons, and Get/SetScript into separate file
|
||
; ScriptMgrKeyGetSet.a which is included here. Started organizing
|
||
; for ROMification of 7.0 extensions. Add export of FontScript,
|
||
; IntlScript, Font2Script.
|
||
; <3> 3/20/90 EMT Removed unnecessary ROM85 references and oldMacTweek code.
|
||
; <2> 3/19/90 PKE Always export BitBucket and BitBucketReg. Use new feature
|
||
; conditionals smgrUseStdExit and smgrUseDispTablePtr. Deleted old
|
||
; definition: if forRom undefined, then forRom equ 0. Updated
|
||
; header to BBS format and fixed tabs.
|
||
; <1> 12/18/89 CCH Adding for the first time into BBS. Changed include 'inc.sum.a'
|
||
; to load 'StandardEqu.d'. Updated file name references.
|
||
;
|
||
; (BBS versions above, EASE versions below:)
|
||
; <2.7> 9/18/89 PKE Move KeyScript to ptch 27 so we can make a bug fix in itlk
|
||
; processing for both old and new ROMs. Change its vector here to
|
||
; be a dummy and stuff real address in ptch 27.
|
||
; <2.6> 9/17/89 PKE For 7.0, move Get/SetEnvirons and Get/SetScript to ptch 27.
|
||
; Change the vectors for these routines to be dummy vectors here;
|
||
; ptch 27 will stuff the real addresses.
|
||
; <2.5> 9/15/89 PKE Put in dummy vectors for TruncText, TruncString, ReplaceText,
|
||
; and, yes, NFindWord again (we'll allow a direct call with
|
||
; explicit specification of the break table, but the normal
|
||
; FindWord call won't use this vector). Use smLowCall60x instead
|
||
; of smLowCall for SysVers < $700, due to the fact that we can't
|
||
; conditionalize ScriptEqu.a (it is part of a dumpfile).
|
||
; <2.4> 9/5/89 PKE Delete the NFindWord vector space from the dummy address table
|
||
; created in 2.3, since we now have a different mechanism for
|
||
; getting to NFindWord.
|
||
; <2.3> 9/4/89 PKE Add dummy addresses for 7.0 routines to utilTable, to force
|
||
; allocation of space in dispatch table pointed to by
|
||
; smgrDispTable. The real routine addresses will be filled in
|
||
; later by SMgrExtTail.a (ptch 27).
|
||
; <2.2> 8/26/89 PKE Cleaned up some conditionals.
|
||
; <2.1> 8/22/89 SES Removed references to nFiles.
|
||
; <2.0> 6/30/89 PKE NEEDED FOR AURORA: Optimize table access in Get/SetEnvirons and
|
||
; Get/SetScript (from code review).
|
||
; <1.9> 6/23/89 PKE Add four verbs to GetScript/SetScript which correspond to new
|
||
; font&size information in ScriptRecord; skip definition of
|
||
; buildLevel (done in ScriptEqu.priv).
|
||
; <1.8> 6/5/89 PKE Fix comments in CommonMapping, (ROM & 7.0 only) change a bgt to
|
||
; a bpl
|
||
; <1.7> 4/26/89 PKE (ROM & 7.0 only) Change _ScriptUtil to use dispatch tables in
|
||
; RAM, accessed through pointer/limits in SmgrRecord.
|
||
; <1.6> 3/8/89 PKE Change a BEQ.S to BEQ so Big Bang builds.
|
||
; <1.5> 3/5/89 PKE Use KeyScript patch from KeyHack.a for Big Bang (as well as ROM)
|
||
; <1.4> 2/21/89 PKE Replaced with RomProj version, which already had system and Rom
|
||
; sources merged.
|
||
; (EASE ROMproj history below)
|
||
; <1.5> 2/21/89 PKE Fix up includes: always use include 'inc.sum.a'.
|
||
; <1.4> 2/14/89 PKE Updated to use MPW 3.0 final ScriptEqu.a equate names
|
||
; <1.3> 2/3/89 PKE Merged with current system sources (CCH's 01/16/1989 merge of
|
||
; 6.0.3 and 7.0 sources, done in RES.sys:smgr)
|
||
; <1.2> 11/14/88 PKE Synchronize EASE and Projector
|
||
; <1.1> 11/11/88 CCH Fixed Header.
|
||
; <1.0> 11/9/88 CCH Adding to EASE.
|
||
; (old EASE ROMproj history below)
|
||
; <1.7> 10/27/88 LDC Mods by Carl Hewitt and Brian McGhie in the process of putting
|
||
; Script Manager in ROM
|
||
; (EASE SYSproj history below)
|
||
; <1.3> 2/14/89 PKE Updated to use MPW 3.0 final ScriptEqu.a equates
|
||
; <1.2> 1/30/89 PKE Fixed end of GetEnvirons to do "move.l d0,result(a6)" for all
|
||
; systems, not just SysVers>=$700.
|
||
; <1.1> 1/16/89 CCH Merged 6.0.3 final sources into 7.0.
|
||
; <1.0> 11/16/88 CCH Added to EASE.
|
||
; (pre-EASE history below)
|
||
; 10/10/88 ldc Added code to handle itlk resource
|
||
; 10/5/88 ldc Changed scriptFlags to scriptXFlags
|
||
; ** Changes above for ROM or buildLevel 2: **
|
||
; 6/24/88 ldc Added checking for EastAsian private verbs
|
||
; 5/19/88 ldc Added StdUnlink and StdExit
|
||
; 4/27/88 ldc Began vectorization of routines for move to ROM
|
||
; 1/27/88 med Rotate if Alternate scripts doesn't work; cleaned up flow of
|
||
; control
|
||
; 1/27/88 med CommonMapping: use faster test for non-Roman; use moveq instead
|
||
; of move.w
|
||
; 1/27/88 med ChgFont not tested properly in StdTxMeas!!!
|
||
; 1/6/88 med Added dispatch for FindScriptRun, PortionText
|
||
; 1/4/88 med Moved clear of selector high bit to under appTweak flag
|
||
; 1/4/88 med Strip high bit in bit-bucket routine
|
||
; 11/16/87 med Added dispatches
|
||
; 11/10/87 med Merged public verbs from RomanUtil into GetScript/SetScript
|
||
; 11/10/87 med Added BitBucketReg export
|
||
; 11/10/87 med Removed AISTweeks
|
||
; 11/10/87 med Fix IntlScript to force non-romans to system script, too
|
||
; 8/18/87 med Added smCharPortion verb
|
||
; 7/7/87 med Added verb entry in table for GetEnvirons of smGenFlags,
|
||
; smOverride
|
||
; 1/13/87 jdt Changed environment verb smAppScript to smLastScript. Modified
|
||
; KeyScript and added last script meta-number for quick toggling
|
||
; between two scripts.
|
||
; 12/23/86 jdt Changed name of KeyScript and fixed a deadly bug where a4 was
|
||
; used instead of a1 to find the Script Manager globals.
|
||
; 12/22/86 jdt Added the smBidirect verb to the GetEnvirons/SetEnvirons calls.
|
||
; Changed stack frames to include argument sizes. Saved space in
|
||
; GetEnvirons/SetEnvirons. Added constant for last environment
|
||
; verb. Fixed OldParamTable's Transliterate entry. Changed
|
||
; compatibility flag names. Saved space in aisTweaks tables.
|
||
; 12/3/86 jdt Added another check for old AIS script system (1.0). Additional
|
||
; code braketed by compatability flags.
|
||
; 11/25/86 jdt Added aisTweaks flags around Arabic 1.0 compatability hacks.
|
||
; Added appTweaks flags around application compatability hacks.
|
||
; 11/21/86 MED Added GetThePort macro in FontScript and IntlScript.
|
||
; 11/20/86 jdt Replaced standard equates load.
|
||
; 11/17/86 KWK Handles both old->new and new->old re-ordering of routines.
|
||
; 11/16/86 KWK Backwards compatibility is NEVER pretty. Added check for
|
||
; ScriptUtil called w/old-style selector. Added check for call to
|
||
; old AIS script system (1.0). Handles re-org of selector values.
|
||
; 10/25/86 jdt Reorganized the routine selectors. Added result and argument
|
||
; lengths to selectors. Conditional assembly directives around
|
||
; previous change.
|
||
; 10/24/86 KWK Sometimes programming isn't pretty...force 104 to Kanji so Excel
|
||
; works correctly (doesn't look for high fonds when setting up
|
||
; font dialog).
|
||
; 10/1/86 KWK Always toggle keyboard in KybdScript even if same as before.
|
||
; 9/14/86 JDT Threaded FontScript, IntlScript, and Font2Script together.
|
||
; 9/13/86 JDT Broke out ScriptUtil routines from initialization code.
|
||
;___________________________________________________________________________________________________
|
||
; To Do (old):
|
||
; Extend number of calls handled directly by script manager.
|
||
; Remove aisTweaks for AIS 1.0 sometime in the near future.
|
||
; Remove msTweaks for Microsoft sometime in the near future.
|
||
; Remove mpwTweaks for MPW sometime in the near future.
|
||
;___________________________________________________________________________________________________
|
||
|
||
load 'StandardEqu.d'
|
||
include 'ScriptPriv.a'
|
||
|
||
blanks on
|
||
string asis
|
||
|
||
proc
|
||
export StdUnlink, StdExit ; standard exit points
|
||
|
||
;<5/19/88ldc> Added StdUnlink StdExit
|
||
; ----------------------------------------------------------------------------
|
||
; StdUnlink, StdExit
|
||
; Standard point of return for script manager routines.
|
||
; Input
|
||
; d0 := number of arguments passed to returning routine
|
||
; sp := address of jump target routine
|
||
; ----------------------------------------------------------------------------
|
||
StdUnlink
|
||
unlk a6 ; unlink the stack.
|
||
StdExit
|
||
move.l (sp)+,a0 ; pop return address.
|
||
add.w d0,sp ; pop arguments.
|
||
jmp (a0) ; restore the stack.
|
||
; -------------------------End of StdExit-------------------------------------
|
||
|
||
endproc
|
||
|
||
proc
|
||
export BitBucket, BitBucketReg ; always export <2>
|
||
|
||
; ----------------------------------------------------------------------------
|
||
; routine BitBucket
|
||
; input (sp) return address
|
||
; 4(sp) selector
|
||
; function clean up stack and bail from routine
|
||
; ----------------------------------------------------------------------------
|
||
|
||
BitBucket
|
||
move.l (sp)+,a0 ; pop the return address.
|
||
move.l (sp)+,d0 ; pop the selector value.
|
||
; drop thru
|
||
|
||
; ----------------------------------------------------------------------------
|
||
; routine BitBucketReg
|
||
; input a0 return address
|
||
; d0 selector
|
||
; function clean up stack and bail from routine
|
||
; ----------------------------------------------------------------------------
|
||
|
||
BitBucketReg
|
||
swap d0 ; load the lengths.
|
||
clr.l d1 ; clear a long.
|
||
move.b d0,d1 ; isolate arguments length.
|
||
lsr.w #8,d0 ; isolate results length.
|
||
and.w #$7F,d0 ; strip high bit <1/4/88med>
|
||
add.w d1,sp ; pop the arguments.
|
||
move.l sp,a1 ; copy the stack pointer.
|
||
bra.s @2 ; enter loop at bottom.
|
||
@1 clr.b (a1)+ ; clear a byte.
|
||
@2 dbra d0,@1 ; do the next byte.
|
||
jmp (a0) ; return to the caller.
|
||
|
||
endProc
|
||
|
||
end
|
||
|