From cb850755d0ca7c625fe418ef6b9770876c3308f2 Mon Sep 17 00:00:00 2001 From: Pixel <> Date: Mon, 16 Apr 2001 21:44:42 +0000 Subject: Pouet --- lib/memoire.c | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) (limited to 'lib/memoire.c') diff --git a/lib/memoire.c b/lib/memoire.c index 48daf0e..eb6dadc 100644 --- a/lib/memoire.c +++ b/lib/memoire.c @@ -1,3 +1,5 @@ +#include +#include #include "memoire.h" #include "interne.h" #include "simulator.h" @@ -20,6 +22,15 @@ Uint32 * memoire_principale; /** **/ /*****************************************/ + +void InitMemoire(void) { + memoire_principale = (Uint32 *) Emalloc(TAILLE_MEMOIRE * sizeof(Uint32)); +} + +void FreeMemoire(void) { + free(memoire_principale); +} + /* Lit le mot qui se trouve à l'offset 'offset' en mémoire */ Uint32 LD(Uint32 offset) { @@ -27,24 +38,27 @@ Uint32 LD(Uint32 offset) switch (offset) { case 0xffffff00: - return (!feof(stdin)); + initterm(); + i = !feof(input); + clearterm(); + return (i); case 0xffffff01: - return (fgetc(stdin)); - case 0xffffff05: + initterm(); + i = fgetc(input); clearterm(); + break; + case 0xffffff05: fscanf(input, "%i", &i); - initterm(); - return i; + break; default: if (offset >= TAILLE_MEMOIRE) { exception(1, _("Invalid Memory Adress")); - return (i); } else { i = memoire_principale[offset]; - return (i); } break; } + return i; } static void copychaine(Uint32 * t, char * s) { -- cgit v1.2.3