From 55ffc7b549a581b23ab04114ea01bea8029999eb Mon Sep 17 00:00:00 2001 From: "Christian B. Haller" Date: Tue, 30 Jun 2020 04:19:48 +0200 Subject: SETNAME added --- drawbob.i | 17 ++++++++++++++--- drawbob.s | 25 +++++++++++++++++++++---- 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 ;----------------------------------------------------------------------- -- cgit v1.2.3