// vm.cpp            Dave Reed         4/1/05
//
// Virtual Memory Simulator: currently uses FCFS page replacement
//////////////////////////////////////////////////////////////////

#include <iostream>
#include "PageTable.h"
using namespace std;

int main()
{
    int logSize;
    cout << "Enter number of pages in logical memory: " << endl;
    cin >> logSize;

    int physSize;
    cout << "Enter number of frames in physical memory: " << endl;
    cin >> physSize;

    PageTable PT(logSize, physSize);            // CREATE THE PAGE TABLE

    cout << "Enter the page-reference string: " << endl;
    int pageNum;
    cin >> pageNum;
    while (pageNum != -1) {                    // REPEAT UNTIL END OF INPUT
        if (PT.isValid(pageNum)) {              // IF PAGE IS IN MEMORY,
            PT.accessPage(pageNum);             //   THEN ACCESS IT
        }
        else {                                  // OTHERWISE,
            PT.storePage(pageNum);              //   SWAP THE PAGE IN 
            PT.accessPage(pageNum);             //   THEN ACCESS IT
        }

        cin >> pageNum;                         // READ NEXT INPUT VALUE
    }

    return 0;
}
