2019-06-29 23:17:50 +08:00

365 lines
9.6 KiB
Plaintext

;
; 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