mirror of https://github.com/trudnai/Steve2.git
- Default ROM is //e, instead of Enhanced version
- WOZ file load error handling - Only place filename to recents when load was successful
This commit is contained in:
parent
b6f67f981c
commit
0aa6098846
|
@ -14,13 +14,10 @@
|
|||
</PersistentStrings>
|
||||
</ContextState>
|
||||
<ContextState
|
||||
contextName = "BRA:6502_instr_branch.h">
|
||||
contextName = "specialized closure #1 in ViewController.Update():ViewController.swift">
|
||||
<PersistentStrings>
|
||||
<PersistentString
|
||||
value = "">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "RAM[0x346f]">
|
||||
value = "self.HiRes.frame">
|
||||
</PersistentString>
|
||||
</PersistentStrings>
|
||||
</ContextState>
|
||||
|
@ -67,7 +64,7 @@
|
|||
contextName = "closure #1 in ViewController.Update():ViewController.swift">
|
||||
<PersistentStrings>
|
||||
<PersistentString
|
||||
value = "MEMcfg.txt_page_2">
|
||||
value = "txtArr">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "self.shadowTxt">
|
||||
|
@ -76,10 +73,10 @@
|
|||
value = "txt">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "MEMcfg.is_80STORE">
|
||||
value = "MEMcfg.txt_page_2">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "txtArr">
|
||||
value = "MEMcfg.is_80STORE">
|
||||
</PersistentString>
|
||||
</PersistentStrings>
|
||||
</ContextState>
|
||||
|
@ -131,6 +128,9 @@
|
|||
<PersistentString
|
||||
value = "sender.identifier!.rawValue">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "Bundle.main.resourcePath! + "/" + menuIdentifier.rawValue + ".woz"">
|
||||
</PersistentString>
|
||||
</PersistentStrings>
|
||||
</ContextState>
|
||||
<ContextState
|
||||
|
@ -209,15 +209,15 @@
|
|||
<ContextState
|
||||
contextName = "spkr_update:speaker.c">
|
||||
<PersistentStrings>
|
||||
<PersistentString
|
||||
value = "(uint8_t)spkr_samples[455]">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "(uint8_t)spkr_samples[451]">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "(uint8_t)spkr_samples[452]">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "(uint8_t)spkr_samples[455]">
|
||||
</PersistentString>
|
||||
</PersistentStrings>
|
||||
</ContextState>
|
||||
<ContextState
|
||||
|
@ -264,7 +264,7 @@
|
|||
value = "pdl_value[pdl]">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "normalized_time">
|
||||
value = "normalized_time >= pdl_value[pdl] ? 255 : 0">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "(3300 * 255/3300)">
|
||||
|
@ -276,7 +276,7 @@
|
|||
value = "1 * 512 * (1 - ( 3300 / 3300.0 ))">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "normalized_time >= pdl_value[pdl] ? 255 : 0">
|
||||
value = "normalized_time">
|
||||
</PersistentString>
|
||||
</PersistentStrings>
|
||||
</ContextState>
|
||||
|
@ -293,13 +293,13 @@
|
|||
value = "textLines">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "hires.frame">
|
||||
value = "hires.layer">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "view">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "hires.layer">
|
||||
value = "hires.frame">
|
||||
</PersistentString>
|
||||
</PersistentStrings>
|
||||
</ContextState>
|
||||
|
@ -315,7 +315,7 @@
|
|||
contextName = "LoRes.Update():LoRes.swift">
|
||||
<PersistentStrings>
|
||||
<PersistentString
|
||||
value = "UInt8( (block >> 4) & 0x0F )">
|
||||
value = "blockChanged[ screenIdx ]">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "UInt8(block)">
|
||||
|
@ -324,7 +324,7 @@
|
|||
value = "UInt8(block & 4)">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "blockChanged[ screenIdx ]">
|
||||
value = "UInt8( (block >> 4) & 0x0F )">
|
||||
</PersistentString>
|
||||
</PersistentStrings>
|
||||
</ContextState>
|
||||
|
@ -343,10 +343,10 @@
|
|||
contextName = "set_flags_NZC:common.h">
|
||||
<PersistentStrings>
|
||||
<PersistentString
|
||||
value = "(unsigned)0xFF">
|
||||
value = "(unsigned)test ">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "(unsigned)test ">
|
||||
value = "(unsigned)0xFF">
|
||||
</PersistentString>
|
||||
</PersistentStrings>
|
||||
</ContextState>
|
||||
|
@ -488,10 +488,10 @@
|
|||
contextName = "HiRes.draw(_:):HiRes.swift">
|
||||
<PersistentStrings>
|
||||
<PersistentString
|
||||
value = "ctx?.bitsPerComponent">
|
||||
value = "linAddr">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "ctx?.data">
|
||||
value = "ctx?.height">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "ctx?.width">
|
||||
|
@ -514,14 +514,14 @@
|
|||
<PersistentString
|
||||
value = "(blockH7 | ( block & bitMask ))">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "ctx?.bitsPerComponent">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "HiRes.blockCols">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "linAddr">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "ctx?.height">
|
||||
value = "ctx?.data">
|
||||
</PersistentString>
|
||||
</PersistentStrings>
|
||||
</ContextState>
|
||||
|
@ -537,13 +537,13 @@
|
|||
contextName = "HiRes.compute():HiRes.swift">
|
||||
<PersistentStrings>
|
||||
<PersistentString
|
||||
value = "UnsafeRawBufferPointer(result)">
|
||||
value = "computePipelineState.maxTotalThreadsPerThreadgroup">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "result[2]">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "computePipelineState.maxTotalThreadsPerThreadgroup">
|
||||
value = "UnsafeRawBufferPointer(result)">
|
||||
</PersistentString>
|
||||
</PersistentStrings>
|
||||
</ContextState>
|
||||
|
@ -569,10 +569,10 @@
|
|||
value = "mouseLocation">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "txtArr">
|
||||
value = "clkfrm">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "clkfrm">
|
||||
value = "txtArr">
|
||||
</PersistentString>
|
||||
</PersistentStrings>
|
||||
</ContextState>
|
||||
|
@ -633,10 +633,10 @@
|
|||
value = "Apple2_64K_AUX + 0xC600">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "Apple2_64K_RAM + 0xC600">
|
||||
value = "(void*)rom">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "(void*)rom">
|
||||
value = "Apple2_64K_RAM + 0xC600">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "strlen(fullPath)">
|
||||
|
@ -653,10 +653,13 @@
|
|||
contextName = "BNE:6502_instr_branch.h">
|
||||
</ContextState>
|
||||
<ContextState
|
||||
contextName = "specialized closure #1 in ViewController.Update():ViewController.swift">
|
||||
contextName = "BRA:6502_instr_branch.h">
|
||||
<PersistentStrings>
|
||||
<PersistentString
|
||||
value = "self.HiRes.frame">
|
||||
value = "">
|
||||
</PersistentString>
|
||||
<PersistentString
|
||||
value = "RAM[0x346f]">
|
||||
</PersistentString>
|
||||
</PersistentStrings>
|
||||
</ContextState>
|
||||
|
|
|
@ -22,7 +22,8 @@ class AppDelegate: NSObject, NSApplicationDelegate {
|
|||
|
||||
@IBAction func Disk1_Selected(_ sender: NSMenuItem) {
|
||||
if let menuIdentifier = sender.identifier {
|
||||
woz_loadFile( Bundle.main.resourcePath! + "/" + menuIdentifier.rawValue + ".woz" )
|
||||
let woz_err = woz_loadFile( Bundle.main.resourcePath! + "/" + menuIdentifier.rawValue + ".woz" )
|
||||
ViewController.current?.chk_woz_load(err: woz_err)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -35,16 +36,15 @@ class AppDelegate: NSObject, NSApplicationDelegate {
|
|||
}
|
||||
|
||||
@IBAction func selectAnImageFromFile(sender: AnyObject) {
|
||||
if ( ViewController.current != nil ) {
|
||||
ViewController.current?.perform(#selector(ViewController.openDiskImage))
|
||||
}
|
||||
ViewController.current?.openDiskImage()
|
||||
}
|
||||
|
||||
|
||||
func application(_ sender: NSApplication, openFile filename: String) -> Bool {
|
||||
woz_loadFile( filename )
|
||||
let woz_err = woz_loadFile( filename )
|
||||
|
||||
return true
|
||||
return woz_err == 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -752,41 +752,338 @@
|
|||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="Config" id="n97-rZ-OOP" userLabel="Config">
|
||||
<menuItem title="Machine" id="n97-rZ-OOP">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Config" id="Xqf-B7-gCo">
|
||||
<menu key="submenu" title="Machine" id="Xqf-B7-gCo">
|
||||
<items>
|
||||
<menuItem title="ROM" id="Y3v-20-h2Q">
|
||||
<menuItem title="► Power On" id="VJp-Pq-vAd">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Disk 1" id="7dA-Bf-QS9">
|
||||
</menuItem>
|
||||
<menuItem title="❚❚ Pause" id="UvV-rl-Pa2">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
</menuItem>
|
||||
<menuItem title="■ Off" id="Pvr-O3-O0W">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="EpV-Zl-RlZ"/>
|
||||
<menuItem title="Cold Reset" id="nzj-IC-y8T">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
</menuItem>
|
||||
<menuItem title="Warm Reset" id="ivK-Gh-v9c">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="iZQ-dd-f8J"/>
|
||||
<menuItem title="Snapshot" id="5oA-Fb-xBS">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Machine" id="sPt-bm-xHF">
|
||||
<items>
|
||||
<menuItem title="Apple ][" identifier="apple" id="vNT-Vf-GnM">
|
||||
<menuItem title="Save" id="TfJ-FC-fVE">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
</menuItem>
|
||||
<menuItem title="Revert" id="BSq-Md-dlE">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
</menuItem>
|
||||
<menuItem title="Clone" id="62P-mr-JdC">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
</menuItem>
|
||||
<menuItem title="Remove" id="F3V-BM-MBF">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="Config" id="xCX-YJ-V4X" userLabel="Config">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Config" id="deK-A1-Cfu">
|
||||
<items>
|
||||
<menuItem title="Computer" id="Z2C-d8-YZG">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Computer" id="ksd-DR-LZn">
|
||||
<items>
|
||||
<menuItem title="Apple I" id="vdn-oV-Yg6">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="i6d-jg-ge0"/>
|
||||
<menuItem title="Apple ][" id="mhi-Ny-X7h">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
</menuItem>
|
||||
<menuItem title="Apple ][ Autostart" id="h9I-nf-vNQ">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="wZ1-Eu-OOC"/>
|
||||
<menuItem title="Apple ][ Plus" id="5gw-29-Gu5">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
</menuItem>
|
||||
<menuItem title="Apple ][ EuroPlus" id="7gZ-uL-uyF">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
</menuItem>
|
||||
<menuItem title="Apple ][ JPlus" id="csX-uP-6sJ">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="16c-Wd-Y9a"/>
|
||||
<menuItem title="Apple //e" state="on" id="BrQ-r4-3m4">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
</menuItem>
|
||||
<menuItem title="Apple //e Enhanced" id="LjH-XA-GH7">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
</menuItem>
|
||||
<menuItem title="Apple //e Platinum" id="DKl-ia-cn9">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="auc-hx-H4k"/>
|
||||
<menuItem title="Apple //c" id="U9I-j7-k9t">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
</menuItem>
|
||||
<menuItem title="Apple //c Plus" id="iyK-TF-6Bt">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="CPU" id="SmQ-6o-1XX">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="CPU" id="KT1-Ia-kZn">
|
||||
<items>
|
||||
<menuItem title="6502" state="on" id="k7j-VG-VO2">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
</menuItem>
|
||||
<menuItem title="6502 Vanilla" id="tO1-Vs-L9f">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
</menuItem>
|
||||
<menuItem title="65C02" id="4mW-JB-ErL">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="e8D-Kj-mbv"/>
|
||||
<menuItem title="1.023 MHz" state="on" id="1RN-01-nf4">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
</menuItem>
|
||||
<menuItem title="2 MHz" id="pxO-n6-xHE">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
</menuItem>
|
||||
<menuItem title="4 MHz" id="GRs-A7-t6X">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
</menuItem>
|
||||
<menuItem title="10 MHz" id="PBY-Ro-rwy">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
</menuItem>
|
||||
<menuItem title="100 MHz" id="Aja-GC-sCf">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
</menuItem>
|
||||
<menuItem title="MAX MHz" id="xtW-45-OFk">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="RAM" id="Gnp-Nx-lOL">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="RAM" id="90x-gh-RRS">
|
||||
<items>
|
||||
<menuItem title="16 K" identifier="apple" id="vCx-u7-Wi3">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
</menuItem>
|
||||
<menuItem title="32 K" identifier="Apple2Plus" id="fLN-L3-YoC">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
</menuItem>
|
||||
<menuItem title="48 K" state="on" identifier="Apple2e" id="8lO-CC-7hQ">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="SZ8-yX-RKG"/>
|
||||
<menuItem title="16 K Language Card" state="on" identifier="Apple2e_Enhanced" id="nJd-RL-OY8">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
</menuItem>
|
||||
<menuItem title="64 K Aux Memory" identifier="Apple2e_Enhanced" id="Nru-sa-j2J">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="ROM" id="pY1-DR-M27">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Disk 1" id="Grf-T3-bgk">
|
||||
<items>
|
||||
<menuItem title="Apple ][" identifier="apple" id="s4p-zb-EBc">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="ROM_Selected:" target="Voe-Tx-rLC" id="kGO-kr-gGf"/>
|
||||
<action selector="ROM_Selected:" target="Voe-Tx-rLC" id="fog-8o-ZAp"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Apple ][ Plus" identifier="Apple2Plus" id="wL6-44-pA1">
|
||||
<menuItem title="Apple ][ Plus" identifier="Apple2Plus" id="a2P-0Y-S0y">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="ROM_Selected:" target="Voe-Tx-rLC" id="7Z4-x3-Io3"/>
|
||||
<action selector="ROM_Selected:" target="Voe-Tx-rLC" id="dhI-7d-ciT"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Apple //e" identifier="Apple2e" id="fj0-JM-dwU">
|
||||
<menuItem title="Apple //e" state="on" identifier="Apple2e" id="MeE-Kj-pad">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="ROM_Selected:" target="Voe-Tx-rLC" id="xDa-lu-WEG"/>
|
||||
<action selector="ROM_Selected:" target="Voe-Tx-rLC" id="2W2-oY-Osz"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Apple //e Enhanced" identifier="Apple2e_Enhanced" id="xHh-GT-uQa">
|
||||
<menuItem title="Apple //e Enhanced" identifier="Apple2e_Enhanced" id="cDl-MC-vGJ">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="ROM_Selected:" target="Voe-Tx-rLC" id="A4H-Kk-DWT"/>
|
||||
<action selector="ROM_Selected:" target="Voe-Tx-rLC" id="Fob-HD-kdv"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="Audio" id="USc-hU-e3R">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Audio" id="hv3-Ib-zwY">
|
||||
<items>
|
||||
<menuItem title="Internal Speaker" state="on" id="t2j-es-fcH">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
</menuItem>
|
||||
<menuItem title="Fake Stereo" id="3QI-CD-CP2">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="MfR-qp-xcm"/>
|
||||
<menuItem title="Soft" id="5tZ-ML-0aT">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
</menuItem>
|
||||
<menuItem title="Normal" state="on" id="kaI-LZ-xPd">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
</menuItem>
|
||||
<menuItem title="Hard" id="8Rl-q3-SsH">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="Pcw-F8-msF"/>
|
||||
<menuItem title="Quiet" id="P3j-WZ-K17">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
</menuItem>
|
||||
<menuItem title="Medium" state="on" id="a2w-0R-hbE">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
</menuItem>
|
||||
<menuItem title="Loud" id="W9O-C4-6aP">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="Video" id="KaL-8u-rRU">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Video" id="Jdm-9V-ppb">
|
||||
<items>
|
||||
<menuItem title="Green" id="Xk5-f8-n1H">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
</menuItem>
|
||||
<menuItem title="Amber" id="4jU-9d-4Kc">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
</menuItem>
|
||||
<menuItem title="White" id="Gh1-av-QsV">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
</menuItem>
|
||||
<menuItem title="Color" state="on" id="rtw-tz-VQa">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="oNR-hU-4fW"/>
|
||||
<menuItem title="Scan Lines" id="9yZ-sl-GN9">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="Uy4-cl-Goa"/>
|
||||
<menuItem title="Videx 80 Col" state="on" id="1AP-7s-pbz">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="Device" id="tWa-mz-8FE">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Device" id="2h9-TO-Gxp">
|
||||
<items>
|
||||
<menuItem title="#4 Mouse" state="on" id="zb4-xg-8G3">
|
||||
<menu key="submenu" title="#4 Mouse" id="ZhQ-0N-U3c">
|
||||
<items>
|
||||
<menuItem title="Enabled" state="on" id="po4-cY-7DO">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
</menuItem>
|
||||
<menuItem title="Calibrate" id="SUX-t1-KZF">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="#5 Smart Drive" id="WCm-42-OWi">
|
||||
<menu key="submenu" title="#5 Smart Drive" id="X4T-1z-ROt">
|
||||
<items>
|
||||
<menuItem title="Drive 1" state="on" id="AHa-J8-6Ta">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="ROM_Selected:" target="Voe-Tx-rLC" id="Fvj-WP-78c"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Drive 2" state="on" id="DQ6-1k-dPR">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="ROM_Selected:" target="Voe-Tx-rLC" id="bsm-mE-Wgc"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Normal Speed" id="45z-1z-gjm">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
</menuItem>
|
||||
<menuItem title="Enhanced Speed" state="on" id="pBw-9b-ilt">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="#6 Disk ][" state="on" id="SMA-1k-EdT">
|
||||
<menu key="submenu" title="#6 Disk ][" id="bTm-cg-Qdm">
|
||||
<items>
|
||||
<menuItem title="Drive 1" state="on" id="mZb-qD-Rcv">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="ROM_Selected:" target="Voe-Tx-rLC" id="G6H-Iv-RQE"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Drive 2" state="on" id="rtf-6x-XqC">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="ROM_Selected:" target="Voe-Tx-rLC" id="zLW-7d-aGa"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Normal Speed" id="6pP-NT-9Wi">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
</menuItem>
|
||||
<menuItem title="Enhanced Speed" state="on" id="Ck6-Su-ss5">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="Game Controller" id="whx-uP-lMP">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Game Controller" id="UFl-tP-yg9">
|
||||
<items>
|
||||
<menuItem title="Enabled" state="on" id="yac-LJ-3bQ">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="ROM_Selected:" target="Voe-Tx-rLC" id="SsM-bV-Gwt"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Keyboard 2 Paddle" state="on" id="hQ7-E1-FD5">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="ROM_Selected:" target="Voe-Tx-rLC" id="WIs-9Q-Lik"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Mouse 2 Joystick" id="gkx-1Y-kWQ">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="ROM_Selected:" target="Voe-Tx-rLC" id="nhy-co-aDH"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
|
|
|
@ -98,13 +98,49 @@ class ViewController: NSViewController {
|
|||
|
||||
static var charConvTbl = charConvTblFlashOn
|
||||
|
||||
static var romFileName = "Apple2e_Enhanced.rom";
|
||||
static var romFileName = "Apple2e.rom";
|
||||
|
||||
static let textLineOfs : [Int] = [
|
||||
0x000, 0x080, 0x100, 0x180, 0x200, 0x280, 0x300, 0x380, 0x028, 0x0A8, 0x128, 0x1A8,
|
||||
0x228, 0x2A8, 0x328, 0x3A8, 0x050, 0x0D0, 0x150, 0x1D0, 0x250, 0x2D0, 0x350, 0x3D0
|
||||
]
|
||||
|
||||
|
||||
func dialogOK(title: String, text: String) {
|
||||
let alert = NSAlert()
|
||||
alert.messageText = title
|
||||
alert.informativeText = text
|
||||
alert.alertStyle = .warning
|
||||
alert.addButton(withTitle: "OK")
|
||||
alert.runModal()
|
||||
// return alert.runModal() == .alertFirstButtonReturn
|
||||
}
|
||||
|
||||
|
||||
@objc func chk_woz_load(err : Int32) {
|
||||
switch (err) {
|
||||
case WOZ_ERR_OK:
|
||||
break
|
||||
|
||||
case WOZ_ERR_FILE_NOT_FOUND:
|
||||
dialogOK(title: "Error Loading Disk Image", text: "File Not Found!")
|
||||
break
|
||||
|
||||
case WOZ_ERR_NOT_WOZ_FILE:
|
||||
dialogOK(title: "Error Loading Disk Image", text: "File is not a WOZ image!")
|
||||
break
|
||||
|
||||
case WOZ_ERR_BAD_CHUNK_HDR, WOZ_ERR_BAD_DATA:
|
||||
dialogOK(title: "Error Loading Disk Image", text: "Malformed WOZ image!")
|
||||
break
|
||||
|
||||
default:
|
||||
dialogOK(title: "Error Loading Disk Image", text: "Unknown Error! (\(err))" )
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
var workItem : DispatchWorkItem? = nil;
|
||||
@IBAction func Power(_ sender: Any) {
|
||||
|
||||
|
@ -734,7 +770,7 @@ class ViewController: NSViewController {
|
|||
|
||||
let upd = RepeatingTimer(timeInterval: 1/Double(fps))
|
||||
|
||||
static var current : NSViewController? = nil
|
||||
static var current : ViewController? = nil
|
||||
|
||||
override func viewDidLoad() {
|
||||
super.viewDidLoad()
|
||||
|
@ -743,8 +779,9 @@ class ViewController: NSViewController {
|
|||
|
||||
hires.clearScreen();
|
||||
|
||||
woz_loadFile( Bundle.main.resourcePath! + "/Apple DOS 3.3 January 1983.woz" )
|
||||
|
||||
let woz_err = woz_loadFile( Bundle.main.resourcePath! + "/Apple DOS 3.3 January 1983.woz" )
|
||||
chk_woz_load(err: woz_err)
|
||||
|
||||
//view.frame = CGRect(origin: CGPoint(), size: NSScreen.main!.visibleFrame.size)
|
||||
|
||||
// createHiRes()
|
||||
|
@ -877,8 +914,14 @@ class ViewController: NSViewController {
|
|||
//but otherwise a for loop works
|
||||
|
||||
if let filePath = openPanel.url?.path {
|
||||
woz_loadFile( filePath )
|
||||
NSDocumentController.shared.noteNewRecentDocumentURL(URL(fileURLWithPath: filePath))
|
||||
let woz_err = woz_loadFile( filePath )
|
||||
|
||||
if woz_err == WOZ_ERR_OK {
|
||||
NSDocumentController.shared.noteNewRecentDocumentURL(URL(fileURLWithPath: filePath))
|
||||
}
|
||||
else {
|
||||
self.chk_woz_load(err: woz_err)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -301,7 +301,7 @@ uint8_t woz_read() {
|
|||
}
|
||||
|
||||
|
||||
void woz_loadFile( const char * filename ) {
|
||||
int woz_loadFile( const char * filename ) {
|
||||
|
||||
// char fullpath[256];
|
||||
//
|
||||
|
@ -312,12 +312,12 @@ void woz_loadFile( const char * filename ) {
|
|||
FILE * f = fopen(filename, "rb");
|
||||
if (f == NULL) {
|
||||
perror("Failed to read WOZ: ");
|
||||
return;
|
||||
return WOZ_ERR_FILE_NOT_FOUND;
|
||||
}
|
||||
|
||||
fread( &woz_header, 1, sizeof(woz_header_t), f);
|
||||
if ( woz_header.magic != WOZ1_MAGIC ) {
|
||||
return;
|
||||
return WOZ_ERR_NOT_WOZ_FILE;
|
||||
}
|
||||
|
||||
while ( ! feof(f) ) {
|
||||
|
@ -325,7 +325,7 @@ void woz_loadFile( const char * filename ) {
|
|||
|
||||
long r = fread( &woz_chunk_header, 1, sizeof(woz_chunk_header_t), f);
|
||||
if ( r != sizeof(woz_chunk_header_t) ) {
|
||||
break;
|
||||
return r == 0 ? 0 : WOZ_ERR_BAD_CHUNK_HDR;
|
||||
}
|
||||
long foffs = ftell(f);
|
||||
|
||||
|
@ -353,7 +353,7 @@ void woz_loadFile( const char * filename ) {
|
|||
if (buf) {
|
||||
r = fread( buf, 1, woz_chunk_header.size, f);
|
||||
if ( r != woz_chunk_header.size ) {
|
||||
break;
|
||||
return WOZ_ERR_BAD_DATA;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -363,6 +363,7 @@ void woz_loadFile( const char * filename ) {
|
|||
|
||||
fclose(f);
|
||||
|
||||
return WOZ_ERR_OK;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -23,6 +23,12 @@
|
|||
#define WOZ_TRKS_CHUNK_ID 0x534B5254
|
||||
#define WOZ_META_CHUNK_ID 0x4154454D
|
||||
|
||||
#define WOZ_ERR_OK 0
|
||||
#define WOZ_ERR_FILE_NOT_FOUND -1
|
||||
#define WOZ_ERR_NOT_WOZ_FILE -2
|
||||
#define WOZ_ERR_BAD_CHUNK_HDR -3
|
||||
#define WOZ_ERR_BAD_DATA -4
|
||||
|
||||
|
||||
#pragma pack(push)
|
||||
#pragma pack(1)
|
||||
|
@ -120,7 +126,7 @@ extern uint8_t WOZlatch;
|
|||
|
||||
|
||||
extern uint8_t woz_read(void);
|
||||
extern void woz_loadFile( const char * filename );
|
||||
extern int woz_loadFile( const char * filename );
|
||||
|
||||
|
||||
#endif /* woz_h */
|
||||
|
|
Loading…
Reference in New Issue