From a53fcddb58feeb24611f1c834f0098bf73204beb Mon Sep 17 00:00:00 2001 From: kolaente Date: Sat, 20 Jun 2020 14:00:54 +0200 Subject: [PATCH] Load pages to and from drive --- hal/paging.go | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/hal/paging.go b/hal/paging.go index acc7ed6..631e22d 100644 --- a/hal/paging.go +++ b/hal/paging.go @@ -67,7 +67,7 @@ func (mmu *MMU) Load(page *Page) { } } - page.RegisterAddress = mmu.findEmptyRegisterAddress() + mmu.loadPageFromDrive(page) mmu.LoadedPages = append(mmu.LoadedPages, page) } @@ -89,8 +89,19 @@ func (mmu *MMU) findEmptyRegisterAddress() *uint16 { func (mmu *MMU) movePageToDrive(page *Page) { for i := 0; i < PageSize-1; i++ { - mmu.drive[page.Address][i] = mmu.Registers[i+int(*page.RegisterAddress)*PageSize] + mmu.drive[page.Address][i] = mmu.Registers[i+page.RegisterOffset()] } page.RegisterAddress = nil } + +func (mmu *MMU) loadPageFromDrive(page *Page) { + for i := 0; i < PageSize-1; i++ { + mmu.Registers[i+page.RegisterOffset()] = mmu.drive[page.Address][i] + } + page.RegisterAddress = mmu.findEmptyRegisterAddress() +} + +func (page *Page) RegisterOffset() int { + return int(*page.RegisterAddress) * PageSize +}