summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drawbob.i17
-rw-r--r--drawbob.s25
2 files changed, 35 insertions, 7 deletions
diff --git a/drawbob.i b/drawbob.i
index dd550d7..2623004 100644
--- a/drawbob.i
+++ b/drawbob.i
@@ -1,5 +1,5 @@
*
-* DrawBob.i (zu BOBOL V3.16 23-Aug-91)
+* DrawBob.i (zu BOBOL V3.18 28-Jun-20)
*
*********** BOBOL Kommandos *************
@@ -234,6 +234,17 @@ SETID: MACRO
DC.W \1
ENDM
+
+SETNAME: MACRO
+ IFD DEBUG
+ DC.W BOBSETNAME
+ dc.b \1
+ dc.b 0
+ even
+ ENDC
+ ENDM
+
+
SETUSERDATA: MACRO
dc.b bob_UserData
dc.b BOBSETLONG
@@ -473,6 +484,7 @@ COMVAL: SET COMVAL-2
SETCOM JNE
+ SETCOM SETNAME
BOBLEFT: EQU 1
BOBRIGHT: EQU 2
@@ -644,9 +656,8 @@ CLIPF_GLOBALL: EQU CLIPF_ALL|CLIPF_GLOBAL
BYTE bob_sr ; Status-register
BYTE bob_Pad1
-
+ APTR bob_Name
LABEL bob_SIZEOF ; Länge der Bob Struktur
-
LABEL bob_AnimPtrs ; Array auf die einzelnen Bobs der Animation
bob_Test: EQU 18504
diff --git a/drawbob.s b/drawbob.s
index 59e7b74..9ee19f1 100644
--- a/drawbob.s
+++ b/drawbob.s
@@ -75,6 +75,7 @@
** 10-Apr-91 CHH SaveMask wird jetzt im BitmStr übergeben / JNE und **
** JEQ Sprünge relativ gemacht **
** 23-Aug-91 CHH FlipFlag für AskJoy added **
+** 25-Jun-20 CHH SETNAME added **
** **
** Benutzung: Einmal 'InitDrawBob' aufrufen | Parameter: A0=BitMap **
** Resultat : Nix **
@@ -94,8 +95,8 @@
****************************************************************************
-BOBVERSION: EQU 3
-BOBREVISION: EQU 16
+BOBVERSION: EQU 3
+BOBREVISION: EQU 18
OPT O+,OW-,O5-,OW6+
@@ -134,6 +135,8 @@ BOBREVISION: EQU 16
; Achtung: Die Befehlstabelle ist rückwärts organisiert, also neue
; Kommandos hier am Anfang anfügen und nicht beim Label, gell!
; Die Kommando-Konstanten (BOBLOOP, ...) müssen GERADE sein!
+
+ dc.w SetNameFunc-BobolTab
dc.w JneFunc-BobolTab
@@ -1897,7 +1900,7 @@ TestJoyFunc: movem.l d2/a3,-(SP)
-BitTestFunc: bclr #SRB_ZEROFLAG,bob_sr(A0) ; ZeroFlag löschen
+BitTestFunc: bclr #SRB_ZEROFLAG,bob_sr(A0) ; ZeroFlag löschen
move.w 2(A2,d1.w),d0 ; zu testendes bit
move.l 4(a2,d1.w),a3 ; zu testende Adr
btst d0,(A3) ; bit testen
@@ -1907,7 +1910,7 @@ BitTestFunc: bclr #SRB_ZEROFLAG,bob_sr(A0) ; ZeroFlag löschen
bra ReturnNull4
-
+
JeqFunc: btst #SRB_ZEROFLAG,bob_sr(A0)
beq.s 1$
;sub.l a2,a3
@@ -1929,6 +1932,20 @@ JneFunc: btst #SRB_ZEROFLAG,bob_sr(A0)
bra ReturnNull4
+SetNameFunc:
+ lea 2(a2,d1.w),a3 ; in A3 ist nun der Pointer auf das dc.b "xx" im Makro (a3 darf in der Function überschrieben werden)
+ move.l a3,bob_Name(a0)
+ ; Länge des Namens ermitteln
+ moveq.l #2,d0 ; Länge des Kommandos + minimale Länge ist 1 Byte (null-terminated)
+1$: addq.l #1,d0
+ tst.b (a3)+
+ bne 1$
+ add.w d0,d1 ; PC erhöhen. Wert ist evtl. ungerade
+ ; aufrunden wenn Länge des Strings ungerade ist
+ move.w d1,d0
+ and.w #1,d0
+ add.w d0,d1
+ bra ReturnNull1
;-----------------------------------------------------------------------