Load pages to and from drive

master
kolaente 4 years ago
parent e72c6dfad5
commit a53fcddb58
Signed by: kolaente
GPG Key ID: F40E70337AB24C9B
  1. 15
      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
}

Loading…
Cancel
Save