diff --git a/hal/paging.go b/hal/paging.go index 25cce6f..4e3563e 100644 --- a/hal/paging.go +++ b/hal/paging.go @@ -112,7 +112,8 @@ func (mmu *MMU) Load(page *Page) { // Everything is referenced, we need to remove one if len(mmu.LoadedPages) == 4 { - mmu.LoadedPages = mmu.LoadedPages[:2] + mmu.movePageToDrive(mmu.LoadedPages[3]) + mmu.LoadedPages = mmu.LoadedPages[:3] } } @@ -124,12 +125,17 @@ func (mmu *MMU) Load(page *Page) { func (mmu *MMU) findEmptyRegisterAddress() *uint16 { var i uint16 for i = 0; i < uint16(len(mmu.module.register)/PageSize); i++ { + var isTaken bool for _, loadedPage := range mmu.LoadedPages { if *loadedPage.RegisterAddress == i { - continue + isTaken = true + break } - return &i } + if isTaken { + continue + } + return &i } return &defaultRegister