mirror of
https://github.com/elliotnunn/mac-rom.git
synced 2024-12-29 07:29:15 +00:00
0ba83392d4
Resource forks are included only for .rsrc files. These are DeRezzed into their data fork. 'ckid' resources, from the Projector VCS, are not included. The Tools directory, containing mostly junk, is also excluded.
568 lines
16 KiB
Plaintext
568 lines
16 KiB
Plaintext
;
|
|
; File: CommToolboxUtilities.a
|
|
;
|
|
; Contains: Assembly entry point for CommToolbox Utilities
|
|
;
|
|
; Written by: Byron Han and Jerry Godes
|
|
;
|
|
; Copyright: © 1988-1990 by Apple Computer, Inc., all rights reserved.
|
|
;
|
|
; Change History (most recent first):
|
|
;
|
|
; <4> 10/5/90 kaz Changing BRA table to offset table; Removed _CTBKeystrokeFilter.
|
|
; <jng>
|
|
; <3> 7/10/90 dba add __ to distinguish routines from glue
|
|
; <2> 3/15/90 BBH fixed constants and includes
|
|
; <1> 3/14/90 BBH first checked in to BBS
|
|
;
|
|
; To Do:
|
|
;
|
|
; Pre-BBS Modification History :
|
|
;
|
|
; 2/15/90 BBH Added CTBGetErrorString
|
|
; 7/25/89 CL Added spcifiedStr to CTBKeyStrokekFilter
|
|
; 7/4/89 JNG Fixed Byron's bug in NuLookup's entry code - he forgot a # infront of
|
|
; the nulookup ID constant
|
|
; 6/21/89 BBH Added CTBPChoose
|
|
; 6/2/89 JNG New Glue/Entry interface
|
|
; 5/5/89 BBH Moved CTBValidate to CTBCore.c
|
|
; Fixed bug in CTBValidate glue (do a Move.B instead of Move.W)
|
|
; 4/27/89 BBH Added CTBKeystrokeFilter to CTBUtilities.c
|
|
; 4/24/89 JNG Added CTBResume CTBEvent CTBMenu CTBAbort CTBActivate CTBIdle CTBReset
|
|
; to ctbcore
|
|
; 4/20/89 BBH Save different registers for CTBValidate. Was saving D0-D3/A0-A3.
|
|
; Now saving D0-D7/A1-A4. A0 is used for the internal dispatch record
|
|
; CTBGetVersion now takes mgrsel as a parameter
|
|
; 4/18/89 BBH Added entry for CTBSetupSetup, Cleanup, Preflight, Postflight, Item, Filter
|
|
; Added entry for CTBIntlToEnglish, EnglishToIntl, GetConfig, SetConfig
|
|
; Added entry for CTBGetProcID.
|
|
; 4/17/89 JNG Added CTBValidate. We can now use the macro from MPW sample
|
|
; app for debugger names.
|
|
; 4/11/89 JNG Took CMGetRefCon, CMSetRefCon, CMGetUserData, CMSetUserData,
|
|
; CMGetVersion and converted to CTB.
|
|
; 4/8/89 JNG Added CTBCore routines
|
|
; 8/1/88 BBH 1.0D1
|
|
;------------------------------------------------------------------------------------
|
|
;
|
|
; A0.L -> pointer to the routine selector record
|
|
;
|
|
; D0.L -> function result
|
|
;
|
|
|
|
INCLUDE 'Traps.a'
|
|
INCLUDE 'CommToolboxPriv.a'
|
|
INCLUDE 'CTBUtilities.a'
|
|
|
|
ENTRY CTBGetToolName, _CTBValidate, CTBIdle
|
|
|
|
CTBEntry MAIN EXPORT
|
|
IMPORT DITLEntry, __NuPLookup, __InitCTBUtilities, __InitManager, \
|
|
__CTBGetVersion, __CTBDefault, __CTBValidate, \
|
|
__CTBSetupPreflight, __CTBSetupSetup, __CTBSetupItem, __CTBSetupItem, \
|
|
__CTBSetupFilter, __CTBSetupPostflight, __CTBSetupCleanup, \
|
|
__CTBSetupXCleanup, \
|
|
__CTBGetConfig, __CTBSetConfig, \
|
|
__CTBEnglishToIntl, __CTBIntlToEnglish, __CTBChoose, __CTBGetProcID, \
|
|
__CTBResume, __CTBMenu, __CTBEvent, __CTBActivate, __CTBReset, \
|
|
__CTBAbort, __CTBPChoose, \
|
|
__CTBGetErrorString
|
|
|
|
BRA.S RealEntry
|
|
version DC.W curCTBUversion ; major 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 CTBUStart, A1 ; point to offset table
|
|
ADD.W 0(A1,D1.W), A1 ; add the offset
|
|
JMP (A1) ; go there
|
|
|
|
CTBUStart
|
|
DC.W @InitCTBUtilities - CTBUStart ; minor selector 1
|
|
DC.W @AppendDITL - CTBUStart ; 2
|
|
DC.W @CountDITL - CTBUStart ; 3
|
|
DC.W @ShortenDITL - CTBUStart ; 4
|
|
DC.W @CTBGetCTBVersion - CTBUStart ; 5
|
|
DC.W @NuLookup - CTBUStart ; 6
|
|
DC.W @NuPLookup - CTBUStart ; 7
|
|
DC.W @None - CTBUStart ; 8 -- NOT USED
|
|
DC.W @InitManager - CTBUStart ; 9
|
|
DC.W @CTBSetRefCon - CTBUStart ; A
|
|
DC.W @CTBGetRefCon - CTBUStart ; B
|
|
DC.W @CTBSetUserData - CTBUStart ; C
|
|
DC.W @CTBGetUserData - CTBUStart ; D
|
|
DC.W @CTBGetVersion - CTBUStart ; E
|
|
DC.W CTBGetToolName - CTBUStart ; F
|
|
DC.W @CTBValidate - CTBUStart ; 10
|
|
DC.W @CTBDefault - CTBUStart ; 11
|
|
DC.W @CTBSetupPreflight - CTBUStart ; 12
|
|
DC.W @CTBSetupSetup - CTBUStart ; 13
|
|
DC.W @CTBSetupItem - CTBUStart ; 14
|
|
DC.W @CTBSetupFilter - CTBUStart ; 15
|
|
DC.W @CTBSetupCleanup - CTBUStart ; 16
|
|
DC.W @CTBSetupPostflight - CTBUStart ; 17
|
|
DC.W @CTBGetConfig - CTBUStart ; 18
|
|
DC.W @CTBSetConfig - CTBUStart ; 19
|
|
DC.W @CTBIntlToEnglish - CTBUStart ; 1A
|
|
DC.W @CTBEnglishToIntl - CTBUStart ; 1B
|
|
DC.W @CTBChoose - CTBUStart ; 1C
|
|
DC.W @CTBGetProcID - CTBUStart ; 1D
|
|
DC.W @CTBResume - CTBUStart ; 1E
|
|
DC.W @CTBMenu - CTBUStart ; 1F
|
|
DC.W @CTBEvent - CTBUStart ; 20
|
|
DC.W @CTBActivate - CTBUStart ; 21
|
|
DC.W CTBIdle - CTBUStart ; 22
|
|
DC.W @CTBAbort - CTBUStart ; 23
|
|
DC.W @CTBReset - CTBUStart ; 24
|
|
DC.W @None - CTBUStart ; 25 -- was CTBKeystrokeFilter
|
|
DC.W @CTBPChoose - CTBUStart ; 26
|
|
DC.W @CTBSetupXCleanup - CTBUStart ; 27
|
|
DC.W @CTBGetErrorString - CTBUStart ; 28
|
|
|
|
@None
|
|
RTS
|
|
@InitCTBUtilities ; 0x01
|
|
CLR.W -(SP)
|
|
JSR __InitCTBUtilities
|
|
MOVE.W (SP)+,D0
|
|
RTS
|
|
|
|
@AppendDITL ; 0x04
|
|
CLR.L -(SP) ; place holder - All DITL routines go through the common
|
|
; entry DITLEntry, therefore, we need to fake some params
|
|
MOVE.L 8(A0), -(SP) ; theDialog
|
|
MOVE.L 4(A0), -(SP) ; theDITL
|
|
MOVE.W 2(A0), -(SP) ; method
|
|
CLR.W -(SP) ; place holder for numberItems
|
|
MOVE.W #AppendMsg, -(SP) ; 01 = append msg
|
|
JSR DITLEntry
|
|
ADDA.L #4,SP ; remove place holder
|
|
RTS
|
|
|
|
@CountDITL ; 0x05
|
|
CLR.L -(SP) ; make room
|
|
MOVE.L 2(A0), -(SP) ; theDialog
|
|
CLR.L -(SP) ; place holder for DITL
|
|
CLR.W -(SP) ; place holder for method
|
|
CLR.W -(SP) ; place holder for numberItems
|
|
MOVE.W #CountMsg, -(SP) ; 02 = count msg
|
|
JSR DITLEntry
|
|
MOVE.L (SP)+, D0 ; return value
|
|
RTS
|
|
|
|
@ShortenDITL ; 0x06
|
|
CLR.L -(SP) ; make room
|
|
MOVE.L 4(A0), -(SP) ; theDialog
|
|
CLR.L -(SP) ; place holder for DITL
|
|
CLR.W -(SP) ; place holder for method
|
|
MOVE.W 2(A0), -(SP) ; numberItems
|
|
MOVE.W #ShortenMsg, -(SP) ; 03 = shorten msg
|
|
JSR DITLEntry
|
|
ADDA.L #4,SP ; remove place holder
|
|
RTS
|
|
|
|
@CTBGetCTBVersion LEA Version, A0 ; 0x07
|
|
MOVE.W (A0), D0 ; put version number
|
|
RTS
|
|
|
|
@NuLookup ; 0x08
|
|
CLR.W -(SP)
|
|
MOVE.L 28(A0),-(SP) ; where
|
|
MOVE.L 24(A0),-(SP) ; prompt
|
|
MOVE.W 22(A0),-(SP) ; numTypes
|
|
MOVE.L 18(A0),-(SP) ; typeList
|
|
MOVE.L 14(A0),-(SP) ; objFilter
|
|
MOVE.L 10(A0),-(SP) ; zoneFilter
|
|
MOVE.L 6(A0),-(SP) ; hookProc
|
|
CLR.L -(SP) ; userData
|
|
MOVE.W #CTB_NulookupDLOGID,-(SP) ; dialogID (default one)
|
|
CLR.L -(SP) ; filterProc
|
|
MOVE.L 2(A0),-(SP) ; theReply
|
|
JSR __NuPLookup
|
|
MOVE.W (SP)+,D0
|
|
RTS
|
|
@NuPLookup ; 0x08
|
|
CLR.W -(SP)
|
|
MOVE.L 38(A0),-(SP) ; where
|
|
MOVE.L 34(A0),-(SP) ; prompt
|
|
MOVE.W 32(A0),-(SP) ; numTypes
|
|
MOVE.L 28(A0),-(SP) ; typeList
|
|
MOVE.L 24(A0),-(SP) ; objFilter
|
|
MOVE.L 20(A0),-(SP) ; zoneFilter
|
|
MOVE.L 16(A0),-(SP) ; hookProc
|
|
MOVE.L 12(A0),-(SP) ; userData
|
|
MOVE.W 10(A0),-(SP) ; dialogID
|
|
MOVE.L 6(A0),-(SP) ; filterProc
|
|
MOVE.L 2(A0),-(SP) ; theReply
|
|
JSR __NuPLookup
|
|
MOVE.W (SP)+,D0
|
|
RTS
|
|
@InitManager ; 0x09
|
|
CLR.W -(SP)
|
|
MOVE.W D0, -(SP) ; Manager Selector
|
|
JSR __InitManager
|
|
MOVE.W (SP)+,D0
|
|
RTS
|
|
|
|
@CTBSetRefCon MOVE.L A1,-(SP) ; 0x0A
|
|
MOVE.L 6(A0),A1
|
|
MOVE.L (A1),A1
|
|
MOVE.L 2(A0),CTBRefCon(A1)
|
|
MOVE.L (SP)+,A1
|
|
RTS
|
|
|
|
@CTBGetRefCon MOVE.L A1,-(SP) ; 0x0B
|
|
MOVE.L 2(A0),A1
|
|
MOVE.L (A1),A1
|
|
MOVE.L CTBRefCon(A1),D0
|
|
MOVE.L (SP)+,A1
|
|
RTS
|
|
|
|
@CTBSetUserData MOVE.L A1,-(SP) ; 0x0C
|
|
MOVE.L 6(A0),A1
|
|
MOVE.L (A1),A1
|
|
MOVE.L 2(A0),CTBUserData(A1)
|
|
MOVE.L (SP)+,A1
|
|
RTS
|
|
|
|
@CTBGetUserData MOVE.L A1,-(SP) ; 0x0D
|
|
MOVE.L 2(A0),A1
|
|
MOVE.L (A1),A1
|
|
MOVE.L CTBUserData(A1),D0
|
|
MOVE.L (SP)+,A1
|
|
RTS
|
|
|
|
@CTBGetVersion CLR.L -(SP) ; 0x0E
|
|
MOVE.L 2(A0), -(SP) ; hCore
|
|
MOVE.W D0, -(SP) ; mgrsel
|
|
JSR __CTBGetVersion
|
|
MOVE.L (SP)+, D0
|
|
RTS
|
|
|
|
|
|
@CTBSetupPreflight CLR.L -(SP) ; make room
|
|
MOVE.W 6(A0), -(SP) ; procID
|
|
MOVE.L 2(A0), -(SP) ; magicCookie (var)
|
|
MOVE.W D0, -(SP) ; manager selector
|
|
JSR __CTBSetupPreflight
|
|
MOVE.L (SP)+, D0 ; function result
|
|
RTS
|
|
|
|
@CTBSetupSetup
|
|
MOVE.W 16(A0), -(SP) ; procID
|
|
MOVE.L 12(A0), -(SP) ; theConfig
|
|
MOVE.W 10(A0), -(SP) ; count
|
|
MOVE.L 6(A0), -(SP) ; theDialog
|
|
MOVE.L 2(A0), -(SP) ; magicCookie (var)
|
|
MOVE.W D0, -(SP) ; manager selector
|
|
JSR __CTBSetupSetup
|
|
RTS
|
|
|
|
@CTBSetupFilter CLR.B -(SP) ; make room
|
|
MOVE.W 24(A0), -(SP) ; procID
|
|
MOVE.L 20(A0), -(SP) ; theConfig
|
|
MOVE.W 18(A0), -(SP) ; count
|
|
MOVE.L 14(A0), -(SP) ; theDialog
|
|
MOVE.L 10(A0), -(SP) ; theEvent(var)
|
|
MOVE.L 6(A0), -(SP) ; theItem(var)
|
|
MOVE.L 2(A0), -(SP) ; magicCookie(var)
|
|
MOVE.W D0, -(SP) ; manager selector
|
|
JSR __CTBSetupFilter
|
|
MOVE.B (SP)+, D0 ; function result
|
|
RTS
|
|
|
|
@CTBSetupItem
|
|
MOVE.W 20(A0), -(SP) ; procID
|
|
MOVE.L 16(A0), -(SP) ; theConfig
|
|
MOVE.W 14(A0), -(SP) ; count
|
|
MOVE.L 10(A0), -(SP) ; theDialog
|
|
MOVE.L 6(A0), -(SP) ; theItem(var)
|
|
MOVE.L 2(A0), -(SP) ; magicCookie(var)
|
|
MOVE.W D0, -(SP) ; manager selector
|
|
JSR __CTBSetupItem
|
|
RTS
|
|
|
|
@CTBSetupXCleanup
|
|
MOVE.W 18(A0), -(SP) ; procID
|
|
MOVE.L 14(A0), -(SP) ; theConfig
|
|
MOVE.W 12(A0), -(SP) ; count
|
|
MOVE.L 8(A0), -(SP) ; theDialog
|
|
MOVE.W 6(A0), -(SP) ; OKed
|
|
MOVE.L 2(A0), -(SP) ; magicCookie
|
|
MOVE.W D0, -(SP) ; manager selector
|
|
JSR __CTBSetupXCleanup
|
|
RTS
|
|
|
|
@CTBSetupCleanup
|
|
MOVE.W 16(A0), -(SP) ; procID
|
|
MOVE.L 12(A0), -(SP) ; theConfig
|
|
MOVE.W 10(A0), -(SP) ; count
|
|
MOVE.L 6(A0), -(SP) ; theDialog
|
|
MOVE.L 2(A0), -(SP) ; magicCookie
|
|
MOVE.W D0, -(SP) ; manager selector
|
|
JSR __CTBSetupCleanup
|
|
RTS
|
|
|
|
@CTBSetupPostflight
|
|
MOVE.W 2(A0),-(SP) ; procID
|
|
MOVE.W D0, -(SP) ; manager selector
|
|
JSR __CTBSetupPostflight
|
|
RTS
|
|
|
|
@CTBGetConfig CLR.L -(SP) ; make room
|
|
MOVE.L 2(A0), -(SP) ; hCore
|
|
MOVE.W D0, -(SP) ; manager selector
|
|
JSR __CTBGetConfig
|
|
MOVE.L (SP)+, D0
|
|
RTS
|
|
|
|
@CTBSetConfig CLR.W -(SP) ; make room
|
|
MOVE.L 6(A0), -(SP) ; hCore
|
|
MOVE.L 2(A0), -(SP) ; thePtr
|
|
MOVE.W D0, -(SP) ; manager selector
|
|
JSR __CTBSetConfig
|
|
MOVE.W (SP)+, D0 ; return value
|
|
RTS
|
|
|
|
@CTBIntlToEnglish CLR.W -(SP) ; make room
|
|
MOVE.L 12(A0), -(SP) ; hCore
|
|
MOVE.L 8(A0), -(SP) ; input ptr
|
|
MOVE.L 4(A0), -(SP) ; output ptr
|
|
MOVE.W 2(A0), -(SP) ; language
|
|
MOVE.W D0, -(SP) ; manager selector
|
|
JSR __CTBIntlToEnglish
|
|
MOVE.W (SP)+, D0
|
|
RTS
|
|
|
|
|
|
@CTBEnglishToIntl CLR.W -(SP) ; make room
|
|
MOVE.L 12(A0), -(SP) ; hCore
|
|
MOVE.L 8(A0), -(SP) ; input ptr
|
|
MOVE.L 4(A0), -(SP) ; output ptr
|
|
MOVE.W 2(A0), -(SP) ; language
|
|
MOVE.W D0, -(SP) ; manager selector
|
|
JSR __CTBEnglishToIntl
|
|
MOVE.W (SP)+, D0
|
|
RTS
|
|
|
|
@CTBChoose ; 292
|
|
CLR.W -(SP) ; make room
|
|
MOVE.L 10(A0), -(SP) ; hCore
|
|
MOVE.L 6(A0), -(SP) ; where
|
|
MOVE.L 2(A0), -(SP) ; idleProc
|
|
MOVE.W D0, -(SP) ; manager selector
|
|
JSR __CTBChoose
|
|
MOVE.W (SP)+, D0 ; return point
|
|
RTS
|
|
|
|
@CTBDefault
|
|
MOVE.L 6(A0), -(SP) ; theConfig
|
|
MOVE.W 4(A0), -(SP) ; procID
|
|
MOVE.W 2(A0), -(SP) ; allocate
|
|
MOVE.W D0,-(SP) ; MgrSel
|
|
JSR __CTBDefault
|
|
RTS
|
|
|
|
@CTBValidate CLR.B -(SP) ; make room
|
|
MOVE.L 2(A0), -(SP) ; hCore
|
|
MOVE.W D0,-(SP) ; MgrSel
|
|
JSR __CTBValidate
|
|
MOVE.B (SP)+, D0
|
|
RTS
|
|
|
|
@CTBGetProcID CLR.W -(SP) ; make room
|
|
MOVE.L 2(A0), -(SP) ; name
|
|
MOVE.W D0, -(SP) ; mgrsel
|
|
JSR __CTBGetProcID
|
|
MOVE.W (SP)+, D0
|
|
RTS
|
|
|
|
@CTBResume
|
|
MOVE.L 4(A0),-(SP) ; hCore
|
|
MOVE.W 2(A0),-(SP) ; res
|
|
JSR __CTBResume
|
|
RTS
|
|
|
|
@CTBMenu CLR.B -(SP) ; make room
|
|
MOVE.L 6(A0), -(SP) ; hCore
|
|
MOVE.W 4(A0), -(SP) ; menuID
|
|
MOVE.W 2(A0), -(SP) ; item
|
|
JSR __CTBMenu
|
|
MOVE.B (SP)+, D0
|
|
RTS
|
|
|
|
@CTBEvent
|
|
MOVE.L 6(A0), -(SP) ; hCore
|
|
MOVE.L 2(A0), -(SP) ; event record pointer
|
|
JSR __CTBEvent
|
|
RTS
|
|
|
|
@CTBActivate ; 21
|
|
MOVE.L 4(A0), -(SP) ; hCore
|
|
MOVE.W 2(A0), -(SP) ; act
|
|
JSR __CTBActivate
|
|
RTS
|
|
|
|
@CTBAbort ; 23
|
|
CLR.W -(SP) ; make room
|
|
MOVE.L 2(A0), -(SP) ; hCore
|
|
JSR __CTBAbort
|
|
MOVE.W (SP)+, D0
|
|
RTS
|
|
|
|
@CTBReset ; 24
|
|
MOVE.L 2(A0), -(SP) ; hCore
|
|
JSR __CTBReset
|
|
RTS
|
|
|
|
@CTBPChoose ; 26
|
|
CLR.W -(SP) ; make room
|
|
MOVE.L 10(A0), -(SP) ; hCore
|
|
MOVE.L 6(A0), -(SP) ; where
|
|
MOVE.L 2(A0), -(SP) ; chooseRec
|
|
MOVE.W D0, -(SP) ; manager selector
|
|
JSR __CTBPChoose
|
|
MOVE.W (SP)+, D0 ; return point
|
|
RTS
|
|
|
|
@CTBGetErrorString ; 28
|
|
MOVE.L 8(A0), -(SP) ; hCore
|
|
MOVE.W 6(A0), -(SP) ; id
|
|
MOVE.L 2(A0), -(SP) ; msg
|
|
MOVE.W D0, -(SP) ; manager selector
|
|
JSR __CTBGetErrorString
|
|
RTS
|
|
|
|
CTBGetToolName PROC
|
|
IMPORT CRMParseRefNum;
|
|
local EQU -2
|
|
ignored EQU -2
|
|
name EQU 2
|
|
procID EQU 6
|
|
LINK A6,#local
|
|
MOVE.L A1,-(SP)
|
|
MOVE.L name(A0),A1
|
|
MOVE.B #$0,(A1)
|
|
SUB.L #$2,SP
|
|
MOVE.W procID(A0),-(SP)
|
|
MOVE.L A1,-(SP)
|
|
PEA ignored(A6)
|
|
JSR CRMParseRefNum
|
|
TST.W (SP)+
|
|
MOVE.L (SP)+,A1
|
|
UNLK A6
|
|
RTS
|
|
ENDP
|
|
|
|
|
|
_CTBValidate FUNC
|
|
;
|
|
; Registers:
|
|
; A0 - Toolbox Record
|
|
; A1 - place to dereference hCore
|
|
; A2 - hCore
|
|
; A3 - procPtr for valproc
|
|
|
|
; D0 - (entry)Manager Selector used to index into table
|
|
; temp location for setting CCs after getting resource
|
|
; D3 - procID until we call the tool, result at end
|
|
IMPORT CRMGetAResource, CRMToolPreflight, CRMToolPostflight, CRMReleaseResource
|
|
local EQU -$C
|
|
context EQU -$C
|
|
hCore EQU 2
|
|
LINK A6,#local
|
|
MOVEM.L D1-D7/A1-A4,-(SP)
|
|
SUB.L #4,SP ; Make room for the return value
|
|
ASL.W #2, D0 ; multiply by 4
|
|
MOVE.L ValTable(D0),-(SP) ; pull it from the table
|
|
MOVE.L hCore(A0),A2
|
|
MOVE.L (A2),A1
|
|
MOVE.W CTBprocID(A1),D3
|
|
MOVE.W D3,-(SP)
|
|
JSR CRMGetAResource ; Get the Val proc
|
|
|
|
MOVE.L (A7)+,A0
|
|
MOVE.L A0,D0 ; Set the condition codes (MOVEA doesn't set them)
|
|
BEQ.S @error
|
|
_MoveHHi ; doesn't matter if this errors
|
|
_HLock ; Lock it up
|
|
MOVE.L A0,A3 ; Save off the proc handle
|
|
|
|
MOVE.W D3,-(SP) ; Preflight the tool
|
|
PEA context(A6)
|
|
JSR CRMToolPreflight
|
|
|
|
CLR.L -(SP)
|
|
MOVE.L A2,-(SP) ; hCore
|
|
MOVE.W #CTBValidateMsg,-(SP) ; msg
|
|
CLR.L -(SP) ; p1
|
|
CLR.L -(SP) ; p2
|
|
CLR.L -(SP) ; p3
|
|
MOVE.L (A3),A0 ; Dereference procptr
|
|
JSR (A0)
|
|
|
|
MOVE.L (SP)+,D3
|
|
|
|
PEA context(A6)
|
|
JSR CRMToolPostflight
|
|
|
|
MOVE.L A3,-(SP)
|
|
JSR CRMReleaseResource ; Get rid of it
|
|
|
|
BRA.S @done
|
|
@error
|
|
MOVE.W 0,D3
|
|
@done
|
|
CLR.L D0
|
|
TST.W D3
|
|
|
|
SEQ D0
|
|
NEG.B D0
|
|
MOVEM.L D1-D7/A1-A4,-(SP)
|
|
UNLK A6
|
|
RTS
|
|
|
|
DbgInfo.new _CTBValidate ; Let me see a name
|
|
ValTable DC.L ('cval'), ('tval'), ('fval')
|
|
|
|
ENDFUNC
|
|
|
|
|
|
CTBIdle PROC
|
|
IMPORT CRMToolPreflight, CRMToolPostflight
|
|
local EQU -$C
|
|
context EQU -$C
|
|
hCore EQU 2
|
|
LINK A6,#Local
|
|
MOVEM.L A1-A3,-(SP)
|
|
|
|
MOVE.L hCore(A0),A2 ; Get the core handle
|
|
MOVE.L (A2),A1 ; Dereference it
|
|
MOVE.L CTBdefProc(A1),A3 ; Save off the DefProc
|
|
MOVE.W CTBprocID(A1),-(A7) ; Get the procID
|
|
|
|
PEA context(A6)
|
|
JSR CRMToolPreflight ; Preflight the tool
|
|
|
|
CLR.L -(SP) ; Call the defproc
|
|
MOVE.L A2,-(SP) ; hCore
|
|
MOVE.W #CTBIdleMsg,-(SP) ; msg
|
|
CLR.L -(SP) ; p1
|
|
CLR.L -(SP) ; p2
|
|
CLR.L -(SP) ; p3
|
|
JSR (A3)
|
|
|
|
TST.L (A7)+ ; Get rid of return value
|
|
|
|
PEA context(A6) ; Postflight the tool
|
|
JSR CRMToolPostflight
|
|
|
|
MOVEM.L (SP)+,A1-A3 ; Restore the world
|
|
UNLK A6
|
|
RTS
|
|
DbgInfo.new CTBIdle ; Let me see a name
|
|
ENDP
|
|
|
|
|
|
END |