Browse Source

Import iniziale

Daniele Lacamera 4 years ago
commit
ddf2b6ac40
2 changed files with 54 additions and 0 deletions
  1. 41 0
      accumulatore.c
  2. 13 0
      elea_tipi.h

+ 41 - 0
accumulatore.c

@@ -0,0 +1,41 @@
+#include "elea_tipi.h"
+
+statico carattere Accumulatore[100];
+statico int REG_DA = 0;
+statico segno REG_SEGNO_A = 0;
+
+/* Da accumulatore a memoria */
+int AoM(carattere *mem, int lun)
+{
+    int i;
+    int pos;
+    for (i = 0; i < lun; i++) {
+        pos = (REG_DA + lun - (i + 1));
+        mem[i] = (Accumulatore[pos] & 0x7F);
+        Accumulatore[pos] = 0x80;
+    } 
+    return 0;
+}
+
+/* Da memoria a accumulatore */
+int MA(const carattere *mem, int lun)
+{
+    int i;
+    int pos;
+    
+    for (i = 0; i < lun; i++) {
+        pos = (lun - (i + 1));
+        Accumulatore[REG_DA + i] = (mem[pos] & 0x7F);
+        Accumulatore[REG_DA + i] &= ~0x80;
+    }
+    /* accende gA nell'ultimo carattere */
+    Accumulatore[REG_DA + lun - 1] |= 0x80;
+}
+
+int DA(const int disp)
+{
+    if (disp < 0 || disp > 99)
+        return -1;
+    REG_DA = disp; 
+    return REG_DA;
+}

+ 13 - 0
elea_tipi.h

@@ -0,0 +1,13 @@
+#define statico static
+typedef uint8_t carattere;
+typedef int8_t segno;
+
+
+
+/* bit gA: valido solo se il carattere e` letto da Accumulatore.
+ * Nelle operazioni aritmetiche le cifre che lo seguono sono zeri
+ * Nei trasferisferimento a mem principale il bit e` ignorato i
+ */
+#define gA(x) ((x >> 7) & 0x01)
+
+