Blame | Last modification | View Log | Download | RSS feed
ifndef stddef47inc ; avoid multiple inclusionstddef47inc equ 1savelisting off ; no listing over this file;****************************************************************************;* *;* AS 1.42 - File STDDEF47.INC *;* *;* Contains the "extended instruction set" for TLCS-47(0(A*)) Processors * *;* *;****************************************************************************if (MOMCPU<>293888)&&(MOMCPU<>4656128)&&(MOMCPU<>74492928)fatal "wrong target selected: only 47C00, 470C00, oder 470AC00 allowed"endifif MOMPASS=1message "TLCS-47 Macro Definitions"message "(C) 1994 Alfred Arnold"message "Target Processor: \{MOMCPU}"endif;----------------------------------------------------------------------------; Conditional Jumpsbz macro adr ; Compare and Branch if ZF=1testp zfb adrendmbnz macro adr ; Compare and Branch if ZF=0testp zfb s1b adrs1:endmbc macro adr ; Compare and Branch if CF=1testp cfb adrendmbnc macro adr ; Compare and Branch if CF=0test cfb adrendmbe macro dest,src,adr ; Compare and Branch if equalcmpr dest,srctestp zfb adrendmbne macro dest,src,adr ; Compare and Branch if unequalcmpr dest,srcif UpString("DEST")<>"A"testp zfb s1endifb adrs1:endmbge macro dest,src,adr ; Compare and Branch if greater than or equalcmpr dest,srctestp zfb adrtest cfb adrendmbgt macro dest,src,adr ; Compare and Branch if greater thancmpr dest,srctest cfb adrendmble macro dest,src,adr ; Compare and Branch if less than or equalcmpr dest,srctestp cfb adrendmblt macro dest,src,adr ; Compare and Branch if less thancmpr dest,srctestp zfb s1testp cfb adrs1:endm;----------------------------------------------------------------------------; Sub Program Callscallss macro vector ; Via Vectorif vector=0calls 86helseifcalls (vector<<3)+6endifendmcallz macro adr ; If ZF=1testp zfb s1b s2s1: call adrs2:endmcallnz macro adr ; If ZF=0testp zfb s1call adrs1:endmcallc macro adr ; If CF=1test cfb s1call adrs1:endmcallnc macro adr ; If CF=0testp cfb s1call adrs1:endm;----------------------------------------------------------------------------; Sub Program Returnsretz macro ; If ZF=1testp zfb s1b s2s1: rets2:endmretnz macro ; If ZF=0testp zfb s1rets1:endmretc macro ; If CF=1test cfb s1rets1:endmretnc macro ; If CF=0testp cfb s1rets1:endm;----------------------------------------------------------------------------; Interrupt Returnsretiz macro ; If ZF=1testp zfb s1b s2s1: retis2:endmretinz macro ; If ZF=0testp zfb s1retis1:endmretic macro ; If CF=1test cfb s1retis1:endmretinc macro ; If CF=0testp cfb s1retis1:endm;----------------------------------------------------------------------------; Extended Shift Instructionsshl macro op,cnt ; Logical Shift Leftif UpString("OP")<>"A"xch a,opendifrept cnttest cfrolc aendmif UpString("OP")<>"A"xch a,opendifendmshr macro op,cnt ; Logical Shift Rightif UpString("OP")<>"A"xch a,opendifrept cnttest cfrorc aendmif UpString("OP")<>"A"xch a,opendifendm;----------------------------------------------------------------------------; Interrupt Enable/Disableei macroeiclr il,3fhendmdi macrodiclr il,3fhendm;---------------------------------------------------------------------------restore ; re-allow listingendif ; stddef47inc