update to Mini vMac b37.200912 with patch fixing wintergames
This commit is contained in:
parent
d2fda78a9c
commit
b72a6f058a
|
@ -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
|
||||
|
|
|
@ -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)";
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "1000"
|
||||
LastUpgradeVersion = "1170"
|
||||
version = "1.3">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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
|
||||
|
|
@ -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"
|
|
@ -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>
|
|
@ -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.
|
||||
*/
|
|
@ -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>
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
||||
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
||||
|
|
@ -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
|
|
@ -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
|
|
@ -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"
|
|
@ -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
|
||||
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
||||
|
|
@ -0,0 +1 @@
|
|||
#include "STRCNENG.h"
|
|
@ -43,7 +43,7 @@
|
|||
<a href="https://namedfork.net/minivmac">namedfork.net/minivmac</a><br/>
|
||||
<hr/>
|
||||
based on Mini vMac $mnvmversion<br/>
|
||||
©2001-2019 Paul C. Pratt<br/>
|
||||
©2001-2020 Paul C. Pratt<br/>
|
||||
<a href="http://gryphel.com/c/minivmac">gryphel.com/c/minivmac</a></string>
|
||||
</dict>
|
||||
</plist>
|
||||
|
|
|
@ -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;
|
||||
}
|
|
@ -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
|
||||
*/
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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);
|
|
@ -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");
|
||||
}
|
||||
}
|
|
@ -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);
|
||||
}
|
|
@ -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
|
||||
}
|
|
@ -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);
|
|
@ -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
|
@ -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
|
@ -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);
|
|
@ -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
|
@ -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);
|
|
@ -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
|
@ -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;
|
||||
}
|
|
@ -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);
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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
|
@ -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
|
@ -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);
|
|
@ -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);
|
||||
}
|
||||
}
|
|
@ -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);
|
|
@ -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
|
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -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);
|
|
@ -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();
|
||||
}
|
||||
}
|
|
@ -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);
|
|
@ -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;
|
||||
}
|
|
@ -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);
|
|
@ -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
|
||||
}
|
|
@ -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
|
@ -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
|
|
@ -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);
|
||||
}
|
|
@ -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);
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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;
|
||||
}
|
|
@ -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);
|
|
@ -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
|
|
@ -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
|
@ -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);
|
|
@ -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"
|
|
@ -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
|
@ -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
|
@ -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
|
@ -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);
|
|
@ -0,0 +1 @@
|
|||
Subproject commit 53c291ac120a036131a73cb2e568b57c493f51d7
|
Loading…
Reference in New Issue