git @ Cat's Eye Technologies linapple / bfc14d2
Merge branch 'catseye' into merge, modded README This merges catseye/linapple with only edits around the README since this isn't Chris's fork, but going into our trunk. T. Joseph Carter 3 years ago
43 changed file(s) with 2522 addition(s) and 31 deletion(s). Raw diff Collapse all Expand all
00 /linapple
11 /src/linapple
22 *.o
3 *.pcm
0 # LinApple #
1 ## Command-line fork ##
2
3 This is a fork of the LinApple Apple ][e emulator for Linux. This fork allows certain options to be specified from the command line when running LinApple.
4
5 Currently, the following command line options are available:
6
7 * -d1: Specifies a disk image to load into FDD1 (drive 0)
8 * -d2: Specifies a disk image to load into FDD1 (drive 1)
9 * -f: Specifies that the emulator should run in fullscreen mode
10 * -b : Specifies that benchmark should be loaded
11 * -l: Logs output to a file called AppleWin.log
12 * -m: Disables direct sound
13 * -autoboot: Boots the system automatically, rather than displaying the splash screen
14
15 When specifying disk images, the full path should be used (e.g. `linapple -d1 /home/myname/disks/MYSTHOUS.DSK`
16
17 Currently, only the options to specify disks start in fullscreen, and auto boot have been tested.
18
19 This fork is far from perfect, and has not been tested extensively. The main purpose is to allow users to set up custom shell scripts which they may use to automatically load
20 certain Apple ][ games or programs with the click of a button. While this need is met by this fork, extensive testing has not been performed to ensure new bugs were not
21 introduced by these changes.
22
23 A simple script can be set up to run an Apple ][ game or program by combining the -d1, -f, and -autoboot options, for example:
24
25 linapple -d1 /path/to/disk/image -f -autoboot
26
27 ### TODO ###
28
29 1. Testing is needed to make sure the other command line options are working correctly. Currently, only the -d1, -d2, and -f options have been tested.
30 2. Extensive testing is needed to ensure that these changes have not inadvertently broken other features of the program. Unfortunately, a test suite did not come with the
31 original code, so I have not been able to test this.
32 3. Add a command line switch which allows the user to specify different configuration files.
33
0 {
1 "images" : [
2 {
3 "idiom" : "mac",
4 "size" : "16x16",
5 "scale" : "1x"
6 },
7 {
8 "idiom" : "mac",
9 "size" : "16x16",
10 "scale" : "2x"
11 },
12 {
13 "size" : "32x32",
14 "idiom" : "mac",
15 "filename" : "icon.png",
16 "scale" : "1x"
17 },
18 {
19 "idiom" : "mac",
20 "size" : "32x32",
21 "scale" : "2x"
22 },
23 {
24 "idiom" : "mac",
25 "size" : "128x128",
26 "scale" : "1x"
27 },
28 {
29 "idiom" : "mac",
30 "size" : "128x128",
31 "scale" : "2x"
32 },
33 {
34 "idiom" : "mac",
35 "size" : "256x256",
36 "scale" : "1x"
37 },
38 {
39 "idiom" : "mac",
40 "size" : "256x256",
41 "scale" : "2x"
42 },
43 {
44 "idiom" : "mac",
45 "size" : "512x512",
46 "scale" : "1x"
47 },
48 {
49 "idiom" : "mac",
50 "size" : "512x512",
51 "scale" : "2x"
52 }
53 ],
54 "info" : {
55 "version" : 1,
56 "author" : "xcode"
57 }
58 }
0 {
1 "info" : {
2 "version" : 1,
3 "author" : "xcode"
4 }
5 }
0 {
1 "info" : {
2 "version" : 1,
3 "author" : "xcode"
4 },
5 "data" : [
6 {
7 "idiom" : "universal",
8 "filename" : "charset40.bmp"
9 }
10 ]
11 }
0 {
1 "info" : {
2 "version" : 1,
3 "author" : "xcode"
4 },
5 "data" : [
6 {
7 "idiom" : "universal",
8 "filename" : "font.bmp"
9 }
10 ]
11 }
0 {
1 "info" : {
2 "version" : 1,
3 "author" : "xcode"
4 },
5 "data" : [
6 {
7 "idiom" : "universal",
8 "filename" : "icon.bmp"
9 }
10 ]
11 }
0 {
1 "info" : {
2 "version" : 1,
3 "author" : "xcode"
4 },
5 "data" : [
6 {
7 "idiom" : "universal",
8 "filename" : "splash.bmp"
9 }
10 ]
11 }
0 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
1 <document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="9531" systemVersion="15C50" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
2 <dependencies>
3 <deployment identifier="macosx"/>
4 <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="9531"/>
5 </dependencies>
6 <objects>
7 <customObject id="-2" userLabel="File's Owner" customClass="NSApplication">
8 <connections>
9 <outlet property="delegate" destination="Voe-Tx-rLC" id="GzC-gU-4Uq"/>
10 </connections>
11 </customObject>
12 <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
13 <customObject id="-3" userLabel="Application" customClass="NSObject"/>
14 <customObject id="Voe-Tx-rLC" customClass="AppDelegate">
15 <connections>
16 <outlet property="window" destination="QvC-M9-y7g" id="gIp-Ho-8D9"/>
17 </connections>
18 </customObject>
19 <customObject id="YLy-65-1bz" customClass="NSFontManager"/>
20 <menu title="Main Menu" systemMenu="main" id="AYu-sK-qS6">
21 <items>
22 <menuItem title="LinOSXApple" id="1Xt-HY-uBw">
23 <modifierMask key="keyEquivalentModifierMask"/>
24 <menu key="submenu" title="LinOSXApple" systemMenu="apple" id="uQy-DD-JDr">
25 <items>
26 <menuItem title="About LinOSXApple" id="5kV-Vb-QxS">
27 <modifierMask key="keyEquivalentModifierMask"/>
28 <connections>
29 <action selector="orderFrontStandardAboutPanel:" target="-1" id="Exp-CZ-Vem"/>
30 </connections>
31 </menuItem>
32 <menuItem isSeparatorItem="YES" id="VOq-y0-SEH"/>
33 <menuItem title="Preferences…" keyEquivalent="," id="BOF-NM-1cW"/>
34 <menuItem isSeparatorItem="YES" id="wFC-TO-SCJ"/>
35 <menuItem title="Services" id="NMo-om-nkz">
36 <modifierMask key="keyEquivalentModifierMask"/>
37 <menu key="submenu" title="Services" systemMenu="services" id="hz9-B4-Xy5"/>
38 </menuItem>
39 <menuItem isSeparatorItem="YES" id="4je-JR-u6R"/>
40 <menuItem title="Hide LinOSXApple" keyEquivalent="h" id="Olw-nP-bQN">
41 <connections>
42 <action selector="hide:" target="-1" id="PnN-Uc-m68"/>
43 </connections>
44 </menuItem>
45 <menuItem title="Hide Others" keyEquivalent="h" id="Vdr-fp-XzO">
46 <modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
47 <connections>
48 <action selector="hideOtherApplications:" target="-1" id="VT4-aY-XCT"/>
49 </connections>
50 </menuItem>
51 <menuItem title="Show All" id="Kd2-mp-pUS">
52 <modifierMask key="keyEquivalentModifierMask"/>
53 <connections>
54 <action selector="unhideAllApplications:" target="-1" id="Dhg-Le-xox"/>
55 </connections>
56 </menuItem>
57 <menuItem isSeparatorItem="YES" id="kCx-OE-vgT"/>
58 <menuItem title="Quit LinOSXApple" keyEquivalent="q" id="4sb-4s-VLi">
59 <connections>
60 <action selector="terminate:" target="-1" id="Te7-pn-YzF"/>
61 </connections>
62 </menuItem>
63 </items>
64 </menu>
65 </menuItem>
66 <menuItem title="File" id="dMs-cI-mzQ">
67 <modifierMask key="keyEquivalentModifierMask"/>
68 <menu key="submenu" title="File" id="bib-Uj-vzu">
69 <items>
70 <menuItem title="New" keyEquivalent="n" id="Was-JA-tGl">
71 <connections>
72 <action selector="newDocument:" target="-1" id="4Si-XN-c54"/>
73 </connections>
74 </menuItem>
75 <menuItem title="Open…" keyEquivalent="o" id="IAo-SY-fd9">
76 <connections>
77 <action selector="openDocument:" target="-1" id="bVn-NM-KNZ"/>
78 </connections>
79 </menuItem>
80 <menuItem title="Open Recent" id="tXI-mr-wws">
81 <modifierMask key="keyEquivalentModifierMask"/>
82 <menu key="submenu" title="Open Recent" systemMenu="recentDocuments" id="oas-Oc-fiZ">
83 <items>
84 <menuItem title="Clear Menu" id="vNY-rz-j42">
85 <modifierMask key="keyEquivalentModifierMask"/>
86 <connections>
87 <action selector="clearRecentDocuments:" target="-1" id="Daa-9d-B3U"/>
88 </connections>
89 </menuItem>
90 </items>
91 </menu>
92 </menuItem>
93 <menuItem isSeparatorItem="YES" id="m54-Is-iLE"/>
94 <menuItem title="Close" keyEquivalent="w" id="DVo-aG-piG">
95 <connections>
96 <action selector="performClose:" target="-1" id="HmO-Ls-i7Q"/>
97 </connections>
98 </menuItem>
99 <menuItem title="Save…" keyEquivalent="s" id="pxx-59-PXV">
100 <connections>
101 <action selector="saveDocument:" target="-1" id="teZ-XB-qJY"/>
102 </connections>
103 </menuItem>
104 <menuItem title="Save As…" keyEquivalent="S" id="Bw7-FT-i3A">
105 <connections>
106 <action selector="saveDocumentAs:" target="-1" id="mDf-zr-I0C"/>
107 </connections>
108 </menuItem>
109 <menuItem title="Revert to Saved" id="KaW-ft-85H">
110 <modifierMask key="keyEquivalentModifierMask"/>
111 <connections>
112 <action selector="revertDocumentToSaved:" target="-1" id="iJ3-Pv-kwq"/>
113 </connections>
114 </menuItem>
115 <menuItem isSeparatorItem="YES" id="aJh-i4-bef"/>
116 <menuItem title="Page Setup…" keyEquivalent="P" id="qIS-W8-SiK">
117 <modifierMask key="keyEquivalentModifierMask" shift="YES" command="YES"/>
118 <connections>
119 <action selector="runPageLayout:" target="-1" id="Din-rz-gC5"/>
120 </connections>
121 </menuItem>
122 <menuItem title="Print…" keyEquivalent="p" id="aTl-1u-JFS">
123 <connections>
124 <action selector="print:" target="-1" id="qaZ-4w-aoO"/>
125 </connections>
126 </menuItem>
127 </items>
128 </menu>
129 </menuItem>
130 <menuItem title="Edit" id="5QF-Oa-p0T">
131 <modifierMask key="keyEquivalentModifierMask"/>
132 <menu key="submenu" title="Edit" id="W48-6f-4Dl">
133 <items>
134 <menuItem title="Undo" keyEquivalent="z" id="dRJ-4n-Yzg">
135 <connections>
136 <action selector="undo:" target="-1" id="M6e-cu-g7V"/>
137 </connections>
138 </menuItem>
139 <menuItem title="Redo" keyEquivalent="Z" id="6dh-zS-Vam">
140 <connections>
141 <action selector="redo:" target="-1" id="oIA-Rs-6OD"/>
142 </connections>
143 </menuItem>
144 <menuItem isSeparatorItem="YES" id="WRV-NI-Exz"/>
145 <menuItem title="Cut" keyEquivalent="x" id="uRl-iY-unG">
146 <connections>
147 <action selector="cut:" target="-1" id="YJe-68-I9s"/>
148 </connections>
149 </menuItem>
150 <menuItem title="Copy" keyEquivalent="c" id="x3v-GG-iWU">
151 <connections>
152 <action selector="copy:" target="-1" id="G1f-GL-Joy"/>
153 </connections>
154 </menuItem>
155 <menuItem title="Paste" keyEquivalent="v" id="gVA-U4-sdL">
156 <connections>
157 <action selector="paste:" target="-1" id="UvS-8e-Qdg"/>
158 </connections>
159 </menuItem>
160 <menuItem title="Paste and Match Style" keyEquivalent="V" id="WeT-3V-zwk">
161 <modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
162 <connections>
163 <action selector="pasteAsPlainText:" target="-1" id="cEh-KX-wJQ"/>
164 </connections>
165 </menuItem>
166 <menuItem title="Delete" id="pa3-QI-u2k">
167 <modifierMask key="keyEquivalentModifierMask"/>
168 <connections>
169 <action selector="delete:" target="-1" id="0Mk-Ml-PaM"/>
170 </connections>
171 </menuItem>
172 <menuItem title="Select All" keyEquivalent="a" id="Ruw-6m-B2m">
173 <connections>
174 <action selector="selectAll:" target="-1" id="VNm-Mi-diN"/>
175 </connections>
176 </menuItem>
177 <menuItem isSeparatorItem="YES" id="uyl-h8-XO2"/>
178 <menuItem title="Find" id="4EN-yA-p0u">
179 <modifierMask key="keyEquivalentModifierMask"/>
180 <menu key="submenu" title="Find" id="1b7-l0-nxx">
181 <items>
182 <menuItem title="Find…" tag="1" keyEquivalent="f" id="Xz5-n4-O0W">
183 <connections>
184 <action selector="performFindPanelAction:" target="-1" id="cD7-Qs-BN4"/>
185 </connections>
186 </menuItem>
187 <menuItem title="Find and Replace…" tag="12" keyEquivalent="f" id="YEy-JH-Tfz">
188 <modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
189 <connections>
190 <action selector="performFindPanelAction:" target="-1" id="WD3-Gg-5AJ"/>
191 </connections>
192 </menuItem>
193 <menuItem title="Find Next" tag="2" keyEquivalent="g" id="q09-fT-Sye">
194 <connections>
195 <action selector="performFindPanelAction:" target="-1" id="NDo-RZ-v9R"/>
196 </connections>
197 </menuItem>
198 <menuItem title="Find Previous" tag="3" keyEquivalent="G" id="OwM-mh-QMV">
199 <connections>
200 <action selector="performFindPanelAction:" target="-1" id="HOh-sY-3ay"/>
201 </connections>
202 </menuItem>
203 <menuItem title="Use Selection for Find" tag="7" keyEquivalent="e" id="buJ-ug-pKt">
204 <connections>
205 <action selector="performFindPanelAction:" target="-1" id="U76-nv-p5D"/>
206 </connections>
207 </menuItem>
208 <menuItem title="Jump to Selection" keyEquivalent="j" id="S0p-oC-mLd">
209 <connections>
210 <action selector="centerSelectionInVisibleArea:" target="-1" id="IOG-6D-g5B"/>
211 </connections>
212 </menuItem>
213 </items>
214 </menu>
215 </menuItem>
216 <menuItem title="Spelling and Grammar" id="Dv1-io-Yv7">
217 <modifierMask key="keyEquivalentModifierMask"/>
218 <menu key="submenu" title="Spelling" id="3IN-sU-3Bg">
219 <items>
220 <menuItem title="Show Spelling and Grammar" keyEquivalent=":" id="HFo-cy-zxI">
221 <connections>
222 <action selector="showGuessPanel:" target="-1" id="vFj-Ks-hy3"/>
223 </connections>
224 </menuItem>
225 <menuItem title="Check Document Now" keyEquivalent=";" id="hz2-CU-CR7">
226 <connections>
227 <action selector="checkSpelling:" target="-1" id="fz7-VC-reM"/>
228 </connections>
229 </menuItem>
230 <menuItem isSeparatorItem="YES" id="bNw-od-mp5"/>
231 <menuItem title="Check Spelling While Typing" id="rbD-Rh-wIN">
232 <modifierMask key="keyEquivalentModifierMask"/>
233 <connections>
234 <action selector="toggleContinuousSpellChecking:" target="-1" id="7w6-Qz-0kB"/>
235 </connections>
236 </menuItem>
237 <menuItem title="Check Grammar With Spelling" id="mK6-2p-4JG">
238 <modifierMask key="keyEquivalentModifierMask"/>
239 <connections>
240 <action selector="toggleGrammarChecking:" target="-1" id="muD-Qn-j4w"/>
241 </connections>
242 </menuItem>
243 <menuItem title="Correct Spelling Automatically" id="78Y-hA-62v">
244 <modifierMask key="keyEquivalentModifierMask"/>
245 <connections>
246 <action selector="toggleAutomaticSpellingCorrection:" target="-1" id="2lM-Qi-WAP"/>
247 </connections>
248 </menuItem>
249 </items>
250 </menu>
251 </menuItem>
252 <menuItem title="Substitutions" id="9ic-FL-obx">
253 <modifierMask key="keyEquivalentModifierMask"/>
254 <menu key="submenu" title="Substitutions" id="FeM-D8-WVr">
255 <items>
256 <menuItem title="Show Substitutions" id="z6F-FW-3nz">
257 <modifierMask key="keyEquivalentModifierMask"/>
258 <connections>
259 <action selector="orderFrontSubstitutionsPanel:" target="-1" id="oku-mr-iSq"/>
260 </connections>
261 </menuItem>
262 <menuItem isSeparatorItem="YES" id="gPx-C9-uUO"/>
263 <menuItem title="Smart Copy/Paste" id="9yt-4B-nSM">
264 <modifierMask key="keyEquivalentModifierMask"/>
265 <connections>
266 <action selector="toggleSmartInsertDelete:" target="-1" id="3IJ-Se-DZD"/>
267 </connections>
268 </menuItem>
269 <menuItem title="Smart Quotes" id="hQb-2v-fYv">
270 <modifierMask key="keyEquivalentModifierMask"/>
271 <connections>
272 <action selector="toggleAutomaticQuoteSubstitution:" target="-1" id="ptq-xd-QOA"/>
273 </connections>
274 </menuItem>
275 <menuItem title="Smart Dashes" id="rgM-f4-ycn">
276 <modifierMask key="keyEquivalentModifierMask"/>
277 <connections>
278 <action selector="toggleAutomaticDashSubstitution:" target="-1" id="oCt-pO-9gS"/>
279 </connections>
280 </menuItem>
281 <menuItem title="Smart Links" id="cwL-P1-jid">
282 <modifierMask key="keyEquivalentModifierMask"/>
283 <connections>
284 <action selector="toggleAutomaticLinkDetection:" target="-1" id="Gip-E3-Fov"/>
285 </connections>
286 </menuItem>
287 <menuItem title="Data Detectors" id="tRr-pd-1PS">
288 <modifierMask key="keyEquivalentModifierMask"/>
289 <connections>
290 <action selector="toggleAutomaticDataDetection:" target="-1" id="R1I-Nq-Kbl"/>
291 </connections>
292 </menuItem>
293 <menuItem title="Text Replacement" id="HFQ-gK-NFA">
294 <modifierMask key="keyEquivalentModifierMask"/>
295 <connections>
296 <action selector="toggleAutomaticTextReplacement:" target="-1" id="DvP-Fe-Py6"/>
297 </connections>
298 </menuItem>
299 </items>
300 </menu>
301 </menuItem>
302 <menuItem title="Transformations" id="2oI-Rn-ZJC">
303 <modifierMask key="keyEquivalentModifierMask"/>
304 <menu key="submenu" title="Transformations" id="c8a-y6-VQd">
305 <items>
306 <menuItem title="Make Upper Case" id="vmV-6d-7jI">
307 <modifierMask key="keyEquivalentModifierMask"/>
308 <connections>
309 <action selector="uppercaseWord:" target="-1" id="sPh-Tk-edu"/>
310 </connections>
311 </menuItem>
312 <menuItem title="Make Lower Case" id="d9M-CD-aMd">
313 <modifierMask key="keyEquivalentModifierMask"/>
314 <connections>
315 <action selector="lowercaseWord:" target="-1" id="iUZ-b5-hil"/>
316 </connections>
317 </menuItem>
318 <menuItem title="Capitalize" id="UEZ-Bs-lqG">
319 <modifierMask key="keyEquivalentModifierMask"/>
320 <connections>
321 <action selector="capitalizeWord:" target="-1" id="26H-TL-nsh"/>
322 </connections>
323 </menuItem>
324 </items>
325 </menu>
326 </menuItem>
327 <menuItem title="Speech" id="xrE-MZ-jX0">
328 <modifierMask key="keyEquivalentModifierMask"/>
329 <menu key="submenu" title="Speech" id="3rS-ZA-NoH">
330 <items>
331 <menuItem title="Start Speaking" id="Ynk-f8-cLZ">
332 <modifierMask key="keyEquivalentModifierMask"/>
333 <connections>
334 <action selector="startSpeaking:" target="-1" id="654-Ng-kyl"/>
335 </connections>
336 </menuItem>
337 <menuItem title="Stop Speaking" id="Oyz-dy-DGm">
338 <modifierMask key="keyEquivalentModifierMask"/>
339 <connections>
340 <action selector="stopSpeaking:" target="-1" id="dX8-6p-jy9"/>
341 </connections>
342 </menuItem>
343 </items>
344 </menu>
345 </menuItem>
346 </items>
347 </menu>
348 </menuItem>
349 <menuItem title="Format" id="jxT-CU-nIS">
350 <modifierMask key="keyEquivalentModifierMask"/>
351 <menu key="submenu" title="Format" id="GEO-Iw-cKr">
352 <items>
353 <menuItem title="Font" id="Gi5-1S-RQB">
354 <modifierMask key="keyEquivalentModifierMask"/>
355 <menu key="submenu" title="Font" systemMenu="font" id="aXa-aM-Jaq">
356 <items>
357 <menuItem title="Show Fonts" keyEquivalent="t" id="Q5e-8K-NDq">
358 <connections>
359 <action selector="orderFrontFontPanel:" target="YLy-65-1bz" id="WHr-nq-2xA"/>
360 </connections>
361 </menuItem>
362 <menuItem title="Bold" tag="2" keyEquivalent="b" id="GB9-OM-e27">
363 <connections>
364 <action selector="addFontTrait:" target="YLy-65-1bz" id="hqk-hr-sYV"/>
365 </connections>
366 </menuItem>
367 <menuItem title="Italic" tag="1" keyEquivalent="i" id="Vjx-xi-njq">
368 <connections>
369 <action selector="addFontTrait:" target="YLy-65-1bz" id="IHV-OB-c03"/>
370 </connections>
371 </menuItem>
372 <menuItem title="Underline" keyEquivalent="u" id="WRG-CD-K1S">
373 <connections>
374 <action selector="underline:" target="-1" id="FYS-2b-JAY"/>
375 </connections>
376 </menuItem>
377 <menuItem isSeparatorItem="YES" id="5gT-KC-WSO"/>
378 <menuItem title="Bigger" tag="3" keyEquivalent="+" id="Ptp-SP-VEL">
379 <connections>
380 <action selector="modifyFont:" target="YLy-65-1bz" id="Uc7-di-UnL"/>
381 </connections>
382 </menuItem>
383 <menuItem title="Smaller" tag="4" keyEquivalent="-" id="i1d-Er-qST">
384 <connections>
385 <action selector="modifyFont:" target="YLy-65-1bz" id="HcX-Lf-eNd"/>
386 </connections>
387 </menuItem>
388 <menuItem isSeparatorItem="YES" id="kx3-Dk-x3B"/>
389 <menuItem title="Kern" id="jBQ-r6-VK2">
390 <modifierMask key="keyEquivalentModifierMask"/>
391 <menu key="submenu" title="Kern" id="tlD-Oa-oAM">
392 <items>
393 <menuItem title="Use Default" id="GUa-eO-cwY">
394 <modifierMask key="keyEquivalentModifierMask"/>
395 <connections>
396 <action selector="useStandardKerning:" target="-1" id="6dk-9l-Ckg"/>
397 </connections>
398 </menuItem>
399 <menuItem title="Use None" id="cDB-IK-hbR">
400 <modifierMask key="keyEquivalentModifierMask"/>
401 <connections>
402 <action selector="turnOffKerning:" target="-1" id="U8a-gz-Maa"/>
403 </connections>
404 </menuItem>
405 <menuItem title="Tighten" id="46P-cB-AYj">
406 <modifierMask key="keyEquivalentModifierMask"/>
407 <connections>
408 <action selector="tightenKerning:" target="-1" id="hr7-Nz-8ro"/>
409 </connections>
410 </menuItem>
411 <menuItem title="Loosen" id="ogc-rX-tC1">
412 <modifierMask key="keyEquivalentModifierMask"/>
413 <connections>
414 <action selector="loosenKerning:" target="-1" id="8i4-f9-FKE"/>
415 </connections>
416 </menuItem>
417 </items>
418 </menu>
419 </menuItem>
420 <menuItem title="Ligatures" id="o6e-r0-MWq">
421 <modifierMask key="keyEquivalentModifierMask"/>
422 <menu key="submenu" title="Ligatures" id="w0m-vy-SC9">
423 <items>
424 <menuItem title="Use Default" id="agt-UL-0e3">
425 <modifierMask key="keyEquivalentModifierMask"/>
426 <connections>
427 <action selector="useStandardLigatures:" target="-1" id="7uR-wd-Dx6"/>
428 </connections>
429 </menuItem>
430 <menuItem title="Use None" id="J7y-lM-qPV">
431 <modifierMask key="keyEquivalentModifierMask"/>
432 <connections>
433 <action selector="turnOffLigatures:" target="-1" id="iX2-gA-Ilz"/>
434 </connections>
435 </menuItem>
436 <menuItem title="Use All" id="xQD-1f-W4t">
437 <modifierMask key="keyEquivalentModifierMask"/>
438 <connections>
439 <action selector="useAllLigatures:" target="-1" id="KcB-kA-TuK"/>
440 </connections>
441 </menuItem>
442 </items>
443 </menu>
444 </menuItem>
445 <menuItem title="Baseline" id="OaQ-X3-Vso">
446 <modifierMask key="keyEquivalentModifierMask"/>
447 <menu key="submenu" title="Baseline" id="ijk-EB-dga">
448 <items>
449 <menuItem title="Use Default" id="3Om-Ey-2VK">
450 <modifierMask key="keyEquivalentModifierMask"/>
451 <connections>
452 <action selector="unscript:" target="-1" id="0vZ-95-Ywn"/>
453 </connections>
454 </menuItem>
455 <menuItem title="Superscript" id="Rqc-34-cIF">
456 <modifierMask key="keyEquivalentModifierMask"/>
457 <connections>
458 <action selector="superscript:" target="-1" id="3qV-fo-wpU"/>
459 </connections>
460 </menuItem>
461 <menuItem title="Subscript" id="I0S-gh-46l">
462 <modifierMask key="keyEquivalentModifierMask"/>
463 <connections>
464 <action selector="subscript:" target="-1" id="Q6W-4W-IGz"/>
465 </connections>
466 </menuItem>
467 <menuItem title="Raise" id="2h7-ER-AoG">
468 <modifierMask key="keyEquivalentModifierMask"/>
469 <connections>
470 <action selector="raiseBaseline:" target="-1" id="4sk-31-7Q9"/>
471 </connections>
472 </menuItem>
473 <menuItem title="Lower" id="1tx-W0-xDw">
474 <modifierMask key="keyEquivalentModifierMask"/>
475 <connections>
476 <action selector="lowerBaseline:" target="-1" id="OF1-bc-KW4"/>
477 </connections>
478 </menuItem>
479 </items>
480 </menu>
481 </menuItem>
482 <menuItem isSeparatorItem="YES" id="Ndw-q3-faq"/>
483 <menuItem title="Show Colors" keyEquivalent="C" id="bgn-CT-cEk">
484 <connections>
485 <action selector="orderFrontColorPanel:" target="-1" id="mSX-Xz-DV3"/>
486 </connections>
487 </menuItem>
488 <menuItem isSeparatorItem="YES" id="iMs-zA-UFJ"/>
489 <menuItem title="Copy Style" keyEquivalent="c" id="5Vv-lz-BsD">
490 <modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
491 <connections>
492 <action selector="copyFont:" target="-1" id="GJO-xA-L4q"/>
493 </connections>
494 </menuItem>
495 <menuItem title="Paste Style" keyEquivalent="v" id="vKC-jM-MkH">
496 <modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
497 <connections>
498 <action selector="pasteFont:" target="-1" id="JfD-CL-leO"/>
499 </connections>
500 </menuItem>
501 </items>
502 </menu>
503 </menuItem>
504 <menuItem title="Text" id="Fal-I4-PZk">
505 <modifierMask key="keyEquivalentModifierMask"/>
506 <menu key="submenu" title="Text" id="d9c-me-L2H">
507 <items>
508 <menuItem title="Align Left" keyEquivalent="{" id="ZM1-6Q-yy1">
509 <connections>
510 <action selector="alignLeft:" target="-1" id="zUv-R1-uAa"/>
511 </connections>
512 </menuItem>
513 <menuItem title="Center" keyEquivalent="|" id="VIY-Ag-zcb">
514 <connections>
515 <action selector="alignCenter:" target="-1" id="spX-mk-kcS"/>
516 </connections>
517 </menuItem>
518 <menuItem title="Justify" id="J5U-5w-g23">
519 <modifierMask key="keyEquivalentModifierMask"/>
520 <connections>
521 <action selector="alignJustified:" target="-1" id="ljL-7U-jND"/>
522 </connections>
523 </menuItem>
524 <menuItem title="Align Right" keyEquivalent="}" id="wb2-vD-lq4">
525 <connections>
526 <action selector="alignRight:" target="-1" id="r48-bG-YeY"/>
527 </connections>
528 </menuItem>
529 <menuItem isSeparatorItem="YES" id="4s2-GY-VfK"/>
530 <menuItem title="Writing Direction" id="H1b-Si-o9J">
531 <modifierMask key="keyEquivalentModifierMask"/>
532 <menu key="submenu" title="Writing Direction" id="8mr-sm-Yjd">
533 <items>
534 <menuItem title="Paragraph" enabled="NO" id="ZvO-Gk-QUH">
535 <modifierMask key="keyEquivalentModifierMask"/>
536 </menuItem>
537 <menuItem id="YGs-j5-SAR">
538 <string key="title"> Default</string>
539 <modifierMask key="keyEquivalentModifierMask"/>
540 <connections>
541 <action selector="makeBaseWritingDirectionNatural:" target="-1" id="qtV-5e-UBP"/>
542 </connections>
543 </menuItem>
544 <menuItem id="Lbh-J2-qVU">
545 <string key="title"> Left to Right</string>
546 <modifierMask key="keyEquivalentModifierMask"/>
547 <connections>
548 <action selector="makeBaseWritingDirectionLeftToRight:" target="-1" id="S0X-9S-QSf"/>
549 </connections>
550 </menuItem>
551 <menuItem id="jFq-tB-4Kx">
552 <string key="title"> Right to Left</string>
553 <modifierMask key="keyEquivalentModifierMask"/>
554 <connections>
555 <action selector="makeBaseWritingDirectionRightToLeft:" target="-1" id="5fk-qB-AqJ"/>
556 </connections>
557 </menuItem>
558 <menuItem isSeparatorItem="YES" id="swp-gr-a21"/>
559 <menuItem title="Selection" enabled="NO" id="cqv-fj-IhA">
560 <modifierMask key="keyEquivalentModifierMask"/>
561 </menuItem>
562 <menuItem id="Nop-cj-93Q">
563 <string key="title"> Default</string>
564 <modifierMask key="keyEquivalentModifierMask"/>
565 <connections>
566 <action selector="makeTextWritingDirectionNatural:" target="-1" id="lPI-Se-ZHp"/>
567 </connections>
568 </menuItem>
569 <menuItem id="BgM-ve-c93">
570 <string key="title"> Left to Right</string>
571 <modifierMask key="keyEquivalentModifierMask"/>
572 <connections>
573 <action selector="makeTextWritingDirectionLeftToRight:" target="-1" id="caW-Bv-w94"/>
574 </connections>
575 </menuItem>
576 <menuItem id="RB4-Sm-HuC">
577 <string key="title"> Right to Left</string>
578 <modifierMask key="keyEquivalentModifierMask"/>
579 <connections>
580 <action selector="makeTextWritingDirectionRightToLeft:" target="-1" id="EXD-6r-ZUu"/>
581 </connections>
582 </menuItem>
583 </items>
584 </menu>
585 </menuItem>
586 <menuItem isSeparatorItem="YES" id="fKy-g9-1gm"/>
587 <menuItem title="Show Ruler" id="vLm-3I-IUL">
588 <modifierMask key="keyEquivalentModifierMask"/>
589 <connections>
590 <action selector="toggleRuler:" target="-1" id="FOx-HJ-KwY"/>
591 </connections>
592 </menuItem>
593 <menuItem title="Copy Ruler" keyEquivalent="c" id="MkV-Pr-PK5">
594 <modifierMask key="keyEquivalentModifierMask" control="YES" command="YES"/>
595 <connections>
596 <action selector="copyRuler:" target="-1" id="71i-fW-3W2"/>
597 </connections>
598 </menuItem>
599 <menuItem title="Paste Ruler" keyEquivalent="v" id="LVM-kO-fVI">
600 <modifierMask key="keyEquivalentModifierMask" control="YES" command="YES"/>
601 <connections>
602 <action selector="pasteRuler:" target="-1" id="cSh-wd-qM2"/>
603 </connections>
604 </menuItem>
605 </items>
606 </menu>
607 </menuItem>
608 </items>
609 </menu>
610 </menuItem>
611 <menuItem title="View" id="H8h-7b-M4v">
612 <modifierMask key="keyEquivalentModifierMask"/>
613 <menu key="submenu" title="View" id="HyV-fh-RgO">
614 <items>
615 <menuItem title="Show Toolbar" keyEquivalent="t" id="snW-S8-Cw5">
616 <modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
617 <connections>
618 <action selector="toggleToolbarShown:" target="-1" id="BXY-wc-z0C"/>
619 </connections>
620 </menuItem>
621 <menuItem title="Customize Toolbar…" id="1UK-8n-QPP">
622 <modifierMask key="keyEquivalentModifierMask"/>
623 <connections>
624 <action selector="runToolbarCustomizationPalette:" target="-1" id="pQI-g3-MTW"/>
625 </connections>
626 </menuItem>
627 </items>
628 </menu>
629 </menuItem>
630 <menuItem title="Window" id="aUF-d1-5bR">
631 <modifierMask key="keyEquivalentModifierMask"/>
632 <menu key="submenu" title="Window" systemMenu="window" id="Td7-aD-5lo">
633 <items>
634 <menuItem title="Minimize" keyEquivalent="m" id="OY7-WF-poV">
635 <connections>
636 <action selector="performMiniaturize:" target="-1" id="VwT-WD-YPe"/>
637 </connections>
638 </menuItem>
639 <menuItem title="Zoom" id="R4o-n2-Eq4">
640 <modifierMask key="keyEquivalentModifierMask"/>
641 <connections>
642 <action selector="performZoom:" target="-1" id="DIl-cC-cCs"/>
643 </connections>
644 </menuItem>
645 <menuItem isSeparatorItem="YES" id="eu3-7i-yIM"/>
646 <menuItem title="Bring All to Front" id="LE2-aR-0XJ">
647 <modifierMask key="keyEquivalentModifierMask"/>
648 <connections>
649 <action selector="arrangeInFront:" target="-1" id="DRN-fu-gQh"/>
650 </connections>
651 </menuItem>
652 </items>
653 </menu>
654 </menuItem>
655 <menuItem title="Help" id="wpr-3q-Mcd">
656 <modifierMask key="keyEquivalentModifierMask"/>
657 <menu key="submenu" title="Help" systemMenu="help" id="F2S-fz-NVQ">
658 <items>
659 <menuItem title="LinOSXApple Help" keyEquivalent="?" id="FKE-Sm-Kum">
660 <connections>
661 <action selector="showHelp:" target="-1" id="y7X-2Q-9no"/>
662 </connections>
663 </menuItem>
664 </items>
665 </menu>
666 </menuItem>
667 </items>
668 </menu>
669 <window title="LinOSXApple" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" animationBehavior="default" id="QvC-M9-y7g">
670 <windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES"/>
671 <windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
672 <rect key="contentRect" x="335" y="390" width="480" height="360"/>
673 <rect key="screenRect" x="0.0" y="0.0" width="1280" height="777"/>
674 <view key="contentView" id="EiT-Mj-1SZ">
675 <rect key="frame" x="0.0" y="0.0" width="480" height="360"/>
676 <autoresizingMask key="autoresizingMask"/>
677 </view>
678 </window>
679 </objects>
680 </document>
0 <?xml version="1.0" encoding="UTF-8"?>
1 <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
2 <plist version="1.0">
3 <dict>
4 <key>CFBundleDevelopmentRegion</key>
5 <string>en</string>
6 <key>CFBundleExecutable</key>
7 <string>$(EXECUTABLE_NAME)</string>
8 <key>CFBundleIconFile</key>
9 <string></string>
10 <key>CFBundleIdentifier</key>
11 <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
12 <key>CFBundleInfoDictionaryVersion</key>
13 <string>6.0</string>
14 <key>CFBundleName</key>
15 <string>$(PRODUCT_NAME)</string>
16 <key>CFBundlePackageType</key>
17 <string>APPL</string>
18 <key>CFBundleShortVersionString</key>
19 <string>1.0</string>
20 <key>CFBundleSignature</key>
21 <string>????</string>
22 <key>CFBundleVersion</key>
23 <string>1</string>
24 <key>LSMinimumSystemVersion</key>
25 <string>$(MACOSX_DEPLOYMENT_TARGET)</string>
26 <key>NSHumanReadableCopyright</key>
27 <string>Copyright © 2015 Jerome Vernet. All rights reserved.</string>
28 <key>NSMainNibFile</key>
29 <string>MainMenu</string>
30 <key>NSPrincipalClass</key>
31 <string>NSApplication</string>
32 </dict>
33 </plist>
0 // !$*UTF8*$!
1 {
2 archiveVersion = 1;
3 classes = {
4 };
5 objectVersion = 46;
6 objects = {
7
8 /* Begin PBXBuildFile section */
9 4E4B5B7A1C287E9A0006BCD8 /* AlertHooks.m in Sources */ = {isa = PBXBuildFile; fileRef = 4E4B5B771C287E9A0006BCD8 /* AlertHooks.m */; };
10 4E4B5B7B1C287E9A0006BCD8 /* Shared.m in Sources */ = {isa = PBXBuildFile; fileRef = 4E4B5B791C287E9A0006BCD8 /* Shared.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
11 4EFC6CD51C2717A000CB52C7 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 4EFC6CD41C2717A000CB52C7 /* Assets.xcassets */; };
12 4EFC6CD81C2717A000CB52C7 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4EFC6CD61C2717A000CB52C7 /* MainMenu.xib */; };
13 4EFC6D271C2717E000CB52C7 /* 6821.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4EFC6CE01C2717E000CB52C7 /* 6821.cpp */; };
14 4EFC6D281C2717E000CB52C7 /* Applewin.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4EFC6CE21C2717E000CB52C7 /* Applewin.cpp */; };
15 4EFC6D291C2717E000CB52C7 /* AY8910.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4EFC6CE41C2717E000CB52C7 /* AY8910.cpp */; };
16 4EFC6D2A1C2717E000CB52C7 /* CPU.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4EFC6CE71C2717E000CB52C7 /* CPU.cpp */; };
17 4EFC6D2B1C2717E000CB52C7 /* Debug.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4EFC6CE91C2717E000CB52C7 /* Debug.cpp */; };
18 4EFC6D2C1C2717E000CB52C7 /* Disk.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4EFC6CEC1C2717E000CB52C7 /* Disk.cpp */; };
19 4EFC6D2D1C2717E000CB52C7 /* DiskChoose.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4EFC6CEE1C2717E000CB52C7 /* DiskChoose.cpp */; };
20 4EFC6D2E1C2717E000CB52C7 /* DiskFTP.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4EFC6CF01C2717E000CB52C7 /* DiskFTP.cpp */; };
21 4EFC6D2F1C2717E000CB52C7 /* DiskImage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4EFC6CF21C2717E000CB52C7 /* DiskImage.cpp */; };
22 4EFC6D301C2717E000CB52C7 /* Frame.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4EFC6CF41C2717E000CB52C7 /* Frame.cpp */; };
23 4EFC6D311C2717E000CB52C7 /* ftpparse.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4EFC6CF61C2717E000CB52C7 /* ftpparse.cpp */; };
24 4EFC6D321C2717E000CB52C7 /* Harddisk.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4EFC6CF81C2717E000CB52C7 /* Harddisk.cpp */; };
25 4EFC6D331C2717E000CB52C7 /* Joystick.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4EFC6CFA1C2717E000CB52C7 /* Joystick.cpp */; };
26 4EFC6D341C2717E000CB52C7 /* Keyboard.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4EFC6CFC1C2717E000CB52C7 /* Keyboard.cpp */; };
27 4EFC6D351C2717E000CB52C7 /* Log.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4EFC6CFF1C2717E000CB52C7 /* Log.cpp */; };
28 4EFC6D371C2717E000CB52C7 /* Memory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4EFC6D021C2717E000CB52C7 /* Memory.cpp */; };
29 4EFC6D381C2717E000CB52C7 /* Mockingboard.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4EFC6D041C2717E000CB52C7 /* Mockingboard.cpp */; };
30 4EFC6D391C2717E000CB52C7 /* MouseInterface.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4EFC6D061C2717E000CB52C7 /* MouseInterface.cpp */; };
31 4EFC6D3A1C2717E000CB52C7 /* ParallelPrinter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4EFC6D081C2717E000CB52C7 /* ParallelPrinter.cpp */; };
32 4EFC6D3B1C2717E000CB52C7 /* Registry.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4EFC6D0A1C2717E000CB52C7 /* Registry.cpp */; };
33 4EFC6D3C1C2717E000CB52C7 /* Riff.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4EFC6D0D1C2717E000CB52C7 /* Riff.cpp */; };
34 4EFC6D3D1C2717E000CB52C7 /* SaveState.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4EFC6D0F1C2717E000CB52C7 /* SaveState.cpp */; };
35 4EFC6D3E1C2717E000CB52C7 /* SDLMain.m in Sources */ = {isa = PBXBuildFile; fileRef = 4EFC6D121C2717E000CB52C7 /* SDLMain.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
36 4EFC6D3F1C2717E000CB52C7 /* SerialComms.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4EFC6D131C2717E000CB52C7 /* SerialComms.cpp */; };
37 4EFC6D401C2717E000CB52C7 /* SoundCore.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4EFC6D151C2717E000CB52C7 /* SoundCore.cpp */; };
38 4EFC6D411C2717E000CB52C7 /* Speaker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4EFC6D171C2717E000CB52C7 /* Speaker.cpp */; };
39 4EFC6D421C2717E000CB52C7 /* stretch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4EFC6D1B1C2717E000CB52C7 /* stretch.cpp */; };
40 4EFC6D431C2717E000CB52C7 /* Timer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4EFC6D1E1C2717E000CB52C7 /* Timer.cpp */; };
41 4EFC6D451C2717E000CB52C7 /* Video.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4EFC6D221C2717E000CB52C7 /* Video.cpp */; };
42 4EFC6D461C2717E000CB52C7 /* wwrapper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4EFC6D251C2717E000CB52C7 /* wwrapper.cpp */; };
43 4EFC6D4A1C27182B00CB52C7 /* libcurl.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4EFC6D471C27182B00CB52C7 /* libcurl.framework */; };
44 4EFC6D4B1C27182B00CB52C7 /* libzip Mac.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4EFC6D481C27182B00CB52C7 /* libzip Mac.framework */; };
45 4EFC6D4E1C27184300CB52C7 /* SDL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4EFC6D4D1C27184300CB52C7 /* SDL.framework */; };
46 4EFC6D541C271C1700CB52C7 /* charset40.bmp in Resources */ = {isa = PBXBuildFile; fileRef = 4EFC6D511C271C1700CB52C7 /* charset40.bmp */; };
47 4EFC6D551C271C1700CB52C7 /* font.bmp in Resources */ = {isa = PBXBuildFile; fileRef = 4EFC6D521C271C1700CB52C7 /* font.bmp */; };
48 4EFC6D561C271C1700CB52C7 /* icon.bmp in Resources */ = {isa = PBXBuildFile; fileRef = 4EFC6D531C271C1700CB52C7 /* icon.bmp */; };
49 4EFC6D581C271C2B00CB52C7 /* splash.bmp in Resources */ = {isa = PBXBuildFile; fileRef = 4EFC6D571C271C2B00CB52C7 /* splash.bmp */; };
50 4EFC6D5A1C271CF000CB52C7 /* Master.dsk in Resources */ = {isa = PBXBuildFile; fileRef = 4EFC6D591C271CF000CB52C7 /* Master.dsk */; };
51 /* End PBXBuildFile section */
52
53 /* Begin PBXFileReference section */
54 4E4B5B761C287E9A0006BCD8 /* AlertHooks.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AlertHooks.h; path = "../src/gui-osx/AlertHooks.h"; sourceTree = "<group>"; };
55 4E4B5B771C287E9A0006BCD8 /* AlertHooks.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AlertHooks.m; path = "../src/gui-osx/AlertHooks.m"; sourceTree = "<group>"; };
56 4E4B5B781C287E9A0006BCD8 /* Shared.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Shared.h; path = "../src/gui-osx/Shared.h"; sourceTree = "<group>"; };
57 4E4B5B791C287E9A0006BCD8 /* Shared.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = Shared.m; path = "../src/gui-osx/Shared.m"; sourceTree = "<group>"; };
58 4EFC6CCB1C2717A000CB52C7 /* LinOSXApple.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = LinOSXApple.app; sourceTree = BUILT_PRODUCTS_DIR; };
59 4EFC6CD41C2717A000CB52C7 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
60 4EFC6CD71C2717A000CB52C7 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = "<group>"; };
61 4EFC6CD91C2717A000CB52C7 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
62 4EFC6CE01C2717E000CB52C7 /* 6821.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = 6821.cpp; path = ../src/6821.cpp; sourceTree = "<group>"; };
63 4EFC6CE11C2717E000CB52C7 /* 6821.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = 6821.h; path = ../src/6821.h; sourceTree = "<group>"; };
64 4EFC6CE21C2717E000CB52C7 /* Applewin.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Applewin.cpp; path = ../src/Applewin.cpp; sourceTree = "<group>"; };
65 4EFC6CE31C2717E000CB52C7 /* AppleWin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppleWin.h; path = ../src/AppleWin.h; sourceTree = "<group>"; };
66 4EFC6CE41C2717E000CB52C7 /* AY8910.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = AY8910.cpp; path = ../src/AY8910.cpp; sourceTree = "<group>"; };
67 4EFC6CE51C2717E000CB52C7 /* AY8910.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AY8910.h; path = ../src/AY8910.h; sourceTree = "<group>"; };
68 4EFC6CE61C2717E000CB52C7 /* Common.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Common.h; path = ../src/Common.h; sourceTree = "<group>"; };
69 4EFC6CE71C2717E000CB52C7 /* CPU.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CPU.cpp; path = ../src/CPU.cpp; sourceTree = "<group>"; };
70 4EFC6CE81C2717E000CB52C7 /* CPU.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CPU.h; path = ../src/CPU.h; sourceTree = "<group>"; };
71 4EFC6CE91C2717E000CB52C7 /* Debug.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Debug.cpp; path = ../src/Debug.cpp; sourceTree = "<group>"; };
72 4EFC6CEA1C2717E000CB52C7 /* Debug.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Debug.h; path = ../src/Debug.h; sourceTree = "<group>"; };
73 4EFC6CEB1C2717E000CB52C7 /* Debugger_Types.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Debugger_Types.h; path = ../src/Debugger_Types.h; sourceTree = "<group>"; };
74 4EFC6CEC1C2717E000CB52C7 /* Disk.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Disk.cpp; path = ../src/Disk.cpp; sourceTree = "<group>"; };
75 4EFC6CED1C2717E000CB52C7 /* Disk.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Disk.h; path = ../src/Disk.h; sourceTree = "<group>"; };
76 4EFC6CEE1C2717E000CB52C7 /* DiskChoose.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DiskChoose.cpp; path = ../src/DiskChoose.cpp; sourceTree = "<group>"; };
77 4EFC6CEF1C2717E000CB52C7 /* DiskChoose.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DiskChoose.h; path = ../src/DiskChoose.h; sourceTree = "<group>"; };
78 4EFC6CF01C2717E000CB52C7 /* DiskFTP.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DiskFTP.cpp; path = ../src/DiskFTP.cpp; sourceTree = "<group>"; };
79 4EFC6CF11C2717E000CB52C7 /* DiskFTP.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DiskFTP.h; path = ../src/DiskFTP.h; sourceTree = "<group>"; };
80 4EFC6CF21C2717E000CB52C7 /* DiskImage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DiskImage.cpp; path = ../src/DiskImage.cpp; sourceTree = "<group>"; };
81 4EFC6CF31C2717E000CB52C7 /* DiskImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DiskImage.h; path = ../src/DiskImage.h; sourceTree = "<group>"; };
82 4EFC6CF41C2717E000CB52C7 /* Frame.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Frame.cpp; path = ../src/Frame.cpp; sourceTree = "<group>"; };
83 4EFC6CF51C2717E000CB52C7 /* Frame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Frame.h; path = ../src/Frame.h; sourceTree = "<group>"; };
84 4EFC6CF61C2717E000CB52C7 /* ftpparse.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ftpparse.cpp; path = ../src/ftpparse.cpp; sourceTree = "<group>"; };
85 4EFC6CF71C2717E000CB52C7 /* ftpparse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ftpparse.h; path = ../src/ftpparse.h; sourceTree = "<group>"; };
86 4EFC6CF81C2717E000CB52C7 /* Harddisk.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Harddisk.cpp; path = ../src/Harddisk.cpp; sourceTree = "<group>"; };
87 4EFC6CF91C2717E000CB52C7 /* Harddisk.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Harddisk.h; path = ../src/Harddisk.h; sourceTree = "<group>"; };
88 4EFC6CFA1C2717E000CB52C7 /* Joystick.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Joystick.cpp; path = ../src/Joystick.cpp; sourceTree = "<group>"; };
89 4EFC6CFB1C2717E000CB52C7 /* Joystick.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Joystick.h; path = ../src/Joystick.h; sourceTree = "<group>"; };
90 4EFC6CFC1C2717E000CB52C7 /* Keyboard.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Keyboard.cpp; path = ../src/Keyboard.cpp; sourceTree = "<group>"; };
91 4EFC6CFD1C2717E000CB52C7 /* Keyboard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Keyboard.h; path = ../src/Keyboard.h; sourceTree = "<group>"; };
92 4EFC6CFE1C2717E000CB52C7 /* list.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = list.h; path = ../src/list.h; sourceTree = "<group>"; };
93 4EFC6CFF1C2717E000CB52C7 /* Log.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Log.cpp; path = ../src/Log.cpp; sourceTree = "<group>"; };
94 4EFC6D001C2717E000CB52C7 /* Log.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Log.h; path = ../src/Log.h; sourceTree = "<group>"; };
95 4EFC6D021C2717E000CB52C7 /* Memory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Memory.cpp; path = ../src/Memory.cpp; sourceTree = "<group>"; };
96 4EFC6D031C2717E000CB52C7 /* Memory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Memory.h; path = ../src/Memory.h; sourceTree = "<group>"; };
97 4EFC6D041C2717E000CB52C7 /* Mockingboard.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Mockingboard.cpp; path = ../src/Mockingboard.cpp; sourceTree = "<group>"; };
98 4EFC6D051C2717E000CB52C7 /* Mockingboard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Mockingboard.h; path = ../src/Mockingboard.h; sourceTree = "<group>"; };
99 4EFC6D061C2717E000CB52C7 /* MouseInterface.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MouseInterface.cpp; path = ../src/MouseInterface.cpp; sourceTree = "<group>"; };
100 4EFC6D071C2717E000CB52C7 /* MouseInterface.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MouseInterface.h; path = ../src/MouseInterface.h; sourceTree = "<group>"; };
101 4EFC6D081C2717E000CB52C7 /* ParallelPrinter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ParallelPrinter.cpp; path = ../src/ParallelPrinter.cpp; sourceTree = "<group>"; };
102 4EFC6D091C2717E000CB52C7 /* ParallelPrinter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ParallelPrinter.h; path = ../src/ParallelPrinter.h; sourceTree = "<group>"; };
103 4EFC6D0A1C2717E000CB52C7 /* Registry.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Registry.cpp; path = ../src/Registry.cpp; sourceTree = "<group>"; };
104 4EFC6D0B1C2717E000CB52C7 /* Registry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Registry.h; path = ../src/Registry.h; sourceTree = "<group>"; };
105 4EFC6D0C1C2717E000CB52C7 /* resource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = resource.h; path = ../src/resource.h; sourceTree = "<group>"; };
106 4EFC6D0D1C2717E000CB52C7 /* Riff.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Riff.cpp; path = ../src/Riff.cpp; sourceTree = "<group>"; };
107 4EFC6D0E1C2717E000CB52C7 /* Riff.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Riff.h; path = ../src/Riff.h; sourceTree = "<group>"; };
108 4EFC6D0F1C2717E000CB52C7 /* SaveState.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SaveState.cpp; path = ../src/SaveState.cpp; sourceTree = "<group>"; };
109 4EFC6D101C2717E000CB52C7 /* SaveState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SaveState.h; path = ../src/SaveState.h; sourceTree = "<group>"; };
110 4EFC6D111C2717E000CB52C7 /* SDLMain.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLMain.h; path = ../src/SDLMain.h; sourceTree = "<group>"; };
111 4EFC6D121C2717E000CB52C7 /* SDLMain.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLMain.m; path = ../src/SDLMain.m; sourceTree = "<group>"; };
112 4EFC6D131C2717E000CB52C7 /* SerialComms.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SerialComms.cpp; path = ../src/SerialComms.cpp; sourceTree = "<group>"; };
113 4EFC6D141C2717E000CB52C7 /* SerialComms.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SerialComms.h; path = ../src/SerialComms.h; sourceTree = "<group>"; };
114 4EFC6D151C2717E000CB52C7 /* SoundCore.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SoundCore.cpp; path = ../src/SoundCore.cpp; sourceTree = "<group>"; };
115 4EFC6D161C2717E000CB52C7 /* SoundCore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SoundCore.h; path = ../src/SoundCore.h; sourceTree = "<group>"; };
116 4EFC6D171C2717E000CB52C7 /* Speaker.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Speaker.cpp; path = ../src/Speaker.cpp; sourceTree = "<group>"; };
117 4EFC6D181C2717E000CB52C7 /* Speaker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Speaker.h; path = ../src/Speaker.h; sourceTree = "<group>"; };
118 4EFC6D191C2717E000CB52C7 /* SSI263Phonemes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SSI263Phonemes.h; path = ../src/SSI263Phonemes.h; sourceTree = "<group>"; };
119 4EFC6D1A1C2717E000CB52C7 /* stdafx.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = stdafx.h; path = ../src/stdafx.h; sourceTree = "<group>"; };
120 4EFC6D1B1C2717E000CB52C7 /* stretch.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = stretch.cpp; path = ../src/stretch.cpp; sourceTree = "<group>"; };
121 4EFC6D1C1C2717E000CB52C7 /* stretch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = stretch.h; path = ../src/stretch.h; sourceTree = "<group>"; };
122 4EFC6D1D1C2717E000CB52C7 /* Structs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Structs.h; path = ../src/Structs.h; sourceTree = "<group>"; };
123 4EFC6D1E1C2717E000CB52C7 /* Timer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Timer.cpp; path = ../src/Timer.cpp; sourceTree = "<group>"; };
124 4EFC6D1F1C2717E000CB52C7 /* Timer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Timer.h; path = ../src/Timer.h; sourceTree = "<group>"; };
125 4EFC6D201C2717E000CB52C7 /* Util_MemoryTextFile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Util_MemoryTextFile.cpp; path = ../src/Util_MemoryTextFile.cpp; sourceTree = "<group>"; };
126 4EFC6D211C2717E000CB52C7 /* Util_MemoryTextFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Util_MemoryTextFile.h; path = ../src/Util_MemoryTextFile.h; sourceTree = "<group>"; };
127 4EFC6D221C2717E000CB52C7 /* Video.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Video.cpp; path = ../src/Video.cpp; sourceTree = "<group>"; };
128 4EFC6D231C2717E000CB52C7 /* Video.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Video.h; path = ../src/Video.h; sourceTree = "<group>"; };
129 4EFC6D241C2717E000CB52C7 /* wincompat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = wincompat.h; path = ../src/wincompat.h; sourceTree = "<group>"; };
130 4EFC6D251C2717E000CB52C7 /* wwrapper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = wwrapper.cpp; path = ../src/wwrapper.cpp; sourceTree = "<group>"; };
131 4EFC6D261C2717E000CB52C7 /* wwrapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = wwrapper.h; path = ../src/wwrapper.h; sourceTree = "<group>"; };
132 4EFC6D471C27182B00CB52C7 /* libcurl.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = libcurl.framework; path = ../../../../../Library/Frameworks/libcurl.framework; sourceTree = "<group>"; };
133 4EFC6D481C27182B00CB52C7 /* libzip Mac.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "libzip Mac.framework"; path = "../../../../../Library/Frameworks/libzip Mac.framework"; sourceTree = "<group>"; };
134 4EFC6D4D1C27184300CB52C7 /* SDL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SDL.framework; path = ../../../../../Library/Frameworks/SDL.framework; sourceTree = "<group>"; };
135 4EFC6D511C271C1700CB52C7 /* charset40.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; name = charset40.bmp; path = ../../charset40.bmp; sourceTree = "<group>"; };
136 4EFC6D521C271C1700CB52C7 /* font.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; name = font.bmp; path = ../../font.bmp; sourceTree = "<group>"; };
137 4EFC6D531C271C1700CB52C7 /* icon.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; name = icon.bmp; path = ../../icon.bmp; sourceTree = "<group>"; };
138 4EFC6D571C271C2B00CB52C7 /* splash.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; name = splash.bmp; path = ../../splash.bmp; sourceTree = "<group>"; };
139 4EFC6D591C271CF000CB52C7 /* Master.dsk */ = {isa = PBXFileReference; lastKnownFileType = file; name = Master.dsk; path = ../../Master.dsk; sourceTree = "<group>"; };
140 /* End PBXFileReference section */
141
142 /* Begin PBXFrameworksBuildPhase section */
143 4EFC6CC81C2717A000CB52C7 /* Frameworks */ = {
144 isa = PBXFrameworksBuildPhase;
145 buildActionMask = 2147483647;
146 files = (
147 4EFC6D4E1C27184300CB52C7 /* SDL.framework in Frameworks */,
148 4EFC6D4A1C27182B00CB52C7 /* libcurl.framework in Frameworks */,
149 4EFC6D4B1C27182B00CB52C7 /* libzip Mac.framework in Frameworks */,
150 );
151 runOnlyForDeploymentPostprocessing = 0;
152 };
153 /* End PBXFrameworksBuildPhase section */
154
155 /* Begin PBXGroup section */
156 4E4B5B751C287E860006BCD8 /* gui-osx */ = {
157 isa = PBXGroup;
158 children = (
159 4EFC6D111C2717E000CB52C7 /* SDLMain.h */,
160 4EFC6D121C2717E000CB52C7 /* SDLMain.m */,
161 4E4B5B761C287E9A0006BCD8 /* AlertHooks.h */,
162 4E4B5B771C287E9A0006BCD8 /* AlertHooks.m */,
163 4E4B5B781C287E9A0006BCD8 /* Shared.h */,
164 4E4B5B791C287E9A0006BCD8 /* Shared.m */,
165 );
166 name = "gui-osx";
167 sourceTree = "<group>";
168 };
169 4EFC6CC21C2717A000CB52C7 = {
170 isa = PBXGroup;
171 children = (
172 4EFC6D4F1C27184800CB52C7 /* Frameworks */,
173 4EFC6CDF1C2717CB00CB52C7 /* Linapple Sources */,
174 4EFC6CCD1C2717A000CB52C7 /* LinOSXApple */,
175 4EFC6CCC1C2717A000CB52C7 /* Products */,
176 );
177 sourceTree = "<group>";
178 };
179 4EFC6CCC1C2717A000CB52C7 /* Products */ = {
180 isa = PBXGroup;
181 children = (
182 4EFC6CCB1C2717A000CB52C7 /* LinOSXApple.app */,
183 );
184 name = Products;
185 sourceTree = "<group>";
186 };
187 4EFC6CCD1C2717A000CB52C7 /* LinOSXApple */ = {
188 isa = PBXGroup;
189 children = (
190 4EFC6D501C271BF600CB52C7 /* Resources */,
191 4EFC6CD41C2717A000CB52C7 /* Assets.xcassets */,
192 4EFC6CD61C2717A000CB52C7 /* MainMenu.xib */,
193 4EFC6CD91C2717A000CB52C7 /* Info.plist */,
194 4EFC6CD11C2717A000CB52C7 /* Supporting Files */,
195 );
196 path = LinOSXApple;
197 sourceTree = "<group>";
198 };
199 4EFC6CD11C2717A000CB52C7 /* Supporting Files */ = {
200 isa = PBXGroup;
201 children = (
202 );
203 name = "Supporting Files";
204 sourceTree = "<group>";
205 };
206 4EFC6CDF1C2717CB00CB52C7 /* Linapple Sources */ = {
207 isa = PBXGroup;
208 children = (
209 4E4B5B751C287E860006BCD8 /* gui-osx */,
210 4EFC6CE01C2717E000CB52C7 /* 6821.cpp */,
211 4EFC6CE11C2717E000CB52C7 /* 6821.h */,
212 4EFC6CE21C2717E000CB52C7 /* Applewin.cpp */,
213 4EFC6CE31C2717E000CB52C7 /* AppleWin.h */,
214 4EFC6CE41C2717E000CB52C7 /* AY8910.cpp */,
215 4EFC6CE51C2717E000CB52C7 /* AY8910.h */,
216 4EFC6CE61C2717E000CB52C7 /* Common.h */,
217 4EFC6CE71C2717E000CB52C7 /* CPU.cpp */,
218 4EFC6CE81C2717E000CB52C7 /* CPU.h */,
219 4EFC6CE91C2717E000CB52C7 /* Debug.cpp */,
220 4EFC6CEA1C2717E000CB52C7 /* Debug.h */,
221 4EFC6CEB1C2717E000CB52C7 /* Debugger_Types.h */,
222 4EFC6CEC1C2717E000CB52C7 /* Disk.cpp */,
223 4EFC6CED1C2717E000CB52C7 /* Disk.h */,
224 4EFC6CEE1C2717E000CB52C7 /* DiskChoose.cpp */,
225 4EFC6CEF1C2717E000CB52C7 /* DiskChoose.h */,
226 4EFC6CF01C2717E000CB52C7 /* DiskFTP.cpp */,
227 4EFC6CF11C2717E000CB52C7 /* DiskFTP.h */,
228 4EFC6CF21C2717E000CB52C7 /* DiskImage.cpp */,
229 4EFC6CF31C2717E000CB52C7 /* DiskImage.h */,
230 4EFC6CF41C2717E000CB52C7 /* Frame.cpp */,
231 4EFC6CF51C2717E000CB52C7 /* Frame.h */,
232 4EFC6CF61C2717E000CB52C7 /* ftpparse.cpp */,
233 4EFC6CF71C2717E000CB52C7 /* ftpparse.h */,
234 4EFC6CF81C2717E000CB52C7 /* Harddisk.cpp */,
235 4EFC6CF91C2717E000CB52C7 /* Harddisk.h */,
236 4EFC6CFA1C2717E000CB52C7 /* Joystick.cpp */,
237 4EFC6CFB1C2717E000CB52C7 /* Joystick.h */,
238 4EFC6CFC1C2717E000CB52C7 /* Keyboard.cpp */,
239 4EFC6CFD1C2717E000CB52C7 /* Keyboard.h */,
240 4EFC6CFE1C2717E000CB52C7 /* list.h */,
241 4EFC6CFF1C2717E000CB52C7 /* Log.cpp */,
242 4EFC6D001C2717E000CB52C7 /* Log.h */,
243 4EFC6D021C2717E000CB52C7 /* Memory.cpp */,
244 4EFC6D031C2717E000CB52C7 /* Memory.h */,
245 4EFC6D041C2717E000CB52C7 /* Mockingboard.cpp */,
246 4EFC6D051C2717E000CB52C7 /* Mockingboard.h */,
247 4EFC6D061C2717E000CB52C7 /* MouseInterface.cpp */,
248 4EFC6D071C2717E000CB52C7 /* MouseInterface.h */,
249 4EFC6D081C2717E000CB52C7 /* ParallelPrinter.cpp */,
250 4EFC6D091C2717E000CB52C7 /* ParallelPrinter.h */,
251 4EFC6D0A1C2717E000CB52C7 /* Registry.cpp */,
252 4EFC6D0B1C2717E000CB52C7 /* Registry.h */,
253 4EFC6D0C1C2717E000CB52C7 /* resource.h */,
254 4EFC6D0D1C2717E000CB52C7 /* Riff.cpp */,
255 4EFC6D0E1C2717E000CB52C7 /* Riff.h */,
256 4EFC6D0F1C2717E000CB52C7 /* SaveState.cpp */,
257 4EFC6D101C2717E000CB52C7 /* SaveState.h */,
258 4EFC6D131C2717E000CB52C7 /* SerialComms.cpp */,
259 4EFC6D141C2717E000CB52C7 /* SerialComms.h */,
260 4EFC6D151C2717E000CB52C7 /* SoundCore.cpp */,
261 4EFC6D161C2717E000CB52C7 /* SoundCore.h */,
262 4EFC6D171C2717E000CB52C7 /* Speaker.cpp */,
263 4EFC6D181C2717E000CB52C7 /* Speaker.h */,
264 4EFC6D191C2717E000CB52C7 /* SSI263Phonemes.h */,
265 4EFC6D1A1C2717E000CB52C7 /* stdafx.h */,
266 4EFC6D1B1C2717E000CB52C7 /* stretch.cpp */,
267 4EFC6D1C1C2717E000CB52C7 /* stretch.h */,
268 4EFC6D1D1C2717E000CB52C7 /* Structs.h */,
269 4EFC6D1E1C2717E000CB52C7 /* Timer.cpp */,
270 4EFC6D1F1C2717E000CB52C7 /* Timer.h */,
271 4EFC6D201C2717E000CB52C7 /* Util_MemoryTextFile.cpp */,
272 4EFC6D211C2717E000CB52C7 /* Util_MemoryTextFile.h */,
273 4EFC6D221C2717E000CB52C7 /* Video.cpp */,
274 4EFC6D231C2717E000CB52C7 /* Video.h */,
275 4EFC6D241C2717E000CB52C7 /* wincompat.h */,
276 4EFC6D251C2717E000CB52C7 /* wwrapper.cpp */,
277 4EFC6D261C2717E000CB52C7 /* wwrapper.h */,
278 );
279 name = "Linapple Sources";
280 sourceTree = "<group>";
281 };
282 4EFC6D4F1C27184800CB52C7 /* Frameworks */ = {
283 isa = PBXGroup;
284 children = (
285 4EFC6D4D1C27184300CB52C7 /* SDL.framework */,
286 4EFC6D471C27182B00CB52C7 /* libcurl.framework */,
287 4EFC6D481C27182B00CB52C7 /* libzip Mac.framework */,
288 );
289 name = Frameworks;
290 sourceTree = "<group>";
291 };
292 4EFC6D501C271BF600CB52C7 /* Resources */ = {
293 isa = PBXGroup;
294 children = (
295 4EFC6D591C271CF000CB52C7 /* Master.dsk */,
296 4EFC6D571C271C2B00CB52C7 /* splash.bmp */,
297 4EFC6D511C271C1700CB52C7 /* charset40.bmp */,
298 4EFC6D521C271C1700CB52C7 /* font.bmp */,
299 4EFC6D531C271C1700CB52C7 /* icon.bmp */,
300 );
301 name = Resources;
302 sourceTree = "<group>";
303 };
304 /* End PBXGroup section */
305
306 /* Begin PBXNativeTarget section */
307 4EFC6CCA1C2717A000CB52C7 /* LinOSXApple */ = {
308 isa = PBXNativeTarget;
309 buildConfigurationList = 4EFC6CDC1C2717A000CB52C7 /* Build configuration list for PBXNativeTarget "LinOSXApple" */;
310 buildPhases = (
311 4EFC6CC71C2717A000CB52C7 /* Sources */,
312 4EFC6CC81C2717A000CB52C7 /* Frameworks */,
313 4EFC6CC91C2717A000CB52C7 /* Resources */,
314 );
315 buildRules = (
316 );
317 dependencies = (
318 );
319 name = LinOSXApple;
320 productName = LinOSXApple;
321 productReference = 4EFC6CCB1C2717A000CB52C7 /* LinOSXApple.app */;
322 productType = "com.apple.product-type.application";
323 };
324 /* End PBXNativeTarget section */
325
326 /* Begin PBXProject section */
327 4EFC6CC31C2717A000CB52C7 /* Project object */ = {
328 isa = PBXProject;
329 attributes = {
330 LastUpgradeCheck = 0720;
331 ORGANIZATIONNAME = "Jerome Vernet";
332 TargetAttributes = {
333 4EFC6CCA1C2717A000CB52C7 = {
334 CreatedOnToolsVersion = 7.2;
335 };
336 };
337 };
338 buildConfigurationList = 4EFC6CC61C2717A000CB52C7 /* Build configuration list for PBXProject "LinOSXApple" */;
339 compatibilityVersion = "Xcode 3.2";
340 developmentRegion = English;
341 hasScannedForEncodings = 0;
342 knownRegions = (
343 en,
344 Base,
345 );
346 mainGroup = 4EFC6CC21C2717A000CB52C7;
347 productRefGroup = 4EFC6CCC1C2717A000CB52C7 /* Products */;
348 projectDirPath = "";
349 projectRoot = "";
350 targets = (
351 4EFC6CCA1C2717A000CB52C7 /* LinOSXApple */,
352 );
353 };
354 /* End PBXProject section */
355
356 /* Begin PBXResourcesBuildPhase section */
357 4EFC6CC91C2717A000CB52C7 /* Resources */ = {
358 isa = PBXResourcesBuildPhase;
359 buildActionMask = 2147483647;
360 files = (
361 4EFC6D5A1C271CF000CB52C7 /* Master.dsk in Resources */,
362 4EFC6D551C271C1700CB52C7 /* font.bmp in Resources */,
363 4EFC6CD51C2717A000CB52C7 /* Assets.xcassets in Resources */,
364 4EFC6D581C271C2B00CB52C7 /* splash.bmp in Resources */,
365 4EFC6D541C271C1700CB52C7 /* charset40.bmp in Resources */,
366 4EFC6D561C271C1700CB52C7 /* icon.bmp in Resources */,
367 4EFC6CD81C2717A000CB52C7 /* MainMenu.xib in Resources */,
368 );
369 runOnlyForDeploymentPostprocessing = 0;
370 };
371 /* End PBXResourcesBuildPhase section */
372
373 /* Begin PBXSourcesBuildPhase section */
374 4EFC6CC71C2717A000CB52C7 /* Sources */ = {
375 isa = PBXSourcesBuildPhase;
376 buildActionMask = 2147483647;
377 files = (
378 4EFC6D341C2717E000CB52C7 /* Keyboard.cpp in Sources */,
379 4EFC6D381C2717E000CB52C7 /* Mockingboard.cpp in Sources */,
380 4EFC6D2C1C2717E000CB52C7 /* Disk.cpp in Sources */,
381 4EFC6D2E1C2717E000CB52C7 /* DiskFTP.cpp in Sources */,
382 4EFC6D3D1C2717E000CB52C7 /* SaveState.cpp in Sources */,
383 4EFC6D2D1C2717E000CB52C7 /* DiskChoose.cpp in Sources */,
384 4EFC6D3A1C2717E000CB52C7 /* ParallelPrinter.cpp in Sources */,
385 4EFC6D321C2717E000CB52C7 /* Harddisk.cpp in Sources */,
386 4EFC6D311C2717E000CB52C7 /* ftpparse.cpp in Sources */,
387 4EFC6D401C2717E000CB52C7 /* SoundCore.cpp in Sources */,
388 4EFC6D3B1C2717E000CB52C7 /* Registry.cpp in Sources */,
389 4EFC6D3C1C2717E000CB52C7 /* Riff.cpp in Sources */,
390 4EFC6D3E1C2717E000CB52C7 /* SDLMain.m in Sources */,
391 4EFC6D351C2717E000CB52C7 /* Log.cpp in Sources */,
392 4EFC6D301C2717E000CB52C7 /* Frame.cpp in Sources */,
393 4EFC6D391C2717E000CB52C7 /* MouseInterface.cpp in Sources */,
394 4EFC6D2A1C2717E000CB52C7 /* CPU.cpp in Sources */,
395 4EFC6D2B1C2717E000CB52C7 /* Debug.cpp in Sources */,
396 4E4B5B7A1C287E9A0006BCD8 /* AlertHooks.m in Sources */,
397 4EFC6D271C2717E000CB52C7 /* 6821.cpp in Sources */,
398 4EFC6D461C2717E000CB52C7 /* wwrapper.cpp in Sources */,
399 4EFC6D371C2717E000CB52C7 /* Memory.cpp in Sources */,
400 4EFC6D421C2717E000CB52C7 /* stretch.cpp in Sources */,
401 4EFC6D3F1C2717E000CB52C7 /* SerialComms.cpp in Sources */,
402 4EFC6D331C2717E000CB52C7 /* Joystick.cpp in Sources */,
403 4EFC6D2F1C2717E000CB52C7 /* DiskImage.cpp in Sources */,
404 4E4B5B7B1C287E9A0006BCD8 /* Shared.m in Sources */,
405 4EFC6D291C2717E000CB52C7 /* AY8910.cpp in Sources */,
406 4EFC6D411C2717E000CB52C7 /* Speaker.cpp in Sources */,
407 4EFC6D431C2717E000CB52C7 /* Timer.cpp in Sources */,
408 4EFC6D451C2717E000CB52C7 /* Video.cpp in Sources */,
409 4EFC6D281C2717E000CB52C7 /* Applewin.cpp in Sources */,
410 );
411 runOnlyForDeploymentPostprocessing = 0;
412 };
413 /* End PBXSourcesBuildPhase section */
414
415 /* Begin PBXVariantGroup section */
416 4EFC6CD61C2717A000CB52C7 /* MainMenu.xib */ = {
417 isa = PBXVariantGroup;
418 children = (
419 4EFC6CD71C2717A000CB52C7 /* Base */,
420 );
421 name = MainMenu.xib;
422 sourceTree = "<group>";
423 };
424 /* End PBXVariantGroup section */
425
426 /* Begin XCBuildConfiguration section */
427 4EFC6CDA1C2717A000CB52C7 /* Debug */ = {
428 isa = XCBuildConfiguration;
429 buildSettings = {
430 ALWAYS_SEARCH_USER_PATHS = NO;
431 CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
432 CLANG_CXX_LIBRARY = "libc++";
433 CLANG_ENABLE_MODULES = YES;
434 CLANG_ENABLE_OBJC_ARC = YES;
435 CLANG_WARN_BOOL_CONVERSION = YES;
436 CLANG_WARN_CONSTANT_CONVERSION = YES;
437 CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
438 CLANG_WARN_EMPTY_BODY = YES;
439 CLANG_WARN_ENUM_CONVERSION = YES;
440 CLANG_WARN_INT_CONVERSION = YES;
441 CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
442 CLANG_WARN_UNREACHABLE_CODE = YES;
443 CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
444 CODE_SIGN_IDENTITY = "-";
445 COPY_PHASE_STRIP = NO;
446 DEBUG_INFORMATION_FORMAT = dwarf;
447 ENABLE_STRICT_OBJC_MSGSEND = YES;
448 ENABLE_TESTABILITY = YES;
449 GCC_C_LANGUAGE_STANDARD = gnu99;
450 GCC_DYNAMIC_NO_PIC = NO;
451 GCC_NO_COMMON_BLOCKS = YES;
452 GCC_OPTIMIZATION_LEVEL = 0;
453 GCC_PREPROCESSOR_DEFINITIONS = (
454 "DEBUG=1",
455 "$(inherited)",
456 );
457 GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
458 GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
459 GCC_WARN_UNDECLARED_SELECTOR = YES;
460 GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
461 GCC_WARN_UNUSED_FUNCTION = YES;
462 GCC_WARN_UNUSED_VARIABLE = YES;
463 MACOSX_DEPLOYMENT_TARGET = 10.11;
464 MTL_ENABLE_DEBUG_INFO = YES;
465 ONLY_ACTIVE_ARCH = YES;
466 SDKROOT = macosx;
467 };
468 name = Debug;
469 };
470 4EFC6CDB1C2717A000CB52C7 /* Release */ = {
471 isa = XCBuildConfiguration;
472 buildSettings = {
473 ALWAYS_SEARCH_USER_PATHS = NO;
474 CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
475 CLANG_CXX_LIBRARY = "libc++";
476 CLANG_ENABLE_MODULES = YES;
477 CLANG_ENABLE_OBJC_ARC = YES;
478 CLANG_WARN_BOOL_CONVERSION = YES;
479 CLANG_WARN_CONSTANT_CONVERSION = YES;
480 CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
481 CLANG_WARN_EMPTY_BODY = YES;
482 CLANG_WARN_ENUM_CONVERSION = YES;
483 CLANG_WARN_INT_CONVERSION = YES;
484 CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
485 CLANG_WARN_UNREACHABLE_CODE = YES;
486 CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
487 CODE_SIGN_IDENTITY = "-";
488 COPY_PHASE_STRIP = NO;
489 DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
490 ENABLE_NS_ASSERTIONS = NO;
491 ENABLE_STRICT_OBJC_MSGSEND = YES;
492 GCC_C_LANGUAGE_STANDARD = gnu99;
493 GCC_NO_COMMON_BLOCKS = YES;
494 GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
495 GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
496 GCC_WARN_UNDECLARED_SELECTOR = YES;
497 GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
498 GCC_WARN_UNUSED_FUNCTION = YES;
499 GCC_WARN_UNUSED_VARIABLE = YES;
500 MACOSX_DEPLOYMENT_TARGET = 10.11;
501 MTL_ENABLE_DEBUG_INFO = NO;
502 SDKROOT = macosx;
503 };
504 name = Release;
505 };
506 4EFC6CDD1C2717A000CB52C7 /* Debug */ = {
507 isa = XCBuildConfiguration;
508 buildSettings = {
509 ARCHS = "$(ARCHS_STANDARD_32_BIT)";
510 ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
511 CLANG_CXX_LANGUAGE_STANDARD = "compiler-default";
512 CLANG_CXX_LIBRARY = "compiler-default";
513 CLANG_ENABLE_OBJC_ARC = NO;
514 CODE_SIGN_IDENTITY = "";
515 COMBINE_HIDPI_IMAGES = YES;
516 DATA = "../Resources/charset40.bmp ../Resources/font.bmp ../Resources/icon.bmp ../Resources/splash.bmp ../Resources/Master.dsk";
517 FRAMEWORK_SEARCH_PATHS = (
518 "$(inherited)",
519 "$(USER_LIBRARY_DIR)/Frameworks",
520 );
521 GCC_C_LANGUAGE_STANDARD = "compiler-default";
522 GCC_INLINES_ARE_PRIVATE_EXTERN = NO;
523 GCC_PREPROCESSOR_DEFINITIONS = (
524 "'ALERT_HOOKS=1'",
525 "'DEBUG=1'",
526 "'SDL_USE_NIB_FILE=1'",
527 );
528 GCC_SYMBOLS_PRIVATE_EXTERN = NO;
529 HEADER_SEARCH_PATHS = (
530 "/Library/Frameworks/SDL.framework/Headers/**",
531 "~/Library/Frameworks/SDL.framework/Headers/**",
532 "\"~/Library/Frameworks/libzip mac.framework/Headers\"/**",
533 );
534 INFOPLIST_FILE = LinOSXApple/Info.plist;
535 LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
536 MACOSX_DEPLOYMENT_TARGET = 10.8;
537 OTHER_LDFLAGS = "-lz";
538 PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR = NO;
539 PRODUCT_BUNDLE_IDENTIFIER = bxo.LinOSXApple;
540 PRODUCT_NAME = "$(TARGET_NAME)";
541 SCAN_ALL_SOURCE_FILES_FOR_INCLUDES = YES;
542 WARNING_CFLAGS = (
543 "-Wno-unknown-pragmas",
544 "-Wno-four-char-constants",
545 "-Wmost",
546 );
547 };
548 name = Debug;
549 };
550 4EFC6CDE1C2717A000CB52C7 /* Release */ = {
551 isa = XCBuildConfiguration;
552 buildSettings = {
553 ARCHS = "$(ARCHS_STANDARD_32_BIT)";
554 ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
555 CLANG_CXX_LANGUAGE_STANDARD = "compiler-default";
556 CLANG_CXX_LIBRARY = "compiler-default";
557 CLANG_ENABLE_OBJC_ARC = NO;
558 CODE_SIGN_IDENTITY = "";
559 COMBINE_HIDPI_IMAGES = YES;
560 DATA = "../Resources/charset40.bmp ../Resources/font.bmp ../Resources/icon.bmp ../Resources/splash.bmp ../Resources/Master.dsk";
561 FRAMEWORK_SEARCH_PATHS = (
562 "$(inherited)",
563 "$(USER_LIBRARY_DIR)/Frameworks",
564 );
565 GCC_C_LANGUAGE_STANDARD = "compiler-default";
566 GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
567 GCC_INLINES_ARE_PRIVATE_EXTERN = NO;
568 GCC_PREPROCESSOR_DEFINITIONS = (
569 "'ALERT_HOOKS=1'",
570 "'SDL_USE_NIB_FILE=1'",
571 );
572 GCC_SYMBOLS_PRIVATE_EXTERN = NO;
573 HEADER_SEARCH_PATHS = (
574 "/Library/Frameworks/SDL.framework/Headers/**",
575 "~/Library/Frameworks/SDL.framework/Headers/**",
576 "\"~/Library/Frameworks/libzip mac.framework/Headers\"/**",
577 );
578 INFOPLIST_FILE = LinOSXApple/Info.plist;
579 LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
580 MACOSX_DEPLOYMENT_TARGET = 10.8;
581 OTHER_LDFLAGS = "-lz";
582 PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR = NO;
583 PRODUCT_BUNDLE_IDENTIFIER = bxo.LinOSXApple;
584 PRODUCT_NAME = "$(TARGET_NAME)";
585 SCAN_ALL_SOURCE_FILES_FOR_INCLUDES = YES;
586 WARNING_CFLAGS = (
587 "-Wno-unknown-pragmas",
588 "-Wno-four-char-constants",
589 "-Wmost",
590 );
591 };
592 name = Release;
593 };
594 /* End XCBuildConfiguration section */
595
596 /* Begin XCConfigurationList section */
597 4EFC6CC61C2717A000CB52C7 /* Build configuration list for PBXProject "LinOSXApple" */ = {
598 isa = XCConfigurationList;
599 buildConfigurations = (
600 4EFC6CDA1C2717A000CB52C7 /* Debug */,
601 4EFC6CDB1C2717A000CB52C7 /* Release */,
602 );
603 defaultConfigurationIsVisible = 0;
604 defaultConfigurationName = Release;
605 };
606 4EFC6CDC1C2717A000CB52C7 /* Build configuration list for PBXNativeTarget "LinOSXApple" */ = {
607 isa = XCConfigurationList;
608 buildConfigurations = (
609 4EFC6CDD1C2717A000CB52C7 /* Debug */,
610 4EFC6CDE1C2717A000CB52C7 /* Release */,
611 );
612 defaultConfigurationIsVisible = 0;
613 defaultConfigurationName = Release;
614 };
615 /* End XCConfigurationList section */
616 };
617 rootObject = 4EFC6CC31C2717A000CB52C7 /* Project object */;
618 }
0 <?xml version="1.0" encoding="UTF-8"?>
1 <Workspace
2 version = "1.0">
3 <FileRef
4 location = "self:LinOSXApple.xcodeproj">
5 </FileRef>
6 </Workspace>
0 <?xml version="1.0" encoding="UTF-8"?>
1 <Bucket
2 type = "1"
3 version = "2.0">
4 <Breakpoints>
5 <BreakpointProxy
6 BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
7 <BreakpointContent
8 shouldBeEnabled = "No"
9 ignoreCount = "0"
10 continueAfterRunningActions = "No"
11 filePath = "../src/Video.cpp"
12 timestampString = "472325556.209404"
13 startingColumnNumber = "9223372036854775807"
14 endingColumnNumber = "9223372036854775807"
15 startingLineNumber = "1892"
16 endingLineNumber = "1892"
17 landmarkName = "VideoInitialize ()"
18 landmarkType = "7">
19 </BreakpointContent>
20 </BreakpointProxy>
21 <BreakpointProxy
22 BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
23 <BreakpointContent
24 shouldBeEnabled = "No"
25 ignoreCount = "0"
26 continueAfterRunningActions = "No"
27 filePath = "../src/Registry.cpp"
28 timestampString = "472326576.389182"
29 startingColumnNumber = "9223372036854775807"
30 endingColumnNumber = "9223372036854775807"
31 startingLineNumber = "117"
32 endingLineNumber = "117"
33 landmarkName = "ReadRegString(char *key)"
34 landmarkType = "7">
35 </BreakpointContent>
36 </BreakpointProxy>
37 <BreakpointProxy
38 BreakpointExtensionID = "Xcode.Breakpoint.AddressBreakpoint">
39 <BreakpointContent
40 shouldBeEnabled = "Yes"
41 ignoreCount = "0"
42 continueAfterRunningActions = "No"
43 symbolName = "*0x9ea7cc2f">
44 <Locations>
45 <Location
46 shouldBeEnabled = "Yes"
47 ignoreCount = "0"
48 continueAfterRunningActions = "No"
49 symbolName = "mach_msg"
50 moduleName = "libsystem_kernel.dylib"
51 usesParentBreakpointCondition = "Yes"
52 offsetFromSymbolStart = "63">
53 </Location>
54 </Locations>
55 </BreakpointContent>
56 </BreakpointProxy>
57 </Breakpoints>
58 </Bucket>
0 <?xml version="1.0" encoding="UTF-8"?>
1 <Scheme
2 LastUpgradeVersion = "0720"
3 version = "1.3">
4 <BuildAction
5 parallelizeBuildables = "YES"
6 buildImplicitDependencies = "YES">
7 <BuildActionEntries>
8 <BuildActionEntry
9 buildForTesting = "YES"
10 buildForRunning = "YES"
11 buildForProfiling = "YES"
12 buildForArchiving = "YES"
13 buildForAnalyzing = "YES">
14 <BuildableReference
15 BuildableIdentifier = "primary"
16 BlueprintIdentifier = "4EFC6CCA1C2717A000CB52C7"
17 BuildableName = "LinOSXApple.app"
18 BlueprintName = "LinOSXApple"
19 ReferencedContainer = "container:LinOSXApple.xcodeproj">
20 </BuildableReference>
21 </BuildActionEntry>
22 </BuildActionEntries>
23 </BuildAction>
24 <TestAction
25 buildConfiguration = "Debug"
26 selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
27 selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
28 shouldUseLaunchSchemeArgsEnv = "YES">
29 <Testables>
30 </Testables>
31 <MacroExpansion>
32 <BuildableReference
33 BuildableIdentifier = "primary"
34 BlueprintIdentifier = "4EFC6CCA1C2717A000CB52C7"
35 BuildableName = "LinOSXApple.app"
36 BlueprintName = "LinOSXApple"
37 ReferencedContainer = "container:LinOSXApple.xcodeproj">
38 </BuildableReference>
39 </MacroExpansion>
40 <AdditionalOptions>
41 </AdditionalOptions>
42 </TestAction>
43 <LaunchAction
44 buildConfiguration = "Debug"
45 selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
46 selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
47 launchStyle = "0"
48 useCustomWorkingDirectory = "NO"
49 customWorkingDirectory = "/Users/jeromevernet/linapple"
50 ignoresPersistentStateOnLaunch = "NO"
51 debugDocumentVersioning = "YES"
52 debugServiceExtension = "internal"
53 allowLocationSimulation = "NO">
54 <BuildableProductRunnable
55 runnableDebuggingMode = "0">
56 <BuildableReference
57 BuildableIdentifier = "primary"
58 BlueprintIdentifier = "4EFC6CCA1C2717A000CB52C7"
59 BuildableName = "LinOSXApple.app"
60 BlueprintName = "LinOSXApple"
61 ReferencedContainer = "container:LinOSXApple.xcodeproj">
62 </BuildableReference>
63 </BuildableProductRunnable>
64 <AdditionalOptions>
65 </AdditionalOptions>
66 </LaunchAction>
67 <ProfileAction
68 buildConfiguration = "Release"
69 shouldUseLaunchSchemeArgsEnv = "YES"
70 savedToolIdentifier = ""
71 useCustomWorkingDirectory = "NO"
72 debugDocumentVersioning = "YES">
73 <BuildableProductRunnable
74 runnableDebuggingMode = "0">
75 <BuildableReference
76 BuildableIdentifier = "primary"
77 BlueprintIdentifier = "4EFC6CCA1C2717A000CB52C7"
78 BuildableName = "LinOSXApple.app"
79 BlueprintName = "LinOSXApple"
80 ReferencedContainer = "container:LinOSXApple.xcodeproj">
81 </BuildableReference>
82 </BuildableProductRunnable>
83 </ProfileAction>
84 <AnalyzeAction
85 buildConfiguration = "Debug">
86 </AnalyzeAction>
87 <ArchiveAction
88 buildConfiguration = "Release"
89 revealArchiveInOrganizer = "YES">
90 </ArchiveAction>
91 </Scheme>
0 <?xml version="1.0" encoding="UTF-8"?>
1 <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
2 <plist version="1.0">
3 <dict>
4 <key>SchemeUserState</key>
5 <dict>
6 <key>LinOSXApple.xcscheme</key>
7 <dict>
8 <key>orderHint</key>
9 <integer>0</integer>
10 </dict>
11 </dict>
12 <key>SuppressBuildableAutocreation</key>
13 <dict>
14 <key>4EFC6CCA1C2717A000CB52C7</key>
15 <dict>
16 <key>primary</key>
17 <true/>
18 </dict>
19 </dict>
20 </dict>
21 </plist>
Binary diff not shown
0
1
2 The following changes were made by Cat's Eye Technologies' version of
3 linapple to make it more "properly unixy":
4
5 - autobooting from a disk image name on the command line. This
6 work comes from a branch by @arloduff and is documented in another
7 file in this directory: Command-line.md
8 - recording location of resource files at build time instead of
9 assuming they always reside in the current directory. This permits
10 the executable to be started from any directory.
11 - treating the configuration file as read-only.
12
13 It also contains changes for building and running under OSX, taken from
14 @jvernet, however maintaining that wasn't a priority for him.
15
16 Thanks Chris!
17
18 =====================================================================
19
020 *** LINAPPLE 2b***
121
222 [INTRO]
linapple1.bmp less more
Binary diff not shown
linapple2.bmp less more
Binary diff not shown
linapple3.bmp less more
Binary diff not shown
linapple4.bmp less more
Binary diff not shown
linapple5.bmp less more
Binary diff not shown
3434 // for time logging
3535 #include <time.h>
3636 #include <sys/time.h>
37
37 #include <sys/param.h>
38 #include <unistd.h>
3839 #include <curl/curl.h>
3940
4041 #include <stdlib.h>
42
43 #ifdef __APPLE__
44 #include "AlertHooks.h"
45 #endif
4146
4247 //char VERSIONSTRING[] = "xx.yy.zz.ww";
4348
6065
6166 // Default screen sizes
6267 // SCREEN_WIDTH & SCREEN_HEIGHT defined in Frame.h
63 UINT g_ScreenWidth = SCREEN_WIDTH;
64 UINT g_ScreenHeight = SCREEN_HEIGHT;
68 UINT g_ScreenWidth = SCREEN_WIDTH;
69 UINT g_ScreenHeight = SCREEN_HEIGHT;
6570
6671 //static int lastmode = MODE_LOGO; -- not used???
6772 DWORD needsprecision = 0; // Redundant
68 //TCHAR g_sProgramDir[MAX_PATH] = TEXT("");
73 TCHAR g_sProgramDir[MAX_PATH] = TEXT("");
6974 TCHAR g_sCurrentDir[MAX_PATH] = TEXT(""); // Also Starting Dir for Slot6 disk images?? --bb
7075 TCHAR g_sHDDDir[MAX_PATH] = TEXT(""); // starting dir for HDV (Apple][ HDD) images?? --bb
7176 TCHAR g_sSaveStateDir[MAX_PATH] = TEXT(""); // starting dir for states --bb
8893 double g_fCurrentCLK6502 = CLK_6502; // Affected by Config dialog's speed slider bar
8994 static double g_fMHz = 1.0; // Affected by Config dialog's speed slider bar
9095
91 int g_nCpuCyclesFeedback = 0;
96 int g_nCpuCyclesFeedback = 0;
9297 DWORD g_dwCyclesThisFrame = 0;
9398
9499 FILE* g_fh = NULL; // file for logging, let's use stderr instead?
99104
100105 UINT g_Slot4 = CT_Mockingboard; // CT_Mockingboard or CT_MouseInterface
101106
102 CURL *g_curl = NULL; // global easy curl resourse
107 CURL *g_curl = NULL; // global easy curl resourse
103108 //===========================================================================
104109
105110 // ???? what is DBG_CALC_FREQ??? O_O --bb
112117 ULONG g_nPerfFreq = 0;
113118 #endif
114119
115
120 //For MacOsX
121 /*int DlgAlert_Notice(char *text)
122 {
123 #ifdef ALERT_HOOKS
124 //if (!Main_UnPauseEmulation())
125 // Main_PauseEmulation(true);
126 //if(!bInFullScreen)
127 return HookedAlertNotice(text);
128 #endif
129 }
130 */
116131
117132 //---------------------------------------------------------------------------
118133
385400 // autostart
386401 SDL_Event user_ev;
387402 user_ev.type = SDL_USEREVENT;
388 user_ev.user.code = 1; //restart?
403 user_ev.user.code = 1; //restart
389404 SDL_PushEvent(&user_ev);
390405 }
391406
395410 {
396411 DWORD dwComputerType;
397412
398 /* if (LOAD(TEXT(REGVALUE_APPLE2_TYPE),&dwComputerType))
413 if(registry==NULL)
399414 {
400 if (dwComputerType >= A2TYPE_MAX)
401 dwComputerType = A2TYPE_APPLE2EEHANCED;
402 g_Apple2Type = (eApple2Type) dwComputerType;
403 }
404 else
405 {*/
415 printf("File " REGISTRY " could not be opened. Using default configuration.\n");
416 return;
417 }
406418 LOAD(TEXT("Computer Emulation"),&dwComputerType);
407419 switch (dwComputerType)
408420 {
747759 bool bSetFullScreen = false;
748760 bool bBoot = false;
749761
750 registry = fopen(REGISTRY, "a+t"); // open conf file (linapple.conf by default)
762 registry = fopen(REGISTRY, "rt"); // open conf file (linapple.conf by default)
751763 spMono = fopen("speakersmono.pcm","wb");
752764 spStereo = fopen("speakersstereo.pcm","wb");
753765
10381050 }
10391051
10401052 RiffFinishWriteFile();
1041 fclose(registry); //close conf file (linapple.conf by default)
1053 if(registry!=NULL)
1054 {
1055 fclose(registry); //close conf file (linapple.conf by default)
1056 }
10421057 fclose(spMono);
10431058 fclose(spStereo);
10441059
3535 // define time when cache ftp dir.listing must be refreshed
3636 #define RENEW_TIME 24*3600
3737
38 char * md5str (const char *input); // forward declaration of md5str func
38 char *
39 md5str (const char *input); // forward declaration of md5str func
3940
4041 TCHAR g_sFTPDirListing[512] = TEXT("cache/ftp."); // name for FTP-directory listing
4142 ////////////////////////////////////////////////////////////////////////////////////////
112113 font_print_centered(sx/2 ,5 * facy , ftp_dir, screen, 1.5 * facx, 1.3 * facy);
113114 if(ch) ftp_dir[NORMAL_LENGTH] = ch; //restore cut-off char
114115
115 font_print_centered(sx/2,20 * facy, "Connecting to FTP server... Please wait.", screen, 1 * facx, 1 * facy);
116 font_print_centered(sx/2,20 * facy,"Connecting to FTP server... Please wait.", screen, 1 * facx, 1 * facy);
116117 SDL_Flip(screen); // show the screen
117118
118119 bool OKI;
121122 OKI = false; // use this file
122123 }
123124 else {
124 OKI = ftp_get(ftp_dir, ftpdirpath); // get ftp dir listing
125 OKI = ftp_get(ftp_dir,ftpdirpath); // get ftp dir listing
125126 }
126127 #else
127128 // in WIN32 let's use constant caching? -- need to be redone using file.mtime
2727
2828 /* Adaptation for SDL and POSIX (l) by beom beotiger, Nov-Dec 2007 */
2929
30 /* And KREZ */
31
3032 // for usleep
3133 #include <unistd.h>
34 #include "Resources.h"
3235 #include "stdafx.h"
3336 //#pragma hdrstop
3437 #include "MouseInterface.h"
3639
3740 // for stat in FrameSaveBMP function
3841 #include <sys/stat.h>
39
40 // for usleep()
41 #include <unistd.h>
4242
4343
4444 #define ENABLE_MENU 0
831831
832832 case SDL_USEREVENT:
833833 if (e->user.code == 1) // should do restart?
834 ProcessButtonClick(BTN_RUN, 0);
834 ProcessButtonClick(BTN_RUN, KMOD_LCTRL);
835835 break;
836836
837837 }//switch
12091209 SDL_WM_SetIcon(apple_icon, NULL);
12101210 printf("Icon was set! Width=%d, height=%d\n", apple_icon->w, apple_icon->h);*/
12111211
1212 apple_icon = SDL_LoadBMP("icon.bmp");
1212 apple_icon = SDL_LoadBMP(RESOURCE_ICON_BMP);
12131213 if(apple_icon != NULL) {
12141214 Uint32 colorkey = SDL_MapRGB(apple_icon->format, 0, 0, 0);
12151215 SDL_SetColorKey(apple_icon, SDL_SRCCOLORKEY, colorkey);
1212 CURL_CFLAGS = $(shell $(CURL_CONFIG) --cflags)
1313 CURL_LIBS = $(shell $(CURL_CONFIG) --libs)
1414
15 # build with `RESOURCE_DIR=. make` to get the legacy behaviour of loading resource files from the current directory
16 RESOURCE_DIR ?= $(shell (cd .. && pwd))
17
1518 CXXFLAGS += $(SDL_CFLAGS)
1619 CXXFLAGS += $(CURL_CFLAGS)
20 CXXFLAGS += -DRESOURCE_DIR=\"$(RESOURCE_DIR)/\"
1721 LDLIBS += $(SDL_LIBS) $(CURL_LIBS) -lz -lzip
1822
1923 # Define executable and installing directory
176176
177177 void RegSaveKeyValue(char * NKey, char * NValue)
178178 {
179 #ifdef REGISTRY_WRITEABLE
179180 char MyStr[BUFSIZE];
180181 char line[BUFSIZE];
181182 char templine[BUFSIZE];
218219 fclose(tempf);
219220 // fflush(registry); // for chance... --bb
220221 // do not close registry, it should be open while emu working...
222 #else
223 printf("Attempt to set '%s' to '%s' ignored (registry is read-only)\n", NKey, NValue);
224 #endif /* REGISTRY_WRITEABLE */
221225 }
222226
223227 //===========================================================================
0 /* Resources.h -- configures locations of resource files that linapple loads on startup */
1
2 #ifndef RESOURCE_DIR
3 #define RESOURCE_DIR "./"
4 #endif
5
6 #define RESOURCE_ICON_BMP RESOURCE_DIR "icon.bmp"
7 #define RESOURCE_SPLASH_BMP RESOURCE_DIR "splash.bmp"
8 #define RESOURCE_CHARSET40_BMP RESOURCE_DIR "charset40.bmp"
9 #define RESOURCE_FONT_BMP RESOURCE_DIR "font.bmp"
0 /* SDLMain.m - main entry point for our Cocoa-ized SDL app
1 Initial Version: Darrell Walisser <dwaliss1@purdue.edu>
2 Non-NIB-Code & other changes: Max Horn <max@quendi.de>
3
4 Feel free to customize this file to suit your needs
5 */
6
7 #ifndef _SDLMain_h_
8 #define _SDLMain_h_
9
10 #import <Cocoa/Cocoa.h>
11
12 @interface SDLMain : NSObject
13 @end
14
15 #endif /* _SDLMain_h_ */
0 /* SDLMain.m - main entry point for our Cocoa-ized SDL app
1 Initial Version: Darrell Walisser <dwaliss1@purdue.edu>
2 Non-NIB-Code & other changes: Max Horn <max@quendi.de>
3
4 Feel free to customize this file to suit your needs
5 */
6
7 #include "SDL.h"
8 #include "SDLMain.h"
9 #include <sys/param.h> /* for MAXPATHLEN */
10 #include <unistd.h>
11
12 /* For some reaon, Apple removed setAppleMenu from the headers in 10.4,
13 but the method still is there and works. To avoid warnings, we declare
14 it ourselves here. */
15 @interface NSApplication(SDL_Missing_Methods)
16 - (void)setAppleMenu:(NSMenu *)menu;
17 @end
18
19 /* Use this flag to determine whether we use SDLMain.nib or not */
20 #define SDL_USE_NIB_FILE 0
21
22 /* Use this flag to determine whether we use CPS (docking) or not */
23 #define SDL_USE_CPS 1
24 #ifdef SDL_USE_CPS
25 /* Portions of CPS.h */
26 typedef struct CPSProcessSerNum
27 {
28 UInt32 lo;
29 UInt32 hi;
30 } CPSProcessSerNum;
31
32 extern OSErr CPSGetCurrentProcess( CPSProcessSerNum *psn);
33 extern OSErr CPSEnableForegroundOperation( CPSProcessSerNum *psn, UInt32 _arg2, UInt32 _arg3, UInt32 _arg4, UInt32 _arg5);
34 extern OSErr CPSSetFrontProcess( CPSProcessSerNum *psn);
35
36 #endif /* SDL_USE_CPS */
37
38 static int gArgc;
39 static char **gArgv;
40 static BOOL gFinderLaunch;
41 static BOOL gCalledAppMainline = FALSE;
42
43 static NSString *getApplicationName(void)
44 {
45 const NSDictionary *dict;
46 NSString *appName = 0;
47
48 /* Determine the application name */
49 dict = (const NSDictionary *)CFBundleGetInfoDictionary(CFBundleGetMainBundle());
50 if (dict)
51 appName = [dict objectForKey: @"CFBundleName"];
52
53 if (![appName length])
54 appName = [[NSProcessInfo processInfo] processName];
55
56 return appName;
57 }
58
59 #if SDL_USE_NIB_FILE
60 #warning USing NIB FILE
61 /* A helper category for NSString */
62 @interface NSString (ReplaceSubString)
63 - (NSString *)stringByReplacingRange:(NSRange)aRange with:(NSString *)aString;
64 @end
65 #endif
66
67 @interface NSApplication (SDLApplication)
68 @end
69
70 @implementation NSApplication (SDLApplication)
71 /* Invoked from the Quit menu item */
72 - (void)terminate:(id)sender
73 {
74 /* Post a SDL_QUIT event */
75 SDL_Event event;
76 event.type = SDL_QUIT;
77 SDL_PushEvent(&event);
78 }
79 @end
80
81 /* The main class of the application, the application's delegate */
82 @implementation SDLMain
83
84 /* Set the working directory to the .app's parent directory */
85 - (void) setupWorkingDirectory:(BOOL)shouldChdir
86 {
87 // if (shouldChdir)
88 {
89 char parentdir[MAXPATHLEN];
90 CFURLRef url = CFBundleCopyBundleURL(CFBundleGetMainBundle());
91 CFURLRef url2 = CFURLCreateCopyDeletingLastPathComponent(0, url);
92 if (CFURLGetFileSystemRepresentation(url2, 1, (UInt8 *)parentdir, MAXPATHLEN)) {
93 chdir(parentdir); /* chdir to the binary app's parent */
94 }
95 CFRelease(url);
96 CFRelease(url2);
97 }
98 }
99
100 #if SDL_USE_NIB_FILE
101
102 /* Fix menu to contain the real app name instead of "SDL App" */
103 - (void)fixMenu:(NSMenu *)aMenu withAppName:(NSString *)appName
104 {
105 NSRange aRange;
106 NSEnumerator *enumerator;
107 NSMenuItem *menuItem;
108
109 aRange = [[aMenu title] rangeOfString:@"SDL App"];
110 if (aRange.length != 0)
111 [aMenu setTitle: [[aMenu title] stringByReplacingRange:aRange with:appName]];
112
113 enumerator = [[aMenu itemArray] objectEnumerator];
114 while ((menuItem = [enumerator nextObject]))
115 {
116 aRange = [[menuItem title] rangeOfString:@"SDL App"];
117 if (aRange.length != 0)
118 [menuItem setTitle: [[menuItem title] stringByReplacingRange:aRange with:appName]];
119 if ([menuItem hasSubmenu])
120 [self fixMenu:[menuItem submenu] withAppName:appName];
121 }
122 }
123
124 #else
125
126 static void setApplicationMenu(void)
127 {
128 /* warning: this code is very odd */
129 NSMenu *appleMenu;
130 NSMenuItem *menuItem;
131 NSString *title;
132 NSString *appName;
133
134 appName = getApplicationName();
135 appleMenu = [[NSMenu alloc] initWithTitle:@""];
136
137 /* Add menu items */
138 title = [@"About " stringByAppendingString:appName];
139 [appleMenu addItemWithTitle:title action:@selector(orderFrontStandardAboutPanel:) keyEquivalent:@""];
140
141 [appleMenu addItem:[NSMenuItem separatorItem]];
142
143 title = [@"Hide " stringByAppendingString:appName];
144 [appleMenu addItemWithTitle:title action:@selector(hide:) keyEquivalent:@"h"];
145
146 menuItem = (NSMenuItem *)[appleMenu addItemWithTitle:@"Hide Others" action:@selector(hideOtherApplications:) keyEquivalent:@"h"];
147 [menuItem setKeyEquivalentModifierMask:(NSAlternateKeyMask|NSCommandKeyMask)];
148
149 [appleMenu addItemWithTitle:@"Show All" action:@selector(unhideAllApplications:) keyEquivalent:@""];
150
151 [appleMenu addItem:[NSMenuItem separatorItem]];
152
153 title = [@"Quit " stringByAppendingString:appName];
154 [appleMenu addItemWithTitle:title action:@selector(terminate:) keyEquivalent:@"q"];
155
156
157 /* Put menu into the menubar */
158 menuItem = [[NSMenuItem alloc] initWithTitle:@"" action:nil keyEquivalent:@""];
159 [menuItem setSubmenu:appleMenu];
160 [[NSApp mainMenu] addItem:menuItem];
161
162 /* Tell the application object that this is now the application menu */
163 [NSApp setAppleMenu:appleMenu];
164
165 /* Finally give up our references to the objects */
166 [appleMenu release];
167 [menuItem release];
168 }
169
170 /* Create a window menu */
171 static void setupWindowMenu(void)
172 {
173 NSMenu *windowMenu;
174 NSMenuItem *windowMenuItem;
175 NSMenuItem *menuItem;
176
177 windowMenu = [[NSMenu alloc] initWithTitle:@"Window"];
178
179 /* "Minimize" item */
180 menuItem = [[NSMenuItem alloc] initWithTitle:@"Minimize" action:@selector(performMiniaturize:) keyEquivalent:@"m"];
181 [windowMenu addItem:menuItem];
182 [menuItem release];
183
184 /* Put menu into the menubar */
185 windowMenuItem = [[NSMenuItem alloc] initWithTitle:@"Window" action:nil keyEquivalent:@""];
186 [windowMenuItem setSubmenu:windowMenu];
187 [[NSApp mainMenu] addItem:windowMenuItem];
188
189 /* Tell the application object that this is now the window menu */
190 [NSApp setWindowsMenu:windowMenu];
191
192 /* Finally give up our references to the objects */
193 [windowMenu release];
194 [windowMenuItem release];
195 }
196
197 /* Replacement for NSApplicationMain */
198 static void CustomApplicationMain (int argc, char **argv)
199 {
200 NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
201 SDLMain *sdlMain;
202
203 /* Ensure the application object is initialised */
204 [NSApplication sharedApplication];
205
206 #ifdef SDL_USE_CPS
207 {
208 CPSProcessSerNum PSN;
209 /* Tell the dock about us */
210 if (!CPSGetCurrentProcess(&PSN))
211 if (!CPSEnableForegroundOperation(&PSN,0x03,0x3C,0x2C,0x1103))
212 if (!CPSSetFrontProcess(&PSN))
213 [NSApplication sharedApplication];
214 }
215 #endif /* SDL_USE_CPS */
216
217 /* Set up the menubar */
218 [NSApp setMainMenu:[[NSMenu alloc] init]];
219 setApplicationMenu();
220 setupWindowMenu();
221
222 /* Create SDLMain and make it the app delegate */
223 sdlMain = [[SDLMain alloc] init];
224 [NSApp setDelegate:sdlMain];
225
226 /* Start the main event loop */
227 [NSApp run];
228
229 [sdlMain release];
230 [pool release];
231 }
232
233 #endif
234
235
236 /*
237 * Catch document open requests...this lets us notice files when the app
238 * was launched by double-clicking a document, or when a document was
239 * dragged/dropped on the app's icon. You need to have a
240 * CFBundleDocumentsType section in your Info.plist to get this message,
241 * apparently.
242 *
243 * Files are added to gArgv, so to the app, they'll look like command line
244 * arguments. Previously, apps launched from the finder had nothing but
245 * an argv[0].
246 *
247 * This message may be received multiple times to open several docs on launch.
248 *
249 * This message is ignored once the app's mainline has been called.
250 */
251 - (BOOL)application:(NSApplication *)theApplication openFile:(NSString *)filename
252 {
253 const char *temparg;
254 size_t arglen;
255 char *arg;
256 char **newargv;
257
258 if (!gFinderLaunch) /* MacOS is passing command line args. */
259 return FALSE;
260
261 if (gCalledAppMainline) /* app has started, ignore this document. */
262 return FALSE;
263
264 temparg = [filename UTF8String];
265 arglen = SDL_strlen(temparg) + 1;
266 arg = (char *) SDL_malloc(arglen);
267 if (arg == NULL)
268 return FALSE;
269
270 newargv = (char **) realloc(gArgv, sizeof (char *) * (gArgc + 2));
271 if (newargv == NULL)
272 {
273 SDL_free(arg);
274 return FALSE;
275 }
276 gArgv = newargv;
277
278 SDL_strlcpy(arg, temparg, arglen);
279 gArgv[gArgc++] = arg;
280 gArgv[gArgc] = NULL;
281 return TRUE;
282 }
283
284
285 /* Called when the internal event loop has just started running */
286 - (void) applicationDidFinishLaunching: (NSNotification *) note
287 {
288 int status;
289
290 /* Set the working directory to the .app's parent directory */
291 [self setupWorkingDirectory:gFinderLaunch];
292
293 #if SDL_USE_NIB_FILE
294 /* Set the main menu to contain the real app name instead of "SDL App" */
295 [self fixMenu:[NSApp mainMenu] withAppName:getApplicationName()];
296 #endif
297
298 /* Hand off to main application code */
299 gCalledAppMainline = TRUE;
300 status = SDL_main (gArgc, gArgv);
301
302 /* We're done, thank you for playing */
303 exit(status);
304 }
305 @end
306
307
308 @implementation NSString (ReplaceSubString)
309
310 - (NSString *)stringByReplacingRange:(NSRange)aRange with:(NSString *)aString
311 {
312 unsigned int bufferSize;
313 unsigned int selfLen = [self length];
314 unsigned int aStringLen = [aString length];
315 unichar *buffer;
316 NSRange localRange;
317 NSString *result;
318
319 bufferSize = selfLen + aStringLen - aRange.length;
320 buffer = (unichar *)NSAllocateMemoryPages(bufferSize*sizeof(unichar));
321
322 /* Get first part into buffer */
323 localRange.location = 0;
324 localRange.length = aRange.location;
325 [self getCharacters:buffer range:localRange];
326
327 /* Get middle part into buffer */
328 localRange.location = 0;
329 localRange.length = aStringLen;
330 [aString getCharacters:(buffer+aRange.location) range:localRange];
331
332 /* Get last part into buffer */
333 localRange.location = aRange.location + aRange.length;
334 localRange.length = selfLen - localRange.location;
335 [self getCharacters:(buffer+aRange.location+aStringLen) range:localRange];
336
337 /* Build output string */
338 result = [NSString stringWithCharacters:buffer length:bufferSize];
339
340 NSDeallocateMemoryPages(buffer, bufferSize);
341
342 return result;
343 }
344
345 @end
346
347
348
349 #ifdef main
350 # undef main
351 #endif
352
353
354 /* Main entry point to executable - should *not* be SDL_main! */
355 int main (int argc, char **argv)
356 {
357 /* Copy the arguments into a global variable */
358 /* This is passed if we are launched by double-clicking */
359 if ( argc >= 2 && strncmp (argv[1], "-psn", 4) == 0 ) {
360 gArgv = (char **) SDL_malloc(sizeof (char *) * 2);
361 gArgv[0] = argv[0];
362 gArgv[1] = NULL;
363 gArgc = 1;
364 gFinderLaunch = YES;
365 } else {
366 int i;
367 gArgc = argc;
368 gArgv = (char **) SDL_malloc(sizeof (char *) * (argc+1));
369 for (i = 0; i <= argc; i++)
370 gArgv[i] = argv[i];
371 gFinderLaunch = NO;
372 }
373
374 #if SDL_USE_NIB_FILE
375 NSApplicationMain (argc, argv);
376 #else
377 CustomApplicationMain (argc, argv);
378 #endif
379 return 0;
380 }
381
2727
2828 /* Adaptation for SDL and POSIX (l) by beom beotiger, Nov-Dec 2007 */
2929
30 #include "Resources.h"
3031 #include "stdafx.h"
3132 #include "wwrapper.h"
3233 //#include "stretch.c" // for SDL_SoftStretch thanx to Sam Lantinga and Tomasz Cejner
18881889 ZeroMemory(vidlastmem,0x10000);
18891890
18901891 // LOAD THE splash screen
1891 tmp_surface = SDL_LoadBMP("splash.bmp");
1892 tmp_surface = SDL_LoadBMP(RESOURCE_SPLASH_BMP);
18921893 if (tmp_surface != NULL) g_hLogoBitmap = SDL_DisplayFormat(tmp_surface);
1893 else fprintf(stderr, "Video: splash.bmp was not loaded\n");
1894 else fprintf(stderr, "Video: " RESOURCE_SPLASH_BMP " was not loaded\n");
18941895 SDL_FreeSurface(tmp_surface);
18951896
18961897 // LOAD APPLE CHARSET40
1897 tmp_surface = SDL_LoadBMP("charset40.bmp");
1898 tmp_surface = SDL_LoadBMP(RESOURCE_CHARSET40_BMP);
18981899 if(tmp_surface != NULL) charset40 = SDL_DisplayFormat(tmp_surface);
1899 else fprintf(stderr, "Video: Apple text is not unavailable: charset40.bmp was not loaded\n");
1900 else fprintf(stderr, "Video: Apple text is not available: " RESOURCE_CHARSET40_BMP " was not loaded\n");
19001901 SDL_FreeSurface(tmp_surface);
19011902
19021903 // CREATE AN IDENTITY PALETTE AND FILL IN THE CORRESPONDING COLORS IN
167167 if (now - t < 350 * 86400)
168168 return t;
169169 }
170 return 0;
170 return t;
171171 }
172172
173173 static int check(char *buf,const char *monthname)
0 /*
1 Hatari - AlertHooks.h
2
3 This file is distributed under the GNU General Public License, version 2
4 or at your option any later version. Read the file gpl.txt for details.
5
6 Hooked alerts, to be used instead of SDL alert windows
7 */
8
9 #ifdef ALERT_HOOKS
10 // Replacement for a regular alert (with just an OK button)
11 // Returns TRUE if OK clicked, FALSE otherwise
12 int HookedAlertNotice(const char* szMessage);
13
14 // Replacement for a query alert (OK and Cancel buttons)
15 // Returns TRUE if OK clicked, FALSE otherwise
16 int HookedAlertQuery(const char* szMessage);
17
18 // Runtime switch to activate/deactivate alert hooks
19 extern bool useAlertHooks;
20 #endif
0 /*
1 Hatari - AlertHooks.m
2
3 This file is distributed under the GNU General Public License, version 2
4 or at your option any later version. Read the file gpl.txt for details.
5
6 Hooked alerts, to be used instead of SDL alert windows
7
8 June 2006, Sébastien Molines - Created
9 */
10
11 #import <Cocoa/Cocoa.h>
12 #import "AlertHooks.h"
13 #import "Shared.h"
14
15
16 /*-----------------------------------------------------------------------*/
17 /* Displays a Cocoa alert */
18 /*************************************************************************/
19
20 int HookedAlertNotice(const char* szMessage)
21 {
22 NSString *message ;
23 NSRange cantTOS, firstPv, lastPv ;
24
25
26 message = [NSString stringWithCString:szMessage encoding:NSASCIIStringEncoding] ;
27 //NSLog(@"Notice: %@", message ) ;
28 cantTOS = [message rangeOfString:@"Can not load TOS file:"] ;
29 firstPv = [message rangeOfString:@"'"] ;
30 lastPv = [message rangeOfString:@"'" options:NSBackwardsSearch] ;
31
32 if ((cantTOS.location == NSNotFound) || (firstPv.location==lastPv.location)) // traitement normal
33 return ([NSApp myAlerte:NSInformationalAlertStyle Txt:nil firstB:localize(@"Ok") alternateB:localize(@"Cancel") otherB:nil informativeTxt:message ] == NSAlertDefaultReturn );
34 else // traitement can not load
35 return ([NSApp myAlerte:NSCriticalAlertStyle Txt:nil firstB:localize(@"Ok") alternateB:nil otherB:nil informativeTxt:localize(@"Can not load TOS file:") ] == NSAlertDefaultReturn) ;
36 }
37
38 /*-----------------------------------------------------------------------*/
39 /*
40 Displays a Cocoa alert with a choice (OK and Cancel buttons)
41 */
42 int HookedAlertQuery(const char* szMessage)
43 {
44 NSString *message ;
45
46 message = localize([NSString stringWithCString:szMessage encoding:NSASCIIStringEncoding]) ;
47 return [NSApp myAlerte:NSInformationalAlertStyle Txt:nil firstB:localize(@"Ok") alternateB:localize(@"Cancel")
48 otherB:nil informativeTxt:message ] ;
49 }
50
0 /*
1 Hatari - Shared.h
2
3 This file is distributed under the GNU General Public License, version 2
4 or at your option any later version. Read the file gpl.txt for details.
5 M. SARO 2013
6 */
7
8 #import <Cocoa/Cocoa.h>
9
10 // add some macro for easy writing
11
12 #define localize(laklef) [[NSBundle mainBundle] localizedStringForKey:laklef value:(laklef != nil ? laklef : @"???") table:@"Localizable"]
13
14 // disk extensions allowed in open box
15 #define allF @"st",@"msa",@"dim",@"gz",@"zip",@"stx",@"ipf",@"raw",@"ctr"
16 // cartridge extensions
17 #define allC @"img",@"rom",@"bin",@"cart"
18 // TOS extensions
19 #define allT @"img",@"rom",@"bin"
20
21
22
23 // Wrapper to run an NSWindow modally
24 @protocol NSWindowDelegate;
25
26 @interface ModalWrapper : NSWindowController <NSWindowDelegate>
27 {
28 IBOutlet NSWindow *modalWindow;
29 }
30 - (void)runModal:(NSWindow*)window;
31 - (void)windowWillClose:(NSNotification*)notification;
32 @end
33
34 // Helper function to write the contents of a path as an NSString to a string
35 void GuiOsx_ExportPathString(NSString* path, char* szTarget, size_t cchTarget);
36
37 // Pauses emulation and gets ready to use Cocoa UI
38 void GuiOsx_Pause(void);
39
40 // Switches back to emulation mode and resume emulation
41 void GuiOsx_Resume(void);
42
43
44 // Add method for general Usage
45 //
46 @interface NSApplication (service)
47
48 // Some useful tools
49 // choose file to open
50 - (NSString *)hopenfile:(BOOL)chooseDir defoDir:(NSString *)defoDir defoFile:(NSString *)defoFile types:(NSArray *)types ;
51 - (NSString *)hopenfile:(BOOL)chooseDir defoDir:(NSString *)defoDir defoFile:(NSString *)defoFile types:(NSArray *)types titre:(NSString *)titre ;
52
53 // choose file to save
54 - (NSString *)hsavefile:(BOOL)creatDir defoDir:(NSString *)defoDir defoFile:(NSString *)defoFile types:(NSArray *)types ;
55 - (NSString *)hsavefile:(BOOL)creatDir defoDir:(NSString *)defoDir defoFile:(NSString *)defoFile types:(NSArray *)types titre:(NSString *)titre ;
56
57 // Return localized path, Full path or partial path.
58 - (NSString *)localpath:(NSString *)thepath ; // Full
59 - (NSString *)pathUser:(NSString *)thepath ; // Partial if possible.
60
61 // Alert available 10.4 to 10.9 (styles: NSWarningAlertStyle, NSInformationalAlertStyle, NSCriticalAlertStyle)
62 // return: NSAlertDefaultReturn, NSAlertAlternateReturn, and NSAlertOtherReturn.
63 - (NSInteger)myAlerte:(NSUInteger)style Txt:(NSString *)Txt firstB:(NSString *)firstB alternateB:(NSString *)alternateB
64 otherB:(NSString *)otherB informativeTxt:(NSString *)informativeT ;
65
66 @end
0 /*
1 Hatari - Shared.m
2
3 This file is distributed under the GNU General Public License, version 2
4 or at your option any later version. Read the file gpl.txt for details.
5
6 Helper code used by the other Cocoa code files
7
8 June 2006, Sébastien Molines - Created
9 2013, M. SARO
10 */
11
12 #import <Cocoa/Cocoa.h>
13 #import "Shared.h"
14 #import "AlertHooks.h"
15
16 @implementation ModalWrapper
17
18 // Runs an NSWindow modally
19 - (void)runModal:(NSWindow*)window
20 {
21 // Grab the window
22 modalWindow = window;
23
24 // Set the window's delegate
25 [window setDelegate:self];
26
27 // Change emulation and UI state
28 GuiOsx_Pause();
29
30 // Run it as modal
31 [NSApp runModalForWindow:window];
32
33 // Restore emulation and UI state
34 GuiOsx_Resume();
35 }
36
37 // On closure of the NSWindow, end the modal session
38 - (void) windowWillClose:(NSNotification *)notification
39 {
40 NSWindow *windowAboutToClose = [notification object];
41
42 // Is this our modal window?
43 if (windowAboutToClose == modalWindow)
44 {
45 // Stop the modal loop
46 [NSApp stopModal];
47 }
48 }
49
50 @end
51
52 /*-----------------------------------------------------------------------*/
53 /*
54 Helper function to write the contents of a path as an NSString to a string
55 */
56 void GuiOsx_ExportPathString(NSString* path, char* szTarget, size_t cchTarget)
57 {
58 NSCAssert((szTarget), @"Target buffer must not be null.");
59 NSCAssert((cchTarget > 0), @"Target buffer size must be greater than zero.");
60
61 // Copy the string getCString:maxLength:encoding:
62 [path getCString:szTarget maxLength:cchTarget-1 encoding:NSASCIIStringEncoding] ;
63 }
64
65 /*-----------------------------------------------------------------------*/
66 /*
67 Pauses emulation
68 */
69 void GuiOsx_Pause(void)
70 {
71 // Pause emulation
72 // Main_PauseEmulation(false);
73 }
74
75 /*-----------------------------------------------------------------------*/
76 /*
77 Switches back to emulation mode
78 */
79 void GuiOsx_Resume(void)
80 {
81 // Resume emulation
82 // Main_UnPauseEmulation();
83 }
84
85 //-----------------------------------------------------------------------------------------------------------
86 // Add global services. 6 methods
87
88 @implementation NSApplication (service)
89
90 // Open file or directory
91 //
92 - (NSString *)hopenfile:(BOOL)chooseDir defoDir:(NSString *)defoDir defoFile:(NSString *)defoFile types:(NSArray *)types
93 {
94 return [self hopenfile:chooseDir defoDir:defoDir defoFile:defoFile types:types titre:nil] ;
95 }
96
97
98 - (NSString *)hopenfile:(BOOL)chooseDir defoDir:(NSString *)defoDir defoFile:(NSString *)defoFile types:(NSArray *)types titre:(NSString *)titre
99 {
100 NSOpenPanel *openPanel ;
101 NSArray *lesURLs = nil ;
102 BOOL btOk ;
103
104 openPanel = [NSOpenPanel openPanel];
105 [openPanel setCanChooseDirectories: chooseDir];
106 [openPanel setCanChooseFiles: !chooseDir];
107 [openPanel setAllowsMultipleSelection:NO] ;
108 if (types != nil)
109 { [openPanel setAllowedFileTypes:types] ;
110 [openPanel setAllowsOtherFileTypes:YES] ; } ;
111 if (titre != nil) [openPanel setTitle:titre] ;
112
113 if ([openPanel respondsToSelector:@selector(setDirectoryURL:)])
114 { if (defoDir!=nil) [openPanel setDirectoryURL:[NSURL fileURLWithPath:defoDir isDirectory:YES]] ; // A partir de 10.6
115 if (defoFile!=nil) [openPanel setNameFieldStringValue:defoFile] ;
116 btOk = [openPanel runModal] == NSOKButton ; // Ok ?
117 }
118 else
119 btOk = [openPanel runModalForDirectory:defoDir file:defoFile] == NSOKButton ; // avant 10.6
120
121 if (btOk)
122 { lesURLs = [openPanel URLs] ;
123 if ((lesURLs != nil) && ([lesURLs count] != 0))
124 return [[lesURLs objectAtIndex:0] path] ;
125 } ;
126 return @"" ;
127 }
128
129 // Save file
130 //
131 - (NSString *)hsavefile:(BOOL)creatDir defoDir:(NSString *)defoDir defoFile:(NSString *)defoFile types:(NSArray *)types
132 {
133 return [self hsavefile:creatDir defoDir:defoDir defoFile:defoFile types:types titre:nil] ;
134 }
135
136 - (NSString *)hsavefile:(BOOL)creatDir defoDir:(NSString *)defoDir defoFile:(NSString *)defoFile types:(NSArray *)types titre:(NSString *)titre
137 {
138 NSSavePanel *savPanel ;
139 NSURL *lURL ;
140 BOOL btOk ;
141
142 savPanel = [NSSavePanel savePanel];
143 [savPanel setCanCreateDirectories:creatDir];
144 if (types != nil)
145 { [savPanel setAllowedFileTypes:types] ;
146 [savPanel setAllowsOtherFileTypes:YES] ; } ;
147 if (titre != nil) [savPanel setTitle:titre] ;
148
149 if ([savPanel respondsToSelector:@selector(setDirectoryURL:)])
150 { if (defoDir!=nil) [savPanel setDirectoryURL:[NSURL fileURLWithPath:defoDir isDirectory:YES]] ; // A partir de 10.6
151 if (defoFile!=nil) [savPanel setNameFieldStringValue:defoFile] ;
152 btOk = [savPanel runModal] == NSOKButton ; // Ok?
153 }
154 else
155 btOk = [savPanel runModalForDirectory:defoDir file:defoFile] == NSOKButton ; // Ok ? deprecated en 10.6
156
157 if (btOk)
158 { lURL = [savPanel URL] ;
159 if (lURL != nil)
160 return [lURL path] ;
161 } ;
162 return @"" ;
163 }
164
165 // Returne localized path
166 //
167 - (NSString *)localpath:(NSString *)thepath :(NSFileManager *)afilemanager
168 {
169 NSString *thend ;
170 NSArray *thelist ;
171
172 if (thepath == nil) return @"" ;
173 if ([thepath length] == 0) return @"" ;
174 if (![afilemanager fileExistsAtPath:thepath])
175 { thend = [thepath lastPathComponent] ;
176 return [[self localpath:[thepath stringByDeletingLastPathComponent] :afilemanager] stringByAppendingPathComponent:thend] ;
177 } ;
178 thelist = [afilemanager componentsToDisplayForPath:thepath] ; // convert in matrix
179 if ( [thelist count] != 0)
180 return [NSString pathWithComponents:thelist] ; // return localized path
181 else
182 return thepath ;
183 }
184
185 - (NSString *)localpath:(NSString *)thepath // return a full localized path
186 {
187 NSFileManager *afilemanager = [NSFileManager defaultManager] ; // call "default manager"
188 return [self localpath:thepath :afilemanager] ;
189 }
190
191 // return a localized path related to user home directoryr ~/
192 //
193 - (NSString *)pathUser:(NSString *)thepath
194 {
195 NSString *here ;
196 NSString *apath ;
197
198 apath = [self localpath:thepath] ;
199 if ([apath length] == 0) return @"" ;
200 here = [self localpath:[@"~/" stringByExpandingTildeInPath]] ;
201 if (([apath rangeOfString:here].location) != NSNotFound)
202 return [NSString stringWithFormat:@"~%@", [apath substringFromIndex:[here length]]] ;
203 return apath;
204 }
205
206 // NSAlert available 10.3 to 10.9
207 //
208 - (NSInteger)myAlerte:(NSUInteger)style Txt:(NSString *)Txt firstB:(NSString *)firstB alternateB:(NSString *)alternateB
209 otherB:(NSString *)otherB informativeTxt:(NSString *)informativeT
210 {
211 NSAlert *lalerte ;
212 NSInteger ret ;
213
214 lalerte = [[NSAlert alloc] init] ;
215 [lalerte setAlertStyle:style] ;
216 if (Txt == nil)
217 [lalerte setMessageText:@"Linapple"] ;
218 else
219 [lalerte setMessageText:Txt] ;
220 [lalerte addButtonWithTitle:firstB] ;
221 if (alternateB != nil) [lalerte addButtonWithTitle:alternateB] ;
222 if (otherB != nil) [lalerte addButtonWithTitle:otherB] ;
223 if (informativeT!= nil) [lalerte setInformativeText:informativeT] ;
224 ret = [lalerte runModal] ;
225 [lalerte release] ;
226 switch (ret) {
227 case NSAlertFirstButtonReturn : return NSAlertDefaultReturn ;
228 break ;
229 case NSAlertSecondButtonReturn: return NSAlertAlternateReturn ;
230 break ;
231 default : return NSAlertOtherReturn ;
232 } ;
233 }
234
235 @end
3333
3434 //static unsigned char copy_row[4096];
3535
36 #include "Resources.h"
3637 #include "stdafx.h"
3738
3839
453454 bool fonts_initialization(void)
454455 {
455456 SDL_Surface *temp_surface;
456 temp_surface = SDL_LoadBMP("font.bmp");
457 temp_surface = SDL_LoadBMP(RESOURCE_FONT_BMP);
457458 if(!temp_surface) return false;
458459 font_sfc = SDL_DisplayFormat(temp_surface);
459460