]> Shamusworld >> Repos - rmac/blobdiff - mach.h
Fix a small buglet in the last patch. :-)
[rmac] / mach.h
diff --git a/mach.h b/mach.h
index 8b10038823a5f399e3163f5c756b01f9a700ef9f..4f6851d1842b837c3a4b06ebcb076feeb2fe3ab2 100644 (file)
--- a/mach.h
+++ b/mach.h
@@ -1,7 +1,7 @@
 //
-// RMAC - Reboot's Macro Assembler for the Atari Jaguar Console System
+// RMAC - Reboot's Macro Assembler for all Atari computers
 // MACH.H - Code Generation
-// Copyright (C) 199x Landon Dyer, 2017 Reboot and Friends
+// Copyright (C) 199x Landon Dyer, 2011-2020 Reboot and Friends
 // RMAC derived from MADMAC v1.07 Written by Landon Dyer, 1986
 // Source utilised with the kind permission of Landon Dyer
 //
 #define __MACH_H__
 
 #include "rmac.h"
-#include "amode.h"
+
+// Mnemonic table structure
+#define MNTAB  struct _mntab
+MNTAB {
+       WORD mnattr;                                    // Attributes (CGSPECIAL, SIZN, ...)
+       LONG mn0, mn1;                                  // Addressing modes
+       WORD mninst;                                    // Instruction mask
+       WORD mncont;                                    // Continuation (or -1)
+       int (* mnfunc)(WORD, WORD);             // Mnemonic builder
+};
 
 // Exported variables
 extern char seg_error[];
@@ -18,265 +27,9 @@ extern char undef_error[];
 extern char rel_error[];
 extern char range_error[];
 extern char abs_error[];
+extern char unsupport[];
 extern MNTAB machtab[];
-extern int activecpu;
-extern int activefpu;
 extern int movep;
 
-// Fucntion prototypes 
-int m_unimp(WORD, WORD), m_badmode(WORD, WORD), m_bad6mode(WORD, WORD), m_bad6inst(WORD, WORD);
-int m_self(WORD, WORD);
-int m_abcd(WORD, WORD);
-int m_reg(WORD, WORD);
-int m_imm(WORD, WORD);
-int m_imm8(WORD, WORD);
-int m_shi(WORD, WORD);
-int m_shr(WORD, WORD);
-int m_bitop(WORD, WORD);
-int m_exg(WORD, WORD);
-int m_ea(WORD, WORD);
-int m_lea(WORD, WORD);
-int m_br(WORD, WORD);
-int m_dbra(WORD, WORD);
-int m_link(WORD, WORD);
-int m_adda(WORD, WORD);
-int m_addq(WORD, WORD);
-//int m_move(WORD, int);
-int m_move(WORD, WORD);
-int m_moveq(WORD, WORD);
-int m_usp(WORD, WORD);
-int m_movep(WORD, WORD);
-int m_trap(WORD, WORD);
-int m_movem(WORD, WORD);
-int m_clra(WORD, WORD);
-
-int m_move30(WORD, WORD);                      //68020/30/40/60
-int m_br30(WORD inst, WORD siz);
-int m_ea030(WORD inst, WORD siz);
-int m_bfop(WORD inst, WORD siz);
-int m_callm(WORD inst, WORD siz);
-int m_cas(WORD inst, WORD siz);
-int m_cas2(WORD inst, WORD siz);
-int m_chk2(WORD inst, WORD siz);
-int m_cmp2(WORD inst, WORD siz);
-int m_bkpt(WORD inst, WORD siz);
-int m_cpbr(WORD inst, WORD siz);
-int m_cpdbr(WORD inst, WORD siz);
-int m_divs(WORD inst, WORD siz);
-int m_muls(WORD inst, WORD siz);
-int m_divu(WORD inst, WORD siz);
-int m_mulu(WORD inst, WORD siz);
-int m_divsl(WORD inst, WORD siz);
-int m_divul(WORD inst, WORD siz);
-int m_move16a(WORD inst, WORD siz);
-int m_move16b(WORD inst, WORD siz);
-int m_pack(WORD inst, WORD siz);
-int m_rtm(WORD inst, WORD siz);
-int m_rtd(WORD inst, WORD siz);
-int m_trapcc(WORD inst, WORD siz);
-int m_cinv(WORD inst, WORD siz);
-int m_cprest(WORD inst, WORD siz);
-int m_movec(WORD inst, WORD siz);
-int m_moves(WORD inst, WORD siz);
-
-// PMMU
-int m_pbcc(WORD inst, WORD siz);
-int m_pflusha(WORD inst, WORD siz);
-int m_pflush(WORD inst, WORD siz);
-int m_pflushr(WORD inst, WORD siz);
-int m_pload(WORD inst, WORD siz);
-int m_pmove(WORD inst, WORD siz);
-int m_pmovefd(WORD inst, WORD siz);
-int m_ptest(WORD inst, WORD siz);
-int m_ptrapbs(WORD inst, WORD siz);
-int m_ptrapbc(WORD inst, WORD siz);
-int m_ptrapls(WORD inst, WORD siz);
-int m_ptraplc(WORD inst, WORD siz);
-int m_ptrapss(WORD inst, WORD siz);
-int m_ptrapsc(WORD inst, WORD siz);
-int m_ptrapas(WORD inst, WORD siz);
-int m_ptrapac(WORD inst, WORD siz);
-int m_ptrapws(WORD inst, WORD siz);
-int m_ptrapwc(WORD inst, WORD siz);
-int m_ptrapis(WORD inst, WORD siz);
-int m_ptrapic(WORD inst, WORD siz);
-int m_ptrapgc(WORD inst, WORD siz);
-int m_ptrapgs(WORD inst, WORD siz);
-int m_ptrapcs(WORD inst, WORD siz);
-int m_ptrapcc(WORD inst, WORD siz);
-int m_ptrapbsn(WORD inst, WORD siz);
-int m_ptrapbcn(WORD inst, WORD siz);
-int m_ptraplsn(WORD inst, WORD siz);
-int m_ptraplcn(WORD inst, WORD siz);
-int m_ptrapssn(WORD inst, WORD siz);
-int m_ptrapscn(WORD inst, WORD siz);
-int m_ptrapasn(WORD inst, WORD siz);
-int m_ptrapacn(WORD inst, WORD siz);
-int m_ptrapwsn(WORD inst, WORD siz);
-int m_ptrapwcn(WORD inst, WORD siz);
-int m_ptrapisn(WORD inst, WORD siz);
-int m_ptrapicn(WORD inst, WORD siz);
-int m_ptrapgsn(WORD inst, WORD siz);
-int m_ptrapgcn(WORD inst, WORD siz);
-int m_ptrapcsn(WORD inst, WORD siz);
-int m_ptrapccn(WORD inst, WORD siz);
-
-//FPU
-int m_fabs(WORD inst, WORD siz);
-int m_facos(WORD inst, WORD siz);
-int m_fadd(WORD inst, WORD siz);
-int m_fasin(WORD inst, WORD siz);
-int m_fatan(WORD inst, WORD siz);
-int m_fatanh(WORD inst, WORD siz);
-int m_fcmp(WORD inst, WORD siz);
-int m_fcos(WORD inst, WORD siz);
-int m_fcosh(WORD inst, WORD siz);
-int m_fdabs(WORD inst, WORD siz);
-int m_fdadd(WORD inst, WORD siz);
-int m_fdbcc(WORD inst, WORD siz);
-int m_fddiv(WORD inst, WORD siz);
-int m_fdfsqrt(WORD inst, WORD siz);
-int m_fdiv(WORD inst, WORD siz);
-int m_fdmove(WORD inst, WORD siz);
-int m_fdmul(WORD inst, WORD siz);
-int m_fdneg(WORD inst, WORD siz);
-int m_fdsub(WORD inst, WORD siz);
-int m_fetox(WORD inst, WORD siz);
-int m_fetoxm1(WORD inst, WORD siz);
-int m_fgetexp(WORD inst, WORD siz);
-int m_fgetman(WORD inst, WORD siz);
-int m_fint(WORD inst, WORD siz);
-int m_fintrz(WORD inst, WORD siz);
-int m_flog10(WORD inst, WORD siz);
-int m_flog2(WORD inst, WORD siz);
-int m_flogn(WORD inst, WORD siz);
-int m_flognp1(WORD inst, WORD siz);
-int m_fmod(WORD inst, WORD siz);
-int m_fmove(WORD inst, WORD siz);
-int m_fmovescr(WORD inst, WORD siz);
-int m_fmovecr(WORD inst, WORD siz);
-int m_fmovem(WORD inst, WORD siz);
-int m_fmul(WORD inst, WORD siz);
-int m_fneg(WORD inst, WORD siz);
-int m_fnop(WORD inst, WORD siz);
-int m_frem(WORD inst, WORD siz);
-int m_fsabs(WORD inst, WORD siz);
-int m_fsadd(WORD inst, WORD siz);
-int m_fseq(WORD inst, WORD siz);
-int m_fsne(WORD inst, WORD siz);
-int m_fsgt(WORD inst, WORD siz);
-int m_fsngt(WORD inst, WORD siz);
-int m_fsge(WORD inst, WORD siz);
-int m_fsnge(WORD inst, WORD siz);
-int m_fslt(WORD inst, WORD siz);
-int m_fsnlt(WORD inst, WORD siz);
-int m_fsle(WORD inst, WORD siz);
-int m_fsnle(WORD inst, WORD siz);
-int m_fsgl(WORD inst, WORD siz);
-int m_fsngl(WORD inst, WORD siz);
-int m_fsgle(WORD inst, WORD siz);
-int m_fsngle(WORD inst, WORD siz);
-int m_fsogt(WORD inst, WORD siz);
-int m_fsule(WORD inst, WORD siz);
-int m_fsoge(WORD inst, WORD siz);
-int m_fsult(WORD inst, WORD siz);
-int m_fsolt(WORD inst, WORD siz);
-int m_fsuge(WORD inst, WORD siz);
-int m_fsole(WORD inst, WORD siz);
-int m_fsugt(WORD inst, WORD siz);
-int m_fsogl(WORD inst, WORD siz);
-int m_fsueq(WORD inst, WORD siz);
-int m_fsor(WORD inst, WORD siz);
-int m_fsun(WORD inst, WORD siz);
-int m_fsf(WORD inst, WORD siz);
-int m_fst(WORD inst, WORD siz);
-int m_fssf(WORD inst, WORD siz);
-int m_fsst(WORD inst, WORD siz);
-int m_fsseq(WORD inst, WORD siz);
-int m_fssne(WORD inst, WORD siz);
-int m_fscale(WORD inst, WORD siz);
-int m_fsdiv(WORD inst, WORD siz);
-int m_fsfsqrt(WORD inst, WORD siz);
-int m_fsfsub(WORD inst, WORD siz);
-int m_fsgldiv(WORD inst, WORD siz);
-int m_fsglmul(WORD inst, WORD siz);
-int m_fsin(WORD inst, WORD siz);
-int m_fsincos(WORD inst, WORD siz);
-int m_fsinh(WORD inst, WORD siz);
-int m_fsmove(WORD inst, WORD siz);
-int m_fsmul(WORD inst, WORD siz);
-int m_fsneg(WORD inst, WORD siz);
-int m_fsqrt(WORD inst, WORD siz);
-int m_fsub(WORD inst, WORD siz);
-int m_ftan(WORD inst, WORD siz);
-int m_ftanh(WORD inst, WORD siz);
-int m_ftentox(WORD inst, WORD siz);
-int m_ftst(WORD inst, WORD siz);
-int m_ftwotox(WORD inst, WORD siz);
-int m_ftrapeq(WORD inst, WORD siz);
-int m_ftrapne(WORD inst, WORD siz);
-int m_ftrapgt(WORD inst, WORD siz);
-int m_ftrapngt(WORD inst, WORD siz);
-int m_ftrapge(WORD inst, WORD siz);
-int m_ftrapnge(WORD inst, WORD siz);
-int m_ftraplt(WORD inst, WORD siz);
-int m_ftrapnlt(WORD inst, WORD siz);
-int m_ftraple(WORD inst, WORD siz);
-int m_ftrapnle(WORD inst, WORD siz);
-int m_ftrapgl(WORD inst, WORD siz);
-int m_ftrapngl(WORD inst, WORD siz);
-int m_ftrapgle(WORD inst, WORD siz);
-int m_ftrapngle(WORD inst, WORD siz);
-int m_ftrapogt(WORD inst, WORD siz);
-int m_ftrapule(WORD inst, WORD siz);
-int m_ftrapoge(WORD inst, WORD siz);
-int m_ftrapult(WORD inst, WORD siz);
-int m_ftrapolt(WORD inst, WORD siz);
-int m_ftrapuge(WORD inst, WORD siz);
-int m_ftrapole(WORD inst, WORD siz);
-int m_ftrapugt(WORD inst, WORD siz);
-int m_ftrapogl(WORD inst, WORD siz);
-int m_ftrapueq(WORD inst, WORD siz);
-int m_ftrapor(WORD inst, WORD siz);
-int m_ftrapun(WORD inst, WORD siz);
-int m_ftrapf(WORD inst, WORD siz);
-int m_ftrapt(WORD inst, WORD siz);
-int m_ftrapsf(WORD inst, WORD siz);
-int m_ftrapst(WORD inst, WORD siz);
-int m_ftrapseq(WORD inst, WORD siz);
-int m_ftrapsne(WORD inst, WORD siz);
-int m_ftrapeqn(WORD inst, WORD siz);
-int m_ftrapnen(WORD inst, WORD siz);
-int m_ftrapgtn(WORD inst, WORD siz);
-int m_ftrapngtn(WORD inst, WORD siz);
-int m_ftrapgen(WORD inst, WORD siz);
-int m_ftrapngen(WORD inst, WORD siz);
-int m_ftrapltn(WORD inst, WORD siz);
-int m_ftrapnltn(WORD inst, WORD siz);
-int m_ftraplen(WORD inst, WORD siz);
-int m_ftrapnlen(WORD inst, WORD siz);
-int m_ftrapgln(WORD inst, WORD siz);
-int m_ftrapngln(WORD inst, WORD siz);
-int m_ftrapglen(WORD inst, WORD siz);
-int m_ftrapnglen(WORD inst, WORD siz);
-int m_ftrapogtn(WORD inst, WORD siz);
-int m_ftrapulen(WORD inst, WORD siz);
-int m_ftrapogen(WORD inst, WORD siz);
-int m_ftrapultn(WORD inst, WORD siz);
-int m_ftrapoltn(WORD inst, WORD siz);
-int m_ftrapugen(WORD inst, WORD siz);
-int m_ftrapolen(WORD inst, WORD siz);
-int m_ftrapugtn(WORD inst, WORD siz);
-int m_ftrapogln(WORD inst, WORD siz);
-int m_ftrapueqn(WORD inst, WORD siz);
-int m_ftraporn(WORD inst, WORD siz);
-int m_ftrapunn(WORD inst, WORD siz);
-int m_ftrapfn(WORD inst, WORD siz);
-int m_ftraptn(WORD inst, WORD siz);
-int m_ftrapsfn(WORD inst, WORD siz);
-int m_ftrapstn(WORD inst, WORD siz);
-int m_ftrapseqn(WORD inst, WORD siz);
-int m_ftrapsnen(WORD inst, WORD siz);
-
 #endif // __MACH_H__