2018-05-14 22:39:55 +00:00
|
|
|
package main
|
2018-05-14 22:23:01 +00:00
|
|
|
|
|
|
|
import (
|
|
|
|
"fmt"
|
|
|
|
"mos6502go/cpu"
|
|
|
|
"mos6502go/keyboard"
|
|
|
|
"mos6502go/mmu"
|
|
|
|
"mos6502go/system"
|
2018-05-17 12:13:10 +00:00
|
|
|
"mos6502go/utils"
|
2018-05-14 22:23:01 +00:00
|
|
|
"mos6502go/video"
|
|
|
|
"testing"
|
|
|
|
"time"
|
|
|
|
)
|
|
|
|
|
2018-05-17 12:13:10 +00:00
|
|
|
const diskImage = "dos33_disk.dsk"
|
2018-05-14 22:23:01 +00:00
|
|
|
|
|
|
|
func TestDOS33Boot(t *testing.T) {
|
|
|
|
cpu.InitInstructionDecoder()
|
|
|
|
mmu.InitRAM()
|
|
|
|
mmu.InitApple2eROM()
|
|
|
|
mmu.InitIO()
|
2018-05-17 12:13:10 +00:00
|
|
|
mmu.ReadDiskImage(diskImage)
|
2018-05-14 22:23:01 +00:00
|
|
|
cpu.Init()
|
|
|
|
keyboard.Init()
|
|
|
|
video.Init()
|
|
|
|
system.Init()
|
|
|
|
cpu.Reset()
|
|
|
|
|
|
|
|
t0 := time.Now()
|
2018-05-16 09:39:53 +00:00
|
|
|
|
2018-05-17 12:13:10 +00:00
|
|
|
// Run until BASIC would execute the program.
|
|
|
|
utils.RunUntilBreakPoint(t, 0xd7d2, 5, false, "BASIC NEWSTT")
|
2018-05-14 22:23:01 +00:00
|
|
|
|
|
|
|
elapsed := float64(time.Since(t0) / time.Millisecond)
|
|
|
|
fmt.Printf("CPU Cycles: %d\n", system.FrameCycles)
|
|
|
|
fmt.Printf("Time elapsed: %0.2f ms\n", elapsed)
|
|
|
|
fmt.Printf("Speed: %0.2f cycles/ms\n", float64(system.FrameCycles)/elapsed)
|
|
|
|
}
|