diff --git a/app/MimaRun.hs b/app/MimaRun.hs index 2d71564..147016b 100644 --- a/app/MimaRun.hs +++ b/app/MimaRun.hs @@ -79,12 +79,12 @@ main = do let s = initialState mem s' <- if norun settings then pure s else runMima settings s - T.putStrLn $ "IP: " <> addrToHexDec (msIp s') <> " " - <> "Acc: " <> wordToHexDec (msAcc s') - unless (quiet settings) $ do - putStrLn "Dump of memory:" + putStrLn "\nDump of memory:" + T.putStrLn $ "IP: " <> addrToHexDec (msIp s') <> " " + <> "Acc: " <> wordToHexDec (msAcc s') T.putStrLn $ memoryToText (sparse settings) (msMemory s') + putStrLn "" forM_ (memoryDump settings) $ \path -> do putStrLn $ "Saving memdump at " ++ path diff --git a/src/Mima/State.hs b/src/Mima/State.hs index 6c5c49a..916c93b 100644 --- a/src/Mima/State.hs +++ b/src/Mima/State.hs @@ -42,11 +42,18 @@ wordsToMemory = MimaMemory memoryToWords :: MimaMemory -> [MimaWord] memoryToWords mem = map (\addr -> readAt addr mem) $ addressRange mem -addressWordToText :: MimaAddress -> MimaWord -> T.Text -addressWordToText addr word = +addrWordLegend :: T.Text +addrWordLegend = "UO: Upper Opcode (bits 24-21) LO: Lower Opcode (bits 20-17)\n" + <> "Addr (decimal) - Word ( decimal|UO,LO, Addr) - Instruction\n" + +addrWordToText :: MimaAddress -> MimaWord -> T.Text +addrWordToText addr word = let separator = " - " addrText = addrToHex addr <> " (" <> addrToDec addr <> ")" - wordText = wordToHex word <> " (" <> wordToDec word <> ")" + wordSplit = toDec 2 (upperOpcode word) <> "," + <> toDec 2 (lowerOpcode word) <> "," + <> addrToDec (address word) + wordText = wordToHex word <> " (" <> wordToDec word <> "|" <> wordSplit <> ")" instrText = case wordToInstruction word of Left _ -> "" Right i -> separator <> toText i @@ -54,8 +61,9 @@ addressWordToText addr word = memoryToText :: Bool -> MimaMemory -> T.Text memoryToText sparse mem@(MimaMemory m) - = T.intercalate "\n" - $ map (\addr -> addressWordToText addr (readAt addr mem)) + = (addrWordLegend <>) + $ T.intercalate "\n" + $ map (\addr -> addrWordToText addr (readAt addr mem)) $ addresses sparse where addresses False = addressRange mem