home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Frozen Fish 1: Amiga
/
FrozenFish-Apr94.iso
/
bbs
/
alib
/
d8xx
/
d857
/
makepatch.lha
/
MakePatch
/
includes
/
PToolLibrary.i
Wrap
Text File
|
1993-03-24
|
7KB
|
214 lines
;****** Auto-Revision Header (do not edit) *******************************
;*
;* © Copyright by PetiWare
;*
;* Filename : PToolLibrary.i
;* Created on : 23-Aug-92
;* Created by : Peter Simons
;* Current revision : V2.000
;*
;*
;* Purpose: Functionoffsets for PTool.library
;*
;*
;* V2.000 : Definitionen für v2.xxx der PTool.Library
;* Peter Simons (15-Mär-93)
;*
;* V1.000 : Definitionen für V1.xxx der Library
;*
;* V0.000 : --- Initial release ---
;*
;*************************************************************************
;-------------------------------------- Offsets -----------
LIBINIT
LIBDEF _LVOAllocNewStack
LIBDEF _LVORestoreStack
LIBDEF _LVOGetErrorMsg
LIBDEF _LVOErrorHandleDos
LIBDEF _LVOErrorHandleIntuition
LIBDEF _LVOCheckConfig
LIBDEF _LVODisplayConfigErrorDos
LIBDEF _LVOGetStackSize
LIBDEF _LVOParsePatternFast
LIBDEF _LVOPatternMatchFast
LIBDEF _LVOParsePatternFastArray
LIBDEF _LVOPatternMatchFastArray
LIBDEF _LVOPatternTest
LIBDEF _LVOLoadFile
LIBDEF _LVOInterpretConfigBuffer
LIBDEF _LVOInterpretConfigFile
LIBDEF _LVOPrintF
LIBDEF _LVOPrintFSimple
LIBDEF _LVOLoadBreak
LIBDEF _LVOSaveBreak
LIBDEF _LVOGetFileSize
LIBDEF _LVOCRC16Buffer
LIBDEF _LVOCRC16File
LIBDEF _LVOPTAllocRemember
LIBDEF _LVOPTFreeRemember
LIBDEF _LVOPTFreeOneBlock
LIBDEF _LVOLoadFileRemember
LIBDEF _LVOInterpretConfigFileRemember
LIBDEF _LVOFind
LIBDEF _LVOReplace
LIBDEF _LVOCmpStrings
LIBDEF _LVOCmpStringsSen
LIBDEF _LVOCRC32Buffer
LIBDEF _LVOCRC32File
;-------------------------------------- LibraryName -------
PTOOLNAME MACRO
CSTR "ptool.library"
EVEN
ENDM
;-------------------------------------- LibraryBase -------
STRUCTURE PToolLib,LIB_SIZE
ULONG ptl_SysBase
ULONG ptl_DOSBase
ULONG ptl_IntuitionBase
ULONG ptl_LocaleBase
ULONG ptl_MessageCatalog
ULONG ptl_SegList
LABEL ptl_SIZEOF
;-------------------------------------- CheckConfig -------
BITDEF CC,68010,0
BITDEF CC,68020,1
BITDEF CC,68030,2
BITDEF CC,68040,3
BITDEF CC,68881,4
BITDEF CC,68882,5
BITDEF CC,FPU40,6
BITDEF CC,OS_VERSION,16
CC_MAXCONFIG EQU %00000000000000010000000001111111
;-------------------------------------- InterpretConfig ---
IC_TagBase EQU TAG_USER+$F0000
IC_String EQU IC_TagBase+$01
IC_Number EQU IC_TagBase+$02
IC_YesNo EQU IC_TagBase+$03
;-------------------------------------- PTAllocRemember ---
PTMemoryList CLRSO ; Interner Aufbau der Remember-Liste
ptml_NextBlock SO.L 1
ptml_Size SO.L 1
ptml_SIZEOF SOVAL
;-------------------------------------- ErrorHandle -------
; ERRORHANDLE ist ein fertig ausgearbeitetes Macro, daß die komfortable
; Einbindung von Fehlermeldungen erlaubt. Die Parameter sind:
; SaveTo, Errornummer, Continue, [Dataflow], [DataFlow2]
;
; SaveTo - kann auch weggelassen werden (sprich:''), dann wird D0 nicht
; gespeichert sondern lediglich getestet. Wichtig: Dieses Macro
; funktioniert nach Routinen, die eine 0L als Fehler
; zurückgeben!
;
; Errornummer - Die Errornummer
;
; DataFlow - Der erste Parameter für die Fehlermeldung, je nachdem eine
; Zahl oder Adresse. Um die richtige Verwaltung kümmert sich das
; Macro selbst.
;
; DataFlow2 - genau wie der vorherige Parameter, nur ist dieser optional
;
;
;
; Das Macro ruft eine Funktion mir Namen _ErrorHandle auf, die ungefähr
; folgendes Aussehen haben sollte:
;
; _ErrorHandle movem.l d0-d1/a0-a2/a6,-(SP)
; lea (PrgName,PC),a0
; sub.l a2,a2
; move.l (_PToolBase,PC),a6
; jsr (_LVOErrorHandleIntuition,a6)
; movem.l (SP)+,d0-d1/a0-a2/a6
; rts
;
; Für ErrorHandleDos() kann A2 natuerlich vernachlässigt werden,
; allerdings muß dann D1 initialisiert werden. Die Routine bekommt als
; Parameter einfach D0 und A1 fertig initialisiert. Wollen sie also
; demnächst einen Fehler mittels IoErr() abfangen, reicht jetzt:
;
; [...]
; tst.l d0
; bne.b .NoError
; pea (.GoOn,PC)
; bra _ErrorHandle ; Die Null steht schon in D0!!
;
; .NoError [...]
;
; oder sogar:
;
; ERRORHANDLE ,0,(.GoOn,PC)
;
;
ERRORHANDLE MACRO
errbyte set 0
IFC ,\1
tst.l d0 ; Ist ein Ziel für D0 an-
ELSE ; gegeben? Wenn nein, dann
move.l d0,\1 ; einfach D0 testen.
ENDC
bne.b .NoError\@ ; In D0 steht schon eine
IFEQ \2 ; Null!!
pea \3
bra _ErrorHandle ; Fehler 0 --> keine Parameter
ELSE
IFEQ \2-5
pea \3
bra _ErrorHandle ; Fehler 5 --> keine Parameter
ELSE
moveq #\2,d0 ; Fehlernummer nach D0
IFNC \5 ; Wenn vorhanden, den
IFEQ \2-9 ; zweiten DataFlow auf den
move.w #\5,-(SP) ; Stack legen.
errbyte set errbyte+2
ELSE ; Sonderfälle:
pea \5 ; Err 9 = Zahl.W
errbyte set errbyte+4
ENDC ; Ansonsten immer ein Zeiger
ENDC ; auf einen String
IFEQ \2-2 ; Ersten DataFlow auf den
move.l #\4,-(SP) ; Stack legen.
errbyte set errbyte+4
ELSE ; Sonderfälle:
IFEQ \2-8 ; Err 2 = Zahl.L
move.l #\4,-(SP) ; Err 8 = Zahl.L
errbyte set errbyte+4
ELSE
pea \4 ; Ansonsten immer ein Zeiger
errbyte set errbyte+4
ENDC
ENDC
move.l SP,a1 ; Zeiger auf den DataFlow
bsr _ErrorHandle ; nach A1 laden und in
addq.w #errbyte,SP ; ErrorHandle() springen.
bra \3
ENDC
ENDC
.NoError\@
ENDM