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