dect
/
asl
Archived
13
0
Fork 0
This repository has been archived on 2022-02-17. You can view files and clone it, but cannot push or open issues or pull requests.
asl/include/stddef47.inc

280 lines
4.1 KiB
PHP

save
listing off ; kein Listing über diesen File
;****************************************************************************
;* *
;* AS 1.40 - Datei STDDEF47.INC *
;* *
;* Sinn : enthält den "erweiterten Befehlssatz für die *
;* TLCS-47(0(A*))-Reihe *
;* *
;* Author Alfred Arnold *
;* *
;* letzte Änderungen : 22.1.1994 *
;* *
;****************************************************************************
ifndef stddef47inc ; verhindert Mehrfacheinbindung
stddef47inc equ 1
if (MOMCPU<>293888)&&(MOMCPU<>4656128)&&(MOMCPU<>74492928)
fatal "Falscher Prozessortyp eingestellt: nur 47C00, 470C00, oder 470AC00 erlaubt"
endif
if MOMPASS=1
message "TLCS-47-Makrodefinitionen"
message "(C) 1994 Alfred Arnold"
message "Zielprozessor: \{MOMCPU}"
endif
;----------------------------------------------------------------------------
; hier geht's los...
; bedingte Sprünge
bz macro adr ; Sprung, falls ZF=1
testp zf
b adr
endm
bnz macro adr ; Sprung, falls ZF=0
testp zf
b s1
b adr
s1:
endm
bc macro adr ; Sprung, falls CF=1
testp cf
b adr
endm
bnc macro adr ; Sprung, falls CF=0
test cf
b adr
endm
be macro dest,src,adr ; Vergleich & Sprung, falls =
cmpr dest,src
testp zf
b adr
endm
bne macro dest,src,adr ; Vergleich & Sprung, falls <>
cmpr dest,src
if UpString("DEST")<>"A"
testp zf
b s1
endif
b adr
s1:
endm
bge macro dest,src,adr ; Vergleich & Sprung, falls >=
cmpr dest,src
testp zf
b adr
test cf
b adr
endm
bgt macro dest,src,adr ; Vergleich und Sprung, falls >
cmpr dest,src
test cf
b adr
endm
ble macro dest,src,adr ; Vergleich und Sprung, falls <=
cmpr dest,src
testp cf
b adr
endm
blt macro dest,src,adr ; Vergleich und Sprung, falls <
cmpr dest,src
testp zf
b s1
testp cf
b adr
s1:
endm
; Unterprogrammaufrufe
callss macro vector ; per Vektor
if vector=0
calls 86h
elseif
calls (vector<<3)+6
endif
endm
callz macro adr ; falls ZF=1
testp zf
b s1
b s2
s1: call adr
s2:
endm
callnz macro adr ; falls ZF=0
testp zf
b s1
call adr
s1:
endm
callc macro adr ; falls CF=1
test cf
b s1
call adr
s1:
endm
callnc macro adr ; falls CF=0
testp cf
b s1
call adr
s1:
endm
; Unterprogrammrücksprünge
retz macro ; falls ZF=1
testp zf
b s1
b s2
s1: ret
s2:
endm
retnz macro ; falls ZF=0
testp zf
b s1
ret
s1:
endm
retc macro ; falls CF=1
test cf
b s1
ret
s1:
endm
retnc macro ; falls CF=0
testp cf
b s1
ret
s1:
endm
; Interruptrücksprünge
retiz macro ; falls ZF=1
testp zf
b s1
b s2
s1: reti
s2:
endm
retinz macro ; falls ZF=0
testp zf
b s1
reti
s1:
endm
retic macro ; falls CF=1
test cf
b s1
reti
s1:
endm
retinc macro ; falls CF=0
testp cf
b s1
reti
s1:
endm
; erweiterte Schiebebefehle
shl macro op,cnt ; log. Linksshift
if UpString("OP")<>"A"
xch a,op
endif
rept cnt
test cf
rolc a
endm
if UpString("OP")<>"A"
xch a,op
endif
endm
shr macro op,cnt ; log. Rechtsshift
if UpString("OP")<>"A"
xch a,op
endif
rept cnt
test cf
rorc a
endm
if UpString("OP")<>"A"
xch a,op
endif
endm
; Interruptsperren
ei macro
eiclr il,3fh
endm
di macro
diclr il,3fh
endm
;---------------------------------------------------------------------------
; das war's...
endif
restore