From 4b87e6879228a3491609254949c41a2405c29ad5 Mon Sep 17 00:00:00 2001 From: Aleksey Veresov Date: Thu, 11 Feb 2021 00:55:44 +0300 Subject: Library test. --- Main.hs | 32 +++++++++++++++++++++++++++++++- package.yaml | 1 + src/Suem.hs | 13 ++++++++++--- stack.yaml | 6 +----- 4 files changed, 43 insertions(+), 9 deletions(-) diff --git a/Main.hs b/Main.hs index 48920a4..7b76428 100644 --- a/Main.hs +++ b/Main.hs @@ -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 () diff --git a/stack.yaml b/stack.yaml index eb28bf4..d5cd0ae 100644 --- a/stack.yaml +++ b/stack.yaml @@ -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 -- cgit v1.2.3