|
@@ -1,9 +1,84 @@
|
|
|
#include "elea_tipi.h"
|
|
|
#include "governo.h"
|
|
|
+#include "memoria.h"
|
|
|
+#include "ricerca.h"
|
|
|
+#include "algebra.h"
|
|
|
+#include "accumulatore.h"
|
|
|
+#include "telescrivente.h"
|
|
|
|
|
|
struct registri_sistema R;
|
|
|
|
|
|
-static operazione *OP[64] = { };
|
|
|
+int op_salto(istruzione *i)
|
|
|
+{
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+static operazione *OP[64] = {
|
|
|
+ /* 0 = OP_SALTO */ op_salto,
|
|
|
+ /* 1 = OP_MEM */ op_mem,
|
|
|
+ /* 2 = NO OP! */ (operazione *)0,
|
|
|
+ /* 3 = OP_RIa */ op_ria,
|
|
|
+ /* 4 = OP_-CT */ op_meno_ct,
|
|
|
+ /* 5 = OP_+CT */ op_piu_ct,
|
|
|
+ /* 6 = OP_CCT */ op_cct,
|
|
|
+ /* 7 = OP_+MM */ op_piu_mm,
|
|
|
+ /* 8 = NO OP! */ (operazione *)0,
|
|
|
+ /* 9 = NO OP! */ (operazione *)0,
|
|
|
+ /* 10 = OP_CMM */ op_cmm,
|
|
|
+ /* 11 = OP_RIi */ op_rii,
|
|
|
+ /* 12 = OP_CT */ op_ct,
|
|
|
+ /* 13 = NO OP! */ (operazione *)0,
|
|
|
+ /* 14 = OP_PUM */ op_pum,
|
|
|
+ /* 15 = OP_-MM */ op_meno_mm,
|
|
|
+ /* 16 = OP_MS */ op_ms,
|
|
|
+ /* 17 = OP_DA */ op_da,
|
|
|
+ /* 18 = OP_FAM */ op_fam,
|
|
|
+ /* 19 = OP_AoM */ op_aom,
|
|
|
+ /* 20 = NO OP! */ (operazione *)0,
|
|
|
+ /* 21 = OP_+X */ op_piu_x,
|
|
|
+ /* 22 = NO OP! */ (operazione *)0,
|
|
|
+ /* 23 = OP_+MA */ op_piu_ma,
|
|
|
+ /* 24 = OP_CMA */ op_cma,
|
|
|
+ /* 25 = OP_MA */ op_ma,
|
|
|
+ /* 26 = OP_CM */ op_cm,
|
|
|
+ /* 27 = OP_AM */ op_am,
|
|
|
+ /* 28 = NO OP! */ (operazione *)0,
|
|
|
+ /* 29 = OP_-X */ op_meno_x,
|
|
|
+ /* 30 = OP_+AM */ op_piu_am,
|
|
|
+ /* 31 = OP_-MA */ op_meno_ma,
|
|
|
+ /* 32 = NO OP! */ (operazione *)0,
|
|
|
+ /* 33 = NO OP! */ (operazione *)0,
|
|
|
+ /* 34 = OP_FTM */ op_ftm,
|
|
|
+ /* 35 = OP_ToM */ op_tom,
|
|
|
+ /* 36 = OP_+LD */ op_piu_ld,
|
|
|
+ /* 37 = OP_XLD */ op_xld,
|
|
|
+ /* 38 = NO OP! */ (operazione *)0,
|
|
|
+ /* 39 = OP_+MT */ op_piu_mt,
|
|
|
+ /* 40 = OP_CMT */ op_cmt,
|
|
|
+ /* 41 = OP_MT */ op_mt,
|
|
|
+ /* 42 = NO OP! */ (operazione *)0,
|
|
|
+ /* 43 = OP_TM */ op_tm,
|
|
|
+ /* 44 = NO OP! */ (operazione *)0,
|
|
|
+ /* 45 = OP_XLN */ op_xln,
|
|
|
+ /* 46 = OP_+TM */ op_piu_tm,
|
|
|
+ /* 47 = OP_-MT */ op_meno_mt,
|
|
|
+ /* 48 = NO OP! */ (operazione *)0,
|
|
|
+ /* 49 = NO OP! */ (operazione *)0,
|
|
|
+ /* 50 = NO OP! */ (operazione *)0,
|
|
|
+ /* 51 = NO OP! */ (operazione *)0,
|
|
|
+ /* 52 = NO OP! */ (operazione *)0,
|
|
|
+ /* 53 = NO OP! */ (operazione *)0,
|
|
|
+ /* 54 = NO OP! */ (operazione *)0,
|
|
|
+ /* 55 = NO OP! */ (operazione *)0,
|
|
|
+ /* 56 = NO OP! */ (operazione *)0,
|
|
|
+ /* 57 = NO OP! */ (operazione *)0,
|
|
|
+ /* 59 = NO OP! */ (operazione *)0,
|
|
|
+ /* 60 = NO OP! */ (operazione *)0,
|
|
|
+ /* 61 = NO OP! */ (operazione *)0,
|
|
|
+ /* 62 = NO OP! */ (operazione *)0,
|
|
|
+ /* 63 = NO OP! */ (operazione *)0,
|
|
|
+ /* 64 = NO OP! */ (operazione *)0
|
|
|
+};
|
|
|
|
|
|
static booleano CanaleInternoOcc = NO;
|
|
|
static booleano CanaleEsternoOcc = NO;
|
|
@@ -23,6 +98,7 @@ booleano canale_esterno_occupato(void)
|
|
|
void esegui_primo_programma(void)
|
|
|
{
|
|
|
istruzione *i = R.I;
|
|
|
+ R.I += sizeof(istruzione);
|
|
|
carattere F = *((carattere *)i);
|
|
|
if (OP[F] != (operazione *)0) {
|
|
|
(*OP[F])(i);
|