diff options
-rw-r--r-- | Main.hs | 32 | ||||
-rw-r--r-- | package.yaml | 1 | ||||
-rw-r--r-- | src/Suem.hs | 13 | ||||
-rw-r--r-- | stack.yaml | 6 |
4 files changed, 43 insertions, 9 deletions
@@ -1,6 +1,36 @@ module Main where +import Options.Applicative import Suem +config :: Parser Config +config = Config + <$> option auto + ( long "frequency" + <> short 'f' + <> metavar "HERTZ" + <> showDefault + <> value 8000000 + <> help "Machine frequency in Hz" ) + <*> option auto + ( long "ram" + <> short 'm' + <> metavar "RAM_SIZE" + <> showDefault + <> value (8 * 1024 * 1024) + <> help "Available RAM in bytes" ) + <*> option auto + ( long "rom" + <> short 'r' + <> metavar "ROM_PATH" + <> showDefault + <> value "rom.bin" + <> help "Path to file to load into ROM" ) + main :: IO () -main = printROM +main = suem =<< execParser opts + where + opts = info (config <**> helper) + ( fullDesc + <> progDesc "Emulator of Suen, machine on M68000" + <> header "suem - Suen emulator" ) diff --git a/package.yaml b/package.yaml index af4a48e..546eed6 100644 --- a/package.yaml +++ b/package.yaml @@ -19,3 +19,4 @@ executable: ghc-options: -threaded -rtsopts -with-rtsopts=-N dependencies: - suem + - optparse-applicative diff --git a/src/Suem.hs b/src/Suem.hs index f74976e..bbdfa78 100644 --- a/src/Suem.hs +++ b/src/Suem.hs @@ -1,4 +1,11 @@ -module Suem (printROM) where +module Suem (Config(..), suem) where -printROM :: IO () -printROM = putStrLn "ROM" +data Config = Config { + freq :: Int, + ram :: Int, + rom :: String +} + +suem :: Config -> IO () +suem (Config _ _ r) = putStrLn $ "Loaded " ++ r ++ " into ROM." +suem _ = return () @@ -1,8 +1,4 @@ packages: - . system-ghc: true -resolver: - compiler: ghc-8.8.4 -extra-deps: -- vector-0.12.2.0 -- network-3.1.2.1 +resolver: lts-16.21 |