1import json
2
3from fsgs.option import Option
4from fsgs.platform import PlatformHandler
5from fsgs.platforms.atari.hatariataridriver import (
6    HatariAtariDriver,
7    ATARI_MODEL_1040ST,
8)
9from fsgs.platforms.loader import SimpleLoader
10
11
12class AtariSTPlatformHandler(PlatformHandler):
13    PLATFORM_NAME = "Atari ST"
14
15    def __init__(self):
16        PlatformHandler.__init__(self)
17
18    def get_loader(self, fsgs):
19        return AtariSTLoader(fsgs)
20
21    def get_runner(self, fsgs):
22        return HatariAtariDriver(fsgs)
23
24
25class AtariSTLoader(SimpleLoader):
26    def load_files(self, values):
27        file_list = json.loads(values["file_list"])
28        # assert len(file_list) == 1
29        if file_list[0]["name"].endswith(".st"):
30            self.config["floppy_drive_0"] = "sha1://{0}/{1}".format(
31                file_list[0]["sha1"], file_list[0]["name"]
32            )
33        if file_list[0]["name"].endswith(".stx"):
34            self.config["floppy_drive_0"] = "sha1://{0}/{1}".format(
35                file_list[0]["sha1"], file_list[0]["name"]
36            )
37
38    def load_extra(self, values):
39        self.config[Option.ATARI_MODEL] = values["model"]
40        if not self.config[Option.ATARI_MODEL]:
41            self.config[Option.ATARI_MODEL] = ATARI_MODEL_1040ST
42