update to Mini vMac b37.200912 with patch fixing wintergames

This commit is contained in:
Jesús A. Álvarez 2020-09-24 21:15:25 +02:00
parent d2fda78a9c
commit b72a6f058a
95 changed files with 762 additions and 45808 deletions

4
.gitmodules vendored
View File

@ -4,3 +4,7 @@
[submodule "libres"]
path = libres
url = https://github.com/zydeco/libres.git
[submodule "minivmac"]
path = minivmac
url = git@github.com:zydeco/minivmac.git
branch = wintergames

View File

@ -10,40 +10,8 @@
281BB6C91D231F7700BF87B0 /* MacII-640x480.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 28BDBEB71D230EEB0072ED5B /* MacII-640x480.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
283422D21CF8EF8C0088B634 /* MacPlus4M.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 283422CA1CF8EF8C0088B634 /* MacPlus4M.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
283422EE1CF8F2210088B634 /* MYOSGLUE.m in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8ECB1CD4CDC500FE25A8 /* MYOSGLUE.m */; };
283423601CF9C1050088B634 /* GLOBGLUE.c in Sources */ = {isa = PBXBuildFile; fileRef = 283423341CF9C0F10088B634 /* GLOBGLUE.c */; };
283423611CF9C10B0088B634 /* IWMEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 283423371CF9C0F10088B634 /* IWMEMDEV.c */; };
283423631CF9C1320088B634 /* KBRDEMDV.c in Sources */ = {isa = PBXBuildFile; fileRef = 283423391CF9C0F10088B634 /* KBRDEMDV.c */; };
283423641CF9C1320088B634 /* M68KITAB.c in Sources */ = {isa = PBXBuildFile; fileRef = 2834233B1CF9C0F10088B634 /* M68KITAB.c */; };
283423651CF9C1320088B634 /* MINEM68K.c in Sources */ = {isa = PBXBuildFile; fileRef = 2834233D1CF9C0F10088B634 /* MINEM68K.c */; };
283423661CF9C1320088B634 /* MOUSEMDV.c in Sources */ = {isa = PBXBuildFile; fileRef = 2834233F1CF9C0F10088B634 /* MOUSEMDV.c */; };
283423671CF9C1320088B634 /* PROGMAIN.c in Sources */ = {isa = PBXBuildFile; fileRef = 283423441CF9C0F10088B634 /* PROGMAIN.c */; };
283423681CF9C1320088B634 /* ROMEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 283423461CF9C0F10088B634 /* ROMEMDEV.c */; };
283423691CF9C1320088B634 /* RTCEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 283423481CF9C0F10088B634 /* RTCEMDEV.c */; };
2834236A1CF9C1320088B634 /* SCCEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 2834234A1CF9C0F10088B634 /* SCCEMDEV.c */; };
2834236B1CF9C1320088B634 /* SCRNEMDV.c in Sources */ = {isa = PBXBuildFile; fileRef = 2834234C1CF9C0F10088B634 /* SCRNEMDV.c */; };
2834236C1CF9C1320088B634 /* SCSIEMDV.c in Sources */ = {isa = PBXBuildFile; fileRef = 283423511CF9C0F10088B634 /* SCSIEMDV.c */; };
2834236D1CF9C1320088B634 /* SNDEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 283423531CF9C0F10088B634 /* SNDEMDEV.c */; };
2834236E1CF9C1320088B634 /* SONYEMDV.c in Sources */ = {isa = PBXBuildFile; fileRef = 283423551CF9C0F10088B634 /* SONYEMDV.c */; };
2834236F1CF9C1320088B634 /* VIAEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 2834235B1CF9C0F10088B634 /* VIAEMDEV.c */; };
283423881CF9C4CB0088B634 /* MYOSGLUE.m in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8ECB1CD4CDC500FE25A8 /* MYOSGLUE.m */; };
283423A31CF9C5880088B634 /* MacII.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 283423961CF9C4CB0088B634 /* MacII.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
283423D21CF9C66D0088B634 /* ADBEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 283423231CF9C0F10088B634 /* ADBEMDEV.c */; };
283423D31CF9C66D0088B634 /* ASCEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 283423271CF9C0F10088B634 /* ASCEMDEV.c */; };
283423D41CF9C66D0088B634 /* GLOBGLUE.c in Sources */ = {isa = PBXBuildFile; fileRef = 283423341CF9C0F10088B634 /* GLOBGLUE.c */; };
283423D51CF9C66D0088B634 /* IWMEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 283423371CF9C0F10088B634 /* IWMEMDEV.c */; };
283423D61CF9C66D0088B634 /* M68KITAB.c in Sources */ = {isa = PBXBuildFile; fileRef = 2834233B1CF9C0F10088B634 /* M68KITAB.c */; };
283423D71CF9C66D0088B634 /* MINEM68K.c in Sources */ = {isa = PBXBuildFile; fileRef = 2834233D1CF9C0F10088B634 /* MINEM68K.c */; };
283423D81CF9C66D0088B634 /* MOUSEMDV.c in Sources */ = {isa = PBXBuildFile; fileRef = 2834233F1CF9C0F10088B634 /* MOUSEMDV.c */; };
283423D91CF9C66D0088B634 /* PROGMAIN.c in Sources */ = {isa = PBXBuildFile; fileRef = 283423441CF9C0F10088B634 /* PROGMAIN.c */; };
283423DA1CF9C66D0088B634 /* ROMEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 283423461CF9C0F10088B634 /* ROMEMDEV.c */; };
283423DB1CF9C66D0088B634 /* RTCEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 283423481CF9C0F10088B634 /* RTCEMDEV.c */; };
283423DC1CF9C66D0088B634 /* SCCEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 2834234A1CF9C0F10088B634 /* SCCEMDEV.c */; };
283423DD1CF9C66D0088B634 /* SCRNEMDV.c in Sources */ = {isa = PBXBuildFile; fileRef = 2834234C1CF9C0F10088B634 /* SCRNEMDV.c */; };
283423DE1CF9C66D0088B634 /* SCSIEMDV.c in Sources */ = {isa = PBXBuildFile; fileRef = 283423511CF9C0F10088B634 /* SCSIEMDV.c */; };
283423DF1CF9C66D0088B634 /* SONYEMDV.c in Sources */ = {isa = PBXBuildFile; fileRef = 283423551CF9C0F10088B634 /* SONYEMDV.c */; };
283423E01CF9C66D0088B634 /* VIA2EMDV.c in Sources */ = {isa = PBXBuildFile; fileRef = 283423591CF9C0F10088B634 /* VIA2EMDV.c */; };
283423E11CF9C66D0088B634 /* VIAEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 2834235B1CF9C0F10088B634 /* VIAEMDEV.c */; };
283423E21CF9C66D0088B634 /* VIDEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 2834235D1CF9C0F10088B634 /* VIDEMDEV.c */; };
283423E91CFA32870088B634 /* Icon.png in Resources */ = {isa = PBXBuildFile; fileRef = 283423E31CFA32800088B634 /* Icon.png */; };
283423EA1CFA32870088B634 /* Icon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 283423E41CFA32800088B634 /* Icon@2x.png */; };
283423EB1CFA32870088B634 /* Icon@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 283423E51CFA32800088B634 /* Icon@3x.png */; };
@ -52,22 +20,7 @@
283423F11CFA329C0088B634 /* Icon@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 283423EE1CFA329C0088B634 /* Icon@3x.png */; };
28848B621CDE97D600B86C45 /* InsertDiskViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 28848B611CDE97D600B86C45 /* InsertDiskViewController.m */; };
28848B651CDE97E900B86C45 /* SettingsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 28848B641CDE97E900B86C45 /* SettingsViewController.m */; };
289710BA1CFB11BF0089D463 /* SONYEMDV.c in Sources */ = {isa = PBXBuildFile; fileRef = 283423551CF9C0F10088B634 /* SONYEMDV.c */; };
289710BB1CFB11BF0089D463 /* VIAEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 2834235B1CF9C0F10088B634 /* VIAEMDEV.c */; };
289710BC1CFB11BF0089D463 /* ROMEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 283423461CF9C0F10088B634 /* ROMEMDEV.c */; };
289710BD1CFB11BF0089D463 /* SNDEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 283423531CF9C0F10088B634 /* SNDEMDEV.c */; };
289710BE1CFB11BF0089D463 /* SCSIEMDV.c in Sources */ = {isa = PBXBuildFile; fileRef = 283423511CF9C0F10088B634 /* SCSIEMDV.c */; };
289710BF1CFB11BF0089D463 /* SCCEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 2834234A1CF9C0F10088B634 /* SCCEMDEV.c */; };
289710C01CFB11BF0089D463 /* SCRNEMDV.c in Sources */ = {isa = PBXBuildFile; fileRef = 2834234C1CF9C0F10088B634 /* SCRNEMDV.c */; };
289710C21CFB11BF0089D463 /* IWMEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 283423371CF9C0F10088B634 /* IWMEMDEV.c */; };
289710C31CFB11BF0089D463 /* MYOSGLUE.m in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8ECB1CD4CDC500FE25A8 /* MYOSGLUE.m */; };
289710C41CFB11BF0089D463 /* MOUSEMDV.c in Sources */ = {isa = PBXBuildFile; fileRef = 2834233F1CF9C0F10088B634 /* MOUSEMDV.c */; };
289710C51CFB11BF0089D463 /* GLOBGLUE.c in Sources */ = {isa = PBXBuildFile; fileRef = 283423341CF9C0F10088B634 /* GLOBGLUE.c */; };
289710C61CFB11BF0089D463 /* KBRDEMDV.c in Sources */ = {isa = PBXBuildFile; fileRef = 283423391CF9C0F10088B634 /* KBRDEMDV.c */; };
289710C71CFB11BF0089D463 /* MINEM68K.c in Sources */ = {isa = PBXBuildFile; fileRef = 2834233D1CF9C0F10088B634 /* MINEM68K.c */; };
289710C81CFB11BF0089D463 /* M68KITAB.c in Sources */ = {isa = PBXBuildFile; fileRef = 2834233B1CF9C0F10088B634 /* M68KITAB.c */; };
289710C91CFB11BF0089D463 /* PROGMAIN.c in Sources */ = {isa = PBXBuildFile; fileRef = 283423441CF9C0F10088B634 /* PROGMAIN.c */; };
289710CA1CFB11BF0089D463 /* RTCEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 283423481CF9C0F10088B634 /* RTCEMDEV.c */; };
289710DC1CFB12240089D463 /* Icon.png in Resources */ = {isa = PBXBuildFile; fileRef = 289710D81CFB121F0089D463 /* Icon.png */; };
289710DD1CFB12240089D463 /* Icon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 289710D91CFB121F0089D463 /* Icon@2x.png */; };
289710DE1CFB12240089D463 /* Icon@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 289710DA1CFB121F0089D463 /* Icon@3x.png */; };
@ -78,29 +31,79 @@
28BA89821CE7336500A98104 /* Keyboard Layouts in Resources */ = {isa = PBXBuildFile; fileRef = 28BA89811CE7336500A98104 /* Keyboard Layouts */; };
28BA89851CE73E7200A98104 /* TrackPad.m in Sources */ = {isa = PBXBuildFile; fileRef = 28BA89841CE73E7200A98104 /* TrackPad.m */; };
28BA89881CE73FBC00A98104 /* MNVMApplication.m in Sources */ = {isa = PBXBuildFile; fileRef = 28BA89871CE73FBC00A98104 /* MNVMApplication.m */; };
28BDBE9C1D230EEB0072ED5B /* SONYEMDV.c in Sources */ = {isa = PBXBuildFile; fileRef = 283423551CF9C0F10088B634 /* SONYEMDV.c */; };
28BDBE9D1D230EEB0072ED5B /* SCSIEMDV.c in Sources */ = {isa = PBXBuildFile; fileRef = 283423511CF9C0F10088B634 /* SCSIEMDV.c */; };
28BDBE9E1D230EEB0072ED5B /* SCRNEMDV.c in Sources */ = {isa = PBXBuildFile; fileRef = 2834234C1CF9C0F10088B634 /* SCRNEMDV.c */; };
28BDBE9F1D230EEB0072ED5B /* RTCEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 283423481CF9C0F10088B634 /* RTCEMDEV.c */; };
28BDBEA01D230EEB0072ED5B /* MYOSGLUE.m in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8ECB1CD4CDC500FE25A8 /* MYOSGLUE.m */; };
28BDBEA11D230EEB0072ED5B /* MINEM68K.c in Sources */ = {isa = PBXBuildFile; fileRef = 2834233D1CF9C0F10088B634 /* MINEM68K.c */; };
28BDBEA21D230EEB0072ED5B /* MOUSEMDV.c in Sources */ = {isa = PBXBuildFile; fileRef = 2834233F1CF9C0F10088B634 /* MOUSEMDV.c */; };
28BDBEA31D230EEB0072ED5B /* VIAEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 2834235B1CF9C0F10088B634 /* VIAEMDEV.c */; };
28BDBEA41D230EEB0072ED5B /* VIA2EMDV.c in Sources */ = {isa = PBXBuildFile; fileRef = 283423591CF9C0F10088B634 /* VIA2EMDV.c */; };
28BDBEA51D230EEB0072ED5B /* M68KITAB.c in Sources */ = {isa = PBXBuildFile; fileRef = 2834233B1CF9C0F10088B634 /* M68KITAB.c */; };
28BDBEA61D230EEB0072ED5B /* GLOBGLUE.c in Sources */ = {isa = PBXBuildFile; fileRef = 283423341CF9C0F10088B634 /* GLOBGLUE.c */; };
28BDBEA71D230EEB0072ED5B /* ROMEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 283423461CF9C0F10088B634 /* ROMEMDEV.c */; };
28BDBEA81D230EEB0072ED5B /* PROGMAIN.c in Sources */ = {isa = PBXBuildFile; fileRef = 283423441CF9C0F10088B634 /* PROGMAIN.c */; };
28BDBEA91D230EEB0072ED5B /* ADBEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 283423231CF9C0F10088B634 /* ADBEMDEV.c */; };
28BDBEAA1D230EEB0072ED5B /* ASCEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 283423271CF9C0F10088B634 /* ASCEMDEV.c */; };
28BDBEAB1D230EEB0072ED5B /* SCCEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 2834234A1CF9C0F10088B634 /* SCCEMDEV.c */; };
28BDBEAC1D230EEB0072ED5B /* IWMEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 283423371CF9C0F10088B634 /* IWMEMDEV.c */; };
28BDBEAD1D230EEB0072ED5B /* VIDEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 2834235D1CF9C0F10088B634 /* VIDEMDEV.c */; };
28BDBEB11D230EEB0072ED5B /* Icon.png in Resources */ = {isa = PBXBuildFile; fileRef = 283423EC1CFA329C0088B634 /* Icon.png */; };
28BDBEB21D230EEB0072ED5B /* Icon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 283423ED1CFA329C0088B634 /* Icon@2x.png */; };
28BDBEB31D230EEB0072ED5B /* Icon@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 283423EE1CFA329C0088B634 /* Icon@3x.png */; };
28CE8ED61CD4F56C00FE25A8 /* ScreenView.m in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8ED51CD4F56C00FE25A8 /* ScreenView.m */; };
28D5A3FD1CD6868F001A33F6 /* TouchScreen.m in Sources */ = {isa = PBXBuildFile; fileRef = 28D5A3FC1CD6868E001A33F6 /* TouchScreen.m */; };
28E3B7DF251D0F13007C273F /* MOUSEMDV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28E3B7CC251D0F12007C273F /* MOUSEMDV.c */; };
28E3B7E0251D0F13007C273F /* MOUSEMDV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28E3B7CC251D0F12007C273F /* MOUSEMDV.c */; };
28E3B7E1251D0F13007C273F /* MOUSEMDV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28E3B7CC251D0F12007C273F /* MOUSEMDV.c */; };
28E3B7E2251D0F13007C273F /* MOUSEMDV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28E3B7CC251D0F12007C273F /* MOUSEMDV.c */; };
28E3B7E3251D0F13007C273F /* RTCEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28E3B7CD251D0F12007C273F /* RTCEMDEV.c */; };
28E3B7E4251D0F13007C273F /* RTCEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28E3B7CD251D0F12007C273F /* RTCEMDEV.c */; };
28E3B7E5251D0F13007C273F /* RTCEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28E3B7CD251D0F12007C273F /* RTCEMDEV.c */; };
28E3B7E6251D0F13007C273F /* RTCEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28E3B7CD251D0F12007C273F /* RTCEMDEV.c */; };
28E3B7E7251D0F13007C273F /* GLOBGLUE.c in Sources */ = {isa = PBXBuildFile; fileRef = 28E3B7CE251D0F12007C273F /* GLOBGLUE.c */; };
28E3B7E8251D0F13007C273F /* GLOBGLUE.c in Sources */ = {isa = PBXBuildFile; fileRef = 28E3B7CE251D0F12007C273F /* GLOBGLUE.c */; };
28E3B7E9251D0F13007C273F /* GLOBGLUE.c in Sources */ = {isa = PBXBuildFile; fileRef = 28E3B7CE251D0F12007C273F /* GLOBGLUE.c */; };
28E3B7EA251D0F13007C273F /* GLOBGLUE.c in Sources */ = {isa = PBXBuildFile; fileRef = 28E3B7CE251D0F12007C273F /* GLOBGLUE.c */; };
28E3B7EB251D0F13007C273F /* M68KITAB.c in Sources */ = {isa = PBXBuildFile; fileRef = 28E3B7CF251D0F12007C273F /* M68KITAB.c */; };
28E3B7EC251D0F13007C273F /* M68KITAB.c in Sources */ = {isa = PBXBuildFile; fileRef = 28E3B7CF251D0F12007C273F /* M68KITAB.c */; };
28E3B7ED251D0F13007C273F /* M68KITAB.c in Sources */ = {isa = PBXBuildFile; fileRef = 28E3B7CF251D0F12007C273F /* M68KITAB.c */; };
28E3B7EE251D0F13007C273F /* M68KITAB.c in Sources */ = {isa = PBXBuildFile; fileRef = 28E3B7CF251D0F12007C273F /* M68KITAB.c */; };
28E3B7EF251D0F13007C273F /* PROGMAIN.c in Sources */ = {isa = PBXBuildFile; fileRef = 28E3B7D0251D0F12007C273F /* PROGMAIN.c */; };
28E3B7F0251D0F13007C273F /* PROGMAIN.c in Sources */ = {isa = PBXBuildFile; fileRef = 28E3B7D0251D0F12007C273F /* PROGMAIN.c */; };
28E3B7F1251D0F13007C273F /* PROGMAIN.c in Sources */ = {isa = PBXBuildFile; fileRef = 28E3B7D0251D0F12007C273F /* PROGMAIN.c */; };
28E3B7F2251D0F13007C273F /* PROGMAIN.c in Sources */ = {isa = PBXBuildFile; fileRef = 28E3B7D0251D0F12007C273F /* PROGMAIN.c */; };
28E3B7F3251D0F13007C273F /* SONYEMDV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28E3B7D1251D0F12007C273F /* SONYEMDV.c */; };
28E3B7F4251D0F13007C273F /* SONYEMDV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28E3B7D1251D0F12007C273F /* SONYEMDV.c */; };
28E3B7F5251D0F13007C273F /* SONYEMDV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28E3B7D1251D0F12007C273F /* SONYEMDV.c */; };
28E3B7F6251D0F13007C273F /* SONYEMDV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28E3B7D1251D0F12007C273F /* SONYEMDV.c */; };
28E3B7F8251D0F13007C273F /* ADBEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28E3B7D2251D0F13007C273F /* ADBEMDEV.c */; };
28E3B7FA251D0F13007C273F /* ADBEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28E3B7D2251D0F13007C273F /* ADBEMDEV.c */; };
28E3B7FB251D0F13007C273F /* MINEM68K.c in Sources */ = {isa = PBXBuildFile; fileRef = 28E3B7D3251D0F13007C273F /* MINEM68K.c */; };
28E3B7FC251D0F13007C273F /* MINEM68K.c in Sources */ = {isa = PBXBuildFile; fileRef = 28E3B7D3251D0F13007C273F /* MINEM68K.c */; };
28E3B7FD251D0F13007C273F /* MINEM68K.c in Sources */ = {isa = PBXBuildFile; fileRef = 28E3B7D3251D0F13007C273F /* MINEM68K.c */; };
28E3B7FE251D0F13007C273F /* MINEM68K.c in Sources */ = {isa = PBXBuildFile; fileRef = 28E3B7D3251D0F13007C273F /* MINEM68K.c */; };
28E3B7FF251D0F13007C273F /* SCRNEMDV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28E3B7D4251D0F13007C273F /* SCRNEMDV.c */; };
28E3B800251D0F13007C273F /* SCRNEMDV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28E3B7D4251D0F13007C273F /* SCRNEMDV.c */; };
28E3B801251D0F13007C273F /* SCRNEMDV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28E3B7D4251D0F13007C273F /* SCRNEMDV.c */; };
28E3B802251D0F13007C273F /* SCRNEMDV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28E3B7D4251D0F13007C273F /* SCRNEMDV.c */; };
28E3B803251D0F13007C273F /* IWMEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28E3B7D5251D0F13007C273F /* IWMEMDEV.c */; };
28E3B804251D0F13007C273F /* IWMEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28E3B7D5251D0F13007C273F /* IWMEMDEV.c */; };
28E3B805251D0F13007C273F /* IWMEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28E3B7D5251D0F13007C273F /* IWMEMDEV.c */; };
28E3B806251D0F13007C273F /* IWMEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28E3B7D5251D0F13007C273F /* IWMEMDEV.c */; };
28E3B808251D0F13007C273F /* VIA2EMDV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28E3B7D6251D0F13007C273F /* VIA2EMDV.c */; };
28E3B80A251D0F13007C273F /* VIA2EMDV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28E3B7D6251D0F13007C273F /* VIA2EMDV.c */; };
28E3B80B251D0F13007C273F /* SCCEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28E3B7D7251D0F13007C273F /* SCCEMDEV.c */; };
28E3B80C251D0F13007C273F /* SCCEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28E3B7D7251D0F13007C273F /* SCCEMDEV.c */; };
28E3B80D251D0F13007C273F /* SCCEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28E3B7D7251D0F13007C273F /* SCCEMDEV.c */; };
28E3B80E251D0F13007C273F /* SCCEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28E3B7D7251D0F13007C273F /* SCCEMDEV.c */; };
28E3B810251D0F13007C273F /* VIDEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28E3B7D8251D0F13007C273F /* VIDEMDEV.c */; };
28E3B812251D0F13007C273F /* VIDEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28E3B7D8251D0F13007C273F /* VIDEMDEV.c */; };
28E3B813251D0F13007C273F /* SCSIEMDV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28E3B7D9251D0F13007C273F /* SCSIEMDV.c */; };
28E3B814251D0F13007C273F /* SCSIEMDV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28E3B7D9251D0F13007C273F /* SCSIEMDV.c */; };
28E3B815251D0F13007C273F /* SCSIEMDV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28E3B7D9251D0F13007C273F /* SCSIEMDV.c */; };
28E3B816251D0F13007C273F /* SCSIEMDV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28E3B7D9251D0F13007C273F /* SCSIEMDV.c */; };
28E3B817251D0F13007C273F /* ROMEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28E3B7DA251D0F13007C273F /* ROMEMDEV.c */; };
28E3B818251D0F13007C273F /* ROMEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28E3B7DA251D0F13007C273F /* ROMEMDEV.c */; };
28E3B819251D0F13007C273F /* ROMEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28E3B7DA251D0F13007C273F /* ROMEMDEV.c */; };
28E3B81A251D0F13007C273F /* ROMEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28E3B7DA251D0F13007C273F /* ROMEMDEV.c */; };
28E3B81B251D0F13007C273F /* KBRDEMDV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28E3B7DB251D0F13007C273F /* KBRDEMDV.c */; };
28E3B81D251D0F13007C273F /* KBRDEMDV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28E3B7DB251D0F13007C273F /* KBRDEMDV.c */; };
28E3B81F251D0F13007C273F /* VIAEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28E3B7DC251D0F13007C273F /* VIAEMDEV.c */; };
28E3B821251D0F13007C273F /* VIAEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28E3B7DC251D0F13007C273F /* VIAEMDEV.c */; };
28E3B823251D0F13007C273F /* SNDEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28E3B7DD251D0F13007C273F /* SNDEMDEV.c */; };
28E3B825251D0F13007C273F /* SNDEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28E3B7DD251D0F13007C273F /* SNDEMDEV.c */; };
28E3B828251D0F13007C273F /* ASCEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28E3B7DE251D0F13007C273F /* ASCEMDEV.c */; };
28E3B82A251D0F13007C273F /* ASCEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28E3B7DE251D0F13007C273F /* ASCEMDEV.c */; };
28E3B838251D1EC1007C273F /* CNFUDALL.h in Headers */ = {isa = PBXBuildFile; fileRef = 28E3B835251D1EC1007C273F /* CNFUDALL.h */; };
28E3B839251D1EC1007C273F /* CNFUDOSG.h in Headers */ = {isa = PBXBuildFile; fileRef = 28E3B836251D1EC1007C273F /* CNFUDOSG.h */; };
28E3B83A251D1EC1007C273F /* CNFUDPIC.h in Headers */ = {isa = PBXBuildFile; fileRef = 28E3B837251D1EC1007C273F /* CNFUDPIC.h */; };
28E3B83B251D1FA6007C273F /* VIAEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28E3B7DC251D0F13007C273F /* VIAEMDEV.c */; };
28E3B83C251D1FA7007C273F /* VIAEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28E3B7DC251D0F13007C273F /* VIAEMDEV.c */; };
28F676C21CD15E0B00FC6FA6 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 28F676C11CD15E0B00FC6FA6 /* main.m */; };
28F676C51CD15E0B00FC6FA6 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 28F676C41CD15E0B00FC6FA6 /* AppDelegate.m */; };
28F676C81CD15E0B00FC6FA6 /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 28F676C71CD15E0B00FC6FA6 /* ViewController.m */; };
@ -202,69 +205,9 @@
/* Begin PBXFileReference section */
283422CA1CF8EF8C0088B634 /* MacPlus4M.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = MacPlus4M.framework; sourceTree = BUILT_PRODUCTS_DIR; };
283422D71CF8EFD80088B634 /* EmulatorProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = EmulatorProtocol.h; sourceTree = "<group>"; };
283422E71CF8F1C80088B634 /* CNFGGLOB.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CNFGGLOB.h; sourceTree = "<group>"; };
283422E91CF8F1C80088B634 /* EMCONFIG.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EMCONFIG.h; sourceTree = "<group>"; };
283423221CF9C0F10088B634 /* ACTVCODE.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = ACTVCODE.h; sourceTree = "<group>"; };
283423231CF9C0F10088B634 /* ADBEMDEV.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; lineEnding = 0; path = ADBEMDEV.c; sourceTree = "<group>"; };
283423241CF9C0F10088B634 /* ADBEMDEV.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = ADBEMDEV.h; sourceTree = "<group>"; };
283423251CF9C0F10088B634 /* ADBSHARE.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = ADBSHARE.h; sourceTree = "<group>"; };
283423261CF9C0F10088B634 /* ALTKEYSM.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = ALTKEYSM.h; sourceTree = "<group>"; };
283423271CF9C0F10088B634 /* ASCEMDEV.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; lineEnding = 0; path = ASCEMDEV.c; sourceTree = "<group>"; };
283423281CF9C0F10088B634 /* ASCEMDEV.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = ASCEMDEV.h; sourceTree = "<group>"; };
283423291CF9C0F10088B634 /* BPFILTER.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = BPFILTER.h; sourceTree = "<group>"; };
2834232A1CF9C0F10088B634 /* COMOSGLU.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = COMOSGLU.h; sourceTree = "<group>"; };
2834232B1CF9C0F10088B634 /* CONTROLM.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = CONTROLM.h; sourceTree = "<group>"; };
2834232C1CF9C0F10088B634 /* DATE2SEC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = DATE2SEC.h; sourceTree = "<group>"; };
2834232D1CF9C0F10088B634 /* DISAM68K.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; lineEnding = 0; path = DISAM68K.c; sourceTree = "<group>"; };
2834232E1CF9C0F10088B634 /* DISAM68K.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = DISAM68K.h; sourceTree = "<group>"; };
2834232F1CF9C0F10088B634 /* ENDIANAC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = ENDIANAC.h; sourceTree = "<group>"; };
283423311CF9C0F10088B634 /* FPCPEMDV.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = FPCPEMDV.h; sourceTree = "<group>"; };
283423321CF9C0F10088B634 /* FPMATHEM.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = FPMATHEM.h; sourceTree = "<group>"; };
283423341CF9C0F10088B634 /* GLOBGLUE.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; lineEnding = 0; path = GLOBGLUE.c; sourceTree = "<group>"; };
283423351CF9C0F10088B634 /* GLOBGLUE.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = GLOBGLUE.h; sourceTree = "<group>"; };
283423361CF9C0F10088B634 /* INTLCHAR.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = INTLCHAR.h; sourceTree = "<group>"; };
283423371CF9C0F10088B634 /* IWMEMDEV.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; lineEnding = 0; path = IWMEMDEV.c; sourceTree = "<group>"; };
283423381CF9C0F10088B634 /* IWMEMDEV.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = IWMEMDEV.h; sourceTree = "<group>"; };
283423391CF9C0F10088B634 /* KBRDEMDV.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; lineEnding = 0; path = KBRDEMDV.c; sourceTree = "<group>"; };
2834233A1CF9C0F10088B634 /* KBRDEMDV.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = KBRDEMDV.h; sourceTree = "<group>"; };
2834233B1CF9C0F10088B634 /* M68KITAB.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; lineEnding = 0; path = M68KITAB.c; sourceTree = "<group>"; };
2834233C1CF9C0F10088B634 /* M68KITAB.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = M68KITAB.h; sourceTree = "<group>"; };
2834233D1CF9C0F10088B634 /* MINEM68K.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; lineEnding = 0; path = MINEM68K.c; sourceTree = "<group>"; };
2834233E1CF9C0F10088B634 /* MINEM68K.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = MINEM68K.h; sourceTree = "<group>"; };
2834233F1CF9C0F10088B634 /* MOUSEMDV.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; lineEnding = 0; path = MOUSEMDV.c; sourceTree = "<group>"; };
283423401CF9C0F10088B634 /* MOUSEMDV.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = MOUSEMDV.h; sourceTree = "<group>"; };
283423411CF9C0F10088B634 /* MYOSGLUE.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = MYOSGLUE.h; sourceTree = "<group>"; };
283423421CF9C0F10088B634 /* PMUEMDEV.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; lineEnding = 0; path = PMUEMDEV.c; sourceTree = "<group>"; };
283423431CF9C0F10088B634 /* PMUEMDEV.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = PMUEMDEV.h; sourceTree = "<group>"; };
283423441CF9C0F10088B634 /* PROGMAIN.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; lineEnding = 0; path = PROGMAIN.c; sourceTree = "<group>"; };
283423451CF9C0F10088B634 /* PROGMAIN.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = PROGMAIN.h; sourceTree = "<group>"; };
283423461CF9C0F10088B634 /* ROMEMDEV.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; lineEnding = 0; path = ROMEMDEV.c; sourceTree = "<group>"; };
283423471CF9C0F10088B634 /* ROMEMDEV.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = ROMEMDEV.h; sourceTree = "<group>"; };
283423481CF9C0F10088B634 /* RTCEMDEV.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; lineEnding = 0; path = RTCEMDEV.c; sourceTree = "<group>"; };
283423491CF9C0F10088B634 /* RTCEMDEV.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = RTCEMDEV.h; sourceTree = "<group>"; };
2834234A1CF9C0F10088B634 /* SCCEMDEV.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; lineEnding = 0; path = SCCEMDEV.c; sourceTree = "<group>"; };
2834234B1CF9C0F10088B634 /* SCCEMDEV.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = SCCEMDEV.h; sourceTree = "<group>"; };
2834234C1CF9C0F10088B634 /* SCRNEMDV.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; lineEnding = 0; path = SCRNEMDV.c; sourceTree = "<group>"; };
2834234D1CF9C0F10088B634 /* SCRNEMDV.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = SCRNEMDV.h; sourceTree = "<group>"; };
2834234E1CF9C0F10088B634 /* SCRNHACK.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = SCRNHACK.h; sourceTree = "<group>"; };
2834234F1CF9C0F10088B634 /* SCRNMAPR.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = SCRNMAPR.h; sourceTree = "<group>"; };
283423501CF9C0F10088B634 /* SCRNTRNS.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = SCRNTRNS.h; sourceTree = "<group>"; };
283423511CF9C0F10088B634 /* SCSIEMDV.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; lineEnding = 0; path = SCSIEMDV.c; sourceTree = "<group>"; };
283423521CF9C0F10088B634 /* SCSIEMDV.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = SCSIEMDV.h; sourceTree = "<group>"; };
283423531CF9C0F10088B634 /* SNDEMDEV.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; lineEnding = 0; path = SNDEMDEV.c; sourceTree = "<group>"; };
283423541CF9C0F10088B634 /* SNDEMDEV.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = SNDEMDEV.h; sourceTree = "<group>"; };
283423551CF9C0F10088B634 /* SONYEMDV.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; lineEnding = 0; path = SONYEMDV.c; sourceTree = "<group>"; };
283423561CF9C0F10088B634 /* SONYEMDV.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = SONYEMDV.h; sourceTree = "<group>"; };
283423581CF9C0F10088B634 /* SYSDEPNS.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = SYSDEPNS.h; sourceTree = "<group>"; };
283423591CF9C0F10088B634 /* VIA2EMDV.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; lineEnding = 0; path = VIA2EMDV.c; sourceTree = "<group>"; };
2834235A1CF9C0F10088B634 /* VIA2EMDV.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = VIA2EMDV.h; sourceTree = "<group>"; };
2834235B1CF9C0F10088B634 /* VIAEMDEV.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; lineEnding = 0; path = VIAEMDEV.c; sourceTree = "<group>"; };
2834235C1CF9C0F10088B634 /* VIAEMDEV.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = VIAEMDEV.h; sourceTree = "<group>"; };
2834235D1CF9C0F10088B634 /* VIDEMDEV.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; lineEnding = 0; path = VIDEMDEV.c; sourceTree = "<group>"; };
2834235E1CF9C0F10088B634 /* VIDEMDEV.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = VIDEMDEV.h; sourceTree = "<group>"; };
283422E71CF8F1C80088B634 /* CNFUDOSG.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CNFUDOSG.h; sourceTree = "<group>"; };
283422E91CF8F1C80088B634 /* CNFUDALL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CNFUDALL.h; sourceTree = "<group>"; };
283423961CF9C4CB0088B634 /* MacII.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = MacII.framework; sourceTree = BUILT_PRODUCTS_DIR; };
283423991CF9C5380088B634 /* CNFGGLOB.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CNFGGLOB.h; sourceTree = "<group>"; };
2834239B1CF9C5380088B634 /* EMCONFIG.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EMCONFIG.h; sourceTree = "<group>"; };
283423E31CFA32800088B634 /* Icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Icon.png; sourceTree = "<group>"; };
283423E41CFA32800088B634 /* Icon@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Icon@2x.png"; sourceTree = "<group>"; };
283423E51CFA32800088B634 /* Icon@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Icon@3x.png"; sourceTree = "<group>"; };
@ -277,10 +220,9 @@
28848B611CDE97D600B86C45 /* InsertDiskViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = InsertDiskViewController.m; sourceTree = "<group>"; };
28848B631CDE97E900B86C45 /* SettingsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SettingsViewController.h; sourceTree = "<group>"; };
28848B641CDE97E900B86C45 /* SettingsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SettingsViewController.m; sourceTree = "<group>"; };
289710B71CFB0DC70089D463 /* CNFGGLOB.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CNFGGLOB.h; sourceTree = "<group>"; };
289710D41CFB11BF0089D463 /* Mac128K.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Mac128K.framework; sourceTree = BUILT_PRODUCTS_DIR; };
289710D61CFB121F0089D463 /* CNFGGLOB.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CNFGGLOB.h; sourceTree = "<group>"; };
289710D71CFB121F0089D463 /* EMCONFIG.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = EMCONFIG.h; sourceTree = "<group>"; };
289710D61CFB121F0089D463 /* CNFUDOSG.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CNFUDOSG.h; sourceTree = "<group>"; };
289710D71CFB121F0089D463 /* CNFUDALL.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CNFUDALL.h; sourceTree = "<group>"; };
289710D81CFB121F0089D463 /* Icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Icon.png; sourceTree = "<group>"; };
289710D91CFB121F0089D463 /* Icon@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Icon@2x.png"; sourceTree = "<group>"; };
289710DA1CFB121F0089D463 /* Icon@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Icon@3x.png"; sourceTree = "<group>"; };
@ -296,15 +238,43 @@
28BA89861CE73FBC00A98104 /* MNVMApplication.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MNVMApplication.h; sourceTree = "<group>"; };
28BA89871CE73FBC00A98104 /* MNVMApplication.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MNVMApplication.m; sourceTree = "<group>"; };
28BDBEB71D230EEB0072ED5B /* MacII-640x480.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = "MacII-640x480.framework"; sourceTree = BUILT_PRODUCTS_DIR; };
28BDBEBA1D230F280072ED5B /* CNFGGLOB.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CNFGGLOB.h; sourceTree = "<group>"; };
28BDBEBB1D230F280072ED5B /* EMCONFIG.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = EMCONFIG.h; sourceTree = "<group>"; };
28C63A5D1F76970000BB02B3 /* HPMCHACK.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HPMCHACK.h; sourceTree = "<group>"; };
28C63A5E1F76979500BB02B3 /* STRCNENG.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = STRCNENG.h; sourceTree = "<group>"; };
28CE8ECB1CD4CDC500FE25A8 /* MYOSGLUE.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MYOSGLUE.m; sourceTree = "<group>"; };
28CE8ED41CD4F56C00FE25A8 /* ScreenView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScreenView.h; sourceTree = "<group>"; };
28CE8ED51CD4F56C00FE25A8 /* ScreenView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ScreenView.m; sourceTree = "<group>"; };
28D5A3FB1CD6868E001A33F6 /* TouchScreen.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TouchScreen.h; sourceTree = "<group>"; };
28D5A3FC1CD6868E001A33F6 /* TouchScreen.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TouchScreen.m; sourceTree = "<group>"; };
28E3B7CC251D0F12007C273F /* MOUSEMDV.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = MOUSEMDV.c; sourceTree = "<group>"; };
28E3B7CD251D0F12007C273F /* RTCEMDEV.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = RTCEMDEV.c; sourceTree = "<group>"; };
28E3B7CE251D0F12007C273F /* GLOBGLUE.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = GLOBGLUE.c; sourceTree = "<group>"; };
28E3B7CF251D0F12007C273F /* M68KITAB.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = M68KITAB.c; sourceTree = "<group>"; };
28E3B7D0251D0F12007C273F /* PROGMAIN.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = PROGMAIN.c; sourceTree = "<group>"; };
28E3B7D1251D0F12007C273F /* SONYEMDV.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SONYEMDV.c; sourceTree = "<group>"; };
28E3B7D2251D0F13007C273F /* ADBEMDEV.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ADBEMDEV.c; sourceTree = "<group>"; };
28E3B7D3251D0F13007C273F /* MINEM68K.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = MINEM68K.c; sourceTree = "<group>"; };
28E3B7D4251D0F13007C273F /* SCRNEMDV.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SCRNEMDV.c; sourceTree = "<group>"; };
28E3B7D5251D0F13007C273F /* IWMEMDEV.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = IWMEMDEV.c; sourceTree = "<group>"; };
28E3B7D6251D0F13007C273F /* VIA2EMDV.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = VIA2EMDV.c; sourceTree = "<group>"; };
28E3B7D7251D0F13007C273F /* SCCEMDEV.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SCCEMDEV.c; sourceTree = "<group>"; };
28E3B7D8251D0F13007C273F /* VIDEMDEV.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = VIDEMDEV.c; sourceTree = "<group>"; };
28E3B7D9251D0F13007C273F /* SCSIEMDV.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SCSIEMDV.c; sourceTree = "<group>"; };
28E3B7DA251D0F13007C273F /* ROMEMDEV.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ROMEMDEV.c; sourceTree = "<group>"; };
28E3B7DB251D0F13007C273F /* KBRDEMDV.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = KBRDEMDV.c; sourceTree = "<group>"; };
28E3B7DC251D0F13007C273F /* VIAEMDEV.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = VIAEMDEV.c; sourceTree = "<group>"; };
28E3B7DD251D0F13007C273F /* SNDEMDEV.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SNDEMDEV.c; sourceTree = "<group>"; };
28E3B7DE251D0F13007C273F /* ASCEMDEV.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ASCEMDEV.c; sourceTree = "<group>"; };
28E3B82B251D10A8007C273F /* CNFUIOSG.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CNFUIOSG.h; sourceTree = "<group>"; };
28E3B82C251D1255007C273F /* CNFUIALL.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CNFUIALL.h; sourceTree = "<group>"; };
28E3B82D251D144E007C273F /* CNFUDPIC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CNFUDPIC.h; sourceTree = "<group>"; };
28E3B82E251D14A7007C273F /* CNFUDPIC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CNFUDPIC.h; sourceTree = "<group>"; };
28E3B82F251D167F007C273F /* STRCONST.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = STRCONST.h; sourceTree = "<group>"; };
28E3B830251D18D9007C273F /* CNFUIPIC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CNFUIPIC.h; sourceTree = "<group>"; };
28E3B831251D195D007C273F /* PICOMMON.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PICOMMON.h; sourceTree = "<group>"; };
28E3B832251D1E8A007C273F /* CNFUDALL.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CNFUDALL.h; sourceTree = "<group>"; };
28E3B833251D1E8A007C273F /* CNFUDPIC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CNFUDPIC.h; sourceTree = "<group>"; };
28E3B834251D1E8A007C273F /* CNFUDOSG.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CNFUDOSG.h; sourceTree = "<group>"; };
28E3B835251D1EC1007C273F /* CNFUDALL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CNFUDALL.h; sourceTree = "<group>"; };
28E3B836251D1EC1007C273F /* CNFUDOSG.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CNFUDOSG.h; sourceTree = "<group>"; };
28E3B837251D1EC1007C273F /* CNFUDPIC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CNFUDPIC.h; sourceTree = "<group>"; };
28F676BD1CD15E0B00FC6FA6 /* Mini vMac.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Mini vMac.app"; sourceTree = BUILT_PRODUCTS_DIR; };
28F676C11CD15E0B00FC6FA6 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
28F676C31CD15E0B00FC6FA6 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
@ -427,8 +397,9 @@
283422CB1CF8EF8C0088B634 /* MacPlus4M */ = {
isa = PBXGroup;
children = (
283422E71CF8F1C80088B634 /* CNFGGLOB.h */,
283422E91CF8F1C80088B634 /* EMCONFIG.h */,
283422E91CF8F1C80088B634 /* CNFUDALL.h */,
283422E71CF8F1C80088B634 /* CNFUDOSG.h */,
28E3B82D251D144E007C273F /* CNFUDPIC.h */,
283423E31CFA32800088B634 /* Icon.png */,
283423E41CFA32800088B634 /* Icon@2x.png */,
283423E51CFA32800088B634 /* Icon@3x.png */,
@ -451,88 +422,25 @@
283422F01CF8F3530088B634 /* Shared */ = {
isa = PBXGroup;
children = (
283423211CF9C0F10088B634 /* mnvm_core */,
28E3B7CB251D0EEC007C273F /* src */,
283422D71CF8EFD80088B634 /* EmulatorProtocol.h */,
28CE8ECB1CD4CDC500FE25A8 /* MYOSGLUE.m */,
289710B71CFB0DC70089D463 /* CNFGGLOB.h */,
285A8C901D05AFD3002993DE /* PlugIn-Info.plist */,
28F875921D29402B001E99EB /* PlugIn-Capabilities.plist.xml */,
28E3B82C251D1255007C273F /* CNFUIALL.h */,
28E3B82B251D10A8007C273F /* CNFUIOSG.h */,
28E3B830251D18D9007C273F /* CNFUIPIC.h */,
28E3B82F251D167F007C273F /* STRCONST.h */,
);
name = Shared;
sourceTree = "<group>";
};
283423211CF9C0F10088B634 /* mnvm_core */ = {
isa = PBXGroup;
children = (
283423221CF9C0F10088B634 /* ACTVCODE.h */,
283423231CF9C0F10088B634 /* ADBEMDEV.c */,
283423241CF9C0F10088B634 /* ADBEMDEV.h */,
283423251CF9C0F10088B634 /* ADBSHARE.h */,
283423261CF9C0F10088B634 /* ALTKEYSM.h */,
283423271CF9C0F10088B634 /* ASCEMDEV.c */,
283423281CF9C0F10088B634 /* ASCEMDEV.h */,
283423291CF9C0F10088B634 /* BPFILTER.h */,
2834232A1CF9C0F10088B634 /* COMOSGLU.h */,
2834232B1CF9C0F10088B634 /* CONTROLM.h */,
2834232C1CF9C0F10088B634 /* DATE2SEC.h */,
2834232D1CF9C0F10088B634 /* DISAM68K.c */,
2834232E1CF9C0F10088B634 /* DISAM68K.h */,
2834232F1CF9C0F10088B634 /* ENDIANAC.h */,
283423311CF9C0F10088B634 /* FPCPEMDV.h */,
283423321CF9C0F10088B634 /* FPMATHEM.h */,
283423341CF9C0F10088B634 /* GLOBGLUE.c */,
283423351CF9C0F10088B634 /* GLOBGLUE.h */,
28C63A5D1F76970000BB02B3 /* HPMCHACK.h */,
283423361CF9C0F10088B634 /* INTLCHAR.h */,
283423371CF9C0F10088B634 /* IWMEMDEV.c */,
283423381CF9C0F10088B634 /* IWMEMDEV.h */,
283423391CF9C0F10088B634 /* KBRDEMDV.c */,
2834233A1CF9C0F10088B634 /* KBRDEMDV.h */,
2834233B1CF9C0F10088B634 /* M68KITAB.c */,
2834233C1CF9C0F10088B634 /* M68KITAB.h */,
2834233D1CF9C0F10088B634 /* MINEM68K.c */,
2834233E1CF9C0F10088B634 /* MINEM68K.h */,
2834233F1CF9C0F10088B634 /* MOUSEMDV.c */,
283423401CF9C0F10088B634 /* MOUSEMDV.h */,
283423411CF9C0F10088B634 /* MYOSGLUE.h */,
283423421CF9C0F10088B634 /* PMUEMDEV.c */,
283423431CF9C0F10088B634 /* PMUEMDEV.h */,
283423441CF9C0F10088B634 /* PROGMAIN.c */,
283423451CF9C0F10088B634 /* PROGMAIN.h */,
283423461CF9C0F10088B634 /* ROMEMDEV.c */,
283423471CF9C0F10088B634 /* ROMEMDEV.h */,
283423481CF9C0F10088B634 /* RTCEMDEV.c */,
283423491CF9C0F10088B634 /* RTCEMDEV.h */,
2834234A1CF9C0F10088B634 /* SCCEMDEV.c */,
2834234B1CF9C0F10088B634 /* SCCEMDEV.h */,
2834234C1CF9C0F10088B634 /* SCRNEMDV.c */,
2834234D1CF9C0F10088B634 /* SCRNEMDV.h */,
2834234E1CF9C0F10088B634 /* SCRNHACK.h */,
2834234F1CF9C0F10088B634 /* SCRNMAPR.h */,
283423501CF9C0F10088B634 /* SCRNTRNS.h */,
283423511CF9C0F10088B634 /* SCSIEMDV.c */,
283423521CF9C0F10088B634 /* SCSIEMDV.h */,
283423531CF9C0F10088B634 /* SNDEMDEV.c */,
283423541CF9C0F10088B634 /* SNDEMDEV.h */,
283423551CF9C0F10088B634 /* SONYEMDV.c */,
283423561CF9C0F10088B634 /* SONYEMDV.h */,
28C63A5E1F76979500BB02B3 /* STRCNENG.h */,
283423581CF9C0F10088B634 /* SYSDEPNS.h */,
283423591CF9C0F10088B634 /* VIA2EMDV.c */,
2834235A1CF9C0F10088B634 /* VIA2EMDV.h */,
2834235B1CF9C0F10088B634 /* VIAEMDEV.c */,
2834235C1CF9C0F10088B634 /* VIAEMDEV.h */,
2834235D1CF9C0F10088B634 /* VIDEMDEV.c */,
2834235E1CF9C0F10088B634 /* VIDEMDEV.h */,
);
path = mnvm_core;
sourceTree = "<group>";
};
283423981CF9C5380088B634 /* MacII */ = {
isa = PBXGroup;
children = (
283423991CF9C5380088B634 /* CNFGGLOB.h */,
2834239B1CF9C5380088B634 /* EMCONFIG.h */,
28E3B832251D1E8A007C273F /* CNFUDALL.h */,
28E3B834251D1E8A007C273F /* CNFUDOSG.h */,
28E3B833251D1E8A007C273F /* CNFUDPIC.h */,
283423EC1CFA329C0088B634 /* Icon.png */,
283423ED1CFA329C0088B634 /* Icon@2x.png */,
283423EE1CFA329C0088B634 /* Icon@3x.png */,
@ -543,8 +451,9 @@
289710D51CFB11D90089D463 /* Mac128K */ = {
isa = PBXGroup;
children = (
289710D61CFB121F0089D463 /* CNFGGLOB.h */,
289710D71CFB121F0089D463 /* EMCONFIG.h */,
289710D71CFB121F0089D463 /* CNFUDALL.h */,
289710D61CFB121F0089D463 /* CNFUDOSG.h */,
28E3B82E251D14A7007C273F /* CNFUDPIC.h */,
289710D81CFB121F0089D463 /* Icon.png */,
289710D91CFB121F0089D463 /* Icon@2x.png */,
289710DA1CFB121F0089D463 /* Icon@3x.png */,
@ -569,12 +478,41 @@
28BDBEB91D230F280072ED5B /* MacII-640x480 */ = {
isa = PBXGroup;
children = (
28BDBEBA1D230F280072ED5B /* CNFGGLOB.h */,
28BDBEBB1D230F280072ED5B /* EMCONFIG.h */,
28E3B835251D1EC1007C273F /* CNFUDALL.h */,
28E3B836251D1EC1007C273F /* CNFUDOSG.h */,
28E3B837251D1EC1007C273F /* CNFUDPIC.h */,
);
path = "MacII-640x480";
sourceTree = "<group>";
};
28E3B7CB251D0EEC007C273F /* src */ = {
isa = PBXGroup;
children = (
28E3B831251D195D007C273F /* PICOMMON.h */,
28E3B7D2251D0F13007C273F /* ADBEMDEV.c */,
28E3B7DE251D0F13007C273F /* ASCEMDEV.c */,
28E3B7CE251D0F12007C273F /* GLOBGLUE.c */,
28E3B7D5251D0F13007C273F /* IWMEMDEV.c */,
28E3B7DB251D0F13007C273F /* KBRDEMDV.c */,
28E3B7CF251D0F12007C273F /* M68KITAB.c */,
28E3B7D3251D0F13007C273F /* MINEM68K.c */,
28E3B7CC251D0F12007C273F /* MOUSEMDV.c */,
28E3B7D0251D0F12007C273F /* PROGMAIN.c */,
28E3B7DA251D0F13007C273F /* ROMEMDEV.c */,
28E3B7CD251D0F12007C273F /* RTCEMDEV.c */,
28E3B7D7251D0F13007C273F /* SCCEMDEV.c */,
28E3B7D4251D0F13007C273F /* SCRNEMDV.c */,
28E3B7D9251D0F13007C273F /* SCSIEMDV.c */,
28E3B7DD251D0F13007C273F /* SNDEMDEV.c */,
28E3B7D1251D0F12007C273F /* SONYEMDV.c */,
28E3B7D6251D0F13007C273F /* VIA2EMDV.c */,
28E3B7DC251D0F13007C273F /* VIAEMDEV.c */,
28E3B7D8251D0F13007C273F /* VIDEMDEV.c */,
);
name = src;
path = ../minivmac/src;
sourceTree = "<group>";
};
28F676B41CD15E0B00FC6FA6 = {
isa = PBXGroup;
children = (
@ -719,6 +657,9 @@
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
28E3B838251D1EC1007C273F /* CNFUDALL.h in Headers */,
28E3B83A251D1EC1007C273F /* CNFUDPIC.h in Headers */,
28E3B839251D1EC1007C273F /* CNFUDOSG.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -902,7 +843,7 @@
28F676B51CD15E0B00FC6FA6 /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 1000;
LastUpgradeCheck = 1170;
ORGANIZATIONNAME = namedfork;
TargetAttributes = {
283422C91CF8EF8C0088B634 = {
@ -1107,22 +1048,22 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
2834236E1CF9C1320088B634 /* SONYEMDV.c in Sources */,
2834236F1CF9C1320088B634 /* VIAEMDEV.c in Sources */,
283423681CF9C1320088B634 /* ROMEMDEV.c in Sources */,
2834236D1CF9C1320088B634 /* SNDEMDEV.c in Sources */,
2834236C1CF9C1320088B634 /* SCSIEMDV.c in Sources */,
2834236A1CF9C1320088B634 /* SCCEMDEV.c in Sources */,
2834236B1CF9C1320088B634 /* SCRNEMDV.c in Sources */,
283423611CF9C10B0088B634 /* IWMEMDEV.c in Sources */,
28E3B813251D0F13007C273F /* SCSIEMDV.c in Sources */,
28E3B7FB251D0F13007C273F /* MINEM68K.c in Sources */,
28E3B7E7251D0F13007C273F /* GLOBGLUE.c in Sources */,
28E3B7EB251D0F13007C273F /* M68KITAB.c in Sources */,
28E3B7EF251D0F13007C273F /* PROGMAIN.c in Sources */,
28E3B803251D0F13007C273F /* IWMEMDEV.c in Sources */,
28E3B81F251D0F13007C273F /* VIAEMDEV.c in Sources */,
28E3B7FF251D0F13007C273F /* SCRNEMDV.c in Sources */,
28E3B7F3251D0F13007C273F /* SONYEMDV.c in Sources */,
28E3B823251D0F13007C273F /* SNDEMDEV.c in Sources */,
28E3B817251D0F13007C273F /* ROMEMDEV.c in Sources */,
283422EE1CF8F2210088B634 /* MYOSGLUE.m in Sources */,
283423661CF9C1320088B634 /* MOUSEMDV.c in Sources */,
283423601CF9C1050088B634 /* GLOBGLUE.c in Sources */,
283423631CF9C1320088B634 /* KBRDEMDV.c in Sources */,
283423651CF9C1320088B634 /* MINEM68K.c in Sources */,
283423641CF9C1320088B634 /* M68KITAB.c in Sources */,
283423671CF9C1320088B634 /* PROGMAIN.c in Sources */,
283423691CF9C1320088B634 /* RTCEMDEV.c in Sources */,
28E3B7E3251D0F13007C273F /* RTCEMDEV.c in Sources */,
28E3B81B251D0F13007C273F /* KBRDEMDV.c in Sources */,
28E3B80B251D0F13007C273F /* SCCEMDEV.c in Sources */,
28E3B7DF251D0F13007C273F /* MOUSEMDV.c in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -1130,24 +1071,24 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
283423DF1CF9C66D0088B634 /* SONYEMDV.c in Sources */,
283423DE1CF9C66D0088B634 /* SCSIEMDV.c in Sources */,
283423DD1CF9C66D0088B634 /* SCRNEMDV.c in Sources */,
283423DB1CF9C66D0088B634 /* RTCEMDEV.c in Sources */,
28E3B814251D0F13007C273F /* SCSIEMDV.c in Sources */,
28E3B7FC251D0F13007C273F /* MINEM68K.c in Sources */,
28E3B7E8251D0F13007C273F /* GLOBGLUE.c in Sources */,
28E3B7EC251D0F13007C273F /* M68KITAB.c in Sources */,
28E3B7F0251D0F13007C273F /* PROGMAIN.c in Sources */,
28E3B7F8251D0F13007C273F /* ADBEMDEV.c in Sources */,
28E3B808251D0F13007C273F /* VIA2EMDV.c in Sources */,
28E3B804251D0F13007C273F /* IWMEMDEV.c in Sources */,
28E3B83B251D1FA6007C273F /* VIAEMDEV.c in Sources */,
28E3B800251D0F13007C273F /* SCRNEMDV.c in Sources */,
28E3B7F4251D0F13007C273F /* SONYEMDV.c in Sources */,
28E3B818251D0F13007C273F /* ROMEMDEV.c in Sources */,
283423881CF9C4CB0088B634 /* MYOSGLUE.m in Sources */,
283423D71CF9C66D0088B634 /* MINEM68K.c in Sources */,
283423D81CF9C66D0088B634 /* MOUSEMDV.c in Sources */,
283423E11CF9C66D0088B634 /* VIAEMDEV.c in Sources */,
283423E01CF9C66D0088B634 /* VIA2EMDV.c in Sources */,
283423D61CF9C66D0088B634 /* M68KITAB.c in Sources */,
283423D41CF9C66D0088B634 /* GLOBGLUE.c in Sources */,
283423DA1CF9C66D0088B634 /* ROMEMDEV.c in Sources */,
283423D91CF9C66D0088B634 /* PROGMAIN.c in Sources */,
283423D21CF9C66D0088B634 /* ADBEMDEV.c in Sources */,
283423D31CF9C66D0088B634 /* ASCEMDEV.c in Sources */,
283423DC1CF9C66D0088B634 /* SCCEMDEV.c in Sources */,
283423D51CF9C66D0088B634 /* IWMEMDEV.c in Sources */,
283423E21CF9C66D0088B634 /* VIDEMDEV.c in Sources */,
28E3B7E4251D0F13007C273F /* RTCEMDEV.c in Sources */,
28E3B80C251D0F13007C273F /* SCCEMDEV.c in Sources */,
28E3B7E0251D0F13007C273F /* MOUSEMDV.c in Sources */,
28E3B810251D0F13007C273F /* VIDEMDEV.c in Sources */,
28E3B828251D0F13007C273F /* ASCEMDEV.c in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -1155,22 +1096,22 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
289710BA1CFB11BF0089D463 /* SONYEMDV.c in Sources */,
289710BB1CFB11BF0089D463 /* VIAEMDEV.c in Sources */,
289710BC1CFB11BF0089D463 /* ROMEMDEV.c in Sources */,
289710BD1CFB11BF0089D463 /* SNDEMDEV.c in Sources */,
289710BE1CFB11BF0089D463 /* SCSIEMDV.c in Sources */,
289710BF1CFB11BF0089D463 /* SCCEMDEV.c in Sources */,
289710C01CFB11BF0089D463 /* SCRNEMDV.c in Sources */,
289710C21CFB11BF0089D463 /* IWMEMDEV.c in Sources */,
28E3B815251D0F13007C273F /* SCSIEMDV.c in Sources */,
28E3B7FD251D0F13007C273F /* MINEM68K.c in Sources */,
28E3B7E9251D0F13007C273F /* GLOBGLUE.c in Sources */,
28E3B7ED251D0F13007C273F /* M68KITAB.c in Sources */,
28E3B7F1251D0F13007C273F /* PROGMAIN.c in Sources */,
28E3B805251D0F13007C273F /* IWMEMDEV.c in Sources */,
28E3B821251D0F13007C273F /* VIAEMDEV.c in Sources */,
28E3B801251D0F13007C273F /* SCRNEMDV.c in Sources */,
28E3B7F5251D0F13007C273F /* SONYEMDV.c in Sources */,
28E3B825251D0F13007C273F /* SNDEMDEV.c in Sources */,
28E3B819251D0F13007C273F /* ROMEMDEV.c in Sources */,
289710C31CFB11BF0089D463 /* MYOSGLUE.m in Sources */,
289710C41CFB11BF0089D463 /* MOUSEMDV.c in Sources */,
289710C51CFB11BF0089D463 /* GLOBGLUE.c in Sources */,
289710C61CFB11BF0089D463 /* KBRDEMDV.c in Sources */,
289710C71CFB11BF0089D463 /* MINEM68K.c in Sources */,
289710C81CFB11BF0089D463 /* M68KITAB.c in Sources */,
289710C91CFB11BF0089D463 /* PROGMAIN.c in Sources */,
289710CA1CFB11BF0089D463 /* RTCEMDEV.c in Sources */,
28E3B7E5251D0F13007C273F /* RTCEMDEV.c in Sources */,
28E3B81D251D0F13007C273F /* KBRDEMDV.c in Sources */,
28E3B80D251D0F13007C273F /* SCCEMDEV.c in Sources */,
28E3B7E1251D0F13007C273F /* MOUSEMDV.c in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -1178,24 +1119,24 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
28BDBE9C1D230EEB0072ED5B /* SONYEMDV.c in Sources */,
28BDBE9D1D230EEB0072ED5B /* SCSIEMDV.c in Sources */,
28BDBE9E1D230EEB0072ED5B /* SCRNEMDV.c in Sources */,
28BDBE9F1D230EEB0072ED5B /* RTCEMDEV.c in Sources */,
28E3B816251D0F13007C273F /* SCSIEMDV.c in Sources */,
28E3B7FE251D0F13007C273F /* MINEM68K.c in Sources */,
28E3B7EA251D0F13007C273F /* GLOBGLUE.c in Sources */,
28E3B7EE251D0F13007C273F /* M68KITAB.c in Sources */,
28E3B7F2251D0F13007C273F /* PROGMAIN.c in Sources */,
28E3B7FA251D0F13007C273F /* ADBEMDEV.c in Sources */,
28E3B80A251D0F13007C273F /* VIA2EMDV.c in Sources */,
28E3B806251D0F13007C273F /* IWMEMDEV.c in Sources */,
28E3B83C251D1FA7007C273F /* VIAEMDEV.c in Sources */,
28E3B802251D0F13007C273F /* SCRNEMDV.c in Sources */,
28E3B7F6251D0F13007C273F /* SONYEMDV.c in Sources */,
28E3B81A251D0F13007C273F /* ROMEMDEV.c in Sources */,
28BDBEA01D230EEB0072ED5B /* MYOSGLUE.m in Sources */,
28BDBEA11D230EEB0072ED5B /* MINEM68K.c in Sources */,
28BDBEA21D230EEB0072ED5B /* MOUSEMDV.c in Sources */,
28BDBEA31D230EEB0072ED5B /* VIAEMDEV.c in Sources */,
28BDBEA41D230EEB0072ED5B /* VIA2EMDV.c in Sources */,
28BDBEA51D230EEB0072ED5B /* M68KITAB.c in Sources */,
28BDBEA61D230EEB0072ED5B /* GLOBGLUE.c in Sources */,
28BDBEA71D230EEB0072ED5B /* ROMEMDEV.c in Sources */,
28BDBEA81D230EEB0072ED5B /* PROGMAIN.c in Sources */,
28BDBEA91D230EEB0072ED5B /* ADBEMDEV.c in Sources */,
28BDBEAA1D230EEB0072ED5B /* ASCEMDEV.c in Sources */,
28BDBEAB1D230EEB0072ED5B /* SCCEMDEV.c in Sources */,
28BDBEAC1D230EEB0072ED5B /* IWMEMDEV.c in Sources */,
28BDBEAD1D230EEB0072ED5B /* VIDEMDEV.c in Sources */,
28E3B7E6251D0F13007C273F /* RTCEMDEV.c in Sources */,
28E3B80E251D0F13007C273F /* SCCEMDEV.c in Sources */,
28E3B7E2251D0F13007C273F /* MOUSEMDV.c in Sources */,
28E3B812251D0F13007C273F /* VIDEMDEV.c in Sources */,
28E3B82A251D0F13007C273F /* ASCEMDEV.c in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -1299,7 +1240,7 @@
283422D41CF8EF8C0088B634 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
CODE_SIGN_IDENTITY = "iPhone Developer";
CODE_SIGN_IDENTITY = "";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
CURRENT_PROJECT_VERSION = 1;
DEFINES_MODULE = NO;
@ -1307,7 +1248,7 @@
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
INFOPLIST_FILE = "$(SRCROOT)/Mini vMac/PlugIn-Info.plist";
INFOPLIST_PREFIX_HEADER = "$(SRCROOT)/Mini vMac/$(PRODUCT_NAME)/CNFGGLOB.h";
INFOPLIST_PREFIX_HEADER = "$(SRCROOT)/Mini vMac/$(PRODUCT_NAME)/CNFUDALL.h";
INFOPLIST_PREPROCESS = YES;
INFOPLIST_PREPROCESSOR_DEFINITIONS = PLIST_PREPROCESSOR;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
@ -1317,7 +1258,7 @@
PRODUCT_BUNDLE_IDENTIFIER = net.namedfork.minivmac.macplus4m;
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
USER_HEADER_SEARCH_PATHS = "\"$(SRCROOT)/Mini vMac/$(PRODUCT_NAME)\" \"$(SRCROOT)/Mini vMac/mnvm_core\"";
USER_HEADER_SEARCH_PATHS = "\"$(SRCROOT)/Mini vMac/$(PRODUCT_NAME)\" \"$(SRCROOT)/Mini vMac/\" \"$(SRCROOT)/minivmac/src\"";
USE_HEADERMAP = NO;
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
@ -1327,7 +1268,7 @@
283422D51CF8EF8C0088B634 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
CODE_SIGN_IDENTITY = "iPhone Developer";
CODE_SIGN_IDENTITY = "";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
CURRENT_PROJECT_VERSION = 1;
DEFINES_MODULE = NO;
@ -1335,7 +1276,7 @@
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
INFOPLIST_FILE = "$(SRCROOT)/Mini vMac/PlugIn-Info.plist";
INFOPLIST_PREFIX_HEADER = "$(SRCROOT)/Mini vMac/$(PRODUCT_NAME)/CNFGGLOB.h";
INFOPLIST_PREFIX_HEADER = "$(SRCROOT)/Mini vMac/$(PRODUCT_NAME)/CNFUDALL.h";
INFOPLIST_PREPROCESS = YES;
INFOPLIST_PREPROCESSOR_DEFINITIONS = PLIST_PREPROCESSOR;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
@ -1345,7 +1286,7 @@
PRODUCT_BUNDLE_IDENTIFIER = net.namedfork.minivmac.macplus4m;
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
USER_HEADER_SEARCH_PATHS = "\"$(SRCROOT)/Mini vMac/$(PRODUCT_NAME)\" \"$(SRCROOT)/Mini vMac/mnvm_core\"";
USER_HEADER_SEARCH_PATHS = "\"$(SRCROOT)/Mini vMac/$(PRODUCT_NAME)\" \"$(SRCROOT)/Mini vMac/\" \"$(SRCROOT)/minivmac/src\"";
USE_HEADERMAP = NO;
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
@ -1355,7 +1296,7 @@
283423941CF9C4CB0088B634 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
CODE_SIGN_IDENTITY = "iPhone Developer";
CODE_SIGN_IDENTITY = "";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
CURRENT_PROJECT_VERSION = 1;
DEFINES_MODULE = NO;
@ -1363,7 +1304,7 @@
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
INFOPLIST_FILE = "$(SRCROOT)/Mini vMac/PlugIn-Info.plist";
INFOPLIST_PREFIX_HEADER = "$(SRCROOT)/Mini vMac/$(PRODUCT_NAME)/CNFGGLOB.h";
INFOPLIST_PREFIX_HEADER = "$(SRCROOT)/Mini vMac/$(PRODUCT_NAME)/CNFUDALL.h";
INFOPLIST_PREPROCESS = YES;
INFOPLIST_PREPROCESSOR_DEFINITIONS = PLIST_PREPROCESSOR;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
@ -1373,7 +1314,7 @@
PRODUCT_BUNDLE_IDENTIFIER = net.namedfork.minivmac.macii;
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
USER_HEADER_SEARCH_PATHS = "\"$(SRCROOT)/Mini vMac/$(PRODUCT_NAME)\" \"$(SRCROOT)/Mini vMac/mnvm_core\"";
USER_HEADER_SEARCH_PATHS = "\"$(SRCROOT)/Mini vMac/$(PRODUCT_NAME)\" \"$(SRCROOT)/Mini vMac/\" \"$(SRCROOT)/minivmac/src\"";
USE_HEADERMAP = NO;
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
@ -1383,7 +1324,7 @@
283423951CF9C4CB0088B634 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
CODE_SIGN_IDENTITY = "iPhone Developer";
CODE_SIGN_IDENTITY = "";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
CURRENT_PROJECT_VERSION = 1;
DEFINES_MODULE = NO;
@ -1391,7 +1332,7 @@
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
INFOPLIST_FILE = "$(SRCROOT)/Mini vMac/PlugIn-Info.plist";
INFOPLIST_PREFIX_HEADER = "$(SRCROOT)/Mini vMac/$(PRODUCT_NAME)/CNFGGLOB.h";
INFOPLIST_PREFIX_HEADER = "$(SRCROOT)/Mini vMac/$(PRODUCT_NAME)/CNFUDALL.h";
INFOPLIST_PREPROCESS = YES;
INFOPLIST_PREPROCESSOR_DEFINITIONS = PLIST_PREPROCESSOR;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
@ -1401,7 +1342,7 @@
PRODUCT_BUNDLE_IDENTIFIER = net.namedfork.minivmac.macii;
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
USER_HEADER_SEARCH_PATHS = "\"$(SRCROOT)/Mini vMac/$(PRODUCT_NAME)\" \"$(SRCROOT)/Mini vMac/mnvm_core\"";
USER_HEADER_SEARCH_PATHS = "\"$(SRCROOT)/Mini vMac/$(PRODUCT_NAME)\" \"$(SRCROOT)/Mini vMac/\" \"$(SRCROOT)/minivmac/src\"";
USE_HEADERMAP = NO;
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
@ -1411,7 +1352,7 @@
289710D21CFB11BF0089D463 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
CODE_SIGN_IDENTITY = "iPhone Developer";
CODE_SIGN_IDENTITY = "";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
CURRENT_PROJECT_VERSION = 1;
DEFINES_MODULE = NO;
@ -1419,7 +1360,7 @@
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
INFOPLIST_FILE = "$(SRCROOT)/Mini vMac/PlugIn-Info.plist";
INFOPLIST_PREFIX_HEADER = "$(SRCROOT)/Mini vMac/$(PRODUCT_NAME)/CNFGGLOB.h";
INFOPLIST_PREFIX_HEADER = "$(SRCROOT)/Mini vMac/$(PRODUCT_NAME)/CNFUDALL.h";
INFOPLIST_PREPROCESS = YES;
INFOPLIST_PREPROCESSOR_DEFINITIONS = PLIST_PREPROCESSOR;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
@ -1429,7 +1370,7 @@
PRODUCT_BUNDLE_IDENTIFIER = net.namedfork.minivmac.mac128k;
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
USER_HEADER_SEARCH_PATHS = "\"$(SRCROOT)/Mini vMac/$(PRODUCT_NAME)\" \"$(SRCROOT)/Mini vMac/mnvm_core\"";
USER_HEADER_SEARCH_PATHS = "\"$(SRCROOT)/Mini vMac/$(PRODUCT_NAME)\" \"$(SRCROOT)/Mini vMac/\" \"$(SRCROOT)/minivmac/src\"";
USE_HEADERMAP = NO;
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
@ -1439,7 +1380,7 @@
289710D31CFB11BF0089D463 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
CODE_SIGN_IDENTITY = "iPhone Developer";
CODE_SIGN_IDENTITY = "";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
CURRENT_PROJECT_VERSION = 1;
DEFINES_MODULE = NO;
@ -1447,7 +1388,7 @@
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
INFOPLIST_FILE = "$(SRCROOT)/Mini vMac/PlugIn-Info.plist";
INFOPLIST_PREFIX_HEADER = "$(SRCROOT)/Mini vMac/$(PRODUCT_NAME)/CNFGGLOB.h";
INFOPLIST_PREFIX_HEADER = "$(SRCROOT)/Mini vMac/$(PRODUCT_NAME)/CNFUDALL.h";
INFOPLIST_PREPROCESS = YES;
INFOPLIST_PREPROCESSOR_DEFINITIONS = PLIST_PREPROCESSOR;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
@ -1457,7 +1398,7 @@
PRODUCT_BUNDLE_IDENTIFIER = net.namedfork.minivmac.mac128k;
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
USER_HEADER_SEARCH_PATHS = "\"$(SRCROOT)/Mini vMac/$(PRODUCT_NAME)\" \"$(SRCROOT)/Mini vMac/mnvm_core\"";
USER_HEADER_SEARCH_PATHS = "\"$(SRCROOT)/Mini vMac/$(PRODUCT_NAME)\" \"$(SRCROOT)/Mini vMac/\" \"$(SRCROOT)/minivmac/src\"";
USE_HEADERMAP = NO;
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
@ -1467,7 +1408,7 @@
28BDBEB51D230EEB0072ED5B /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
CODE_SIGN_IDENTITY = "iPhone Developer";
CODE_SIGN_IDENTITY = "";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
CURRENT_PROJECT_VERSION = 1;
DEFINES_MODULE = NO;
@ -1475,7 +1416,7 @@
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
INFOPLIST_FILE = "$(SRCROOT)/Mini vMac/PlugIn-Info.plist";
INFOPLIST_PREFIX_HEADER = "$(SRCROOT)/Mini vMac/$(PRODUCT_NAME)/CNFGGLOB.h";
INFOPLIST_PREFIX_HEADER = "$(SRCROOT)/Mini vMac/$(PRODUCT_NAME)/CNFUDALL.h";
INFOPLIST_PREPROCESS = YES;
INFOPLIST_PREPROCESSOR_DEFINITIONS = PLIST_PREPROCESSOR;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
@ -1485,7 +1426,7 @@
PRODUCT_BUNDLE_IDENTIFIER = "net.namedfork.minivmac.macii-640x480";
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
USER_HEADER_SEARCH_PATHS = "\"$(SRCROOT)/Mini vMac/$(PRODUCT_NAME)\" \"$(SRCROOT)/Mini vMac/mnvm_core\"";
USER_HEADER_SEARCH_PATHS = "\"$(SRCROOT)/Mini vMac/$(PRODUCT_NAME)\" \"$(SRCROOT)/Mini vMac/\" \"$(SRCROOT)/minivmac/src\"";
USE_HEADERMAP = NO;
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
@ -1495,7 +1436,7 @@
28BDBEB61D230EEB0072ED5B /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
CODE_SIGN_IDENTITY = "iPhone Developer";
CODE_SIGN_IDENTITY = "";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
CURRENT_PROJECT_VERSION = 1;
DEFINES_MODULE = NO;
@ -1503,7 +1444,7 @@
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
INFOPLIST_FILE = "$(SRCROOT)/Mini vMac/PlugIn-Info.plist";
INFOPLIST_PREFIX_HEADER = "$(SRCROOT)/Mini vMac/$(PRODUCT_NAME)/CNFGGLOB.h";
INFOPLIST_PREFIX_HEADER = "$(SRCROOT)/Mini vMac/$(PRODUCT_NAME)/CNFUDALL.h";
INFOPLIST_PREPROCESS = YES;
INFOPLIST_PREPROCESSOR_DEFINITIONS = PLIST_PREPROCESSOR;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
@ -1513,7 +1454,7 @@
PRODUCT_BUNDLE_IDENTIFIER = "net.namedfork.minivmac.macii-640x480";
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
USER_HEADER_SEARCH_PATHS = "\"$(SRCROOT)/Mini vMac/$(PRODUCT_NAME)\" \"$(SRCROOT)/Mini vMac/mnvm_core\"";
USER_HEADER_SEARCH_PATHS = "\"$(SRCROOT)/Mini vMac/$(PRODUCT_NAME)\" \"$(SRCROOT)/Mini vMac/\" \"$(SRCROOT)/minivmac/src\"";
USE_HEADERMAP = NO;
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
@ -1523,7 +1464,7 @@
28F676D21CD15E0B00FC6FA6 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
CLANG_ANALYZER_NONNULL = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
@ -1578,7 +1519,7 @@
28F676D31CD15E0B00FC6FA6 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
CLANG_ANALYZER_NONNULL = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
@ -1630,13 +1571,13 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_IDENTITY = "iPhone Developer";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
CURRENT_PROJECT_VERSION = 11;
CURRENT_PROJECT_VERSION = 12;
DEVELOPMENT_TEAM = UJXNDZ5TNU;
HEADER_SEARCH_PATHS = "$(SRCROOT)";
INFOPLIST_FILE = "Mini vMac/Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
MARKETING_VERSION = 2.3.2;
MARKETING_VERSION = 2.3.3;
OTHER_CFLAGS = "-DUSE_LIBRES";
PRODUCT_BUNDLE_IDENTIFIER = net.namedfork.minivmac;
PRODUCT_NAME = "$(TARGET_NAME)";
@ -1650,13 +1591,13 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_IDENTITY = "iPhone Developer";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
CURRENT_PROJECT_VERSION = 11;
CURRENT_PROJECT_VERSION = 12;
DEVELOPMENT_TEAM = UJXNDZ5TNU;
HEADER_SEARCH_PATHS = "$(SRCROOT)";
INFOPLIST_FILE = "Mini vMac/Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
MARKETING_VERSION = 2.3.2;
MARKETING_VERSION = 2.3.3;
OTHER_CFLAGS = "-DUSE_LIBRES";
PRODUCT_BUNDLE_IDENTIFIER = net.namedfork.minivmac;
PRODUCT_NAME = "$(TARGET_NAME)";

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1000"
LastUpgradeVersion = "1170"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
@ -29,8 +29,6 @@
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
@ -51,8 +49,6 @@
ReferencedContainer = "container:Mini vMac.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1000"
LastUpgradeVersion = "1170"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
@ -29,8 +29,6 @@
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
@ -51,8 +49,6 @@
ReferencedContainer = "container:Mini vMac.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1000"
LastUpgradeVersion = "1170"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
@ -29,8 +29,6 @@
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
@ -51,8 +49,6 @@
ReferencedContainer = "container:Mini vMac.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1000"
LastUpgradeVersion = "1170"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
@ -29,8 +29,6 @@
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
@ -51,8 +49,6 @@
ReferencedContainer = "container:Mini vMac.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1000"
LastUpgradeVersion = "1170"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1000"
LastUpgradeVersion = "1170"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
@ -29,8 +29,6 @@
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
@ -51,8 +49,6 @@
ReferencedContainer = "container:Mini vMac.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1000"
LastUpgradeVersion = "1170"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
@ -29,8 +29,6 @@
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
@ -51,8 +49,6 @@
ReferencedContainer = "container:Mini vMac.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1000"
LastUpgradeVersion = "1170"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
@ -29,8 +29,6 @@
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
@ -51,8 +49,6 @@
ReferencedContainer = "container:Mini vMac.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"

View File

@ -1,97 +0,0 @@
#include <stdint.h>
#include <unistd.h>
#define BigEndianUnaligned 0
#define LittleEndianUnaligned 1
#define MayInline inline
#define MayNotInline __attribute__((noinline))
#define SmallGlobals 0
#define cIncludeUnused 0
#define UnusedParam(p) (void) p
#define AutoTimeZone 1
#define AutoLocation 1
/* --- integer types ---- */
typedef uint8_t ui3b;
#define HaveRealui3b 1
typedef int8_t si3b;
#define HaveRealsi3b 1
typedef uint16_t ui4b;
#define HaveRealui4b 1
typedef int16_t si4b;
#define HaveRealsi4b 1
typedef uint32_t ui5b;
#define HaveRealui5b 1
typedef int32_t si5b;
#define HaveRealsi5b 1
#define HaveRealui6b 1
#define HaveRealsi6b 1
/* --- integer representation types ---- */
typedef ui3b ui3r;
#define ui3beqr 1
typedef si3b si3r;
#define si3beqr 1
typedef ui4b ui4r;
#define ui4beqr 1
typedef si4b si4r;
#define si4beqr 1
typedef ui5b ui5r;
#define ui5beqr 1
typedef si5b si5r;
#define si5beqr 1
typedef int64_t si6r;
typedef int64_t si6b;
typedef uint64_t ui6r;
typedef uint64_t ui6b;
#define LIT64(a) a##ULL
/* --- shared config for all variants ---- */
#define NeedIntlChars 1
#define kStrAppName "Mini vMac"
#define kAppVariationStr "minivmac-3.5.8-ios"
#define kStrCopyrightYear "2018"
#define kMaintainerName "Jesús A. Álvarez"
#define kStrHomePage "https://namedfork.net/minivmac"
#define VarFullScreen 0
#define WantInitFullScreen 0
#define MayFullScreen 1
#define WantInitMagnify 0
#define WantInitRunInBackground 0
#define NeedRequestInsertDisk 0
#define NeedDoMoreCommandsMsg 0
#define NeedDoAboutMsg 0
#define UseControlKeys 0
#define UseActvCode 0
#define EnableDemoMsg 0
#define IncludePbufs 1
#define NumPbufs 4
#define dbglog_HAVE 0
#define EnableMouseMotion 1
#define IncludeHostTextClipExchange 1
#define IncludeSonyRawMode 1
#define IncludeSonyGetName 1
#define IncludeSonyNew 1
#define IncludeSonyNameNew 1
#define EmLocalTalk 0

72
Mini vMac/CNFUIALL.h Normal file
View File

@ -0,0 +1,72 @@
/*
see comment in OSGCOMUI.h
This file is automatically generated by the build system,
which tries to know what options are valid in what
combinations. Avoid changing this file manually unless
you know what you're doing.
*/
#include <stdint.h>
#define MayInline inline __attribute__((always_inline))
#define MayNotInline __attribute__((noinline))
#define SmallGlobals 0
#define cIncludeUnused 0
#define UnusedParam(p) (void) p
/* --- integer types ---- */
typedef unsigned char ui3b;
#define HaveRealui3b 1
typedef signed char si3b;
#define HaveRealsi3b 1
typedef unsigned short ui4b;
#define HaveRealui4b 1
typedef short si4b;
#define HaveRealsi4b 1
typedef unsigned int ui5b;
#define HaveRealui5b 1
typedef int si5b;
#define HaveRealsi5b 1
#define HaveRealui6b 1
#define HaveRealsi6b 1
/* --- integer representation types ---- */
typedef ui3b ui3r;
#define ui3beqr 1
typedef si3b si3r;
#define si3beqr 1
typedef ui4b ui4r;
#define ui4beqr 1
typedef si4b si4r;
#define si4beqr 1
typedef ui5b ui5r;
#define ui5beqr 1
typedef si5b si5r;
#define si5beqr 1
typedef int64_t si6r;
typedef int64_t si6b;
typedef uint64_t ui6r;
typedef uint64_t ui6b;
#define LIT64(a) a##ULL
#define NeedIntlChars 1
#define kStrAppName "Mini vMac"
#define kAppVariationStr "minivmac-b37-ios"
#define kStrCopyrightYear "2020"
#define kMaintainerName "Jesús A. Álvarez"
#define kStrHomePage "https://namedfork.net/minivmac"

16
Mini vMac/CNFUIOSG.h Normal file
View File

@ -0,0 +1,16 @@
/*
see comment in OSGCOMUI.h
This file is automatically generated by the build system,
which tries to know what options are valid in what
combinations. Avoid changing this file manually unless
you know what you're doing.
*/
#import <Foundation/Foundation.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/param.h>
#include <sys/time.h>

8
Mini vMac/CNFUIPIC.h Normal file
View File

@ -0,0 +1,8 @@
/*
see comment in PICOMMON.h
This file is automatically generated by the build system,
which tries to know what options are valid in what
combinations. Avoid changing this file manually unless
you know what you're doing.
*/

View File

@ -76,7 +76,7 @@
<key>LSSupportsOpeningDocumentsInPlace</key>
<true/>
<key>MNVMVersion</key>
<string>36.04</string>
<string>b37.200912+wintergames</string>
<key>UIBackgroundModes</key>
<array>
<string>audio</string>

View File

@ -27,11 +27,8 @@
@import UIKit;
@import AudioUnit;
@import AudioToolbox;
#include "SYSDEPNS.h"
#include "ENDIANAC.h"
#include "MYOSGLUE.h"
#include "STRCNENG.h"
#include "EMCONFIG.h"
#include "OSGCOMUI.h"
#include "OSGCOMUD.h"
#import "EmulatorProtocol.h"
#define kRAM_Size (kRAMa_Size + kRAMb_Size)
@ -1826,7 +1823,7 @@ static dispatch_once_t onceToken;
- (void)didMakeNewDisk:(NSString*)fileName size:(NSInteger)size {
if (fileName) {
NSString *filePath = [self.dataPath stringByAppendingPathComponent:fileName];
MakeNewDisk0(size, filePath);
MakeNewDisk0((ui5b)size, filePath);
}
#if IncludeSonyNameNew
if (vSonyNewDiskName != NotAPbuf) {

View File

@ -1,24 +0,0 @@
#define RomFileName "Mac128K.ROM"
#define WantInitSpeedValue 2
#define WantInitNotAutoSlow 0
#define EnableAutoSlow 1
#define MySoundEnabled 1
#define MySoundRecenterSilence 0
#define kLn2SoundSampSz 3
#define NumDrives 2
#define vMacScreenHeight 342
#define vMacScreenWidth 512
#define vMacScreenDepth 0
#define kROM_Size 0x00010000
#ifdef PLIST_PREPROCESSOR
#define MNVMBundleDisplayName Mac 128K
#define MNVMBundleGetInfoString 128K, 512×342
#else
#include "../CNFGGLOB.h"
#endif

View File

@ -0,0 +1,45 @@
/*
see comment in OSGCOMUD.h
This file is automatically generated by the build system,
which tries to know what options are valid in what
combinations. Avoid changing this file manually unless
you know what you're doing.
*/
#define MySoundEnabled 1
#define MySoundRecenterSilence 0
#define kLn2SoundSampSz 3
#define dbglog_HAVE 0
#define WantAbnormalReports 0
#define NumDrives 2
#define NonDiskProtect 0
#define IncludeSonyRawMode 1
#define IncludeSonyGetName 1
#define IncludeSonyNew 1
#define IncludeSonyNameNew 1
#define vMacScreenHeight 342
#define vMacScreenWidth 512
#define vMacScreenDepth 0
#define kROM_Size 0x00010000
#define IncludePbufs 1
#define NumPbufs 4
#define EnableMouseMotion 1
#define IncludeHostTextClipExchange 1
#define EnableAutoSlow 1
#define EmLocalTalk 0
#define AutoLocation 1
#define AutoTimeZone 1
#ifdef PLIST_PREPROCESSOR
#define MNVMBundleDisplayName Mac 128K
#define MNVMBundleGetInfoString 128K, 512×342
#endif

View File

@ -0,0 +1,33 @@
/*
see comment in OSGCOMUD.h
This file is automatically generated by the build system,
which tries to know what options are valid in what
combinations. Avoid changing this file manually unless
you know what you're doing.
*/
#define RomFileName "Mac128K.ROM"
#define kCheckSumRom_Size 0x00010000
#define kRomCheckSum1 0x28BA61CE
#define kRomCheckSum2 0x28BA4E50
#define RomStartCheckSum 1
#define SaveDialogEnable 1
#define EnableAltKeysMode 0
#define VarFullScreen 1
#define WantInitFullScreen 0
#define MayFullScreen 1
#define MayNotFullScreen 1
#define WantInitMagnify 0
#define EnableMagnify 1
#define MyWindowScale 2
#define WantInitRunInBackground 0
#define WantInitNotAutoSlow 0
#define WantInitSpeedValue 3
#define WantEnblCtrlInt 1
#define WantEnblCtrlRst 1
#define WantEnblCtrlKtg 1
#define UseControlKeys 1
#define UseActvCode 0
#define EnableDemoMsg 0

View File

@ -1,20 +1,22 @@
/*
Configuration options used by platform independent code.
This file is automatically generated by the build system,
which tries to know what options are valid in what
combinations. Avoid changing this file manually unless
you know what you're doing.
*/
see comment in PICOMMON.h
This file is automatically generated by the build system,
which tries to know what options are valid in what
combinations. Avoid changing this file manually unless
you know what you're doing.
*/
#define EmClassicKbrd 1
#define EmADB 0
#define EmRTC 1
#define EmPMU 0
#define EmVIA1 1
#define EmVIA2 0
#define Use68020 0
#define EmFPU 0
#define EmMMU 0
#define EmClassicSnd 1
#define EmASC 0
#define CurEmMd kEmMd_128K
@ -24,6 +26,9 @@
#define WantCycByPriOp 1
#define WantCloserCyc 0
#define kAutoSlowSubTicks 16384
#define kAutoSlowTime 34
#define kRAMa_Size 0x00020000
#define kRAMb_Size 0
@ -50,87 +55,87 @@
/* the Wire variables are 1/0, not true/false */
enum {
Wire_VIA1_iA0_SoundVolb0,
#define SoundVolb0 (Wires[Wire_VIA1_iA0_SoundVolb0])
#define VIA1_iA0 (Wires[Wire_VIA1_iA0_SoundVolb0])
Wire_VIA1_iA1_SoundVolb1,
#define SoundVolb1 (Wires[Wire_VIA1_iA1_SoundVolb1])
#define VIA1_iA1 (Wires[Wire_VIA1_iA1_SoundVolb1])
Wire_VIA1_iA2_SoundVolb2,
#define SoundVolb2 (Wires[Wire_VIA1_iA2_SoundVolb2])
#define VIA1_iA2 (Wires[Wire_VIA1_iA2_SoundVolb2])
Wire_VIA1_iA4_MemOverlay,
#define MemOverlay (Wires[Wire_VIA1_iA4_MemOverlay])
#define VIA1_iA4 (Wires[Wire_VIA1_iA4_MemOverlay])
#define VIA1_iA4_ChangeNtfy MemOverlay_ChangeNtfy
Wire_VIA1_iA6_SCRNvPage2,
#define SCRNvPage2 (Wires[Wire_VIA1_iA6_SCRNvPage2])
#define VIA1_iA6 (Wires[Wire_VIA1_iA6_SCRNvPage2])
Wire_VIA1_iA5_IWMvSel,
#define IWMvSel (Wires[Wire_VIA1_iA5_IWMvSel])
#define VIA1_iA5 (Wires[Wire_VIA1_iA5_IWMvSel])
Wire_VIA1_iA7_SCCwaitrq,
#define SCCwaitrq (Wires[Wire_VIA1_iA7_SCCwaitrq])
#define VIA1_iA7 (Wires[Wire_VIA1_iA7_SCCwaitrq])
Wire_VIA1_iB0_RTCdataLine,
#define RTCdataLine (Wires[Wire_VIA1_iB0_RTCdataLine])
#define VIA1_iB0 (Wires[Wire_VIA1_iB0_RTCdataLine])
#define VIA1_iB0_ChangeNtfy RTCdataLine_ChangeNtfy
Wire_VIA1_iB1_RTCclock,
#define RTCclock (Wires[Wire_VIA1_iB1_RTCclock])
#define VIA1_iB1 (Wires[Wire_VIA1_iB1_RTCclock])
#define VIA1_iB1_ChangeNtfy RTCclock_ChangeNtfy
Wire_VIA1_iB2_RTCunEnabled,
#define RTCunEnabled (Wires[Wire_VIA1_iB2_RTCunEnabled])
#define VIA1_iB2 (Wires[Wire_VIA1_iB2_RTCunEnabled])
#define VIA1_iB2_ChangeNtfy RTCunEnabled_ChangeNtfy
Wire_VIA1_iA3_SoundBuffer,
#define SoundBuffer (Wires[Wire_VIA1_iA3_SoundBuffer])
#define VIA1_iA3 (Wires[Wire_VIA1_iA3_SoundBuffer])
Wire_VIA1_iB3_MouseBtnUp,
#define MouseBtnUp (Wires[Wire_VIA1_iB3_MouseBtnUp])
#define VIA1_iB3 (Wires[Wire_VIA1_iB3_MouseBtnUp])
Wire_VIA1_iB4_MouseX2,
#define MouseX2 (Wires[Wire_VIA1_iB4_MouseX2])
#define VIA1_iB4 (Wires[Wire_VIA1_iB4_MouseX2])
Wire_VIA1_iB5_MouseY2,
#define MouseY2 (Wires[Wire_VIA1_iB5_MouseY2])
#define VIA1_iB5 (Wires[Wire_VIA1_iB5_MouseY2])
Wire_VIA1_iCB2_KybdDat,
#define VIA1_iCB2 (Wires[Wire_VIA1_iCB2_KybdDat])
#define VIA1_iCB2_ChangeNtfy Kybd_DataLineChngNtfy
Wire_VIA1_iB6_SCRNbeamInVid,
#define SCRNbeamInVid (Wires[Wire_VIA1_iB6_SCRNbeamInVid])
#define VIA1_iB6 (Wires[Wire_VIA1_iB6_SCRNbeamInVid])
Wire_VIA1_iB7_SoundDisable,
#define SoundDisable (Wires[Wire_VIA1_iB7_SoundDisable])
#define VIA1_iB7 (Wires[Wire_VIA1_iB7_SoundDisable])
Wire_VIA1_InterruptRequest,
#define VIA1_InterruptRequest (Wires[Wire_VIA1_InterruptRequest])
#define VIA1_interruptChngNtfy VIAorSCCinterruptChngNtfy
Wire_SCCInterruptRequest,
#define SCCInterruptRequest (Wires[Wire_SCCInterruptRequest])
#define SCCinterruptChngNtfy VIAorSCCinterruptChngNtfy
kNumWires
};
@ -160,8 +165,6 @@ enum {
#define KYBD_ShiftInData VIA1_ShiftOutData
#define KYBD_ShiftOutData VIA1_ShiftInData
#define kCheckSumRom_Size kROM_Size
#define kExtn_Block_Base 0x00F40000
#define kExtn_ln2Spc 5

View File

@ -1,24 +0,0 @@
#define RomFileName "MacII.ROM"
#define WantInitSpeedValue 2
#define WantInitNotAutoSlow 0
#define EnableAutoSlow 0
#define MySoundEnabled 1
#define MySoundRecenterSilence 0
#define kLn2SoundSampSz 3
#define NumDrives 8
#define vMacScreenHeight 480
#define vMacScreenWidth 640
#define vMacScreenDepth 3
#define kROM_Size 0x00040000
#ifdef PLIST_PREPROCESSOR
#define MNVMBundleDisplayName Mac II
#define MNVMBundleGetInfoString 8M, 640×480
#else
#include "../CNFGGLOB.h"
#endif

View File

@ -0,0 +1,45 @@
/*
see comment in OSGCOMUD.h
This file is automatically generated by the build system,
which tries to know what options are valid in what
combinations. Avoid changing this file manually unless
you know what you're doing.
*/
#define MySoundEnabled 1
#define MySoundRecenterSilence 0
#define kLn2SoundSampSz 3
#define dbglog_HAVE 0
#define WantAbnormalReports 0
#define NumDrives 6
#define NonDiskProtect 0
#define IncludeSonyRawMode 1
#define IncludeSonyGetName 1
#define IncludeSonyNew 1
#define IncludeSonyNameNew 1
#define vMacScreenHeight 480
#define vMacScreenWidth 640
#define vMacScreenDepth 3
#define kROM_Size 0x00040000
#define IncludePbufs 1
#define NumPbufs 4
#define EnableMouseMotion 1
#define IncludeHostTextClipExchange 1
#define EnableAutoSlow 1
#define EmLocalTalk 0
#define AutoLocation 1
#define AutoTimeZone 1
#ifdef PLIST_PREPROCESSOR
#define MNVMBundleDisplayName Mac II
#define MNVMBundleGetInfoString 8M, 640×480
#endif

View File

@ -0,0 +1,33 @@
/*
see comment in OSGCOMUD.h
This file is automatically generated by the build system,
which tries to know what options are valid in what
combinations. Avoid changing this file manually unless
you know what you're doing.
*/
#define RomFileName "MacII.ROM"
#define kCheckSumRom_Size 0x00040000
#define kRomCheckSum1 0x9779D2C4
#define kRomCheckSum2 0x97221136
#define RomStartCheckSum 1
#define SaveDialogEnable 1
#define EnableAltKeysMode 0
#define VarFullScreen 1
#define WantInitFullScreen 0
#define MayFullScreen 1
#define MayNotFullScreen 1
#define WantInitMagnify 0
#define EnableMagnify 1
#define MyWindowScale 2
#define WantInitRunInBackground 0
#define WantInitNotAutoSlow 0
#define WantInitSpeedValue 2
#define WantEnblCtrlInt 1
#define WantEnblCtrlRst 1
#define WantEnblCtrlKtg 1
#define UseControlKeys 1
#define UseActvCode 0
#define EnableDemoMsg 0

View File

@ -1,5 +1,5 @@
/*
Configuration options used by platform independent code.
see comment in PICOMMON.h
This file is automatically generated by the build system,
which tries to know what options are valid in what
@ -11,10 +11,12 @@
#define EmADB 1
#define EmRTC 1
#define EmPMU 0
#define EmVIA1 1
#define EmVIA2 1
#define Use68020 1
#define EmFPU 1
#define EmMMU 0
#define EmClassicSnd 0
#define EmASC 1
#define CurEmMd kEmMd_II
@ -24,6 +26,9 @@
#define WantCycByPriOp 1
#define WantCloserCyc 0
#define kAutoSlowSubTicks 16384
#define kAutoSlowTime 60
#define kRAMa_Size 0x00400000
#define kRAMb_Size 0x00400000
@ -47,6 +52,9 @@
#define MenuBlink 0x03
#define AutoKeyThresh 0x06
#define AutoKeyRate 0x03
#define pr_HilColRed 0x0000
#define pr_HilColGreen 0x0000
#define pr_HilColBlue 0x0000
/* the Wire variables are 1/0, not true/false */
@ -220,8 +228,6 @@ enum {
#define ADB_ShiftInData VIA1_ShiftOutData
#define ADB_ShiftOutData VIA1_ShiftInData
#define kCheckSumRom_Size kROM_Size
#define kExtn_Block_Base 0x50F0C000
#define kExtn_ln2Spc 5

View File

@ -1,24 +0,0 @@
#define RomFileName "MacII.ROM"
#define WantInitSpeedValue 2
#define WantInitNotAutoSlow 0
#define EnableAutoSlow 0
#define MySoundEnabled 1
#define MySoundRecenterSilence 0
#define kLn2SoundSampSz 3
#define NumDrives 8
#define vMacScreenHeight 768
#define vMacScreenWidth 1024
#define vMacScreenDepth 3
#define kROM_Size 0x00040000
#ifdef PLIST_PREPROCESSOR
#define MNVMBundleDisplayName Mac II
#define MNVMBundleGetInfoString 8M, 1024×768
#else
#include "../CNFGGLOB.h"
#endif

View File

@ -0,0 +1,45 @@
/*
see comment in OSGCOMUD.h
This file is automatically generated by the build system,
which tries to know what options are valid in what
combinations. Avoid changing this file manually unless
you know what you're doing.
*/
#define MySoundEnabled 1
#define MySoundRecenterSilence 0
#define kLn2SoundSampSz 3
#define dbglog_HAVE 0
#define WantAbnormalReports 0
#define NumDrives 6
#define NonDiskProtect 0
#define IncludeSonyRawMode 1
#define IncludeSonyGetName 1
#define IncludeSonyNew 1
#define IncludeSonyNameNew 1
#define vMacScreenHeight 768
#define vMacScreenWidth 1024
#define vMacScreenDepth 3
#define kROM_Size 0x00040000
#define IncludePbufs 1
#define NumPbufs 4
#define EnableMouseMotion 1
#define IncludeHostTextClipExchange 1
#define EnableAutoSlow 1
#define EmLocalTalk 0
#define AutoLocation 1
#define AutoTimeZone 1
#ifdef PLIST_PREPROCESSOR
#define MNVMBundleDisplayName Mac II
#define MNVMBundleGetInfoString 8M, 1024×768
#endif

View File

@ -0,0 +1,39 @@
/*
see comment in OSGCOMUD.h
This file is automatically generated by the build system,
which tries to know what options are valid in what
combinations. Avoid changing this file manually unless
you know what you're doing.
*/
#define RomFileName "MacII.ROM"
#define kCheckSumRom_Size 0x00040000
#define kRomCheckSum1 0x9779D2C4
#define kRomCheckSum2 0x97221136
#define RomStartCheckSum 1
#define SaveDialogEnable 1
#define EnableAltKeysMode 0
#define VarFullScreen 1
#define WantInitFullScreen 0
#define MayFullScreen 1
#define MayNotFullScreen 1
#define WantInitMagnify 0
#define EnableMagnify 1
#define MyWindowScale 2
#define WantInitRunInBackground 0
#define WantInitNotAutoSlow 0
#define WantInitSpeedValue 2
#define WantEnblCtrlInt 1
#define WantEnblCtrlRst 1
#define WantEnblCtrlKtg 1
#define UseControlKeys 1
#define UseActvCode 0
#define EnableDemoMsg 0
/* version and other info to display to user */
#define NeedIntlChars 0
#define kBldOpts "-br 37 -t mc64 -m II -hres 1024 -vres 768 -ndp 0"

View File

@ -1,5 +1,5 @@
/*
Configuration options used by platform independent code.
see comment in PICOMMON.h
This file is automatically generated by the build system,
which tries to know what options are valid in what
@ -11,10 +11,12 @@
#define EmADB 1
#define EmRTC 1
#define EmPMU 0
#define EmVIA1 1
#define EmVIA2 1
#define Use68020 1
#define EmFPU 1
#define EmMMU 0
#define EmClassicSnd 0
#define EmASC 1
#define CurEmMd kEmMd_II
@ -24,6 +26,9 @@
#define WantCycByPriOp 1
#define WantCloserCyc 0
#define kAutoSlowSubTicks 16384
#define kAutoSlowTime 60
#define kRAMa_Size 0x00400000
#define kRAMb_Size 0x00400000
@ -47,6 +52,9 @@
#define MenuBlink 0x03
#define AutoKeyThresh 0x06
#define AutoKeyRate 0x03
#define pr_HilColRed 0x0000
#define pr_HilColGreen 0x0000
#define pr_HilColBlue 0x0000
/* the Wire variables are 1/0, not true/false */
@ -220,8 +228,6 @@ enum {
#define ADB_ShiftInData VIA1_ShiftOutData
#define ADB_ShiftOutData VIA1_ShiftInData
#define kCheckSumRom_Size kROM_Size
#define kExtn_Block_Base 0x50F0C000
#define kExtn_ln2Spc 5

View File

@ -1,24 +0,0 @@
#define RomFileName "vMac.ROM"
#define WantInitSpeedValue 2
#define WantInitNotAutoSlow 0
#define EnableAutoSlow 1
#define MySoundEnabled 1
#define MySoundRecenterSilence 0
#define kLn2SoundSampSz 3
#define NumDrives 6
#define vMacScreenHeight 342
#define vMacScreenWidth 512
#define vMacScreenDepth 0
#define kROM_Size 0x00020000
#ifdef PLIST_PREPROCESSOR
#define MNVMBundleDisplayName Mac Plus
#define MNVMBundleGetInfoString 4M, 512×342
#else
#include "../CNFGGLOB.h"
#endif

View File

@ -0,0 +1,46 @@
/*
see comment in OSGCOMUD.h
This file is automatically generated by the build system,
which tries to know what options are valid in what
combinations. Avoid changing this file manually unless
you know what you're doing.
*/
#define MySoundEnabled 1
#define MySoundRecenterSilence 0
#define kLn2SoundSampSz 3
#define dbglog_HAVE 0
#define WantAbnormalReports 0
#define NumDrives 6
#define NonDiskProtect 0
#define IncludeSonyRawMode 1
#define IncludeSonyGetName 1
#define IncludeSonyNew 1
#define IncludeSonyNameNew 1
#define vMacScreenHeight 342
#define vMacScreenWidth 512
#define vMacScreenDepth 0
#define kROM_Size 0x00020000
#define IncludePbufs 1
#define NumPbufs 4
#define EnableMouseMotion 1
#define IncludeHostTextClipExchange 1
#define EnableAutoSlow 1
#define EmLocalTalk 0
#define AutoLocation 1
#define AutoTimeZone 1
#ifdef PLIST_PREPROCESSOR
#define MNVMBundleDisplayName Mac Plus
#define MNVMBundleGetInfoString 4M, 512×342
#endif

View File

@ -0,0 +1,33 @@
/*
see comment in OSGCOMUD.h
This file is automatically generated by the build system,
which tries to know what options are valid in what
combinations. Avoid changing this file manually unless
you know what you're doing.
*/
#define RomFileName "vMac.ROM"
#define kCheckSumRom_Size 0x00020000
#define kRomCheckSum1 0x4D1EEEE1
#define kRomCheckSum2 0x4D1EEAE1
#define kRomCheckSum3 0x4D1F8172
#define RomStartCheckSum 1
#define SaveDialogEnable 1
#define EnableAltKeysMode 0
#define VarFullScreen 1
#define WantInitFullScreen 0
#define MayFullScreen 1
#define MayNotFullScreen 1
#define WantInitMagnify 0
#define EnableMagnify 1
#define MyWindowScale 2
#define WantInitRunInBackground 0
#define WantInitNotAutoSlow 0
#define WantInitSpeedValue 3
#define WantEnblCtrlInt 1
#define WantEnblCtrlRst 1
#define WantEnblCtrlKtg 1
#define UseControlKeys 1
#define UseActvCode 0
#define EnableDemoMsg 0

View File

@ -1,20 +1,22 @@
/*
Configuration options used by platform independent code.
see comment in PICOMMON.h
This file is automatically generated by the build system,
which tries to know what options are valid in what
combinations. Avoid changing this file manually unless
you know what you're doing.
This file is automatically generated by the build system,
which tries to know what options are valid in what
combinations. Avoid changing this file manually unless
you know what you're doing.
*/
#define EmClassicKbrd 1
#define EmADB 0
#define EmRTC 1
#define EmPMU 0
#define EmVIA1 1
#define EmVIA2 0
#define Use68020 0
#define EmFPU 0
#define EmMMU 0
#define EmClassicSnd 1
#define EmASC 0
#define CurEmMd kEmMd_Plus
@ -24,6 +26,9 @@
#define WantCycByPriOp 1
#define WantCloserCyc 0
#define kAutoSlowSubTicks 16384
#define kAutoSlowTime 34
#define kRAMa_Size 0x00200000
#define kRAMb_Size 0x00200000
@ -36,8 +41,8 @@
#define IncludeExtnHostTextClipExchange 1
#define Sony_SupportDC42 1
#define Sony_SupportTags 1
#define Sony_WantChecksumsUpdated 1
#define Sony_SupportTags 0
#define Sony_WantChecksumsUpdated 0
#define Sony_VerifyChecksums 0
#define CaretBlinkTime 0x03
#define SpeakerVol 0x07
@ -51,87 +56,87 @@
enum {
Wire_VIA1_iA0_SoundVolb0,
Wire_VIA1_iA0_SoundVolb0,
#define SoundVolb0 (Wires[Wire_VIA1_iA0_SoundVolb0])
#define VIA1_iA0 (Wires[Wire_VIA1_iA0_SoundVolb0])
Wire_VIA1_iA1_SoundVolb1,
Wire_VIA1_iA1_SoundVolb1,
#define SoundVolb1 (Wires[Wire_VIA1_iA1_SoundVolb1])
#define VIA1_iA1 (Wires[Wire_VIA1_iA1_SoundVolb1])
Wire_VIA1_iA2_SoundVolb2,
Wire_VIA1_iA2_SoundVolb2,
#define SoundVolb2 (Wires[Wire_VIA1_iA2_SoundVolb2])
#define VIA1_iA2 (Wires[Wire_VIA1_iA2_SoundVolb2])
Wire_VIA1_iA4_MemOverlay,
Wire_VIA1_iA4_MemOverlay,
#define MemOverlay (Wires[Wire_VIA1_iA4_MemOverlay])
#define VIA1_iA4 (Wires[Wire_VIA1_iA4_MemOverlay])
#define VIA1_iA4_ChangeNtfy MemOverlay_ChangeNtfy
Wire_VIA1_iA6_SCRNvPage2,
Wire_VIA1_iA6_SCRNvPage2,
#define SCRNvPage2 (Wires[Wire_VIA1_iA6_SCRNvPage2])
#define VIA1_iA6 (Wires[Wire_VIA1_iA6_SCRNvPage2])
Wire_VIA1_iA5_IWMvSel,
Wire_VIA1_iA5_IWMvSel,
#define IWMvSel (Wires[Wire_VIA1_iA5_IWMvSel])
#define VIA1_iA5 (Wires[Wire_VIA1_iA5_IWMvSel])
Wire_VIA1_iA7_SCCwaitrq,
Wire_VIA1_iA7_SCCwaitrq,
#define SCCwaitrq (Wires[Wire_VIA1_iA7_SCCwaitrq])
#define VIA1_iA7 (Wires[Wire_VIA1_iA7_SCCwaitrq])
Wire_VIA1_iB0_RTCdataLine,
Wire_VIA1_iB0_RTCdataLine,
#define RTCdataLine (Wires[Wire_VIA1_iB0_RTCdataLine])
#define VIA1_iB0 (Wires[Wire_VIA1_iB0_RTCdataLine])
#define VIA1_iB0_ChangeNtfy RTCdataLine_ChangeNtfy
Wire_VIA1_iB1_RTCclock,
Wire_VIA1_iB1_RTCclock,
#define RTCclock (Wires[Wire_VIA1_iB1_RTCclock])
#define VIA1_iB1 (Wires[Wire_VIA1_iB1_RTCclock])
#define VIA1_iB1_ChangeNtfy RTCclock_ChangeNtfy
Wire_VIA1_iB2_RTCunEnabled,
Wire_VIA1_iB2_RTCunEnabled,
#define RTCunEnabled (Wires[Wire_VIA1_iB2_RTCunEnabled])
#define VIA1_iB2 (Wires[Wire_VIA1_iB2_RTCunEnabled])
#define VIA1_iB2_ChangeNtfy RTCunEnabled_ChangeNtfy
Wire_VIA1_iA3_SoundBuffer,
Wire_VIA1_iA3_SoundBuffer,
#define SoundBuffer (Wires[Wire_VIA1_iA3_SoundBuffer])
#define VIA1_iA3 (Wires[Wire_VIA1_iA3_SoundBuffer])
Wire_VIA1_iB3_MouseBtnUp,
Wire_VIA1_iB3_MouseBtnUp,
#define MouseBtnUp (Wires[Wire_VIA1_iB3_MouseBtnUp])
#define VIA1_iB3 (Wires[Wire_VIA1_iB3_MouseBtnUp])
Wire_VIA1_iB4_MouseX2,
Wire_VIA1_iB4_MouseX2,
#define MouseX2 (Wires[Wire_VIA1_iB4_MouseX2])
#define VIA1_iB4 (Wires[Wire_VIA1_iB4_MouseX2])
Wire_VIA1_iB5_MouseY2,
Wire_VIA1_iB5_MouseY2,
#define MouseY2 (Wires[Wire_VIA1_iB5_MouseY2])
#define VIA1_iB5 (Wires[Wire_VIA1_iB5_MouseY2])
Wire_VIA1_iCB2_KybdDat,
Wire_VIA1_iCB2_KybdDat,
#define VIA1_iCB2 (Wires[Wire_VIA1_iCB2_KybdDat])
#define VIA1_iCB2_ChangeNtfy Kybd_DataLineChngNtfy
Wire_VIA1_iB6_SCRNbeamInVid,
Wire_VIA1_iB6_SCRNbeamInVid,
#define SCRNbeamInVid (Wires[Wire_VIA1_iB6_SCRNbeamInVid])
#define VIA1_iB6 (Wires[Wire_VIA1_iB6_SCRNbeamInVid])
Wire_VIA1_iB7_SoundDisable,
Wire_VIA1_iB7_SoundDisable,
#define SoundDisable (Wires[Wire_VIA1_iB7_SoundDisable])
#define VIA1_iB7 (Wires[Wire_VIA1_iB7_SoundDisable])
Wire_VIA1_InterruptRequest,
Wire_VIA1_InterruptRequest,
#define VIA1_InterruptRequest (Wires[Wire_VIA1_InterruptRequest])
#define VIA1_interruptChngNtfy VIAorSCCinterruptChngNtfy
Wire_SCCInterruptRequest,
Wire_SCCInterruptRequest,
#define SCCInterruptRequest (Wires[Wire_SCCInterruptRequest])
#define SCCinterruptChngNtfy VIAorSCCinterruptChngNtfy
kNumWires
kNumWires
};
@ -160,8 +165,6 @@ enum {
#define KYBD_ShiftInData VIA1_ShiftOutData
#define KYBD_ShiftOutData VIA1_ShiftInData
#define kCheckSumRom_Size kROM_Size
#define kExtn_Block_Base 0x00F40000
#define kExtn_ln2Spc 5

1
Mini vMac/STRCONST.h Normal file
View File

@ -0,0 +1 @@
#include "STRCNENG.h"

View File

@ -43,7 +43,7 @@
&lt;a href=&quot;https://namedfork.net/minivmac&quot;&gt;namedfork.net/minivmac&lt;/a&gt;&lt;br/&gt;
&lt;hr/&gt;
based on Mini vMac $mnvmversion&lt;br/&gt;
©2001-2019 Paul C. Pratt&lt;br/&gt;
©2001-2020 Paul C. Pratt&lt;br/&gt;
&lt;a href=&quot;http://gryphel.com/c/minivmac&quot;&gt;gryphel.com/c/minivmac&lt;/a&gt;</string>
</dict>
</plist>

View File

@ -1,373 +0,0 @@
/*
ACTVCODE.h
Copyright (C) 2009 Paul C. Pratt
You can redistribute this file and/or modify it under the terms
of version 2 of the GNU General Public License as published by
the Free Software Foundation. You should have received a copy
of the license along with this file; see the file COPYING.
This file is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
license for more details.
*/
/*
ACTiVation CODE
*/
LOCALFUNC uimr KeyFun0(uimr x, uimr y, uimr m)
{
uimr r = x + y;
if ((r >= m) || (r < x)) {
r -= m;
}
return r;
}
LOCALFUNC uimr KeyFun1(uimr x, uimr y, uimr m)
{
uimr r = 0;
uimr t = x;
uimr s = y;
while (s > 0) {
if (0 != (s & 1)) {
r = KeyFun0(r, t, m);
}
t = KeyFun0(t, t, m);
s >>= 1;
}
return r;
}
LOCALFUNC uimr KeyFun2(uimr x, uimr y, uimr m)
{
uimr r = 1;
uimr t = x;
uimr s = y;
while (s > 0) {
if (0 != (s & 1)) {
r = KeyFun1(r, t, m);
}
t = KeyFun1(t, t, m);
s >>= 1;
}
return r;
}
LOCALFUNC blnr CheckActvCode(ui3p p, blnr *Trial)
{
blnr IsOk = falseblnr;
uimr v0 = do_get_mem_long(p);
uimr v1 = do_get_mem_long(p + 4);
if (v0 > KeyCon2) {
/* v0 too big */
} else if (v1 > KeyCon4) {
/* v1 too big */
} else {
uimr t0 = KeyFun0(v0, KeyCon0, KeyCon2);
uimr t1 = KeyFun2(KeyCon1, t0, KeyCon2);
uimr t2 = KeyFun2(v1, KeyCon3, KeyCon4);
uimr t3 = KeyFun0(t2, KeyCon4 - t1, KeyCon4);
uimr t4 = KeyFun0(t3, KeyCon4 - KeyCon5, KeyCon4);
if ((0 == (t4 >> 8)) && (t4 >= KeyCon6)) {
*Trial = falseblnr;
IsOk = trueblnr;
} else if (0 == t4) {
*Trial = trueblnr;
IsOk = trueblnr;
}
}
return IsOk;
}
/* user interface */
LOCALFUNC blnr Key2Digit(ui3r key, ui3r *r)
{
ui3r v;
switch (key) {
case MKC_0:
case MKC_KP0:
v = 0;
break;
case MKC_1:
case MKC_KP1:
v = 1;
break;
case MKC_2:
case MKC_KP2:
v = 2;
break;
case MKC_3:
case MKC_KP3:
v = 3;
break;
case MKC_4:
case MKC_KP4:
v = 4;
break;
case MKC_5:
case MKC_KP5:
v = 5;
break;
case MKC_6:
case MKC_KP6:
v = 6;
break;
case MKC_7:
case MKC_KP7:
v = 7;
break;
case MKC_8:
case MKC_KP8:
v = 8;
break;
case MKC_9:
case MKC_KP9:
v = 9;
break;
default:
return falseblnr;
break;
}
*r = v;
return trueblnr;
}
#define ActvCodeMaxLen 20
LOCALVAR ui4r ActvCodeLen = 0;
LOCALVAR ui3b ActvCodeDigits[ActvCodeMaxLen];
#define ActvCodeFileLen 8
#if UseActvFile
FORWARDFUNC tMacErr ActvCodeFileSave(ui3p p);
FORWARDFUNC tMacErr ActvCodeFileLoad(ui3p p);
#endif
LOCALVAR ui3b CurActvCode[ActvCodeFileLen];
LOCALPROC DoActvCodeModeKey(ui3r key)
{
ui3r digit;
ui3r L;
int i;
blnr Trial;
if (MKC_BackSpace == key) {
if (ActvCodeLen > 0) {
--ActvCodeLen;
NeedWholeScreenDraw = trueblnr;
}
} else if (Key2Digit(key, &digit)) {
if (ActvCodeLen < (ActvCodeMaxLen - 1)) {
ActvCodeDigits[ActvCodeLen] = digit;
++ActvCodeLen;
NeedWholeScreenDraw = trueblnr;
L = ActvCodeDigits[0] + (1 + 9);
if (ActvCodeLen == L) {
uimr v0 = 0;
uimr v1 = 0;
for (i = 1; i < (ActvCodeDigits[0] + 1); ++i) {
v0 = v0 * 10 + ActvCodeDigits[i];
}
for (; i < ActvCodeLen; ++i) {
v1 = v1 * 10 + ActvCodeDigits[i];
}
do_put_mem_long(&CurActvCode[0], v0);
do_put_mem_long(&CurActvCode[4], v1);
if (CheckActvCode(CurActvCode, &Trial)) {
SpecialModeClr(SpclModeActvCode);
NeedWholeScreenDraw = trueblnr;
#if UseActvFile
if (Trial) {
MacMsg(
"Using temporary code.",
"Thank you for trying Mini vMac!",
falseblnr);
} else {
if (mnvm_noErr != ActvCodeFileSave(CurActvCode))
{
MacMsg("Oops",
"I could not save the activation code"
" to disk.",
falseblnr);
} else {
MacMsg("Activation succeeded.",
"Thank you!", falseblnr);
}
}
#else
MacMsg(
"Thank you for trying Mini vMac!",
"sample variation : ^v",
falseblnr);
#endif
}
} else if (ActvCodeLen > L) {
--ActvCodeLen;
}
}
}
}
LOCALPROC DrawCellsActvCodeModeBody(void)
{
#if UseActvFile
DrawCellsOneLineStr("Please enter your activation code:");
DrawCellsBlankLine();
#else
DrawCellsOneLineStr(
"To try this variation of ^p, please type these numbers:");
DrawCellsBlankLine();
DrawCellsOneLineStr("281 953 822 340");
DrawCellsBlankLine();
#endif
if (0 == ActvCodeLen) {
DrawCellsOneLineStr("?");
} else {
int i;
ui3r L = ActvCodeDigits[0] + (1 + 9);
DrawCellsBeginLine();
for (i = 0; i < L; ++i) {
if (0 == ((L - i) % 3)) {
if (0 != i) {
DrawCellAdvance(kCellSpace);
}
}
if (i < ActvCodeLen) {
DrawCellAdvance(kCellDigit0 + ActvCodeDigits[i]);
} else if (i == ActvCodeLen) {
DrawCellAdvance(kCellQuestion);
} else {
DrawCellAdvance(kCellHyphen);
}
}
DrawCellsEndLine();
if (L == ActvCodeLen) {
DrawCellsBlankLine();
DrawCellsOneLineStr(
"Sorry, this is not a valid activation code.");
}
}
#if UseActvFile
DrawCellsBlankLine();
DrawCellsOneLineStr(
"If you haven;}t obtained an activation code yet,"
" here is a temporary one:");
DrawCellsBlankLine();
DrawCellsOneLineStr("281 953 822 340");
#else
DrawCellsBlankLine();
DrawCellsOneLineStr(kStrForMoreInfo);
DrawCellsOneLineStr("http://www.gryphel.com/c/var/");
#endif
}
LOCALPROC DrawActvCodeMode(void)
{
DrawSpclMode0(
#if UseActvFile
"Activation Code",
#else
"sample variation : ^v",
#endif
DrawCellsActvCodeModeBody);
}
#if UseActvFile
LOCALPROC ClStrAppendHexLong(int *L0, ui3b *r, ui5r v)
{
ClStrAppendHexWord(L0, r, (v >> 16) & 0xFFFF);
ClStrAppendHexWord(L0, r, v & 0xFFFF);
}
#endif
LOCALPROC CopyRegistrationStr(void)
{
ui3b ps[ClStrMaxLength];
int i;
int L;
tPbuf j;
#if UseActvFile
int L0;
ui5r sum;
ClStrFromSubstCStr(&L0, ps, "^v ");
for (i = 0; i < L0; ++i) {
ps[i] = Cell2MacAsciiMap[ps[i]];
}
L = L0;
sum = 0;
for (i = 0; i < L; ++i) {
sum += ps[i];
sum = (sum << 5) | ((sum >> (32 - 5)) & 0x1F);
sum += (sum << 8);
}
sum &= 0x1FFFFFFF;
sum = KeyFun0(sum, do_get_mem_long(&CurActvCode[0]), KeyCon4);
ClStrAppendHexLong(&L, ps, sum);
sum = KeyFun0(sum, do_get_mem_long(&CurActvCode[4]), KeyCon4);
sum = KeyFun2(sum, KeyCon3, KeyCon4);
ClStrAppendHexLong(&L, ps, sum);
for (i = L0; i < L; ++i) {
ps[i] = Cell2MacAsciiMap[ps[i]];
}
#else
ClStrFromSubstCStr(&L, ps, "^v");
for (i = 0; i < L; ++i) {
ps[i] = Cell2MacAsciiMap[ps[i]];
}
#endif
if (mnvm_noErr == PbufNew(L, &j)) {
PbufTransfer(ps, j, 0, L, trueblnr);
HTCEexport(j);
}
}
LOCALFUNC blnr ActvCodeInit(void)
{
#if UseActvFile
blnr Trial;
if ((mnvm_noErr != ActvCodeFileLoad(CurActvCode))
|| (! CheckActvCode(CurActvCode, &Trial))
|| Trial
)
#endif
{
SpecialModeSet(SpclModeActvCode);
NeedWholeScreenDraw = trueblnr;
}
return trueblnr;
}

View File

@ -1,214 +0,0 @@
/*
ADBEMDEV.c
Copyright (C) 2008 Paul C. Pratt
You can redistribute this file and/or modify it under the terms
of version 2 of the GNU General Public License as published by
the Free Software Foundation. You should have received a copy
of the license along with this file; see the file COPYING.
This file is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
license for more details.
*/
/*
Apple Desktop Bus EMulated DEVice
*/
#ifndef AllFiles
#include "SYSDEPNS.h"
#include "MYOSGLUE.h"
#include "EMCONFIG.h"
#include "GLOBGLUE.h"
#endif
#include "ADBEMDEV.h"
#ifdef _VIA_Debug
#include <stdio.h>
#endif
/*
ReportAbnormalID unused 0x0C06 - 0x0CFF
*/
IMPORTPROC ADB_ShiftOutData(ui3b v);
IMPORTFUNC ui3b ADB_ShiftInData(void);
#include "ADBSHARE.h"
LOCALVAR blnr ADB_ListenDatBuf;
LOCALVAR ui3b ADB_IndexDatBuf;
GLOBALPROC ADB_DoNewState(void)
{
ui3b state = ADB_st1 * 2 + ADB_st0;
#ifdef _VIA_Debug
fprintf(stderr, "ADB_DoNewState: %d\n", state);
#endif
{
ADB_Int = 1;
switch (state) {
case 0: /* Start a new command */
if (ADB_ListenDatBuf) {
ADB_ListenDatBuf = falseblnr;
ADB_SzDatBuf = ADB_IndexDatBuf;
ADB_EndListen();
}
ADB_TalkDatBuf = falseblnr;
ADB_IndexDatBuf = 0;
ADB_CurCmd = ADB_ShiftInData();
/* which sets interrupt, acknowleding command */
#ifdef _VIA_Debug
fprintf(stderr, "in: %d\n", ADB_CurCmd);
#endif
switch ((ADB_CurCmd >> 2) & 3) {
case 0: /* reserved */
switch (ADB_CurCmd & 3) {
case 0: /* Send Reset */
ADB_DoReset();
break;
case 1: /* Flush */
ADB_Flush();
break;
case 2: /* reserved */
case 3: /* reserved */
ReportAbnormalID(0x0C01,
"Reserved ADB command");
break;
}
break;
case 1: /* reserved */
ReportAbnormalID(0x0C02,
"Reserved ADB command");
break;
case 2: /* listen */
ADB_ListenDatBuf = trueblnr;
#ifdef _VIA_Debug
fprintf(stderr, "*** listening\n");
#endif
break;
case 3: /* talk */
ADB_DoTalk();
break;
}
break;
case 1: /* Transfer date byte (even) */
case 2: /* Transfer date byte (odd) */
if (! ADB_ListenDatBuf) {
/*
will get here even if no pending talk data,
when there is pending event from device
other than the one polled by the last talk
command. this probably indicates a bug.
*/
if ((! ADB_TalkDatBuf)
|| (ADB_IndexDatBuf >= ADB_SzDatBuf))
{
ADB_ShiftOutData(0xFF);
ADB_Data = 1;
ADB_Int = 0;
} else {
#ifdef _VIA_Debug
fprintf(stderr, "*** talk one\n");
#endif
ADB_ShiftOutData(ADB_DatBuf[ADB_IndexDatBuf]);
ADB_Data = 1;
ADB_IndexDatBuf += 1;
}
} else {
if (ADB_IndexDatBuf >= ADB_MaxSzDatBuf) {
ReportAbnormalID(0x0C03, "ADB listen too much");
/* ADB_MaxSzDatBuf isn't big enough */
(void) ADB_ShiftInData();
} else {
#ifdef _VIA_Debug
fprintf(stderr, "*** listen one\n");
#endif
ADB_DatBuf[ADB_IndexDatBuf] = ADB_ShiftInData();
ADB_IndexDatBuf += 1;
}
}
break;
case 3: /* idle */
if (ADB_ListenDatBuf) {
ReportAbnormalID(0x0C04, "ADB idle follows listen");
/* apparently doesn't happen */
}
if (ADB_TalkDatBuf) {
if (ADB_IndexDatBuf != 0) {
ReportAbnormalID(0x0C05,
"idle when not done talking");
}
ADB_ShiftOutData(0xFF);
/* ADB_Int = 0; */
} else if (CheckForADBanyEvt()) {
if (((ADB_CurCmd >> 2) & 3) == 3) {
ADB_DoTalk();
}
ADB_ShiftOutData(0xFF);
/* ADB_Int = 0; */
}
break;
}
}
}
GLOBALPROC ADBstate_ChangeNtfy(void)
{
#ifdef _VIA_Debug
fprintf(stderr, "ADBstate_ChangeNtfy: %d, %d, %d\n",
ADB_st1, ADB_st0, GetCuriCount());
#endif
ICT_add(kICT_ADB_NewState,
348160UL * kCycleScale / 64 * kMyClockMult);
/*
Macintosh Family Hardware Reference say device "must respond
to talk command within 260 microseconds", which translates
to about 190 instructions. But haven't seen much problems
even for very large values (tens of thousands), and do see
problems for small values. 50 is definitely too small,
mouse doesn't move smoothly. There may still be some
signs of this problem with 150.
On the other hand, how fast the device must respond may
not be related to how fast the ADB transceiver responds.
*/
}
GLOBALPROC ADB_DataLineChngNtfy(void)
{
#ifdef _VIA_Debug
fprintf(stderr, "ADB_DataLineChngNtfy: %d\n", ADB_Data);
#endif
}
GLOBALPROC ADB_Update(void)
{
ui3b state = ADB_st1 * 2 + ADB_st0;
if (state == 3) { /* idle */
if (ADB_TalkDatBuf) {
/* ignore, presumably being taken care of */
} else if (CheckForADBanyEvt())
{
if (((ADB_CurCmd >> 2) & 3) == 3) {
ADB_DoTalk();
}
ADB_ShiftOutData(0xFF);
/*
Wouldn't expect this would be needed unless
there is actually talk data. But without it,
ADB never polls the other devices. Clearing
ADB_Int has no effect.
*/
/*
ADB_Int = 0;
seems to have no effect, which probably indicates a bug
*/
}
}
}

View File

@ -1,27 +0,0 @@
/*
ADBEMDEV.h
Copyright (C) 2008 Paul C. Pratt
You can redistribute this file and/or modify it under the terms
of version 2 of the GNU General Public License as published by
the Free Software Foundation. You should have received a copy
of the license along with this file; see the file COPYING.
This file is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
license for more details.
*/
#ifdef ADBEMDEV_H
#error "header already included"
#else
#define ADBEMDEV_H
#endif
EXPORTPROC ADBstate_ChangeNtfy(void);
EXPORTPROC ADB_DoNewState(void);
EXPORTPROC ADB_DataLineChngNtfy(void);
EXPORTPROC ADB_Update(void);

View File

@ -1,290 +0,0 @@
/*
ADBSHARE.h
Copyright (C) 2008 Paul C. Pratt
You can redistribute this file and/or modify it under the terms
of version 2 of the GNU General Public License as published by
the Free Software Foundation. You should have received a copy
of the license along with this file; see the file COPYING.
This file is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
license for more details.
*/
/*
Apple Desktop Bus SHAREd code
shared by emulation of different implementations of ADB
*/
#ifdef ADBSHARE_H
#error "header already included"
#else
#define ADBSHARE_H
#endif
/*
ReportAbnormalID unused 0x0D08 - 0x0DFF
*/
#define ADB_MaxSzDatBuf 8
LOCALVAR ui3b ADB_SzDatBuf;
LOCALVAR blnr ADB_TalkDatBuf = falseblnr;
LOCALVAR ui3b ADB_DatBuf[ADB_MaxSzDatBuf];
LOCALVAR ui3b ADB_CurCmd = 0;
LOCALVAR ui3b NotSoRandAddr = 1;
LOCALVAR ui3b MouseADBAddress;
LOCALVAR blnr SavedCurMouseButton = falseblnr;
LOCALVAR ui4r MouseADBDeltaH = 0;
LOCALVAR ui4r MouseADBDeltaV = 0;
LOCALPROC ADB_DoMouseTalk(void)
{
switch (ADB_CurCmd & 3) {
case 0:
{
MyEvtQEl *p;
ui4b partH;
ui4b partV;
blnr overflow = falseblnr;
blnr MouseButtonChange = falseblnr;
if (nullpr != (p = MyEvtQOutP())) {
if (MyEvtQElKindMouseDelta == p->kind) {
MouseADBDeltaH += p->u.pos.h;
MouseADBDeltaV += p->u.pos.v;
MyEvtQOutDone();
}
}
partH = MouseADBDeltaH;
partV = MouseADBDeltaV;
if ((si4b)MouseADBDeltaH < 0) {
partH = - partH;
}
if ((si4b)MouseADBDeltaV < 0) {
partV = - partV;
}
if ((partH >> 6) > 0) {
overflow = trueblnr;
partH = (1 << 6) - 1;
}
if ((partV >> 6) > 0) {
overflow = trueblnr;
partV = (1 << 6) - 1;
}
if ((si4b)MouseADBDeltaH < 0) {
partH = - partH;
}
if ((si4b)MouseADBDeltaV < 0) {
partV = - partV;
}
MouseADBDeltaH -= partH;
MouseADBDeltaV -= partV;
if (! overflow) {
if (nullpr != (p = MyEvtQOutP())) {
if (MyEvtQElKindMouseButton == p->kind) {
SavedCurMouseButton = p->u.press.down;
MouseButtonChange = trueblnr;
MyEvtQOutDone();
}
}
}
if ((0 != partH) || (0 != partV) || MouseButtonChange) {
ADB_SzDatBuf = 2;
ADB_TalkDatBuf = trueblnr;
ADB_DatBuf[0] = (SavedCurMouseButton ? 0x00 : 0x80)
| (partV & 127);
ADB_DatBuf[1] = /* 0x00 */ 0x80 | (partH & 127);
}
}
ADBMouseDisabled = 0;
break;
case 3:
ADB_SzDatBuf = 2;
ADB_TalkDatBuf = trueblnr;
ADB_DatBuf[0] = 0x60 | (NotSoRandAddr & 0x0f);
ADB_DatBuf[1] = 0x01;
NotSoRandAddr += 1;
break;
default:
ReportAbnormalID(0x0D01, "Talk to unknown mouse register");
break;
}
}
LOCALPROC ADB_DoMouseListen(void)
{
switch (ADB_CurCmd & 3) {
case 3:
if (ADB_DatBuf[1] == 0xFE) {
/* change address */
MouseADBAddress = (ADB_DatBuf[0] & 0x0F);
} else {
ReportAbnormalID(0x0D02,
"unknown listen op to mouse register 3");
}
break;
default:
ReportAbnormalID(0x0D03,
"listen to unknown mouse register");
break;
}
}
LOCALVAR ui3b KeyboardADBAddress;
LOCALFUNC blnr CheckForADBkeyEvt(ui3b *NextADBkeyevt)
{
int i;
blnr KeyDown;
if (! FindKeyEvent(&i, &KeyDown)) {
return falseblnr;
} else {
#if dbglog_HAVE && 0
if (KeyDown) {
dbglog_WriteNote("Got a KeyDown");
}
#endif
switch (i) {
case MKC_Control:
i = 0x36;
break;
case MKC_Left:
i = 0x3B;
break;
case MKC_Right:
i = 0x3C;
break;
case MKC_Down:
i = 0x3D;
break;
case MKC_Up:
i = 0x3E;
break;
default:
/* unchanged */
break;
}
*NextADBkeyevt = (KeyDown ? 0x00 : 0x80) | i;
return trueblnr;
}
}
LOCALPROC ADB_DoKeyboardTalk(void)
{
switch (ADB_CurCmd & 3) {
case 0:
{
ui3b NextADBkeyevt;
if (CheckForADBkeyEvt(&NextADBkeyevt)) {
ADB_SzDatBuf = 2;
ADB_TalkDatBuf = trueblnr;
ADB_DatBuf[0] = NextADBkeyevt;
if (! CheckForADBkeyEvt(&NextADBkeyevt)) {
ADB_DatBuf[1] = 0xFF;
} else {
ADB_DatBuf[1] = NextADBkeyevt;
}
}
}
break;
case 3:
ADB_SzDatBuf = 2;
ADB_TalkDatBuf = trueblnr;
ADB_DatBuf[0] = 0x60 | (NotSoRandAddr & 0x0f);
ADB_DatBuf[1] = 0x01;
NotSoRandAddr += 1;
break;
default:
ReportAbnormalID(0x0D04,
"Talk to unknown keyboard register");
break;
}
}
LOCALPROC ADB_DoKeyboardListen(void)
{
switch (ADB_CurCmd & 3) {
case 3:
if (ADB_DatBuf[1] == 0xFE) {
/* change address */
KeyboardADBAddress = (ADB_DatBuf[0] & 0x0F);
} else {
ReportAbnormalID(0x0D05,
"unknown listen op to keyboard register 3");
}
break;
default:
ReportAbnormalID(0x0D06,
"listen to unknown keyboard register");
break;
}
}
LOCALFUNC blnr CheckForADBanyEvt(void)
{
MyEvtQEl *p = MyEvtQOutP();
if (nullpr != p) {
switch (p->kind) {
case MyEvtQElKindMouseButton:
case MyEvtQElKindMouseDelta:
case MyEvtQElKindKey:
return trueblnr;
break;
default:
break;
}
}
return (0 != MouseADBDeltaH) && (0 != MouseADBDeltaV);
}
LOCALPROC ADB_DoTalk(void)
{
ui3b Address = ADB_CurCmd >> 4;
if (Address == MouseADBAddress) {
ADB_DoMouseTalk();
} else if (Address == KeyboardADBAddress) {
ADB_DoKeyboardTalk();
}
}
LOCALPROC ADB_EndListen(void)
{
ui3b Address = ADB_CurCmd >> 4;
if (Address == MouseADBAddress) {
ADB_DoMouseListen();
} else if (Address == KeyboardADBAddress) {
ADB_DoKeyboardListen();
}
}
LOCALPROC ADB_DoReset(void)
{
MouseADBAddress = 3;
KeyboardADBAddress = 2;
}
LOCALPROC ADB_Flush(void)
{
ui3b Address = ADB_CurCmd >> 4;
if ((Address == KeyboardADBAddress)
|| (Address == MouseADBAddress))
{
ADB_SzDatBuf = 2;
ADB_TalkDatBuf = trueblnr;
ADB_DatBuf[0] = 0x00;
ADB_DatBuf[1] = 0x00;
} else {
ReportAbnormalID(0x0D07, "Unhandled ADB Flush");
}
}

View File

@ -1,209 +0,0 @@
/*
ALTKEYSM.h
Copyright (C) 2007 Paul C. Pratt
You can redistribute this file and/or modify it under the terms
of version 2 of the GNU General Public License as published by
the Free Software Foundation. You should have received a copy
of the license along with this file; see the file COPYING.
This file is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
license for more details.
*/
/*
ALTernate KEYs Mode
*/
#ifdef ALTKEYSM_H
#error "header already included"
#else
#define ALTKEYSM_H
#endif
LOCALVAR blnr AltKeysLockText = falseblnr;
LOCALVAR blnr AltKeysTrueCmnd = falseblnr;
LOCALVAR blnr AltKeysTrueOption = falseblnr;
LOCALVAR blnr AltKeysTrueShift = falseblnr;
LOCALVAR blnr AltKeysModOn = falseblnr;
LOCALVAR blnr AltKeysTextOn = falseblnr;
LOCALPROC CheckAltKeyUseMode(void)
{
blnr NewAltKeysTextOn;
AltKeysModOn = AltKeysTrueCmnd
|| AltKeysTrueOption || AltKeysTrueShift;
NewAltKeysTextOn = AltKeysLockText || AltKeysModOn;
if (NewAltKeysTextOn != AltKeysTextOn) {
DisconnectKeyCodes(kKeepMaskControl | kKeepMaskCapsLock
| (AltKeysTrueCmnd ? kKeepMaskCommand : 0)
| (AltKeysTrueOption ? kKeepMaskOption : 0)
| (AltKeysTrueShift ? kKeepMaskShift : 0));
AltKeysTextOn = NewAltKeysTextOn;
}
}
LOCALPROC Keyboard_UpdateKeyMap1(ui3r key, blnr down)
{
if (MKC_Command == key) {
AltKeysTrueCmnd = down;
CheckAltKeyUseMode();
Keyboard_UpdateKeyMap(key, down);
} else if (MKC_Option == key) {
AltKeysTrueOption = down;
CheckAltKeyUseMode();
Keyboard_UpdateKeyMap(key, down);
} else if (MKC_Shift == key) {
AltKeysTrueShift = down;
CheckAltKeyUseMode();
Keyboard_UpdateKeyMap(key, down);
} else if (MKC_SemiColon == key) {
if (down && ! AltKeysModOn) {
if (AltKeysLockText) {
AltKeysLockText = falseblnr;
NeedWholeScreenDraw = trueblnr;
SpecialModeClr(SpclModeAltKeyText);
CheckAltKeyUseMode();
}
} else {
Keyboard_UpdateKeyMap(key, down);
}
} else if (AltKeysTextOn) {
Keyboard_UpdateKeyMap(key, down);
} else if (MKC_M == key) {
if (down) {
if (! AltKeysLockText) {
AltKeysLockText = trueblnr;
SpecialModeSet(SpclModeAltKeyText);
NeedWholeScreenDraw = trueblnr;
CheckAltKeyUseMode();
}
}
} else {
switch (key) {
case MKC_A:
key = MKC_SemiColon;
break;
case MKC_B:
key = MKC_BackSlash;
break;
case MKC_C:
key = MKC_F3;
break;
case MKC_D:
key = MKC_Option;
break;
case MKC_E:
key = MKC_BackSpace;
break;
case MKC_F:
key = MKC_Command;
break;
case MKC_G:
key = MKC_Enter;
break;
case MKC_H:
key = MKC_Equal;
break;
case MKC_I:
key = MKC_Up;
break;
case MKC_J:
key = MKC_Left;
break;
case MKC_K:
key = MKC_Down;
break;
case MKC_L:
key = MKC_Right;
break;
case MKC_M:
/* handled above */
break;
case MKC_N:
key = MKC_Minus;
break;
case MKC_O:
key = MKC_RightBracket;
break;
case MKC_P:
return; /* none */
break;
case MKC_Q:
key = MKC_Grave;
break;
case MKC_R:
key = MKC_Return;
break;
case MKC_S:
key = MKC_Shift;
break;
case MKC_T:
key = MKC_Tab;
break;
case MKC_U:
key = MKC_LeftBracket;
break;
case MKC_V:
key = MKC_F4;
break;
case MKC_W:
return; /* none */
break;
case MKC_X:
key = MKC_F2;
break;
case MKC_Y:
key = MKC_Escape;
break;
case MKC_Z:
key = MKC_F1;
break;
default:
break;
}
Keyboard_UpdateKeyMap(key, down);
}
}
LOCALPROC DisconnectKeyCodes1(ui5b KeepMask)
{
DisconnectKeyCodes(KeepMask);
if (! (0 != (KeepMask & kKeepMaskCommand))) {
AltKeysTrueCmnd = falseblnr;
}
if (! (0 != (KeepMask & kKeepMaskOption))) {
AltKeysTrueOption = falseblnr;
}
if (! (0 != (KeepMask & kKeepMaskShift))) {
AltKeysTrueShift = falseblnr;
}
AltKeysModOn = AltKeysTrueCmnd
|| AltKeysTrueOption || AltKeysTrueShift;
AltKeysTextOn = AltKeysLockText || AltKeysModOn;
}
LOCALPROC DrawAltKeyMode(void)
{
int i;
CurCellv0 = ControlBoxv0;
CurCellh0 = ControlBoxh0;
DrawCellAdvance(kInsertText00);
for (i = (ControlBoxw - 4) / 2; --i >= 0; ) {
DrawCellAdvance(kInsertText04);
}
DrawCellAdvance(kInsertText01);
DrawCellAdvance(kInsertText02);
for (i = (ControlBoxw - 4) / 2; --i >= 0; ) {
DrawCellAdvance(kInsertText04);
}
DrawCellAdvance(kInsertText03);
}

View File

@ -1,868 +0,0 @@
/*
ASCEMDEV.c
Copyright (C) 2008 Paul C. Pratt
You can redistribute this file and/or modify it under the terms
of version 2 of the GNU General Public License as published by
the Free Software Foundation. You should have received a copy
of the license along with this file; see the file COPYING.
This file is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
license for more details.
*/
/*
Apple Sound Chip EMulated DEVice
*/
#ifndef AllFiles
#include "SYSDEPNS.h"
#include "ENDIANAC.h"
#include "MYOSGLUE.h"
#include "EMCONFIG.h"
#include "GLOBGLUE.h"
#include "VIAEMDEV.h"
#endif
#include "ASCEMDEV.h"
/*
ReportAbnormalID unused 0x0F0E, 0x0F1E - 0x0FFF
*/
LOCALVAR ui3r SoundReg801 = 0;
LOCALVAR ui3r SoundReg802 = 0;
LOCALVAR ui3r SoundReg803 = 0;
LOCALVAR ui3r SoundReg804 = 0;
LOCALVAR ui3r SoundReg805 = 0;
LOCALVAR ui3r SoundReg_Volume = 0; /* 0x806 */
/* LOCALVAR ui3r SoundReg807 = 0; */
LOCALVAR ui3b ASC_SampBuff[0x800];
struct ASC_ChanR {
ui3b freq[4];
ui3b phase[4];
};
typedef struct ASC_ChanR ASC_ChanR;
LOCALVAR ASC_ChanR ASC_ChanA[4];
LOCALVAR ui4b ASC_FIFO_Out = 0;
LOCALVAR ui4b ASC_FIFO_InA = 0;
LOCALVAR ui4b ASC_FIFO_InB = 0;
LOCALVAR blnr ASC_Playing = falseblnr;
#define ASC_dolog (dbglog_HAVE && 0)
#ifdef ASC_interrupt_PulseNtfy
IMPORTPROC ASC_interrupt_PulseNtfy(void);
#endif
LOCALPROC ASC_RecalcStatus(void)
{
if ((1 == SoundReg801) && ASC_Playing) {
if (((ui4b)(ASC_FIFO_InA - ASC_FIFO_Out)) >= 0x200) {
SoundReg804 &= ~ 0x01;
} else {
SoundReg804 |= 0x01;
}
if (((ui4b)(ASC_FIFO_InA - ASC_FIFO_Out)) >= 0x400) {
SoundReg804 |= 0x02;
} else {
SoundReg804 &= ~ 0x02;
}
if (0 != (SoundReg802 & 2)) {
if (((ui4b)(ASC_FIFO_InB - ASC_FIFO_Out)) >= 0x200) {
SoundReg804 &= ~ 0x04;
} else {
SoundReg804 |= 0x04;
}
if (((ui4b)(ASC_FIFO_InB - ASC_FIFO_Out)) >= 0x400) {
SoundReg804 |= 0x08;
} else {
SoundReg804 &= ~ 0x08;
}
}
}
}
LOCALPROC ASC_ClearFIFO(void)
{
ASC_FIFO_Out = 0;
ASC_FIFO_InA = 0;
ASC_FIFO_InB = 0;
ASC_Playing = falseblnr;
ASC_RecalcStatus();
}
GLOBALFUNC ui5b ASC_Access(ui5b Data, blnr WriteMem, CPTR addr)
{
if (addr < 0x800) {
if (WriteMem) {
if (1 == SoundReg801) {
if (0 == (addr & 0x400)) {
if (((ui4b)(ASC_FIFO_InA - ASC_FIFO_Out)) >= 0x400)
{
#if 0 /* seems to happen in tetris */
ReportAbnormalID(0x0F01,
"ASC - Channel A Overflow");
#endif
SoundReg804 |= 0x02;
} else {
ASC_SampBuff[ASC_FIFO_InA & 0x3FF] = Data;
++ASC_FIFO_InA;
if (((ui4b)(ASC_FIFO_InA - ASC_FIFO_Out)) >= 0x200)
{
if (0 != (SoundReg804 & 0x01)) {
/* happens normally */
SoundReg804 &= ~ 0x01;
}
} else {
#if 0 /* doesn't seem to be necessary, but doesn't hurt either */
SoundReg804 |= 0x01;
#endif
}
if (((ui4b)(ASC_FIFO_InA - ASC_FIFO_Out)) >= 0x400)
{
SoundReg804 |= 0x02;
#if ASC_dolog
dbglog_WriteNote("ASC : setting full flag A");
#endif
} else {
if (0 != (SoundReg804 & 0x02)) {
ReportAbnormalID(0x0F02, "ASC_Access : "
"full flag A not already clear");
SoundReg804 &= ~ 0x02;
}
}
}
} else {
if (0 == (SoundReg802 & 2)) {
ReportAbnormalID(0x0F03,
"ASC - Channel B for Mono");
}
if (((ui4b)(ASC_FIFO_InB - ASC_FIFO_Out)) >= 0x400)
{
ReportAbnormalID(0x0F04,
"ASC - Channel B Overflow");
SoundReg804 |= 0x08;
} else {
ASC_SampBuff[0x400 + (ASC_FIFO_InB & 0x3FF)] = Data;
++ASC_FIFO_InB;
if (((ui4b)(ASC_FIFO_InB - ASC_FIFO_Out)) >= 0x200)
{
if (0 != (SoundReg804 & 0x04)) {
/* happens normally */
SoundReg804 &= ~ 0x04;
}
} else {
#if 0 /* doesn't seem to be necessary, but doesn't hurt either */
SoundReg804 |= 0x04;
#endif
}
if (((ui4b)(ASC_FIFO_InB - ASC_FIFO_Out)) >= 0x400)
{
SoundReg804 |= 0x08;
#if ASC_dolog
dbglog_WriteNote("ASC : setting full flag B");
#endif
} else {
if (0 != (SoundReg804 & 0x08)) {
ReportAbnormalID(0x0F05, "ASC_Access : "
"full flag B not already clear");
SoundReg804 &= ~ 0x08;
}
}
}
}
#if ASC_dolog && 0
dbglog_writeCStr("ASC_InputIndex =");
dbglog_writeNum(ASC_InputIndex);
dbglog_writeReturn();
#endif
} else {
ASC_SampBuff[addr] = Data;
}
} else {
Data = ASC_SampBuff[addr];
}
#if ASC_dolog && 1
#if 0
if (((addr & 0x1FF) >= 0x04)
&& ((addr & 0x1FF) < (0x200 - 0x04)))
{
/* don't report them all */
} else
#endif
{
dbglog_AddrAccess("ASC_Access SampBuff",
Data, WriteMem, addr);
}
#endif
} else if (addr < 0x810) {
switch (addr) {
case 0x800: /* VERSION */
if (WriteMem) {
ReportAbnormalID(0x0F06, "ASC - writing VERSION");
} else {
Data = 0;
}
#if ASC_dolog && 1
dbglog_AddrAccess("ASC_Access Control (VERSION)",
Data, WriteMem, addr);
#endif
break;
case 0x801: /* ENABLE */
if (WriteMem) {
if (1 == Data) {
if (1 != SoundReg801) {
ASC_ClearFIFO();
}
} else {
if (Data > 2) {
ReportAbnormalID(0x0F07,
"ASC - unexpected ENABLE");
}
}
SoundReg801 = Data;
} else {
Data = SoundReg801;
/* happens in LodeRunner */
}
#if ASC_dolog && 1
dbglog_AddrAccess("ASC_Access Control (ENABLE)",
Data, WriteMem, addr);
#endif
break;
case 0x802: /* CONTROL */
if (WriteMem) {
#if 1
if (0 != SoundReg801) {
if (SoundReg802 == Data) {
/*
this happens normally,
such as in Lunar Phantom
*/
} else {
if (1 == SoundReg801) {
/*
happens in dark castle, if play other sound first,
such as by changing beep sound in sound control panel.
*/
ASC_ClearFIFO();
}
#if 0
ReportAbnormalID(0x0F08,
"ASC - changing CONTROL while ENABLEd");
#endif
}
}
#endif
if (0 != (Data & ~ 2)) {
ReportAbnormalID(0x0F09,
"ASC - unexpected CONTROL value");
}
SoundReg802 = Data;
} else {
Data = SoundReg802;
ReportAbnormalID(0x0F0A,
"ASC - reading CONTROL value");
}
#if ASC_dolog && 1
dbglog_AddrAccess("ASC_Access Control (CONTROL)",
Data, WriteMem, addr);
#endif
break;
case 0x803:
if (WriteMem) {
if (0 != (Data & ~ 0x80)) {
ReportAbnormalID(0x0F0B,
"ASC - unexpected FIFO MODE");
}
if (0 != (Data & 0x80)) {
if (0 != (SoundReg803 & 0x80)) {
ReportAbnormalID(0x0F0C,
"ASC - set clear FIFO again");
} else
if (1 != SoundReg801) {
#if 0 /* happens in system 6, such as with Lunar Phantom */
ReportAbnormalID(0x0F0D,
"ASC - clear FIFO when not FIFO mode");
#endif
} else
{
ASC_ClearFIFO();
/*
ASC_interrupt_PulseNtfy();
Doesn't seem to be needed,
but doesn't hurt either.
*/
}
}
SoundReg803 = Data;
} else {
Data = SoundReg803;
}
#if ASC_dolog && 1
dbglog_AddrAccess("ASC_Access Control (FIFO MODE)",
Data, WriteMem, addr);
#endif
break;
case 0x804:
if (WriteMem) {
#if 0
if ((0 != SoundReg804) && (0 != Data)) {
ReportAbnormalID(0x0F0F,
"ASC - set FIFO IRQ STATUS when not 0");
}
#endif
SoundReg804 = Data;
if (0 != SoundReg804) {
ASC_interrupt_PulseNtfy();
/*
Generating this interrupt seems
to be the point of writing to
this register.
*/
}
#if ASC_dolog && 1
dbglog_AddrAccess(
"ASC_Access Control (FIFO IRQ STATUS)",
Data, WriteMem, addr);
#endif
} else {
Data = SoundReg804;
#if 0
if (1 != SoundReg801) {
/* no, ok, part of normal interrupt handling */
ReportAbnormalID(0x0F10,
"ASC - read STATUS when not FIFO");
}
#endif
/* SoundReg804 = 0; */
SoundReg804 &= ~ 0x01;
SoundReg804 &= ~ 0x04;
/*
In lunar phantom, observe checking
full flag before first write, but
status was read previous.
*/
#if ASC_dolog && 1
#if 0
if (0 != Data)
#endif
{
dbglog_AddrAccess(
"ASC_Access Control (FIFO IRQ STATUS)",
Data, WriteMem, addr);
}
#endif
}
break;
case 0x805:
if (WriteMem) {
SoundReg805 = Data;
/* cleared in LodeRunner */
} else {
Data = SoundReg805;
ReportAbnormalID(0x0F11,
"ASC - reading WAVE CONTROL register");
}
#if ASC_dolog && 1
dbglog_AddrAccess("ASC_Access Control (WAVE CONTROL)",
Data, WriteMem, addr);
#endif
break;
case 0x806: /* VOLUME */
if (WriteMem) {
SoundReg_Volume = Data >> 5;
if (0 != (Data & 0x1F)) {
ReportAbnormalID(0x0F12,
"ASC - unexpected volume value");
}
} else {
Data = SoundReg_Volume << 5;
ReportAbnormalID(0x0F13,
"ASC - reading volume register");
}
#if ASC_dolog && 1
dbglog_AddrAccess("ASC_Access Control (VOLUME)",
Data, WriteMem, addr);
#endif
break;
case 0x807: /* CLOCK RATE */
if (WriteMem) {
/* SoundReg807 = Data; */
if (0 != Data) {
ReportAbnormalID(0x0F14,
"ASC - nonstandard CLOCK RATE");
}
} else {
/* Data = SoundReg807; */
ReportAbnormalID(0x0F15,
"ASC - reading CLOCK RATE");
}
#if ASC_dolog && 1
dbglog_AddrAccess("ASC_Access Control (CLOCK RATE)",
Data, WriteMem, addr);
#endif
break;
case 0x808: /* CONTROL */
if (WriteMem) {
ReportAbnormalID(0x0F16, "ASC - write to 808");
} else {
/* happens on boot System 7.5.5 */
Data = 0;
}
#if ASC_dolog && 1
dbglog_AddrAccess("ASC_Access Control (CONTROL)",
Data, WriteMem, addr);
#endif
break;
case 0x80A: /* ? */
if (WriteMem) {
ReportAbnormalID(0x0F17, "ASC - write to 80A");
} else {
/*
happens in system 6, Lunar Phantom,
soon after new game.
*/
Data = 0;
}
#if ASC_dolog && 1
dbglog_AddrAccess("ASC_Access Control (80A)",
Data, WriteMem, addr);
#endif
break;
default:
if (WriteMem) {
} else {
Data = 0;
}
ReportAbnormalID(0x0F18, "ASC - unknown ASC reg");
#if ASC_dolog && 1
dbglog_AddrAccess("ASC_Access Control (?)",
Data, WriteMem, addr);
#endif
break;
}
} else if (addr < 0x830) {
ui3r b = addr & 3;
ui3r chan = ((addr - 0x810) >> 3) & 3;
if (0 != (addr & 4)) {
if (WriteMem) {
ASC_ChanA[chan].freq[b] = Data;
} else {
Data = ASC_ChanA[chan].freq[b];
}
#if ASC_dolog && 1
dbglog_AddrAccess("ASC_Access Control (frequency)",
Data, WriteMem, addr);
#endif
#if ASC_dolog && 0
dbglog_writeCStr("freq b=");
dbglog_writeNum(WriteMem);
dbglog_writeCStr(", chan=");
dbglog_writeNum(chan);
dbglog_writeReturn();
#endif
} else {
if (WriteMem) {
ASC_ChanA[chan].phase[b] = Data;
} else {
Data = ASC_ChanA[chan].phase[b];
}
#if ASC_dolog && 1
dbglog_AddrAccess("ASC_Access Control (phase)",
Data, WriteMem, addr);
#endif
}
} else if (addr < 0x838) {
#if ASC_dolog && 1
dbglog_AddrAccess("ASC_Access Control *** unknown reg",
Data, WriteMem, addr);
#endif
} else {
#if ASC_dolog && 1
dbglog_AddrAccess("ASC_Access Control ? *** unknown reg",
Data, WriteMem, addr);
#endif
ReportAbnormalID(0x0F19, "unknown ASC reg");
}
return Data;
}
/*
approximate volume levels of vMac, so:
x * vol_mult[SoundVolume] >> 16
+ vol_offset[SoundVolume]
= {approx} (x - kCenterSound) / (8 - SoundVolume) + kCenterSound;
*/
LOCALVAR const ui4b vol_mult[] = {
8192, 9362, 10922, 13107, 16384, 21845, 32768
};
LOCALVAR const trSoundSamp vol_offset[] = {
#if 3 == kLn2SoundSampSz
112, 110, 107, 103, 96, 86, 64, 0
#elif 4 == kLn2SoundSampSz
28672, 28087, 27307, 26215, 24576, 21846, 16384, 0
#else
#error "unsupported kLn2SoundSampSz"
#endif
};
LOCALVAR const ui3r SubTick_n[kNumSubTicks] = {
23, 23, 23, 23, 23, 23, 23, 24,
23, 23, 23, 23, 23, 23, 23, 24
};
GLOBALPROC ASC_SubTick(int SubTick)
{
ui4r actL;
#if MySoundEnabled
tpSoundSamp p;
#endif
ui4r i;
ui4r n = SubTick_n[SubTick];
#if MySoundEnabled
ui3b SoundVolume = SoundReg_Volume;
#endif
#if MySoundEnabled
label_retry:
p = MySound_BeginWrite(n, &actL);
#else
actL = n;
#endif
if (actL > 0) {
if (1 == SoundReg801) {
#if MySoundEnabled
ui3p addr;
#endif
if (0 != (SoundReg802 & 2)) {
if (! ASC_Playing) {
if (((ui4b)(ASC_FIFO_InA - ASC_FIFO_Out)) >= 0x200) {
if (((ui4b)(ASC_FIFO_InB - ASC_FIFO_Out)) >= 0x200)
{
SoundReg804 &= ~ 0x01;
SoundReg804 &= ~ 0x04;
ASC_Playing = trueblnr;
#if ASC_dolog
dbglog_WriteNote("ASC : start stereo playing");
#endif
} else {
if (((ui4b)(ASC_FIFO_InB - ASC_FIFO_Out)) == 0)
if (((ui4b)(ASC_FIFO_InA - ASC_FIFO_Out))
>= 370)
{
#if ASC_dolog
dbglog_WriteNote("ASC : switch to mono");
#endif
SoundReg802 &= ~ 2;
/*
cludge to get Tetris to work,
may not actually work on real machine.
*/
}
}
}
}
for (i = 0; i < actL; i++) {
if (((ui4b)(ASC_FIFO_InA - ASC_FIFO_Out)) == 0) {
ASC_Playing = falseblnr;
}
if (((ui4b)(ASC_FIFO_InB - ASC_FIFO_Out)) == 0) {
ASC_Playing = falseblnr;
}
if (! ASC_Playing) {
#if MySoundEnabled
*p++ = 0x80;
#endif
} else
{
#if MySoundEnabled
addr = ASC_SampBuff + (ASC_FIFO_Out & 0x3FF);
#if ASC_dolog && 1
dbglog_StartLine();
dbglog_writeCStr("out sound ");
dbglog_writeCStr("[");
dbglog_writeHex(ASC_FIFO_Out);
dbglog_writeCStr("]");
dbglog_writeCStr(" = ");
dbglog_writeHex(*addr);
dbglog_writeCStr(" , ");
dbglog_writeHex(addr[0x400]);
dbglog_writeReturn();
#endif
*p++ = ((addr[0] + addr[0x400])
#if 4 == kLn2SoundSampSz
<< 8
#endif
) >> 1;
#endif /* MySoundEnabled */
ASC_FIFO_Out += 1;
}
}
} else {
/* mono */
if (! ASC_Playing) {
if (((ui4b)(ASC_FIFO_InA - ASC_FIFO_Out)) >= 0x200)
{
SoundReg804 &= ~ 0x01;
ASC_Playing = trueblnr;
#if ASC_dolog
dbglog_WriteNote("ASC : start mono playing");
#endif
}
}
for (i = 0; i < actL; i++) {
if (((ui4b)(ASC_FIFO_InA - ASC_FIFO_Out)) == 0) {
ASC_Playing = falseblnr;
}
if (! ASC_Playing) {
#if MySoundEnabled
*p++ = 0x80;
#endif
} else
{
#if MySoundEnabled
addr = ASC_SampBuff + (ASC_FIFO_Out & 0x3FF);
#if ASC_dolog && 1
dbglog_StartLine();
dbglog_writeCStr("out sound ");
dbglog_writeCStr("[");
dbglog_writeHex(ASC_FIFO_Out);
dbglog_writeCStr("]");
dbglog_writeCStr(" = ");
dbglog_writeHex(*addr);
dbglog_writeCStr(", in buff: ");
dbglog_writeHex((ui4b)(ASC_FIFO_InA - ASC_FIFO_Out));
dbglog_writeReturn();
#endif
*p++ = (addr[0])
#if 4 == kLn2SoundSampSz
<< 8
#endif
;
#endif /* MySoundEnabled */
/* Move the address on */
/* *addr = 0x80; */
/* addr += 2; */
ASC_FIFO_Out += 1;
}
}
}
} else if (2 == SoundReg801) {
#if MySoundEnabled
ui4r v;
ui4r i0;
ui4r i1;
ui4r i2;
ui4r i3;
#endif
ui5r freq0 = do_get_mem_long(ASC_ChanA[0].freq);
ui5r freq1 = do_get_mem_long(ASC_ChanA[1].freq);
ui5r freq2 = do_get_mem_long(ASC_ChanA[2].freq);
ui5r freq3 = do_get_mem_long(ASC_ChanA[3].freq);
ui5r phase0 = do_get_mem_long(ASC_ChanA[0].phase);
ui5r phase1 = do_get_mem_long(ASC_ChanA[1].phase);
ui5r phase2 = do_get_mem_long(ASC_ChanA[2].phase);
ui5r phase3 = do_get_mem_long(ASC_ChanA[3].phase);
#if ASC_dolog && 1
dbglog_writeCStr("freq0=");
dbglog_writeNum(freq0);
dbglog_writeCStr(", freq1=");
dbglog_writeNum(freq1);
dbglog_writeCStr(", freq2=");
dbglog_writeNum(freq2);
dbglog_writeCStr(", freq3=");
dbglog_writeNum(freq3);
dbglog_writeReturn();
#endif
for (i = 0; i < actL; i++) {
phase0 += freq0;
phase1 += freq1;
phase2 += freq2;
phase3 += freq3;
#if MySoundEnabled
#if 1
i0 = ((phase0 + 0x4000) >> 15) & 0x1FF;
i1 = ((phase1 + 0x4000) >> 15) & 0x1FF;
i2 = ((phase2 + 0x4000) >> 15) & 0x1FF;
i3 = ((phase3 + 0x4000) >> 15) & 0x1FF;
#else
i0 = ((phase0 + 0x8000) >> 16) & 0x1FF;
i1 = ((phase1 + 0x8000) >> 16) & 0x1FF;
i2 = ((phase2 + 0x8000) >> 16) & 0x1FF;
i3 = ((phase3 + 0x8000) >> 16) & 0x1FF;
#endif
v = ASC_SampBuff[i0]
+ ASC_SampBuff[0x0200 + i1]
+ ASC_SampBuff[0x0400 + i2]
+ ASC_SampBuff[0x0600 + i3];
#if ASC_dolog && 1
dbglog_StartLine();
dbglog_writeCStr("i0=");
dbglog_writeNum(i0);
dbglog_writeCStr(", i1=");
dbglog_writeNum(i1);
dbglog_writeCStr(", i2=");
dbglog_writeNum(i2);
dbglog_writeCStr(", i3=");
dbglog_writeNum(i3);
dbglog_writeCStr(", output sound v=");
dbglog_writeNum(v);
dbglog_writeReturn();
#endif
*p++ = (v >> 2);
#endif /* MySoundEnabled */
}
do_put_mem_long(ASC_ChanA[0].phase, phase0);
do_put_mem_long(ASC_ChanA[1].phase, phase1);
do_put_mem_long(ASC_ChanA[2].phase, phase2);
do_put_mem_long(ASC_ChanA[3].phase, phase3);
} else {
#if MySoundEnabled
for (i = 0; i < actL; i++) {
*p++ = kCenterSound;
}
#endif
}
#if MySoundEnabled
if (SoundVolume < 7) {
/*
Usually have volume at 7, so this
is just for completeness.
*/
ui5b mult = (ui5b)vol_mult[SoundVolume];
trSoundSamp offset = vol_offset[SoundVolume];
p -= actL;
for (i = 0; i < actL; i++) {
*p = (trSoundSamp)((ui5b)(*p) * mult >> 16) + offset;
++p;
}
}
MySound_EndWrite(actL);
n -= actL;
if (n > 0) {
goto label_retry;
}
#endif
}
#if 1
if ((1 == SoundReg801) && ASC_Playing) {
if (((ui4b)(ASC_FIFO_InA - ASC_FIFO_Out)) >= 0x200) {
if (0 != (SoundReg804 & 0x01)) {
ReportAbnormalID(0x0F1A,
"half flag A not already clear");
SoundReg804 &= ~ 0x01;
}
} else {
if (0 != (SoundReg804 & 0x01)) {
/* happens in lode runner */
} else {
#if ASC_dolog
dbglog_WriteNote("setting half flag A");
#endif
ASC_interrupt_PulseNtfy();
SoundReg804 |= 0x01;
}
}
if (((ui4b)(ASC_FIFO_InA - ASC_FIFO_Out)) >= 0x400) {
if (0 == (SoundReg804 & 0x02)) {
ReportAbnormalID(0x0F1B, "full flag A not already set");
SoundReg804 |= 0x02;
}
} else {
if (0 != (SoundReg804 & 0x02)) {
/* ReportAbnormal("full flag A not already clear"); */
SoundReg804 &= ~ 0x02;
}
}
if (0 != (SoundReg802 & 2)) {
if (((ui4b)(ASC_FIFO_InB - ASC_FIFO_Out)) >= 0x200) {
if (0 != (SoundReg804 & 0x04)) {
ReportAbnormalID(0x0F1C,
"half flag B not already clear");
SoundReg804 &= ~ 0x04;
}
} else {
if (0 != (SoundReg804 & 0x04)) {
/* happens in Lunar Phantom */
} else {
#if ASC_dolog
dbglog_WriteNote("setting half flag B");
#endif
ASC_interrupt_PulseNtfy();
SoundReg804 |= 0x04;
}
}
if (((ui4b)(ASC_FIFO_InB - ASC_FIFO_Out)) >= 0x400) {
if (0 == (SoundReg804 & 0x08)) {
ReportAbnormalID(0x0F1D,
"full flag B not already set");
SoundReg804 |= 0x08;
}
} else {
if (0 != (SoundReg804 & 0x08)) {
/*
ReportAbnormal("full flag B not already clear");
*/
SoundReg804 &= ~ 0x08;
}
}
}
}
#endif
}

View File

@ -1,24 +0,0 @@
/*
ASCEMDEV.h
Copyright (C) 2008 Paul C. Pratt
You can redistribute this file and/or modify it under the terms
of version 2 of the GNU General Public License as published by
the Free Software Foundation. You should have received a copy
of the license along with this file; see the file COPYING.
This file is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
license for more details.
*/
#ifdef ASCEMDEV_H
#error "header already included"
#else
#define ASCEMDEV_H
#endif
EXPORTFUNC ui5b ASC_Access(ui5b Data, blnr WriteMem, CPTR addr);
EXPORTPROC ASC_SubTick(int SubTick);

View File

@ -1,365 +0,0 @@
/*
BPFILTER.h
Copyright (C) 2012 Michael Fort, Paul C. Pratt
You can redistribute this file and/or modify it under the terms
of version 2 of the GNU General Public License as published by
the Free Software Foundation. You should have received a copy
of the license along with this file; see the file COPYING.
This file is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
license for more details.
*/
/*
Berkeley Packet Filter for localtalk emulation
*/
/* BPF and devices */
static unsigned char device_address[6] = {
0
};
static unsigned int device_buffer_size = 0;
static int fd = -1; /* BPF file descriptor */
static struct bpf_version bpf_version;
static struct bpf_program bpf_program;
static struct bpf_insn insns[] =
{
/* Program for BPF to filter out non-LTOE packets */
BPF_STMT(BPF_LD + BPF_H + BPF_ABS, 12),
BPF_JUMP(BPF_JMP + BPF_JEQ + BPF_K, 0x809B, 0, 1),
BPF_STMT(BPF_RET + BPF_K, 65535),
BPF_STMT(BPF_RET + BPF_K, 0),
};
GLOBALVAR ui3p LT_TxBuffer = NULL;
/* Transmit state */
GLOBALVAR ui4r LT_TxBuffSz = 0;
/*
Transmit buffer that is reused from tx packet to tx packet.
The 's' byte represents the source mac address (ours) and we don't
have to initialize it because the MAC device will automatically
fill it in for us. The four 'p' bytes represent the process number
of this Mini vMac application. It helps differentiate packets
between two applications running on the same machine. It is not
used at this time. There is a small chance two applications could
get the same LLAP/SDLC address to start with and would not work
correctly (1 in 254). The 'S' bytes are the size of the LLAP packet
since it can be smaller than the minimum sized Ethernet frame.
The process number is replaced at initialization. The size is
updated just before sending to BPF. All LLAP data is inserted
starting at byte 20.
*/
static unsigned char tx_buffer[20 + LT_TxBfMxSz] =
"\xFF\xFF\xFF\xFF\xFF\xFFssssss\x80\x9BppppSS";
/* Receive state */
GLOBALVAR ui3p LT_RxBuffer = NULL;
/* When data pending, this is used */
GLOBALVAR ui5r LT_RxBuffSz = 0;
/* When data pending, this is used */
/* Macro used by only the get_sockaddrs function for readability. */
#define ROUNDUP(a, size) \
(((a) & ((size) - 1)) ? (1 + ((a) | ((size) - 1))) : (a))
/*
Utility function needed for walking the addresses of the
kernel route lookup
*/
LOCALPROC get_sockaddrs(int addrs, struct sockaddr* sa,
struct sockaddr** rti_info)
{
int loop;
int incr;
for (loop = 0; loop < RTAX_MAX; loop++) {
if (addrs & (1 << loop)) {
rti_info[loop] = sa;
incr = sa->sa_len ? ROUNDUP(sa->sa_len, sizeof(uint32_t))
: sizeof(uint32_t);
sa = (struct sockaddr*)((unsigned long int)sa + incr);
} else {
rti_info[loop] = NULL;
}
}
}
/*
This ugly function does a lot of steps to prepare the BPF
for our use.
1. Find the ethernet interface that the default route uses.
2. Determine the maximum number of BPF devices can exist.
3. Search for a usable BPF device and open it.
4. Set the BPF device to use our ethernet interface.
5. Get the proper buffer size to use with the BPF device.
6. Set some useful modes of operation on the BPF device.
7. Install a program on the device that filters out non-LTOE
packets.
*/
LOCALFUNC int get_ethernet(void)
{
int result;
int size;
struct rt_msghdr* message;
struct sockaddr_in* addrs;
struct sockaddr* sa_list[RTAX_MAX];
int loop;
char filename[64];
struct ifreq ifreq;
int enable = 1;
struct kinfo_proc kp;
size_t len = sizeof(kp);
int max = 4;
char device[32];
/* Get a socket to routed for IPv4 */
fd = socket(PF_ROUTE, SOCK_RAW, AF_INET);
if (fd == -1) {
return falseblnr;
}
/* Allocate a message */
size = sizeof(struct rt_msghdr) + 16 * sizeof(struct sockaddr_in);
message = (struct rt_msghdr*)malloc(size);
if (! message) {
close(fd);
return falseblnr;
}
memset(message, 0, size);
addrs = (struct sockaddr_in*)(message + 1);
/* Fill in the request */
message->rtm_msglen = size;
message->rtm_version = RTM_VERSION;
message->rtm_type = RTM_GET;
message->rtm_addrs
= RTA_DST | RTA_GATEWAY | RTA_NETMASK | RTA_IFP | RTA_IFA;
addrs->sin_len = sizeof(struct sockaddr_in);
addrs->sin_family = AF_INET;
addrs->sin_addr.s_addr = 0; /* 0.0.0.0 is default route */
/* Send the message to the kernel */
result = write(fd, message, size);
if (result < 0) {
close(fd);
free(message);
return falseblnr;
}
/* Read the result from the kernel */
result = read(fd, message, size);
if (result < 0) {
close(fd);
free(message);
return falseblnr;
}
/* Close the route socket */
close(fd);
/* Get pointer to the result then parse it */
struct sockaddr* sa = (struct sockaddr*)
((unsigned long int)message + sizeof(struct rt_msghdr));
get_sockaddrs(message->rtm_addrs, sa, sa_list);
/* Must have a LINK (Ethernet) */
if ((! sa_list[RTAX_IFP])
|| (sa_list[RTAX_IFP]->sa_family != AF_LINK))
{
return falseblnr;
}
int namelen = ((struct sockaddr_dl*)sa_list[RTAX_IFP])->sdl_nlen;
#if 0
int addrlen = ((struct sockaddr_dl*)sa_list[RTAX_IFP])->sdl_alen;
#endif
strncpy(device,
&((struct sockaddr_dl*)sa_list[RTAX_IFP])->sdl_data[0],
namelen);
device[namelen] = 0;
memcpy(device_address,
&((struct sockaddr_dl*)sa_list[RTAX_IFP])->sdl_data[namelen],
6);
memcpy(&(tx_buffer[6]),
&((struct sockaddr_dl*)sa_list[RTAX_IFP])->sdl_data[namelen],
6);
result = sysctlbyname("debug.bpf_maxdevices", &kp, &len, NULL, 0);
if (result == -1) {
return falseblnr;
}
max = *((int *)&kp);
for (loop = 0; loop < max; loop++) {
sprintf(filename, "/dev/bpf%d", loop);
fd = open(filename, O_RDWR | O_NONBLOCK | O_EXLOCK);
if (fd >= 0) {
/* sprintf(buffer, "using %s\n", filename); */
break;
}
}
if (fd <= 0) {
return falseblnr;
}
memset(&ifreq, 0, sizeof(struct ifreq));
strncpy(ifreq.ifr_name, device, IFNAMSIZ);
result = ioctl(fd, BIOCSETIF, &ifreq);
if (result) {
return falseblnr;
}
result = ioctl(fd, BIOCGBLEN, &device_buffer_size);
if (result) {
return falseblnr;
}
result = ioctl(fd, BIOCPROMISC, &enable);
if (result) {
return falseblnr;
}
result = ioctl(fd, BIOCSSEESENT, &enable);
if (result) {
return falseblnr;
}
result = ioctl(fd, BIOCSHDRCMPLT, &enable);
if (result) {
return falseblnr;
}
result = ioctl(fd, BIOCIMMEDIATE, &enable);
if (result) {
return falseblnr;
}
result = ioctl(fd, BIOCVERSION, &bpf_version);
if (result) {
return falseblnr;
}
bpf_program.bf_len = 4;
bpf_program.bf_insns = insns;
result = ioctl(fd, BIOCSETF, &bpf_program);
if (result) {
return falseblnr;
}
return trueblnr;
}
LOCALVAR unsigned char *MyRxBuffer = NULL;
/*
External function needed at startup to initialize the LocalTalk
functionality.
*/
LOCALFUNC int InitLocalTalk(void)
{
/* Perform a lot of stuff to get access to the Ethernet */
get_ethernet();
/*
Save the process id in the transmit buffer as it may be used
later to uniquely identify the sender to identify collisions
in dynamic llap node address assignment.
*/
*((uint32_t*)(&tx_buffer[14])) = htonl(getpid());
LT_TxBuffer = (ui3p)&tx_buffer[20];
MyRxBuffer = malloc(device_buffer_size);
if (NULL == MyRxBuffer) {
return falseblnr;
}
/* Initialized properly */
return trueblnr;
}
GLOBALOSGLUPROC LT_TransmitPacket(void)
{
int count;
/*
Write the length in the packet. This is needed because
Ethernet has a minimum 60 bytes length, which the MAC chip
will enforce on TX. Without the size, a simple 3 byte LLAP
packet would look like a (60 - 14 =) 46 byte LLAP packet.
*/
*((uint16_t*)(&tx_buffer[18])) = htons(LT_TxBuffSz);
/* Send the packet to Ethernet */
count = write(fd, tx_buffer, 20 + LT_TxBuffSz);
(void)count; /* unused */
}
LOCALVAR unsigned char* NextPacket = NULL;
LOCALVAR unsigned char* EndPackets = NULL;
LOCALPROC LocalTalkTick0(void)
{
/* Get a single buffer worth of packets from BPF */
unsigned char* device_buffer = MyRxBuffer;
int bytes = read(fd, device_buffer, device_buffer_size);
if (bytes > 0) {
/* Maybe multiple packets in this buffer */
#if 0
dbglog_WriteNote("SCC founds packets from BPF");
#endif
NextPacket = device_buffer;
EndPackets = device_buffer + bytes;
}
}
GLOBALOSGLUPROC LT_ReceivePacket(void)
{
label_retry:
if (NextPacket == NULL) {
LocalTalkTick0();
if (NextPacket != NULL) {
goto label_retry;
}
} else if (NextPacket >= EndPackets) {
#if 0
dbglog_WriteNote("SCC finished set of packets from BPF");
#endif
NextPacket = NULL;
goto label_retry;
} else {
unsigned char* packet = NextPacket;
/* Get pointer to BPF header */
struct bpf_hdr* header = (struct bpf_hdr *)packet;
/* Advance to next packet in buffer */
NextPacket += BPF_WORDALIGN(header->bh_hdrlen
+ header->bh_caplen);
/* Get clean references to data */
int ethernet_length = header->bh_caplen - 14;
int llap_length = htons(*((uint16_t*)(packet
+ header->bh_hdrlen + 18)));
unsigned char* start = packet + header->bh_hdrlen + 20;
if (llap_length <= ethernet_length) {
/* Start the receiver */
LT_RxBuffer = (ui3p)start;
LT_RxBuffSz = llap_length;
} else {
goto label_retry;
}
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,117 +0,0 @@
/*
DATE2SEC.h
Copyright (C) 2003 Bradford L. Barrett, Paul C. Pratt
You can redistribute this file and/or modify it under the terms
of version 2 of the GNU General Public License as published by
the Free Software Foundation. You should have received a copy
of the license along with this file; see the file COPYING.
This file is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
license for more details.
*/
/*
DATE 2(to) SEConds
convert year/month/day/hour/minute/second
to number of seconds since the beginning
of 1904, the format for storing dates
on the Macintosh.
The function jdate is from the program Webalizer
by Bradford L. Barrett.
*/
#ifdef DATE2SEC_H
#error "header already included"
#else
#define DATE2SEC_H
#endif
/*
The function jdate was found at the end of the file
webalizer.c in the program webalizer at
"www.mrunix.net/webalizer/".
Here is copyright info from the top of that file:
webalizer - a web server log analysis program
Copyright (C) 1997-2000 Bradford L. Barrett (brad@mrunix.net)
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version, and provided that the above
copyright and permission notice is included with all distributed
copies of this or derived software.
*/
/* ************************************************************* */
/* */
/* JDATE - Julian date calculator */
/* */
/* Calculates the number of days since Jan 1, 0000. */
/* */
/* Originally written by Bradford L. Barrett (03/17/1988) */
/* Returns an unsigned long value representing the number of */
/* days since January 1, 0000. */
/* */
/* Note: Due to the changes made by Pope Gregory XIII in the */
/* 16th Centyry (Feb 24, 1582), dates before 1583 will */
/* not return a truely accurate number (will be at least */
/* 10 days off). Somehow, I don't think this will */
/* present much of a problem for most situations :) */
/* */
/* Usage: days = jdate(day, month, year) */
/* */
/* The number returned is adjusted by 5 to facilitate day of */
/* week calculations. The mod of the returned value gives the */
/* day of the week the date is. (ie: dow = days % 7) where */
/* dow will return 0=Sunday, 1=Monday, 2=Tuesday, etc... */
/* */
/* ************************************************************* */
LOCALFUNC ui5b jdate(int day, int month, int year)
{
ui5b days; /* value returned */
int mtable[] = {
0, 31, 59, 90, 120, 151,
181, 212, 243, 273, 304, 334
};
/*
First, calculate base number including leap
and Centenial year stuff
*/
days = (((ui5b)year * 365) + day + mtable[month - 1]
+ ((year + 4) / 4) - ((year / 100) - (year / 400)));
/* now adjust for leap year before March 1st */
if ((year % 4 == 0)
&& (! ((year % 100 == 0) && (year % 400 != 0)))
&& (month < 3))
{
--days;
}
/* done, return with calculated value */
return (days + 5);
}
LOCALFUNC ui5b Date2MacSeconds(int second, int minute, int hour,
int day, int month, int year)
{
ui5b curjdate;
ui5b basejdate;
curjdate = jdate(day, month, year);
basejdate = jdate(1, 1, 1904);
return (((curjdate - basejdate) * 24 + hour) * 60
+ minute) * 60 + second;
}

File diff suppressed because it is too large Load Diff

View File

@ -1,29 +0,0 @@
/*
DISAM68K.h
Copyright (C) 2010 Paul C. Pratt
You can redistribute this file and/or modify it under the terms
of version 2 of the GNU General Public License as published by
the Free Software Foundation. You should have received a copy
of the license along with this file; see the file COPYING.
This file is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
license for more details.
*/
/*
DISAssemble Motorola 68K instructions.
*/
#ifdef DIS1M68K_H
#error "header already included"
#else
#define DIS1M68K_H
#endif
EXPORTPROC DisasmOneOrSave(ui5r pc);
EXPORTPROC m68k_WantDisasmContext(void);

View File

@ -1,135 +0,0 @@
/*
ENDIANAC.h
Copyright (C) 2006 Bernd Schmidt, Paul C. Pratt
You can redistribute this file and/or modify it under the terms
of version 2 of the GNU General Public License as published by
the Free Software Foundation. You should have received a copy
of the license along with this file; see the file COPYING.
This file is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
license for more details.
*/
/*
ENDIAN ACcess
Deals with endian issues in memory access.
This code is adapted from code in the Un*x Amiga Emulator by
Bernd Schmidt, as found in vMac by Philip Cummins.
*/
#ifdef ENDIANAC_H
#ifndef AllFiles
#error "header already included"
#endif
#else
#define ENDIANAC_H
#endif
#define do_get_mem_byte(a) ((ui3r)*((ui3b *)(a)))
#if BigEndianUnaligned
#define do_get_mem_word(a) ((ui4r)*((ui4b *)(a)))
#else
LOCALINLINEFUNC ui4r do_get_mem_word(ui3p a)
{
#if LittleEndianUnaligned
ui4b b = (*((ui4b *)(a)));
return ((b & 0x00FF) << 8) | ((b >> 8) & 0x00FF);
#else
return (((ui4r)*a) << 8) | ((ui4r)*(a + 1));
#endif
}
#endif
#if BigEndianUnaligned
#define do_get_mem_long(a) ((ui5r)*((ui5b *)(a)))
#elif HaveMySwapUi5r && LittleEndianUnaligned
#define do_get_mem_long(a) (MySwapUi5r((ui5r)*((ui5b *)(a))))
#else
LOCALINLINEFUNC ui5r do_get_mem_long(ui3p a)
{
#if LittleEndianUnaligned
#if 0
ui5b b = (*((ui5b *)(a)));
return ((b & 0x000000FF) << 24)
| ((b & 0x0000FF00) << 8)
| ((b & 0x00FF0000) >> 8)
| ((b & 0xFF000000) >> 24);
#endif
#if 0
ui5b b = (*((ui5b *)(a)));
return ((b << 24) & 0xFF000000)
| ((b << 8) & 0x00FF0000)
| ((b >> 8) & 0x0000FF00)
| ((b >> 24) & 0x000000FF);
/*
no, this doesn't do well with apple tools,
instead try combining two 16 bit swaps.
*/
#endif
ui5b b = (*((ui5b *)(a)));
ui4b b1 = b;
ui4b b2 = b >> 16;
ui4b c1 = ((b1 & 0x00FF) << 8) | ((b1 >> 8) & 0x00FF);
ui4b c2 = ((b2 & 0x00FF) << 8) | ((b2 >> 8) & 0x00FF);
return (((ui5r)c1) << 16) | ((ui5r)c2);
/*
better, though still doesn't use BSWAP
instruction with apple tools for intel.
*/
#else
return (((ui5r)*a) << 24) | (((ui5r)*(a + 1)) << 16)
| (((ui5r)*(a + 2)) << 8) | ((ui5r)*(a + 3));
#endif
}
#endif
#define do_put_mem_byte(a, v) ((*((ui3b *)(a))) = (v))
#if BigEndianUnaligned
#define do_put_mem_word(a, v) ((*((ui4b *)(a))) = (v))
#else
LOCALINLINEFUNC void do_put_mem_word(ui3p a, ui4r v)
{
#if LittleEndianUnaligned
ui4b b = ((v & 0x00FF) << 8) | ((v >> 8) & 0x00FF);
*(ui4b *)a = b;
#else
*a = v >> 8;
*(a + 1) = v;
#endif
}
#endif
#if BigEndianUnaligned
#define do_put_mem_long(a, v) ((*((ui5b *)(a))) = (v))
#elif HaveMySwapUi5r && LittleEndianUnaligned
#define do_put_mem_long(a, v) ((*((ui5b *)(a))) = MySwapUi5r(v))
#else
LOCALINLINEFUNC void do_put_mem_long(ui3p a, ui5r v)
{
#if LittleEndianUnaligned
ui4b b1 = v;
ui4b b2 = v >> 16;
ui4b c1 = ((b1 & 0x00FF) << 8) | ((b1 >> 8) & 0x00FF);
ui4b c2 = ((b2 & 0x00FF) << 8) | ((b2 >> 8) & 0x00FF);
*(ui5b *)a = (c1 << 16) | c2;
#else
*a = v >> 24;
*(a + 1) = v >> 16;
*(a + 2) = v >> 8;
*(a + 3) = v;
#endif
}
#endif

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,276 +0,0 @@
/*
GLOBGLUE.h
Copyright (C) 2003 Bernd Schmidt, Philip Cummins, Paul C. Pratt
You can redistribute this file and/or modify it under the terms
of version 2 of the GNU General Public License as published by
the Free Software Foundation. You should have received a copy
of the license along with this file; see the file COPYING.
This file is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
license for more details.
*/
#ifdef GLOBGLUE_H
#error "header already included"
#else
#define GLOBGLUE_H
#endif
#define kEmMd_Twig43 0
#define kEmMd_Twiggy 1
#define kEmMd_128K 2
#define kEmMd_512Ke 3
#define kEmMd_Plus 4
#define kEmMd_SE 5
#define kEmMd_SEFDHD 6
#define kEmMd_Classic 7
#define kEmMd_PB100 8
#define kEmMd_II 9
#define kEmMd_IIx 10
#define RAMSafetyMarginFudge 4
#define kRAM_Size (kRAMa_Size + kRAMb_Size)
EXPORTVAR(ui3p, RAM)
/*
allocated by MYOSGLUE to be at least
kRAM_Size + RAMSafetyMarginFudge
bytes. Because of shortcuts taken in GLOBGLUE.c, it is in theory
possible for the emulator to write up to 3 bytes past kRAM_Size.
*/
#if EmVidCard
EXPORTVAR(ui3p, VidROM)
#endif
#if IncludeVidMem
EXPORTVAR(ui3p, VidMem)
#endif
EXPORTPROC MemOverlay_ChangeNtfy(void);
#if (CurEmMd == kEmMd_II) || (CurEmMd == kEmMd_IIx)
EXPORTPROC Addr32_ChangeNtfy(void);
#endif
/*
representation of pointer into memory of emulated computer.
*/
typedef ui5b CPTR;
/*
mapping of address space to real memory
*/
EXPORTFUNC ui3p get_real_address0(ui5b L, blnr WritableMem, CPTR addr,
ui5b *actL);
/*
memory access routines that can use when have address
that is known to be in RAM (and that is in the first
copy of the ram, not the duplicates, i.e. < kRAM_Size).
*/
#ifndef ln2mtb
#define get_ram_byte(addr) do_get_mem_byte((addr) + RAM)
#define get_ram_word(addr) do_get_mem_word((addr) + RAM)
#define get_ram_long(addr) do_get_mem_long((addr) + RAM)
#define put_ram_byte(addr, b) do_put_mem_byte((addr) + RAM, (b))
#define put_ram_word(addr, w) do_put_mem_word((addr) + RAM, (w))
#define put_ram_long(addr, l) do_put_mem_long((addr) + RAM, (l))
#else
#define get_ram_byte get_vm_byte
#define get_ram_word get_vm_word
#define get_ram_long get_vm_long
#define put_ram_byte put_vm_byte
#define put_ram_word put_vm_word
#define put_ram_long put_vm_long
#endif
#define get_ram_address(addr) ((addr) + RAM)
/*
accessing addresses that don't map to
real memory, i.e. memory mapped devices
*/
EXPORTFUNC blnr AddrSpac_Init(void);
#define ui5r_FromSByte(x) ((ui5r)(si5r)(si3b)(ui3b)(x))
#define ui5r_FromSWord(x) ((ui5r)(si5r)(si4b)(ui4b)(x))
#define ui5r_FromSLong(x) ((ui5r)(si5r)(si5b)(ui5b)(x))
#define ui5r_FromUByte(x) ((ui5r)(ui3b)(x))
#define ui5r_FromUWord(x) ((ui5r)(ui4b)(x))
#define ui5r_FromULong(x) ((ui5r)(ui5b)(x))
#if WantDisasm
EXPORTPROC dbglog_StartLine(void);
#else
#define dbglog_StartLine()
#endif
#if dbglog_HAVE
EXPORTPROC dbglog_WriteMemArrow(blnr WriteMem);
EXPORTPROC dbglog_WriteNote(char *s);
EXPORTPROC dbglog_WriteSetBool(char *s, blnr v);
EXPORTPROC dbglog_AddrAccess(char *s,
ui5r Data, blnr WriteMem, ui5r addr);
EXPORTPROC dbglog_Access(char *s, ui5r Data, blnr WriteMem);
#endif
#if ! WantAbnormalReports
#define ReportAbnormalID(id, s)
#else
#if dbglog_HAVE
#define ReportAbnormalID DoReportAbnormalID
#else
#define ReportAbnormalID(id, s) DoReportAbnormalID(id)
#endif
EXPORTPROC DoReportAbnormalID(ui4r id
#if dbglog_HAVE
, char *s
#endif
);
#endif /* WantAbnormalReports */
EXPORTPROC VIAorSCCinterruptChngNtfy(void);
EXPORTVAR(blnr, InterruptButton)
EXPORTPROC SetInterruptButton(blnr v);
enum {
kICT_SubTick,
#if EmClassicKbrd
kICT_Kybd_ReceiveCommand,
kICT_Kybd_ReceiveEndCommand,
#endif
#if EmADB
kICT_ADB_NewState,
#endif
#if EmPMU
kICT_PMU_Task,
#endif
kICT_VIA1_Timer1Check,
kICT_VIA1_Timer2Check,
#if EmVIA2
kICT_VIA2_Timer1Check,
kICT_VIA2_Timer2Check,
#endif
kNumICTs
};
EXPORTPROC ICT_add(int taskid, ui5b n);
#define iCountt ui5b
EXPORTFUNC iCountt GetCuriCount(void);
EXPORTPROC ICT_Zap(void);
EXPORTVAR(uimr, ICTactive)
EXPORTVAR(iCountt, ICTwhen[kNumICTs])
EXPORTVAR(iCountt, NextiCount)
EXPORTVAR(ui3b, Wires[kNumWires])
#define kLn2CycleScale 6
#define kCycleScale (1 << kLn2CycleScale)
#if WantCycByPriOp
#define RdAvgXtraCyc /* 0 */ (kCycleScale + kCycleScale / 4)
#define WrAvgXtraCyc /* 0 */ (kCycleScale + kCycleScale / 4)
#endif
#define kNumSubTicks 16
#define HaveMasterMyEvtQLock EmClassicKbrd
#if HaveMasterMyEvtQLock
EXPORTVAR(ui4r, MasterMyEvtQLock)
#endif
EXPORTFUNC blnr FindKeyEvent(int *VirtualKey, blnr *KeyDown);
/* minivmac extensions */
#define ExtnDat_checkval 0
#define ExtnDat_extension 2
#define ExtnDat_commnd 4
#define ExtnDat_result 6
#define ExtnDat_params 8
#define kCmndVersion 0
#define ExtnDat_version 8
enum {
kExtnFindExtn, /* must be first */
kExtnDisk,
kExtnSony,
#if EmVidCard
kExtnVideo,
#endif
#if IncludeExtnPbufs
kExtnParamBuffers,
#endif
#if IncludeExtnHostTextClipExchange
kExtnHostTextClipExchange,
#endif
kNumExtns
};
#define kcom_callcheck 0x5B17
EXPORTVAR(ui5r, my_disk_icon_addr)
EXPORTPROC Memory_Reset(void);
EXPORTPROC Extn_Reset(void);
EXPORTPROC customreset(void);
struct ATTer {
struct ATTer *Next;
ui5r cmpmask;
ui5r cmpvalu;
ui5r Access;
ui5r usemask; /* Should be one less than a power of two. */
ui3p usebase;
ui3r MMDV;
ui3r Ntfy;
ui4r Pad0;
ui5r Pad1; /* make 32 byte structure, on 32 bit systems */
};
typedef struct ATTer ATTer;
typedef ATTer *ATTep;
#define kATTA_readreadybit 0
#define kATTA_writereadybit 1
#define kATTA_mmdvbit 2
#define kATTA_ntfybit 3
#define kATTA_readwritereadymask \
((1 << kATTA_readreadybit) | (1 << kATTA_writereadybit))
#define kATTA_readreadymask (1 << kATTA_readreadybit)
#define kATTA_writereadymask (1 << kATTA_writereadybit)
#define kATTA_mmdvmask (1 << kATTA_mmdvbit)
#define kATTA_ntfymask (1 << kATTA_ntfybit)
EXPORTFUNC ui5b MMDV_Access(ATTep p, ui5b Data,
blnr WriteMem, blnr ByteSize, CPTR addr);
EXPORTFUNC blnr MemAccessNtfy(ATTep pT);

View File

@ -1,261 +0,0 @@
/*
HPMCHACK.c
Copyright (C) 2016 Steve Chamberlin, Paul C. Pratt
You can redistribute this file and/or modify it under the terms
of version 2 of the GNU General Public License as published by
the Free Software Foundation. You should have received a copy
of the license along with this file; see the file COPYING.
This file is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
license for more details.
*/
/*
HaPpy MaCintosh Hack
Patch the ROM for alternatives to the
Happy Macintosh icon displayed on boot
when a disk is inserted.
*/
#define kAHM_aside 0
#define kAHM_cheese 1
#define kAHM_evil 2
#define kAHM_horror 3
#define kAHM_lady_mac 4
#define kAHM_moustache 5
#define kAHM_nerdy 6
#define kAHM_pirate 7
#define kAHM_sleepy 8
#define kAHM_sly 9
#define kAHM_sunglasses 10
#define kAHM_surprise 11
#define kAHM_tongue 12
#define kAHM_yuck 13
#define kAHM_zombie 14
LOCALVAR const ui3b my_HappyMac_icon[] = {
#if CurAltHappyMac == kAHM_aside
0x00, 0x00,
0x39, 0x38,
0x21, 0x20,
0x01, 0x00,
0x01, 0x00,
0x03, 0x00,
0x00, 0x00,
0x00, 0x00,
0x07, 0x80,
0x00, 0x00
#endif
#if CurAltHappyMac == kAHM_cheese
0x10, 0x10,
0x28, 0x28,
0x00, 0x00,
0x00, 0x00,
0x3F, 0xF8,
0x20, 0x08,
0x20, 0x08,
0x20, 0x08,
0x10, 0x10,
0x0F, 0xE0,
#endif
#if CurAltHappyMac == kAHM_evil
0x00, 0x00,
0x10, 0x10,
0x08, 0x20,
0x0C, 0x60,
0x00, 0x00,
0x20, 0x08,
0x20, 0x08,
0x1F, 0xF0,
0x00, 0x00,
0x00, 0x00
#endif
#if CurAltHappyMac == kAHM_horror
0x38, 0x38,
0x44, 0x44,
0x44, 0x44,
0x44, 0x44,
0x38, 0x38,
0x03, 0x80,
0x03, 0x80,
0x03, 0x80,
0x03, 0x80,
0x03, 0x80
#endif
#if CurAltHappyMac == kAHM_lady_mac
0x38, 0x38,
0x45, 0x44,
0x55, 0x54,
0x45, 0x44,
0x39, 0x38,
0x03, 0x00,
0x00, 0x00,
0x00, 0x00,
0x07, 0x80,
0x03, 0x00
#endif
#if CurAltHappyMac == kAHM_moustache
0x00, 0x00,
0x11, 0x10,
0x11, 0x10,
0x01, 0x00,
0x01, 0x00,
0x03, 0x00,
0x1F, 0xE0,
0x00, 0x00,
0x08, 0x40,
0x07, 0x80
#endif
#if CurAltHappyMac == kAHM_nerdy
0x38, 0x38,
0x45, 0x45,
0xD7, 0xD6,
0x45, 0x44,
0x39, 0x38,
0x03, 0x00,
0x00, 0x00,
0x00, 0x00,
0x0F, 0xC0,
0x00, 0x00
#endif
#if CurAltHappyMac == kAHM_pirate
0x00, 0x81,
0x00, 0x7E,
0x11, 0x7E,
0x11, 0x3C,
0x01, 0x3C,
0x01, 0x18,
0x03, 0x00,
0x00, 0x00,
0x08, 0x40,
0x07, 0x80
#endif
#if CurAltHappyMac == kAHM_sleepy
0x00, 0x00,
0x1C, 0x70,
0x22, 0x88,
0x00, 0x00,
0x1C, 0x70,
0x08, 0x20,
0x00, 0x00,
0x00, 0x00,
0x03, 0x80,
0x00, 0x00
#endif
#if CurAltHappyMac == kAHM_sly
0x00, 0x00,
0x08, 0x20,
0x14, 0x50,
0x00, 0x00,
0x00, 0x00,
0x20, 0x08,
0x3F, 0xF8,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00
#endif
#if CurAltHappyMac == kAHM_sunglasses
0x00, 0x00,
0xFF, 0xFE,
0x7D, 0x7C,
0x7D, 0x7C,
0x39, 0x38,
0x03, 0x00,
0x00, 0x00,
0x1F, 0xF0,
0x00, 0x00,
0x00, 0x00
#endif
#if CurAltHappyMac == kAHM_surprise
0x1C, 0x70,
0x22, 0x88,
0x41, 0x04,
0x49, 0x24,
0x41, 0x04,
0x22, 0x88,
0x1C, 0x70,
0x01, 0x00,
0x03, 0x80,
0x03, 0x80
#endif
#if CurAltHappyMac == kAHM_tongue
0x00, 0x00,
0x1E, 0x78,
0x00, 0x00,
0x00, 0x00,
0x20, 0x04,
0x3F, 0xFC,
0x05, 0x40,
0x05, 0x40,
0x04, 0x40,
0x03, 0x80
#endif
#if CurAltHappyMac == kAHM_yuck
0x00, 0x00,
0x18, 0x30,
0x04, 0x40,
0x02, 0x80,
0x00, 0x00,
0x00, 0x00,
0x1F, 0xF0,
0x15, 0x50,
0x04, 0x40,
0x03, 0x80
#endif
#if CurAltHappyMac == kAHM_zombie
0x70, 0x7C,
0x88, 0x82,
0x88, 0x8A,
0xA8, 0x8A,
0x70, 0x82,
0x00, 0x42,
0x00, 0x3C,
0x1E, 0x00,
0x3F, 0x00,
0x3F, 0x00
#endif
};
#if CurEmMd <= kEmMd_Twig43
#define HappyMacBase 0xA34
#elif CurEmMd <= kEmMd_Twiggy
#define HappyMacBase 0x8F4
#elif CurEmMd <= kEmMd_128K
#define HappyMacBase 0x8A0
#elif CurEmMd <= kEmMd_Plus
#define HappyMacBase 0xFD2
#elif CurEmMd <= kEmMd_Classic
#define HappyMacBase 0x125C
#elif CurEmMd <= kEmMd_PB100
#define HappyMacBase 0x2BB0
#elif (CurEmMd == kEmMd_II) || (CurEmMd == kEmMd_IIx)
#define HappyMacBase 0x1948
#endif
LOCALPROC PatchHappyMac(void)
{
#if (CurEmMd == kEmMd_PB100) \
|| (CurEmMd == kEmMd_II) || (CurEmMd == kEmMd_IIx)
int i;
ui3b *dst = HappyMacBase + ROM + 0x18;
ui3b *src = (ui3b *)my_HappyMac_icon;
for (i = 10; --i >= 0; ) {
++dst;
*dst++ = *src++;
*dst++ = *src++;
++dst;
}
#else
MyMoveBytes((anyp)my_HappyMac_icon,
(anyp)(HappyMacBase + ROM),
sizeof(my_HappyMac_icon));
#endif
}

File diff suppressed because it is too large Load Diff

View File

@ -1,214 +0,0 @@
/*
IWMEVDEV.c
Copyright (C) 2006 Philip Cummins, Paul C. Pratt
You can redistribute this file and/or modify it under the terms
of version 2 of the GNU General Public License as published by
the Free Software Foundation. You should have received a copy
of the license along with this file; see the file COPYING.
This file is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
license for more details.
*/
/*
Integrated Woz Machine EMulated DEVice
Emulates the IWM found in the Mac Plus.
This code is adapted from "IWM.c" in vMac by Philip Cummins.
*/
/*
This is the emulation for the IWM, the Integrated Woz Machine.
It's basically a serial to parallel converter with some timing
in-built into it to perform handshaking. Emulation so far just
includes Status and Mode Register Accesses.
*/
#ifndef AllFiles
#include "SYSDEPNS.h"
#include "MYOSGLUE.h"
#include "EMCONFIG.h"
#include "GLOBGLUE.h"
#endif
#include "IWMEMDEV.h"
/*
ReportAbnormalID unused 0x0603 - 0x06FF
*/
#define kph0L 0x00 /* CA0 off (0) */
#define kph0H 0x01 /* CA0 on (1) */
#define kph1L 0x02 /* CA1 off (0) */
#define kph1H 0x03 /* CA1 on (1) */
#define kph2L 0x04 /* CA2 off (0) */
#define kph2H 0x05 /* CA2 on (1) */
#define kph3L 0x06 /* LSTRB off (low) */
#define kph3H 0x07 /* LSTRB on (high) */
#define kmtrOff 0x08 /* disk enable off */
#define kmtrOn 0x09 /* disk enable on */
#define kintDrive 0x0A /* select internal drive */
#define kextDrive 0x0B /* select external drive */
#define kq6L 0x0C /* Q6 off */
#define kq6H 0x0D /* Q6 on */
#define kq7L 0x0E /* Q7 off */
#define kq7H 0x0F /* Q7 on */
#define kph0 0x01
#define kph1 0x02
#define kph2 0x04
#define kph3 0x08
#define kmtr 0x10
#define kdrv 0x20
#define kq6 0x40
#define kq7 0x80
typedef struct
{
ui3b DataIn; /* Read Data Register */
ui3b Handshake; /* Read Handshake Register */
ui3b Status; /* Read Status Register */
ui3b Mode;
/* Drive Off : Write Mode Register */
/* Drive On : Write Data Register */
ui3b DataOut; /* Write Data Register */
ui3b Lines; /* Used to Access Disk Drive Registers */
} IWM_Ty;
IWM_Ty IWM;
GLOBALPROC IWM_Reset(void)
{
IWM.DataIn = IWM.Handshake = IWM.Status = IWM.Mode =
IWM.DataOut = IWM.Lines = 0;
}
typedef enum {On, Off} Mode_Ty;
LOCALPROC IWM_Set_Lines(ui3b line, Mode_Ty the_mode)
{
if (the_mode == Off) {
IWM.Lines &= (0xFF - line);
} else {
IWM.Lines |= line;
}
}
LOCALFUNC ui3b IWM_Read_Reg(void)
{
switch ((IWM.Lines & (kq6 + kq7)) >> 6) {
case 0 :
#if (CurEmMd >= kEmMd_SE) && (CurEmMd <= kEmMd_IIx)
/* don't report */
#else
ReportAbnormalID(0x0601, "IWM Data Read");
#endif
#ifdef _IWM_Debug
printf("IWM Data Read\n");
#endif
return IWM.DataIn;
break;
case 1 :
#ifdef _IWM_Debug
printf("IWM Status Read\n");
#endif
return IWM.Status;
break;
case 2 :
ReportAbnormalID(0x0602, "IWM Handshake Read");
#ifdef _IWM_Debug
printf("IWM Handshake Read\n");
#endif
return IWM.Handshake;
break;
case 3 :
default :
/*
should alway be in 0-3,
but compiler warnings don't know that
*/
return 0;
break;
}
}
LOCALPROC IWM_Write_Reg(ui3b in)
{
if (((IWM.Lines & kmtr) >> 4) == 0) {
#ifdef _IWM_Debug
printf("IWM Mode Register Write\n");
#endif
IWM.Mode = in;
IWM.Status = ((IWM.Status & 0xE0) + (IWM.Mode & 0x1F));
}
}
GLOBALFUNC ui5b IWM_Access(ui5b Data, blnr WriteMem, CPTR addr)
{
switch (addr) {
case kph0L :
IWM_Set_Lines(kph0, Off);
break;
case kph0H :
IWM_Set_Lines(kph0, On);
break;
case kph1L :
IWM_Set_Lines(kph1, Off);
break;
case kph1H :
IWM_Set_Lines(kph1, On);
break;
case kph2L :
IWM_Set_Lines(kph2, Off);
break;
case kph2H :
IWM_Set_Lines(kph2, On);
break;
case kph3L :
IWM_Set_Lines(kph3, Off);
break;
case kph3H :
IWM_Set_Lines(kph3, On);
break;
case kmtrOff :
IWM.Status &= 0xDF;
IWM_Set_Lines(kmtr, Off);
break;
case kmtrOn :
IWM.Status |= 0x20;
IWM_Set_Lines(kmtr, On);
break;
case kintDrive :
IWM_Set_Lines(kdrv, Off);
break;
case kextDrive :
IWM_Set_Lines(kdrv, On);
break;
case kq6L :
IWM_Set_Lines(kq6, Off);
break;
case kq6H :
IWM_Set_Lines(kq6, On);
break;
case kq7L :
if (! WriteMem) {
Data = IWM_Read_Reg();
}
IWM_Set_Lines(kq7, Off);
break;
case kq7H :
if (WriteMem) {
IWM_Write_Reg(Data);
}
IWM_Set_Lines(kq7, On);
break;
}
return Data;
}

View File

@ -1,25 +0,0 @@
/*
IWMEVDEV.h
Copyright (C) 2004 Philip Cummins, Paul C. Pratt
You can redistribute this file and/or modify it under the terms
of version 2 of the GNU General Public License as published by
the Free Software Foundation. You should have received a copy
of the license along with this file; see the file COPYING.
This file is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
license for more details.
*/
#ifdef IWMEVDEV_H
#error "header already included"
#else
#define IWMEVDEV_H
#endif
EXPORTPROC IWM_Reset(void);
EXPORTFUNC ui5b IWM_Access(ui5b Data, blnr WriteMem, CPTR addr);

View File

@ -1,214 +0,0 @@
/*
KBRDEMDV.c
Copyright (C) 2006 Philip Cummins, Paul C. Pratt
You can redistribute this file and/or modify it under the terms
of version 2 of the GNU General Public License as published by
the Free Software Foundation. You should have received a copy
of the license along with this file; see the file COPYING.
This file is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
license for more details.
*/
/*
KeyBoaRD EMulated DeVice
Emulation of the keyboard in the Mac Plus.
This code adapted from "Keyboard.c" in vMac by Philip Cummins.
*/
#ifndef AllFiles
#include "SYSDEPNS.h"
#include "MYOSGLUE.h"
#include "EMCONFIG.h"
#include "GLOBGLUE.h"
#endif
#include "KBRDEMDV.h"
#ifdef _VIA_Debug
#include <stdio.h>
#endif
/*
ReportAbnormalID unused 0x0B03 - 0x0BFF
*/
IMPORTPROC KYBD_ShiftOutData(ui3b v);
IMPORTFUNC ui3b KYBD_ShiftInData(void);
enum {
kKybdStateIdle,
kKybdStateRecievingCommand,
kKybdStateRecievedCommand,
kKybdStateRecievingEndCommand,
kKybdStates
};
LOCALVAR int KybdState = kKybdStateIdle;
LOCALVAR blnr HaveKeyBoardResult = falseblnr;
LOCALVAR ui3b KeyBoardResult;
LOCALPROC GotKeyBoardData(ui3b v)
{
if (KybdState != kKybdStateIdle) {
HaveKeyBoardResult = trueblnr;
KeyBoardResult = v;
} else {
KYBD_ShiftOutData(v);
VIA1_iCB2 = 1;
}
}
LOCALVAR ui3b InstantCommandData = 0x7B;
LOCALFUNC blnr AttemptToFinishInquiry(void)
{
int i;
blnr KeyDown;
ui3b Keyboard_Data;
if (FindKeyEvent(&i, &KeyDown)) {
if (i < 64) {
Keyboard_Data = i << 1;
if (! KeyDown) {
Keyboard_Data += 128;
}
} else {
Keyboard_Data = 121;
InstantCommandData = (i - 64) << 1;
if (! KeyDown) {
InstantCommandData += 128;
}
}
GotKeyBoardData(Keyboard_Data);
return trueblnr;
} else {
return falseblnr;
}
}
#define MaxKeyboardWait 16 /* in 60ths of a second */
/*
Code in the mac rom will reset the keyboard if
it hasn't been heard from in 32/60th of a second.
So time out and send something before that
to keep connection.
*/
LOCALVAR int InquiryCommandTimer = 0;
GLOBALPROC DoKybd_ReceiveCommand(void)
{
if (KybdState != kKybdStateRecievingCommand) {
ReportAbnormalID(0x0B01,
"KybdState != kKybdStateRecievingCommand");
} else {
ui3b in = KYBD_ShiftInData();
KybdState = kKybdStateRecievedCommand;
switch (in) {
case 0x10 : /* Inquiry Command */
if (! AttemptToFinishInquiry()) {
InquiryCommandTimer = MaxKeyboardWait;
}
break;
case 0x14 : /* Instant Command */
GotKeyBoardData(InstantCommandData);
InstantCommandData = 0x7B;
break;
case 0x16 : /* Model Command */
GotKeyBoardData(0x0b /* 0x01 */);
/* Test value, means Model 0, no extra devices */
/*
Fixed by Hoshi Takanori -
it uses the proper keyboard type now
*/
break;
case 0x36 : /* Test Command */
GotKeyBoardData(0x7D);
break;
case 0x00:
GotKeyBoardData(0);
break;
default :
/* Debugger(); */
GotKeyBoardData(0);
break;
}
}
}
GLOBALPROC DoKybd_ReceiveEndCommand(void)
{
if (KybdState != kKybdStateRecievingEndCommand) {
ReportAbnormalID(0x0B02,
"KybdState != kKybdStateRecievingEndCommand");
} else {
KybdState = kKybdStateIdle;
#ifdef _VIA_Debug
fprintf(stderr, "enter DoKybd_ReceiveEndCommand\n");
#endif
if (HaveKeyBoardResult) {
#ifdef _VIA_Debug
fprintf(stderr, "HaveKeyBoardResult: %d\n", KeyBoardResult);
#endif
HaveKeyBoardResult = falseblnr;
KYBD_ShiftOutData(KeyBoardResult);
VIA1_iCB2 = 1;
}
}
}
GLOBALPROC Kybd_DataLineChngNtfy(void)
{
switch (KybdState) {
case kKybdStateIdle:
if (VIA1_iCB2 == 0) {
KybdState = kKybdStateRecievingCommand;
#ifdef _VIA_Debug
fprintf(stderr, "posting kICT_Kybd_ReceiveCommand\n");
#endif
ICT_add(kICT_Kybd_ReceiveCommand,
6800UL * kCycleScale / 64 * kMyClockMult);
if (InquiryCommandTimer != 0) {
InquiryCommandTimer = 0; /* abort Inquiry */
}
}
break;
case kKybdStateRecievedCommand:
if (VIA1_iCB2 == 1) {
KybdState = kKybdStateRecievingEndCommand;
#ifdef _VIA_Debug
fprintf(stderr,
"posting kICT_Kybd_ReceiveEndCommand\n");
#endif
ICT_add(kICT_Kybd_ReceiveEndCommand,
6800UL * kCycleScale / 64 * kMyClockMult);
}
break;
}
}
GLOBALPROC KeyBoard_Update(void)
{
if (InquiryCommandTimer != 0) {
if (AttemptToFinishInquiry()) {
InquiryCommandTimer = 0;
} else {
--InquiryCommandTimer;
if (InquiryCommandTimer == 0) {
GotKeyBoardData(0x7B);
}
}
}
}

View File

@ -1,27 +0,0 @@
/*
KBRDEMDV.h
Copyright (C) 2003 Philip Cummins, Paul C. Pratt
You can redistribute this file and/or modify it under the terms
of version 2 of the GNU General Public License as published by
the Free Software Foundation. You should have received a copy
of the license along with this file; see the file COPYING.
This file is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
license for more details.
*/
#ifdef KBRDEMDV_H
#error "header already included"
#else
#define KBRDEMDV_H
#endif
EXPORTPROC Kybd_DataLineChngNtfy(void);
EXPORTPROC DoKybd_ReceiveEndCommand(void);
EXPORTPROC DoKybd_ReceiveCommand(void);
EXPORTPROC KeyBoard_Update(void);

File diff suppressed because it is too large Load Diff

View File

@ -1,279 +0,0 @@
/*
M68KITAB.h
Copyright (C) 2007, Paul C. Pratt
You can redistribute this file and/or modify it under the terms
of version 2 of the GNU General Public License as published by
the Free Software Foundation. You should have received a copy
of the license along with this file; see the file COPYING.
This file is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
license for more details.
*/
#ifdef M68KITAB_H
#error "header already included"
#else
#define M68KITAB_H
#endif
enum {
kIKindTst,
kIKindCmpB,
kIKindCmpW,
kIKindCmpL,
kIKindBccB,
kIKindBccW,
kIKindBraB,
kIKindBraW,
kIKindDBcc,
kIKindDBF,
kIKindSwap,
kIKindMoveL,
kIKindMoveW,
kIKindMoveB,
kIKindMoveAL,
kIKindMoveAW,
kIKindMoveQ,
kIKindAddB,
kIKindAddW,
kIKindAddL,
kIKindSubB,
kIKindSubW,
kIKindSubL,
kIKindLea,
kIKindPEA,
kIKindA,
kIKindBsrB,
kIKindBsrW,
kIKindJsr,
kIKindLinkA6,
kIKindMOVEMRmML,
kIKindMOVEMApRL,
kIKindUnlkA6,
kIKindRts,
kIKindJmp,
kIKindClr,
kIKindAddA,
kIKindAddQA,
kIKindSubA,
kIKindSubQA,
kIKindCmpA,
kIKindAddXB,
kIKindAddXW,
kIKindAddXL,
kIKindSubXB,
kIKindSubXW,
kIKindSubXL,
kIKindAslB,
kIKindAslW,
kIKindAslL,
kIKindAsrB,
kIKindAsrW,
kIKindAsrL,
kIKindLslB,
kIKindLslW,
kIKindLslL,
kIKindLsrB,
kIKindLsrW,
kIKindLsrL,
kIKindRxlB,
kIKindRxlW,
kIKindRxlL,
kIKindRxrB,
kIKindRxrW,
kIKindRxrL,
kIKindRolB,
kIKindRolW,
kIKindRolL,
kIKindRorB,
kIKindRorW,
kIKindRorL,
kIKindBTstB,
kIKindBChgB,
kIKindBClrB,
kIKindBSetB,
kIKindBTstL,
kIKindBChgL,
kIKindBClrL,
kIKindBSetL,
kIKindAndI,
kIKindAndEaD,
kIKindAndDEa,
kIKindOrI,
kIKindOrDEa,
kIKindOrEaD,
kIKindEor,
kIKindEorI,
kIKindNot,
kIKindScc,
kIKindNegXB,
kIKindNegXW,
kIKindNegXL,
kIKindNegB,
kIKindNegW,
kIKindNegL,
kIKindEXTW,
kIKindEXTL,
kIKindMulU,
kIKindMulS,
kIKindDivU,
kIKindDivS,
kIKindExg,
kIKindMoveEaCCR,
kIKindMoveSREa,
kIKindMoveEaSR,
kIKindOrISR,
kIKindAndISR,
kIKindEorISR,
kIKindOrICCR,
kIKindAndICCR,
kIKindEorICCR,
kIKindMOVEMApRW,
kIKindMOVEMRmMW,
kIKindMOVEMrmW,
kIKindMOVEMrmL,
kIKindMOVEMmrW,
kIKindMOVEMmrL,
kIKindAbcd,
kIKindSbcd,
kIKindNbcd,
kIKindRte,
kIKindNop,
kIKindMoveP0,
kIKindMoveP1,
kIKindMoveP2,
kIKindMoveP3,
kIKindIllegal,
kIKindChkW,
kIKindTrap,
kIKindTrapV,
kIKindRtr,
kIKindLink,
kIKindUnlk,
kIKindMoveRUSP,
kIKindMoveUSPR,
kIKindTas,
kIKindFdflt,
kIKindStop,
kIKindReset,
#if Use68020
kIKindCallMorRtm,
kIKindBraL,
kIKindBccL,
kIKindBsrL,
kIKindEXTBL,
kIKindTRAPcc,
kIKindChkL,
kIKindBkpt,
kIKindDivL,
kIKindMulL,
kIKindRtd,
kIKindMoveCCREa,
kIKindMoveCEa,
kIKindMoveEaC,
kIKindLinkL,
kIKindPack,
kIKindUnpk,
kIKindCHK2orCMP2,
kIKindCAS2,
kIKindCAS,
kIKindMoveS,
kIKindBitField,
#endif
#if EmMMU
kIKindMMU,
#endif
#if EmFPU
kIKindFPUmd60,
kIKindFPUDBcc,
kIKindFPUTrapcc,
kIKindFPUScc,
kIKindFPUFBccW,
kIKindFPUFBccL,
kIKindFPUSave,
kIKindFPURestore,
kIKindFPUdflt,
#endif
kNumIKinds
};
enum {
kAMdRegB,
kAMdRegW,
kAMdRegL,
kAMdIndirectB,
kAMdIndirectW,
kAMdIndirectL,
kAMdAPosIncB,
kAMdAPosIncW,
kAMdAPosIncL,
kAMdAPosInc7B,
kAMdAPreDecB,
kAMdAPreDecW,
kAMdAPreDecL,
kAMdAPreDec7B,
kAMdADispB,
kAMdADispW,
kAMdADispL,
kAMdAIndexB,
kAMdAIndexW,
kAMdAIndexL,
kAMdAbsWB,
kAMdAbsWW,
kAMdAbsWL,
kAMdAbsLB,
kAMdAbsLW,
kAMdAbsLL,
kAMdPCDispB,
kAMdPCDispW,
kAMdPCDispL,
kAMdPCIndexB,
kAMdPCIndexW,
kAMdPCIndexL,
kAMdImmedB,
kAMdImmedW,
kAMdImmedL,
kAMdDat4,
kNumAMds
};
struct DecOpXR {
/* expected size : 4 bytes */
ui4b MainClas;
ui4b Cycles;
};
typedef struct DecOpXR DecOpXR;
struct DecArgR {
/* expected size : 2 bytes */
ui3b AMd;
ui3b ArgDat;
};
typedef struct DecArgR DecArgR;
struct DecOpYR {
/* expected size : 4 bytes */
DecArgR v[2];
};
typedef struct DecOpYR DecOpYR;
struct DecOpR {
/* expected size : 8 bytes */
DecOpXR x;
DecOpYR y;
} my_align_8;
typedef struct DecOpR DecOpR;
#define GetDcoCycles(p) ((p)->x.Cycles)
#define SetDcoMainClas(p, xx) ((p)->x.MainClas = (xx))
#define SetDcoCycles(p, xx) ((p)->x.Cycles = (xx))
EXPORTPROC M68KITAB_setup(DecOpR *p);

File diff suppressed because it is too large Load Diff

View File

@ -1,53 +0,0 @@
/*
MINEM68K.h
Copyright (C) 2004 Bernd Schmidt, Paul C. Pratt
You can redistribute this file and/or modify it under the terms
of version 2 of the GNU General Public License as published by
the Free Software Foundation. You should have received a copy
of the license along with this file; see the file COPYING.
This file is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
license for more details.
*/
#ifdef MINEM68K_H
#error "header already included"
#else
#define MINEM68K_H
#endif
EXPORTPROC MINEM68K_Init(
ui3b *fIPL);
#if SmallGlobals
EXPORTPROC MINEM68K_ReserveAlloc(void);
#endif
EXPORTPROC m68k_IPLchangeNtfy(void);
EXPORTPROC DiskInsertedPsuedoException(CPTR newpc, ui5b data);
EXPORTPROC m68k_reset(void);
EXPORTFUNC si5r GetCyclesRemaining(void);
EXPORTPROC SetCyclesRemaining(si5r n);
EXPORTPROC m68k_go_nCycles(ui5b n);
/*
general purpose access of address space
of emulated computer. (memory and
memory mapped hardware.)
*/
EXPORTFUNC ui3r get_vm_byte(CPTR addr);
EXPORTFUNC ui4r get_vm_word(CPTR addr);
EXPORTFUNC ui5r get_vm_long(CPTR addr);
EXPORTPROC put_vm_byte(CPTR addr, ui3r b);
EXPORTPROC put_vm_word(CPTR addr, ui4r w);
EXPORTPROC put_vm_long(CPTR addr, ui5r l);
EXPORTPROC SetHeadATTel(ATTep p);
EXPORTFUNC ATTep FindATTel(CPTR addr);

View File

@ -1,129 +0,0 @@
/*
MOUSEMDV.c
Copyright (C) 2006 Philip Cummins, Paul C. Pratt
You can redistribute this file and/or modify it under the terms
of version 2 of the GNU General Public License as published by
the Free Software Foundation. You should have received a copy
of the license along with this file; see the file COPYING.
This file is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
license for more details.
*/
/*
MOUSe EMulated DeVice
Emulation of the mouse in the Mac Plus.
This code descended from "Mouse-MacOS.c" in Richard F. Bannister's
Macintosh port of vMac, by Philip Cummins.
*/
#ifndef AllFiles
#include "SYSDEPNS.h"
#include "MYOSGLUE.h"
#include "ENDIANAC.h"
#include "EMCONFIG.h"
#include "GLOBGLUE.h"
#include "SCCEMDEV.h"
#include "MINEM68K.h"
#endif
#include "MOUSEMDV.h"
GLOBALPROC Mouse_Update(void)
{
#if HaveMasterMyEvtQLock
if (0 != MasterMyEvtQLock) {
--MasterMyEvtQLock;
}
#endif
/*
Check mouse position first. After mouse button or key event,
can't process another mouse position until following tick,
otherwise button or key will be in wrong place.
*/
/*
if start doing this too soon after boot,
will mess up memory check
*/
if (Mouse_Enabled()) {
MyEvtQEl *p;
if (
#if HaveMasterMyEvtQLock
(0 == MasterMyEvtQLock) &&
#endif
(nullpr != (p = MyEvtQOutP())))
{
#if EmClassicKbrd
#if EnableMouseMotion
if (MyEvtQElKindMouseDelta == p->kind) {
if ((p->u.pos.h != 0) || (p->u.pos.v != 0)) {
put_ram_word(0x0828,
get_ram_word(0x0828) + p->u.pos.v);
put_ram_word(0x082A,
get_ram_word(0x082A) + p->u.pos.h);
put_ram_byte(0x08CE, get_ram_byte(0x08CF));
/* Tell MacOS to redraw the Mouse */
}
MyEvtQOutDone();
} else
#endif
#endif
if (MyEvtQElKindMousePos == p->kind) {
ui5r NewMouse = (p->u.pos.v << 16) | p->u.pos.h;
if (get_ram_long(0x0828) != NewMouse) {
put_ram_long(0x0828, NewMouse);
/* Set Mouse Position */
put_ram_long(0x082C, NewMouse);
#if EmClassicKbrd
put_ram_byte(0x08CE, get_ram_byte(0x08CF));
/* Tell MacOS to redraw the Mouse */
#else
put_ram_long(0x0830, NewMouse);
put_ram_byte(0x08CE, 0xFF);
/* Tell MacOS to redraw the Mouse */
#endif
}
MyEvtQOutDone();
}
}
}
#if EmClassicKbrd
{
MyEvtQEl *p;
if (
#if HaveMasterMyEvtQLock
(0 == MasterMyEvtQLock) &&
#endif
(nullpr != (p = MyEvtQOutP())))
{
if (MyEvtQElKindMouseButton == p->kind) {
MouseBtnUp = p->u.press.down ? 0 : 1;
MyEvtQOutDone();
MasterMyEvtQLock = 4;
}
}
}
#endif
}
GLOBALPROC Mouse_EndTickNotify(void)
{
if (Mouse_Enabled()) {
/* tell platform specific code where the mouse went */
CurMouseV = get_ram_word(0x082C);
CurMouseH = get_ram_word(0x082E);
}
}

View File

@ -1,24 +0,0 @@
/*
MOUSEMDV.h
Copyright (C) 2003 Philip Cummins, Paul C. Pratt
You can redistribute this file and/or modify it under the terms
of version 2 of the GNU General Public License as published by
the Free Software Foundation. You should have received a copy
of the license along with this file; see the file COPYING.
This file is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
license for more details.
*/
#ifdef MOUSEMDV_H
#error "header already included"
#else
#define MOUSEMDV_H
#endif
EXPORTPROC Mouse_Update(void);
EXPORTPROC Mouse_EndTickNotify(void);

View File

@ -1,441 +0,0 @@
/*
MYOSGLUE.h
Copyright (C) 2006 Philip Cummins, Richard F. Bannister,
Paul C. Pratt
You can redistribute this file and/or modify it under the terms
of version 2 of the GNU General Public License as published by
the Free Software Foundation. You should have received a copy
of the license along with this file; see the file COPYING.
This file is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
license for more details.
*/
/*
MY Operating System GLUE.
header file for operating system dependent code.
the same header is used for all platforms.
This code is descended from Richard F. Bannister's Macintosh
port of vMac, by Philip Cummins.
*/
#ifdef MYOSGLUE_H
#ifndef AllFiles
#error "header already included"
#endif
#else
#define MYOSGLUE_H
#endif
#if WantAbnormalReports
EXPORTOSGLUPROC WarnMsgAbnormalID(ui4r id);
#endif
#if dbglog_HAVE
EXPORTOSGLUPROC dbglog_writeCStr(char *s);
EXPORTOSGLUPROC dbglog_writeReturn(void);
EXPORTOSGLUPROC dbglog_writeHex(ui5r x);
EXPORTOSGLUPROC dbglog_writeNum(ui5r x);
EXPORTOSGLUPROC dbglog_writeMacChar(ui3r x);
EXPORTOSGLUPROC dbglog_writeln(char *s);
EXPORTOSGLUPROC dbglog_writelnNum(char *s, simr v);
#endif
EXPORTOSGLUPROC ReserveAllocOneBlock(ui3p *p, uimr n, ui3r align,
blnr FillOnes);
EXPORTOSGLUPROC MyMoveBytes(anyp srcPtr, anyp destPtr, si5b byteCount);
EXPORTVAR(ui3p, ROM)
/*
error codes returned by Mini vMac extensions
(passed back to the emulated 68k code).
*/
#define tMacErr ui4r
#define mnvm_noErr ((tMacErr) 0x0000)
/* (ui4b) 0 - No Error */
#define mnvm_miscErr ((tMacErr) 0xFFFF)
/* (ui4b) - 1 - Should probably replace these */
#define mnvm_controlErr ((tMacErr) 0xFFEF)
/* (ui4b) - 17 - I/O System Errors */
#define mnvm_statusErr ((tMacErr) 0xFFEE)
/* (ui4b) - 18 - Driver can't respond to Status call */
#define mnvm_closErr ((tMacErr) 0xFFE8)
/* (ui4b) - 24 - I/O System Errors */
#define mnvm_eofErr ((tMacErr) 0xFFD9)
/* (ui4b) - 39 - End of file */
#define mnvm_tmfoErr ((tMacErr) 0xFFD6)
/* (ui4b) - 42 - too many files open */
#define mnvm_fnfErr ((tMacErr) 0xFFD5)
/* (ui4b) - 43 - File not found */
#define mnvm_wPrErr ((tMacErr) 0xFFD4)
/* (ui4b) - 44 - diskette is write protected */
#define mnvm_vLckdErr ((tMacErr) 0xFFD2)
/* (ui4b) - 46 - volume is locked */
#define mnvm_dupFNErr ((tMacErr) 0xFFD0)
/* (ui4b) - 48 - duplicate filename */
#define mnvm_opWrErr ((tMacErr) 0xFFCF)
/* (ui4b) - 49 - file already open with with write permission */
#define mnvm_paramErr ((tMacErr) 0xFFCE)
/* (ui4b) - 50 - error in parameter list */
#define mnvm_permErr ((tMacErr) 0xFFCA)
/* (ui4b) - 54 - permissions error (on file open) */
#define mnvm_nsDrvErr ((tMacErr) 0xFFC8)
/* (ui4b) - 56 - No Such Drive */
#define mnvm_wrPermErr ((tMacErr) 0xFFC3)
/* (ui4b) - 61 - write permissions error */
#define mnvm_offLinErr ((tMacErr) 0xFFBF)
/* (ui4b) - 65 - off-line drive */
#define mnvm_dirNFErr ((tMacErr) 0xFF88)
/* (ui4b) - 120 - directory not found */
#define mnvm_afpAccessDenied ((tMacErr) 0xEC78)
/* (ui4b) - 5000 - Insufficient access privileges for operation */
#if IncludePbufs
#define tPbuf ui4r
#define NotAPbuf ((tPbuf)0xFFFF)
EXPORTOSGLUFUNC tMacErr CheckPbuf(tPbuf Pbuf_No);
EXPORTOSGLUFUNC tMacErr PbufGetSize(tPbuf Pbuf_No, ui5r *Count);
EXPORTOSGLUFUNC tMacErr PbufNew(ui5b count, tPbuf *r);
EXPORTOSGLUPROC PbufDispose(tPbuf i);
EXPORTOSGLUPROC PbufTransfer(ui3p Buffer,
tPbuf i, ui5r offset, ui5r count, blnr IsWrite);
#endif
#define tDrive ui4r
EXPORTVAR(ui5b, vSonyWritableMask)
EXPORTVAR(ui5b, vSonyInsertedMask)
#define vSonyIsInserted(Drive_No) \
((vSonyInsertedMask & ((ui5b)1 << (Drive_No))) != 0)
EXPORTOSGLUFUNC tMacErr vSonyTransfer(blnr IsWrite, ui3p Buffer,
tDrive Drive_No, ui5r Sony_Start, ui5r Sony_Count,
ui5r *Sony_ActCount);
EXPORTOSGLUFUNC tMacErr vSonyEject(tDrive Drive_No);
EXPORTOSGLUFUNC tMacErr vSonyGetSize(tDrive Drive_No, ui5r *Sony_Count);
EXPORTOSGLUFUNC blnr AnyDiskInserted(void);
EXPORTOSGLUPROC DiskRevokeWritable(tDrive Drive_No);
#if IncludeSonyRawMode
EXPORTVAR(blnr, vSonyRawMode)
#endif
#if IncludeSonyNew
EXPORTVAR(blnr, vSonyNewDiskWanted)
EXPORTVAR(ui5b, vSonyNewDiskSize)
EXPORTOSGLUFUNC tMacErr vSonyEjectDelete(tDrive Drive_No);
#endif
#if IncludeSonyNameNew
EXPORTVAR(tPbuf, vSonyNewDiskName)
#endif
#if IncludeSonyGetName
EXPORTOSGLUFUNC tMacErr vSonyGetName(tDrive Drive_No, tPbuf *r);
#endif
#if IncludeHostTextClipExchange
EXPORTOSGLUFUNC tMacErr HTCEexport(tPbuf i);
EXPORTOSGLUFUNC tMacErr HTCEimport(tPbuf *r);
#endif
EXPORTVAR(ui5b, OnTrueTime)
EXPORTVAR(ui5b, CurMacDateInSeconds)
#if AutoLocation
EXPORTVAR(ui5b, CurMacLatitude)
EXPORTVAR(ui5b, CurMacLongitude)
#endif
#if AutoTimeZone
EXPORTVAR(ui5b, CurMacDelta)
/* (dlsDelta << 24) | (gmtDelta & 0x00FFFFFF) */
#endif
#define vMacScreenNumPixels \
((long)vMacScreenHeight * (long)vMacScreenWidth)
#define vMacScreenNumBits (vMacScreenNumPixels << vMacScreenDepth)
#define vMacScreenNumBytes (vMacScreenNumBits / 8)
#define vMacScreenBitWidth ((long)vMacScreenWidth << vMacScreenDepth)
#define vMacScreenByteWidth (vMacScreenBitWidth / 8)
#define vMacScreenMonoNumBytes (vMacScreenNumPixels / 8)
#define vMacScreenMonoByteWidth ((long)vMacScreenWidth / 8)
#if 0 != vMacScreenDepth
EXPORTVAR(blnr, UseColorMode)
EXPORTVAR(blnr, ColorModeWorks)
#endif
#if 0 != vMacScreenDepth
EXPORTVAR(blnr, ColorMappingChanged)
#endif
#if (0 != vMacScreenDepth) && (vMacScreenDepth < 4)
#define CLUT_size (1 << (1 << vMacScreenDepth))
EXPORTVAR(ui4r, CLUT_reds[CLUT_size])
EXPORTVAR(ui4r, CLUT_greens[CLUT_size])
EXPORTVAR(ui4r, CLUT_blues[CLUT_size])
#endif
EXPORTVAR(blnr, EmVideoDisable)
EXPORTVAR(si3b, EmLagTime)
EXPORTOSGLUPROC Screen_OutputFrame(ui3p screencurrentbuff);
EXPORTOSGLUPROC DoneWithDrawingForTick(void);
EXPORTVAR(blnr, ForceMacOff)
EXPORTVAR(blnr, WantMacInterrupt)
EXPORTVAR(blnr, WantMacReset)
EXPORTOSGLUFUNC blnr ExtraTimeNotOver(void);
EXPORTVAR(ui3b, SpeedValue)
#if EnableAutoSlow
EXPORTVAR(blnr, WantNotAutoSlow)
#endif
/* where emulated machine thinks mouse is */
EXPORTVAR(ui4b, CurMouseV)
EXPORTVAR(ui4b, CurMouseH)
#if EnableAutoSlow
EXPORTVAR(ui5r, QuietTime)
EXPORTVAR(ui5r, QuietSubTicks)
#define QuietEnds() \
{ \
QuietTime = 0; \
QuietSubTicks = 0; \
}
#else
#define QuietEnds()
#endif
#if 3 == kLn2SoundSampSz
#define trSoundSamp ui3r
#define tbSoundSamp ui3b
#define tpSoundSamp ui3p
#define kCenterSound 0x80
#elif 4 == kLn2SoundSampSz
#define trSoundSamp ui4r
#define tbSoundSamp ui4b
#define tpSoundSamp ui4p
#define kCenterSound 0x8000
#else
#error "unsupported kLn2SoundSampSz"
#endif
#if MySoundEnabled
EXPORTOSGLUFUNC tpSoundSamp MySound_BeginWrite(ui4r n, ui4r *actL);
EXPORTOSGLUPROC MySound_EndWrite(ui4r actL);
/* 370 samples per tick = 22,254.54 per second */
#endif
#if EmLocalTalk
#define LT_TxBfMxSz 1024
EXPORTVAR(ui3p, LT_TxBuffer)
EXPORTVAR(ui4r, LT_TxBuffSz)
EXPORTOSGLUPROC LT_TransmitPacket(void);
EXPORTVAR(ui3p, LT_RxBuffer)
EXPORTVAR(ui5r, LT_RxBuffSz)
EXPORTOSGLUPROC LT_ReceivePacket(void);
#endif
EXPORTOSGLUPROC WaitForNextTick(void);
#define MyEvtQElKindKey 0
#define MyEvtQElKindMouseButton 1
#define MyEvtQElKindMousePos 2
#define MyEvtQElKindMouseDelta 3
struct MyEvtQEl {
/* expected size : 8 bytes */
ui3b kind;
ui3b pad[3];
union {
struct {
ui3b down;
ui3b key;
} press;
struct {
ui4b h;
ui4b v;
} pos;
} u;
};
typedef struct MyEvtQEl MyEvtQEl;
EXPORTOSGLUFUNC MyEvtQEl * MyEvtQOutP(void);
EXPORTOSGLUPROC MyEvtQOutDone(void);
#define MKC_A 0x00
#define MKC_B 0x0B
#define MKC_C 0x08
#define MKC_D 0x02
#define MKC_E 0x0E
#define MKC_F 0x03
#define MKC_G 0x05
#define MKC_H 0x04
#define MKC_I 0x22
#define MKC_J 0x26
#define MKC_K 0x28
#define MKC_L 0x25
#define MKC_M 0x2E
#define MKC_N 0x2D
#define MKC_O 0x1F
#define MKC_P 0x23
#define MKC_Q 0x0C
#define MKC_R 0x0F
#define MKC_S 0x01
#define MKC_T 0x11
#define MKC_U 0x20
#define MKC_V 0x09
#define MKC_W 0x0D
#define MKC_X 0x07
#define MKC_Y 0x10
#define MKC_Z 0x06
#define MKC_1 0x12
#define MKC_2 0x13
#define MKC_3 0x14
#define MKC_4 0x15
#define MKC_5 0x17
#define MKC_6 0x16
#define MKC_7 0x1A
#define MKC_8 0x1C
#define MKC_9 0x19
#define MKC_0 0x1D
#define MKC_Command 0x37
#define MKC_Shift 0x38
#define MKC_CapsLock 0x39
#define MKC_Option 0x3A
#define MKC_Space 0x31
#define MKC_Return 0x24
#define MKC_BackSpace 0x33
#define MKC_Tab 0x30
#define MKC_Left /* 0x46 */ 0x7B
#define MKC_Right /* 0x42 */ 0x7C
#define MKC_Down /* 0x48 */ 0x7D
#define MKC_Up /* 0x4D */ 0x7E
#define MKC_Minus 0x1B
#define MKC_Equal 0x18
#define MKC_BackSlash 0x2A
#define MKC_Comma 0x2B
#define MKC_Period 0x2F
#define MKC_Slash 0x2C
#define MKC_SemiColon 0x29
#define MKC_SingleQuote 0x27
#define MKC_LeftBracket 0x21
#define MKC_RightBracket 0x1E
#define MKC_Grave 0x32
#define MKC_Clear 0x47
#define MKC_KPEqual 0x51
#define MKC_KPDevide 0x4B
#define MKC_KPMultiply 0x43
#define MKC_KPSubtract 0x4E
#define MKC_KPAdd 0x45
#define MKC_Enter 0x4C
#define MKC_KP1 0x53
#define MKC_KP2 0x54
#define MKC_KP3 0x55
#define MKC_KP4 0x56
#define MKC_KP5 0x57
#define MKC_KP6 0x58
#define MKC_KP7 0x59
#define MKC_KP8 0x5B
#define MKC_KP9 0x5C
#define MKC_KP0 0x52
#define MKC_Decimal 0x41
/* these aren't on the Mac Plus keyboard */
#define MKC_Control 0x3B
#define MKC_Escape 0x35
#define MKC_F1 0x7a
#define MKC_F2 0x78
#define MKC_F3 0x63
#define MKC_F4 0x76
#define MKC_F5 0x60
#define MKC_F6 0x61
#define MKC_F7 0x62
#define MKC_F8 0x64
#define MKC_F9 0x65
#define MKC_F10 0x6d
#define MKC_F11 0x67
#define MKC_F12 0x6f
#define MKC_Home 0x73
#define MKC_End 0x77
#define MKC_PageUp 0x74
#define MKC_PageDown 0x79
#define MKC_Help 0x72 /* = Insert */
#define MKC_ForwardDel 0x75
#define MKC_Print 0x69
#define MKC_ScrollLock 0x6B
#define MKC_Pause 0x71
#define MKC_AngleBracket 0x0A /* found on german keyboard */
/*
Additional codes found in Apple headers
#define MKC_RightShift 0x3C
#define MKC_RightOption 0x3D
#define MKC_RightControl 0x3E
#define MKC_Function 0x3F
#define MKC_VolumeUp 0x48
#define MKC_VolumeDown 0x49
#define MKC_Mute 0x4A
#define MKC_F16 0x6A
#define MKC_F17 0x40
#define MKC_F18 0x4F
#define MKC_F19 0x50
#define MKC_F20 0x5A
#define MKC_F13 MKC_Print
#define MKC_F14 MKC_ScrollLock
#define MKC_F15 MKC_Pause
*/
/* not Apple key codes, only for Mini vMac */
#define MKC_CM 0x80
#define MKC_None 0xFF

View File

@ -1,442 +0,0 @@
/*
PMUEMDEV.c
Copyright (C) 2008 Paul C. Pratt
You can redistribute this file and/or modify it under the terms
of version 2 of the GNU General Public License as published by
the Free Software Foundation. You should have received a copy
of the license along with this file; see the file COPYING.
This file is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
license for more details.
*/
/*
Power Management Unit EMulated DEVice
*/
#ifndef AllFiles
#include "SYSDEPNS.h"
#include "MYOSGLUE.h"
#include "EMCONFIG.h"
#include "GLOBGLUE.h"
#include "VIAEMDEV.h"
#endif
#include "PMUEMDEV.h"
/*
ReportAbnormalID unused 0x0E0E - 0x0EFF
*/
enum {
kPMUStateReadyForCommand,
kPMUStateRecievingLength,
kPMUStateRecievingBuffer,
kPMUStateRecievedCommand,
kPMUStateSendLength,
kPMUStateSendBuffer,
kPMUStates
};
#define PMU_BuffSz 8
LOCALVAR ui3b PMU_BuffA[PMU_BuffSz];
LOCALVAR ui3p PMU_p;
LOCALVAR ui3r PMU_rem;
LOCALVAR ui3r PMU_i;
LOCALVAR int PMUState = kPMUStateReadyForCommand;
LOCALVAR ui3r PMU_CurCommand;
LOCALVAR ui3r PMU_SendNext;
LOCALVAR ui3r PMU_BuffL;
LOCALPROC PmuStartSendResult(ui3r ResultCode, ui3r L)
{
PMU_SendNext = ResultCode;
PMU_BuffL = L;
PMUState = kPMUStateSendLength;
}
LOCALVAR ui3b PARAMRAM[128];
LOCALPROC PmuCheckCommandOp(void)
{
switch (PMU_CurCommand) {
case 0x10: /* kPMUpowerCntl - power plane/clock control */
break;
case 0x32: /* kPMUxPramWrite - write extended PRAM byte(s) */
if (kPMUStateRecievingBuffer == PMUState) {
if (0 == PMU_i) {
if (PMU_BuffL >= 2) {
PMU_p = PMU_BuffA;
PMU_rem = 2;
} else {
ReportAbnormalID(0x0E01,
"PMU_BuffL too small for kPMUxPramWrite");
}
} else if (2 == PMU_i) {
if ((PMU_BuffA[1] + 2 == PMU_BuffL)
&& (PMU_BuffA[0] + PMU_BuffA[1] <= 0x80))
{
PMU_p = &PARAMRAM[PMU_BuffA[0]];
PMU_rem = PMU_BuffA[1];
} else {
ReportAbnormalID(0x0E02,
"bad range for kPMUxPramWrite");
}
} else {
ReportAbnormalID(0x0E03,
"Wrong PMU_i for kPMUpramWrite");
}
} else if (kPMUStateRecievedCommand == PMUState) {
/* already done */
}
break;
#if 0
case 0xE2: /* kPMUdownloadStatus - PRAM status */
break;
#endif
case 0xE0: /* kPMUwritePmgrRAM - write to internal PMGR RAM */
break;
case 0x21: /* kPMUpMgrADBoff - turn ADB auto-poll off */
if (kPMUStateRecievedCommand == PMUState) {
if (0 != PMU_BuffL) {
ReportAbnormalID(0x0E04,
"kPMUpMgrADBoff nonzero length");
}
}
break;
case 0xEC: /* kPMUPmgrSelfTest - run the PMGR selftest */
if (kPMUStateRecievedCommand == PMUState) {
PmuStartSendResult(0, 0);
}
break;
case 0x78:
/* kPMUreadINT - get PMGR interrupt data */
case 0x68:
/*
kPMUbatteryRead - read battery/charger level and status
*/
case 0x7F:
/*
kPMUsleepReq - put the system to sleep (sleepSig='MATT')
*/
if (kPMUStateRecievedCommand == PMUState) {
PMU_BuffA[0] = 0;
PmuStartSendResult(0, 1);
}
break;
case 0xE8: /* kPMUreadPmgrRAM - read from internal PMGR RAM */
if (kPMUStateRecievedCommand == PMUState) {
if ((3 == PMU_BuffL)
&& (0 == PMU_BuffA[0])
&& (0xEE == PMU_BuffA[1])
&& (1 == PMU_BuffA[2]))
{
PMU_BuffA[0] = 1 << 5;
PmuStartSendResult(0, 1);
} else {
PMU_BuffA[0] = 0;
PmuStartSendResult(0, 1);
/* ReportAbnormal("Unknown kPMUreadPmgrRAM op"); */
}
}
break;
case 0x3A: /* kPMUxPramRead - read extended PRAM byte(s) */
if (kPMUStateRecievedCommand == PMUState) {
if ((2 == PMU_BuffL)
&& (PMU_BuffA[0] + PMU_BuffA[1] <= 0x80))
{
PMU_p = &PARAMRAM[PMU_BuffA[0]];
PMU_rem = PMU_BuffA[1];
PmuStartSendResult(0, PMU_rem);
} else {
ReportAbnormalID(0x0E05,
"Unknown kPMUxPramRead op");
}
}
break;
case 0x38:
/* kPMUtimeRead - read the time from the clock chip */
if (kPMUStateRecievedCommand == PMUState) {
if (0 == PMU_BuffL) {
PMU_BuffA[0] = 0;
PMU_BuffA[1] = 0;
PMU_BuffA[2] = 0;
PMU_BuffA[3] = 0;
PmuStartSendResult(0, 4);
} else {
ReportAbnormalID(0x0E06, "Unknown kPMUtimeRead op");
}
}
break;
case 0x31:
/*
kPMUpramWrite - write the original 20 bytes of PRAM
(Portable only)
*/
if (kPMUStateRecievedCommand == PMUState) {
if (20 == PMU_BuffL) {
/* done */
} else {
ReportAbnormalID(0x0E07,
"Unknown kPMUpramWrite op");
}
} else if (kPMUStateRecievingBuffer == PMUState) {
if (20 == PMU_BuffL) {
if (0 == PMU_i) {
PMU_p = &PARAMRAM[16];
PMU_rem = 16;
} else if (16 == PMU_i) {
PMU_p = &PARAMRAM[8];
PMU_rem = 4;
} else {
ReportAbnormalID(0x0E08,
"Wrong PMU_i for kPMUpramWrite");
}
}
}
break;
case 0x39:
/*
kPMUpramRead - read the original 20 bytes of PRAM
(Portable only)
*/
if (kPMUStateRecievedCommand == PMUState) {
if (0 == PMU_BuffL) {
PmuStartSendResult(0, 20);
} else {
ReportAbnormalID(0x0E09, "Unknown kPMUpramRead op");
}
} else if (kPMUStateSendBuffer == PMUState) {
#if 0
{
int i;
for (i = 0; i < PMU_BuffSz; ++i) {
PMU_BuffA[i] = 0;
}
}
#endif
if (0 == PMU_i) {
PMU_p = &PARAMRAM[16];
PMU_rem = 16;
} else if (16 == PMU_i) {
PMU_p = &PARAMRAM[8];
PMU_rem = 4;
} else {
ReportAbnormalID(0x0E0A,
"Wrong PMU_i for kPMUpramRead");
}
}
break;
default:
if (kPMUStateRecievedCommand == PMUState) {
ReportAbnormalID(0x0E0B, "Unknown PMU op");
#if dbglog_HAVE
dbglog_writeCStr("Unknown PMU op ");
dbglog_writeHex(PMU_CurCommand);
dbglog_writeReturn();
dbglog_writeCStr("PMU_BuffL = ");
dbglog_writeHex(PMU_BuffL);
dbglog_writeReturn();
if (PMU_BuffL <= PMU_BuffSz) {
int i;
for (i = 0; i < PMU_BuffL; ++i) {
dbglog_writeCStr("PMU_BuffA[");
dbglog_writeNum(i);
dbglog_writeCStr("] = ");
dbglog_writeHex(PMU_BuffA[i]);
dbglog_writeReturn();
}
}
#endif
}
break;
}
}
LOCALPROC LocBuffSetUpNextChunk(void)
{
PMU_p = PMU_BuffA;
PMU_rem = PMU_BuffL - PMU_i;
if (PMU_rem >= PMU_BuffSz) {
PMU_rem = PMU_BuffSz;
}
}
LOCALFUNC ui3r GetPMUbus(void)
{
ui3r v;
v = VIA1_iA7;
v <<= 1;
v |= VIA1_iA6;
v <<= 1;
v |= VIA1_iA5;
v <<= 1;
v |= VIA1_iA4;
v <<= 1;
v |= VIA1_iA3;
v <<= 1;
v |= VIA1_iA2;
v <<= 1;
v |= VIA1_iA1;
v <<= 1;
v |= VIA1_iA0;
return v;
}
LOCALPROC SetPMUbus(ui3r v)
{
VIA1_iA0 = v & 0x01;
v >>= 1;
VIA1_iA1 = v & 0x01;
v >>= 1;
VIA1_iA2 = v & 0x01;
v >>= 1;
VIA1_iA3 = v & 0x01;
v >>= 1;
VIA1_iA4 = v & 0x01;
v >>= 1;
VIA1_iA5 = v & 0x01;
v >>= 1;
VIA1_iA6 = v & 0x01;
v >>= 1;
VIA1_iA7 = v & 0x01;
}
LOCALVAR blnr PMU_Sending = falseblnr;
LOCALPROC PmuCheckCommandCompletion(void)
{
if (PMU_i == PMU_BuffL) {
PMUState = kPMUStateRecievedCommand;
PmuCheckCommandOp();
if ((PMU_CurCommand & 0x08) == 0) {
PMUState = kPMUStateReadyForCommand;
SetPMUbus(0xFF);
} else {
if (PMUState != kPMUStateSendLength) {
PmuStartSendResult(0xFF, 0);
PMUState = kPMUStateSendLength;
}
PMU_i = 0;
PMU_Sending = trueblnr;
ICT_add(kICT_PMU_Task,
20400UL * kCycleScale / 64 * kMyClockMult);
}
}
}
GLOBALPROC PmuToReady_ChangeNtfy(void)
{
if (PMU_Sending) {
PMU_Sending = falseblnr;
ReportAbnormalID(0x0E0C,
"PmuToReady_ChangeNtfy while PMU_Sending");
PmuFromReady = 0;
}
switch (PMUState) {
case kPMUStateReadyForCommand:
if (! PmuToReady) {
PmuFromReady = 0;
} else {
PMU_CurCommand = GetPMUbus();
PMUState = kPMUStateRecievingLength;
PmuFromReady = 1;
}
break;
case kPMUStateRecievingLength:
if (! PmuToReady) {
PmuFromReady = 0;
} else {
PMU_BuffL = GetPMUbus();
PMU_i = 0;
PMU_rem = 0;
PMUState = kPMUStateRecievingBuffer;
PmuCheckCommandCompletion();
PmuFromReady = 1;
}
break;
case kPMUStateRecievingBuffer:
if (! PmuToReady) {
PmuFromReady = 0;
} else {
ui3r v = GetPMUbus();
if (0 == PMU_rem) {
PMU_p = nullpr;
PmuCheckCommandOp();
if (nullpr == PMU_p) {
/* default handler */
LocBuffSetUpNextChunk();
}
}
if (nullpr == PMU_p) {
/* mini vmac bug if ever happens */
ReportAbnormalID(0x0E0D,
"PMU_p null while kPMUStateRecievingBuffer");
}
*PMU_p++ = v;
--PMU_rem;
++PMU_i;
PmuCheckCommandCompletion();
PmuFromReady = 1;
}
break;
case kPMUStateSendLength:
if (! PmuToReady) {
/* receiving */
PmuFromReady = 1;
} else {
PMU_SendNext = PMU_BuffL;
PMUState = kPMUStateSendBuffer;
PMU_Sending = trueblnr;
ICT_add(kICT_PMU_Task,
20400UL * kCycleScale / 64 * kMyClockMult);
}
break;
case kPMUStateSendBuffer:
if (! PmuToReady) {
/* receiving */
PmuFromReady = 1;
} else {
if (PMU_i == PMU_BuffL) {
PMUState = kPMUStateReadyForCommand;
SetPMUbus(0xFF);
} else {
if (0 == PMU_rem) {
PMU_p = nullpr;
PmuCheckCommandOp();
if (nullpr == PMU_p) {
/* default handler */
LocBuffSetUpNextChunk();
}
}
PMU_SendNext = *PMU_p++;
--PMU_rem;
++PMU_i;
PMU_Sending = trueblnr;
ICT_add(kICT_PMU_Task,
20400UL * kCycleScale / 64 * kMyClockMult);
}
}
break;
}
}
GLOBALPROC PMU_DoTask(void)
{
if (PMU_Sending) {
PMU_Sending = falseblnr;
SetPMUbus(PMU_SendNext);
PmuFromReady = 0;
}
}

View File

@ -1,24 +0,0 @@
/*
PMUEMDEV.h
Copyright (C) 2008 Paul C. Pratt
You can redistribute this file and/or modify it under the terms
of version 2 of the GNU General Public License as published by
the Free Software Foundation. You should have received a copy
of the license along with this file; see the file COPYING.
This file is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
license for more details.
*/
#ifdef PMUEMDEV_H
#error "header already included"
#else
#define PMUEMDEV_H
#endif
EXPORTPROC PmuToReady_ChangeNtfy(void);
EXPORTPROC PMU_DoTask(void);

View File

@ -1,562 +0,0 @@
/*
PROGMAIN.c
Copyright (C) 2009 Bernd Schmidt, Philip Cummins, Paul C. Pratt
You can redistribute this file and/or modify it under the terms
of version 2 of the GNU General Public License as published by
the Free Software Foundation. You should have received a copy
of the license along with this file; see the file COPYING.
This file is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
license for more details.
*/
/*
PROGram MAIN.
*/
#ifndef AllFiles
#include "SYSDEPNS.h"
#include "MYOSGLUE.h"
#include "EMCONFIG.h"
#include "GLOBGLUE.h"
#include "M68KITAB.h"
#include "MINEM68K.h"
#include "VIAEMDEV.h"
#if EmVIA2
#include "VIA2EMDV.h"
#endif
#include "IWMEMDEV.h"
#include "SCCEMDEV.h"
#if EmRTC
#include "RTCEMDEV.h"
#endif
#include "ROMEMDEV.h"
#include "SCSIEMDV.h"
#include "SONYEMDV.h"
#include "SCRNEMDV.h"
#if EmVidCard
#include "VIDEMDEV.h"
#endif
#if EmClassicKbrd
#include "KBRDEMDV.h"
#elif EmPMU
#include "PMUEMDEV.h"
#else
#include "ADBEMDEV.h"
#endif
#if EmASC
#include "ASCEMDEV.h"
#else
#if MySoundEnabled && (CurEmMd != kEmMd_PB100)
#include "SNDEMDEV.h"
#endif
#endif
#include "MOUSEMDV.h"
#endif
#include "PROGMAIN.h"
/*
ReportAbnormalID unused 0x1002 - 0x10FF
*/
LOCALPROC EmulatedHardwareZap(void)
{
Memory_Reset();
ICT_Zap();
IWM_Reset();
SCC_Reset();
SCSI_Reset();
VIA1_Zap();
#if EmVIA2
VIA2_Zap();
#endif
Sony_Reset();
Extn_Reset();
m68k_reset();
}
LOCALPROC DoMacReset(void)
{
Sony_EjectAllDisks();
EmulatedHardwareZap();
}
LOCALPROC InterruptReset_Update(void)
{
SetInterruptButton(falseblnr);
/*
in case has been set. so only stays set
for 60th of a second.
*/
if (WantMacInterrupt) {
SetInterruptButton(trueblnr);
WantMacInterrupt = falseblnr;
}
if (WantMacReset) {
DoMacReset();
WantMacReset = falseblnr;
}
}
LOCALPROC SubTickNotify(int SubTick)
{
#if 0
dbglog_writeCStr("ending sub tick ");
dbglog_writeNum(SubTick);
dbglog_writeReturn();
#endif
#if EmASC
ASC_SubTick(SubTick);
#else
#if MySoundEnabled && (CurEmMd != kEmMd_PB100)
MacSound_SubTick(SubTick);
#else
UnusedParam(SubTick);
#endif
#endif
}
#define CyclesScaledPerTick (130240UL * kMyClockMult * kCycleScale)
#define CyclesScaledPerSubTick (CyclesScaledPerTick / kNumSubTicks)
LOCALVAR ui4r SubTickCounter;
LOCALPROC SubTickTaskDo(void)
{
SubTickNotify(SubTickCounter);
++SubTickCounter;
if (SubTickCounter < (kNumSubTicks - 1)) {
/*
final SubTick handled by SubTickTaskEnd,
since CyclesScaledPerSubTick * kNumSubTicks
might not equal CyclesScaledPerTick.
*/
ICT_add(kICT_SubTick, CyclesScaledPerSubTick);
}
}
LOCALPROC SubTickTaskStart(void)
{
SubTickCounter = 0;
ICT_add(kICT_SubTick, CyclesScaledPerSubTick);
}
LOCALPROC SubTickTaskEnd(void)
{
SubTickNotify(kNumSubTicks - 1);
}
LOCALPROC SixtiethSecondNotify(void)
{
#if dbglog_HAVE && 0
dbglog_WriteNote("begin new Sixtieth");
#endif
Mouse_Update();
InterruptReset_Update();
#if EmClassicKbrd
KeyBoard_Update();
#endif
#if EmADB
ADB_Update();
#endif
Sixtieth_PulseNtfy(); /* Vertical Blanking Interrupt */
Sony_Update();
#if EmLocalTalk
LocalTalkTick();
#endif
#if EmRTC
RTC_Interrupt();
#endif
#if EmVidCard
Vid_Update();
#endif
SubTickTaskStart();
}
LOCALPROC SixtiethEndNotify(void)
{
SubTickTaskEnd();
Mouse_EndTickNotify();
Screen_EndTickNotify();
#if dbglog_HAVE && 0
dbglog_WriteNote("end Sixtieth");
#endif
}
LOCALPROC ExtraTimeBeginNotify(void)
{
#if 0
dbglog_writeCStr("begin extra time");
dbglog_writeReturn();
#endif
VIA1_ExtraTimeBegin();
#if EmVIA2
VIA2_ExtraTimeBegin();
#endif
}
LOCALPROC ExtraTimeEndNotify(void)
{
VIA1_ExtraTimeEnd();
#if EmVIA2
VIA2_ExtraTimeEnd();
#endif
#if 0
dbglog_writeCStr("end extra time");
dbglog_writeReturn();
#endif
}
GLOBALPROC EmulationReserveAlloc(void)
{
ReserveAllocOneBlock(&RAM,
kRAM_Size + RAMSafetyMarginFudge, 5, falseblnr);
#if EmVidCard
ReserveAllocOneBlock(&VidROM, kVidROM_Size, 5, falseblnr);
#endif
#if IncludeVidMem
ReserveAllocOneBlock(&VidMem,
kVidMemRAM_Size + RAMSafetyMarginFudge, 5, trueblnr);
#endif
#if SmallGlobals
MINEM68K_ReserveAlloc();
#endif
}
LOCALFUNC blnr InitEmulation(void)
{
#if EmRTC
if (RTC_Init())
#endif
if (ROM_Init())
#if EmVidCard
if (Vid_Init())
#endif
if (AddrSpac_Init())
{
EmulatedHardwareZap();
return trueblnr;
}
return falseblnr;
}
LOCALPROC ICT_DoTask(int taskid)
{
switch (taskid) {
case kICT_SubTick:
SubTickTaskDo();
break;
#if EmClassicKbrd
case kICT_Kybd_ReceiveEndCommand:
DoKybd_ReceiveEndCommand();
break;
case kICT_Kybd_ReceiveCommand:
DoKybd_ReceiveCommand();
break;
#endif
#if EmADB
case kICT_ADB_NewState:
ADB_DoNewState();
break;
#endif
#if EmPMU
case kICT_PMU_Task:
PMU_DoTask();
break;
#endif
case kICT_VIA1_Timer1Check:
VIA1_DoTimer1Check();
break;
case kICT_VIA1_Timer2Check:
VIA1_DoTimer2Check();
break;
#if EmVIA2
case kICT_VIA2_Timer1Check:
VIA2_DoTimer1Check();
break;
case kICT_VIA2_Timer2Check:
VIA2_DoTimer2Check();
break;
#endif
default:
ReportAbnormalID(0x1001, "unknown taskid in ICT_DoTask");
break;
}
}
LOCALPROC ICT_DoCurrentTasks(void)
{
int i = 0;
uimr m = ICTactive;
while (0 != m) {
if (0 != (m & 1)) {
if (i >= kNumICTs) {
/* shouldn't happen */
ICTactive &= ((1 << kNumICTs) - 1);
m = 0;
} else if (ICTwhen[i] == NextiCount) {
ICTactive &= ~ (1 << i);
#ifdef _VIA_Debug
fprintf(stderr, "doing task %d, %d\n", NextiCount, i);
#endif
ICT_DoTask(i);
/*
A Task may set the time of
any task, including itself.
But it cannot set any task
to execute immediately, so
one pass is sufficient.
*/
}
}
++i;
m >>= 1;
}
}
LOCALFUNC ui5b ICT_DoGetNext(ui5b maxn)
{
int i = 0;
uimr m = ICTactive;
ui5b v = maxn;
while (0 != m) {
if (0 != (m & 1)) {
if (i >= kNumICTs) {
/* shouldn't happen */
m = 0;
} else {
ui5b d = ICTwhen[i] - NextiCount;
/* at this point d must be > 0 */
if (d < v) {
#ifdef _VIA_Debug
fprintf(stderr, "coming task %d, %d, %d\n",
NextiCount, i, d);
#endif
v = d;
}
}
}
++i;
m >>= 1;
}
return v;
}
LOCALPROC m68k_go_nCycles_1(ui5b n)
{
ui5b n2;
ui5b StopiCount = NextiCount + n;
do {
ICT_DoCurrentTasks();
n2 = ICT_DoGetNext(n);
#if dbglog_HAVE && 0
dbglog_StartLine();
dbglog_writeCStr("before m68k_go_nCycles, NextiCount:");
dbglog_writeHex(NextiCount);
dbglog_writeCStr(", n2:");
dbglog_writeHex(n2);
dbglog_writeCStr(", n:");
dbglog_writeHex(n);
dbglog_writeReturn();
#endif
NextiCount += n2;
m68k_go_nCycles(n2);
n = StopiCount - NextiCount;
} while (n != 0);
}
LOCALVAR ui5b ExtraSubTicksToDo = 0;
LOCALPROC DoEmulateOneTick(void)
{
#if EnableAutoSlow
{
ui5r NewQuietTime = QuietTime + 1;
if (NewQuietTime > QuietTime) {
/* if not overflow */
QuietTime = NewQuietTime;
}
}
#endif
#if EnableAutoSlow
{
ui5r NewQuietSubTicks = QuietSubTicks + kNumSubTicks;
if (NewQuietSubTicks > QuietSubTicks) {
/* if not overflow */
QuietSubTicks = NewQuietSubTicks;
}
}
#endif
SixtiethSecondNotify();
m68k_go_nCycles_1(CyclesScaledPerTick);
SixtiethEndNotify();
if ((ui3b) -1 == SpeedValue) {
ExtraSubTicksToDo = (ui5b) -1;
} else {
ui5b ExtraAdd = (kNumSubTicks << SpeedValue) - kNumSubTicks;
ui5b ExtraLimit = ExtraAdd << 3;
ExtraSubTicksToDo += ExtraAdd;
if (ExtraSubTicksToDo > ExtraLimit) {
ExtraSubTicksToDo = ExtraLimit;
}
}
}
LOCALFUNC blnr MoreSubTicksToDo(void)
{
blnr v = falseblnr;
if (ExtraTimeNotOver() && (ExtraSubTicksToDo > 0)) {
#if EnableAutoSlow
if ((QuietSubTicks >= 16384)
&& (QuietTime >= 34)
&& ! WantNotAutoSlow)
{
ExtraSubTicksToDo = 0;
} else
#endif
{
v = trueblnr;
}
}
return v;
}
LOCALPROC DoEmulateExtraTime(void)
{
/*
DoEmulateExtraTime is used for
anything over emulation speed
of 1x. It periodically calls
ExtraTimeNotOver and stops
when this returns false (or it
is finished with emulating the
extra time).
*/
if (MoreSubTicksToDo()) {
ExtraTimeBeginNotify();
do {
#if EnableAutoSlow
{
ui5r NewQuietSubTicks = QuietSubTicks + 1;
if (NewQuietSubTicks > QuietSubTicks) {
/* if not overflow */
QuietSubTicks = NewQuietSubTicks;
}
}
#endif
m68k_go_nCycles_1(CyclesScaledPerSubTick);
--ExtraSubTicksToDo;
} while (MoreSubTicksToDo());
ExtraTimeEndNotify();
}
}
LOCALVAR ui5b CurEmulatedTime = 0;
/*
The number of ticks that have been
emulated so far.
That is, the number of times
"DoEmulateOneTick" has been called.
*/
LOCALPROC RunEmulatedTicksToTrueTime(void)
{
/*
The general idea is to call DoEmulateOneTick
once per tick.
But if emulation is lagging, we'll try to
catch up by calling DoEmulateOneTick multiple
times, unless we're too far behind, in
which case we forget it.
If emulating one tick takes longer than
a tick we don't want to sit here
forever. So the maximum number of calls
to DoEmulateOneTick is determined at
the beginning, rather than just
calling DoEmulateOneTick until
CurEmulatedTime >= TrueEmulatedTime.
*/
si3b n = OnTrueTime - CurEmulatedTime;
if (n > 0) {
DoEmulateOneTick();
++CurEmulatedTime;
DoneWithDrawingForTick();
if (n > 8) {
/* emulation not fast enough */
n = 8;
CurEmulatedTime = OnTrueTime - n;
}
if (ExtraTimeNotOver() && (--n > 0)) {
/* lagging, catch up */
EmVideoDisable = trueblnr;
do {
DoEmulateOneTick();
++CurEmulatedTime;
} while (ExtraTimeNotOver()
&& (--n > 0));
EmVideoDisable = falseblnr;
}
EmLagTime = n;
}
}
LOCALPROC MainEventLoop(void)
{
for (; ; ) {
WaitForNextTick();
if (ForceMacOff) {
return;
}
RunEmulatedTicksToTrueTime();
DoEmulateExtraTime();
}
}
GLOBALPROC ProgramMain(void)
{
if (InitEmulation())
{
MainEventLoop();
}
}

View File

@ -1,25 +0,0 @@
/*
PROGMAIN.h
Copyright (C) 2009 Philip Cummins, Richard F. Bannister,
Paul C. Pratt
You can redistribute this file and/or modify it under the terms
of version 2 of the GNU General Public License as published by
the Free Software Foundation. You should have received a copy
of the license along with this file; see the file COPYING.
This file is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
license for more details.
*/
#ifdef PROGMAIN_H
#error "header already included"
#else
#define PROGMAIN_H
#endif
EXPORTPROC EmulationReserveAlloc(void);
EXPORTPROC ProgramMain(void);

View File

@ -1,332 +0,0 @@
/*
ROMEMDEV.c
Copyright (C) 2007 Philip Cummins, Paul C. Pratt
You can redistribute this file and/or modify it under the terms
of version 2 of the GNU General Public License as published by
the Free Software Foundation. You should have received a copy
of the license along with this file; see the file COPYING.
This file is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
license for more details.
*/
/*
Read Only Memory EMulated DEVice
Checks the header of the loaded ROM image, and then patches
the ROM image.
This code descended from "ROM.c" in vMac by Philip Cummins.
Support for "Twiggy" Mac by Mathew Hybler.
*/
#ifndef AllFiles
#include "SYSDEPNS.h"
#include "MYOSGLUE.h"
#include "ENDIANAC.h"
#include "EMCONFIG.h"
#include "GLOBGLUE.h"
#endif
#include "ROMEMDEV.h"
#define UseSonyPatch \
((CurEmMd <= kEmMd_Classic) || (CurEmMd == kEmMd_II) \
|| (CurEmMd == kEmMd_IIx))
#ifndef UseLargeScreenHack
#define UseLargeScreenHack 0
#endif
#if UseSonyPatch
LOCALVAR const ui3b sony_driver[] = {
/*
Replacement for .Sony driver
68k machine code, compiled from mydriver.a
*/
0x4F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xEE, 0x00, 0x18, 0x00, 0x24, 0x00, 0x4A,
0x00, 0x8A, 0x05, 0x2E, 0x53, 0x6F, 0x6E, 0x79,
0x48, 0xE7, 0x00, 0xC0, 0x55, 0x4F, 0x3F, 0x3C,
0x00, 0x01, 0x60, 0x30, 0x48, 0xE7, 0x00, 0xC0,
0x55, 0x4F, 0x3F, 0x3C, 0x00, 0x02, 0x41, 0xFA,
0x01, 0x84, 0x2F, 0x18, 0x20, 0x50, 0x20, 0x8F,
0x5C, 0x4F, 0x30, 0x1F, 0x4C, 0xDF, 0x03, 0x00,
0x0C, 0x68, 0x00, 0x01, 0x00, 0x1A, 0x66, 0x1E,
0x4E, 0x75, 0x48, 0xE7, 0x00, 0xC0, 0x55, 0x4F,
0x3F, 0x3C, 0x00, 0x03, 0x41, 0xFA, 0x01, 0x5E,
0x2F, 0x18, 0x20, 0x50, 0x20, 0x8F, 0x5C, 0x4F,
0x30, 0x1F, 0x4C, 0xDF, 0x03, 0x00, 0x32, 0x28,
0x00, 0x06, 0x08, 0x01, 0x00, 0x09, 0x67, 0x0C,
0x4A, 0x40, 0x6F, 0x02, 0x42, 0x40, 0x31, 0x40,
0x00, 0x10, 0x4E, 0x75, 0x4A, 0x40, 0x6F, 0x04,
0x42, 0x40, 0x4E, 0x75, 0x2F, 0x38, 0x08, 0xFC,
0x4E, 0x75, 0x48, 0xE7, 0x00, 0xC0, 0x55, 0x4F,
0x3F, 0x3C, 0x00, 0x04, 0x41, 0xFA, 0x01, 0x1E,
0x2F, 0x18, 0x20, 0x50, 0x20, 0x8F, 0x5C, 0x4F,
0x30, 0x1F, 0x4C, 0xDF, 0x03, 0x00, 0x4E, 0x75,
0x48, 0xE7, 0xE0, 0xC0, 0x20, 0x2F, 0x00, 0x14,
0x59, 0x4F, 0x2F, 0x00, 0x55, 0x4F, 0x3F, 0x3C,
0x00, 0x08, 0x41, 0xFA, 0x00, 0xF8, 0x2F, 0x18,
0x20, 0x50, 0x20, 0x8F, 0x5C, 0x4F, 0x32, 0x1F,
0x58, 0x4F, 0x20, 0x1F, 0x4A, 0x41, 0x66, 0x06,
0x30, 0x7C, 0x00, 0x07, 0xA0, 0x2F, 0x4C, 0xDF,
0x03, 0x07, 0x58, 0x4F, 0x4E, 0x73, 0x21, 0x40,
0x00, 0x06, 0x43, 0xF8, 0x03, 0x08, 0x4E, 0xF9,
0x00, 0x40, 0x0B, 0x20, 0x4E, 0x75, 0x48, 0xE7,
0x1F, 0x10, 0x48, 0xE7, 0x00, 0xC0, 0x5D, 0x4F,
0x3F, 0x3C, 0x00, 0x05, 0x41, 0xFA, 0x00, 0xB6,
0x2F, 0x18, 0x20, 0x50, 0x20, 0x8F, 0x5C, 0x4F,
0x30, 0x1F, 0x2E, 0x1F, 0x0C, 0x40, 0xFF, 0xCF,
0x66, 0x06, 0x42, 0x40, 0x60, 0x00, 0x00, 0x8E,
0x4A, 0x40, 0x66, 0x00, 0x00, 0x88, 0x20, 0x07,
0xA7, 0x1E, 0x26, 0x48, 0x20, 0x0B, 0x67, 0x00,
0x00, 0x86, 0x9E, 0xFC, 0x00, 0x10, 0x2F, 0x0B,
0x2F, 0x07, 0x55, 0x4F, 0x3F, 0x3C, 0x00, 0x06,
0x41, 0xFA, 0x00, 0x7A, 0x2F, 0x18, 0x20, 0x50,
0x20, 0x8F, 0x5C, 0x4F, 0x30, 0x1F, 0x50, 0x4F,
0x2E, 0x1F, 0x76, 0x00, 0x36, 0x1F, 0x38, 0x1F,
0x3C, 0x1F, 0x3A, 0x1F, 0x26, 0x5F, 0x4A, 0x40,
0x66, 0x4A, 0x20, 0x0B, 0x67, 0x0E, 0x41, 0xFA,
0xFF, 0x8C, 0x27, 0x48, 0x00, 0x06, 0x20, 0x4B,
0xA0, 0x58, 0x60, 0x1A, 0x41, 0xFA, 0xFF, 0x70,
0x30, 0x3C, 0xA0, 0x4E, 0xA0, 0x47, 0x60, 0x0E,
0x20, 0x47, 0x30, 0x06, 0x48, 0x40, 0x30, 0x05,
0xA0, 0x4E, 0xDE, 0x83, 0x52, 0x46, 0x51, 0xCC,
0xFF, 0xF0, 0x48, 0x7A, 0xFF, 0x1C, 0x55, 0x4F,
0x3F, 0x3C, 0x00, 0x07, 0x41, 0xFA, 0x00, 0x1E,
0x2F, 0x18, 0x20, 0x50, 0x20, 0x8F, 0x5C, 0x4F,
0x30, 0x1F, 0x58, 0x4F, 0x4C, 0xDF, 0x03, 0x00,
0x4C, 0xDF, 0x08, 0xF8, 0x4E, 0x75, 0x30, 0x3C,
0xFF, 0xFF, 0x60, 0xF0
};
#endif
#if UseSonyPatch
LOCALVAR const ui3b my_disk_icon[] = {
0x7F, 0xFF, 0xFF, 0xF0,
0x81, 0x00, 0x01, 0x08,
0x81, 0x00, 0x71, 0x04,
0x81, 0x00, 0x89, 0x02,
0x81, 0x00, 0x89, 0x01,
0x81, 0x00, 0x89, 0x01,
0x81, 0x00, 0x89, 0x01,
0x81, 0x00, 0x89, 0x01,
0x81, 0x00, 0x89, 0x01,
0x81, 0x00, 0x71, 0x01,
0x81, 0x00, 0x01, 0x01,
0x80, 0xFF, 0xFE, 0x01,
0x80, 0x00, 0x00, 0x01,
0x80, 0x00, 0x00, 0x01,
0x80, 0x00, 0x00, 0x01,
0x80, 0x00, 0x00, 0x01,
0x83, 0xFF, 0xFF, 0xC1,
0x84, 0x00, 0x00, 0x21,
0x84, 0x00, 0x00, 0x21,
0x84, 0x00, 0x00, 0x21,
0x84, 0x00, 0x00, 0x21,
0x84, 0x00, 0x00, 0x21,
0x84, 0x06, 0x30, 0x21,
0x84, 0x06, 0x60, 0x21,
0x84, 0x06, 0xC0, 0x21,
0x84, 0x07, 0x80, 0x21,
0x84, 0x07, 0x00, 0x21,
0x84, 0x06, 0x00, 0x21,
0x84, 0x00, 0x00, 0x21,
0x84, 0x00, 0x00, 0x21,
0x84, 0x00, 0x00, 0x21,
0x7F, 0xFF, 0xFF, 0xFE,
/* mask */
0x3F, 0xFF, 0xFF, 0xF0,
0x7F, 0xFF, 0xFF, 0xF0,
0xFF, 0xFF, 0xFF, 0xFC,
0xFF, 0xFF, 0xFF, 0xFC,
0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF,
0x7F, 0xFF, 0xFF, 0xFC,
0x3F, 0xFF, 0xFF, 0xFC,
/* empty pascal string */
0x00, 0x00,
};
#endif
#if CurEmMd <= kEmMd_Twig43
#define Sony_DriverBase 0x1836
#elif CurEmMd <= kEmMd_Twiggy
#define Sony_DriverBase 0x16E4
#elif CurEmMd <= kEmMd_128K
#define Sony_DriverBase 0x1690
#elif CurEmMd <= kEmMd_Plus
#define Sony_DriverBase 0x17D30
#elif CurEmMd <= kEmMd_Classic
#define Sony_DriverBase 0x34680
#elif (CurEmMd == kEmMd_II) || (CurEmMd == kEmMd_IIx)
#define Sony_DriverBase 0x2D72C
#endif
#define kVidMem_Base 0x00540000
#if UseSonyPatch
LOCALPROC Sony_Install(void)
{
ui3p pto = Sony_DriverBase + ROM;
MyMoveBytes((anyp)sony_driver, (anyp)pto, sizeof(sony_driver));
#if CurEmMd <= kEmMd_Twiggy
do_put_mem_long(pto + 0x14, 0x4469736B);
/* 'Disk' instead of 'Sony' */
#if CurEmMd <= kEmMd_Twig43
do_put_mem_word(pto + 0xEA, 0x0C8A);
#else
do_put_mem_word(pto + 0xEA, 0x0B74);
#endif
#endif
pto += sizeof(sony_driver);
do_put_mem_word(pto, kcom_callcheck);
pto += 2;
do_put_mem_word(pto, kExtnSony);
pto += 2;
do_put_mem_long(pto, kExtn_Block_Base); /* pokeaddr */
pto += 4;
my_disk_icon_addr = (pto - ROM) + kROM_Base;
MyMoveBytes((anyp)my_disk_icon, (anyp)pto, sizeof(my_disk_icon));
pto += sizeof(my_disk_icon);
#if UseLargeScreenHack
{
ui3p patchp = pto;
#include "SCRNHACK.h"
}
#endif
(void) pto; /* avoid warning about unused */
}
#endif
#ifndef DisableRomCheck
#define DisableRomCheck 1
#endif
#ifndef DisableRamTest
#define DisableRamTest 1
#endif
#ifdef CurAltHappyMac
#include "HPMCHACK.h"
#endif
#ifdef ln2mtb
LOCALPROC ROMscrambleForMTB(void)
{
si5r j;
ui3p p = ROM;
ui3p p2 = ROM + (1 << ln2mtb);
for (j = kROM_Size / (1 << ln2mtb) / 2; --j >= 0; ) {
si5r i;
for (i = (1 << ln2mtb); --i >= 0; ) {
ui3b t0 = *p;
ui3b t1 = *p2;
*p++ = t1;
*p2++ = t0;
}
p += (1 << ln2mtb);
p2 += (1 << ln2mtb);
}
}
#endif
GLOBALFUNC blnr ROM_Init(void)
{
#if DisableRomCheck
/* skip the rom checksum */
#if CurEmMd <= kEmMd_Twig43
/* no checksum code */
#elif CurEmMd <= kEmMd_Twiggy
do_put_mem_word(0x136 + ROM, 0x6004);
#elif CurEmMd <= kEmMd_128K
do_put_mem_word(0xE2 + ROM, 0x6004);
#elif CurEmMd <= kEmMd_Plus
do_put_mem_word(0xD7A + ROM, 0x6022);
#elif CurEmMd <= kEmMd_Classic
do_put_mem_word(0x1C68 + ROM, 0x6008);
#elif (CurEmMd == kEmMd_II) || (CurEmMd == kEmMd_IIx)
do_put_mem_word(0x2AB0 + ROM, 0x6008);
#endif
#endif /* DisableRomCheck */
#if DisableRamTest
#if CurEmMd <= kEmMd_128K
#elif CurEmMd <= kEmMd_Plus
do_put_mem_word(3752 + ROM, 0x4E71);
/* shorten the ram check read */
do_put_mem_word(3728 + ROM, 0x4E71);
/* shorten the ram check write */
#elif CurEmMd <= kEmMd_Classic
do_put_mem_word(134 + ROM, 0x6002);
do_put_mem_word(286 + ROM, 0x6002);
#elif (CurEmMd == kEmMd_II) || (CurEmMd == kEmMd_IIx)
do_put_mem_word(0xEE + ROM, 0x6002);
do_put_mem_word(0x1AA + ROM, 0x6002);
#endif
#endif /* DisableRamTest */
#ifdef CurAltHappyMac
PatchHappyMac();
#endif
/* do_put_mem_word(862 + ROM, 0x4E71); */ /* shorten set memory */
#if UseSonyPatch
Sony_Install();
#endif
#ifdef ln2mtb
ROMscrambleForMTB();
#endif
return trueblnr;
}

View File

@ -1,23 +0,0 @@
/*
ROMEMDEV.h
Copyright (C) 2003 Philip Cummins, Paul C. Pratt
You can redistribute this file and/or modify it under the terms
of version 2 of the GNU General Public License as published by
the Free Software Foundation. You should have received a copy
of the license along with this file; see the file COPYING.
This file is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
license for more details.
*/
#ifdef ROMEMDEV_H
#error "header already included"
#else
#define ROMEMDEV_H
#endif
EXPORTFUNC blnr ROM_Init(void);

View File

@ -1,509 +0,0 @@
/*
RTCEMDEV.c
Copyright (C) 2003 Philip Cummins, Paul C. Pratt
You can redistribute this file and/or modify it under the terms
of version 2 of the GNU General Public License as published by
the Free Software Foundation. You should have received a copy
of the license along with this file; see the file COPYING.
This file is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
license for more details.
*/
/*
Real Time Clock EMulated DEVice
Emulates the RTC found in the Mac Plus.
This code adapted from "RTC.c" in vMac by Philip Cummins.
*/
#ifndef AllFiles
#include "SYSDEPNS.h"
#include "MYOSGLUE.h"
#include "ENDIANAC.h"
#include "EMCONFIG.h"
#include "GLOBGLUE.h"
#endif
/* define _RTC_Debug */
#ifdef _RTC_Debug
#include <stdio.h>
#endif
#include "RTCEMDEV.h"
#define HaveXPRAM (CurEmMd >= kEmMd_Plus)
/*
ReportAbnormalID unused 0x0805 - 0x08FF
*/
#if HaveXPRAM
#define PARAMRAMSize 256
#else
#define PARAMRAMSize 20
#endif
#if HaveXPRAM
#define Group1Base 0x10
#define Group2Base 0x08
#else
#define Group1Base 0x00
#define Group2Base 0x10
#endif
typedef struct
{
/* RTC VIA Flags */
ui3b WrProtect;
ui3b DataOut;
ui3b DataNextOut;
/* RTC Data */
ui3b ShiftData;
ui3b Counter;
ui3b Mode;
ui3b SavedCmd;
#if HaveXPRAM
ui3b Sector;
#endif
/* RTC Registers */
ui3b Seconds_1[4];
ui3b PARAMRAM[PARAMRAMSize];
} RTC_Ty;
LOCALVAR RTC_Ty RTC;
/* RTC Functions */
LOCALVAR ui5b LastRealDate;
#ifndef RTCinitPRAM
#define RTCinitPRAM 1
#endif
#ifndef TrackSpeed /* in 0..4 */
#define TrackSpeed 0
#endif
#ifndef AlarmOn /* in 0..1 */
#define AlarmOn 0
#endif
#ifndef DiskCacheSz /* in 1,2,3,4,6,8,12 */
/* actual cache size is DiskCacheSz * 32k */
#if (CurEmMd == kEmMd_II) || (CurEmMd == kEmMd_IIx)
#define DiskCacheSz 1
#else
#define DiskCacheSz 4
#endif
#endif
#ifndef StartUpDisk /* in 0..1 */
#define StartUpDisk 0
#endif
#ifndef DiskCacheOn /* in 0..1 */
#define DiskCacheOn 0
#endif
#ifndef MouseScalingOn /* in 0..1 */
#define MouseScalingOn 0
#endif
#define prb_fontHi 0
#define prb_fontLo 2
#define prb_kbdPrintHi (AutoKeyRate + (AutoKeyThresh << 4))
#define prb_kbdPrintLo 0
#define prb_volClickHi (SpeakerVol + (TrackSpeed << 3) + (AlarmOn << 7))
#define prb_volClickLo (CaretBlinkTime + (DoubleClickTime << 4))
#define prb_miscHi DiskCacheSz
#define prb_miscLo \
((MenuBlink << 2) + (StartUpDisk << 4) \
+ (DiskCacheOn << 5) + (MouseScalingOn << 6))
#if dbglog_HAVE && 0
EXPORTPROC DumpRTC(void);
GLOBALPROC DumpRTC(void)
{
int Counter;
dbglog_writeln("RTC Parameter RAM");
for (Counter = 0; Counter < PARAMRAMSize; Counter++) {
dbglog_writeNum(Counter);
dbglog_writeCStr(", ");
dbglog_writeHex(RTC.PARAMRAM[Counter]);
dbglog_writeReturn();
}
}
#endif
GLOBALFUNC blnr RTC_Init(void)
{
int Counter;
ui5b secs;
RTC.Mode = RTC.ShiftData = RTC.Counter = 0;
RTC.DataOut = RTC.DataNextOut = 0;
RTC.WrProtect = falseblnr;
secs = CurMacDateInSeconds;
LastRealDate = secs;
RTC.Seconds_1[0] = secs & 0xFF;
RTC.Seconds_1[1] = (secs & 0xFF00) >> 8;
RTC.Seconds_1[2] = (secs & 0xFF0000) >> 16;
RTC.Seconds_1[3] = (secs & 0xFF000000) >> 24;
for (Counter = 0; Counter < PARAMRAMSize; Counter++) {
RTC.PARAMRAM[Counter] = 0;
}
#if RTCinitPRAM
RTC.PARAMRAM[0 + Group1Base] = 168; /* valid */
#if (CurEmMd == kEmMd_II) || (CurEmMd == kEmMd_IIx)
RTC.PARAMRAM[2 + Group1Base] = 1;
/* node id hint for printer port (AppleTalk) */
#endif
RTC.PARAMRAM[3 + Group1Base] = 34;
/*
serial ports config bits: 4-7 A, 0-3 B
useFree 0 Use undefined
useATalk 1 AppleTalk
useAsync 2 Async
useExtClk 3 externally clocked
*/
RTC.PARAMRAM[4 + Group1Base] = 204; /* portA, high */
RTC.PARAMRAM[5 + Group1Base] = 10; /* portA, low */
RTC.PARAMRAM[6 + Group1Base] = 204; /* portB, high */
RTC.PARAMRAM[7 + Group1Base] = 10; /* portB, low */
RTC.PARAMRAM[13 + Group1Base] = prb_fontLo;
RTC.PARAMRAM[14 + Group1Base] = prb_kbdPrintHi;
#if (CurEmMd == kEmMd_II) || (CurEmMd == kEmMd_IIx)
RTC.PARAMRAM[15 + Group1Base] = 1;
/*
printer, if any, connected to modem port
because printer port used for appletalk.
*/
#endif
#if prb_volClickHi != 0
RTC.PARAMRAM[0 + Group2Base] = prb_volClickHi;
#endif
RTC.PARAMRAM[1 + Group2Base] = prb_volClickLo;
RTC.PARAMRAM[2 + Group2Base] = prb_miscHi;
RTC.PARAMRAM[3 + Group2Base] = prb_miscLo
#if 0 != vMacScreenDepth
| 0x80
#endif
;
#if HaveXPRAM /* extended parameter ram initialized */
#if (CurEmMd == kEmMd_II) || (CurEmMd == kEmMd_IIx)
RTC.PARAMRAM[12] = 0x4e;
RTC.PARAMRAM[13] = 0x75;
RTC.PARAMRAM[14] = 0x4d;
RTC.PARAMRAM[15] = 0x63;
#else
RTC.PARAMRAM[12] = 0x42;
RTC.PARAMRAM[13] = 0x75;
RTC.PARAMRAM[14] = 0x67;
RTC.PARAMRAM[15] = 0x73;
#endif
#endif
#if ((CurEmMd >= kEmMd_SE) && (CurEmMd <= kEmMd_Classic)) \
|| (CurEmMd == kEmMd_II) || (CurEmMd == kEmMd_IIx)
RTC.PARAMRAM[0x01] = 0x80;
RTC.PARAMRAM[0x02] = 0x4F;
#endif
#if (CurEmMd == kEmMd_II) || (CurEmMd == kEmMd_IIx)
RTC.PARAMRAM[0x03] = 0x48;
/* video board id */
RTC.PARAMRAM[0x46] = /* 0x42 */ 0x76; /* 'v' */
RTC.PARAMRAM[0x47] = /* 0x32 */ 0x4D; /* 'M' */
/* mode */
#if (0 == vMacScreenDepth) || (vMacScreenDepth >= 4)
RTC.PARAMRAM[0x48] = 0x80;
#else
RTC.PARAMRAM[0x48] = 0x81;
/* 0x81 doesn't quite work right at boot */
/* no, it seems to work now (?) */
/* but only if depth <= 3 */
#endif
#endif
#if (CurEmMd == kEmMd_II) || (CurEmMd == kEmMd_IIx)
RTC.PARAMRAM[0x77] = 0x01;
#endif
#if ((CurEmMd >= kEmMd_SE) && (CurEmMd <= kEmMd_Classic)) \
|| (CurEmMd == kEmMd_II) || (CurEmMd == kEmMd_IIx)
/* start up disk (encoded how?) */
RTC.PARAMRAM[0x78] = 0x00;
RTC.PARAMRAM[0x79] = 0x01;
RTC.PARAMRAM[0x7A] = 0xFF;
RTC.PARAMRAM[0x7B] = 0xFE;
#endif
#if (CurEmMd == kEmMd_II) || (CurEmMd == kEmMd_IIx)
RTC.PARAMRAM[0x80] = 0x09;
RTC.PARAMRAM[0x81] = 0x80;
#endif
#if (CurEmMd == kEmMd_II) || (CurEmMd == kEmMd_IIx)
#define pr_HilColRedHi (pr_HilColRed >> 8)
#if 0 != pr_HilColRedHi
RTC.PARAMRAM[0x82] = pr_HilColRedHi;
#endif
#define pr_HilColRedLo (pr_HilColRed & 0xFF)
#if 0 != pr_HilColRedLo
RTC.PARAMRAM[0x83] = pr_HilColRedLo;
#endif
#define pr_HilColGreenHi (pr_HilColGreen >> 8)
#if 0 != pr_HilColGreenHi
RTC.PARAMRAM[0x84] = pr_HilColGreenHi;
#endif
#define pr_HilColGreenLo (pr_HilColGreen & 0xFF)
#if 0 != pr_HilColGreenLo
RTC.PARAMRAM[0x85] = pr_HilColGreenLo;
#endif
#define pr_HilColBlueHi (pr_HilColBlue >> 8)
#if 0 != pr_HilColBlueHi
RTC.PARAMRAM[0x86] = pr_HilColBlueHi;
#endif
#define pr_HilColBlueLo (pr_HilColBlue & 0xFF)
#if 0 != pr_HilColBlueLo
RTC.PARAMRAM[0x87] = pr_HilColBlueLo;
#endif
#endif /* (CurEmMd == kEmMd_II) || (CurEmMd == kEmMd_IIx) */
#if HaveXPRAM /* extended parameter ram initialized */
do_put_mem_long(&RTC.PARAMRAM[0xE4], CurMacLatitude);
do_put_mem_long(&RTC.PARAMRAM[0xE8], CurMacLongitude);
do_put_mem_long(&RTC.PARAMRAM[0xEC], CurMacDelta);
#endif
#endif /* RTCinitPRAM */
return trueblnr;
}
#ifdef RTC_OneSecond_PulseNtfy
IMPORTPROC RTC_OneSecond_PulseNtfy(void);
#endif
GLOBALPROC RTC_Interrupt(void)
{
ui5b Seconds = 0;
ui5b NewRealDate = CurMacDateInSeconds;
ui5b DateDelta = NewRealDate - LastRealDate;
if (DateDelta != 0) {
Seconds = (RTC.Seconds_1[3] << 24) + (RTC.Seconds_1[2] << 16)
+ (RTC.Seconds_1[1] << 8) + RTC.Seconds_1[0];
Seconds += DateDelta;
RTC.Seconds_1[0] = Seconds & 0xFF;
RTC.Seconds_1[1] = (Seconds & 0xFF00) >> 8;
RTC.Seconds_1[2] = (Seconds & 0xFF0000) >> 16;
RTC.Seconds_1[3] = (Seconds & 0xFF000000) >> 24;
LastRealDate = NewRealDate;
#ifdef RTC_OneSecond_PulseNtfy
RTC_OneSecond_PulseNtfy();
#endif
}
}
LOCALFUNC ui3b RTC_Access_PRAM_Reg(ui3b Data, blnr WriteReg, ui3b t)
{
if (WriteReg) {
if (! RTC.WrProtect) {
RTC.PARAMRAM[t] = Data;
#ifdef _RTC_Debug
printf("Writing Address %2x, Data %2x\n", t, Data);
#endif
}
} else {
Data = RTC.PARAMRAM[t];
}
return Data;
}
LOCALFUNC ui3b RTC_Access_Reg(ui3b Data, blnr WriteReg, ui3b TheCmd)
{
ui3b t = (TheCmd & 0x7C) >> 2;
if (t < 8) {
if (WriteReg) {
if (! RTC.WrProtect) {
RTC.Seconds_1[t & 0x03] = Data;
}
} else {
Data = RTC.Seconds_1[t & 0x03];
}
} else if (t < 12) {
Data = RTC_Access_PRAM_Reg(Data, WriteReg,
(t & 0x03) + Group2Base);
} else if (t < 16) {
if (WriteReg) {
switch (t) {
case 12 :
break; /* Test Write, do nothing */
case 13 :
RTC.WrProtect = (Data & 0x80) != 0;
break; /* Write_Protect Register */
default :
ReportAbnormalID(0x0801, "Write RTC Reg unknown");
break;
}
} else {
ReportAbnormalID(0x0802, "Read RTC Reg unknown");
}
} else {
Data = RTC_Access_PRAM_Reg(Data, WriteReg,
(t & 0x0F) + Group1Base);
}
return Data;
}
LOCALPROC RTC_DoCmd(void)
{
switch (RTC.Mode) {
case 0: /* This Byte is a RTC Command */
#if HaveXPRAM
if ((RTC.ShiftData & 0x78) == 0x38) { /* Extended Command */
RTC.SavedCmd = RTC.ShiftData;
RTC.Mode = 2;
#ifdef _RTC_Debug
printf("Extended command %2x\n", RTC.ShiftData);
#endif
} else
#endif
{
if ((RTC.ShiftData & 0x80) != 0x00) { /* Read Command */
RTC.ShiftData =
RTC_Access_Reg(0, falseblnr, RTC.ShiftData);
RTC.DataNextOut = 1;
} else { /* Write Command */
RTC.SavedCmd = RTC.ShiftData;
RTC.Mode = 1;
}
}
break;
case 1: /* This Byte is data for RTC Write */
(void) RTC_Access_Reg(RTC.ShiftData,
trueblnr, RTC.SavedCmd);
RTC.Mode = 0;
break;
#if HaveXPRAM
case 2: /* This Byte is rest of Extended RTC command address */
#ifdef _RTC_Debug
printf("Mode 2 %2x\n", RTC.ShiftData);
#endif
RTC.Sector = ((RTC.SavedCmd & 0x07) << 5)
| ((RTC.ShiftData & 0x7C) >> 2);
if ((RTC.SavedCmd & 0x80) != 0x00) { /* Read Command */
RTC.ShiftData = RTC.PARAMRAM[RTC.Sector];
RTC.DataNextOut = 1;
RTC.Mode = 0;
#ifdef _RTC_Debug
printf("Reading X Address %2x, Data %2x\n",
RTC.Sector, RTC.ShiftData);
#endif
} else {
RTC.Mode = 3;
#ifdef _RTC_Debug
printf("Writing X Address %2x\n", RTC.Sector);
#endif
}
break;
case 3: /* This Byte is data for an Extended RTC Write */
(void) RTC_Access_PRAM_Reg(RTC.ShiftData,
trueblnr, RTC.Sector);
RTC.Mode = 0;
break;
#endif
}
}
GLOBALPROC RTCunEnabled_ChangeNtfy(void)
{
if (RTCunEnabled) {
/* abort anything going on */
if (RTC.Counter != 0) {
#ifdef _RTC_Debug
printf("aborting, %2x\n", RTC.Counter);
#endif
ReportAbnormalID(0x0803, "RTC aborting");
}
RTC.Mode = 0;
RTC.DataOut = 0;
RTC.DataNextOut = 0;
RTC.ShiftData = 0;
RTC.Counter = 0;
}
}
GLOBALPROC RTCclock_ChangeNtfy(void)
{
if (! RTCunEnabled) {
if (RTCclock) {
RTC.DataOut = RTC.DataNextOut;
RTC.Counter = (RTC.Counter - 1) & 0x07;
if (RTC.DataOut) {
RTCdataLine = ((RTC.ShiftData >> RTC.Counter) & 0x01);
/*
should notify VIA if changed, so can check
data direction
*/
if (RTC.Counter == 0) {
RTC.DataNextOut = 0;
}
} else {
RTC.ShiftData = (RTC.ShiftData << 1) | RTCdataLine;
if (RTC.Counter == 0) {
RTC_DoCmd();
}
}
}
}
}
GLOBALPROC RTCdataLine_ChangeNtfy(void)
{
#if dbglog_HAVE
if (RTC.DataOut) {
if (! RTC.DataNextOut) {
/*
ignore. The ROM doesn't read from the RTC the
way described in the Hardware Reference.
It reads the data after setting the clock to
one instead of before, and then immediately
changes the VIA direction. So the RTC
has no way of knowing to stop driving the
data line, which certainly can't really be
correct.
*/
} else {
ReportAbnormalID(0x0804,
"write RTC Data unexpected direction");
}
}
#endif
}

View File

@ -1,28 +0,0 @@
/*
RTCEMDEV.h
Copyright (C) 2003 Philip Cummins, Paul C. Pratt
You can redistribute this file and/or modify it under the terms
of version 2 of the GNU General Public License as published by
the Free Software Foundation. You should have received a copy
of the license along with this file; see the file COPYING.
This file is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
license for more details.
*/
#ifdef RTCEMDEV_H
#error "header already included"
#else
#define RTCEMDEV_H
#endif
EXPORTFUNC blnr RTC_Init(void);
EXPORTPROC RTC_Interrupt(void);
EXPORTPROC RTCunEnabled_ChangeNtfy(void);
EXPORTPROC RTCclock_ChangeNtfy(void);
EXPORTPROC RTCdataLine_ChangeNtfy(void);

File diff suppressed because it is too large Load Diff

View File

@ -1,32 +0,0 @@
/*
SCCEMDEV.h
Copyright (C) 2004 Philip Cummins, Paul C. Pratt
You can redistribute this file and/or modify it under the terms
of version 2 of the GNU General Public License as published by
the Free Software Foundation. You should have received a copy
of the license along with this file; see the file COPYING.
This file is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
license for more details.
*/
#ifdef SCCEMDEV_H
#error "header already included"
#else
#define SCCEMDEV_H
#endif
EXPORTPROC SCC_Reset(void);
EXPORTFUNC ui5b SCC_Access(ui5b Data, blnr WriteMem, CPTR addr);
EXPORTFUNC blnr SCC_InterruptsEnabled(void);
#if EmLocalTalk
EXPORTPROC LocalTalkTick(void);
EXPORTFUNC int InitLocalTalk(void);
#endif

View File

@ -1,59 +0,0 @@
/*
SCRNEMDV.c
Copyright (C) 2006 Philip Cummins, Richard F. Bannister,
Paul C. Pratt
You can redistribute this file and/or modify it under the terms
of version 2 of the GNU General Public License as published by
the Free Software Foundation. You should have received a copy
of the license along with this file; see the file COPYING.
This file is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
license for more details.
*/
/*
SCReeN EMulated DeVice
Emulation of the screen in the Mac Plus.
This code descended from "Screen-MacOS.c" in Richard F. Bannister's
Macintosh port of vMac, by Philip Cummins.
*/
#ifndef AllFiles
#include "SYSDEPNS.h"
#include "MYOSGLUE.h"
#include "ENDIANAC.h"
#include "EMCONFIG.h"
#include "GLOBGLUE.h"
#endif
#include "SCRNEMDV.h"
#if ! IncludeVidMem
#define kMain_Offset 0x5900
#define kAlternate_Offset 0xD900
#define kMain_Buffer (kRAM_Size - kMain_Offset)
#define kAlternate_Buffer (kRAM_Size - kAlternate_Offset)
#endif
GLOBALPROC Screen_EndTickNotify(void)
{
ui3p screencurrentbuff;
#if IncludeVidMem
screencurrentbuff = VidMem;
#else
if (SCRNvPage2 == 1) {
screencurrentbuff = get_ram_address(kMain_Buffer);
} else {
screencurrentbuff = get_ram_address(kAlternate_Buffer);
}
#endif
Screen_OutputFrame(screencurrentbuff);
}

View File

@ -1,24 +0,0 @@
/*
SCRNEMDV.h
Copyright (C) 2006 Philip Cummins, Richard F. Bannister,
Paul C. Pratt
You can redistribute this file and/or modify it under the terms
of version 2 of the GNU General Public License as published by
the Free Software Foundation. You should have received a copy
of the license along with this file; see the file COPYING.
This file is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
license for more details.
*/
#ifdef SCRNEMDV_H
#error "header already included"
#else
#define SCRNEMDV_H
#endif
EXPORTPROC Screen_EndTickNotify(void);

View File

@ -1,397 +0,0 @@
/*
SCRNHACK.h
Copyright (C) 2007 Paul C. Pratt
You can redistribute this file and/or modify it under the terms
of version 2 of the GNU General Public License as published by
the Free Software Foundation. You should have received a copy
of the license along with this file; see the file COPYING.
This file is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
license for more details.
*/
/*
SCReeN Hack
Patch ROM to support other screen sizes.
*/
#if CurEmMd <= kEmMd_128K
do_put_mem_long(112 + ROM, kVidMem_Base);
do_put_mem_long(260 + ROM, kVidMem_Base);
do_put_mem_long(292 + ROM, kVidMem_Base
+ (((vMacScreenHeight / 4) * 2 + 9) * vMacScreenWidth
+ (vMacScreenWidth / 2 - 24))
/ 8);
/* sad mac, error code */
do_put_mem_word(330 + ROM, vMacScreenWidth / 8);
do_put_mem_word(342 + ROM, vMacScreenWidth / 8);
do_put_mem_word(350 + ROM, vMacScreenWidth / 4 * 3 - 1);
/* sad mac, blink pixels */
do_put_mem_word(358 + ROM, vMacScreenWidth - 4);
do_put_mem_word(456 + ROM,
(vMacScreenHeight * vMacScreenWidth / 32) - 1 + 32);
/* screen setup, main */
{
pto = 862 + ROM;
do_put_mem_word(pto, 0x4EB9); /* JSR */
pto += 2;
do_put_mem_long(pto, kROM_Base + (patchp - ROM));
pto += 4;
do_put_mem_word(patchp, 0x21FC); /* MOVE.L */
patchp += 2;
do_put_mem_long(patchp, kVidMem_Base); /* kVidMem_Base */
patchp += 4;
do_put_mem_word(patchp, 0x0824); /* (ScrnBase) */
patchp += 2;
do_put_mem_word(patchp, 0x4E75); /* RTS */
patchp += 2;
}
do_put_mem_word(892 + ROM, vMacScreenHeight - 1);
do_put_mem_word(894 + ROM, vMacScreenWidth - 1);
/* blink floppy, disk icon */
do_put_mem_long(1388 + ROM, kVidMem_Base
+ (((vMacScreenHeight / 4) * 2 - 25) * vMacScreenWidth
+ (vMacScreenWidth / 2 - 16))
/ 8);
/* blink floppy, question mark */
do_put_mem_long(1406 + ROM, kVidMem_Base
+ (((vMacScreenHeight / 4) * 2 - 10) * vMacScreenWidth
+ (vMacScreenWidth / 2 - 8))
/ 8);
/* blink floppy and sadmac, position */
do_put_mem_word(1966 + ROM, vMacScreenWidth / 8 - 4);
do_put_mem_word(1982 + ROM, vMacScreenWidth / 8);
/* sad mac, mac icon */
do_put_mem_long(2008 + ROM, kVidMem_Base
+ (((vMacScreenHeight / 4) * 2 - 25) * vMacScreenWidth
+ (vMacScreenWidth / 2 - 16))
/ 8);
/* sad mac, frown */
do_put_mem_long(2020 + ROM, kVidMem_Base
+ (((vMacScreenHeight / 4) * 2 - 19) * vMacScreenWidth
+ (vMacScreenWidth / 2 - 8))
/ 8);
do_put_mem_word(2052 + ROM, vMacScreenWidth / 8 - 2);
/* cursor handling */
#if vMacScreenWidth >= 1024
pto = 3448 + ROM;
do_put_mem_word(pto, 0x4EB9); /* JSR */
pto += 2;
do_put_mem_long(pto, kROM_Base + (patchp - ROM));
pto += 4;
do_put_mem_word(patchp, 0x41F8); /* Lea.L (CrsrSave),A0 */
patchp += 2;
do_put_mem_word(patchp, 0x088C);
patchp += 2;
do_put_mem_word(patchp, 0x203C); /* MOVE.L #$x,D0 */
patchp += 2;
do_put_mem_long(patchp, (vMacScreenWidth / 8));
patchp += 4;
do_put_mem_word(patchp, 0x4E75); /* RTS */
patchp += 2;
#else
do_put_mem_word(3452 + ROM, 0x7000 + (vMacScreenWidth / 8));
#endif
do_put_mem_word(3572 + ROM, vMacScreenWidth - 32);
do_put_mem_word(3578 + ROM, vMacScreenWidth - 32);
do_put_mem_word(3610 + ROM, vMacScreenHeight - 16);
do_put_mem_word(3616 + ROM, vMacScreenHeight);
#if vMacScreenWidth >= 1024
pto = 3646 + ROM;
do_put_mem_word(pto, 0x4EB9); /* JSR */
pto += 2;
do_put_mem_long(pto, kROM_Base + (patchp - ROM));
pto += 4;
do_put_mem_word(patchp, 0x2A3C); /* MOVE.L #$x,D5 */
patchp += 2;
do_put_mem_long(patchp, (vMacScreenWidth / 8));
patchp += 4;
do_put_mem_word(patchp, 0xC2C5); /* MulU D5,D1 */
patchp += 2;
do_put_mem_word(patchp, 0xD3C1); /* AddA.L D1,A1 */
patchp += 2;
do_put_mem_word(patchp, 0x4E75); /* RTS */
patchp += 2;
#else
do_put_mem_word(3646 + ROM, 0x7A00 + (vMacScreenWidth / 8));
#endif
/* set up screen bitmap */
do_put_mem_word(3832 + ROM, vMacScreenHeight);
do_put_mem_word(3838 + ROM, vMacScreenWidth);
/* do_put_mem_word(7810 + ROM, vMacScreenHeight); */
#elif CurEmMd <= kEmMd_Plus
do_put_mem_long(138 + ROM, kVidMem_Base);
do_put_mem_long(326 + ROM, kVidMem_Base);
do_put_mem_long(356 + ROM, kVidMem_Base
+ (((vMacScreenHeight / 4) * 2 + 9) * vMacScreenWidth
+ (vMacScreenWidth / 2 - 24))
/ 8);
/* sad mac, error code */
do_put_mem_word(392 + ROM, vMacScreenWidth / 8);
do_put_mem_word(404 + ROM, vMacScreenWidth / 8);
do_put_mem_word(412 + ROM, vMacScreenWidth / 4 * 3 - 1);
/* sad mac, blink pixels */
do_put_mem_long(420 + ROM, kVidMem_Base
+ (((vMacScreenHeight / 4) * 2 + 17) * vMacScreenWidth
+ (vMacScreenWidth / 2 - 8))
/ 8);
do_put_mem_word(494 + ROM,
(vMacScreenHeight * vMacScreenWidth / 32) - 1);
/* screen setup, main */
{
pto = 1132 + ROM;
do_put_mem_word(pto, 0x4EB9); /* JSR */
pto += 2;
do_put_mem_long(pto, kROM_Base + (patchp - ROM));
pto += 4;
do_put_mem_word(patchp, 0x21FC); /* MOVE.L */
patchp += 2;
do_put_mem_long(patchp, kVidMem_Base); /* kVidMem_Base */
patchp += 4;
do_put_mem_word(patchp, 0x0824); /* (ScrnBase) */
patchp += 2;
do_put_mem_word(patchp, 0x4E75); /* RTS */
patchp += 2;
}
do_put_mem_word(1140 + ROM, vMacScreenWidth / 8);
do_put_mem_word(1172 + ROM, vMacScreenHeight);
do_put_mem_word(1176 + ROM, vMacScreenWidth);
/* blink floppy, disk icon */
do_put_mem_long(2016 + ROM, kVidMem_Base
+ (((vMacScreenHeight / 4) * 2 - 25) * vMacScreenWidth
+ (vMacScreenWidth / 2 - 16))
/ 8);
/* blink floppy, question mark */
do_put_mem_long(2034 + ROM, kVidMem_Base
+ (((vMacScreenHeight / 4) * 2 - 10) * vMacScreenWidth
+ (vMacScreenWidth / 2 - 8))
/ 8);
do_put_mem_word(2574 + ROM, vMacScreenHeight);
do_put_mem_word(2576 + ROM, vMacScreenWidth);
/* blink floppy and sadmac, position */
do_put_mem_word(3810 + ROM, vMacScreenWidth / 8 - 4);
do_put_mem_word(3826 + ROM, vMacScreenWidth / 8);
/* sad mac, mac icon */
do_put_mem_long(3852 + ROM, kVidMem_Base
+ (((vMacScreenHeight / 4) * 2 - 25) * vMacScreenWidth
+ (vMacScreenWidth / 2 - 16))
/ 8);
/* sad mac, frown */
do_put_mem_long(3864 + ROM, kVidMem_Base
+ (((vMacScreenHeight / 4) * 2 - 19) * vMacScreenWidth
+ (vMacScreenWidth / 2 - 8))
/ 8);
do_put_mem_word(3894 + ROM, vMacScreenWidth / 8 - 2);
/* cursor handling */
#if vMacScreenWidth >= 1024
pto = 7372 + ROM;
do_put_mem_word(pto, 0x4EB9); /* JSR */
pto += 2;
do_put_mem_long(pto, kROM_Base + (patchp - ROM));
pto += 4;
do_put_mem_word(patchp, 0x41F8); /* Lea.L (CrsrSave), A0 */
patchp += 2;
do_put_mem_word(patchp, 0x088C);
patchp += 2;
do_put_mem_word(patchp, 0x203C); /* MOVE.L #$x, D0 */
patchp += 2;
do_put_mem_long(patchp, (vMacScreenWidth / 8));
patchp += 4;
do_put_mem_word(patchp, 0x4E75); /* RTS */
patchp += 2;
#else
do_put_mem_word(7376 + ROM, 0x7000 + (vMacScreenWidth / 8));
#endif
do_put_mem_word(7496 + ROM, vMacScreenWidth - 32);
do_put_mem_word(7502 + ROM, vMacScreenWidth - 32);
do_put_mem_word(7534 + ROM, vMacScreenHeight - 16);
do_put_mem_word(7540 + ROM, vMacScreenHeight);
#if vMacScreenWidth >= 1024
pto = 7570 + ROM;
do_put_mem_word(pto, 0x4EB9); /* JSR */
pto += 2;
do_put_mem_long(pto, kROM_Base + (patchp - ROM));
pto += 4;
do_put_mem_word(patchp, 0x2A3C); /* MOVE.L #$x,D5 */
patchp += 2;
do_put_mem_long(patchp, (vMacScreenWidth / 8));
patchp += 4;
do_put_mem_word(patchp, 0xC2C5); /* MulU D5,D1 */
patchp += 2;
do_put_mem_word(patchp, 0xD3C1); /* AddA.L D1,A1 */
patchp += 2;
do_put_mem_word(patchp, 0x4E75); /* RTS */
patchp += 2;
#else
do_put_mem_word(7570 + ROM, 0x7A00 + (vMacScreenWidth / 8));
#endif
/* set up screen bitmap */
do_put_mem_word(7784 + ROM, vMacScreenHeight);
do_put_mem_word(7790 + ROM, vMacScreenWidth);
do_put_mem_word(7810 + ROM, vMacScreenHeight);
#if 0
/*
Haven't got these working. Alert outlines ok, but
not contents. Perhaps global position of contents
stored in system resource file.
*/
/* perhaps switch disk alert */
do_put_mem_word(10936 + ROM, vMacScreenHeight / 2 - 91);
do_put_mem_word(10938 + ROM, vMacScreenWidth / 2 - 136);
do_put_mem_word(10944 + ROM, vMacScreenHeight / 2 - 19);
do_put_mem_word(10946 + ROM, vMacScreenWidth / 2 + 149);
do_put_mem_word(11008 + ROM, ?);
do_put_mem_word(11010 + ROM, ?);
/* DSAlertRect */
do_put_mem_word(4952 + ROM, vMacScreenHeight / 2 - 107);
do_put_mem_word(4954 + ROM, vMacScreenWidth / 2 - 236);
do_put_mem_word(4958 + ROM, vMacScreenHeight / 2 + 19);
do_put_mem_word(4960 + ROM, vMacScreenWidth / 2 + 236);
do_put_mem_word(5212 + ROM, vMacScreenHeight / 2 - 101);
do_put_mem_word(5214 + ROM, vMacScreenWidth / 2 - 218);
#endif
#elif CurEmMd <= kEmMd_Classic
/* screen setup, main */
{
pto = 1482 + ROM;
do_put_mem_word(pto, 0x4EB9); /* JSR */
pto += 2;
do_put_mem_long(pto, kROM_Base + (patchp - ROM));
pto += 4;
do_put_mem_word(patchp, 0x21FC); /* MOVE.L */
patchp += 2;
do_put_mem_long(patchp, kVidMem_Base); /* kVidMem_Base */
patchp += 4;
do_put_mem_word(patchp, 0x0824); /* (ScrnBase) */
patchp += 2;
do_put_mem_word(patchp, 0x4E75); /* RTS */
patchp += 2;
}
do_put_mem_word(1490 + ROM, vMacScreenWidth / 8);
do_put_mem_word(1546 + ROM, vMacScreenHeight);
do_put_mem_word(1550 + ROM, vMacScreenWidth);
do_put_mem_word(2252 + ROM, vMacScreenHeight);
do_put_mem_word(2254 + ROM, vMacScreenWidth);
/* blink floppy, disk icon */
do_put_mem_long(3916 + ROM, kVidMem_Base
+ (((vMacScreenHeight / 4) * 2 - 25) * vMacScreenWidth
+ (vMacScreenWidth / 2 - 16))
/ 8);
/* blink floppy, question mark */
do_put_mem_long(3934 + ROM, kVidMem_Base
+ (((vMacScreenHeight / 4) * 2 - 10) * vMacScreenWidth
+ (vMacScreenWidth / 2 - 8))
/ 8);
do_put_mem_long(4258 + ROM, kVidMem_Base);
do_put_mem_word(4264 + ROM, vMacScreenHeight);
do_put_mem_word(4268 + ROM, vMacScreenWidth);
do_put_mem_word(4272 + ROM, vMacScreenWidth / 8);
do_put_mem_long(4276 + ROM, vMacScreenNumBytes);
/* sad mac, mac icon */
do_put_mem_long(4490 + ROM, kVidMem_Base
+ (((vMacScreenHeight / 4) * 2 - 25) * vMacScreenWidth
+ (vMacScreenWidth / 2 - 16))
/ 8);
/* sad mac, frown */
do_put_mem_long(4504 + ROM, kVidMem_Base
+ (((vMacScreenHeight / 4) * 2 - 19) * vMacScreenWidth
+ (vMacScreenWidth / 2 - 8))
/ 8);
do_put_mem_word(4528 + ROM, vMacScreenWidth / 8);
/* blink floppy and sadmac, position */
do_put_mem_word(4568 + ROM, vMacScreenWidth / 8);
do_put_mem_word(4586 + ROM, vMacScreenWidth / 8);
/* cursor handling */
#if vMacScreenWidth >= 1024
pto = 101886 + ROM;
do_put_mem_word(pto, 0x4EB9); /* JSR */
pto += 2;
do_put_mem_long(pto, kROM_Base + (patchp - ROM));
pto += 4;
do_put_mem_word(patchp, 0x41F8); /* Lea.L (CrsrSave),A0 */
patchp += 2;
do_put_mem_word(patchp, 0x088C);
patchp += 2;
do_put_mem_word(patchp, 0x203C); /* MOVE.L #$x,D0 */
patchp += 2;
do_put_mem_long(patchp, (vMacScreenWidth / 8));
patchp += 4;
do_put_mem_word(patchp, 0x4E75); /* RTS */
patchp += 2;
#else
do_put_mem_word(101890 + ROM, 0x7000 + (vMacScreenWidth / 8));
#endif
do_put_mem_word(102010 + ROM, vMacScreenWidth - 32);
do_put_mem_word(102016 + ROM, vMacScreenWidth - 32);
do_put_mem_word(102048 + ROM, vMacScreenHeight - 16);
do_put_mem_word(102054 + ROM, vMacScreenHeight);
#if vMacScreenWidth >= 1024
pto = 102084 + ROM;
do_put_mem_word(pto, 0x4EB9); /* JSR */
pto += 2;
do_put_mem_long(pto, kROM_Base + (patchp - ROM));
pto += 4;
do_put_mem_word(patchp, 0x2A3C); /* MOVE.L #$x, D5 */
patchp += 2;
do_put_mem_long(patchp, (vMacScreenWidth / 8));
patchp += 4;
do_put_mem_word(patchp, 0xC2C5); /* MulU D5, D1 */
patchp += 2;
do_put_mem_word(patchp, 0xD3C1); /* AddA.L D1, A1 */
patchp += 2;
do_put_mem_word(patchp, 0x4E75); /* RTS */
patchp += 2;
#else
do_put_mem_word(102084 + ROM, 0x7A00 + (vMacScreenWidth / 8));
#endif
/* set up screen bitmap */
do_put_mem_word(102298 + ROM, vMacScreenHeight);
do_put_mem_word(102304 + ROM, vMacScreenWidth);
do_put_mem_word(102324 + ROM, vMacScreenHeight);
#endif

View File

@ -1,168 +0,0 @@
/*
SCRNMAPR.h
Copyright (C) 2012 Paul C. Pratt
You can redistribute this file and/or modify it under the terms
of version 2 of the GNU General Public License as published by
the Free Software Foundation. You should have received a copy
of the license along with this file; see the file COPYING.
This file is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
license for more details.
*/
/*
SCReeN MAPpeR
*/
/* required arguments for this template */
#ifndef ScrnMapr_DoMap /* procedure to be created by this template */
#error "ScrnMapr_DoMap not defined"
#endif
#ifndef ScrnMapr_Src
#error "ScrnMapr_Src not defined"
#endif
#ifndef ScrnMapr_Dst
#error "ScrnMapr_Dst not defined"
#endif
#ifndef ScrnMapr_SrcDepth
#error "ScrnMapr_SrcDepth not defined"
#endif
#ifndef ScrnMapr_DstDepth
#error "ScrnMapr_DstDepth not defined"
#endif
#ifndef ScrnMapr_Map
#error "ScrnMapr_Map not defined"
#endif
/* optional argument for this template */
#ifndef ScrnMapr_Scale
#define ScrnMapr_Scale 1
#endif
/* check of parameters */
#if (ScrnMapr_SrcDepth < 0) || (ScrnMapr_SrcDepth > 3)
#error "bad ScrnMapr_SrcDepth"
#endif
#if (ScrnMapr_DstDepth < ScrnMapr_SrcDepth)
#error "bad ScrnMapr_Dst"
#endif
/* calculate a few things local to this template */
#define ScrnMapr_MapElSz \
(ScrnMapr_Scale << (ScrnMapr_DstDepth - ScrnMapr_SrcDepth))
#if 0 == (ScrnMapr_MapElSz & 3)
#define ScrnMapr_TranT ui5b
#define ScrnMapr_TranLn2Sz 2
#elif 0 == (ScrnMapr_MapElSz & 1)
#define ScrnMapr_TranT ui4b
#define ScrnMapr_TranLn2Sz 1
#else
#define ScrnMapr_TranT ui3b
#define ScrnMapr_TranLn2Sz 0
#endif
#define ScrnMapr_TranN (ScrnMapr_MapElSz >> ScrnMapr_TranLn2Sz)
#define ScrnMapr_ScrnWB (vMacScreenWidth >> (3 - ScrnMapr_SrcDepth))
/* now define the procedure */
LOCALPROC ScrnMapr_DoMap(si4b top, si4b left,
si4b bottom, si4b right)
{
int i;
int j;
#if (ScrnMapr_TranN > 4) || (ScrnMapr_Scale > 2)
int k;
#endif
ui5r t0;
ScrnMapr_TranT *pMap;
#if ScrnMapr_Scale > 1
ScrnMapr_TranT *p3;
#endif
ui4r leftB = left >> (3 - ScrnMapr_SrcDepth);
ui4r rightB = (right + (1 << (3 - ScrnMapr_SrcDepth)) - 1)
>> (3 - ScrnMapr_SrcDepth);
ui4r jn = rightB - leftB;
ui4r SrcSkip = ScrnMapr_ScrnWB - jn;
ui3b *pSrc = ((ui3b *)ScrnMapr_Src)
+ leftB + ScrnMapr_ScrnWB * (ui5r)top;
ScrnMapr_TranT *pDst = ((ScrnMapr_TranT *)ScrnMapr_Dst)
+ ((leftB + ScrnMapr_ScrnWB * ScrnMapr_Scale * (ui5r)top)
* ScrnMapr_TranN);
ui5r DstSkip = SrcSkip * ScrnMapr_TranN;
for (i = bottom - top; --i >= 0; ) {
#if ScrnMapr_Scale > 1
p3 = pDst;
#endif
for (j = jn; --j >= 0; ) {
t0 = *pSrc++;
pMap =
&((ScrnMapr_TranT *)ScrnMapr_Map)[t0 * ScrnMapr_TranN];
#if ScrnMapr_TranN > 4
for (k = ScrnMapr_TranN; --k >= 0; ) {
*pDst++ = *pMap++;
}
#else
#if ScrnMapr_TranN >= 2
*pDst++ = *pMap++;
#endif
#if ScrnMapr_TranN >= 3
*pDst++ = *pMap++;
#endif
#if ScrnMapr_TranN >= 4
*pDst++ = *pMap++;
#endif
*pDst++ = *pMap;
#endif /* ! ScrnMapr_TranN > 4 */
}
pSrc += SrcSkip;
pDst += DstSkip;
#if ScrnMapr_Scale > 1
#if ScrnMapr_Scale > 2
for (k = ScrnMapr_Scale - 1; --k >= 0; )
#endif
{
pMap = p3;
for (j = ScrnMapr_TranN * jn; --j >= 0; ) {
*pDst++ = *pMap++;
}
pDst += DstSkip;
}
#endif /* ScrnMapr_Scale > 1 */
}
}
/* undefine template locals and parameters */
#undef ScrnMapr_ScrnWB
#undef ScrnMapr_TranN
#undef ScrnMapr_TranLn2Sz
#undef ScrnMapr_TranT
#undef ScrnMapr_MapElSz
#undef ScrnMapr_DoMap
#undef ScrnMapr_Src
#undef ScrnMapr_Dst
#undef ScrnMapr_SrcDepth
#undef ScrnMapr_DstDepth
#undef ScrnMapr_Map
#undef ScrnMapr_Scale

View File

@ -1,161 +0,0 @@
/*
SCRNTRNS.h
Copyright (C) 2012 Paul C. Pratt
You can redistribute this file and/or modify it under the terms
of version 2 of the GNU General Public License as published by
the Free Software Foundation. You should have received a copy
of the license along with this file; see the file COPYING.
This file is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
license for more details.
*/
/*
SCReeN TRaNSlater
*/
/* required arguments for this template */
#ifndef ScrnTrns_DoTrans /* procedure to be created by this template */
#error "ScrnTrns_DoTrans not defined"
#endif
#ifndef ScrnTrns_Src
#error "ScrnTrns_Src not defined"
#endif
#ifndef ScrnTrns_Dst
#error "ScrnTrns_Dst not defined"
#endif
#ifndef ScrnTrns_SrcDepth
#error "ScrnTrns_SrcDepth not defined"
#endif
#ifndef ScrnTrns_DstDepth
#error "ScrnTrns_DstDepth not defined"
#endif
/* optional argument for this template */
#ifndef ScrnTrns_Scale
#define ScrnTrns_Scale 1
#endif
#ifndef ScrnTrns_DstZLo
#define ScrnTrns_DstZLo 0
#endif
/* check of parameters */
#if (ScrnTrns_SrcDepth < 4)
#error "bad ScrnTrns_SrcDepth"
#endif
#if (ScrnTrns_DstDepth < 4)
#error "bad ScrnTrns_Dst"
#endif
/* now define the procedure */
LOCALPROC ScrnTrns_DoTrans(si4b top, si4b left,
si4b bottom, si4b right)
{
int i;
int j;
ui5b t0;
ui5b t1;
ui4r jn = right - left;
ui4r SrcSkip = vMacScreenByteWidth
- (jn << (ScrnTrns_SrcDepth - 3));
ui3b *pSrc = ((ui3b *)ScrnTrns_Src)
+ (left << (ScrnTrns_SrcDepth - 3))
+ vMacScreenByteWidth * (ui5r)top;
ui5b *pDst = ((ui5b *)ScrnTrns_Dst)
+ left * ScrnTrns_Scale
+ (ui5r)vMacScreenWidth * ScrnTrns_Scale * ScrnTrns_Scale * top;
ui4r DstSkip = (vMacScreenWidth - jn) * ScrnTrns_Scale;
#if ScrnTrns_Scale > 1
int k;
ui5b *p3;
ui5b *p4;
#endif
for (i = bottom - top; --i >= 0; ) {
#if ScrnTrns_Scale > 1
p3 = pDst;
#endif
for (j = jn; --j >= 0; ) {
#if 4 == ScrnTrns_SrcDepth
t0 = do_get_mem_word(pSrc);
pSrc += 2;
t1 =
#if ScrnTrns_DstZLo
((t0 & 0x7C00) << 17) |
((t0 & 0x7000) << 12) |
((t0 & 0x03E0) << 14) |
((t0 & 0x0380) << 9) |
((t0 & 0x001F) << 11) |
((t0 & 0x001C) << 6);
#else
((t0 & 0x7C00) << 9) |
((t0 & 0x7000) << 4) |
((t0 & 0x03E0) << 6) |
((t0 & 0x0380) << 1) |
((t0 & 0x001F) << 3) |
((t0 & 0x001C) >> 2);
#endif
#if 0
((t0 & 0x7C00) << 1) |
((t0 & 0x7000) >> 4) |
((t0 & 0x03E0) << 14) |
((t0 & 0x0380) << 9) |
((t0 & 0x001F) << 27) |
((t0 & 0x001C) << 22);
#endif
#elif 5 == ScrnTrns_SrcDepth
t0 = do_get_mem_long(pSrc);
pSrc += 4;
#if ScrnTrns_DstZLo
t1 = t0 << 8;
#else
t1 = t0;
#endif
#endif
#if ScrnTrns_Scale > 1
for (k = ScrnTrns_Scale; --k >= 0; )
#endif
{
*pDst++ = t1;
}
}
pSrc += SrcSkip;
pDst += DstSkip;
#if ScrnTrns_Scale > 1
#if ScrnTrns_Scale > 2
for (k = ScrnTrns_Scale - 1; --k >= 0; )
#endif
{
p4 = p3;
for (j = ScrnTrns_Scale * jn; --j >= 0; ) {
*pDst++ = *p4++;
}
pDst += DstSkip;
}
#endif /* ScrnTrns_Scale > 1 */
}
}
/* undefine template locals and parameters */
#undef ScrnTrns_DoTrans
#undef ScrnTrns_Src
#undef ScrnTrns_Dst
#undef ScrnTrns_SrcDepth
#undef ScrnTrns_DstDepth
#undef ScrnTrns_Scale
#undef ScrnTrns_DstZLo

View File

@ -1,156 +0,0 @@
/*
SCSIEMDV.c
Copyright (C) 2004 Philip Cummins, Paul C. Pratt
You can redistribute this file and/or modify it under the terms
of version 2 of the GNU General Public License as published by
the Free Software Foundation. You should have received a copy
of the license along with this file; see the file COPYING.
This file is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
license for more details.
*/
/*
Small Computer System Interface EMulated DeVice
Emulates the SCSI found in the Mac Plus.
This code adapted from "SCSI.c" in vMac by Philip Cummins.
*/
/* NCR5380 chip emulation by Yoav Shadmi, 1998 */
#ifndef AllFiles
#include "SYSDEPNS.h"
#include "ENDIANAC.h"
#include "MYOSGLUE.h"
#include "EMCONFIG.h"
#include "GLOBGLUE.h"
#include "MINEM68K.h"
#endif
#include "SCSIEMDV.h"
#define scsiRd 0x00
#define scsiWr 0x01
#define sCDR 0x00 /* current scsi data register (r/o) */
#define sODR 0x00 /* output data register (w/o) */
#define sICR 0x02 /* initiator command register (r/w) */
#define sMR 0x04 /* mode register (r/w) */
#define sTCR 0x06 /* target command register (r/w) */
#define sCSR 0x08 /* current SCSI bus status (r/o) */
#define sSER 0x08 /* select enable register (w/o) */
#define sBSR 0x0A /* bus and status register (r/o) */
#define sDMAtx 0x0A /* start DMA send (w/o) */
#define sIDR 0x0C /* input data register (r/o) */
#define sTDMArx 0x0C /* start DMA target receive (w/o) */
#define sRESET 0x0E /* reset parity/interrupt (r/o) */
#define sIDMArx 0x0E /* start DMA initiator receive (w/o) */
#define kSCSI_Size 0x00010
LOCALVAR ui3b SCSI[kSCSI_Size];
GLOBALPROC SCSI_Reset(void)
{
int i;
for (i = 0; i < kSCSI_Size; i++) {
SCSI[i] = 0;
}
}
LOCALPROC SCSI_BusReset(void)
{
SCSI[scsiRd + sCDR] = 0;
SCSI[scsiWr + sODR] = 0;
SCSI[scsiRd + sICR] = 0x80;
SCSI[scsiWr + sICR] &= 0x80;
SCSI[scsiRd + sMR] &= 0x40;
SCSI[scsiWr + sMR] &= 0x40;
SCSI[scsiRd + sTCR] = 0;
SCSI[scsiWr + sTCR] = 0;
SCSI[scsiRd + sCSR] = 0x80;
SCSI[scsiWr + sSER] = 0;
SCSI[scsiRd + sBSR] = 0x10;
SCSI[scsiWr + sDMAtx] = 0;
SCSI[scsiRd + sIDR] = 0;
SCSI[scsiWr + sTDMArx] = 0;
SCSI[scsiRd + sRESET] = 0;
SCSI[scsiWr + sIDMArx] = 0;
#if 0
SCSI[scsiRd + sODR + dackWr] = 0;
SCSI[scsiWr + sIDR + dackRd] = 0;
#endif
/* The missing piece of the puzzle.. :) */
put_ram_word(0xb22, get_ram_word(0xb22) | 0x8000);
}
LOCALPROC SCSI_Check(void)
{
/*
The arbitration select/reselect scenario
[stub.. doesn't really work...]
*/
if ((SCSI[scsiWr + sODR] >> 7) == 1) {
/* Check if the Mac tries to be an initiator */
if ((SCSI[scsiWr + sMR] & 1) == 1) {
/* the Mac set arbitration in progress */
/*
stub! tell the mac that there
is arbitration in progress...
*/
SCSI[scsiRd + sICR] |= 0x40;
/* ... that we didn't lose arbitration ... */
SCSI[scsiRd + sICR] &= ~ 0x20;
/*
... and that there isn't a higher priority ID present...
*/
SCSI[scsiRd + sCDR] = 0x00;
/*
... the arbitration and selection/reselection is
complete. the initiator tries to connect to the SCSI
device, fails and returns after timeout.
*/
}
}
/* check the chip registers, AS SET BY THE CPU */
if ((SCSI[scsiWr + sICR] >> 7) == 1) {
/* Check Assert RST */
SCSI_BusReset();
} else {
SCSI[scsiRd + sICR] &= ~ 0x80;
SCSI[scsiRd + sCSR] &= ~ 0x80;
}
if ((SCSI[scsiWr + sICR] >> 2) == 1) {
/* Check Assert SEL */
SCSI[scsiRd + sCSR] |= 0x02;
SCSI[scsiRd + sBSR] = 0x10;
} else {
SCSI[scsiRd + sCSR] &= ~ 0x02;
}
}
GLOBALFUNC ui5b SCSI_Access(ui5b Data, blnr WriteMem, CPTR addr)
{
if (addr < (kSCSI_Size / 2)) {
addr *= 2;
if (WriteMem) {
SCSI[addr + 1] = Data;
SCSI_Check();
} else {
Data = SCSI[addr];
}
}
return Data;
}

View File

@ -1,25 +0,0 @@
/*
SCSIEMDV.h
Copyright (C) 2004 Philip Cummins, Paul C. Pratt
You can redistribute this file and/or modify it under the terms
of version 2 of the GNU General Public License as published by
the Free Software Foundation. You should have received a copy
of the license along with this file; see the file COPYING.
This file is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
license for more details.
*/
#ifdef SCSIEMDV_H
#error "header already included"
#else
#define SCSIEMDV_H
#endif
EXPORTPROC SCSI_Reset(void);
EXPORTFUNC ui5b SCSI_Access(ui5b Data, blnr WriteMem, CPTR addr);

View File

@ -1,223 +0,0 @@
/*
SNDEMDEV.c
Copyright (C) 2003 Philip Cummins, Paul C. Pratt
You can redistribute this file and/or modify it under the terms
of version 2 of the GNU General Public License as published by
the Free Software Foundation. You should have received a copy
of the license along with this file; see the file COPYING.
This file is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
license for more details.
*/
/*
SouND EMulated DEVice
Emulation of Sound in the Mac Plus could go here.
This code adapted from "Sound.c" in vMac by Philip Cummins.
*/
#ifndef AllFiles
#include "SYSDEPNS.h"
#include "MYOSGLUE.h"
#include "EMCONFIG.h"
#include "GLOBGLUE.h"
#include "MINEM68K.h"
#endif
#include "SNDEMDEV.h"
#if MySoundEnabled
#define kSnd_Main_Offset 0x0300
#define kSnd_Alt_Offset 0x5F00
#define kSnd_Main_Buffer (kRAM_Size - kSnd_Main_Offset)
#define kSnd_Alt_Buffer (kRAM_Size - kSnd_Alt_Offset)
/*
approximate volume levels of vMac, so:
x * vol_mult[SoundVolume] >> 16
+ vol_offset[SoundVolume]
= {approx} (x - kCenterSound) / (8 - SoundVolume) + kCenterSound;
*/
LOCALVAR const ui4b vol_mult[] = {
8192, 9362, 10922, 13107, 16384, 21845, 32768
};
LOCALVAR const trSoundSamp vol_offset[] = {
#if 3 == kLn2SoundSampSz
112, 110, 107, 103, 96, 86, 64, 0
#elif 4 == kLn2SoundSampSz
28672, 28087, 27307, 26215, 24576, 21846, 16384, 0
#else
#error "unsupported kLn2SoundSampSz"
#endif
};
LOCALVAR const ui4b SubTick_offset[kNumSubTicks] = {
0, 25, 50, 90, 102, 115, 138, 161,
185, 208, 231, 254, 277, 300, 323, 346
};
LOCALVAR const ui3r SubTick_n[kNumSubTicks] = {
25, 25, 40, 12, 13, 23, 23, 24,
23, 23, 23, 23, 23, 23, 23, 24
};
/*
One version of free form sound driver
spends around 18000 cycles writing
offsets 50 to 370, then around another 3000
cycles writing 0 to 50. So be done
with 0 to 50 at end of second sixtieth.
*/
/*
Different in system 6.0.4:
spends around 23500 cycles writing
offsets 90 to 370, then around another 7500
cycles writing 0 to 90. This is nastier,
because gets to be a very small gap
between where is being read and
where written. So read a bit in
advance for third subtick.
*/
/*
startup sound spends around 19500 cycles
writing offsets 0 to 370. presumably
writing offset 0 before it is read.
*/
LOCALVAR ui5b SoundInvertPhase = 0;
LOCALVAR ui4b SoundInvertState = 0;
IMPORTFUNC ui4b GetSoundInvertTime(void);
GLOBALPROC MacSound_SubTick(int SubTick)
{
ui4r actL;
tpSoundSamp p;
ui4r i;
ui5b StartOffset = SubTick_offset[SubTick];
ui4r n = SubTick_n[SubTick];
unsigned long addy =
#ifdef SoundBuffer
(SoundBuffer == 0) ? kSnd_Alt_Buffer :
#endif
kSnd_Main_Buffer;
#ifndef ln2mtb
ui3p addr = addy + (2 * StartOffset) + RAM;
#else
CPTR addr = addy + (2 * StartOffset);
#endif
ui4b SoundInvertTime = GetSoundInvertTime();
ui3b SoundVolume = SoundVolb0
| (SoundVolb1 << 1)
| (SoundVolb2 << 2);
#if dbglog_HAVE && 0
dbglog_StartLine();
dbglog_writeCStr("reading sound buffer ");
dbglog_writeHex(StartOffset);
dbglog_writeCStr(" to ");
dbglog_writeHex(StartOffset + n);
dbglog_writeReturn();
#endif
label_retry:
p = MySound_BeginWrite(n, &actL);
if (actL > 0) {
if (SoundDisable && (SoundInvertTime == 0)) {
for (i = 0; i < actL; i++) {
#if 0
*p++ = 0x00; /* this is believed more accurate */
#else
/* But this avoids more clicks. */
*p++ = kCenterSound;
#endif
}
} else {
for (i = 0; i < actL; i++) {
/* Copy sound data, high byte of each word */
*p++ =
#ifndef ln2mtb
*addr
#else
get_vm_byte(addr)
#endif
#if 4 == kLn2SoundSampSz
<< 8
#endif
;
/* Move the address on */
addr += 2;
}
if (SoundInvertTime != 0) {
ui5b PhaseIncr = (ui5b)SoundInvertTime * (ui5b)20;
p -= actL;
for (i = 0; i < actL; i++) {
if (SoundInvertPhase < 704) {
ui5b OnPortion = 0;
ui5b LastPhase = 0;
do {
if (! SoundInvertState) {
OnPortion +=
(SoundInvertPhase - LastPhase);
}
SoundInvertState = ! SoundInvertState;
LastPhase = SoundInvertPhase;
SoundInvertPhase += PhaseIncr;
} while (SoundInvertPhase < 704);
if (! SoundInvertState) {
OnPortion += 704 - LastPhase;
}
*p = (*p * OnPortion) / 704;
} else {
if (SoundInvertState) {
*p = 0;
}
}
SoundInvertPhase -= 704;
p++;
}
}
}
if (SoundVolume < 7) {
/*
Usually have volume at 7, so this
is just for completeness.
*/
ui5b mult = (ui5b)vol_mult[SoundVolume];
trSoundSamp offset = vol_offset[SoundVolume];
p -= actL;
for (i = 0; i < actL; i++) {
*p = (trSoundSamp)((ui5b)(*p) * mult >> 16) + offset;
++p;
}
}
MySound_EndWrite(actL);
n -= actL;
if (n > 0) {
goto label_retry;
}
}
}
#endif

View File

@ -1,25 +0,0 @@
/*
SNDEMDEV.h
Copyright (C) 2003 Philip Cummins, Paul C. Pratt
You can redistribute this file and/or modify it under the terms
of version 2 of the GNU General Public License as published by
the Free Software Foundation. You should have received a copy
of the license along with this file; see the file COPYING.
This file is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
license for more details.
*/
#ifdef SNDEMDEV_H
#error "header already included"
#else
#define SNDEMDEV_H
#endif
#if MySoundEnabled
EXPORTPROC MacSound_SubTick(int SubTick);
#endif

File diff suppressed because it is too large Load Diff

View File

@ -1,31 +0,0 @@
/*
SONYEMDV.h
Copyright (C) 2004 Paul C. Pratt
You can redistribute this file and/or modify it under the terms
of version 2 of the GNU General Public License as published by
the Free Software Foundation. You should have received a copy
of the license along with this file; see the file COPYING.
This file is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
license for more details.
*/
#ifdef SONYEMDV_H
#error "header already included"
#else
#define SONYEMDV_H
#endif
EXPORTPROC ExtnDisk_Access(CPTR p);
EXPORTPROC ExtnSony_Access(CPTR p);
EXPORTPROC Sony_SetQuitOnEject(void);
EXPORTPROC Sony_EjectAllDisks(void);
EXPORTPROC Sony_Reset(void);
EXPORTPROC Sony_Update(void);

View File

@ -1,167 +0,0 @@
/*
STRCNENG.h
Copyright (C) 2006 Paul C. Pratt, Pierre Lemieux
You can redistribute this file and/or modify it under the terms
of version 2 of the GNU General Public License as published by
the Free Software Foundation. You should have received a copy
of the license along with this file; see the file COPYING.
This file is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
license for more details.
*/
/*
STRing CoNstants for ENGlish
Pierre Lemieux provided some corrections and suggestions.
*/
#define kStrAboutTitle "About"
#define kStrAboutMessage "To display information about this program, use the ;]A;} command of the ^p Control Mode. To learn about the Control Mode, see the ;[More Commands;ll;{ item in the ;[Special;{ menu."
#define kStrMoreCommandsTitle "More commands are available in the ^p Control Mode."
#define kStrMoreCommandsMessage "To enter the Control Mode, press and hold down the ;]^c;} key. You will remain in the Control Mode until you release the ;]^c;} key. Type ;]H;} in the Control Mode to list available commands."
#define kStrTooManyImagesTitle "Too many Disk Images"
#define kStrTooManyImagesMessage "I can not mount that many Disk Images. Try ejecting one."
#define kStrImageInUseTitle "Disk Image in use"
#define kStrImageInUseMessage "I can not mount the Disk Image because it is already in use by another application or already open in ^p."
#define kStrOutOfMemTitle "Not enough Memory"
#define kStrOutOfMemMessage "There is not enough memory available to launch ^p."
#define kStrNoROMTitle "Unable to locate ROM image"
#define kStrNoROMMessage "I can not find the ROM image file ;[^r;{. For more information, see: ;[^w;{."
#define kStrCorruptedROMTitle "ROM checksum failed"
#define kStrCorruptedROMMessage "The ROM image file ;[^r;{ may be corrupted."
#define kStrUnsupportedROMTitle "Unsupported ROM"
#define kStrUnsupportedROMMessage "The ROM image file ;[^r;{ loaded successfully, but I don;}t support this ROM version."
#define kStrQuitWarningTitle "Please shut down the emulated computer before quitting."
#define kStrQuitWarningMessage "To force ^p to quit, at the risk of corrupting the mounted disk image files, use the ;]Q;} command of the ^p Control Mode. To learn about the Control Mode, see the ;[More Commands;ll;{ item in the ;[Special;{ menu."
#define kStrReportAbnormalTitle "Abnormal Situation"
#define kStrReportAbnormalMessage "The emulated computer is attempting an operation that wasn;}t expected to happen in normal use."
#define kStrBadArgTitle "Unknown argument"
#define kStrBadArgMessage "I did not understand one of the command line arguments, and ignored it."
#define kStrOpenFailTitle "Open failed"
#define kStrOpenFailMessage "I could not open the disk image."
#define kStrNoReadROMTitle "Unable to read ROM image"
#define kStrNoReadROMMessage "I found the ROM image file ;[^r;{, but I can not read it."
#define kStrShortROMTitle "ROM image too short"
#define kStrShortROMMessage "The ROM image file ;[^r;{ is shorter than it should be."
/* state of a boolean option */
#define kStrOn "on"
#define kStrOff "off"
/* state of a key */
#define kStrPressed "pressed"
#define kStrReleased "released"
/* state of Stopped */
#define kStrStoppedOn kStrOn
#define kStrStoppedOff kStrOff
/* About Screen */
#define kStrProgramInfo "^v"
#define kStrSponsorIs "^v. This variation is made for:"
#define kStrWorkOfMany "Copyright ^y. ^p contains the work of many people. This version is maintained by:"
#define kStrForMoreInfo "For more information, see:"
#define kStrLicense "^p is distributed under the terms of the GNU Public License, version 2."
#define kStrDisclaimer " ^p is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;ls without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
/* Help Screen */
#define kStrHowToLeaveControl "To leave the Control Mode, release the ;]^c;} key."
#define kStrHowToPickACommand "Otherwise, type a letter. Available commands are:"
#define kStrCmdAbout "About (version information)"
#define kStrCmdOpenDiskImage "Open disk image;ll"
#define kStrCmdQuit "Quit"
#define kStrCmdSpeedControl "Speed control;ll (^s)"
#define kStrCmdMagnifyToggle "Magnify toggle (^g)"
#define kStrCmdFullScrnToggle "Full screen toggle (^f)"
#define kStrCmdCtrlKeyToggle "emulated ;]^m;} Key toggle (^k)"
#define kStrCmdReset "Reset"
#define kStrCmdInterrupt "Interrupt"
#define kStrCmdHelp "Help (show this page)"
/* Speed Control Screen */
#define kStrCurrentSpeed "Current speed: ^s"
#define kStrSpeedAllOut "All out"
#define kStrSpeedStopped "stopped toggle (^h)"
#define kStrSpeedBackToggle "run in Background toggle (^b)"
#define kStrSpeedAutoSlowToggle "autosloW toggle (^l)"
#define kStrSpeedExit "Exit speed control"
#define kStrNewSpeed "Speed: ^s"
#define kStrSpeedValueAllOut kStrSpeedAllOut
#define kStrNewStopped "Stopped is ^h."
#define kStrNewRunInBack "Run in background is ^b."
#define kStrNewAutoSlow "AutoSlow is ^l."
#define kStrNewMagnify "Magnify is ^g."
#define kStrNewFullScreen "Full Screen is ^f."
#define kStrNewCntrlKey "Emulated ;]^m;} key ^k."
#define kStrCmdCancel "cancel"
#define kStrConfirmReset "Are you sure you want to reset the emulated computer? Unsaved changes will be lost, and there is a risk of corrupting the mounted disk image files. Type a letter:"
#define kStrResetDo "reset"
#define kStrResetNo kStrCmdCancel
#define kStrHaveReset "Have reset the emulated computer"
#define kStrCancelledReset "Reset cancelled"
#define kStrConfirmInterrupt "Are you sure you want to interrupt the emulated computer? This will invoke any installed debugger. Type a letter:"
#define kStrInterruptDo "interrupt"
#define kStrInterruptNo kStrCmdCancel
#define kStrHaveInterrupted "Have interrupted the emulated computer"
#define kStrCancelledInterrupt "Interrupt cancelled"
#define kStrConfirmQuit "Are you sure you want to quit ^p? You should shut down the emulated computer before quitting to prevent corrupting the mounted disk image files. Type a letter:"
#define kStrQuitDo "quit"
#define kStrQuitNo kStrCmdCancel
#define kStrCancelledQuit "Quit cancelled"
#define kStrModeConfirmReset "Control Mode : Confirm Reset"
#define kStrModeConfirmInterrupt "Control Mode : Confirm Interrupt"
#define kStrModeConfirmQuit "Control Mode : Confirm Quit"
#define kStrModeSpeedControl "Control Mode : Speed Control"
#define kStrModeControlBase "Control Mode (Type ;]H;} for help)"
#define kStrModeControlHelp "Control Mode"
#define kStrModeMessage "Message (Type ;]C;} to continue)"
#define kStrMenuFile "File"
#define kStrMenuSpecial "Special"
#define kStrMenuHelp "Help"
#define kStrMenuItemAbout "About ^p"
#define kStrMenuItemOpen "Open Disk Image"
#define kStrMenuItemQuit "Quit"
#define kStrMenuItemMore "More Commands"
#define kStrAppMenuItemHide "Hide ^p"
#define kStrAppMenuItemHideOthers "Hide Others"
#define kStrAppMenuItemShowAll "Show All"
#define kStrAppMenuItemQuit "Quit ^p"
#define kStrCmdCopyOptions "copy variation options"
#define kStrHaveCopiedOptions "Variation options copied"

View File

@ -1,152 +0,0 @@
/*
SYSDEPNS.h
Copyright (C) 2006 Bernd Schmidt, Philip Cummins, Paul C. Pratt
You can redistribute this file and/or modify it under the terms
of version 2 of the GNU General Public License as published by
the Free Software Foundation. You should have received a copy
of the license along with this file; see the file COPYING.
This file is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
license for more details.
*/
/*
SYStem DEPeNdencies.
*/
#ifdef SYSDEPNS_H
#error "header already included"
#else
#define SYSDEPNS_H
#endif
#include "CNFGGLOB.h"
typedef ui3b *ui3p;
typedef ui4b *ui4p;
typedef ui5b *ui5p;
/*
Largest efficiently supported
representation types. uimr should be
large enough to hold number of elements
of any array we will deal with.
*/
typedef ui5r uimr;
typedef si5r simr;
#define blnr ui3r
#define trueblnr 1
#define falseblnr 0
#define nullpr ((void *) 0)
#define anyp ui3p
/* pascal string, single byte characters */
#define ps3p ui3p
#ifndef MayInline
#define MayInline
#endif
#ifndef MayNotInline
#define MayNotInline
#endif
#ifndef my_reg_call
#define my_reg_call
#endif
#ifndef my_osglu_call
#define my_osglu_call
#endif
#define LOCALVAR static
#ifdef AllFiles
#define GLOBALVAR LOCALVAR
#define EXPORTVAR(t, v)
#else
#define GLOBALVAR
#define EXPORTVAR(t, v) extern t v;
#endif
#define LOCALFUNC static MayNotInline
#define FORWARDFUNC LOCALFUNC
#ifdef AllFiles
#define GLOBALFUNC LOCALFUNC
#define EXPORTFUNC LOCALFUNC
#else
#define GLOBALFUNC MayNotInline
#define EXPORTFUNC extern
#endif
#define IMPORTFUNC EXPORTFUNC
#define TYPEDEFFUNC typedef
#define LOCALPROC LOCALFUNC void
#define GLOBALPROC GLOBALFUNC void
#define EXPORTPROC EXPORTFUNC void
#define IMPORTPROC IMPORTFUNC void
#define FORWARDPROC FORWARDFUNC void
#define TYPEDEFPROC TYPEDEFFUNC void
#define LOCALINLINEFUNC static MayInline
#define LOCALINLINEPROC LOCALINLINEFUNC void
#define LOCALFUNCUSEDONCE LOCALINLINEFUNC
#define LOCALPROCUSEDONCE LOCALINLINEPROC
#define GLOBALOSGLUFUNC GLOBALFUNC my_osglu_call
#define EXPORTOSGLUFUNC EXPORTFUNC my_osglu_call
#define GLOBALOSGLUPROC GLOBALFUNC my_osglu_call void
#define EXPORTOSGLUPROC EXPORTFUNC my_osglu_call void
/*
For functions in operating system glue that
are called by rest of program.
*/
/*
best type for ui4r that is probably in register
(when compiler messes up otherwise)
*/
#ifndef BigEndianUnaligned
#define BigEndianUnaligned 0
#endif
#ifndef LittleEndianUnaligned
#define LittleEndianUnaligned 0
#endif
#ifndef ui3rr
#define ui3rr ui3r
#endif
#ifndef ui4rr
#define ui4rr ui4r
#endif
#ifndef si5rr
#define si5rr si5r
#endif
#ifndef my_align_8
#define my_align_8
#endif
#ifndef my_cond_rare
#define my_cond_rare(x) (x)
#endif
#ifndef Have_ASR
#define Have_ASR 0
#endif
#ifndef HaveMySwapUi5r
#define HaveMySwapUi5r 0
#endif

File diff suppressed because it is too large Load Diff

View File

@ -1,48 +0,0 @@
/*
VIA2EMDV.h
Copyright (C) 2004 Philip Cummins, Paul C. Pratt
You can redistribute this file and/or modify it under the terms
of version 2 of the GNU General Public License as published by
the Free Software Foundation. You should have received a copy
of the license along with this file; see the file COPYING.
This file is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
license for more details.
*/
#ifdef VIA2EMDV_H
#error "header already included"
#else
#define VIA2EMDV_H
#endif
EXPORTPROC VIA2_Zap(void);
EXPORTPROC VIA2_Reset(void);
EXPORTFUNC ui5b VIA2_Access(ui5b Data, blnr WriteMem, CPTR addr);
EXPORTPROC VIA2_ExtraTimeBegin(void);
EXPORTPROC VIA2_ExtraTimeEnd(void);
#ifdef VIA2_iCA1_PulseNtfy
EXPORTPROC VIA2_iCA1_PulseNtfy(void);
#endif
#ifdef VIA2_iCA2_PulseNtfy
EXPORTPROC VIA2_iCA2_PulseNtfy(void);
#endif
#ifdef VIA2_iCB1_PulseNtfy
EXPORTPROC VIA2_iCB1_PulseNtfy(void);
#endif
#ifdef VIA2_iCB2_PulseNtfy
EXPORTPROC VIA2_iCB2_PulseNtfy(void);
#endif
EXPORTPROC VIA2_DoTimer1Check(void);
EXPORTPROC VIA2_DoTimer2Check(void);
EXPORTFUNC ui4b VIA2_GetT1InvertTime(void);
EXPORTPROC VIA2_ShiftInData(ui3b v);
EXPORTFUNC ui3b VIA2_ShiftOutData(void);

File diff suppressed because it is too large Load Diff

View File

@ -1,48 +0,0 @@
/*
VIAEMDEV.h
Copyright (C) 2004 Philip Cummins, Paul C. Pratt
You can redistribute this file and/or modify it under the terms
of version 2 of the GNU General Public License as published by
the Free Software Foundation. You should have received a copy
of the license along with this file; see the file COPYING.
This file is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
license for more details.
*/
#ifdef VIAEMDEV_H
#error "header already included"
#else
#define VIAEMDEV_H
#endif
EXPORTPROC VIA1_Zap(void);
EXPORTPROC VIA1_Reset(void);
EXPORTFUNC ui5b VIA1_Access(ui5b Data, blnr WriteMem, CPTR addr);
EXPORTPROC VIA1_ExtraTimeBegin(void);
EXPORTPROC VIA1_ExtraTimeEnd(void);
#ifdef VIA1_iCA1_PulseNtfy
EXPORTPROC VIA1_iCA1_PulseNtfy(void);
#endif
#ifdef VIA1_iCA2_PulseNtfy
EXPORTPROC VIA1_iCA2_PulseNtfy(void);
#endif
#ifdef VIA1_iCB1_PulseNtfy
EXPORTPROC VIA1_iCB1_PulseNtfy(void);
#endif
#ifdef VIA1_iCB2_PulseNtfy
EXPORTPROC VIA1_iCB2_PulseNtfy(void);
#endif
EXPORTPROC VIA1_DoTimer1Check(void);
EXPORTPROC VIA1_DoTimer2Check(void);
EXPORTFUNC ui4b VIA1_GetT1InvertTime(void);
EXPORTPROC VIA1_ShiftInData(ui3b v);
EXPORTFUNC ui3b VIA1_ShiftOutData(void);

File diff suppressed because it is too large Load Diff

View File

@ -1,27 +0,0 @@
/*
VIDEMDEV.h
Copyright (C) 2008 Paul C. Pratt
You can redistribute this file and/or modify it under the terms
of version 2 of the GNU General Public License as published by
the Free Software Foundation. You should have received a copy
of the license along with this file; see the file COPYING.
This file is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
license for more details.
*/
#ifdef VIDEMDEV_H
#error "header already included"
#else
#define VIDEMDEV_H
#endif
EXPORTFUNC blnr Vid_Init(void);
EXPORTFUNC ui4r Vid_Reset(void);
EXPORTPROC Vid_Update(void);
EXPORTPROC ExtnVideo_Access(CPTR p);

1
minivmac Submodule

@ -0,0 +1 @@
Subproject commit 53c291ac120a036131a73cb2e568b57c493f51d7