Files

45 lines
1.8 KiB
Lua

-- m1-check.lua -- load the M1 COFF with dwt/loader/loader.lua and read the
-- marker words the generated code wrote.
--
-- M1_LOADER_LUA path to vendor/vt1200/dwt/loader/loader.lua
-- M1_EXPECT_LOAD expected load() result (default 0x12345678)
-- M1_EXPECT_SECOND expected &arr[1] in bits
-- M1_EXPECT_LOADB expected sign-extended byte load (default 0xFFFFFF81)
-- M1_EXPECT_STOREB expected byte store (default 0x81)
--
-- The marker read runs one frame before loader.lua's inspection/exit frame.
dofile(os.getenv("M1_LOADER_LUA"))
local ENDF = tonumber(os.getenv("LOADER_END") or "2700")
local EXPECT_LOAD = tonumber(os.getenv("M1_EXPECT_LOAD") or "0x12345678")
local EXPECT_SECOND = tonumber(os.getenv("M1_EXPECT_SECOND") or "0x018A9020")
local EXPECT_LOADB = tonumber(os.getenv("M1_EXPECT_LOADB") or "0xFFFFFF81")
local EXPECT_STOREB = tonumber(os.getenv("M1_EXPECT_STOREB") or "0x81")
local frames = 0
local checked = false
emu.register_frame_done(function()
frames = frames + 1
if frames == ENDF - 1 and not checked then
checked = true
local prog = manager.machine.devices[':maincpu'].spaces['program']
local add = prog:read_u32(0x018A8000)
local load = prog:read_u32(0x018A8020)
local second = prog:read_u32(0x018A8040)
local loadb = prog:read_u32(0x018A8060)
local storeb = prog:read_u8(0x018A8080)
print(string.format(
"M1: add=%d load=0x%08X second=0x%08X loadb=0x%08X storeb=0x%02X",
add, load, second, loadb, storeb))
if add == 42 and load == EXPECT_LOAD and second == EXPECT_SECOND
and loadb == EXPECT_LOADB and storeb == EXPECT_STOREB then
print("M1 MAME: PASS")
else
print(string.format(
"M1 MAME: FAIL (want add=42 load=0x%08X second=0x%08X loadb=0x%08X storeb=0x%02X)",
EXPECT_LOAD, EXPECT_SECOND, EXPECT_LOADB, EXPECT_STOREB))
end
end
end, "m1-check")