From bfa371ec0c3b0cd26249fcfde81b7e5f5d034fd2 Mon Sep 17 00:00:00 2001 From: Kelvin Sherlock Date: Sun, 17 Jan 2021 00:56:42 -0500 Subject: [PATCH] macintosh lc support --- Ample.xcodeproj/project.pbxproj | 6 +++ Ample/Resources/maclc.plist | 77 +++++++++++++++++++++++++++++++++ Ample/Resources/models.plist | 15 +++++++ Ample/Resources/roms.plist | 2 + python/machines.py | 9 +++- python/mkmachines.py | 22 +++++++++- python/mkmodels.py | 3 ++ python/rom.py | 7 +++ 8 files changed, 139 insertions(+), 2 deletions(-) create mode 100644 Ample/Resources/maclc.plist diff --git a/Ample.xcodeproj/project.pbxproj b/Ample.xcodeproj/project.pbxproj index e4e14ae..cb49d93 100644 --- a/Ample.xcodeproj/project.pbxproj +++ b/Ample.xcodeproj/project.pbxproj @@ -112,6 +112,8 @@ B6D6DE3B24FACF4F00661A5F /* Defaults.plist in Resources */ = {isa = PBXBuildFile; fileRef = B6D6DE3A24FACF4F00661A5F /* Defaults.plist */; }; B6D6DE3E24FADF8B00661A5F /* LaunchWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = B6D6DE3C24FADF8B00661A5F /* LaunchWindow.xib */; }; B6D6DE4124FADFAC00661A5F /* LaunchWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = B6D6DE4024FADFAC00661A5F /* LaunchWindowController.m */; }; + B6DD1FE825B407E7004A3242 /* maclc.plist in Resources */ = {isa = PBXBuildFile; fileRef = B6DD1FE725B407E6004A3242 /* maclc.plist */; }; + B6DD1FE925B407E7004A3242 /* maclc.plist in Resources */ = {isa = PBXBuildFile; fileRef = B6DD1FE725B407E6004A3242 /* maclc.plist */; }; B6DDECC025057A550093587A /* drag-handle-4x10.png in Resources */ = {isa = PBXBuildFile; fileRef = B6DDECBD25057A550093587A /* drag-handle-4x10.png */; }; B6DDECC125057A550093587A /* drag-handle-4x10.png in Resources */ = {isa = PBXBuildFile; fileRef = B6DDECBD25057A550093587A /* drag-handle-4x10.png */; }; B6DDECC225057A550093587A /* drag-handle-4x10@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = B6DDECBE25057A550093587A /* drag-handle-4x10@2x.png */; }; @@ -352,6 +354,7 @@ B6D6DE3D24FADF8B00661A5F /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchWindow.xib; sourceTree = ""; }; B6D6DE3F24FADFAC00661A5F /* LaunchWindowController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LaunchWindowController.h; sourceTree = ""; }; B6D6DE4024FADFAC00661A5F /* LaunchWindowController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LaunchWindowController.m; sourceTree = ""; }; + B6DD1FE725B407E6004A3242 /* maclc.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = maclc.plist; sourceTree = ""; }; B6DDECBD25057A550093587A /* drag-handle-4x10.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "drag-handle-4x10.png"; sourceTree = ""; }; B6DDECBE25057A550093587A /* drag-handle-4x10@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "drag-handle-4x10@2x.png"; sourceTree = ""; }; B6DDECBF25057A550093587A /* drag-handle-4x10@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "drag-handle-4x10@3x.png"; sourceTree = ""; }; @@ -457,6 +460,7 @@ B61099FA24F5F370005CB652 /* uniap2en.plist */, B61099EE24F5F36E005CB652 /* uniap2pt.plist */, B6109A0224F5F371005CB652 /* uniap2ti.plist */, + B6DD1FE725B407E6004A3242 /* maclc.plist */, B63C1F1125B147E10016A611 /* CheatSheet.html */, ); path = Resources; @@ -731,6 +735,7 @@ B6109A4124F5F377005CB652 /* apple2cp.plist in Resources */, B6BA258524E99BEB005FB8FF /* MainMenu.xib in Resources */, B6109A3A24F5F377005CB652 /* prav82.plist in Resources */, + B6DD1FE825B407E7004A3242 /* maclc.plist in Resources */, B6109A2024F5F377005CB652 /* apple2euk.plist in Resources */, B6109A2F24F5F377005CB652 /* uniap2ti.plist in Resources */, B6DDECD42505A86E0093587A /* eject-hover-16x16@3x.png in Resources */, @@ -833,6 +838,7 @@ B6E4B5DE24FDE2670094A35C /* mprof3.plist in Resources */, B6E4B5DF24FDE2670094A35C /* basis108.plist in Resources */, B6DDECD52505A86E0093587A /* eject-hover-16x16@3x.png in Resources */, + B6DD1FE925B407E7004A3242 /* maclc.plist in Resources */, B6E4B5E024FDE2670094A35C /* agat7.plist in Resources */, B6E4B5E124FDE2670094A35C /* elppa.plist in Resources */, B6E4B5E224FDE2670094A35C /* apple2gsr1.plist in Resources */, diff --git a/Ample/Resources/maclc.plist b/Ample/Resources/maclc.plist new file mode 100644 index 0000000..6c801dc --- /dev/null +++ b/Ample/Resources/maclc.plist @@ -0,0 +1,77 @@ + + + + + value + maclc + description + Macintosh LC + ram + + + intValue + 2097152 + description + 2M + value + 2M + default + + + + intValue + 4194304 + description + 4M + value + 4M + default + + + + intValue + 6291456 + description + 6M + value + 6M + default + + + + intValue + 8388608 + description + 8M + value + 8M + default + + + + intValue + 10485760 + description + 10M + value + 10M + default + + + + media + + flop_3_5 + 2 + hard + 2 + cdrm + 1 + + resolution + + 640 + 480 + + + diff --git a/Ample/Resources/models.plist b/Ample/Resources/models.plist index eae516f..3745d80 100644 --- a/Ample/Resources/models.plist +++ b/Ample/Resources/models.plist @@ -377,5 +377,20 @@ + + description + Macintosh (NuBus) + value + maclc + children + + + description + Macintosh LC + value + maclc + + + diff --git a/Ample/Resources/roms.plist b/Ample/Resources/roms.plist index 378e3e5..a7a7fd6 100644 --- a/Ample/Resources/roms.plist +++ b/Ample/Resources/roms.plist @@ -68,8 +68,10 @@ cmsscsi d2fdc diskii13 + egret keytronic_pc3270 m68705p3 + maclc qsound votrax ym2608 diff --git a/python/machines.py b/python/machines.py index 4a3db6c..a776e29 100644 --- a/python/machines.py +++ b/python/machines.py @@ -21,6 +21,9 @@ MACHINES = ( "zijini", # China Education Computer "cec2000", "cece", "cecg", "ceci", "cecm", + + # macintosh... + "maclc" ) @@ -32,5 +35,9 @@ SLOTS = ( "rs232", "gameio", "printer", - "modem" + "modem", + + # mac nubus + "nb1", "nb2", "nb3", "nb4", "nb5", "nb6", "nb7", + "nb8", "nb9", "nba", "nbb", "nbc", "nbd", "nbe", ) diff --git a/python/mkmachines.py b/python/mkmachines.py index e0aa787..9fd7385 100644 --- a/python/mkmachines.py +++ b/python/mkmachines.py @@ -7,6 +7,18 @@ import xml.etree.ElementTree as ET from machines import MACHINES, SLOTS +# macintosh errata: +# maclc has scsi:1 - scsi:7 and lcpds slots, but none are currently configurable. +# maciifx has scsi:1 - scsi:7 (not configurable) +# maciifx has "nb9", "nba" - "nbe" as configurable nubus slots +# +# w/ nubus, can specify video card which may have different resolution. +# +# Inside Macintosh: Devices chapter 2 explains the Nubus slot name scheme +# (essentially $01-$0e; $0 and $f are reserved) +# + + # don't allow these for now. generally because they add floppy/hard drives # but don't work with normal disk images DISABLED = set(( @@ -43,6 +55,9 @@ def find_machine_media(parent): "apple2_cass": "cass", "floppy_5_25": "flop_5_25", "floppy_3_5": "flop_3_5", + # mac + "scsi_hdd": "hard", + "cdrom": "cdrm", } media = {} for x in parent.findall("./device"): @@ -68,6 +83,9 @@ def find_machine_media(parent): if mname == "apple2c" and slot == "sl6": slot = None + # hack for now - these are scsi:1-7 slots but slot option isn't adjustable. + if mname == "maclc" and slot == "scsi": slot = None + if slot: continue # skip slot devices -- they'll be handled as part of the device. #if ":" in tag and tag[0] not in "0123456789": continue @@ -196,7 +214,9 @@ for m in machines: # node = machine.find('display[@tag="screen"]') node = machine.find('./display') - data["resolution"] = [int(node.get("width")), int(node.get("height")) * 2] + hscale = 2 + if m in ("maclc"): hscale = 1 + data["resolution"] = [int(node.get("width")), int(node.get("height")) * hscale] mm = {} for x in root.findall("machine[@isdevice='yes']"): diff --git a/python/mkmodels.py b/python/mkmodels.py index 689a933..f71f5ff 100644 --- a/python/mkmodels.py +++ b/python/mkmodels.py @@ -24,6 +24,8 @@ iie_clones_children = ["mprof3", "prav8c", "spectred", "zijini"] cec_children = ["cec2000", "cece", "cecg", "ceci", "cecm"] agat_children = ["agat7", "agat9"] +mac_nubus_children = ["maclc"] + tree = [ ("Apple I", "apple1", apple1_children), ("Apple ][", "apple2", apple2_children), @@ -36,6 +38,7 @@ tree = [ ("Laser", "laser128", laser_children), ("Agat", "agat7", agat_children), ("China Education Computer", None, cec_children), + ("Macintosh (NuBus)", "maclc", mac_nubus_children) ] env = {'DYLD_FALLBACK_FRAMEWORK_PATH': '../embedded'} diff --git a/python/rom.py b/python/rom.py index 78cb0f2..e8f3a48 100644 --- a/python/rom.py +++ b/python/rom.py @@ -62,12 +62,18 @@ ym2608 a2grapplerplus a2pic +# .227 a2parprn a2suprterm a2uniprint ccs7710 +#.228 aprissi + +# macintosh +maclc +egret """.splitlines() # @@ -79,6 +85,7 @@ aprissi # ROMS = [x for x in ROMS if x != ""] +ROMS = [x for x in ROMS if x[0] != "#"] ROMS.sort() data = {}