Fix page movement

master
Jonas Franz 5 years ago
parent dab9158ea5
commit e8579dbdb0
Signed by: JonasFranzDEV
GPG Key ID: 7293A220B7C38080
  1. 12
      hal/paging.go

@ -112,7 +112,8 @@ func (mmu *MMU) Load(page *Page) {
// Everything is referenced, we need to remove one // Everything is referenced, we need to remove one
if len(mmu.LoadedPages) == 4 { 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 { func (mmu *MMU) findEmptyRegisterAddress() *uint16 {
var i uint16 var i uint16
for i = 0; i < uint16(len(mmu.module.register)/PageSize); i++ { for i = 0; i < uint16(len(mmu.module.register)/PageSize); i++ {
var isTaken bool
for _, loadedPage := range mmu.LoadedPages { for _, loadedPage := range mmu.LoadedPages {
if *loadedPage.RegisterAddress == i { if *loadedPage.RegisterAddress == i {
continue isTaken = true
break
} }
return &i
} }
if isTaken {
continue
}
return &i
} }
return &defaultRegister return &defaultRegister

Loading…
Cancel
Save