; yaec.i v0.2   (010110)

   MACHINE 68020

   FPU 1

   xref GLOBAL_execbase
   xref GLOBAL_dosbase
   xref GLOBAL_intuitionbase
   xref GLOBAL_graphicsbase
   xref GLOBAL_arg
   xref GLOBAL_stdin
   xref GLOBAL_stdout
   xref GLOBAL_mempool
   xref GLOBAL_exception
   xref GLOBAL_exceptioninfo
   xref GLOBAL_initialstack
   xref GLOBAL_stacksize
   xref GLOBAL_mathieeesingbasbase
   xref GLOBAL_mathieeesingtransbase
   xref GLOBAL_stdrast
   xref GLOBAL_libbase

   xref a4storage

 xref _Abs
 xref _Bounds
 xref _Char
 xref _CloneList
 xref _CloneStr
 xref _CtrlC
 xref _Dispose
 xref _DisposeLink
 xref _Div
 xref _Eor
 xref _EstrLen
 xref _Even
 xref _FastDispose
 xref _FastDisposeList
 xref _FastDisposeString
 xref _FastNew
 xref _FileLength
 xref _Forward
 xref _FreeStack
 xref _Inp
 xref _InStr
 xref _Int
 xref _Link
 xref _List
 xref _ListAdd
 xref _ListCmp
 xref _ListCopy
 xref _ListItem
 xref _ListLen
 xref _ListMax
 xref _Long
 xref _LowerStr
 xref _Max
 xref _MidStr
 xref _Min
 xref _Mod
 xref _Mul
 xref _New
 xref _Next
 xref _Not
 xref _Odd
 xref _Out
 xref _PrintF
 xref _PutChar
 xref _OutFmt
 xref _PutInt
 xref _PutLong
 xref _ReadStr
 xref _RightStr
 xref _SetList
 xref _SetStdIn
 xref _SetStdOut
 xref _SetStr
 xref _Shl
 xref _Shr
 xref _Sign
 xref _StrAdd
 xref _StrCmp
 xref _StrCopy
 xref _StrFmt
 ;xref _StrFmtS
 xref _String
 xref _StringF
 xref _StrLen
 xref _StrMax
 xref _TrimStr
 xref _UpperStr
 xref _Val
 xref _WriteF
 xref _NewCell
 xref _KickVersion
 xref _InitCells

 xref _ForAll
 xref _SelectList
 xref _MapList
 xref _Exists

 xref __ClearMemL

 xref _DisposeString

 xref _Fabs
 xref _Facos
 xref _Fasin
 xref _Fatan
 xref _Fceil
 xref _Fcos
 xref _Fcosh
 xref _Fexp
 xref _Ffieee
 xref _Ffloor
 xref _Flog
 xref _Flog10
 xref _Fpow
 xref _Fsin
 xref _Fsincos
 xref _Fsinh
 xref _Fsqrt
 xref _Ftan
 xref _Ftanh
 xref _Ftieee
 ;xref _RealVal

 xref _OpenS
 xref _CloseS
 xref _OpenW
 xref _CloseW
 xref _WaitIMessage
 xref _MsgCode
 xref _MsgQualifier
 xref _MsgIAddr

 xref _Plot
 xref _Line
 xref _Box
 xref _Colour
 xref _SetColour
 xref _TextF
 xref _Hbox

 xref __CallEndMethod

 xref _ObjectName
 xref _ObjectSize

 xref _SetStdRast

 xref __EndObject

 xref __MemCopy

NIL = 0
TRUE = -1
FALSE=0
ALL=-1
NEWFILE = $3EE
OLDFILE = $3ED
READWRITE=$3EC
;PI EQU.S 3.14592654
;E EQU.S 2.718281828
;LN2 EQU.S 0.6931471806
;LN10 EQU.S 2.302585093

CALLLIB1 MACRO ; libname, offs
   move.l GLOBAL_\1base(a4), a6
   jsr \2(a6)
   ENDM

CALLIB2 MACRO ; libname, offs, arg,...
   move.l GLOBAL_\1base(a4), a6
   REPT NARG
      move.l (a7)+, ..
   ENDR

   ENDM






E000 macro
   move.l GLOBAL_\1base(a4), a6
   endm

E010 macro
   movem.l (a7)+, \1
   endm

E020 macro
   jsr \1(a6)
   endm

E030 macro
   add.l #40, a7
   endm

E040 macro
   sub.l #\1, a7
   endm

E050 macro
   movem.l \1, -(a7)
   endm


XRX2XRX macro ; xrx, xrx
   move.l \1, \2
   endm

XRX2GV macro ; xrx, gv
   move.l \1, GLOBAL_\2(a4)
   endm

XRX2PV macro ; xrx, pv, proc
   move.l \1, PROC_\3_PARAM_\2(a5)
   endm

XRX2LV macro ; xrx, lv, proc
   move.l \1, PROC_\3_LOCAL_\2(a5)
   endm

XRX2ST macro ; xrx
   move.l, \1, -(a7)
   endm

XRX2ST2 macro ; xrx
   move.l, \1, (a2)+
   endm

XRX2MEMB macro ; xrx, prx, o
   move.b \1, \3(\2)
   endm

XRX2MEMW macro ; xrx, prx, o
   move.w \1, \3(\2)
   endm

XRX2MEML macro ; xrx, prx, o
   move.l \1, \3(\2)
   endm

XRX2FPX macro ; xrx, fpx
   fmove.l \1, \2
   endm

XRXF2FPX macro ; xrx, fpx
   fmove.s \1, \2
   endm

FPX2FPX macro ; fpx, fpx
   fmove.x \1, \2
   endm

FPX2XRX macro ; fpx, xrx
   fmove.l \1, \2
   endm

FPX2XRXF macro ; fpx, xrx
   fmove.s \1, \2
   endm

FPX2ST macro ; fpx
   fmove.d \1, -(a7)
   endm

FPX2ST2 macro ; fpx
   fmove.d \1, (a2)+
   endm

FPX2MEM macro ; fpx, prx, o
   fmove.d \1, \3(\2)
   endm

ST2XRX macro ; xrx
   move.l (a7)+, \1
   endm

ST2RL macro ; rl
   movem.l (a7)+, \1
   endm

ST2FPX macro ; fpx
   fmove.d (a7)+, \1
   endm

ST22XRX macro ; xrx
   move.l -(a2), \1
   endm

ST22FPX macro ; fpx
   fmove.d -(a2), \1
   endm

ST22ST macro
   move.l -(a2), -(a7)
   endm

GV2GV macro ; gv, gv
   move.l GLOBAL_\1(A4), GLOBAL_\2(a4)
   endm

GV2LV macro ; gv, lv, proc
   move.l GLOBAL_\1(a4), PROC_\3_LOCAL_\2(a5)
   endm

GV2PV macro ; gv, pv, proc
   move.l GLOBAL_\1(a4), PROC_\3_PARAM_\2(a5)
   endm

GV2XRX macro ; gv, xrx
   move.l GLOBAL_\1(a4), \2
   endm

GV2ST macro ; gv
   move.l GLOBAL_\1(a4), -(a7)
   endm






