Raw File
MEM.h
/****************************************************************************
 * MEM - ERASEABLE/FIXED MEMORY subsystem
 *
 * AUTHOR: John Pultorak
 * DATE: 9/26/02
 * FILE: MEM.h
 *
 * VERSIONS:
 *
 * DESCRIPTION:
 * Eraseable & Fixed Memory for the Block 1 Apollo Guidance Computer
 * prototype (AGC4).
 *
 * SOURCES:
 * Mostly based on information from "Logical Description for the Apollo
 * Guidance Computer (AGC4)", Albert Hopkins, Ramon Alonso, and Hugh
 * Blair-Smith, R-393, MIT Instrumentation Laboratory, 1963.
 *
 * NOTES:
 *
 *****************************************************************************
 */
#ifndef MEM_H
#define MEM_H
#include "reg.h"
#define NUMFBANK 12 // number of 1024 word fixed memory banks
class regEMEM : public reg
{
public:
  regEMEM() :
      reg(16, "%06o")
  {
  }
  regEMEM&
  operator=(const unsigned& r)
  {
    write(r);
    return *this;
  }
};
class regFMEM : public reg
{
public:
  regFMEM() :
      reg(16, "%06o")
  {
  }
  regFMEM&
  operator=(const unsigned& r)
  {
    write(r);
    return *this;
  }
};
class MEM
{
public:
  static void
  execWP_WE();
  static void
  execRP_SBWG();
  static regEMEM register_EMEM[]; // erasable memory
  static regFMEM register_FMEM[]; // fixed memory
  static unsigned MEM_DATA_BUS; // data lines: memory bits 15-1
  static unsigned MEM_PARITY_BUS; // parity line: memory bit 16
  static unsigned
  readMemory();
  static void
  writeMemory(unsigned data);
  // The following functions are used in the simulator,
  // but are implemented in the AGC design.
  static unsigned
  readMemory(unsigned address);
  static void
  writeMemory(unsigned address, unsigned data);
};
#endif
back to top