;**********************
;** Ntzliche Makros **
;**********************
NEXT equ 1 ;; diese Adresse wird man wohl nie mit XDATA wollen
PREV equ -1
_loaddptr_ MACRO addr ;; Wegen Bug in ASEM51 diese Bocksprnge!
if addr EQ NEXT
inc dptr
else
mov dptr,#addr
endif
ENDM
_loadkonst_ MACRO konst
if konst
mov a,#konst
else
clr a
endif
ENDM
LOAD MACRO addr ;; Laden von XDATA (feste Adresse) via DataPointer
ifnb <addr>
_loaddptr_ addr
endif
movx a,@dptr
ENDM
STORE MACRO addr,konst ;; Speichern nach XDATA (feste Adr.) via DataPointer
ifnb <konst>
_loadkonst_ konst
endif
ifnb <addr>
_loaddptr_ addr
endif
movx @dptr,a
ENDM
JMPTBL MACRO tbl ;; Sprung mit Tabelle, A=Index
rl a
mov dptr,#tbl
jmp @a+dptr
ENDM
DWI MACRO w ;; "dw" in Intel-Byte-Anordnung
db LOW(w)
db HIGH(w)
ENDM
DBU MACRO c0,c1,c2,c3,c4,c5,c6,c7,c8,c9,ca,cb,cc,cd,ce,cf,cg,ch,ci,cj,ck,cl
;;Unicode-String definieren, ohne Hochkomma-Orgien
ifnb <c0>
db '&c0',0
DBU c1,c2,c3,c4,c5,c6,c7,c8,c9,ca,cb,cc,cd,ce,cf,cg,ch,ci,cj,ck,cl
endif
ENDM
_loadreg_ MACRO reg,addr
if addr EQ NEXT
inc reg
elseif addr EQ PREV
dec reg
else
mov reg,#LOW(addr)
endif
ENDM
LD MACRO addr ;; XDATA-Zugriff krzer ber MPAGE:R0
ifnb <addr>
_loadreg_ r0,addr
endif
movx a,@r0
ENDM
ST MACRO addr,konst ;; XDATA-Zugriff krzer ber MPAGE:R0
ifnb <konst>
_loadkonst_ konst
endif
ifnb <addr>
_loadreg_ r0,addr
endif
movx @r0,a
ENDM
ALIGN MACRO ali
ORG ($+ali-1)/ali*ali
ENDM
SYNCDELAY MACRO
inc dptr ;; 1 Byte fr 3 Takte
ENDM
CJE MACRO x,y,z ;; der "fehlende" Befehl
cjne x,y,$+5
ajmp z
ENDM
Detected encoding: UTF-8 | 0
|