home *** CD-ROM | disk | FTP | other *** search
- ; ___________________________________________________________________________
- ; |*************************************************************************|
- ; |*|¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|*|¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|*|
- ; |*| Set TAB to 15 for best readable file layout. |*| HiSoft DevPac 3.04 |*|
- ; |*|______________________________________________|*|____________________|*|
- ; |*************************************************************************|
- ; |*|¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|*|¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|*|
- ; |*| |*| $Id: extradefs.i (28.04.01) |*|
- ; |*| ###### ###### |*| RhoSigma Source based on NDK 3.1 Includes 40.15 |*|
- ; |*| ## ## ## # |*| _________________________________________________ |*|
- ; |*| ## ## ## |*| |*|
- ; |*| ###### ## |*| The public assembler defines for extra.library |*|
- ; |*| ## ## |*| |*|
- ; |*| ## ## # |*| ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ |*|
- ; |*| ## ###### |*| Copyright © 1998-2001 RhoSigma, Roland Heyder |*|
- ; |*| |*| All Rights Reserved. |*|
- ; |*|_______________|*|___________________________________________________|*|
- ; |*************************************************************************|
- ; ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
-
- IFND RHOSIGMA_EXTRADEFS_I
- RHOSIGMA_EXTRADEFS_I SET 1
-
- IFND EXEC_TYPES_I
- INCLUDE exec/types.i
- ENDC
- IFND EXEC_LIBRARIES_I
- INCLUDE exec/libraries.i
- ENDC
- IFND EXEC_ALERTS_I
- INCLUDE exec/alerts.i
- ENDC
-
- ;---------- die BufInfoBlock-Struktur von »BufInfo()« -----------------------
-
- STRUCTURE BIBStruct,0
- APTR bib_OwnerID ; Task, der diesen Puffer öffnete
- ULONG bib_MaxSize ; momentane Größe des Datenbereichs in Byte
- ULONG bib_FreeSize ; davon momentan noch unbenutzt
- APTR bib_DataStart ; Adresse des gegenwärtigen Datenbereichs
- ULONG bib_CurPos ; aktuelle Cursorposition (Zählbeginn=0 !!)
- ULONG bib_EndPos ; aktuelle Anfügeposition (Zählbeginn=0 !!)
- APTR bib_LastFind ; Zeiger auf zuletzt gesuchte Daten od. 0-PTR
- ULONG bib_FindSize ; die Länge obiger Such-Daten oder null
- ULONG bib_KeyNum ; der Schlüssel der o.g. Such-Daten oder -1
- ;-------------------------------- neu ab v2.062
- ULONG bib_DataMemType ; Speicherflags (MEMF_...) des Datenbereichs
- ;----------------------------------------------
- LABEL bib_SizeOf
-
- ;---------- Modes für »SeekBuf()« -------------------------------------------
-
- SKM_Current = 0 ; Positionierung relativ zur gegenwärtigen CurPos
- SKM_Start = 1 ; Positionierung relativ zum Pufferanfang
- SKM_End = 2 ; Positionierung relativ zum Pufferende
- SKM_Bookmark = 3 ; »Position« = Nummer der gewünschten Bookmark
-
- ;---------- die Parameter-Struktur für »UnpackByteRun1()« -------------------
-
- STRUCTURE UnpackParam,0
- APTR up_InBuf ; Zeiger auf die gepackten Daten
- ULONG up_InLen ; die Größe des gepackten Bereichs in Byte
- ULONG up_Private ; beim ersten Aufruf unbedingt auf 0 setzen
- LABEL up_SizeOf
-
- ;---------- Styles, Masken u. Flags für »SpecTextPrefs()« -------------------
-
- ;** Styles **
- STS_Plain = 0 ; normaler Text \
- STS_Underline = 1 ; unterstrichener Text | können durch Addition oder
- STS_Bold = 2 ; fettgedruckter Text | log. ODER kombiniert werden
- STS_Italic = 4 ; kursiver Text /
-
- ;** Masken **
- STM_Normal = %00000000 ; keine Umrandung, d.h. normale Textausgabe
- STM_Outline = %11111111 ; volle Umrandung
- STM_Shadow = %00011100 ; Schatten unten/rechts sichtbar
- STM_Ghost = %11000001 ; dies wirkt am besten, wenn Sie als »MPen«
- ; die selbe Farbe verwenden, wie der Hinter-
- ; grund hat
-
- ;** Flags **
- BITDEF ST,FJAM2,0 ; Normalerweise benutzt »SpecText()« den DrawMode JAM1,
- ; mit diesem Flag wird jedoch JAM2 erzwungen.
- BITDEF ST,AP2MP,1 ; immer der gerade eingestellte »APen« des RastPorts
- ; soll als »MainPen« (MPen) verwendet werden
- BITDEF ST,BP2TL,2 ; immer der gerade eingestellte »BPen« des RastPorts
- ; soll als »TopLeftPen« (TLPen) verwendet werden
- BITDEF ST,OP2BR,3 ; immer der gerade eingestellte »OPen« des RastPorts
- ; soll als »BottomRightPen« (BRPen) verwendet werden
- BITDEF ST,PSWAP,4 ; vertauscht »TLPen« u. »BRPen«, d.h. »TLPen« wird für
- ; un./re. und »BRPen« für ob./li. verwendet
-
- ; Die folgenden Flags haben keinen Einfluß auf die Arbeitsweise der Funk-
- ; tion »SpecText()«. Sie dienen nur dazu, »SpecTextPrefs()« mitzuteilen,
- ; welche Parameter neu eingestellt werden sollen. Damit soll überflüssiges
- ; Register-retten verhindert werden, da Sie nicht jedem Register, welches
- ; von »SpecTextPrefs()« erwartet wird, zwangsläufig einen sinnvollen Wert
- ; zuweisen müssen. Wenn Sie z.B. mit D0-D5 irgendwelche Berechnungen machen,
- ; oder sie als Schleifenzähler benutzen, und wollen dann den »MPen« ver-
- ; ändern, dann brauchen Sie nur D0 mit diesem zu initialisieren und D5 das
- ; entsprechende Flag (STF_CMPEN) zuweisen, während Sie sich um D1-D4 nicht
- ; sorgen müssen, da diese bei jenem Aufruf vollkommen unberührt und unver-
- ; ändert bleiben, d.h. sie müssen weder gerettet noch initialisiert werden.
- ;
- ; ACHTUNG: Wenn keines der folgenden Flags angegeben wird, dann heißt das
- ; ¯¯¯¯¯¯¯¯ nicht, daß KEIN Wert geändert werden soll, sondern daß ALLE Werte
- ; zu ändern sind !! (In diesem Falle müssen dann logischer Weise
- ; auch alle Register initialisiert werden.)
-
- BITDEF ST,CMPEN,10 ; Nur den »MPen« auf den angegebenen Wert ändern.
- BITDEF ST,TLPEN,11 ; Nur den »TLPen« auf den angegebenen Wert ändern.
- BITDEF ST,BRPEN,12 ; Nur den »BRPen« auf den angegebenen Wert ändern.
- BITDEF ST,STYLE,13 ; Nur den SoftStyle auf den angegebenen Wert ändern.
- BITDEF ST,CMASK,14 ; Nur die Maske auf den angegebenen Wert ändern.
- BITDEF ST,FLAGS,15 ; Nur die Flags auf den angegebenen Wert ändern.
-
- ; Es können auch alle Kombinationen der obigen Flags angegeben werden. Die
- ; Funktion »SpecTextPrefs()« wird dann alles das, was Sie wünschen, ändern.
-
- ;---------- Fehlernummern von »LastError()« ---------------------------------
-
- NoError = 0 ; bis jetzt ist kein Fehler aufgetreten
-
- ;** DBS-Funktionen **
- BufInvalid = 10 ; die angegebene Adresse war kein BufHandle
- NotOwner = 11 ; nur der Task, der den Puffer öffnete, darf ihn auch wieder schließen
- NoBufMemory = 12 ; nicht mehr genügend Speicher frei (MEM_ s.a. bib_DataMemType)
- NoDOSProcess = 13 ; die aufrufende Anwendung war kein DOS-Prozess
- IoErrRequired = 14 ; ein DOS-Error ist aufgetreten (»IoErr()« der dos.library aufrufen)
- SeekBadMode = 15 ; der angegebene »SeekMode« ist unbekannt
- SeekOffsetErr = 16 ; gewünschte »Position« unter-/überschreitet den Pufferanfang bzw. das Pufferende
- NoFindMem = 17 ; kein Speicher für Zwischenspeicherung der zu suchenden Daten (MEMF_PUBLIC)
- FindTooLong = 18 ; von CurPos bis EndPos bzw. Pufferanfang sind nur noch weniger Daten, als gesucht werden sollen
- NoFindAvail = 19 ; für »FindNext()/FindPrev()« ist mindestens ein »FindData()« erforderlich (gilt für jeden möglichen Schlüssel)
- InvalidKey = 20 ; ein angegebener Schlüssel liegt außerhalb des gültigen Bereichs (bei Find-Funktionen max. 8 (0-7) / bei Bookmarks max. 16 (0-15))
- MarkNotSet = 21 ; die angegebene Bookmark ist noch nicht gesetzt
- MarkCleared = 22 ; die Daten an der angegebenen Bookmark wurden durch »Clear()« gelöscht
-
- ;** StringToLong() **
- ResultValid = 30 ; alles in Ordnung (das Ergebnis ist gültig)
- InvalidChar = 31 ; im String wurde ein illegales Zeichen gefunden
- Overflow = 32 ; repräsentierte Zahl wäre größer als 32 Bit (LONG)
-
- ;** FillMem() **
- OddAddress = 35 ; ungerade Startadresse bei WORD- oder LONG-Modus
- NotFilled = 36 ; keine Füllung wegen Abrundung (Bereich zu klein, um wenigstens 1 Wert aufzunehmen)
-
- ;** ShowMsg() **
- BadHeight = 40 ; angegebene Höhe war größer als 200 Videozeilen
- NoStructMem = 41 ; kein Speicher für benötigte Gfx-Strukturen (MEMF_ANY)
- NoChipMemory = 42 ; nicht genügend Speicher für die BitPlanes (MEMF_CHIP)
- SpecTextErr = 43 ; die Funktion »SpecText()« hat einen Fehler gemeldet
-
- ;---------- die Basis-Struktur der extra.library ----------------------------
-
- STRUCTURE XtraBase,LIB_SIZE ; standardmäßige Library-Struktur
- APTR xb_Copyright ; ein einzeiliger Copyrightvermerk(+0)
- STRUCT xb_Private,54 ; privater Datenbereich der Library
- LABEL xb_SizeOf ; Größe der Struktur in Bytes
-
- ;---------- von der extra.library erzeugte Alert's --------------------------
-
- EL_AlertD = AT_DeadEnd!AN_Unknown
- EL_AlertR = AT_Recovery!AN_Unknown
- ; Typen-Kennungen der extra.library ($B5000000=DeadEnd/$35000000=Recovery)
-
- EL_NoDfo = EL_AlertD!AG_OpenLib!AO_DiskfontLib
- ; konnte diskfont.library V33+ (bzw. V36+ für CGX-Version) nicht öffnen ($B503800B)
-
- EL_NoDOS = EL_AlertD!AG_OpenLib!AO_DOSLib
- ; konnte dos.library V33+ (bzw. V36+ für CGX-Version) nicht öffnen ($B5038007)
-
- EL_NoGfx = EL_AlertD!AG_OpenLib!AO_GraphicsLib
- ; konnte graphics.library V33+ (bzw. V36+ für CGX-Version) nicht öffnen ($B5038002)
-
- EL_NoInt = EL_AlertD!AG_OpenLib!AO_Intuition
- ; konnte intuition.library V33+ (bzw. V36+ für CGX-Version) nicht öffnen ($B5038004)
-
- EL_Trespassed = EL_AlertD!AG_IOError!AO_Unknown
- ; Task hat Library benutzt, ohne sie vorher zu öffnen ($B5068035)
-
- ;---------- mit extra.library verwendbare Macros (s.a. extra_lib.i) ---------
-
- SMTPOS_C EQU -1 ; Text zentrieren
- SMTPOS_L EQU -2 ; Text linksbündig
- SMTPOS_R EQU -3 ; Text rechtsbündig
-
- ;*** extra.library / SMCOLOR() ***
- ;============================================================================
- ; Dieses Macro erstellt einen Farbeintrag für die optional anzugebende Farb-
- ; tabelle für die Funktion »ShowMsg()«.
- ;----------------------------------------------------------------------------
- ; Definiert: extradefs.i (Copyright © 1998-2001 RhoSigma, Roland Heyder)
- ;
- ; Schablone: Pen/A/N, Red/A/N, Green/A/N, Blue/A/N, END/K/S
- ;
- ; Parameter: Pen --> Nr. des zu ändernden Farbstiftes (3-15)
- ; (0-2 sind reserviert u. werden ignoriert)
- ;
- ; Red --> Rot-Anteil der neuen Farbe (0-15)
- ; Green --> Grün-Anteil der neuen Farbe (0-15)
- ; Blue --> Blau-Anteil der neuen Farbe (0-15)
- ;
- ; END --> Wird dieses Schlüsselwort angegeben, dann endet die
- ; Farbtabelle an dieser Stelle, anderenfalls muß ein
- ; weiterer Farbeintrag (Macro-Aufruf) folgen.
- ;
- ; Bemerkung: Ein Beispiel für die Benutzung dieses Macros finden Sie in der
- ; Datei »demo/ShowMsgDemo.ASM«.
- ;
- ; Siehe auch: »SMTEXTP()«, »SMTEXT()«, »ShowMsg()«
- ;============================================================================
-
- SMCOLOR MACRO ;(Pen/A/N, Red/A/N, Green/A/N, Blue/A/N, END/K/S)
- ;-------------------------------------------------------------
- dc.b \1
- SMc\@ = \2*256+\3*16+\4 ; RGB4 berechnen
- dc.b SMc\@>>8,SMc\@&255
-
- IFNC '\5','END'
- dc.b 1 ; noch eine Farbe
- ELSEIF
- dc.b 0 ; Ende der Farbtabelle
- ENDC
- ;-------------------------------------------------------------
- ENDM ;SMCOLOR
-
- ;*** extra.library / SMTEXTP() ***
- ;============================================================================
- ; Dieses Macro erstellt einen Teilstring des Parameterstrings der Funktion
- ; »ShowMsg()« inclusive der gewünschten Einstellungen für die Textausgabe.
- ; Wahlweise kann der Text automatisch zentriert, oder links- bzw. rechtsbündig
- ; ausgerichtet werden.
- ;----------------------------------------------------------------------------
- ; Definiert: extradefs.i (Copyright © 1998-2001 RhoSigma, Roland Heyder)
- ;
- ; Schablone: xPos/A/N, yPos/A/N, MPen/A/N, TLPen/A/N, BRPen/A/N, Style/A/N,
- ; Mask/A/N, Text/A, END/K/S
- ;
- ; Parameter: xPos --> x-Position des Textes,
- ; oder einer der oben definierten SMTPOS-Werte
- ;
- ; yPos --> y-Position des Textes,
- ; Ausrichtung erfolgt an der Oberkante des Fonts
- ;
- ; MPen --> gewünschter MainPen \
- ; TLPen --> gewünschter TopLeftPen |
- ; BRPen --> gewünschter BottomRightPen | (s. »SpecTextPrefs()«)
- ; Style --> gewünschter SoftStyle |
- ; Mask --> gewünschte Randmaske /
- ;
- ; Text --> der auszugebende Text selbst,
- ; in <..>, wenn Leerzeichen enthalten sind
- ;
- ; END --> Wird dieses Schlüsselwort angegeben, dann endet der
- ; Parameterstring an dieser Stelle, anderenfalls muß
- ; ein weiterer Teilstring (Macro-Aufruf) folgen.
- ;
- ; Bemerkung: Dieses Macro sollten Sie nur dann verwenden, wenn Sie für
- ; diesen Teilstring neue Einstellungen für Farben etc. machen
- ; wollen. Wenn dieser Teilstring jedoch mit den gleichen Ein-
- ; stellungen ausgegeben werden soll, wie der vorhergehende bzw.
- ; Sie die Default-Einstellungen verwenden wollen, dann müssen
- ; Sie stattdessen das Macro »SMTEXT()« verwenden.
- ;
- ; Ein Beispiel für die Benutzung dieses Macros finden Sie in der
- ; Datei »demo/ShowMsgDemo.ASM«.
- ;
- ; Siehe auch: »SMCOLOR()«, »SMTEXT()«, »ShowMsg()«
- ;============================================================================
-
- SMTEXTP MACRO ;(xPos/A/N, yPos/A/N, MPen/A/N, TLPen/A/N, BRPen/A/N, Style/A/N, Mask/A/N, Text/A, END/K/S)
- ;-------------------------------------------------------------
- IFEQ \1+(-SMTPOS_C)
- dc.b SMPz\@>>8,SMPz\@&255 ;X-Pos berechnet (zentriert)
- ELSEIF
- IFEQ \1+(-SMTPOS_L)
- dc.b 0,12 ;X-Pos (linksbündig)
- ELSEIF
- IFEQ \1+(-SMTPOS_R)
- dc.b SMPr\@>>8,SMPr\@&255 ;X-Pos berechnet (rechtsbündig)
- ELSEIF
- dc.b \1>>8,\1&255 ;angegebene absolute X-Pos
- ENDC
- ENDC
- ENDC
-
- dc.b \2,1,\3,\4,\5,\6,\7 ;Y-Pos u. neue Prefs
- SMPs\@ dc.b "\8" ;Text ohne 0-Byte
- SMPe\@
- SMPl\@ = (SMPe\@-SMPs\@) ;Länge der Zeichenkette
-
- SMPz\@ = (640-(SMPl\@*8))/2 ;X-Pos für Zentrierung
- SMPr\@ = (640-(SMPl\@*8))-12 ;X-Pos für rechtsbündig
-
- IFNC '\9','END'
- dc.b 0,1 ;Text-0-Byte u. Continue
- ELSEIF
- dc.b 0,0 ;Text-0-Byte u. ParamEnde
- ENDC
- ;-------------------------------------------------------------
- ENDM ;SMTEXTP
-
- ;*** extra.library / SMTEXT() ***
- ;============================================================================
- ; Dieses Macro erstellt einen Teilstring des Parameterstrings der Funktion
- ; »ShowMsg()«. Wahlweise kann der Text automatisch zentriert, oder links- bzw.
- ; rechtsbündig ausgerichtet werden.
- ;----------------------------------------------------------------------------
- ; Definiert: extradefs.i (Copyright © 1998-2001 RhoSigma, Roland Heyder)
- ;
- ; Schablone: xPos/A/N, yPos/A/N, Text/A, END/K/S
- ;
- ; Parameter: xPos --> x-Position des Textes,
- ; oder einer der oben definierten SMTPOS-Werte
- ;
- ; yPos --> y-Position des Textes,
- ; Ausrichtung erfolgt an der Oberkante des Fonts
- ;
- ; Text --> der auszugebende Text selbst,
- ; in <..>, wenn Leerzeichen enthalten sind
- ;
- ; END --> Wird dieses Schlüsselwort angegeben, dann endet der
- ; Parameterstring an dieser Stelle, anderenfalls muß
- ; ein weiterer Teilstring (Macro-Aufruf) folgen.
- ;
- ; Bemerkung: Dieses Macro sollten Sie nur dann verwenden, wenn Sie für
- ; diesen Teilstring die gleichen Einstellungen wie für den vor-
- ; hergehenden Teilstring verwenden wollen. Wenn dieser Teil-
- ; string jedoch neue Einstellungen für Farben etc. erhalten
- ; soll, dann müssen Sie stattdessen das Macro »SMTEXTP()« ver-
- ; wenden.
- ;
- ; Ein Beispiel für die Benutzung dieses Macros finden Sie in der
- ; Datei »demo/ShowMsgDemo.ASM«.
- ;
- ; Siehe auch: »SMCOLOR()«, »SMTEXTP()«, »ShowMsg()«
- ;============================================================================
-
- SMTEXT MACRO ;(xPos/A/N, yPos/A/N, Text/A, END/K/S)
- ;----------------------------------------------------
- IFEQ \1+(-SMTPOS_C)
- dc.b SMz\@>>8,SMz\@&255 ;X-Pos berechnet (zentriert)
- ELSEIF
- IFEQ \1+(-SMTPOS_L)
- dc.b 0,12 ;X-Pos (linksbündig)
- ELSEIF
- IFEQ \1+(-SMTPOS_R)
- dc.b SMr\@>>8,SMr\@&255 ;X-Pos berechnet (rechtsbündig)
- ELSEIF
- dc.b \1>>8,\1&255 ;angegebene absolute X-Pos
- ENDC
- ENDC
- ENDC
-
- dc.b \2,0 ;Y-Pos, keine Prefs
- SMs\@ dc.b "\3" ;Text ohne 0-Byte
- SMe\@
- SMl\@ = (SMe\@-SMs\@) ;Länge der Zeichenkette
-
- SMz\@ = (640-(SMl\@*8))/2 ;X-Pos für Zentrierung
- SMr\@ = (640-(SMl\@*8))-12 ;X-Pos für rechtsbündig
-
- IFNC '\4','END'
- dc.b 0,1 ;Text-0-Byte u. Continue
- ELSEIF
- dc.b 0,0 ;Text-0-Byte u. ParamEnde
- ENDC
- ;----------------------------------------------------
- ENDM ;SMTEXT
-
- ENDC ;extradefs.i
-