mac-rom/Internal/Asm/ScriptPriv.a
2017-12-26 09:52:54 +08:00

1674 lines
75 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

;
; File: ScriptPriv.a (formerly ScriptEqu.priv)
;
; Contains: Private equates for Script Manager, private shared equates for
; script systems, and private equates for the Roman Script System.
;
; Written by: KWK Ken Krugler
; JDT Joe Ternasky
; MED Mark Davis
; LDC Lee Collins
; PKE Peter Edberg
; SMB Sue Bartalo
; YS Yishai Steinhart
;
; Copyright: © 1986-1992 by Apple Computer, Inc., all rights reserved.
;
; Change History (most recent first):
;
; <SM9> 12/1/92 CSS Update from Reality:
; <74> 11/17/92 PKE Move the equates needed to build itl4Roman.a into a separate
; file IntlResourcesPriv.a, which we can give to localizers along
; with itl4Roman.a (so we don't give out ScriptPriv.a). For now,
; include IntlResourcesPriv.a here as well.
; <SM8> 11/10/92 CSS Update from Reality:
; <73> 10/16/92 PKE Move the _SCxxx trap names (and selectors) back here until we
; can get rid of them, since the public interfaces will contain
; the new names per New IM.
; <SM7> 10/28/92 SWC Changed ScriptEqu.a->Script.a.
; <SM6> 7/7/92 CSS Update from Reality:
; <72> 6/26/92 SMB #1033660,<kst>: The flags being set for Simplified Chinese TSM
; components is incorrect. Changed from $9300 to $9900. (see
; SimpChineseFlags) Added some additional equates for component
; flags and masks for the kbd menu.
; <71> 6/17/92 SMB #1024950,<cv>: Added indices for strings in About Keyboards
; dialogs.
; <SM5> 7/1/92 RB Updated the version of the Script Manager in ROM, since
; SuperMario is Cube-E based.
; <70> 6/1/92 PKE #1031279: This depends on ScriptEqu.a, so include it (no effect
; on objects).
; <69> 5/19/92 PKE #1030321,<jh>: Add interface for private direct access to
; existing NFindScriptRun routine.
; <68> 5/14/92 PKE #1027061,<ha>: Add interface for private ScriptToRange routine
; that returns resource ID range for a script.
; <67> 5/14/92 PKE #1029395,<bbm>: Move FindScriptTable record here (where it
; belongs) from ScriptMgrExtensions.a.
; <66> 5/10/92 SMB #1026551,<pke>: Freed space that used to contain
; sVectOldDrawMenuBar in smgrRecord since no longer patching
; DrawMenuBar in the SMgr (added this in Cube-E b1 and are
; removing it in b2). Renamed kDefaultInputMethodID to
; kDefaultIMIconID.
; <65> 5/10/92 SMB #1026551,<ksm>: Added kDefaultInputMethodID constant. Added
; smKeySynchKbdMenuState.
; <64> 4/10/92 SMB #1026551,<pke>: Added vector, sVectOldDrawMenuBar, in smgrRecord
; for patch to DrawMenuBar.
; <63> 4/8/92 PKE #1026516,<cv>: Move SCxxx interfaces for some ScriptMgr routines
; from private interfaces (here) to public (ScriptEqu.a). Other
; changes: (1) Needed for #1026551, define smgrAppDisableKybds
; field in SMgrAppRecord (to keep keyboard disable state in Script
; Mgr app globals); (2) Needed for #1026778, define scriptID field
; in ScriptRecord so we can get script ID from ScriptRecord in
; FindWord and elsewhere.
; <62> 4/5/92 PKE #1025317,<csd>: Expand fixed space at beginning of SMgrAppRecord
; for use by one-byte extension.
; <61> 4/3/92 SMB #1019369,<pke>: Add HaveOldJapanIMbit bit value. Changed
; smKeyDisabState to smKeyDisableState.
; <60> 2/10/92 JH ScriptRecord was spelled with all lowercase in the
; scriptSystemRecord that was brought over for Japanese input
; method compatibility. Changed so its case is consistent with
; the other mentions of ScriptRecord.
; <59> 2/5/92 YS Added some of the universal one byte privete get/set script
; verbs (smScriptSysBase, smScriptAppBase,smScriptFntBase).
; <58> 1/15/92 SMB Add a new field to the keyboard menu records. Add constants for
; processing of input methods. #1019369: updated smLastEVerb to
; smKeyDisabState to correspond to new GetEnvirons verb,
; smgrDisableKybds, to return keyboard disabled state.
; <57> 12/11/91 SMB For Cube-E, renamed AuxKeyboardMenuInfo members and
; KCHRInstalledRec (is now ItemInstalledRec) with new names. Added
; itemInfo to both records for component identifier. Reordered
; members in AuxKeyboardMenuInfo. Renamed scriptRecord's
; scriptKCHRCount member to scriptInputCount.
; <56> 12/6/91 PKE #1017161: Make TestLetter available through private Script Mgr
; selector, for use by script systems. Change smLowCall to match.
; <55> 12/3/91 PKE For Cube-E, change Script Mgr version to $710. Add macro for
; SCParseTable (implementation already exists).
; <54> 10/28/91 PKE Add macros for SCLowerText, SCStripText, SCCharByte, SCCharType,
; SCFindWord (the implementations already exist).
; <53> 10/16/91 PKE For Cube-E (and Bruges): Increment Script Mgr version number.
; <52> 10/8/91 PKE For Cube-E (and Bruges): Reserve 5 Script Mgr selectors for
; Unicode translation routines (not implemented yet). Add selector
; and/or macro for new (currently private) routines RealScript,
; Font2RealScript, SCLwrString, SCTransliterate (needed for bugs
; #1013149, #1012949); change smLowCall accordingly. Clean up some
; more conditionals; change some "smgr>=$700" to "NOT forRom",
; since we still have to rearrange other source files before we
; can build all 7.0 changes into ROMs.
; <51> 10/2/91 YS changed 'smgrIntlMode' (in SMgrRecord) to 'smgrUnivInstalled'.
; changed a reserved (last in ScriptRecord) to 'scriptQDPatches'.
; <50> 9/24/91 PKE Eliminate some conditionals for pre-7.0 versions, other
; cleanups.
; <49> 9/5/91 JH fixed so all forRom conditionals are spelled with the same case
; (i.e. forRom ) two were previously spelled ForROM, while the
; rest were spelled forRom. Made dealing with CASE ON/CASE OFF
; simpler.
; <48> 8/22/91 JSM Clean up header.
; <47> 2/1/91 PKE JSM,#81409: Changes in JustDatRec to support bug fix and
; cleanups in RomanNewJust.a.
; <46> 1/30/91 gbm sab, #38: Change the Ôalready including this fileÕ variable to
; all uppercase (for security reasons)
; <45> 1/14/91 PKE (stb) Made changes to JustDataRec needed for fixes to NDrawJust
; etc. Added ClientLLRecord and ThPrWidthTable. Use formerly
; reserved field in SMgrRecord for smgrClientLLRecHndl, handle to
; ClientLLRecord. Added macro for private FindCharInSet routine
; from Kevin M; this routine will be used by Dialog Mgr & Finder.
; Corrected some comments.
; <44> 1/7/91 SMB (JDR) approved the last change!
; <43> 1/7/91 SMB Adding a new byte that indicates whether the Keyboard Menu is
; displayed (rather than use the smgrKeyboardMenuPtr for this)
; since the Keyboard menu structures have to always exist so the
; KeyScript verb "NextKeybdInScript" is meaningful (and
; functions!). Changing the default keyboard marker to a null.
; <42> 12/14/90 SMB (csd) I forgot the approval signature for the previous change.
; <41> 12/14/90 SMB Moved KeyScript verb, smKeyModalDialog, here and renamed it
; smKeyDisableAboutKybds. Also added new KeyScript verb
; smKeyEnableAboutKybds. Fixes bug #74905.
; <40> 12/10/90 PKE (VL) Add macro for private _ReInitScripts routine to be called
; after net booting switches system files. It cleans up Script Mgr
; data structures based on resources in old file, then calls
; _InitScripts to set up new structures based on current file.
; Also, renamed smgrIconFlag2 field (formerly reserved) of
; SMgrRecord to smgrKeyScriptResult, since we now use it to
; indicate KeyScript result.
; <39> 8/24/90 PKE Remove smgrCharExtra and smgrSlop from SMgrRecord, since they
; have been replaced by qdChExtra and qdRunSlop in GrafGlobals.
; <38> 8/8/90 PKE Changes to JustDataRec that are needed in order to fix bugs in
; new justified text routines.
; <37> 8/7/90 PKE NEEDED FOR SIXPACK: Redefined doScriptMgrForAUX symbol so Script
; Mgr patch installs are moved to Mac+A/UX section of patch files
; in SixPack as well as 7.0.
; <36> 8/7/90 SMB Adding back in changes for <33> and renaming AboutKeyboards to
; AboutKybdsIndex. Added KeybdDefaultMrk for localizing default
; keybd marker in menuitems. Also added commented out indices for
; help strings in Keyboard Menu STR# resource.
; <35> 8/5/90 PKE Add doScriptMgrForAUX symbol. Controls moving Script Mgr patches
; to A/UX section of patch files (if they are not already there).
; <34> 8/5/90 SMB Backing out changes for <33>. Will add in later.
; <33> 8/5/90 SMB Added KCHRname and KCHRid to KCHRInstalledRec and renamed
; KCHREnabledRec to KCHRInstalledRec. Added DefMarkIndex and
; AboutKeyboards as indices for new strings in Keyboard Menu STR#
; resource. Added more comments about the use of smgrDisableKybds.
; <32> 8/2/90 PKE Added smgrDisableKybds flag field to SMgrRecord.
; <31> 7/25/90 PKE Add private _InitScriptApp and _CleanupScriptApp routines to be
; called when apps are launched and closed in order to set up and
; delete the new application-specific script globals (which, for
; now, just contain the application itl cache). Added
; SMgrAppRecord structure for app-specific globals.
; <30> 7/20/90 PKE Added scriptAvail vector (called by _InitScripts) and
; scriptAddFonts vector (called by _AddScriptFonts) to
; ScriptRecord for use during initialization; rearranged
; scriptValidStyles, scriptAliasStyle, and scriptInItlm fields.
; Removed sVectFixSMgrWorld2 field from SMgrRecord; we no longer
; need it; rearrange other fields to group reserved space; affects
; ptch 4, 27, 39. Added smgrFixWorldInPtch27 feature symbol.
; <29> 7/16/90 PKE Renamed Cache2Rec to NewItlCacheRec. Updated ItlmHeaderRec to
; include regionData table.
; <28> 7/11/90 PKE Added _IsCmdChar private routine macro for common code that
; tests for Command-key combinations in an international way
; (standard FilterProc will use this to check for Cmd-period).
; <27> 7/5/90 PKE NEEDED FOR SIXPACK: Define smgrSixPack symbol here since we are
; now using it in several places; change appropriate $606
; references here to smgrSixPack.
; <26> 6/22/90 SMB Added DoCmdKeyEquivalents feature symbol for code that will be
; used once command key equivalents can appear in the Keybd Menu.
; <25> 6/13/90 PKE Added _RebuildKeybdMenu private routine macro for new routine
; called by Mover to inform Script Mgr of keyboard changes in the
; System file. Updated smLowCall accordingly.
; <24> 6/1/90 SMB Added scriptKCHRCount to ScriptRecord for use with Keyboard
; Menu. Added indices for strings in Keyboard Menu STR# resource.
; Changed keyboard menu id to its real #.
; <23> 5/31/90 PKE Added new fields to ScriptRecord: scriptValidStyles,
; scriptAliasStyle. Updated smLastSVerb from smScriptSysFondSize
; (was ignoring smScriptHelpFondSize!) to smScriptAliasStyle.
; Added _SetKbdMenuInfo private trap macro for use by Process Mgr
; and updated smLowCall accordingly.
; <22> 5/29/90 PKE NEEDED FOR SIXPACK: Turned on smgrUseDispTablePtr and
; romanKeepSelector flags for SIXPACK. These changes are flagged
; with <22>.
; <21> 5/29/90 DDG NEEDED FOR SIXPACK: Changed all the sixpack conditionals from
; six-point-oh-seven to six-point-oh-six.
; <20> 5/24/90 PKE Added smgrDispatchInPtch27 symbol.
; <19> 5/11/90 PKE Added _AddScriptFonts private trap macro for use by
; StartSystem.a; update smLowCall accordingly.
; <18> 5/8/90 PKE Added Cache2Rec record for itl2/4 secondary cache. Temporarily
; added ItlmHeaderRec here; will move to ScriptEqu.a later (when
; it gets stable). Added scriptInItlm flag in scriptRecord.
; <17> 5/5/90 PKE Added _InitScripts and _InitKeybdMenu private trap macros for
; use by StartSystem.a and Process Mgr respectively. Made SysVers
; default to $700 if undefined. Added Sue's KeyboardMenu stuff:
; ScriptMgrKeyboardMenu feature symbol; SMgrRecord fields
; smgrKeyboardMenuPtr, sVectInitMenus, sVectOldSystemMenu, and
; sVectInitKeyboardMenu; ScriptRecord field scriptKeysItemNum; and
; kKeyboardMenuID constant. Removed sVectInitResources and
; sVectInitWindows since they are no longer used.
; <16> 4/30/90 PKE NEEDED FOR SIXPACK: Updated ScriptMgr version number for 6.0.6.
; <15> 4/27/90 Greg prevent redefinition warnings by avoiding multiple inclusions
; <14> 4/24/90 PKE Added smgrSlop field to SMgrRecord. Used for passing slop value
; used by pic opcode.
; <13> 4/10/90 PKE Added new feature symbols. Used feature symbols, smgrROMVers,
; and smgrSysVers instead of buildLevel. Defined
; doScriptMgrUseKscn and doScriptMgrRstKCHRFix for ROM builds too.
; Deleted obsolete smgrEMOffset and lowerNoMarkListOffset
; constants.
; <12> 3/26/90 PKE Now change conditionals so we do the following for SysVers >=
; $607 instead of SysVers >= $700: (1) load ptch 27 and ptch 39,
; (2) use script autoinitialization and simple script version of
; FindScriptRun.
; <11> 3/26/90 PKE Define smgrSysVers and smgrROMVers. Removed sVectFixSpExtra
; field in SMgrRecord; no longer needed (see <4>). Move definition
; here of symbols that control Script Mgr patches in PTCHes
; (definitions were in PTCH source), and added new ones. Added
; installScriptMgrPtch27 and installScriptMgrPtch39 symbols.
; <10> 3/21/90 PKE Added scriptAppFondSize and scriptHelpFondSize fields in
; ScriptRecord. Deleted obsolete oldMacTweek flag and related
; conditionalization of GetSmgrCore macro.
; <9> 3/21/90 SMB Added romanDoSimpleScripts feature conditional.
; <8> 3/19/90 PKE Added new Script Mgr feature conditionals.
; <7> 3/4/90 PKE Deleted obsolete _LwrStringToUpr opword.
; <6> 2/22/90 PKE Added smgrCharExtra field in SMgrRecord, added JustDataRec
; record.
; <5> 1/17/90 PKE Added smgrRegionCode and smgrDummy fields to SMgrRecord, updated
; smLastEVerb to smRegionCode.
; <4> 1/11/90 PKE Moved definitions of sisHighCall and fisHighCall from
; ScriptEqu.a to here so we can conditionalize them. Added
; sVectFixSpExtra in SMgrRecord.
; <3> 1/4/90 PKE Fixed up header.
; <2> 1/4/90 PKE NEEDED FOR 6.0.5: Bumped ScriptMgr version numbers for 6.0.5.
; Updated header to BBS format.
; <1> 12/17/89 CCH Adding for the first time into BBS. Updated file name references.
;
; (BBS versions above,EASE versions below:)
; <3.5> 11/17/89 pke Fixed KybdDriverData record: DeadKey state should be long, not
; word.
; <3.4> 10/02/89 pke Changed smLastEVerb to be smKCHRCache.
; <3.3> 09/xx/89 pke Moved definitions of smLastEVerb, smLastSVerb, and
; smLowCall/smLowCall60x here from ScriptEqu.a so we can
; conditionalize them; they don't need to be public anyway. Add
; private romanVersPriv and romanVersPtch4 constants to be
; independent of version number in ScriptEqu.a.
; <3.2> 09/15/89 pke Add smgrDoubleByte field in SMgrRecord.
; <3.1> 09/06/89 pke Fancier way of defining version numbers, so version number at
; various stages of Script Mgr installation is correct. Use one
; reserved vector in SMgrRecord for sVectCallInterface.
; <3.0> 09/01/89 pke Deleted unused vectors for patched routines, rearranged the
; ones that are used to come up with some reserved space.
; <2.9> 08/27/89 pke Added 2.18 and 2.22 version numbers for IntlForce bug fix in
; Scripts604 build. Added sVectSMgrInitFonts and
; sVectSMgrPostMunging vectors (for 7.0 only).
; <2.8> 08/26/89 pke Get rid of itlr stuff (conditionalized out anyway); change
; SMgrRecord comments/conditionals to show real status in ROMs;
; add sVectSMgrCalcRect vector (for 7.0 only). Deleted
; newItl2Tables symbol.
; 07/10/89 pke Since 6/30/89 changes won't make it into Portable, fix SMgrRecord
; so all new stuff is at the end: remove reserved space after
; sVectKeyTrans, so low part of SMgrRecord matches Portable ROM
; version. Also make labels for new part available for IIci build
; only.
; 06/30/89 pke Extensions to SMgrRecord: added sVectSwapIcon,sVectSwapKybd, and
; sVectFixSMgrWorld plus some reserved space for additional vectors.
; Define OPWORD _LwrStringToUpr for temporary use.
; 06/27/89 pke Updated SMgr version number for IIci, since it has one bug fix
; that's not in Portable.
; 06/23/89 pke Restructured conditionals for defining buildLevel & smgrVersPriv;
; named some of the formerly reserved fields in ScriptRecord (will
; be used for new font/size info).
; 05/22/89 pke Added fDPEMEP constant for number formatting routines
; 04/26/89 pke Added smgrDispTable,smgrHigh,smgrLow to SmgrRecord, corresponding
; fields to ScriptRecord (from reserved space in each record)
; 04/06/89 pke Moved equates for new itl2 tables to ScriptEqu.a
; 03/15/89 pke Changed version number for ROM from $220 to $214
; 03/13/89 pke Changed back to old order of offsets to tables (would have caused
; too many problems with existing prototypes).
; 03/12/89 pke Modified equates for itl2 table offsets, which were rearranged
; today. Added some fields in SmgrRecord for script icon location
; data. Added private version number smgrVersPriv so we can set it
; appropriately for the different builds.
; 02/28/89 pke Conditionalize out remaining itlR-related stuff; rearranged new
; stuff in SMgrRecord; use buildLevel >= 1 to conditionalize
; changes from 6.0.3.
; 02/21/89 pke Get rid of itlR before it ever becomes part of a system; move
; its tables to itl2. Conditionalize out ItlrRecord defn, add some
; equates for new itl2 offsets.
; 12/02/88 pke added sVectKeyTrans field in SMgrRecord for upcoming KeyTrans
; patch roll-in; removed 'forRom' conditionalization of some
; SMgrRecord fields - existing fields should not move!
;
; (pre-EASE history below:)
; 10/18/88 ldc added wordTable and wrapTable to ItlRRec
; 10/10/88 ldc added smgrCurITLK to SmgrRecord
; 10/5/88 ldc Changed ScriptRecord.scriptFlags to ScriptRecord.scriptXFlags
; to emphasize that they are 'X'tra, and not currently used
; 9/23/88 ldc Added vector for old UprString and offset to no diacritic upper
; case table in ItlRRec
; 6/17/88 ldc Added internal vectors for ScriptMgrUtilNum.a
; 6/15/88 ldc Added smgrRecord.itlRHandle
; 6/14/88 ldc Added ItlRRecord
; 4/25/88 ldc Added vectors for patched out old routines
; Above changes are post-6.0.3
; 4/1/88 smb Removed number format equates and placed back in nScriptEqu.a.
; 3/24/88 smb Added number format equates and NumFormatString record (moved
; from nScriptEqu.a).
; 2/22/88 med Added emFirstKeyboard to expandMemRec
; 2/8/88 med Added itlCache to expandMemRec
; 1/13/88 med Misc equate changes, change bufTweaks for BufPtr installation
; 1/4/88 med Moved itl4 equates to ScriptEqu, fleshed out
; 11/10/87 med Removed OldMac support
; 8/18/87 med Added smCharPortion verb
; 7/7/87 med Added environment flags fields
; 5/19/87 KLH moved records to SysEqu.a per Mark Davis.
; 5/19/87 KLH moved some data structures back to ScriptEqu.a.
; 3/13/87 med Changed expand mem keyDeadState to long
; 3/9/87 med Added date,time,context record equates, reorganized
; 3/7/87 med Added check for QDExist for sanity check in GetTheFont macro
; 3/6/87 med Added smScriptFlags field.
; Added CharType field masks.
; Included calendar, number format equates
; 3/4/87 med Dropped GetThePort macro: use GetTheFont macro
; 2/26/87 med Added expandMem and KeyCache equates temporarily.
; Removed smgrKeyCache, smgrKeyDeadState.
; Restored smPunctBlank (somehow got omitted).
; Included language equates.
; 1/28/87 MED Added CheckAReg for a little type checking in macros.
; Fixed use of wholeSmgr.
; Added and used smgrEMOffset.
; 1/19/87 jdt Modified getSMgrCore macro to use expaned low memory block.
; 1/13/87 jdt Replaced smAppScript verb and global with smLastScript.
; 1/5/87 jdt Changed hook names for itl2. We now have the exit hook.
; Added result to Pack6 sorting stack frame.
; 1/2/87 jdt New version number for release.
; 12/23/86 jdt Fixed macros for Script Manager routines.
; Rearranged constants into public and private sets.
; 12/23/86 med Added private equates flag.
; 12/22/86 jdt Added the smBidirect variable to the Script Manager gloabls.
; Changed compatability flag names.
; Added last environment and script verb constants.
; Fixed new selector for KeyScript.
; 12/5/86 jdt Added ParseTable macro to ScriptUtil list.
; Removed the KeyTrans trap macro.
; Added CharByte byte types.
; 11/25/86 jdt Added compatability flags for MS, MPW, AIS 1.0, and old apps.
; Moved itl2 routine equates here from Pack6Equ.a.
; 11/21/86 MED Added the GetThePort macro for MPW compatability.
; 11/21/86 jdt Moved the Roman equates here.
; 11/20/86 jdt New version number for Universal system file changes.
; 11/16/86 KWK Removed GMT, latitude and longitude vars from SmgrRecord.
; Re-adjusted size of core back to version 1.0 for AIS.
; Fixed some script range equates.
; Added the _ParseTable macro, selector
; 10/25/86 jdt Yet another ugly patch for KanjiTalk. We force the KanjiTalk
; system font ID number to be in the Japanese script range, so
; the version number has changed again.
; 10/17/86 jdt Bumped high byte of version number for SMgr globals change.
; 10/16/86 KWK It's ugly...added 3 vectors after smgrPrintAction for backwards
; compatibilty with KanjiTalk 1.0 applications and system file.
; 10/9/86 JDT Added dead key state to the script manager globals.
; Removed smgrCore and smgrOldCore constants.
; Use Ken's macro or else.
; 9/5/86 JDT Wacky force flags added to script manager globals and supported
; by FontScript and IntlScript.
; IntlScript removed and trap selectors reorganized.
; 9/3/86 JDT Wet'n'wild reorganization. Region bundles eliminated.
; 8/28/86 JDT Moved KeyTrans variables into Script Manager core.
; 8/23/86 KWK Removed ScriptVersion equate, added Mark's complete set of
; script equates (yes, that's right, smMongolian lives).
; Added 'itl2' equate (Sorting hooks).
; 8/21/86 JDT Modified for Script Manager.
; 8/19/86 KWK Minor equate changes for new trap architecture.
; 8/5/86 JDT Major reorganization of sis and script structures.
; 8/1/86 JDT Replaced the FindScriptRun and NextBlock routines with the
; DrawJust and MeasureJust routines.
; 7/22/86 JDT Split the Blocker into four separate routines.
; 7/21/86 JDT Added language field to region bundles and script entry.
; 7/14/86 JDT Region names no longer appear in the region bundle. The name of
; the region is now the region bundle resource name, and the
; region code is the resource id number.
; 7/13/86 JDT Reorganized sis and script records, constants.
; 7/13/86 KWK Mega-changes for standard routine trap-out, Roman script init,
; et. al.
; 7/12/86 KWK Added new equates from Joe's SISEqu.a file, global ptr table,
; SISFullAscii/SISEnabled flags, changed macros back to Pack8
; calls.
; 7/11/86 KWK New today.
;___________________________________________________________________________________________________
IF &TYPE('__INCLUDINGSCRIPTPRIV__') = 'UNDEFINED' THEN
__INCLUDINGSCRIPTPRIV__ SET 1
include 'Script.a' ; <70><SM7>
include 'InternalMacros.a' ; <46>
include 'IntlResourcesPriv.a' ; <74>
IF &type('forRom')='UNDEFINED' THEN ; <02/21/89 pke>
forRom: equ 0 ; <02/21/89 pke>
ENDIF ; <02/21/89 pke>
IF NOT forRom THEN ; <17><***JH***>made forRom match casewise
IF &type('SysVers')='UNDEFINED' THEN ; <02/21/89 pke>
SysVers: equ $700 ; <02/21/89 pke><17>
ENDIF ; <02/21/89 pke>
ENDIF
IF (&TYPE('Scripts604') = 'UNDEFINED') THEN ; <08/27/89 pke>
Scripts604 equ 0 ; <08/27/89 pke>
ENDIF
IF &type('smgrSixPack')='UNDEFINED' THEN ; <27>
smgrSixPack equ $606 ; <27>
ENDIF ; <27>
; We define smgrSysVers to use in conditionals, because SysVers is not defined
; if NOT forRom. We also need to set up a separate smgrROMVers. <11>
IF forRom THEN
smgrSysVers equ 0
;smgrROMVers equ 1 ; IIci/fx/Erickson ROM <SM5> rb
smgrROMVers equ 2 ; SuperMario/Cube-E in ROM <SM5> rb
ELSE
smgrSysVers equ SysVers
smgrROMVers equ 0
ENDIF
; restructured the following conditionals <06/23/89 pke><08/27/89 pke><11><50>
IF smgrROMVers >= 2 THEN ; <11>
buildLevel: equ 3 ; <11>
smgrVersPriv: equ $710 ; <11><SM5> rb
romanVersPriv: equ $710 ; <11><SM5> rb
ELSEIF smgrROMVers >= 1 THEN ; <11>
buildLevel: equ 2 ; <02/21/89 pke>
;smgrVersPriv: equ $214 ; 2.20 (not used anymore)
;smgrVersPriv: equ $215 ; 2.21 (Portable, IIci, IIfx) <06/27/89 pke>
smgrVersPriv: equ $216 ; 2.22 (2.21 + IntlForce bug fix) <08/27/89 pke>
romanVersPriv: equ $101 ; <3.3>
ELSEIF SysVers > $701 THEN ; <55>
buildLevel: equ 3 ; <55>
smgrVersPriv: equ $710 ; <55>
smgrVersPTCHRom: equ $710 ; <55>
smgrVersPtch4: equ $710 ; should get rid of this <55>
romanVersPriv: equ $710 ; <55>
romanVersPtch4: equ $710 ; should get rid of this <55>
ELSEIF SysVers = $701 THEN ; <53>
buildLevel: equ 3 ; <53>
smgrVersPriv: equ $701 ; <53>
smgrVersPTCHRom: equ $701 ; <53>
smgrVersPtch4: equ $701 ; should get rid of this <53>
romanVersPriv: equ $701 ; <53>
romanVersPtch4: equ $701 ; should get rid of this <53>
ELSEIF SysVers = $700 THEN
buildLevel: equ 3 ; <06/23/89 pke>
smgrVersPriv: equ $700 ; change 3.0 to 7.0 <06/23/89 pke>
smgrVersPTCHRom: equ $700 ; code level with new ROMs + PTCH <3.1>
smgrVersPtch4: equ $213 ; code level with ptch 4 <3.1>
romanVersPriv: equ $700 ; <3.3>
romanVersPtch4: equ $101 ; <3.3>
ELSE ; <50>
aerror 'ScriptPriv.a no longer works for pre-7.0 System builds' ; <50>
ENDIF
;----------------------------------------------
; Old Script Mgr version numbers: <50>
;
; SysVers
; >=smgrSixPack $605 SS-604 $604 before
;buildLevel: 1 1 1 1 0 ;
;smgrVersPriv: $230* $213** $212*** $211 $20F ;
;smgrVersPTCHRom: $231* $217 $216 ; with new ROMs + PTCH
;smgrVersPtch4: $230* $213 $212 ; with ptch 4
;romanVersPriv: $101 $101 $101 $101 $101 ;
;
;* new BCD numbering
;** 2.19 (2.18 + String2Date bug fix)
;*** 2.18 (2.17 + IntlForce bug fix)
;----------------------------------------------
; Feature conditionals for existing features. For now, just define these outside the
; specific build symbol definitions. The definition of which build a feature goes in
; can not be changed until the symbol is correctly used everywhere it needs to be.
; In any case, if we change which build a feature goes in, we can only change it to
; be earlier than System 7.
smgrUseStdExit equ (1) ; new in 7.0 & Portable/IIci ROMs <8><11><50>
smgrUseDispTablePtr equ (1) ; new in 6.0.6 & Portable/IIci ROMs <8><11><22><27><50>
romanKeepSelector equ (1) ; new in 6.0.6 & Portable/IIci ROMs <8><11><22><27><50>
smgrUseItl2Tables equ (1) ; new in 6.0.4 & Portable/IIci ROMs <13><50>
smgrSys7Extensions equ ((NOT forRom) OR (smgrROMVers >= 2)) ; new in 7.0 <13>
smgrKeyScriptDoItlk equ (1) ; new in 7.0 & Portable/IIci ROMs <13><50>
smgrKeyScriptItlkFix equ ((NOT forRom) OR (smgrROMVers >= 2)) ; new in 7.0 <13>
smgrKeyGetSetInPtch27 equ (NOT forRom) ; T from 7.0 <13>
smgrDispatchInPtch27 equ (NOT forRom) ; T from 7.0 <20>
smgrKeepObsolete equ (NOT ((NOT forRom) OR (smgrROMVers >= 2))) ; F from 7.0 <13>
smgrKeepMacsBugSym equ (NOT ((NOT forRom) OR (smgrROMVers >= 2))) ; F from 7.0 <13>
smgrFixWorldInPtch27 equ (NOT forRom) ; T from 7.0 <30>
; These feature conditionals are for new features.
smgrHasAutoInit equ ((NOT forRom) OR (smgrROMVers >= 2)) ; new in 6.0.6 <8><9><11><12><27>
romanDoSimpleScripts equ ((NOT forRom) OR (smgrROMVers >= 2)) ; new in 6.0.6 <9><11><12><27>
ScriptMgrKeyboardMenu equ ((NOT forRom) OR (smgrROMVers >= 2)) ; new in 7.0 <17>
DoCmdKeyEquivalents equ 0 ; <26>
; The following conditionals govern which patches to include, particularly in <11>
; the ROM-specific patch files. For 7.0, these patches are in ptch 39, so they
; aren't included in the ROM-specific PTCHes. The flags are there so we can
; turn on bug fixes for 6.x builds: e.g., flags that are currently 0 indicate
; fixes that may be turned on here for 6.1.
; in ptch 39 if we have it
IF NOT forRom THEN ;<***jh***>made case match other forRom's
doScriptMgrPack6Fix equ (1) ; new in 6.0.4 <11><52>
doScriptMgrStr2DatFix equ (1) ; new in 6.0.5 <11><52>
doScriptMgrNewVectors equ (1) ; new in 7.0 <11><52>
doScriptMgrSetROMVers equ (1) ; new in SS-6.0.4 <11><52>
doScriptMgrForAUX equ (1) ; new in 6.0.6 <35><37><52>
ENDIF
doScriptMgrUseKscn equ ((NOT forRom) OR (smgrROMVers >= 2)) ; new in 7.0 <11><13>
doScriptMgrRstKCHRFix equ ((NOT forRom) OR (smgrROMVers >= 2)) ; new in 7.0 <11><13>
; in ptch 27 if we have it
doScriptMgrGestalt equ ((NOT forRom) OR (smgrROMVers >= 2)) ; new in 6.0.4 <11><13>
doScriptMgrLwrString2 equ ((NOT forRom) OR (smgrROMVers >= 2)) ; new in SS-6.0.4 <11><13>
; The following conditionals control 'ptch' installation in the ROM-specific
; PTCHes. If these are changed, then {OptionFiles} in Build must be updated,
; as well as Sys.r.
installScriptMgrPtch27 equ (NOT forRom) ; new in 6.0.6 <11><12><13><17><27>
installScriptMgrPtch39 equ (NOT forRom) ; new in 6.0.6 <11><12><13><17><27>
; Flags for various tweaks, which should go away as more applications and
; script interface systems understand how the Script Manager works.
msTweaks equ 0 ; MicroSoft Excel compatibility tweaks.
appTweaks equ 1 ; old application compatibility tweaks.
testScriptManager equ 0
; Check the validity of fixed values defined in ScriptEqu.a
IF ItlbRecord.itlbSize<>20 THEN
aerror &concat('itlbSize wrong: ',&i2s(itlbSize))
ENDIF
; -----------------------------------------------------------------------------
; Private trap macros for initialization. InitScripts is called by StartSystem.a
; before any system file INITs, and does FixSMgrWorld stuff plus any extensions.
; InitScriptMenu is called by Process Mgr (a.k.a. MultiFinder) after _InitMenus
; has been called.
; _AddScriptFonts is also called by StartSystem.a, but after all system file
; INITs. It is needed so that scripts that may load additional fonts over the
; network can do so.
; -----------------------------------------------------------------------------
DefSmgrRoutine InitScripts, -38,0,2 ; smSelÉ = $8200FFDA <17>
DefSmgrRoutine InitKeybdMenu, -40,0,2 ; smSelÉ = $8200FFD8 <17>
DefSmgrRoutine AddScriptFonts, -42,0,2 ; smSelÉ = $8200FFD6 <19>
DefSmgrRoutine SetKbdMenuInfo, -44,10,2 ; smSelÉ = $820AFFD4 <23>
DefSmgrRoutine RebuildKeybdMenu, -46,0,2 ; smSelÉ = $8200FFD2 <25>
DefSmgrRoutine IsCmdChar, -48,6,2 ; smSelÉ = $8206FFD0 <28>
DefSmgrRoutine InitScriptApp, -50,0,2 ; smSelÉ = $8200FFCE <31>
DefSmgrRoutine CleanupScriptApp, -52,0,2 ; smSelÉ = $8200FFCC <31>
DefSmgrRoutine ReInitScripts, -54,0,2 ; smSelÉ = $8200FFCA <40>
DefSmgrRoutine FindCharInSet, -56,16,4 ; smSelÉ = $8410FFC8 <45>
DefSmgrRoutine TranslateFromUnicode, -58,12,2 ; smSelÉ = $820CFFC6 <52>
DefSmgrRoutine TranslateToUnicode, -60,8,2 ; smSelÉ = $8208FFC4 <52>
DefSmgrRoutine TranslateNoBreakFromUnicode,-62,26,2; smSelÉ = $821AFFC2 <52>
DefSmgrRoutine SetCachedTablesNoPurge, -64,0,2 ; smSelÉ = $8200FFC0 <52>
DefSmgrRoutine SetCachedTablesPurge, -66,0,0 ; smSelÉ = $8000FFBE <52>
DefSmgrRoutine HaveFontTranslationTable, -68,6,4 ; smSelÉ = $8406FFBC <52>
DefSmgrRoutine RealScript, -70,0,2 ; smSelÉ = $8200FFBA <52>
DefSmgrRoutine Font2RealScript, -72,2,2 ; smSelÉ = $8202FFB8 <52>
DefSmgrRoutine TestLetter, -76,2,2 ; smSelÉ = $8202FFB4 <56>
DefSmgrRoutine ScriptToRange, -78,2,4 ; smSelÉ = $8402FFB2 <68>
DefSmgrRoutine NFindScriptRun, -80,16,2 ; smSelÉ = $8210FFB0 <69>
macro
_InitScripts ; <17>
move.l #smSelInitScripts,-(sp)
_ScriptUtil
endm
macro
_InitKeybdMenu ; <17>
move.l #smSelInitKeybdMenu,-(sp)
_ScriptUtil
endm
macro
_AddScriptFonts ; <19>
move.l #smSelAddScriptFonts,-(sp)
_ScriptUtil
endm
macro
_SetKbdMenuInfo ; <23>
move.l #smSelSetKbdMenuInfo,-(sp)
_ScriptUtil
endm
macro
_RebuildKeybdMenu ; <25>
move.l #smSelRebuildKeybdMenu,-(sp)
_ScriptUtil
endm
macro
_IsCmdChar ; <28>
move.l #smSelIsCmdChar,-(sp)
_ScriptUtil
endm
macro
_InitScriptApp ; <31>
move.l #smSelInitScriptApp,-(sp)
_ScriptUtil
endm
macro
_CleanupScriptApp ; <31>
move.l #smSelCleanupScriptApp,-(sp)
_ScriptUtil
endm
macro
_ReInitScripts ; <40>
move.l #smSelReInitScripts,-(sp)
_ScriptUtil
endm
macro
_FindCharInSet ; <45>
move.l #smSelFindCharInSet,-(sp)
_ScriptUtil
endm
macro
_RealScript ; <52>
move.l #smSelRealScript,-(sp)
_ScriptUtil
endm
macro
_Font2RealScript ; <52>
move.l #smSelFont2RealScript,-(sp)
_ScriptUtil
endm
; ----------------------------------------------------------------------------- <56>
; FUNCTION TestLetter(testChar: CHAR): BOOLEAN; {Pascal calling conventions}
; -----------------------------------------------------------------------------
macro
_TestLetter ; <56>
move.l #smSelTestLetter,-(sp)
_ScriptUtil
endm
; -----------------------------------------------------------------------------
macro
_ScriptToRange ; <68>
move.l #smSelScriptToRange,-(sp)
_ScriptUtil
endm
macro
_NFindScriptRun ; <69>
move.l #smSelNFindScriptRun,-(sp)
_ScriptUtil
endm
; -----------------------------------------------------------------------------
DefSmgrRoutine GetScriptRoutineAddr, 56, 4, 4 ; $84040038 implemented only by one-byte scripts
DefSmgrRoutine SetScriptRoutineAddr, 58, 8, 0 ; $8008003A implemented only by one-byte scripts
DefSmgrRoutine GetQDPatchAddr, 60, 6, 4 ; $8406003C implemented only by one-byte scripts
DefSmgrRoutine SetQDPatchAddr, 62, 10, 0 ; $800A003E implemented only by one-byte scripts
smSelSCGetScriptRoutineAddr EQU (1<<30)++smSelGetScriptRoutineAddr ; <73>
smSelSCSetScriptRoutineAddr EQU (1<<30)++smSelSetScriptRoutineAddr ; <73>
smSelSCGetQDPatchAddr EQU (1<<30)++smSelGetQDPatchAddr ; <73>
smSelSCSetQDPatchAddr EQU (1<<30)++smSelSetQDPatchAddr ; <73>
smSelSCCharByte EQU (1<<30)++smSelCharByte ; <73>
smSelSCCharType EQU (1<<30)++smSelCharType ; <73>
smSelSCTranslit EQU (1<<30)++smSelTranslit ; <73>
smSelSCFindWord EQU (1<<30)++smSelFindWord ; <73>
smSelSCParseTable EQU (1<<30)++smSelParseTable ; <73>
macro
_SCGetScriptRoutineAddr ; <73>
move.l #smSelSCGetScriptRoutineAddr,-(sp)
_ScriptUtil
endm
macro
_SCSetScriptRoutineAddr ; <73>
move.l #smSelSCSetScriptRoutineAddr,-(sp)
_ScriptUtil
endm
macro
_SCGetQDPatchAddr ; <73>
move.l #smSelSCGetQDPatchAddr,-(sp)
_ScriptUtil
endm
macro
_SCSetQDPatchAddr ; <73>
move.l #smSelSCSetQDPatchAddr,-(sp)
_ScriptUtil
endm
macro
_SCLowerText ; <73>
move.w #sclwrDoLower,-(sp)
move.l #smSelSCLwrString,-(sp)
_ScriptUtil
endm
macro
_SCStripText ; <73>
move.w #sclwrDoStrip,-(sp)
move.l #smSelSCLwrString,-(sp)
_ScriptUtil
endm
macro
_SCUpperText ; <73>
move.w #sclwrDoUpper,-(sp)
move.l #smSelSCLwrString,-(sp)
_ScriptUtil
endm
macro
_SCStripUpperText ; <73>
move.w #sclwrDoStripUpper,-(sp)
move.l #smSelSCLwrString,-(sp)
_ScriptUtil
endm
macro
_SCCharByte ; <73>
move.l #smSelSCCharByte,-(sp)
_ScriptUtil
endm
macro
_SCCharType ; <73>
move.l #smSelSCCharType,-(sp)
_ScriptUtil
endm
macro
_SCTransliterate ; <73>
move.l #smSelSCTranslit,-(sp)
_ScriptUtil
endm
macro
_SCFindWord ; <73>
move.l #smSelSCFindWord,-(sp)
_ScriptUtil
endm
macro
_SCParseTable ; <73>
move.l #smSelSCParseTable,-(sp)
_ScriptUtil
endm
; -----------------------------------------------------------------------------
; Constants moved from ScriptEqu.a so we can conditionalize them. These don't
; need to be in the public equates anyway. <3.3>
;
; We need a better way of setting these limits based on the combination of <17>
; feature conditionals.
; -----------------------------------------------------------------------------
smLastEVerb EQU smKeyDisableState ; Last GetEnvirons verb. <58><61>
smLastSVerb EQU smScriptAliasStyle ; Last public script verb. <23>
smLowCall EQU smNFindScriptRun ; lowest script manager routine <69>
sisHighCall EQU smNPortionText ; highest Roman script routine <4>
; Moved these KeyScript verbs here since adding smKeyEnableAboutKybds after the 7.0 interfaces have
; frozen. (and we also don't believe a developer will ever want them!) <41>
smKeyDisableAboutKybds EQU -13 ; Disable ÔAboutÉÕ menu item since another dialog is up <41>
; was named smKeyModalDialog in ScriptEqu.a.
smKeyEnableAboutKybds EQU -14 ; Enable ÔAboutÉÕ menu item <41>
smKeySynchKbdMenuState EQU -18 ; synchronize kbd menu state to current process' flag <65>
; private one byte SetScript/GetScript verbs - used by TextEdit in Cube-E <59>
smScriptSysBase EQU -281 ; Roman font to use with the system font
smScriptAppBase EQU -283 ; Roman font to use with the application font
smScriptFntBase EQU -285 ; Roman font to use with all other fonts
; -----------------------------------------------------------------------------
; Script Manager Global record
; -----------------------------------------------------------------------------
; Record declaration for the environment globals.
; Note: The printer action routine must be at offset #22 for compatability
; with KanjiTalk 1.0.
smgrCount equ 65 ; number of script entries.
SMgrRecord record 0
smgrVersion ds.w 1 ; Script Manager version number.
smgrMunged ds.w 1 ; Globals change count.
smgrEnabled ds.b 1 ; Count of enabled scripts
smgrBidirect ds.b 1 ; At least one bidirectional script.
; The following pair of bytes must be word-aligned, as they are occasionally
; treated as a single word.
smgrFontForce ds.b 1 ; force font flag.
smgrIntlForce ds.b 1 ; force intl flag.
; The following pair of bytes must be word-aligned, as they are occasionally
; treated as a single word.
smgrForced ds.b 1 ; Script was forced to system script.
smgrDefault ds.b 1 ; Script was defaulted to Roman script.
;
smgrGenFlags ds.l 1 ; general flags long <7/7/87med>
smgrOverride ds.l 1 ; script override flags <7/7/87med>
ds.l 1 ; reserved for overriding
smgrPrint ds.l 1 ; printer action dispatcher.
smgrUnivInstalled ds.l 1 ; if we have the universal init, what scripts it supports.<51>
smgrCharByte ds.l 1 ; CharByte vector.
smgrCharType ds.l 1 ; CharType vector.
smgrSysScript ds.w 1 ; preferred system script.
smgrLastScript ds.w 1 ; last keyboard script.
smgrKeyScript ds.w 1 ; keyboard script.
smgrRect ds.w 4 ; toggling rectangle.
smgrSysRef ds.w 1 ; System file volRefNum.
smgrKeySwap ds.l 1 ; Handle to current 'KSWP' resource <45>
smgrCharPortion ds.w 1 ; Ch vs Sp Extra proportion, 4.12 fixed
smgrReservedB ds.w 1 ;
smgrReservedC ds.l 1 ;
smgrCSisPtr ds.l 1 ; contextual SIS globals ptr
smgrCSisFlags ds.l 1 ; flag bits for contextual SIS
smgrNumRepPtr ds.l 1 ; ptr to number rep dispatch list
smgrDateRepPtr ds.l 1 ; ptr to date rep dispatch list
smgrDispTable ds.l 1 ; ptr to SMgr dispatch table <04/26/89 pke>
smgrDispLow ds.w 1 ; low selector value <04/26/89 pke>
smgrDispHigh ds.w 1 ; high selector value <04/26/89 pke>
; <3.2><13>
smgrDoubleByte ds.b 1 ; Boolean; T => at least one 2-byte script <3.2>
smgrDisableKybds ds.b 1 ; T=>disable keybds not in Sys/Roman script/1=>disable all kbds <32><33>
smgrRegionCode ds.w 1 ; region code (verXxx) from itlc <5>
smgrClientLLRecHndl ds.l 1 ; handle to line layout rec for PicComment <45>
ds.l 1 ; reserved <39><45>
; <17>
smgrKeyboardMenuPtr ds.l 1
smgrKbdMenuAvail ds.b 1 ; madam, your menu is showing! <43>
ds.b 3 ; reserved <43>
smgrDummy ds.l 1 ; dummy field - all zero; for 7.0 only <5>
smgrEntry ds.l smgrCount ; script global entries (ptrs to ScriptRecord).
; New stuff for 604 & IIci ROMs - removed conditionals <50>
; Removed conditionals on some of these - structure should stay fixed <12/02/88 pke>
; Rearranged this stuff, since it hasn't gone into any systems yet <02/28/89 pke>
smgrCurITLK ds.l 1 ; handle to current itlk <45>
; following are for the delimiter table used by the tokenizer in ScriptMgrUtilText.a <4/27/88ldc>
dTabNegOffset ds.w 1 ; negative offset for endParse's benefit
delimMap ds.l 4 ; delimiter table
; script icon section: <03/12/89 pke>
smgrIconOffset ds.w 1 ; script icon offset (pixels)
smgrIconSideFlag ds.b 1 ; script icon side (0=right,$ff=left)
smgrKeyScriptResult ds.b 1 ; T iff KeyScript verb caused some action <40>
;---------------vectors for patched routines (used by RAM version ³7.0 only)-----------------------
; rearranged, turning unused vectors into reserved space. Size doesn't change. <09/01/89 pke>
; sVectInitWindows and sVectInitResources became unused, so rearrange again. <17>
sVectInitApplZone ds.l 1 ; old InitApplZone routine pointer <4/26/88ldc>
sVectGetOSEvent ds.l 1 ; old GetOSEvent routine pointer <4/26/88ldc>
sVectKeyTrans ds.l 1 ; old KeyTrans routine pointer <12/02/88 pke>
sVectScriptUtil ds.l 1 ; old ScriptUtil routine pointer <4/26/88ldc>
sVectLwrString ds.l 1 ; old LwrString routine pointer <4/25/88ldc>
; <17>
sVectInitMenus ds.l 1 ; old InitMenus routine pointer <17><30>
sVectOldSystemMenu ds.l 1 ; old SystemMenu routine pointer <17><30>
ds.l 5 ; reserved space <3.0><17><30><64>
;---------------vectors for internal routines (used by ROM version only)---------------------------
;
; Although these are used by ROM, they are set up both RAM and ROM versions.
; Note that in 7.0, sVectFixSMgrWorld is effectively inactivated by stuffing the
; address of an rts; the FixSMgrWorld code in ROM is not used.
; from ScriptMgrUtilNum.a
sVectAppendSymbol ds.l 1 ; AppendSymbol routine pointer <6/17/88ldc>
sVectConvertToString ds.l 1 ; ConvertToString routine pointer <6/17/88ldc>
sVectExpHandling ds.l 1 ; ExpHandling routine pointer <6/17/88ldc>
sVectExpMatching ds.l 1 ; ExpMatching routine pointer <6/17/88ldc>
sVectCheckForDigits ds.l 1 ; CheckForDigits routine pointer <6/17/88ldc>
sVectMatchingSubstring ds.l 1 ; MatchingSubstring routine pointer <6/17/88ldc>
sVectCond ds.l 1 ; Cond routine pointer <6/17/88ldc>
sVectCheckForm ds.l 1 ; CheckForm routine pointer <6/17/88ldc
sVectTackOnExp ds.l 1 ; TackOnExp routine pointer <6/17/88ldc>
sVectMakeExp ds.l 1 ; MakeExp routine pointer <6/17/88ldc>
sVectCheckPartsIntegrity ds.l 1 ; CheckPartsIntegrity routine pointer <6/17/88ldc>
sVectRetrieveChar ds.l 1 ; RetrieveChar routine pointer <6/17/88ldc>
sVectIsSubstring ds.l 1 ; IsSubstring routine pointer <6/17/88ldc>
; from elsewhere
sVectSwapIcon ds.l 1 ; SwapIcon routine pointer <06/30/89 pke>
sVectSwapKybd ds.l 1 ; SwapKybd routine pointer <06/30/89 pke>
sVectFixSMgrWorld ds.l 1 ; FixSMgrWorld routine pointer <06/30/89 pke>
;---------------vectors for communication between ptches, managers, etc.---------------------------
; <13>
sVectSMgrCalcRect ds.l 1 ; SMgrCalcRect routine pointer <08/26/89 pke>
sVectSMgrInitFonts ds.l 1 ; SMgrInitFonts routine pointer <08/27/89 pke>
sVectSMgrPostMunging ds.l 1 ; SMgrPostMunging routine pointer <08/27/89 pke>
sVectCallInterface ds.l 1 ; <3.1> <09/06/89 pke>
; <17>
sVectInitKeyboardMenu ds.l 1 ; InitKeyboardMenu routine pointer <17>
ds.l 3 ; reserved vector space <06/30/89 pke>
smgrSize equ * ; size of script manager core.
; Check the validity of fixed values in SMgrRecord
IF smgrPrint<>22 THEN
aerror &concat('smgrPrint at wrong location: ',&i2s(smgrPrint))
ENDIF
IF smgrEntry<>114 THEN
aerror &concat('smgrEntry at wrong location: ',&i2s(smgrEntry))
ENDIF
IF smgrSize<>544 THEN ; <17>
aerror &concat('SMgrRecord is wrong size: ',&i2s(smgrSize)) ; <17>
ENDIF
endr
; -----------------------------------------------------------------------------
; Private Script Manager globals flags bits
; -----------------------------------------------------------------------------
smOverPortion equ 0 ; override portion text.
; -----------------------------------------------------------------------------
; Record declaration for the script globals. This first set is always the
; same for every script. Local variables that are specific to each script
; follow the fields described here in the globals.
ScriptRecord record 0
scriptVersion ds.w 1 ; script version number.
scriptMunged ds.w 1 ; script globals change count.
scriptEnabled ds.b 1 ; script enabled flag.
scriptRight ds.b 1 ; right to left flag.
scriptJust ds.b 1 ; justification flag.
scriptRedraw ds.b 1 ; word redraw flag.
scriptSysFond ds.w 1 ; preferred system font.
scriptAppFond ds.w 1 ; preferred application font.
scriptBundle ds ItlbRecord ; bundle
scriptPrint ds.l 1 ; printer action vector.
scriptTrap ds.l 1 ; ScriptUtil trap vector.
scriptCreator ds.l 1 ; sis creator signature.
scriptFile ds.l 1 ; sis file name.
scriptName ds.l 1 ; sis name.
scriptXFlags ds.l 1 ; <10/5/88ldc> 'X'tra flags for
scriptOverRide1 ds.l 1 ; for overriding
scriptOverRide2 ds.l 1 ; for overriding
; use 2 longwords of reserved space <04/26/89 pke>
scriptDispTable ds.l 1 ; ptr to script dispatch table <04/26/89 pke>
scriptDispLow ds.w 1 ; low selector value <04/26/89 pke>
scriptDispHigh ds.w 1 ; high selector value <04/26/89 pke>
; use 4 longwords of reserved space <06/23/89 pke>
scriptMonoFondSize ds.l 1 ; default monospace FOND (hi) & size (lo) <06/23/89 pke>
scriptPrefFondSize ds.l 1 ; preferred FOND (hi) & size (lo) <06/23/89 pke>
scriptSmallFondSize ds.l 1 ; default small FOND (hi) & size (lo) <06/23/89 pke>
scriptSysFondSize ds.l 1 ; default system FOND (hi) & size (lo) <06/23/89 pke>
scriptAppFondSize ds.l 1 ; default app FOND (hi) & size (lo) <10>
scriptHelpFondSize ds.l 1 ; default Help Mgr FOND (hi) & size (lo) <10>
; <17>
scriptKeysItemNum ds.b 1 ; default input menu item number (actual, not relative to script) <17>
scriptInputCount ds.b 1 ; count of # of enabled KCHRs <24><57>
scriptValidStyles ds.b 1 ; Style- set of all valid styles for script <23>
scriptAliasStyle ds.b 1 ; Style- alias style for script <23>
scriptInItlm ds.b 1 ; true iff this script has 'itlm' entry <18>
scriptID ds.b 1 ; this script's scriptcode <63>
ds.b 2 ; reserved. <24><63>
scriptAvail ds.l 1 ; Avail routine vector, or 0 if unused <30>
scriptAddFonts ds.l 1 ; AddFonts routine vector, or 0 if unused <30>
scriptQDPatches ds.l 1 ; the qd routines dispatch table.(universal init) <51> <10><30>
scriptSize equ * ; size of script entry.
IF scriptSize<>116 THEN ; <17>
aerror &concat('ScriptRecord is wrong size: ',&i2s(scriptSize)) ; <17>
ENDIF
endr
; -----------------------------------------------------------------------------
; Private Macros for the Script Manager and Script Interface Systems.
; -----------------------------------------------------------------------------
;____________________________________________________________
; paranoid type checking
macro
CheckReg &AReg,&RegType
if &UpCase(&SubStr(&AReg,1,1))<>&UpCase(&RegType) then
aerror &concat('Bad Reg in Macro',&AReg,' ',&RegType)
endif
endm
;____________________________________________________________
; Script Manager environment macro. Load smgrCore from IntlSpec.
macro
GetSmgrCore &reg
move.l intlSpec,&reg ; get directly <11/10/87med>
endm
;____________________________________________________________
; Current font macro.
;mpwPtr equ $316 ; MPW global pointer.
macro
GetTheFont &AReg,&DReg
CheckReg &AReg,a ; is it an A reg?
CheckReg &DReg,d ; is it an D reg?
tst.b QDExist ; test QDNotThere
beq.s @TryRealFont ; QD not there, exit gracefully
@DefaultFont
clr.l &DReg ; use font 0
bra.s @EndGetTheFont ; done
@TryRealFont
move.l grafGlobals(a5),&DReg ; is it there? (sanity check)
ble.s @DefaultFont ; get the real one
move.l &DReg,&AReg ; load grafGlobals.
move.l thePort(&AReg),&AReg ; load thePort.
move.w txFont(&AReg),&DReg ; get the font
@EndGetTheFont
endm
;____________________________________________________________
; Macro CheckA6
; Environment a6,a7,localFrame
; Function Fall into the debugger if sp not balanced
; Location Insert just before UNLK command
;____________________________________________________________
macro
CheckA6 &debugSwitch=testScriptManager,&lFrame=localFrame
if &eval(&debugSwitch) then
movem.l d0,-(sp) ; save reg
move.l a6,d0 ; for compare
add.l #&lFrame-4,d0 ; exclude frame, saved reg
cmp.l a7,d0 ; same?
movem.l (sp)+,d0 ; restore reg
beq.s @1 ; yes, skip
pea @2 ; string
_DebugStr
bra.s @1 ; continue
@2:
dc.b 'Stack Unbalanced.'
align 2
@1:
endif
endMacro
;____________________________________________________________
; Macro CheckSelector
; Environment a6,a7,localFrame
; Function Check that SmgrUtil routine has correct selector
; Location Insert just before LINK command
;____________________________________________________________
macro
CheckSelector &debugSwitch=testScriptManager,&aSize=argSize,&rSize=resultSize
if &eval(&debugSwitch) then
move.w 4(sp),d0 ; high bit set?
bge.s @0 ; no, bad
cmp.b #&aSize-4,d0 ; returnSize ok?
bne.s @0 ; bad
lsr.w #8,d0 ; get args
and.b #$7f,d0 ; mask top bit off
cmp.b #&rSize,d0 ; argSize ok?
beq.s @1 ; yes, skip
@0:
pea @2 ; string
_DebugStr
bra.s @1 ; continue
@2:
dc.b 'Bad Smgr Selector.'
align 2
@1:
endif
endMacro
; -----------------------------------------------------------------------------
; Private equates for Script Manager resource structures and Roman Interface System
; -----------------------------------------------------------------------------
; Roman script constants.
romanCoreSize equ ScriptRecord.scriptSize ; size of Roman globals.
; -----------------------------------------------------------------------------
; IntlTokenize, itl4 private equates
; -----------------------------------------------------------------------------
; moved the ones needed for itl4 into IntlResourcesPriv.a <74>
fExists equ 0
fIsEPlus equ 1
fIsEMinus equ 2
fIsPercent equ 3
fIsDecimal equ 4
fIsAltNum equ 5
fHi equ 0
fLo equ 1
fDEMEP equ $1600
fEMEP equ $0600
fEXISTF equ $0100
fExAlF equ $2100
fDPEMEP equ $1E00 ; <05/22/89 pke>
; The following is the internal format created by Str2Format and used by Format2Str,
; FormatStr2X, and FormatX2Str. The string in formString is a concatenation of the
; format specifier strings for each of the 3 formats. Bytes in formString with value <32
; are number parts token codes, as specified in ScriptEqu.a (tokLeftQuote,É); others
; are literals. The startLocs and decLocs arrays specify the start index and decimal
; point index in formString for each of the 3 possible formats. Since the start index
; for the positive format is always 1, startLocs[fPositive] instead has an index value
; just past the end of formString. The preDig and postDig arays specify the number of
; digits before and after the decimal point in each of the 3 formats. The high byte of
; the flags value for each format has bit flags whose bit numbers are defined above
; (fExists..fIsAltNum). <comment added 05/22/89 pke>
FormatStringPriv record 0,increment
fLength ds.b 1 ; length of format String (less this byte)
fVersion ds.b 1 ; version number
decLocs ds.w 3 ; ARRAY[fPositive..fZero] OF INTEGER
startLocs ds.w 3 ; ARRAY[fPositive..fZero] OF INTEGER
preDig ds.w 3 ; ARRAY[fPositive..fZero] OF INTEGER
postDig ds.w 3 ; ARRAY[fPositive..fZero] OF INTEGER
flags ds.w 3 ; ARRAY[fPositive..fZero] OF BitPack
fReserved ds.w 6
fixedLength equ *
formString ds.b 1 ; Pascal-style string of variable length
; (here we only show space for length byte)
ENDR
; ----------------------------------------------------------------------------- <6>
; New structure for justified text routines in RomanNewJust.a.
; Rearranged, fields renamed. <45><47>
;
; Fields marked (f) are set by InitFontAndScale, which must be called before
; any of the other routines listed below.
; Fields marked (w) are set by InitWeight (called by CalcSpChExtra if slop­0
; and it hasn't already been called within the current external routine)
; Fields marked (c) are set by CalcSpChExtra
; Fields marked (d) are set by DoSpChExtra
; The oldSpExtra field , marked (d?), is set by DoSpChExtra if it sets the
; corresponding restoreSE boolean TRUE.
; Flags marked (¥) are initialized to 0 by InitFontAndScale, and set later
; by the routine indicated.
;
; -----------------------------------------------------------------------------
JustDataRec record 0
inScaling ds.l 1 ;(f) Fixed, input horiz scaling (numer.h/denom.h) <38><47>
outScaling ds.l 1 ;(f) Fixed, output horiz scaling (numer.h/denom.h) <47>
charPortion ds.l 1 ;(w) Fixed, char portion
spPortion ds.l 1 ;(w) Fixed, space portion
weight ds.l 1 ;(w) Fixed, (num spaces)*sp + (adjusted num chars)*cp
runSlop ds.l 1 ;(c) Fixed, slop used to calculate Sp & Ch Extra <45>
addSpExtra ds.l 1 ;(c) Fixed, add'l SpaceExtra amount (signed!) <45>
addSpExScal ds.l 1 ;(c) Fixed, (add'l SpaceExtra amount)/hScaling <45>
addChExtra ds.l 1 ;(c) Fixed, add'l CharExtra amount (signed!)
addChExScal ds.l 1 ;(c) Fixed, (add'l CharExtra amount)/hScaling <45>
oldSpExtra ds.l 1 ;(d?)Fixed, old SpExtra value
noInterCh ds.b 1 ;(f) if TRUE, FOND does not allow interchar spacing <45>
inScalTrue ds.b 1 ;(f) if TRUE, inScaling ­ 1.0 <38><47>
outScalTrue ds.b 1 ;(f) if TRUE, outScaling ­ 1.0 <47>
startNoFwd ds.b 1 ;(¥w)if TRUE, start pen move is 0, not 0.5 ce
endBackup ds.b 1 ;(¥w)if TRUE, end pen move is -1.0ce, not -0.5ce
haveWeight ds.b 1 ;(¥c)if TRUE, we have computed the weight <45>
restoreSE ds.b 1 ;(d) if TRUE, we need to restore spExtra <47>
align 4 ; force size to long multiple for easy copy <45>
jdRecSize equ * ; size of record
endr
; Id & record for secret LaserWriter line layout pic opcode, 157. <45>
;
; This PicComment overrides the LaserWriter line layout algorithm, and
; contains parameters that will be passed directly to a PostScript awidthshow
; command. It only affects the next StdText call, and is only recognized by
; the LaserWriter driver.
clientLLComment equ 157 ; ID of secret PicComment
ClientLLRecord record 0,incr
chCount ds.w 1 ; textLen for next StdText
major ds.l 1 ; Fixed, point width added to space char
spChar ds.w 1 ; char to be used as space char
minor ds.l 1 ; Fixed, point width added to ALL chars
ulLength ds.l 1 ; Fixed, underline length
cllRecSize equ * ; size of record
endr
; Width table used in printing code, from equates in Print Shop PrEqu.a file. <45>
ThPrWidthTable record 0,incr
fntNum ds.w 1 ; font family number for this table
fntStyle ds.w 1 ; font style info (in lo byte)
fntType ds.b 1 ; 0=bitmap, 3=sfnt, 1=other spline (e.g. PS), -1=noWidthsFont
modFlag ds.b 1 ; set if natural widths have been modified
ptSize ds.l 1 ; pt size multiplier (Fixed)
styleDelta ds.l 1 ; value to be added to all width entry values (Fixed)
styleFactor ds.l 1 ; style multiplier for condense/expand (Fixed)
theTable ds.l 256 ; table of Fixed widths
prWTabSize equ * ; size of record
endr
; -----------------------------------------------------------------------------
; New structure for generic FindScriptRun table header <67>
; (moved from ScriptMgrExtensions.a)
; -----------------------------------------------------------------------------
FindScriptTable record 0
flags1 ds.b 1 ;
flags2 ds.b 1 ; must be negative to indicate new format
version ds.w 1 ;
length ds.w 1 ; total length of this table
classTableOffset ds.w 1 ; offset to main class table
auxCTableOffset ds.w 1 ; offset to aux class table (for 2-byte)
stateTableOffset ds.w 1 ; offset to state table
returnTableOffset ds.w 1 ; offset to table of return values
reserved ds.w 1 ;
endr
; -----------------------------------------------------------------------------
; Structure for ScriptToRange <68>
; -----------------------------------------------------------------------------
ScriptRange record 0,increment
min ds.w 1
max ds.w 1
endr
; -----------------------------------------------------------------------------
; Constants for new keyboard menu stuff <17>
; -----------------------------------------------------------------------------
kKeyboardMenuID equ -16491 ; <24>
kDefaultIMIconID equ -16492 ; <66>
kKeyboardMenuItemsID equ kKeyboardMenuID-4 ; STR# ID <71>
; indices for strings in Keyboard Menu STR# resource (kKeybdMenuItemsID)
DefMarkIndex equ 1 ; <33>
AboutKybdsIndex equ 2 ; <33>
;;NextScriptIndex equ 3 ; <24><33>currently not used
;;NextKeybdIndex equ 4 ; <24><33>currently not used
; indices for strings in About Keyboards dialogs <71>
kCheckActiveKbdIndex equ 1 ; checked menu item explanation index <71>
kRotateKbdsIndex equ 2 ; rotate keyboards and scripts index <71>
KeybdDefaultMrk equ $00 ; null is the default mark <31><43>
; -----------------------------------------------------------------------------
; Records of auxilliary information for Keyboard Menu. <24>
; -----------------------------------------------------------------------------
AuxKeyboardMenuInfo record 0 ; ptr stored in smgrKeyboardMenuPtr
IF 0 THEN ; <57>
IconSuiteH ds.l 1 ; IconSuiteH for this KCHR
KCHRid ds.w 1 ; KCHR id for current KCHR resource
KCHRposn ds.w 1 ; ordering within the script in the menu
ELSE ; <57>
itemRsrcID ds.w 1 ; KCHR/old-style IM resource id <57>
itemScriptPosn ds.w 1 ; ordering within the script in the menu (relative to script!)
itemType ds.b 1 ; 0 = KCHR, 1 = new IM, 2 = old IM <58>
itemUnused ds.b 1 ; unused byte: for future kludges <58>
iconSuiteH ds.l 1 ; IconSuiteH for this item
auxItemInfo ds.l 1 ; use as necc for the item (IM will store 'component') <57>
ENDIF ; <57>
AuxMenuInfoSize equ *
endr
IF 0 THEN ; <57>
KCHRInstalledRec record 0 ; ptr stored in KCHRInstalledPtr
KCHRhandle ds.l 1
KCHRid ds.w 1 ; needed for sorting of KCHR <33>
KCHRscript ds.w 1
KCHRname ds.b 256 ; needed for sorting of KCHR <33>
KCHRInstalledRecSz equ *
ELSE ; <57>
ItemInstalledRec record 0 ; ptr stored in KCHRInstalledPtr
itemHandle ds.l 1 ; resource handle for KCHR/ name handle for IM <57>
itemResID ds.w 1 ; needed for sorting of KCHR <33>
itemScript ds.w 1
itemInfo ds.l 1 ; auxilliary info - use as desired <57>
itemInpuType ds.b 1 ; 0 = KCHR, 1 = new IM, 2 = old IM <58>
unused ds.b 1 ; for future:use me <58>
itemName ds.b 256 ; needed for sorting of KCHR <33>
ItemInstalledRecSz equ *
ENDIF ; <57>
endr
; ------------------------------------------
; ------------------------------------------
; constants for type of keyboard menuitem <58>
KCHRitem equ 0
TSMIMitem equ 1 ; TextServicesMgr Input Method (new style)
oldIMitem equ 2 ; old style Input Method
; ------------------------------------------
; ------------------------------------------
; bits for CJKcount byte field in menuFrame in ScriptMgrKbdMenu.a <58>
; if the bit = 1 then this means there are input methods for this script,
; otherwise, if the bit = 0 then there are none for this script.
; maps to OCCJK where high means there's an 6.x compatible Japanese IM, the next bit
; is simplified Chinese, next is Traditional Chinese, then Japanese, and lowest is Korean.
HaveOldJapanIMbit equ 4 ; <61>
HaveSimpChineseIMbit equ 3
HaveTradChineseIMbit equ 2
HaveJapaneseIMbit equ 1
HaveKoreanIMbit equ 0
; ------------------------------------------
; ------------------------------------------
; Used for the componentFlags field of the component record. Needed to count IMs <58>
; for these scripts for the keyboard menu. These flags include the script code
; (bits 8-14) and the bit (bit 23) set that indicates that the text service
; (input method, in this case) will take an active key event.
SimpChineseFlags equ $00009900 ; $19 is script code, takes active key event
TradChineseFlags equ $00008200 ; $02 is script code, takes active key event
JapaneseFlags equ $00008100 ; $01 is script code, takes active key event
KoreanFlags equ $00008300 ; $03 is script code, takes active key event
ScriptMask equ $00007F00 ; only care about the script code of the componentFlags field
ScriptActiveEventMask equ $0000FF00 ; script code and takes active events mask
AllFlags equ $0000FFFF ; all flags can be set <72>
ActiveEventMask equ $00008000 ; only care if active event flag is set <72>
; ------------------------------------------
; ------------------------------------------
; To be used with the secret script flag for KanjiTalk: <58>
UsingOldStyleIM equ $FFFFFFFF
NotUsingOldStyleIM equ 00000000
; ------------------------------------------
; ------------------------------------------
; Records needed for adding old-style (pre-TSM) input methods to the keyboard <58>
; menu. Adding ScriptSystemGlobals record and intfRecord for access outside
; of an input method. Moved here from Kanji IM file ScriptInterface.equ.
; ------------------------------------------------------------------------------
; ScriptSystemGlobals - a pointer to these values is stored in the Kanji smgrEntry
; array of the script manager core. The standard scriptRecord must be defined
; at the top of the ScriptSystemGlobals.
; ------------------------------------------------------------------------------
; ------------------------------------------------------------------------------
; NewScriptSystemGlobals - all new globals should be added here. This record is
; added to the end of the ScriptSystemGlobals structure. Update the file
; ScriptInterface.h if you change or add any fields.
; ------------------------------------------------------------------------------
NewScriptSystemGlobals Record 0
fSavedStdTextBottleNeck ds.l 1 ; used in LaserPrinterStdText.c
fInputMethodWorkSpaceHandle ds.l 1 ; handle used as a place holder for input methods to work in
kNewScriptSystemGlobalsSize equ * ; size of record
EndR
ScriptSystemGlobals Record 0
ds.b ScriptRecord.scriptSize ; regular script globals.
FISError ds.w 1 ; result of last call to a FIS vector.
utilVector ds.l 1 ; utility routines dispatch.
fontVector ds.l 1 ; font routines dispatch.
intfVector ds.l 1 ; user interface routines dispatch.
utilErrors ds.l 1 ; hdl to string list of util errors
fontErrors ds.l 1 ; hdl to string list of font errors.
intfErrors ds.l 1 ; hdl to string list of interface errors.
fbitArray ds.l 1 ; table of fonts.
fdefArray ds.l 1 ; table of font definition procedures.
intfArray ds.l 1 ; table of input methods.
inQD ds.b 1 ; st -> don't allow entry to FIS StdTxMeas
normalEvents ds.b 1 ; st -> normal event processing in GOSEvent
debugging ds.b 1 ; st -> do debugging breaks
FISEvent ds.b 1 ; st -> OSEventAvail returned FIS.
teKeyBytes ds.w 1 ; two characters used for TextEdit buffering.
lastFbit ds.l 1 ; last fbit font used in SwapFIS.
lastFont ds.l 1 ; last Mac font used by SwapFIS.
grafWorld ds.l 1 ; valid GrafGlobals pointer.
FISPort ds.l 1 ; valid GrafPtr to default port.
charExtra ds.l 1 ; extra space for non-space characters.
spacePercent ds.l 1 ; percentage of slop in spaces vs chars.
errorAlrt ds.l 1 ; ptr to error alert rsrc.
errorDitl ds.l 1 ; ptr to error alert item list.
jSwapFIS ds.l 1 ; vector to SwapFIS routine.
jFindBlock ds.l 1 ; vector to FindBlock routine.
jLaserSize ds.l 1 ; vector to LaserSize routine.
imMethod ds.w 1 ; input method ID number.
imReEntry ds.b 1 ; input method reentrancy flag.
imUnused ds.b 1 ; unused byte.
imA5 ds.l 1 ; input method saved globals pointer.
imRTS ds.l 1 ; input method saved return address.
imHook ds.l 1 ; input method saved DeskHook.
imNotify ds.l 1 ; input method saved EjectNotify.
imTEbytes ds.w 1 ; saved TextEdit buffer bytes.
DJPrPort ds.l 1 ; printerPort when DrawJust PicComment sent for BackGround printing.
DJSextra ds.l 1 ; space extra when DrawJust PicComment sent for BackGround printing.
DJCextra ds.l 1 ; char extra when DrawJust PicComment sent for BackGround printing.
DJinPrint ds.b 1 ; true when DrawJust PicComment sent for BackGround printing.
DJUnused ds.b 1 ; unused byte.
scriptConfiguration equ * ; configuration variables.
bootMethod ds.w 1 ; boot input method ID number.
searchEject ds.b 1 ; st => eject diskette while looking.
useMicroFont ds.b 1 ; st => draw missing chars w/hex code.
newCharLoc ds.b 1 ; st => sequential placement of new.
fastEntry ds.b 1 ; st => fast entry of FIS is default.
;<7/20/88drs> added commonFont flag and cache flags, reduced reserved by 2
commonFont ds.b 1 ; st => map small FIS to common font
cacheOn ds.b 1 ; st => FIS cache is on
cacheSize ds.b 2 ; size of FIS cache in KBytes
FractFlag ds.b 1 ; Fract enable on switch
PSGaijiFlag ds.b 1 ; PostScript UserDefine character on
UnderLineFlag ds.b 1 ; UnderLine on
StyleTextFlag ds.b 1 ; StyleText checkbox.
ds.l 2 ; Array [1..2] Of LongInt;
cachePtr ds.l 1 ; global cache pointer to system heap
inJust ds.b 1 ; st -> Doing DrawJust call.
hasLaunch ds.b 1 ; st -> if launch has been called before.
fSavedInputMethodZone ds.l 1 ; current zone saved across IntfDispatch calls
ds.b 1 ; reserved - don't use
ds.b 1 ; reserved - don't use
SFOpenTrp ds.l 1 ; SingleFinder Trap Address
fMultiFinderOpenTrap ds.l 1
origHFSDispatch ds.l 1 ; saved HFSDispatch Trap aaddress
imGrafGlobals ds.l 1 ; input method saved current GrafGlobals.
;<7/20/88drs> repaired screwed up reserved length
ds.l 5 ; reserved.
;<3> Added storage fields for the scriptFileName and scriptName core globals
scriptFileNameStorage ds.b 32
scriptNameStorage ds.b 32
fNewScriptGlobals ds.b NewScriptSystemGlobals.kNewScriptSystemGlobalsSize
kScriptSystemGlobalsSize equ * ; size of script globals.
EndR
; -----------------------------------------------------------------------------
; Record for the table of user interface routines.
; Note that the intfID field must come first (required by GetIDEntry call)
; -----------------------------------------------------------------------------
intfRecord Record 0 ;
intfID ds.w 1 ; user interface ID number.
intfEntry ds.l 1 ; user interface routine pointer.
intfA5 ds.l 1 ; user interface globals.
intfFlags ds.w 1 ; interface flags.
ds.l 2 ; reserved.
intfName ds.b 64 ; interface name string.
intfFile ds.b 64 ; name of interface file.
intfVol ds.w 1 ; volume for interface file.
intfSize equ * ; Record size.
EndR ;
intfFReady equ 15 ; ready flag.
intfFActive equ 14 ; active flag.
;------------------------------------------------------------------------------
; Selectors for Activating and Deactivating old input methods
;------------------------------------------------------------------------------
selActivate equ $00060006 ; activate event.
selDeactivate equ $00060008 ; deactivate event.
; -----------------------------------------------------------------------------
; Utility routine errors.
; -----------------------------------------------------------------------------
euError equ $0400 ; utility errors. (id=1024)
euNoErr equ 0 ; No error.
euBadCode equ euError+1 ; Bad value passed for JIS-SJIS-index.
euBadIndex equ euBadCode+1 ; Index out of range.
euBadID equ euBadIndex+1 ; ID not found in table.
euMemory equ euBadID+1 ; memory manager error.
euExtJIS equ euMemory+1 ; JIS code in extended range.
euBadOffset equ euExtJIS+1 ; bad offset passed to routine.
euHighOffset equ euBadOffset+1 ; no char info; offset => high byte.
; -----------------------------------------------------------------------------
; Secret verb which is used for checking on input method type. <2>
; -----------------------------------------------------------------------------
kUsingOldInputMethodVerb equ -1000
; ----------------------------------------------------------------------------- <58>
; Routine IntfActivate(volRef: Integer; fileName: Str255);
; Input sp.w Refnum of current system folder volume.
; sp.l Ptr to name of input method file.
; Output
; Function Tell the user interface to allocate any heap storage it might
; need and/or read in resources from its file. After this call
; the input method must be ready to accept all interface calls
; to it; this implies it's ready to handle conversion.
; -----------------------------------------------------------------------------
Macro
IntfActivate
With ScriptSystemGlobals,SMgrRecord
move.l #selActivate,-(sp)
GetSmgrCore a0 ; load script manager core.
move.l smgrEntry+(smJapanese*4)(a0),a0 ; load doubleTalkRecord for Japanese.
move.l intfVector(a0),a0
jsr (a0)
EndWith
endMacro
; -----------------------------------------------------------------------------
; Routine IntfDeactivate(volRef: Integer; fileName: Str255);
; Input sp.w Refnum of system folder volume that was passed at
; activate time.
; sp.l Ptr to name of input method file.
; Output
; Function Tell the user interface to free any heap storage it might have
; and/or release any resources that came from its file. After
; this call the input method should not receive any calls except
; for ShutDown, Ready and Activate.
; -----------------------------------------------------------------------------
Macro
IntfDeactivate
With ScriptSystemGlobals,SMgrRecord
move.l #selDeactivate,-(sp)
GetSmgrCore a0 ; load script manager core.
move.l smgrEntry+(smJapanese*4)(a0),a0 ; load doubleTalkRecord for Japanese.
move.l intfVector(a0),a0
jsr (a0)
EndWith
endMacro
; ----------------------------------------------------------------------------- <58>
; -----------------------------------------------------------------------------
; Record for each entry in new-format itl handle cache. <18>
; -----------------------------------------------------------------------------
NewItlCacheRec record 0
script ds.w 1 ; script code for this entry
itl2Id ds.w 1 ; ID of itl2 whose handle is cached
itl2Handle ds.l 1 ; itl2 handle
itl4Id ds.w 1 ; ID of itl4 whose handle is cached
itl4Handle ds.l 1 ; itl4 handle
newItlCacheRecSize equ * ; size of record
endr
; -----------------------------------------------------------------------------
; Record for application-specific ScriptMgr globals. <31>
; -----------------------------------------------------------------------------
SMgrAppRecord record 0
; space used by one-byte extension <62>
fSavedPort ds.l 1 ; GrafPtr, for saved port
fKashidaSlop ds.l 1 ; Fixed, kashida slop passed from drawjust/piccomment
fScaleFactor ds.l 1 ; long, for kashida scaling
fGeneralFlags ds.l 1 ; long
ds.l 4 ; reserved
; space for other things
smgrAppDisableKybds ds.b 1 ; T=>disable keybds not in Sys/Roman script/1=>disable all kbds <63>
ds.b 3 ; reserved
ds.l 3 ; reserved
smgrAppRsvdSize equ * ; size excluding cache part
; itl2/itl4 handle cache
smgrAppCacheCount ds.w 1 ; number of records in cache (# of enabled scripts)
smgrAppCacheStart equ * ; cache: one or more records of type NewItlCacheRec
endr
; -----------------------------------------------------------------------------
; Record for 'itlm' resource header. <18><29>
; -----------------------------------------------------------------------------
ItlmHeaderRec record 0
version ds.w 1 ; resource version number
format ds.w 1 ; format code
numTables ds.w 1 ; number of tables
scriptDataOffset ds.l 1 ; offset from beginning to scriptData table
scriptDataLength ds.l 1 ; length of scriptData table
langDataOffset ds.l 1 ; offset from beginning to langData table
langDataLength ds.l 1 ; length of langData table
regionDataOffset ds.l 1 ; offset from beginning to regionData table
regionDataLength ds.l 1 ; length of regionData table
endr
; -----------------------------------------------------------------------------
; The following were commented out in 6.0.3 version; where else are they defined?
; -----------------------------------------------------------------------------
; private equates for ADB
keyCacheMin equ 2048 ; minimum size for key Cache
keyCacheSlop equ 512 ; extra room over and above KCHR 0 size
kybdADBAddr equ 2 ; universal keyboard
dbDataAreaAddr equ 6 ; data area in keyboard
KybdDriverData record 0
KMAPPtr ds.l 1 ; pointer to KMAP
KeyBits ds.b 128/8 ; 128 bits correspond to keyboard map
KCHRPtr ds.l 1 ; pointer to KCHR
DeadKey ds.l 1 ; dead key state - long! <3.5>
endR
;******
ENDIF ; ...already included