; ; File: TerminalMgr.a ; ; Written by: Byron Han ; ; Copyright: © 1988-1990 by Apple Computer, Inc., all rights reserved. ; ; Change History (most recent first): ; ; <3> 8/23/90 kaz Changed BRA table to an offset table ; <2> 7/10/90 dba change names of routines so they do not conflict with glue to ; call the same routines ; <1> 3/14/90 BBH first checked in ; ; MODIFICATION HISTORY : ; 8/1/88 1.0D1 ; ; 4/6/89 BBH renamed TMGetTermName to TMGetToolName ; 4/11/89 JNG Removed TMGetRefCon, TMSetRefCon, TMSetUserData, TMGetUserData, ; and TMGetVersion these are now in the CTBCore routines. ; 4/17/89 JNG Moved TMDefault and TMValidate into Core. ; 4/20/89 BBH Moved scripting, localization, and choose, and setup code into core ; 4/24/89 JNG Moved TMResume TMMenu TMEvent TMActivate TMReset TMIdle to CTBCore ; BBH Changed TMGetTermEnvirons to return short ; Added environsProc to TMNew ; 3 May 1989 BBH Changed TMGetSelect to pass back length as function result ; 9 May 1989 BBH Changed TMStream to take flags as parameter ; Bug in TMAddSearch was a missing RTS instruction ; 31 May 1989 JNG New Glue/Entry interface ; 2 June 1989 JNG Finished Glue ; 6/7/89 kaz Made TMGetLine a procedure instead of a function ; 6/26/89 BBH Added TMPChoose, TMPeekLine routines ; 8/14/89 BBH Added constant curTMversion ; INCLUDE 'Traps.a' INCLUDE 'Terminals.a' INCLUDE 'CommToolboxPriv.a' MACRO _ExternalCore &selector _RealExternalCore &selector,#TMSel ENDM ; ; A0.L -> pointer to the routine selector record ; D0.L -> function result ; TMEntry MAIN EXPORT IMPORT __InitTM, __TMNew, __TMDispose, __TMKey, __TMUpdate, __TMPaint,\ __TMActivate, __TMClick, __TMStream,\ __TMReset, __TMClear, __TMResize, __TMGetSelect, __TMGetLine, \ __TMPeekLine, \ __TMSetSelection, __TMScroll, __TMIdle,\ __TMGetTMVersion, __TMAddSearch, __TMRemoveSearch, \ __TMClearSearch, __TMGetCursor, __TMGetTermEnvirons,\ __TMDoTermKey, __TMCountTermKeys, __TMGetIndTermKey, \ __TMGetErrorString; BRA.S RealEntry Version DC.W curTMversion ; version 1 RealEntry MOVE.W (A0), D1 ; routine selector ANDI.W #$FF, D1 ; bump the high byte SUB.W #1, D1 ; make it 0 based ADD.W D1, D1 ; 2 bytes per offset LEA TMStart, A1 ; point to offset table ADD.W 0(A1,D1.W), A1 ; add the offset JMP (A1) ; go there TMStart DC.W @InitTM - TMStart; 1 DC.W @TMNew - TMStart; 2 DC.W @TMDispose - TMStart; 3 DC.W @TMKey - TMStart; 4 DC.W @TMUpdate - TMStart; 5 DC.W @TMPaint - TMStart; 6 DC.W @TMActivate - TMStart; 7 DC.W @TMResume - TMStart; 8 DC.W @TMClick - TMStart; 9 DC.W @TMStream - TMStart; A DC.W @TMMenu - TMStart; B DC.W @TMReset - TMStart; C DC.W @TMClear - TMStart; D DC.W @TMResize - TMStart; E DC.W @TMGetSelect - TMStart; F DC.W @TMGetLine - TMStart; 10 DC.W @TMSetSelection - TMStart; 11 DC.W @TMScroll - TMStart; 12 DC.W @TMIdle - TMStart; 13 DC.W @TMValidate - TMStart; 14 DC.W @TMDefault - TMStart; 15 DC.W @TMSetupPreflight - TMStart; 16 DC.W @TMSetupSetup - TMStart; 17 DC.W @TMSetupFilter - TMStart; 18 DC.W @TMSetupItem - TMStart; 19 DC.W @TMSetupCleanup - TMStart; 1A DC.W @TMGetConfig - TMStart; 1B DC.W @TMSetConfig - TMStart; 1C DC.W @TMIntlToEnglish - TMStart; 1D DC.W @TMEnglishToIntl - TMStart; 1E DC.W @TMGetProcID - TMStart; 1F DC.W @TMGetToolName - TMStart; 20 DC.W @TMSetRefCon - TMStart; 21 DC.W @TMGetRefCon - TMStart; 22 DC.W @TMSetUserData - TMStart; 23 DC.W @TMGetUserData - TMStart; 24 DC.W @TMGetVersion - TMStart; 25 DC.W @TMGetTMVersion - TMStart; 26 DC.W @TMAddSearch - TMStart; 27 DC.W @TMRemoveSearch - TMStart; 28 DC.W @TMClearSearch - TMStart; 29 DC.W @TMGetCursor - TMStart; 2A DC.W @TMGetTermEnvirons - TMStart; 2B DC.W @TMChoose - TMStart; 2C DC.W @TMEvent - TMStart; 2D DC.W @TMDoTermKey - TMStart; 2E DC.W @TMCountTermKeys - TMStart; 2F DC.W @TMGetIndTermKey - TMStart; 30 DC.W @TMSetupPostflight - TMStart; 31 DC.W @TMPeekLine - TMStart; 32 DC.W @TMPChoose - TMStart; 33 DC.W @TMSetupXCleanup - TMStart; 34 DC.W @TMGetErrorString - TMStart; 35 @InitTM CLR.W -(SP) ; 0x01 JSR __InitTM MOVE.W (SP)+,D0 RTS @TMSetRefCon ; 258 _ExternalCore #$40A @TMGetRefCon ; 259 _ExternalCore #$40B @TMSetUserData ; 260 _ExternalCore #$40C @TMGetUserData ; 261 _ExternalCore #$40D @TMGetVersion ; 0x25 _ExternalCore #$40E @TMGetToolName ; 0x20 _ExternalCore #$40F @TMValidate ; 0x14 _ExternalCore #$410 @TMDefault ; 0x15 _ExternalCore #$411 @TMSetupPreflight _ExternalCore #$412 @TMSetupSetup _ExternalCore #$413 @TMSetupFilter _ExternalCore #$415 @TMSetupItem _ExternalCore #$414 @TMSetupCleanup _ExternalCore #$416 @TMSetupXCleanup _ExternalCore #$427 @TMSetupPostflight _ExternalCore #$417 @TMGetConfig _ExternalCore #$418 @TMSetConfig _ExternalCore #$419 @TMIntlToEnglish _ExternalCore #$41A @TMEnglishToIntl _ExternalCore #$41B @TMChoose _ExternalCore #$41C @TMPChoose _ExternalCore #$426 @TMGetProcID _ExternalCore #$41D @TMResume _ExternalCore #$41E @TMMenu _ExternalCore #$41F @TMEvent _ExternalCore #$420 @TMActivate _ExternalCore #$421 @TMIdle _ExternalCore #$422 @TMReset _ExternalCore #$424 @TMGetErrorString _ExternalCore #$428 @TMNew ; 0x02 CLR.L -(SP) ; make room MOVE.L 44(A0), -(SP) ; termRect MOVE.L 40(A0), -(SP) ; viewRect MOVE.L 36(A0), -(SP) ; flags MOVE.W 34(A0), -(SP) ; procID MOVE.L 30(A0), -(SP) ; owner MOVE.L 26(A0), -(SP) ; sendProc MOVE.L 22(A0), -(SP) ; cacheProc MOVE.L 18(A0), -(SP) ; breakProc MOVE.L 14(A0), -(SP) ; clikLoop MOVE.L 10(A0), -(SP) ; environsProc MOVE.L 6(A0), -(SP) ; refCon MOVE.L 2(A0), -(SP) ; userData JSR __TMNew MOVE.L (SP)+, D0 RTS @TMDispose ; 0x03 MOVE.L 2(A0), -(SP) ; hTerm JSR __TMDispose RTS @TMKey ; 0x04 MOVE.L 6(A0), -(SP) ; hTerm MOVE.L 2(A0), -(SP) ; theEvent JSR __TMKey RTS @TMUpdate ; 0x05 MOVE.L 6(A0), -(SP) ; hTerm MOVE.L 2(A0), -(SP) ; visRgn JSR __TMUpdate RTS @TMPaint ; 0x06 MOVE.L 10(A0), -(SP) ; hTerm MOVE.L 6(A0), -(SP) ; theLine MOVE.L 2(A0), -(SP) ; theRect JSR __TMPaint RTS @TMClick ; 0x09 MOVE.L 6(A0), -(SP) ; hTerm MOVE.L 2(A0), -(SP) ; theEvent JSR __TMClick RTS @TMStream ; 0x0A CLR.L -(SP) ; make room MOVE.L 12(A0), -(SP) ; hTerm MOVE.L 8(A0), -(SP) ; theBuffer MOVE.L 4(A0), -(SP) ; length MOVE.W 2(A0), -(SP) ; flags JSR __TMStream MOVE.L (SP)+,D0 ; return value RTS @TMClear ; 0x0D MOVE.L 2(A0), -(SP) ; hTerm JSR __TMClear RTS @TMResize ; 0x0E MOVE.L 6(A0), -(SP) ; hTerm MOVE.L 2(A0), -(SP) ; newViewRect JSR __TMResize RTS @TMGetSelect ; 0x0F CLR.L -(SP) ; make room MOVE.L 10(A0), -(SP) ; hTerm MOVE.L 6(A0), -(SP) ; theData MOVE.L 2(A0), -(SP) ; theType (VAR) JSR __TMGetSelect MOVE.L (SP)+, D0 ; function result RTS @TMGetLine ; 0x10 MOVE.L 8(A0), -(SP) ; hTerm MOVE.W 6(A0), -(SP) ; lineNo MOVE.L 2(A0), -(SP) ; theLine (VAR) JSR __TMGetLine RTS @TMSetSelection ; 0x11 MOVE.L 8(A0), -(SP) ; hTerm MOVE.L 4(A0), -(SP) ; theRect MOVE.W 2(A0), -(SP) ; selType JSR __TMSetSelection RTS @TMScroll ; 0x12 MOVE.L 6(A0), -(SP) ; hTerm MOVE.W 4(A0), -(SP) ; dH MOVE.W 2(A0), -(SP) ; dV JSR __TMScroll RTS @TMGetTMVersion ; 0x26 LEA Version, A0 ; get version MOVE.W (A0), D0 ; return RTS ; and return @TMAddSearch ; 0x27 clr.W -(SP) ; make room for refnum move.L 16(A0), -(SP) ; hTerm move.L 12(A0), -(SP) ; theString move.L 8(A0), -(SP) ; theRect move.W 6(A0), -(SP) ; searchType move.L 2(A0), -(SP) ; callBack JSR __TMAddSearch MOVE.W (SP)+, D0 ; return point RTS ; return please @TMRemoveSearch ; 0x28 MOVE.L 4(A0), -(SP) ; hTerm MOVE.W 2(A0), -(SP) ; refnum JSR __TMRemoveSearch RTS @TMClearSearch ; 0x29 MOVE.L 2(A0), -(SP) ; hTerm JSR __TMClearSearch RTS @TMGetCursor ; 0x2A CLR.L -(SP) ; make room MOVE.L 4(A0), -(SP) ; hTerm MOVE.W 2(A0), -(SP) ; cursType JSR __TMGetCursor MOVE.L (SP)+, D0 ; return point RTS @TMGetTermEnvirons ; 0x2B CLR.W -(SP) ; make room MOVE.L 6(A0), -(SP) ; hTerm MOVE.L 2(A0), -(SP) ; (pointer to) theEnvirons JSR __TMGetTermEnvirons MOVE.W (SP)+, D0 ; return point RTS @TMDoTermKey ; 0x2E CLR.W -(SP) ; make room MOVE.L 6(A0), -(SP) ; hTerm MOVE.L 2(A0), -(SP) ; theKey JSR __TMDoTermKey MOVE.W (SP)+, D0 ; return point RTS @TMCountTermKeys ; 0x2F CLR.W -(SP) ; make room MOVE.L 2(A0), -(SP) ; hTerm JSR __TMCountTermKeys MOVE.W (SP)+, D0 ; return point RTS @TMGetIndTermKey ; 0x30 MOVE.L 8(A0), -(SP) ; hTerm MOVE.W 6(A0), -(SP) ; id MOVE.L 2(A0), -(SP) ; theKey (pointer to) JSR __TMGetIndTermKey RTS @TMPeekLine ; 0x32 MOVE.L 8(A0), -(SP) ; hTerm MOVE.W 6(A0), -(SP) ; lineNo MOVE.L 2(A0), -(SP) ; theLine (VAR) JSR __TMPeekLine RTS END