; Version: 3.18 ; Created: Friday, October 20, 1989 at 9:46:43 PM ; ; File Script.a ; ; Assembler Interface to the Macintosh Libraries ; Copyright Apple Computer, Inc. 1986-1992 ; All Rights Reserved ; ; ----------------------------------------------------------------------------- ; Script Manager equates file. ; ; This file contains all equates for the script environment, shared ; equates for the script interface systems, equates that are special for ; the Roman Interface System, and all equates for the script interface ; system package. ; ----------------------------------------------------------------------------- ; ; Change History (most recent first): ; ; <54> 10/16/92 PKE For new IM: Add trap macros for new names for old routines. ; <53> 7/1/92 DCL This file is the replacement for the now obsolete ScriptEqu.a. ; Changed the 'including' name to match the new file name. ; <52> 6/23/92 SMB #1029263,: Added new flag, smsfSynchUnstyledTE, to the ; 'itlb' flags field to handle font & keyboard synchronization for ; unstyled TE. ; <51> 4/21/92 DCL #1027048 Added smCharBopomofo, ; smTransRuleBaseFormat,smTransHangulFormat, ; smTransPreDoubleByting, smTransPreLowerCasing, Itl5, ; RuleBasedTrslRecord. ; <50> 4/8/92 PKE #1026516,: Move SCxxx interfaces for some ScriptMgr routines ; from private interfaces (ScriptPriv.a) to public (here). ; <49> 4/3/92 gbm Change smKeyDisabState to a kinder, gentler spelling. ; (smKeyDisableState) ; <48> 4/3/92 PKE #1026378,: Add CharType constants smCharContextualLR and ; smCharNonContextualLR; already used for Thai and Cyrillic. ; <47> 3/30/92 PKE #1022875,: Fix previous comment - got confused by new checkin ; procedure and gave this file another file's comment. ; <46> 3/30/92 PKE #1022875,: Add smKeyRoman verb for KeyScript (to use in KSWP) ; that sets keyboard script to Roman only if other scripts are ; installed; otherwise, it does nothing, and the corresponding ; KSWP key combination is not stripped from the event queue. ; <45> 2/10/92 YS 1014691, added a flag 'smfUseAssocFontInfo' in smGenFlags. ; <44> 1/13/92 PKE 1019369, add smKeyDisabState verb for GetEnvirons to get the ; current keyboard disable state. ; <43> 12/11/91 PKE Define new public interfaces SCGetScriptRoutineAddr, ; SCSetScriptRoutineAddr, SCGetQDPatchAddr, SCSetQDPatchAddr which ; are implemented by one-byte script extension. ; <42> 11/25/91 PKE Define new smScriptFlags bit smsfUnivExt. Define new KeyScript ; verbs smKeySetDirLeftRight, smKeySetDirRightLeft. ; <41> 9/27/91 SMB For Cube-E (and Bruges) - define system direction bit, ; itlcSysDirection, for itlcSysFlags and added bit definitions, ; itlcShowIcon and itlcDualCaret, for the itlcFlags. ; <40> 9/25/91 PKE For Cube-E (and Bruges): Add itlcSysFlags field to ItlcRecord. ; <39> 8/20/91 KSM pke,#Bruges: Added a new script code smAllScripts to indicate ; meaning no preference for script code or any script code. ; <38> 8/15/91 MH correct the definition of romanFlags. Assembler operator ; precedence (+ before <<) caused the old expression to evaluate ; to 32 instead of 7. Parentheses have been added to override the ; precedence. ; <37> 8/14/91 JL Took ':' off of field names in the TogglePB record. ; <36> 1/30/91 gbm sab, #38: Change the ‘already including this file’ variable to ; all uppercase (for security reasons) ; <35> 1/28/91 PKE bbm: Add constants for use with CharType and Transliterate on ; Chinese and Korean systems. ; <34> 1/10/91 PKE (csd) Change names for “ring” and “breve” constants (too ; ambiguous) to “ringMark” and “breveMark”. ; <33> 1/2/91 PKE (bbm) Updated comments and rearranged a few constants to match ; latest Inside Mac summary. Added tokenCaret as correct spelling ; for tokenCarat. ; <32> 12/15/90 PKE (KSM) Update some new constants used with 2-byte script systems. ; <31> 12/14/90 SMB (csd) I forgot the approval signature for the previous change. ; <30> 12/14/90 SMB Moving KeyScript verb, smKeyModalDialog, to ScriptPriv.a. ; <29> 9/16/90 PKE In NItl4Rec, rename ‘resHeader1’ field to ‘format’, since that ; is how we now use it. ; <28> 9/15/90 SMB (PKE) Added itl2FormatOffset constant: offset to format word in ; itl2 header. Defined format code, hdrExtensionsExist, indicating ; presence of length fields and an additional offset/length pair ; for FindScriptTable. ; <27> 9/10/90 PKE Add smCurrentScript constant. Add more FIS constants from Joel ; Cannon. ; <26> 8/23/90 PKE (per JT) Restored smFISClassXXX constants to original values ; (backed out of part of change <5>). ; <25> 8/16/90 SMB Added new KeyScript verb for ModalDialogs so that the About ; Keyboards menu item can be disabled. ; <24> 8/5/90 SMB Added new KeyScript verb to disable the keyboard menu when a ; KCHR is being moved into or out of the System file. ; <23> 8/2/90 PKE Added smSystemScript constant (meta-script code, designates the ; system script). Moved obsolete script codes to end of their section. ; Added constants for values of scriptRedraw field. Cleaned up ; negative KeyScript verbs: deleted smKeyLastScript synonym, added ; smKeyDisableKybds and smKeyEnableKybds, renumbered ; smKeyNextInputMethod and smKeySwapInputMethod. Rearranged file ; to move routine selectors and macros to end, group other parts ; more logically. ; <22> 7/17/90 PKE Changed reserved field in ItlbRecord to itlbEncoding (contains ; ID of itl5, optional char encoding resource), and changed name ; of corresponding GetScript verb. In NItl4Rec, changed ; itl4HeaderSize to nItl4HeaderSize to avoid name conflict with ; Itl4Rec. Fixed a few comments. ; <21> 6/22/90 PKE Moved language codes to a new file, LanguageEqu.a, and ; rearranged the new ones. Added smExtArabic as synonym for ; smSindhi, smEastEurRoman as synonym for smSlavic. ; <20> 6/20/90 PKE Changed tentative value for smCharFISHangul to eliminate ; conflict with Arabic/Hebrew; added smCharExtAscii and ; smCharBidirect. Added smEthiopic (synonym for smGeez) plus about ; 80 new language codes covering most languages we are likely to ; handle; also added some synonyms for existing language codes. ; Changed resLength6 field in NItl4Rec to whtSpListLength. ; <19> 6/12/90 PKE Fixed a misspelled constant name: toeknRightSingGuillemet. Added ; new calendar code calPersian, per Hani Abdelazim. Added ; smKeySwapScript as synonym for smKeyLastScript (using new ; terminology), and added several new KeyScript verbs that may be ; implemented by script systems. Still need to renumber ; smCharFISHangul, since it conflicts with Arabic/Hebrew CharType ; values. Also need to convert itl2 header offsets into a record, ; and add constant names for all characters in Roman font. ; <18> 5/31/90 PKE Added new GetScript verbs: smScriptValidStyles, ; smScriptAliasStyle. Added new fields to ItlbExtRecord: ; itlbValidStyles, itlbAliasStyle. ; <17> 5/24/90 PKE Changed selectors to account for new numer/denom scaling ; parameters in NPortionText, NDrawJust, NMeasureJust, ; NChar2Pixel, and NPixel2Char. ; <16> 5/21/90 PKE Added smfNameTagEnab constant for flag bit, enables script tag ; in Finder names. ; <15> 5/18/90 PKE Added new tokens tokenEllipsis and tokenCenterDot. Fixed ; spelling of tokenTilde. Changed truncMarkOffset to ; whtSpListOffset in NItl4Rec. ; <14> 5/11/90 PKE Added new constants smTradChinese, smSimpChinese, ; langTradChinese, langSimpChinese. Deleted smMaldivian! ; <13> 5/1/90 PKE Added constants for negative KeyScript verbs and for ; TruncText/TruncString results. ; <12> 4/27/90 gbm prevent redefinition errors by avoiding multiple inclusion ; <11> 3/23/90 PKE Deleted special roman font equates that were new for 7.0 (see ; <1.9>), since we now get this information from a resource. ; <10> 3/21/90 PKE Just corrected previous comment. ; <9> 3/21/90 PKE Added smScriptAppFondSize and smScriptHelpFondSize verbs for ; GetScript/SetScript. Added fields in ItlbExtRecord for Help Mgr ; font & size. Rearranged the length fields in NItl4Rec to be ; correct. ; <8> 3/21/90 SMB Adding ItlbExtRecord which is needed for auto initialization of ; scripts. Also added smsfAutoInit bit in smScriptFlags and ; smUprHalfCharSet. Added FindScriptTableOffset and ; FindScriptTableLen. ; <7> 3/7/90 JAL Official MPW version ; <6> 3/5/90 PKE For MPW release: Changed the selectors for TruncString and ; TruncText to have the same values as the temporary NTruncXxx ; selectors (i.e., to include the truncWhere parameter). Deleted ; the NTruncXxx selectors and macros. This change should put this ; file into releasable shape. ; <5> 3/2/90 PKE Removed version number constants: smgrVers (Script Mgr), ; romanVers (Roman script system). Removed definitions of private ; constants that had already been conditionalized out and moved to ; ScriptPriv.a: smLastEVerb, smLastSVerb, smLowCall, sisHighCall, ; fisHighCall. Corrected smFISClassXXX constants. Removed 7.0 ; conditionalization in itlcRecord, and renamed the now-shortened ; reserved area from itlcReserved2 to itlcReserved3. Removed ; DateTimeRec (conditionalized out anyway). Gave new names ; ‘IUNSortFrame’ and ‘nItl4Rec’ to the extended versions of ; IUSortFrame and Itl4Rec, and unconditionalized the old versions ; so they don’t change. Removed all bigBangEquates conditionals. ; <4> 1/17/90 PKE Added itlcRegionCode field to itlcRecord. Fixed some tabs and ; comments. ; <3> 1/17/90 PKE Added new constants: smCyrillic as synonym for smRussian, new ; smRegionCode verb for GetEnvirons, and several new langXxx ; constants. ; <2> 1/11/90 PKE Added macros for new interfaces: NPortionText, NDrawJust, ; NMeasureJust, NChar2Pixel, NPixel2Char. Added smXxxStyleRun ; constants used in new interfaces. Moved definitions of ; sisHighCall and fisHighCall from here to ScriptPriv.a. Updated ; header to BBS format. ; <1> 12/17/89 CCH Adding for the first time into BBS. ; (BBS versions above, EASE versions below) ; <2.7> 11/8/89 PKE Add temporary interfaces NTruncString and NTruncText for the ; new-style Trunc routines that expect a truncWhere parameter. ; Eventually, the standard Trunc routine interfaces will be ; changed to use this parameter. Add constants for truncWhere ; parameter. ; <2.6> 10/2/89 PKE Added smKCHRCache verb for GetEnvirons. ; <2.5> 9/19/89 PKE Add 8 length words to Itl4Rec. Add wordTableLen and wrapTableLen ; offsets for new length block in itl2 header. ; <2.4> 9/17/89 PKE Added smDoubleByte verb for Get/Set Environs. Moved definitions ; of smLastEVerb, smLastSVerb, and smLowCall/smLowCall60x to ; ScriptPriv.a so we can conditionalize them; they don't need to ; be public anyway. Added langKorean. Updated romanVers for 7.0. ; <2.3> 9/15/89 PKE Added back selector and macro for NFindWord (!), but use it ; differently. Also add selectors and macros for ; TruncText,TruncString, ReplaceText. Added itl2Handle to ; IUSortFrame. Add smLowCall60x. Define truncMarkOffset field in ; Itl4Rec. ; <2.2> 9/5/89 PKE Get rid of NFindWord selector; it was a bad idea. The 7.0 glue ; code now routes calls with the old FindWord selector to the new ; FindWord when possible. Leave conditionals for future use. ; <2.1> 9/4/89 PKE Add NFindWord selector and macro. Eventually, FindWord will use ; the same selector, but for now we will keep them separate so ; that we can do 6.0.4 and 6.0.5 builds. ; <2.0> 8/5/89 PKE NEEDED FOR 6.0.4: Corrected selector for RawPrinterValues. ; <1.9> 6/23/89 PKE For 7.0: Make Script Manager version 7.xx for Big Bang, add new ; GetScript/SetScript verbs for font info, add new font constants ; for Roman. ; <1.8> 6/6/89 PKE Added toggleOutOfRange constant (will also be in MPW 3.1) ; <•1.7> 5/25/89 MSH Ported from main EASE sources. ; <1.6> 5/25/89 PKE More additions (will be in MPW 3.1)- added smGeez, ; genCdevRangeBit, and new token types for IntlTokenize. ; <1.5> 4/23/89 PKE Corrections & additions to match MPW 3.1 ScriptEqu.a; moved ; _LwrString & DateTimeRec definitions elsewhere to match MPW 3.0. ; <1.4> 4/7/89 PKE Added new itl2 table offsets (moved here from ScriptPriv.a); ; added names for new ToggleDate/ValidDate flags bits ; <1.3> 3/28/89 PKE Added script icon location info to itlcRecord. ; <1.2> 2/14/89 PKE Updated to use MPW 3.0 final ScriptEqu.a equate names; also ; added smCharLeft & smCharRight and fixed weekOfYearMask & ; cantReadUtilities to match MPW version; fixed _GetFormatOrder ; macro (wrong in MPW) ; <1.1> 12/2/88 PKE Commented macros that had code as DC.Ws; sync'ed with Projector ; <1.0> 11/9/88 CCH Adding to EASE. ; (old EASE history below) ; <1.4> 10/27/88 LDC Mods by Carl Hewitt and Brian McGhie in the process of putting ; Script Manager in ROM ; <1.3> 10/10/88 BBM updated to version 2.11. ; <1.2> 10/10/88 BBM updated to version 2.0. ; 9/30/88 ldc Added twelveHourBit for ValidDate ; 9/23/88 ldc Bumped version ; <•1.1> 9/14/88 CCH Updated EASE with the current rev of this file. ; (pre-EASE history below) ; 9/7/88 ldc Added fEmptyFormatString to FormatResultType ; 7/25/88 ldc Changed names of DateTime error equs for Keithen ; 7/12/88 ldc Added macintosh character set extension equates ; 7/8/88 ldc Bumped version for first pass at Altair ; 6/28/88 ldc Commented out _ScriptUtil for MPW 3.0 ; 6/28/88 smb Added delimPad as a new token for the tokenizer. Spelling fix ; from langFinish to langFinnish. ; 6/27/88 ldc Bumped version number ; 6/23/88 ldc Bumped version number ; 6/13/88 ldc Bumped version number ; 6/7/88 med Bumped version number ; 4/1/88 smb Added number format equates (used by Numberparts record) back ; from nScriptEqu.priv. ; 3/24/88 smb Modified NumFormatString to hide private info and made number ; format equates private (see nScriptEqu.priv); added ; ScriptRunStatus and UntokenTable records. ; 3/21/88 med Added interface for VisibleLength procedure ; 3/19/88 ldc changed fNoRoomFill to reserved ; 3/15/88 smb Updated to resemble the Pascal version of this file, nScript.p, ; and to reflect the Script Manager 2.0 ERS. ; 3/14/88 ldc Added version to number parts table ; 2/23/88 ldc Changed error codes ; 1/13/88 med Misc equate changes ; 1/6/88 med Added PortionText, FindScriptRun macros ; 1/4/88 med Added itl4 record definition ; 11/16/87 med Added dispatches, fixed smScriptFlags, make TokenResults record ; 11/10/87 med Added itl3,4 equates ; 10/28/87 med Added new verbs for sm1.2 routines ; 8/21/87 med Added general flags to itlc ; 8/18/87 med Added smCharPortion verb ; 8/15/87 med Filled out itlc record for new keyboard ; 7/18/87 med Added bits for contextual scripts ; 7/7/87 med Added environment flags verb ; 5/20/87 med Added some scriptFlags constants requested by Paris IF &TYPE('__INCLUDINGSCRIPT__') = 'UNDEFINED' THEN __INCLUDINGSCRIPT__ SET 1 ; ----------------------------------------------------------------------------- ; Script System constants. smSystemScript EQU -1 ; designates system script <23> smCurrentScript EQU -2 ; designates current font script <27><33> smAllScripts EQU -3 ; designates any script <39> smRoman EQU 0 ; Roman smJapanese EQU 1 ; Japanese smTradChinese EQU 2 ; Traditional Chinese <14> smKorean EQU 3 ; Korean smArabic EQU 4 ; Arabic smHebrew EQU 5 ; Hebrew smGreek EQU 6 ; Greek smCyrillic EQU 7 ; Cyrillic <3> smRSymbol EQU 8 ; Right-left symbols smDevanagari EQU 9 ; Devanagari smGurmukhi EQU 10 ; Gurmukhi smGujarati EQU 11 ; Gujarati smOriya EQU 12 ; Oriya smBengali EQU 13 ; Bengali smTamil EQU 14 ; Tamil smTelugu EQU 15 ; Telugu smKannada EQU 16 ; Kannada/Kanarese smMalayalam EQU 17 ; Malayalam smSinhalese EQU 18 ; Sinhalese smBurmese EQU 19 ; Burmese smKhmer EQU 20 ; Khmer/Cambodian smThai EQU 21 ; Thai smLaotian EQU 22 ; Laotian smGeorgian EQU 23 ; Georgian smArmenian EQU 24 ; Armenian smSimpChinese EQU 25 ; Simplified Chinese <14> smTibetan EQU 26 ; Tibetan smMongolian EQU 27 ; Mongolian smGeez EQU 28 ; Geez/Ethiopic <1.6> smEthiopic EQU 28 ; Synonym for smGeez <20> smEastEurRoman EQU 29 ; Extended Roman for Slavic & Baltic langs <21> smVietnamese EQU 30 ; Extended Roman for Vietnamese smExtArabic EQU 31 ; Extended Arabic for Sindhi, etc. <21> smUninterp EQU 32 ; uninterpreted symbols, e.g. palette symbols ; Obsolete names for script systems (kept for backward compatibility). smChinese EQU 2 ; (use smTradChinese or smSimpChinese). <14> smRussian EQU 7 ; (old name for smCyrillic). ;smMaldivian EQU 25 ; (no more smMaldivian!) <14> smAmharic EQU 28 ; (old name for smGeez) smSlavic EQU 29 ; (old name for smEastEurRoman) smSindhi EQU 31 ; (old name for smExtArabic) <21> ; Language codes - moved to LanguageEqu.a <21> ; Calendar Codes calGregorian EQU 0 calArabicCivil EQU 1 calArabicLunar EQU 2 calJapanese EQU 3 calJewish EQU 4 calCoptic EQU 5 calPersian EQU 6 ; <19> ; Integer Format Codes intWestern EQU 0 intArabic EQU 1 intRoman EQU 2 intJapanese EQU 3 intEuropean EQU 4 intOutputMask EQU $8000 ; CharByte byte types. smSingleByte EQU 0 smFirstByte EQU -1 smLastByte EQU 1 smMiddleByte EQU 2 ; CharType field masks smcTypeMask EQU $000F smcReserved EQU $00F0 smcClassMask EQU $0F00 smcOrientationMask EQU $1000 ; two-byte script glyph orientation <27><33> smcRightMask EQU $2000 smcUpperMask EQU $4000 smcDoubleMask EQU $8000 ; Basic CharType character types. smCharPunct EQU $0000 smCharAscii EQU $0001 smCharEuro EQU $0007 smCharExtAscii EQU $0007 ; More correct synonym for smCharEuro <20> ; Additional CharType character types for script systems. smCharKatakana EQU $0002 ; Japanese Katakana <32> smCharHiragana EQU $0003 ; Japanese Hiragana <32> smCharIdeographic EQU $0004 ; Hanzi, Kanji, Hanja <32> smCharTwoByteGreek EQU $0005 ; 2-byte Greek in Far East systems <32> smCharTwoByteRussian EQU $0006 ; 2-byte Cyrillic in Far East systems <32> smCharBidirect EQU $0008 ; Arabic, Hebrew <20> smCharContextualLR EQU $0009 ; Contextual left-right: Thai, Indic scripts <48> smCharNonContextualLR EQU $000A ; Non-contextual left-right: Cyrillic, Greek <48> smCharHangul EQU $000C ; Korean Hangul <20><32> smCharJamo EQU $000D ; Korean Jamo <35> smCharBopomofo EQU $000E ; Chinese Bopomofo <51> ; old names for some of above, for backward compatibility smCharFISKana EQU $0002 ; Katakana smCharFISGana EQU $0003 ; Hiragana smCharFISIdeo EQU $0004 ; Hanzi, Kanji, Hanja smCharFISGreek EQU $0005 ; 2-byte Greek in Far East systems smCharFISRussian EQU $0006 ; 2-byte Cyrillic in Far East systems ; CharType punctuation sub-types. smPunctNormal EQU $0000 smPunctNumber EQU $0100 smPunctSymbol EQU $0200 smPunctBlank EQU $0300 ; NBSP is PunctNormal ; CharType punctuation sub-types for two-byte systems <27> smPunctRepeat EQU $0400 ; repeat marker <27><32><33> smPunctGraphic EQU $0500 ; line graphics <27><32> ; CharType Katakana and Hiragana sub-types for two-byte systems <27> smKanaSmall EQU $0100 ; small kana character <27> smKanaHardOK EQU $0200 ; can have dakuten <27> smKanaSoftOK EQU $0300 ; can have dakuten or han-dakuten <27> ; CharType Ideographic sub-types for two-byte systems smIdeographicLevel1 EQU $0000 ; level 1 char <32> smIdeographicLevel2 EQU $0100 ; level 2 char <32> smIdeographicUser EQU $0200 ; user char <32> ; old names for some of above, for backward compatibility smFISClassLvl1 EQU $0000 ; level 1 char <5><26> smFISClassLvl2 EQU $0100 ; level 2 char <5><26> smFISClassUser EQU $0200 ; user char <5><26> ; CharType Jamo sub-types for Korean systems <35> smJamoJaeum EQU $0000 ; simple consonant char <35> smJamoBogJaeum EQU $0100 ; complex consonant char <35> smJamoMoeum EQU $0200 ; simple vowel char <35> smJamoBogMoeum EQU $0300 ; complex consonant char <35> ; CharType glyph orientation for two-byte systems <27> smCharHorizontal EQU $0000 ; horizontal character form, or for both <27> smCharVertical EQU $1000 ; vertical character form <27> ; CharType directions smCharLeft EQU $0000 smCharRight EQU $2000 ; CharType case modifers. smCharLower EQU $0000 smCharUpper EQU $4000 ; CharType character size modifiers (1 or multiple bytes). smChar1byte EQU $0000 smChar2byte EQU $8000 ; Char2Pixel directions. smLeftCaret EQU 0 ; Place caret for left block. smRightCaret EQU -1 ; Place caret for right block. smHilite EQU 1 ; Direction is TESysJust. ; Transliterate target types for Roman. smTransAscii EQU 0 ; convert to ASCII smTransNative EQU 1 ; convert to font script <33> smTransCase EQU $FE ; convert case for all text smTransSystem EQU $FF ; convert to system script ; Transliterate target types for two-byte scripts <35> smTransAscii1 EQU 2 ; 1-byte Roman smTransAscii2 EQU 3 ; 2-byte Roman smTransKana1 EQU 4 ; 1-byte Japanese Katakana smTransKana2 EQU 5 ; 2-byte Japanese Katakana ; (no 1-byte hiragana) smTransGana2 EQU 7 ; 2-byte Japanese Hiragana smTransHangul2 EQU 8 ; 2-byte Korean Hangul <35> smTransJamo2 EQU 9 ; 2-byte Korean Jamo <35> smTransBopomofo2 EQU 10 ; 2-byte Chinese Bopomofo <35> ; Transliterate target modifiers. smTransLower EQU $4000 ; target becomes lowercase <33> smTransUpper EQU $8000 ; target becomes uppercase <33> ; Transliterate resource format numbers smTransRuleBaseFormat EQU 1 ; Rule based trsl resource format */ smTransHangulFormat EQU 2 ; Table based Hangul trsl resource format*/ ; Transliterate property flags smTransPreDoubleByting EQU 1 ; Convert all text to double byte before transliteration*/ smTransPreLowerCasing EQU 2 ; Convert all text to lower case before transliteration*/ ; Transliterate source mask - general. smMaskAll EQU $FFFFFFFF ; Convert all text ; Transliterate source masks for Roman. smMaskAscii EQU $00000001 ; 2^smTransAscii smMaskNative EQU $00000002 ; 2^smTransNative ; Transliterate source masks for two-byte scripts. <35> smMaskAscii1 EQU $00000004 ; 2^smTransAscii1 smMaskAscii2 EQU $00000008 ; 2^smTransAscii2 smMaskKana1 EQU $00000010 ; 2^smTransKana1 smMaskKana2 EQU $00000020 ; 2^smTransKana2 smMaskGana2 EQU $00000080 ; 2^smTransGana2 smMaskHangul2 EQU $00000100 ; 2^smTransHangul2 <35> smMaskJamo2 EQU $00000200 ; 2^smTransJamo2 <35> smMaskBopomofo2 EQU $00000400 ; 2^smTransBopomofo2 <35> ; Result values from GetEnvirons, SetEnvirons, GetScript and SetScript calls. smNotInstalled EQU 0 ; routine not available in script smBadVerb EQU -1 ; Bad verb passed to a routine. smBadScript EQU -2 ; Bad script code passed to a routine. ; Values for script redraw flag <23> smRedrawChar EQU 0 ; redraw character only smRedrawWord EQU 1 ; redraw entire word (2-byte systems) smRedrawLine EQU -1 ; redraw entire line (bidirectional systems) ; Result values from StyledLineBreak smBreakWord EQU 0 ; could break at word boundary smBreakChar EQU 1 ; had to break at char boundary smBreakOverflow EQU 2 ; text too short, width subtracted ; ----------------------------------------------------------------------------- ; GetEnvirons and SetEnvirons verbs. ; ----------------------------------------------------------------------------- smVersion EQU 0 ; Script Manager version number. <33> smMunged EQU 2 ; Globals change count. smEnabled EQU 4 ; Count of enabled scripts, incl Roman. <33> smBidirect EQU 6 ; At least one bidirectional script. <33> smFontForce EQU 8 ; Force font flag. smIntlForce EQU 10 ; Force intl flag. smForced EQU 12 ; Script was forced to system script. <33> smDefault EQU 14 ; Script was defaulted to Roman script. <33> smPrint EQU 16 ; Printer action routine. smSysScript EQU 18 ; System script. smLastScript EQU 20 ; Last keyboard script. smKeyScript EQU 22 ; Keyboard script. smSysRef EQU 24 ; System folder refNum. smKeyCache EQU 26 ; Obsolete <33> smKeySwap EQU 28 ; Swapping table handle. <33> smGenFlags EQU 30 ; general flags long smOverride EQU 32 ; script override flags smCharPortion EQU 34 ; Ch vs SpExtra proportion ; New for System 7.0: <2.4> smDoubleByte EQU 36 ; Flag for double-byte script installed <2.4> smKCHRCache EQU 38 ; Returns pointer to KCHR cache <2.6> smRegionCode EQU 40 ; Returns current region code (verXxx) <3> smKeyDisableState EQU 42 ; Returns current keyboard disable state <44> ; ----------------------------------------------------------------------------- ; GetScript and SetScript verbs. ; Note: verbs private to script systems are negative, while ; those general across script systems are non-negative ; ----------------------------------------------------------------------------- smScriptVersion EQU 0 ; Script software version. smScriptMunged EQU 2 ; Script entry changed count. smScriptEnabled EQU 4 ; Script enabled flag. smScriptRight EQU 6 ; Right to left flag. smScriptJust EQU 8 ; Justification flag. smScriptRedraw EQU 10 ; Word redraw flag. smScriptSysFond EQU 12 ; Preferred system font. smScriptAppFond EQU 14 ; Preferred Application font. smScriptBundle EQU 16 ; Beginning of itlb verbs. smScriptNumber EQU 16 ; Script itl0 id. smScriptDate EQU 18 ; Script itl1 id. smScriptSort EQU 20 ; Script itl2 id. smScriptFlags EQU 22 ; Script flags smScriptToken EQU 24 ; Script itl4 id. smScriptEncoding EQU 26 ; id of optional itl5, if present. <22> smScriptLang EQU 28 ; Current language for script smScriptNumDate EQU 30 ; Script Number/Date formats smScriptKeys EQU 32 ; Script KCHR id. smScriptIcon EQU 34 ; ID # of SICN or kcs#/kcs4/kcs8 suite. smScriptPrint EQU 36 ; Script printer action routine. smScriptTrap EQU 38 ; Trap entry pointer. smScriptCreator EQU 40 ; Script file creator. smScriptFile EQU 42 ; Script file name. smScriptName EQU 44 ; Script name. ; There is a hole here for old Kanji private verbs 46-76 ; New for System 7.0: <1.9> smScriptMonoFondSize EQU 78 ; default monospace FOND (hi) & size (lo) smScriptPrefFondSize EQU 80 ; preferred FOND (hi) & size (lo) smScriptSmallFondSize EQU 82 ; default small FOND (hi) & size (lo) smScriptSysFondSize EQU 84 ; default system FOND (hi) & size (lo) smScriptAppFondSize EQU 86 ; default application FOND (hi) & size (lo) <9> smScriptHelpFondSize EQU 88 ; default Help Mgr FOND (hi) & size (lo) <9> smScriptValidStyles EQU 90 ; mask of valid styles for script <18> smScriptAliasStyle EQU 92 ; style (set) to use for aliases <18> ; ----------------------------------------------------------------------------- ; Negative verbs for KeyScript <13><23> ; ----------------------------------------------------------------------------- smKeyNextScript EQU -1 ; Switch to next available script smKeySysScript EQU -2 ; Switch to the system script smKeySwapScript EQU -3 ; Switch to previously-used script <19> ; New for System 7.0 smKeyNextKybd EQU -4 ; Switch to next keyboard in current keyscript smKeySwapKybd EQU -5 ; Switch to previously-used keyboard in current keyscript ; (smKeySwapKybd is not implemented in System 7.0) smKeyDisableKybds EQU -6 ; Disable keyboards not in system or Roman script <23> smKeyEnableKybds EQU -7 ; Re-enable keyboards for all enabled scripts <23> ; Not currently implemented in System, may be implemented by script systems <19> ; (Renumbered smKeyNextInputMethod, smKeySwapInputMethod) <23> smKeyToggleInline EQU -8 ; Toggle inline input for current keyscript smKeyToggleDirection EQU -9 ; Toggle default line direction (TESysJust) smKeyNextInputMethod EQU -10 ; Switch to next input method in current keyscript <23> smKeySwapInputMethod EQU -11 ; Switch to last-used input method in cur keyscript <23> smKeyDisableKybdSwitch EQU -12 ; Disable switching from the current keyboard <24> smKeySetDirLeftRight EQU -15 ; Set default line dir to left-right, align left <42> smKeySetDirRightLeft EQU -16 ; Set default line dir to right-left, align right <42> smKeyRoman EQU -17 ; Set keyscript to Roman. Does nothing if Roman-only <46> ; system, unlike KeyScript(smRoman) which forces <46> ; an update to current default keyboard for Roman) <46> ; ----------------------------------------------------------------------------- ; Bits in the smScriptFlags word (bits above 8 are non-static) ; ----------------------------------------------------------------------------- smsfIntellCP EQU 0 ; script has intelligent cut & paste smsfSingByte EQU 1 ; script has only single bytes smsfNatCase EQU 2 ; native chars have upper & lower case smsfContext EQU 3 ; script is contextual <33> smsfNoForceFont EQU 4 ; script will not force characters smsfB0Digits EQU 5 ; script has alternate digits at B0-B9 smsfAutoInit EQU 6 ; auto initialize the script <8> smsfUnivExt EQU 7 ; script is handled by universal extension <42> smsfSynchUnstyledTE EQU 8 ; script synchronizes for unstyled TE <52> smsfForms EQU 13 ; uses contextual forms for letters smsfLigatures EQU 14 ; uses contextual ligatures smsfReverse EQU 15 ; reverses native text, right-left ; ----------------------------------------------------------------------------- ; Bits in the smGenFlags long. First (high-order) byte is set from itlc flags byte. ; ----------------------------------------------------------------------------- smfShowIcon EQU 31 ; show icon even if only one script smfDualCaret EQU 30 ; use dual caret for mixed direction text smfNameTagEnab EQU 29 ; reserved for internal use <16> smfUseAssocFontInfo EQU 28 ; Use the associated font info for FontMetrics calls <45> ; ----------------------------------------------------------------------------- ; Bits in the itlcFlags byte. ; ----------------------------------------------------------------------------- itlcShowIcon EQU 7 ; Show icon even if only one script <41> itlcDualCaret EQU 6 ; Use dual caret for mixed direction text <41> ; ----------------------------------------------------------------------------- ; Bits in the itlcSysFlags word. ; ----------------------------------------------------------------------------- itlcSysDirection EQU 15 ; System direction - left to right/right to left <41> ; ----------------------------------------------------------------------------- ; Roman script constants. ; ----------------------------------------------------------------------------- ; The following are here for backward compatibility, but should not be used. <19> ; This information should be obtained using GetScript. romanSysFond EQU $3FFF ; system font id number. romanAppFond EQU 3 ; application font id number. romanFlags EQU (1< ; ----------------------------------------------------------------------------- ; Macintosh character set extensions ; ----------------------------------------------------------------------------- diaeresisUprY EQU $D9 ; Ÿ fraction EQU $DA ; ⁄ intlCurrency EQU $DB ; € leftSingGuillemet EQU $DC ; ‹ rightSingGuillemet EQU $DD ; › fiLigature EQU $DE ; fi flLigature EQU $DF ; fl dblDagger EQU $E0 ; ‡ centeredDot EQU $E1 ; · baseSingQuote EQU $E2 ; ‚ baseDblQuote EQU $E3 ; „ perThousand EQU $E4 ; ‰ circumflexUprA EQU $E5 ; Â circumflexUprE EQU $E6 ; Ê acuteUprA EQU $E7 ; Á diaeresisUprE EQU $E8 ; Ë graveUprE EQU $E9 ; È acuteUprI EQU $EA ; Í circumflexUprI EQU $EB ; Î diaeresisUprI EQU $EC ; Ï graveUprI EQU $ED ; Ì acuteUprO EQU $EE ; Ó circumflexUprO EQU $EF ; Ô appleLogo EQU $F0 ;  graveUprO EQU $F1 ; Ò acuteUprU EQU $F2 ; Ú circumflexUprU EQU $F3 ; Û graveUprU EQU $F4 ; Ù dotlessLwrI EQU $F5 ; ı circumflex EQU $F6 ; ˆ tilde EQU $F7 ; ˜ macron EQU $F8 ; ¯ breveMark EQU $F9 ; ˘ <34> overDot EQU $FA ; ˙ ringMark EQU $FB ; ˚ <34> cedilla EQU $FC ; ¸ doubleAcute EQU $FD ; ˝ ogonek EQU $FE ; ˛ hachek EQU $FF ; (don't type it here - breaks MPW tools!) ; ----------------------------------------------------------------------------- ; Other new constants for 7.0 <2.7> ; ----------------------------------------------------------------------------- ; Constants for truncWhere argument in TruncString and TruncText <2.7> smTruncEnd EQU 0 ; Truncate at end smTruncMiddle EQU $4000 ; Truncate in middle ; Constants for TruncString and TruncText results <13> smNotTruncated EQU 0 ; No truncation was necessary smTruncated EQU 1 ; Truncation performed smTruncErr EQU -1 ; General error ; Constants for styleRunPosition argument in NPortionText, NDrawJust, NMeasureJust, <2> ; NChar2Pixel, and NPixel2Char. smOnlyStyleRun EQU 0 ; This is the only style run on the line. smLeftStyleRun EQU 1 ; This is leftmost of multiple style runs on the line. smRightStyleRun EQU 2 ; This is rightmost of multiple style runs on the line. smMiddleStyleRun EQU 3 ; There are multiple style runs on the line and this… ; …is neither the leftmost nor the rightmost. ; ----------------------------------------------------------------------------- ; Record declarations for itlc, itlb, itl2, itl4 ; ----------------------------------------------------------------------------- ; Record declaration for international configuration resource (type itlc). ItlcRecord record 0 itlcSystem ds.w 1 ; default system script. itlcReserved ds.w 1 ; reserved itlcFontForce ds.b 1 ; default font force flag. itlcIntlForce ds.b 1 ; default intl force flag. itlcOldKybd ds.b 1 ; MacPlus intl keybd flag <33> itlcFlags ds.b 1 ; general flags itlcIconOffset ds.w 1 ; keyboard icon offset (not in 7.0) <1.3><33> itlcIconSide ds.b 1 ; keybd icon side (R=0,L=$FF) (not 7.0) <1.3><33> itlcIconRsvd ds.b 1 ; rsvd for other icon info <1.3><33> itlcRegionCode ds.w 1 ; preferred verXxx code <4> itlcSysFlags ds.w 1 ; flags for setting system globals <40> itlcReserved4 ds.b 32 ; for future use <4><5><40> itlcSize equ * ; size of script itlc. endr ; Record declaration for international bundle resource (type itlb). ItlbRecord record 0 itlbNumber ds.w 1 ; itl0 ID number. itlbDate ds.w 1 ; itl1 ID number. itlbSort ds.w 1 ; itl2 ID number. itlbFlags ds.w 1 ; Script Flags. itlbToken ds.w 1 ; itl4 ID number. itlbEncoding ds.w 1 ; itl5 ID # (optional; char encoding). <22> itlbLang ds.w 1 ; current language for script itlbNumRep ds.b 1 ; number representation code itlbDateRep ds.b 1 ; date representation code itlbKeys ds.w 1 ; KCHR id number. itlbIcon ds.w 1 ; ID # of SICN or kcs#/kcs4/kcs8 suite. itlbSize equ * ; size of bundle. endr ; Extended itlb to support auto initialization of scripts <8> ItlbExtRecord record 0 base ds ItlbRecord ; un-extended itlbRecord itlbLocalSize ds.l 1 ; size of script's local record itlbMonoFond ds.w 1 ; default monospace FOND ID itlbMonoSize ds.w 1 ; default monospace font size itlbPrefFond ds.w 1 ; preferred FOND ID itlbPrefSize ds.w 1 ; preferred font size itlbSmallFond ds.w 1 ; default small FOND ID itlbSmallSize ds.w 1 ; default small font size itlbSysFond ds.w 1 ; default system FOND ID itlbSysSize ds.w 1 ; default system font size itlbAppFond ds.w 1 ; default application FOND ID itlbAppSize ds.w 1 ; default application font size itlbHelpFond ds.w 1 ; default Help Mgr FOND ID <9> itlbHelpSize ds.w 1 ; default Help Mgr font size <9> itlbValidStyles ds.b 1 ; mask of valid styles for script <18> itlbAliasStyle ds.b 1 ; style (set) to mark aliases <18> itlbExtSize equ * ; size of ItlbExtRecord endr ; itl2 routine vector offsets. initHook EQU 0 fetchHook EQU 2 vernierHook EQU 4 projectHook EQU 6 rsvdHook EQU 8 exitHook EQU 10 ; Note that the value of itl2FlagsOffset is equal ; to the value of rsvdHook. In the old itl2 ; format the value at this location was an ; unused routine offset. In the new itl2 ; format, the value at this location is a flag ; ($ffff) indicating the new format that includes ; the offsets to the tables for LwrString and ; tables for the Roman versions of the CharType, ; Transliterate and FindWord. itl2FlagsOffset EQU 8 ; itl2 table offsets typeListOffset EQU 12 classArrayOffset EQU 14 upperListOffset EQU 16 lowerListOffset EQU 18 upperNoMarkListOffset EQU 20 wordTableOffset EQU 22 wrapTableOffset EQU 24 noMarkListOffset EQU 26 itl2VersionOffset EQU 28 itl2FormatOffset EQU 30 ; <28> ; New for System 7.0:<2.5> ; itl2 table/code lengths. wordTableLen EQU 54 ; <2.5> wrapTableLen EQU 56 ; <2.5> findScriptTableOffset EQU 60 ; <8> findScriptTableLen EQU 62 ; <8> ; New for System 7.0: ; itl2FormatOffset definitions hdrExtensionsExist EQU 1 ; <28> ; String data structure for itl2 stack frames. IUStrData record 0 curChar ds.w 1 ; current character. mapChar ds.w 1 ; projected character. decChar ds.w 1 ; decision char for weak equality. bufChar ds.b 1 ; buffer for expansion. justAfter ds.b 1 ; boolean for AE vs ligature-AE. ignChar ds.b 1 ; flag: ignore char. noFetch ds.b 1 ; flag: no fetch of next. strCnt ds.w 1 ; length word. strPtr ds.l 1 ; current ptr to string. endr ; Stack frame for itl2 sorting routines. IUSortFrame record {oldA6},decrement result ds.w 1 aStrText ds.l 1 bStrText ds.l 1 aStrLen ds.w 1 bStrLen ds.w 1 return ds.l 1 oldA6 ds.l 1 aInfo ds IUStrData bInfo ds IUStrData wantMag ds.b 1 ; 0 to use primary differences only; else 1 <33> weakEq ds.b 1 ; Signals at most weak equality. msLock ds.b 1 ; (obsolete, not used) weakMag ds.b 1 ; -1 to force magnitude result (-1,0,1); else 0 <33> supStorage ds.b 18 ; extra storage. weakAPtr ds.l 1 ; sup. pointer weakBPtr ds.l 1 ; sup. pointer lkSize equ * ; frame size. paramBytes equ aStrText-return endr ; New for System 7.0: ; New stack frame for itl2 sorting routines in System 7.0; adds itl2Handle field. <5> IUNSortFrame record {oldA6},decrement result ds.w 1 aStrText ds.l 1 bStrText ds.l 1 aStrLen ds.w 1 bStrLen ds.w 1 return ds.l 1 oldA6 ds.l 1 aInfo ds IUStrData bInfo ds IUStrData wantMag ds.b 1 ; 0 to use primary differences only; else 1 <33> weakEq ds.b 1 ; Signals at most weak equality. msLock ds.b 1 ; (obsolete, not used) weakMag ds.b 1 ; -1 to force magnitude result (-1,0,1); else 0 <33> supStorage ds.b 18 ; extra storage. weakAPtr ds.l 1 ; sup. pointer weakBPtr ds.l 1 ; sup. pointer itl2Handle ds.l 1 ; itl2 handle, if supplied <2.3> lkSize equ * ; frame size. paramBytes equ aStrText-return endr Itl4Rec record 0,increment ; (added comments <33>) flags ds.w 1 ; reserved resourceType ds.l 1 ; contains 'itl4' resourceNum ds.w 1 ; resource ID version ds.w 1 ; version number resHeader1 ds.l 1 ; reserved resHeader2 ds.l 1 ; reserved numTables ds.w 1 ; number of tables, one-based ; the following offsets are from beginning of resource mapOffset ds.l 1 ; offset to table that maps byte to token strOffset ds.l 1 ; offset to routine that copies canonical string fetchOffset ds.l 1 ; offset to routine that gets next byte of character unTokenOffset ds.l 1 ; offset to table that maps token to canonical string defPartsOffset ds.l 1 ; offset to default number parts table resOffset6 ds.l 1 ; reserved resOffset7 ds.l 1 ; reserved resOffset8 ds.l 1 ; reserved itl4HeaderSize equ * ; the rest is data pointed to by offsets. endr ; New for System 7.0: <5> NItl4Rec record 0,increment ; (added comments <33>) flags ds.w 1 ; reserved resourceType ds.l 1 ; contains 'itl4' resourceNum ds.w 1 ; resource ID version ds.w 1 ; version number format ds.w 1 ; format code <29> resHeader ds.w 1 ; reserved <29> resHeader2 ds.l 1 ; reserved numTables ds.w 1 ; number of tables, one-based ; the following offsets are from beginning of resource mapOffset ds.l 1 ; offset to table that maps byte to token strOffset ds.l 1 ; offset to routine that copies canonical string fetchOffset ds.l 1 ; offset to routine that gets next byte of character unTokenOffset ds.l 1 ; offset to table that maps token to canonical string defPartsOffset ds.l 1 ; offset to default number parts table whtSpListOffset ds.l 1 ; offset to white space code list <2.3><15> resOffset7 ds.l 1 ; reserved resOffset8 ds.l 1 ; reserved resLength1 ds.w 1 ; reserved <2.5> resLength2 ds.w 1 ; reserved <2.5> resLength3 ds.w 1 ; reserved <2.5> unTokenLength ds.w 1 ; length of untoken table <2.5><9> defPartsLength ds.w 1 ; length of default number parts table <2.5><9> whtSpListLength ds.w 1 ; length of white space code list <2.5><9><20> resLength7 ds.w 1 ; reserved <2.5> resLength8 ds.w 1 ; reserved <2.5> nItl4HeaderSize equ * ; <22> ; the rest is data pointed to by offsets. endr ; ----------------------------------------------------------------------------- ; Record declarations and constants for date/time/location handling ; ----------------------------------------------------------------------------- LongDateRec record 0 ; zero any fields not used! era ds.w 1 year ds.w 1 month ds.w 1 day ds.w 1 hour ds.w 1 minute ds.w 1 second ds.w 1 dayOfWeek ds.w 1 dayOfYear ds.w 1 weekOfYear ds.w 1 pm ds.w 1 ldReserved ds.w 3 LongDateRecSize equ * endR LongDateTime record 0 ; record for comp type highLong ds.l 1 lowLong ds.l 1 endR ; date equates constants LongDateField record 0 ;DateField: enum type eraField ds.b 1 yearField ds.b 1 monthField ds.b 1 dayField ds.b 1 hourField ds.b 1 minuteField ds.b 1 secondField ds.b 1 dayOfWeekField ds.b 1 dayOfYearField ds.b 1 weekOfYearField ds.b 1 pmField ds.b 1 res1Field ds.b 1 res2Field ds.b 1 res3Field ds.b 1 maxDateField equ pmField ; currently largest used field eraMask equ 1< pmChars ds.l 1 ; ResType; from 'itl0', but uppercased <33> reserved ds.l 4 ; array [0..3] of Longint endR ToggleResults record 0 toggleUndefined ds.b 1 toggleOk ds.b 1 toggleBadField ds.b 1 toggleBadDelta ds.b 1 toggleBadChar ds.b 1 toggleUnknown ds.b 1 toggleBadNum ds.b 1 ; can't use char as number toggleOutOfRange EQU * ; synonym for toggleErr3 toggleErr3 ds.b 1 ; reserved toggleErr4 ds.b 1 ; reserved toggleErr5 ds.b 1 ; reserved endR MachineLocation record 0 latitude ds.l 1 ; fract longitude ds.l 1 ; fract dlsDelta ds.b 1 ; signed byte gmtDelta ds.b 3 ; 3 byte signed integer endR ; String2Date/String2Time status values fatalDateTime EQU $8000 ; String2Date and String2Time mask to a fatal error longDateFound EQU 1 ; String2Date mask to long date found leftOverChars EQU 2 ; String2Date & Time mask to warn of left over characters sepNotIntlSep EQU 4 ; String2Date & Time mask to warn of non-standard separators fieldOrderNotIntl EQU 8 ; String2Date & Time mask to warn of non-standard field order extraneousStrings EQU 16 ; String2Date & Time mask to warn of unparsable strings in text tooManySeps EQU 32 ; String2Date & Time mask to warn of too many separators sepNotConsistent EQU 64 ; String2Date & Time mask to warn of inconsistent separators tokenErr EQU fatalDateTime + 256 ; String2Date & Time mask for 'tokenizer err encountered' cantReadUtilities EQU fatalDateTime + 512 ; dateTimeNotFound EQU fatalDateTime + 1024 ; String2Date mask for 'date was not found' dateTimeInvalid EQU fatalDateTime + 2048 ; Invalid time/date e.g. 13:61PM DateOrders RECORD 0,INCREMENT mdy DS.B 1 dmy DS.B 1 ymd DS.B 1 myd DS.B 1 dym DS.B 1 ydm DS.B 1 ENDR ; ----------------------------------------------------------------------------- ; Constants and record declarations for tokenizer (added comments <33>) ; ----------------------------------------------------------------------------- tokenIntl EQU 4 ; the itl resource number for the tokenizer tokenEmpty EQU -1 ; used internally as an empty flag tokenUnknown EQU 0 ; chars that do not match a defined token type tokenWhite EQU 1 ; white space tokenLeftLit EQU 2 ; literal begin tokenRightLit EQU 3 ; literal end tokenAlpha EQU 4 ; alphabetic tokenNumeric EQU 5 ; numeric tokenNewLine EQU 6 ; new line tokenLeftComment EQU 7 ; open comment tokenRightComment EQU 8 ; close comment tokenLiteral EQU 9 ; literal tokenEscape EQU 10 ; character escape (e.g. '\' in "\n", "\t") tokenAltNum EQU 11 ; alternate number (e.g. $B0-B9 in Arabic,Hebrew) tokenRealNum EQU 12 ; real number tokenAltReal EQU 13 ; alternate real number tokenReserve1 EQU 14 ; reserved tokenReserve2 EQU 15 ; reserved tokenLeftParen EQU 16 ; open parenthesis tokenRightParen EQU 17 ; close parenthesis tokenLeftBracket EQU 18 ; open square bracket tokenRightBracket EQU 19 ; close square bracket tokenLeftCurly EQU 20 ; open curly bracket tokenRightCurly EQU 21 ; close curly bracket tokenLeftEnclose EQU 22 ; open guillemet tokenRightEnclose EQU 23 ; close guillemet tokenPlus EQU 24 tokenMinus EQU 25 tokenAsterisk EQU 26 ; times/multiply tokenDivide EQU 27 tokenPlusMinus EQU 28 ; plus or minus symbol tokenSlash EQU 29 tokenBackSlash EQU 30 tokenLess EQU 31 ; less than symbol tokenGreat EQU 32 ; greater than symbol tokenEqual EQU 33 tokenLessEqual2 EQU 34 ; less than or equal, 2 characters (e.g. <=) tokenLessEqual1 EQU 35 ; less than or equal, 1 character tokenGreatEqual2 EQU 36 ; greater than or equal, 2 characters (e.g. >=) tokenGreatEqual1 EQU 37 ; greater than or equal, 1 character token2Equal EQU 38 ; double equal (e.g. ==) tokenColonEqual EQU 39 ; colon equal tokenNotEqual EQU 40 ; not equal, 1 character tokenLessGreat EQU 41 ; less/greater, Pascal not equal (e.g. <>) tokenExclamEqual EQU 42 ; exclamation equal, C not equal (e.g. !=) tokenExclam EQU 43 ; exclamation point tokenTilde EQU 44 ; centered tilde (fix spelling <15>) tokenComma EQU 45 tokenPeriod EQU 46 tokenLeft2Quote EQU 47 ; open double quote tokenRight2Quote EQU 48 ; close double quote tokenLeft1Quote EQU 49 ; open single quote tokenRight1Quote EQU 50 ; close single quote token2Quote EQU 51 ; double quote token1Quote EQU 52 ; single quote tokenSemicolon EQU 53 tokenPercent EQU 54 tokenCaret EQU 55 ; (fix spelling <33>) tokenUnderline EQU 56 tokenAmpersand EQU 57 tokenAtSign EQU 58 tokenBar EQU 59 ; vertical bar tokenQuestion EQU 60 tokenPi EQU 61 ; lower-case pi tokenRoot EQU 62 ; square root symbol tokenSigma EQU 63 ; capital sigma tokenIntegral EQU 64 ; integral sign tokenMicro EQU 65 tokenCapPi EQU 66 ; capital pi tokenInfinity EQU 67 tokenColon EQU 68 tokenHash EQU 69 ; e.g. # tokenDollar EQU 70 tokenNoBreakSpace EQU 71 ; non-breaking space tokenFraction EQU 72 tokenIntlCurrency EQU 73 tokenLeftSingGuillemet EQU 74 tokenRightSingGuillemet EQU 75 ; (Fixed spelling <19>) tokenPerThousand EQU 76 tokenEllipsis EQU 77 ; <15> tokenCenterDot EQU 78 ; <15> tokenNil EQU 127 delimPad EQU -2 ; obsolete, misspelled token names kept for backward compatibility (moved here <33>) tokenTilda EQU 44 ; keep wrong spelling for backward compatibility <15> tokenCarat EQU 55 TokenResults record 0 tokenOK ds.b 1 tokenOverflow ds.b 1 stringOverflow ds.b 1 badDelim ds.b 1 badEnding ds.b 1 crash ds.b 1 endr TokenBlock RECORD 0,INCR ; (added comments <33>) source ds.l 1 ; pointer to stream of characters sourceLength ds.l 1 ; length of source stream tokenList ds.l 1 ; pointer to array of tokens tokenLength ds.l 1 ; maximum length of TokenList tokenCount ds.l 1 ; number tokens generated by tokenizer stringList ds.l 1 ; pointer to stream of identifiers stringLength ds.l 1 ; length of string list stringCount ds.l 1 ; number of bytes currently used doString ds.b 1 ; Boolean: make strings & put into StringList doAppend ds.b 1 ; Boolean: append to TokenList rather than replace doAlphanumeric ds.b 1 ; Boolean: identifiers may include numeric doNest ds.b 1 ; Boolean: do comments nest? leftDelims ds.w 2 rightDelims ds.w 2 leftComment ds.l 2 rightComment ds.l 2 escapeCode ds.w 1 ; escape symbol code decimalCode ds.w 1 itlResource ds.l 1 ; handle to itl4 resource of current script reserved ds.l 8 ; must be zero! ENDR TokenRec RECORD 0,INCR ; (added comments <33>) theToken ds.w 1 ; TokenType position ds.l 1 ; Ptr into original source length ds.l 1 ; length of text in original source stringPosition ds.l 1 ; StringPtr to copy of identifier tokenRecSize equ * ENDR UntokenTable Record 0, INCR len ds.w 1 lastToken ds.w 1 index ds.w 256 ; index table; last = lastToken ;list of pascal strings here. index pointers are from front of table Endr ; ----------------------------------------------------------------------------- ; Record declarations and constants for formatted number handling ; ----------------------------------------------------------------------------- ; FormatClass enumeration fPositive EQU 0 fNegative EQU 1 fZero EQU 2 ; FormatResultType enumeration fFormatOK EQU 0 fBestGuess EQU 1 fOutOfSynch EQU 2 fSpuriousChars EQU 3 fMissingDelimiter EQU 4 fExtraDecimal EQU 5 fMissingLiteral EQU 6 fExtraExp EQU 7 fFormatOverflow EQU 8 fFormStrIsNAN EQU 9 fBadPartsTable EQU 10 fExtraPercent EQU 11 fExtraSeparator EQU 12 fEmptyFormatString EQU 13 WideChar record 0,increment a ds.b 2 ; PACKED ARRAY[0..1] OF CHAR ORG a b ds.w 1 ; INTEGER endr WideCharArr record 0,increment size ds.w 1 ; INTEGER data ds.w 10 ; PACKED ARRAY[0..9] OF WideChar endr fVNumber EQU 0 ; first version of NumFormatString NumFormatString record 0,increment fLength ds.b 1 ; length of format String fVersion ds.b 1 ; version number data ds.b 254 ; private data <33> endr ;Number format equates tokLeftQuote EQU 1 tokRightQuote EQU 2 tokLeadPlacer EQU 3 tokLeader EQU 4 tokNonLeader EQU 5 tokZeroLead EQU 6 tokPercent EQU 7 tokPlusSign EQU 8 tokMinusSign EQU 9 tokThousands EQU 10 tokSeparator EQU 12 ; 11 is reserved tokEscape EQU 13 tokDecPoint EQU 14 tokEPlus EQU 15 tokEMinus EQU 16 tokMaxSymbols EQU 31 NumberParts record 0,increment version ds.w 1 ; integer data ds.w tokMaxSymbols ; ARRAY[tokLeftQuote..tokMaxSymbols] OF WideChar pePlus ds WideCharArr ; 64 peMinus ds WideCharArr ; 86 peMinusPlus ds WideCharArr ; 108 altNumTable ds WideCharArr ; 130 reserved ds.b 20 numberPartsSize equ * curNumberPartsVersion equ 1 endr TableDirectoryRecord record 0,increment tableSignature ds.l 1 ; 4 byte long table name */ reserved ds.l 1 ; Reserved for internal use */ tableStartOffset ds.l 1 ; Table start offset in byte*/ tableSize ds.l 1 ; Table size in byte*/ endr Itl5Record record 0,increment versionNumber ds.l 1 ; itl5 resource version number */ numberOfTables ds.w 1 ; Number of tables it contains */ reserved ds.w 3 ; Reserved for internal use */ tableDirectory ds TableDirectoryRecord ; Table directory records */ endr RuleBasedTrslRecord record 0,increment sourceType ds.w 1 ; Transliterate target type for the LHS of the rule */ targetType ds.w 1 ; Transliterate target type for the RHS of the rule */ formatNumber ds.w 1 ; Transliterate resource format number */ propertyFlag ds.w 1 ; Transliterate property flags */ numberOfRules ds.w 1 ; Number of rules following this field */ endr FVector record 0,increment start ds.w 1 ; INTEGER length ds.w 1 ; INTEGER endr TripleInt record 0,increment zzz1 ds FVector zzz2 ds FVector zzz3 ds FVector endr ; ----------------------------------------------------------------------------- ; Record for FindScriptRun result ; ----------------------------------------------------------------------------- ScriptRunStatus record 0,increment script ds.b 1 variant ds.b 1 endr ; ----------------------------------------------------------------------------- ; Selectors and macros for the Script Manager trap call, _ScriptUtil ; ----------------------------------------------------------------------------- Macro DefSMgrRoutine &name,&selector,&argSize,&returnSize sm&name: equ &selector**$FFFF smSel&name: equ (1<<31)++(&returnSize<<24)++(&argSize<<16)++sm&name endm ; Trap routine selectors: script manager 1.0 smFontScript EQU 0 smIntlScript EQU 2 smKybdScript EQU 4 smFont2Script EQU 6 smGetEnvirons EQU 8 smSetEnvirons EQU 10 smGetScript EQU 12 smSetScript EQU 14 smHighCall EQU smSetScript ; boundary between script mgr & script systems smCharByte EQU 16 smCharType EQU 18 smPixel2Char EQU 20 smChar2Pixel EQU 22 smTranslit EQU 24 smFindWord EQU 26 smHiliteText EQU 28 smDrawJust EQU 30 smMeasureJust EQU 32 smParseTable EQU 34 ; Full Trap routine selectors: script manager 1.0 ; format newBit return/args smSelFontScript EQU (1<<31)++($0200<<16)++smFontScript smSelIntlScript EQU (1<<31)++($0200<<16)++smIntlScript smSelKybdScript EQU (1<<31)++($0002<<16)++smKybdScript smSelFont2Script EQU (1<<31)++($0202<<16)++smFont2Script smSelGetEnvirons EQU (1<<31)++($0402<<16)++smGetEnvirons smSelSetEnvirons EQU (1<<31)++($0206<<16)++smSetEnvirons smSelGetScript EQU (1<<31)++($0404<<16)++smGetScript smSelSetScript EQU (1<<31)++($0208<<16)++smSetScript smSelCharType EQU (1<<31)++($0206<<16)++smCharType smSelCharByte EQU (1<<31)++($0206<<16)++smCharByte smSelPixel2Char EQU (1<<31)++($020E<<16)++smPixel2Char smSelChar2Pixel EQU (1<<31)++($020C<<16)++smChar2Pixel smSelTranslit EQU (1<<31)++($020E<<16)++smTranslit smSelFindWord EQU (1<<31)++($0012<<16)++smFindWord smSelHiliteText EQU (1<<31)++($000E<<16)++smHiliteText smSelDrawJust EQU (1<<31)++($0008<<16)++smDrawJust smSelMeasureJust EQU (1<<31)++($000C<<16)++smMeasureJust smSelParseTable EQU (1<<31)++($0204<<16)++smParseTable ; selectors for general script manager 2.0 routines DefSmgrRoutine StyledLineBreak, -2,28,2 DefSmgrRoutine GetFormatOrder, -4,18,0 DefSmgrRoutine IntlTokenize, -6,4,2 DefSmgrRoutine InitDateCache, -8,4,2 DefSmgrRoutine String2Date, -10,20,2 DefSmgrRoutine String2Time, -12,20,2 DefSmgrRoutine LongDate2Secs, -14,8,0 DefSmgrRoutine LongSecs2Date, -16,8,0 DefSmgrRoutine ToggleDate, -18,14,2 DefSmgrRoutine Str2Format, -20,12,2 DefSmgrRoutine Format2Str, -22,16,2 DefSmgrRoutine FormatX2Str, -24,16,2 DefSmgrRoutine FormatStr2X, -26,16,2 DefSmgrRoutine ValidDate, -28,12,2 ; selectors for script-specific script manager 2.0 routines DefSmgrRoutine PortionText, 36,8,4 DefSmgrRoutine FindScriptRun, 38,12,2 DefSmgrRoutine VisibleLength, 40,8,4 DefSmgrRoutine IsSpecialFont, 42,2,2 ; implemented only by two-byte scripts DefSmgrRoutine RawPrinterValues, 44,22,2 ; implemented only by two-byte scripts ; selectors for general script manager 7.0 routines <2.1><2.4> DefSmgrRoutine NFindWord, -30,18,0 ; smSel… = $8012FFE2 <2.3> DefSmgrRoutine TruncString, -32,8,2 ; smSel… = $8208FFE0 <2.3><2.7><6> DefSmgrRoutine TruncText, -34,12,2 ; smSel… = $820CFFDE <2.3><2.7><6> DefSmgrRoutine ReplaceText, -36,12,2 ; smSel… = $820CFFDC <2.3> ; selectors for script-specific script manager 7.0 routines <2> DefSmgrRoutine NPixel2Char, 46,34,2 ; $8222002E <2><17> DefSmgrRoutine NChar2Pixel, 48,28,2 ; $821C0030 <2><17> DefSmgrRoutine NDrawJust, 50,22,0 ; $80160032 <2><17> DefSmgrRoutine NMeasureJust, 52,26,0 ; $801A0034 <2><17> DefSmgrRoutine NPortionText, 54,18,4 ; $84120036 <2><17> ; selectors for general script manager 7.1 routines <2.1><2.4> DefSmgrRoutine SCLwrString, -74,10,0 ; smSel… = $800AFFB6 <50> ; function codes for SCLwrString <50> sclwrDoLower equ $0000 ; where these bits go in _LowerText <50> sclwrDoStrip equ $0200 ; where these bits go in _StripText <50> sclwrDoUpper equ $0400 ; where these bits go in _UpperText <50> sclwrDoStripUpper equ $0600 ; where these bits go in _StripUpperText <50> ; selectors for script-specific script manager 7.1 routines <43> DefSmgrRoutine GetUtilityAddress, 56, 4, 4 ; $84040038 implemented only by one-byte scripts DefSmgrRoutine SetUtilityAddress, 58, 8, 0 ; $8008003A implemented only by one-byte scripts DefSmgrRoutine GetQDPatchAddress, 60, 6, 4 ; $8406003C implemented only by one-byte scripts DefSmgrRoutine SetQDPatchAddress, 62, 10, 0 ; $800A003E implemented only by one-byte scripts smSelGetScriptUtilityAddress EQU (1<<30)++smSelGetUtilityAddress ; <43><54> smSelSetScriptUtilityAddress EQU (1<<30)++smSelSetUtilityAddress ; <43><54> smSelGetScriptQDPatchAddress EQU (1<<30)++smSelGetQDPatchAddress ; <43><54> smSelSetScriptQDPatchAddress EQU (1<<30)++smSelSetQDPatchAddress ; <43><54> smSelCharacterByteType EQU (1<<30)++smSelCharByte ; <50><54> smSelCharacterType EQU (1<<30)++smSelCharType ; <50><54> smSelTransliterateText EQU (1<<30)++smSelTranslit ; <50><54> smSelFindWordBreaks EQU (1<<30)++smSelFindWord ; <50><54> smSelFillParseTable EQU (1<<30)++smSelParseTable ; <50><54> ;------------------------------------------------------------------------------ ; Trap routine macros: Script Manager 1.0 macro _FontScript move.l #smSelFontScript,-(sp) _ScriptUtil endm macro _IntlScript move.l #smSelIntlScript,-(sp) _ScriptUtil endm macro _KeyScript move.l #smSelKybdScript,-(sp) _ScriptUtil endm macro _Font2Script move.l #smSelFont2Script,-(sp) _ScriptUtil endm macro ; <54> _FontToScript move.l #smSelFont2Script,-(sp) _ScriptUtil endm macro _GetEnvirons move.l #smSelGetEnvirons,-(sp) _ScriptUtil endm macro ; <54> _GetScriptManagerVariable move.l #smSelGetEnvirons,-(sp) _ScriptUtil endm macro _SetEnvirons move.l #smSelSetEnvirons,-(sp) _ScriptUtil endm macro ; <54> _SetScriptManagerVariable move.l #smSelSetEnvirons,-(sp) _ScriptUtil endm macro _GetScript move.l #smSelGetScript,-(sp) _ScriptUtil endm macro ; <54> _GetScriptVariable move.l #smSelGetScript,-(sp) _ScriptUtil endm macro _SetScript move.l #smSelSetScript,-(sp) _ScriptUtil endm macro ; <54> _SetScriptVariable move.l #smSelSetScript,-(sp) _ScriptUtil endm macro _CharByte move.l #smSelCharByte,-(sp) _ScriptUtil endm macro _CharType move.l #smSelCharType,-(sp) _ScriptUtil endm macro _Pixel2Char move.l #smSelPixel2Char,-(sp) _ScriptUtil endm macro _Char2Pixel move.l #smSelChar2Pixel,-(sp) _ScriptUtil endm macro _Transliterate move.l #smSelTranslit,-(sp) _ScriptUtil endm macro _FindWord move.l #smSelFindWord,-(sp) _ScriptUtil endm macro _HiliteText move.l #smSelHiliteText,-(sp) _ScriptUtil endm macro _DrawJust move.l #smSelDrawJust,-(sp) _ScriptUtil endm macro _MeasureJust move.l #smSelMeasureJust,-(sp) _ScriptUtil endm macro _ParseTable move.l #smSelParseTable,-(sp) _ScriptUtil endm ;------------------------------------------------------------------------------ ; Trap routine macros: Script Manager 2.0 macro _GetFormatOrder move.l #smSelGetFormatOrder,-(sp) _ScriptUtil endm macro _StyledLineBreak move.l #smSelStyledLineBreak,-(sp) _ScriptUtil endm macro _IntlTokenize move.l #smSelIntlTokenize,-(sp) _ScriptUtil endm macro _InitDateCache move.l #smSelInitDateCache,-(sp) _ScriptUtil endm macro _String2Date move.l #smSelString2Date,-(sp) _ScriptUtil endm macro ; <54> _StringToDate move.l #smSelString2Date,-(sp) _ScriptUtil endm macro _String2Time move.l #smSelString2Time,-(sp) _ScriptUtil endm macro ; <54> _StringToTime move.l #smSelString2Time,-(sp) _ScriptUtil endm macro _LongSecs2Date move.l #smSelLongSecs2Date,-(sp) _ScriptUtil endm macro ; <54> _LongSecondsToDate move.l #smSelLongSecs2Date,-(sp) _ScriptUtil endm macro _LongDate2Secs move.l #smSelLongDate2Secs,-(sp) _ScriptUtil endm macro ; <54> _LongDateToSeconds move.l #smSelLongDate2Secs,-(sp) _ScriptUtil endm macro _Str2Format move.l #smSelStr2Format,-(sp) _ScriptUtil endm macro ; <54> _StringToFormatRec move.l #smSelStr2Format,-(sp) _ScriptUtil endm macro _Format2Str move.l #smSelFormat2Str,-(sp) _ScriptUtil endm macro ; <54> _FormatRecToString move.l #smSelFormat2Str,-(sp) _ScriptUtil endm macro _FormatX2Str move.l #smSelFormatX2Str,-(sp) _ScriptUtil endm macro ; <54> _ExtendedToString move.l #smSelFormatX2Str,-(sp) _ScriptUtil endm macro _FormatStr2X move.l #smSelFormatStr2X,-(sp) _ScriptUtil endm macro ; <54> _StringToExtended move.l #smSelFormatStr2X,-(sp) _ScriptUtil endm macro _ValidDate move.l #smSelValidDate,-(sp) _ScriptUtil endm macro _ToggleDate move.l #smSelToggleDate,-(sp) _ScriptUtil endm macro _PortionText move.l #smSelPortionText,-(sp) _ScriptUtil endm macro _FindScriptRun move.l #smSelFindScriptRun,-(sp) _ScriptUtil endm macro _ReadLocation movea.l (sp)+,A0 move.l #$000C00E4,D0 _ReadXPRam endm macro _WriteLocation movea.l (sp)+,A0 move.l #$000C00E4,D0 _WriteXPRam endm macro _VisibleLength move.l #smSelVisibleLength,-(sp) _ScriptUtil endm macro _IsSpecialFont move.l #smSelIsSpecialFont,-(sp) _ScriptUtil endm macro _RawPrinterValues move.l #smSelRawPrinterValues,-(sp) _ScriptUtil endm ;------------------------------------------------------------------------------ ; Trap routine macros: Script Manager 7.0 <2.1> macro _NFindWord ; <2.3> move.l #smSelNFindWord,-(sp) _ScriptUtil endm macro _TruncString ; <2.3> move.l #smSelTruncString,-(sp) _ScriptUtil endm macro _TruncText ; <2.3> move.l #smSelTruncText,-(sp) _ScriptUtil endm macro _ReplaceText ; <2.3> move.l #smSelReplaceText,-(sp) _ScriptUtil endm macro _NPixel2Char ; <2> move.l #smSelNPixel2Char,-(sp) _ScriptUtil endm macro ; <54> _PixelToChar move.l #smSelNPixel2Char,-(sp) _ScriptUtil endm macro _NChar2Pixel ; <2> move.l #smSelNChar2Pixel,-(sp) _ScriptUtil endm macro ; <54> _CharToPixel move.l #smSelNChar2Pixel,-(sp) _ScriptUtil endm macro _NDrawJust ; <2> move.l #smSelNDrawJust,-(sp) _ScriptUtil endm macro ; <54> _DrawJustified move.l #smSelNDrawJust,-(sp) _ScriptUtil endm macro _NMeasureJust ; <2> move.l #smSelNMeasureJust,-(sp) _ScriptUtil endm macro ; <54> _MeasureJustified move.l #smSelNMeasureJust,-(sp) _ScriptUtil endm macro _NPortionText ; <2> move.l #smSelNPortionText,-(sp) _ScriptUtil endm macro ; <54> _PortionLine move.l #smSelNPortionText,-(sp) _ScriptUtil endm ;------------------------------------------------------------------------------ ; Trap routine macros: Script Manager 7.1 <43> macro _GetScriptUtilityAddress ; <54> move.l #smSelGetScriptUtilityAddress,-(sp) _ScriptUtil endm macro _SetScriptUtilityAddress ; <54> move.l #smSelSetScriptUtilityAddress,-(sp) _ScriptUtil endm macro _GetScriptQDPatchAddress ; <54> move.l #smSelGetScriptQDPatchAddress,-(sp) _ScriptUtil endm macro _SetScriptQDPatchAddress ; <54> move.l #smSelSetScriptQDPatchAddress,-(sp) _ScriptUtil endm macro _LowercaseText ; <54> move.w #sclwrDoLower,-(sp) move.l #smSelSCLwrString,-(sp) _ScriptUtil endm macro _StripDiacritics ; <54> move.w #sclwrDoStrip,-(sp) move.l #smSelSCLwrString,-(sp) _ScriptUtil endm macro _UppercaseText ; <54> move.w #sclwrDoUpper,-(sp) move.l #smSelSCLwrString,-(sp) _ScriptUtil endm macro _UppercaseStripDiacritics ; <54> move.w #sclwrDoStripUpper,-(sp) move.l #smSelSCLwrString,-(sp) _ScriptUtil endm macro _CharacterByteType ; <54> move.l #smSelCharacterByteType,-(sp) _ScriptUtil endm macro _CharacterType ; <54> move.l #smSelCharacterType,-(sp) _ScriptUtil endm macro _TransliterateText ; <54> move.l #smSelTransliterateText,-(sp) _ScriptUtil endm macro _FindWordBreaks ; <54> move.l #smSelFindWordBreaks,-(sp) _ScriptUtil endm macro _FillParseTable ; <54> move.l #smSelFillParseTable,-(sp) _ScriptUtil endm ENDIF ; ...already included