mac-rom/Internal/Asm/BTreeEqu.a

247 lines
7.6 KiB
Plaintext
Raw Normal View History

;
; File: BTreeEqu.a
;
; Contains: Private equates for the B*Tree manager.
;
; Written by: Kenny SC. Tung
;
; Copyright: <09> 1989-1992 by Apple Computer, Inc., all rights reserved.
;
; Change History (most recent first):
;
; <15> 10/7/92 gs Add btTooManyNodesErr (-430) for OCE folks to get around DIVU
; "bug".
; <14> 8/21/91 JSM Clean up header.
; <13> 1/30/91 gbm sab, #38: Change the <20>already including this file<6C> variable to
; all uppercase (for security reasons)
; <12> 1/4/91 KST With dnf: Took out the definition of 'kdDTString' and changed
; the type number to 'kdReserved'.
; <11> 8/3/90 KST Adding a new field ioBTWriteFlag in BTioParam structure.
; <10> 7/17/90 KST btRsrvedErr is no longer used.
; <9> 7/17/90 KST Adding 2 error codes.
; <8> 7/6/90 KST Changing maxKeyLen from 127 to 129 per AppleMail request.
; <6> 4/9/90 KST Making necessary changes to support user specified key
; comparison procedure.
; <5> 4/4/90 KST Adding new error codes.
; <4> 3/13/90 KST Adding a new error code -- "btVersionErr".
; <3> 2/23/90 KST Adding a new error code -- btNoKDErr.
; <2> 2/22/90 KST Moved B*tree error codes from SysErr.a into this file. Added a
; new field in BTioParam.
; <1> 2/21/90 HJR Moved from Interfaces:AIncludes to Internal:Asm.
; <4> 2/6/90 KST Adding a new call, btUpdateKD.
; <3> 1/22/90 KST Added new access control calls and rewrote btree macros.
; <2.1> 10/16/89 KST Added new _BTCleanUp trap and selector.
; <2.0> 10/3/89 KST Moved B*Tree assembly routine macros from Hfs70Equ.a to
; BTreeEqu.a. Changed ioKBufSize to ioKReqCount.
; <1.9> 9/18/89 KST Added a new type kdDTString to replace default for DTDB.
; <1.8> 8/16/89 KST BTHints are not exported to the public.
; <1.7> 8/7/89 KST Moved error codes to sysErr.a and Moved btQType to sysEqu.a
; <1.6> 7/6/89 KST Added BTFlush call.
; <1.5> 6/15/89 KST maxKeylen is used by DTMgr, so it can't be in BTreePrivate.a
; <1.4> 6/15/89 KST Separate private stuff from BTreeEqu.a
; <1.3> 6/14/89 KST Made changes for the new implementation of BTreeMgr.
; <1.2> 3/21/89 KST Changed BTError code, added support for Mac Plus.
; <1.1> 3/8/89 KST Added IMPORT for cmdAddr and fsqAddr.
; <1.0> 3/8/89 KST Adding to EASE for the first time.
;
IF &TYPE('__INCLUDINGBTREEEQU__') = 'UNDEFINED' THEN
__INCLUDINGBTREEEQU__ SET 1
_BTreeDispatch OPWORD $A08E
;; dispatch selector:
btInitN EQU 0
btOpenN EQU 1
btCloseN EQU 2
btInsertN EQU 3
btSetRecN EQU 4
btReplRecN EQU 5
btSearchN EQU 6
btGetRecN EQU 7
btDeleteN EQU 8
btGetInfoN EQU 9
btFlushN EQU 10 ; <07/06/89 KSCT>
btCleanUpN EQU 11 ; <10/05/89 KSCT>
btRsrvAccessN EQU 12 ; <12/01/89 KSCT>
btRelAccessN EQU 13 ; <12/01/89 KSCT>
btGetUIDN EQU 14 ; <12/14/89 KSCT>
btUpdateKDN EQU 15 ; <02/05/90 KSCT>
maxBTtrap EQU btUpdateKDN ; <02/05/90 KSCT>
;; key descriptors:
kdMaxLen EQU 24 ; only 24 bytes allowed for the KD record including length byte
kdSkip EQU 0 ; skip next N bytes
kdByte EQU 1 ; unsigned byte
kdSignedByte EQU 2 ; signed
kdString EQU 3 ; variable length string
kdWord EQU 4 ; unsigned word
kdSignedWord EQU 5 ; signed
kdLong EQU 6 ; unsigned long
kdSignedLong EQU 7 ; signed long
kdFLString EQU 8 ; fixed length string
kdReserved EQU 9 ; not used by anyone. <03Jan91 #12>
kdUseKCProc EQU 10 ; always uses key comparison procedure <28Mar90>
kdMaxnum EQU kdUseKCProc+1 ; 0 ~ 10 are OK, max+1 <28Mar90>
;kdDTString EQU 9 ; a special type for DeskTop Mgr. <9/18/89>
;; string attr; not a valid key type parser can recognize the error <3/17/89>
casesen EQU 16 ; case sensitive <3/17/89>
diacNsen EQU 32 ; diacritical non sensitive <3/17/89>
keyAttrmsk EQU $CF ; 1100 1111 mask <3/17/89>
;; BTioParam
ioBTWriteFlag EQU 26 ;(byte) used by BTFlush only, set to flush the cache
ioBTKeyPtr EQU 44 ;(long)
;; ioDirID EQU 48 ; must have this field
ioBTHint EQU 52 ;(4 longs)
ioBTPosMode EQU 68 ;(word)
ioKReqCount EQU 70 ;(word)
ioKActCount EQU 72 ;(word)
ioBTRsrvUID EQU 74 ;(long) <04Dec89>
ioBTDataSize EQU 78 ;(long) <19Feb90>
ioBTKCProc EQU 82 ;(long) <28Mar90>
BTioParamSize EQU ioBTKCProc+4 ; <28Mar90>
;; BTParam (used by BTInit, BTUpdateKD and BTGetInfo only)
ioBTNodeSize EQU 26 ;(word)
ioBTMaxKLen EQU 28 ;(word)
ioBTDepth EQU 30 ;(word)
ioBTRecNum EQU 32 ;(long)
ioBTNNodes EQU 36 ;(long)
ioBTFreeNode EQU 40 ;(long)
ioBTClumpSize EQU 44 ;(long)
;; ioDirID EQU 48 ; must have this field
ioBTKDPtr EQU 52 ;(long)
ioBTKDReqCount EQU 56 ;(word)
ioBTKDActCount EQU 58 ;(word)
BTParamSize equ ioBTKDActCount+2
maxKeyLen EQU 129 ; max key length (doesn't include key length byte)
; B*Tree functions:
MACRO
_BTInit &async1,&async2
MOVEQ #btInitN,D0
_BTreeDispatch &async1,&async2
ENDM
MACRO
_BTOpen &async1,&async2
MOVEQ #btOpenN,D0
_BTreeDispatch &async1,&async2
ENDM
MACRO
_BTClose &async1,&async2
MOVEQ #btCloseN,D0
_BTreeDispatch &async1,&async2
ENDM
MACRO
_BTInsRec &async1,&async2
MOVEQ #btInsertN,D0
_BTreeDispatch &async1,&async2
ENDM
MACRO
_BTSetRec &async1,&async2
MOVEQ #btSetRecN,D0
_BTreeDispatch &async1,&async2
ENDM
MACRO
_BTReplRec &async1,&async2
MOVEQ #btReplRecN,D0
_BTreeDispatch &async1,&async2
ENDM
MACRO
_BTSearch &async1,&async2
MOVEQ #btSearchN,D0
_BTreeDispatch &async1,&async2
ENDM
MACRO
_BTGetRec &async1,&async2
MOVEQ #btGetRecN,D0
_BTreeDispatch &async1,&async2
ENDM
MACRO
_BTDelRec &async1,&async2
MOVEQ #btDeleteN,D0
_BTreeDispatch &async1,&async2
ENDM
MACRO
_BTGetInfo &async1,&async2
MOVEQ #btGetInfoN,D0
_BTreeDispatch &async1,&async2
ENDM
MACRO
_BTFlush &async1,&async2
MOVEQ #btFlushN, D0
_BTreeDispatch &async1,&async2
ENDM
MACRO
_BTCleanUp &async1,&async2
MOVEQ #btCleanUpN, D0
_BTreeDispatch &async1,&async2
ENDM
MACRO
_BTRsrvAccess &async1,&async2
MOVEQ #btRsrvAccessN, D0
_BTreeDispatch &async1,&async2
ENDM
MACRO
_BTRelAccess &async1,&async2
MOVEQ #btRelAccessN, D0
_BTreeDispatch &async1,&async2
ENDM
MACRO ;; This call is not queued
_BTGetUid &async1,&async2
MOVEQ #btGetUidN, D0
_BTreeDispatch &async1,&async2
ENDM
MACRO
_btUpdateKD &async1,&async2
MOVEQ #btUpdateKDN, D0
_BTreeDispatch &async1,&async2
ENDM
; B*Tree Manager error codes -410 to -430
notBTree EQU -410
btBadNodeErr EQU -411
btSizeErr EQU -412 ; record too big
btNoSpaceErr EQU -413 ; not enough disk space
btDupRecErr EQU -414
btRecNotFnd EQU -415
btKeyLenErr EQU -416
btKeyAttrErr EQU -417
btKeyFdErr EQU -418 ; key field error
btPMInvalid EQU -419 ; invalid place marker
btKDLenErr EQU -420 ; KD too long or 0
btKDTypeErr EQU -421 ; unsupported KD type
btBadUIDErr EQU -422 ; Invalid UID
;btRsrvedErr EQU -423 ; the file has already been reserved
btNoKDErr EQU -424 ; no key descriptor in the header
btDepthErr EQU -425 ; tree depth > limit
btNoKCProcErr EQU -426 ; no Key Comp procedure error <28Mar90>
btVersionErr EQU -427 ; Btree version error (for future release)
btEofErr EQU -428 ; BTGetRec reading beyond EOF
btBofErr EQU -429 ; BTGetRec reading before BOF
btTooManyNodesErr EQU -430 ; Attempt to grow B*Tree beyond node limit <15>
ENDIF ; ...already included