blob: 5d1d8c68314ffe6f6656a7a2a1804a800ee0cdf0 [file] [log] [blame]
/* %%%%%%%%%%%%%%%%%%%% (c) William Landi 1991 %%%%%%%%%%%%%%%%%%%%%%%%%%%% */
/* Permission to use this code is granted as long as the copyright */
/* notice remains in place. */
/* ============================== memory.h ================================= */
/* Contains all the routines that manage the main memory of the SIC/XE */
/* machine. */
/* MEM_SPACE The type of a main memory in this program. */
typedef char *MEM_SPACE;
/* --------------------------------- INT ---------------------------------- */
/* 1 parameter: */
/* 1) char CH; Character to convert. */
/* Return the integer representation for a character. Had to be written */
/* Because the character 255 (for example) who be treated as the integer -1, */
/* but I needed it to be 255. */
extern int INT();
/* ----------------------------- Create Memory ----------------------------- */
/* 1 parameter: */
/* 1) MEM_SPACE *MEMORY; name of the main memory to create. */
/* Create a megabyte of memory and point MEMORY to it. It does not initialize*/
/* the memory as this took about 5 minuites. Since the memory was */
/* uninitized I needed another way to know when locations where modified, */
/* thus the above lined list of blocks. */
extern void CREATE_MEMORY();
/* ------------------------------ STORE_AT --------------------------------- */
/* 5 parameters: */
/* 1) char *VALUE; Character representation (2 chars/byte) of */
/* what the block of memory should contain. */
/* 2) int BYTES; bytes in the block to load into memory. */
/* 3) int ADDRESS; Where the block begins in memory. */
/* 4) MEM_SPACE MEMORY; The main memory. */
/* 5) BOOLEAN *ERROR; Was an error detected during the store. */
/* Place BYTES consequative bytes into MEMORY, starting at ADDRESS. */
extern void STORE_AT();
/* ---------------------------- ADD_INT_TO_LOC ----------------------------- */
/* 5 parameters: */
/* 1) int NUM; NUMber to add to the value already in memory*/
/* 2) int LOCATION; Address of the integer in memory */
/* 3) int HALF_BYTES; How many HALF_BYTES does the number occupy */
/* 4) MEM_SPACE MEMORY; The memory. */
/* 5) BOOLEAN *ERROR; Has an error been detected. */
/* Add the integer NUM to what is store at LOCATION in MEMORY. */
extern void ADD_INT_TO_LOC();
/* ----------------------------- PRINT_MEM --------------------------------- */
/* 2 parameters: */
/* 1) MEM_SPACE MEMORY; Memory to output. */
/* 2) FILE *OUTPUT; Output stream. */
/* Output the loaded areas of memory in a nice user readable way. */
extern void PRINT_MEM();
/* ---------------------------- OUTPUT_MEM --------------------------------- */
/* 2 parameters: */
/* 1) MEM_SPACE MEMORY; Memory to output. */
/* 2) FILE *OUTPUT; Output stream. */
/* Prints out the loaded areas of memory in a machine friendly format. Very */
/* to the text records of the object stream except relocated and modified. */
extern void OUTPUT_MEM();