initial implementation

This commit is contained in:
Jesús A. Álvarez 2016-05-01 19:05:36 +02:00
parent 71111a3318
commit fc5589a944
51 changed files with 2361 additions and 29 deletions

58
.clang-format Normal file
View File

@ -0,0 +1,58 @@
---
Language: Cpp
AccessModifierOffset: -1
ConstructorInitializerIndentWidth: 4
AlignEscapedNewlinesLeft: true
AlignTrailingComments: true
AllowAllParametersOfDeclarationOnNextLine: false
AllowShortBlocksOnASingleLine: false
AllowShortIfStatementsOnASingleLine: false
AllowShortLoopsOnASingleLine: false
AllowShortFunctionsOnASingleLine: Inline
AlwaysBreakTemplateDeclarations: true
AlwaysBreakBeforeMultilineStrings: true
BreakBeforeBinaryOperators: false
BreakBeforeTernaryOperators: true
BreakConstructorInitializersBeforeComma: false
BinPackParameters: false
ColumnLimit: 0
ConstructorInitializerAllOnOneLineOrOnePerLine: true
DerivePointerAlignment: false
ExperimentalAutoDetectBinPacking: false
IndentCaseLabels: true
IndentWrappedFunctionNames: false
IndentFunctionDeclarationAfterType: false
MaxEmptyLinesToKeep: 1
KeepEmptyLinesAtTheStartOfBlocks: false
NamespaceIndentation: None
ObjCSpaceAfterProperty: true
ObjCSpaceBeforeProtocolList: true
ObjCBlockIndentWidth: 4
PenaltyBreakBeforeFirstCallParameter: 1
PenaltyBreakComment: 300
PenaltyBreakString: 1000
PenaltyBreakFirstLessLess: 120
PenaltyExcessCharacter: 1000000
PenaltyReturnTypeOnItsOwnLine: 200
PointerAlignment: Right
SpacesBeforeTrailingComments: 2
Cpp11BracedListStyle: true
Standard: Cpp03
IndentWidth: 4
TabWidth: 4
UseTab: Never
BreakBeforeBraces: Attach
SpacesInParentheses: false
SpacesInAngles: false
SpaceInEmptyParentheses: false
SpacesInCStyleCastParentheses: false
SpacesInContainerLiterals: true
SpaceBeforeAssignmentOperators: true
ContinuationIndentWidth: 4
CommentPragmas: '^ IWYU pragma:'
ForEachMacros: [ foreach, Q_FOREACH, BOOST_FOREACH ]
SpaceBeforeParens: ControlStatements
DisableFormat: false
SortIncludes: false
...

View File

@ -7,6 +7,23 @@
objects = {
/* Begin PBXBuildFile section */
28CE8EB51CD4C3B200FE25A8 /* GLOBGLUE.c in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8E931CD4C3B200FE25A8 /* GLOBGLUE.c */; };
28CE8EB61CD4C3B200FE25A8 /* IWMEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8E961CD4C3B200FE25A8 /* IWMEMDEV.c */; };
28CE8EB71CD4C3B200FE25A8 /* KBRDEMDV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8E981CD4C3B200FE25A8 /* KBRDEMDV.c */; };
28CE8EB81CD4C3B200FE25A8 /* M68KITAB.c in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8E9A1CD4C3B200FE25A8 /* M68KITAB.c */; };
28CE8EB91CD4C3B200FE25A8 /* MINEM68K.c in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8E9C1CD4C3B200FE25A8 /* MINEM68K.c */; };
28CE8EBA1CD4C3B200FE25A8 /* MOUSEMDV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8E9E1CD4C3B200FE25A8 /* MOUSEMDV.c */; };
28CE8EBB1CD4C3B200FE25A8 /* PROGMAIN.c in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8EA11CD4C3B200FE25A8 /* PROGMAIN.c */; };
28CE8EBC1CD4C3B200FE25A8 /* ROMEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8EA31CD4C3B200FE25A8 /* ROMEMDEV.c */; };
28CE8EBD1CD4C3B200FE25A8 /* RTCEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8EA51CD4C3B200FE25A8 /* RTCEMDEV.c */; };
28CE8EBE1CD4C3B200FE25A8 /* SCCEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8EA71CD4C3B200FE25A8 /* SCCEMDEV.c */; };
28CE8EBF1CD4C3B200FE25A8 /* SCRNEMDV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8EA91CD4C3B200FE25A8 /* SCRNEMDV.c */; };
28CE8EC01CD4C3B200FE25A8 /* SCSIEMDV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8EAC1CD4C3B200FE25A8 /* SCSIEMDV.c */; };
28CE8EC11CD4C3B200FE25A8 /* SNDEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8EAE1CD4C3B200FE25A8 /* SNDEMDEV.c */; };
28CE8EC21CD4C3B200FE25A8 /* SONYEMDV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8EB01CD4C3B200FE25A8 /* SONYEMDV.c */; };
28CE8EC31CD4C3B200FE25A8 /* VIAEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8EB31CD4C3B200FE25A8 /* VIAEMDEV.c */; };
28CE8ECC1CD4CDC500FE25A8 /* MYOSGLUE.m in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8ECB1CD4CDC500FE25A8 /* MYOSGLUE.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
28CE8ED61CD4F56C00FE25A8 /* ScreenView.m in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8ED51CD4F56C00FE25A8 /* ScreenView.m */; };
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 */; };
@ -16,6 +33,50 @@
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
28CE8E881CD4C33E00FE25A8 /* CNFGGLOB.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CNFGGLOB.h; sourceTree = "<group>"; };
28CE8E891CD4C33E00FE25A8 /* CNFGRAPI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CNFGRAPI.h; sourceTree = "<group>"; };
28CE8E8A1CD4C33E00FE25A8 /* EMCONFIG.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EMCONFIG.h; sourceTree = "<group>"; };
28CE8E8F1CD4C3B200FE25A8 /* COMOSGLU.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = COMOSGLU.h; sourceTree = "<group>"; };
28CE8E911CD4C3B200FE25A8 /* DATE2SEC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DATE2SEC.h; sourceTree = "<group>"; };
28CE8E921CD4C3B200FE25A8 /* ENDIANAC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ENDIANAC.h; sourceTree = "<group>"; };
28CE8E931CD4C3B200FE25A8 /* GLOBGLUE.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = GLOBGLUE.c; sourceTree = "<group>"; };
28CE8E941CD4C3B200FE25A8 /* GLOBGLUE.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GLOBGLUE.h; sourceTree = "<group>"; };
28CE8E961CD4C3B200FE25A8 /* IWMEMDEV.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = IWMEMDEV.c; sourceTree = "<group>"; };
28CE8E971CD4C3B200FE25A8 /* IWMEMDEV.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IWMEMDEV.h; sourceTree = "<group>"; };
28CE8E981CD4C3B200FE25A8 /* KBRDEMDV.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = KBRDEMDV.c; sourceTree = "<group>"; };
28CE8E991CD4C3B200FE25A8 /* KBRDEMDV.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KBRDEMDV.h; sourceTree = "<group>"; };
28CE8E9A1CD4C3B200FE25A8 /* M68KITAB.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = M68KITAB.c; sourceTree = "<group>"; };
28CE8E9B1CD4C3B200FE25A8 /* M68KITAB.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = M68KITAB.h; sourceTree = "<group>"; };
28CE8E9C1CD4C3B200FE25A8 /* MINEM68K.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = MINEM68K.c; sourceTree = "<group>"; };
28CE8E9D1CD4C3B200FE25A8 /* MINEM68K.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MINEM68K.h; sourceTree = "<group>"; };
28CE8E9E1CD4C3B200FE25A8 /* MOUSEMDV.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = MOUSEMDV.c; sourceTree = "<group>"; };
28CE8E9F1CD4C3B200FE25A8 /* MOUSEMDV.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MOUSEMDV.h; sourceTree = "<group>"; };
28CE8EA01CD4C3B200FE25A8 /* MYOSGLUE.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MYOSGLUE.h; sourceTree = "<group>"; };
28CE8EA11CD4C3B200FE25A8 /* PROGMAIN.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = PROGMAIN.c; sourceTree = "<group>"; };
28CE8EA21CD4C3B200FE25A8 /* PROGMAIN.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PROGMAIN.h; sourceTree = "<group>"; };
28CE8EA31CD4C3B200FE25A8 /* ROMEMDEV.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ROMEMDEV.c; sourceTree = "<group>"; };
28CE8EA41CD4C3B200FE25A8 /* ROMEMDEV.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ROMEMDEV.h; sourceTree = "<group>"; };
28CE8EA51CD4C3B200FE25A8 /* RTCEMDEV.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = RTCEMDEV.c; sourceTree = "<group>"; };
28CE8EA61CD4C3B200FE25A8 /* RTCEMDEV.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RTCEMDEV.h; sourceTree = "<group>"; };
28CE8EA71CD4C3B200FE25A8 /* SCCEMDEV.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SCCEMDEV.c; sourceTree = "<group>"; };
28CE8EA81CD4C3B200FE25A8 /* SCCEMDEV.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SCCEMDEV.h; sourceTree = "<group>"; };
28CE8EA91CD4C3B200FE25A8 /* SCRNEMDV.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SCRNEMDV.c; sourceTree = "<group>"; };
28CE8EAA1CD4C3B200FE25A8 /* SCRNEMDV.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SCRNEMDV.h; sourceTree = "<group>"; };
28CE8EAB1CD4C3B200FE25A8 /* SCRNMAPR.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SCRNMAPR.h; sourceTree = "<group>"; };
28CE8EAC1CD4C3B200FE25A8 /* SCSIEMDV.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SCSIEMDV.c; sourceTree = "<group>"; };
28CE8EAD1CD4C3B200FE25A8 /* SCSIEMDV.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SCSIEMDV.h; sourceTree = "<group>"; };
28CE8EAE1CD4C3B200FE25A8 /* SNDEMDEV.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SNDEMDEV.c; sourceTree = "<group>"; };
28CE8EAF1CD4C3B200FE25A8 /* SNDEMDEV.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SNDEMDEV.h; sourceTree = "<group>"; };
28CE8EB01CD4C3B200FE25A8 /* SONYEMDV.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SONYEMDV.c; sourceTree = "<group>"; };
28CE8EB11CD4C3B200FE25A8 /* SONYEMDV.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SONYEMDV.h; sourceTree = "<group>"; };
28CE8EB21CD4C3B200FE25A8 /* SYSDEPNS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SYSDEPNS.h; sourceTree = "<group>"; };
28CE8EB31CD4C3B200FE25A8 /* VIAEMDEV.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = VIAEMDEV.c; sourceTree = "<group>"; };
28CE8EB41CD4C3B200FE25A8 /* VIAEMDEV.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VIAEMDEV.h; sourceTree = "<group>"; };
28CE8ECB1CD4CDC500FE25A8 /* MYOSGLUE.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MYOSGLUE.m; sourceTree = "<group>"; };
28CE8ECD1CD4D1A100FE25A8 /* STRCONST.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = STRCONST.h; sourceTree = "<group>"; };
28CE8ECF1CD4D5B900FE25A8 /* INTLCHAR.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = INTLCHAR.h; 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>"; };
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>"; };
@ -39,6 +100,61 @@
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
28CE8E871CD4C33E00FE25A8 /* mnvm_cfg */ = {
isa = PBXGroup;
children = (
28CE8E881CD4C33E00FE25A8 /* CNFGGLOB.h */,
28CE8E891CD4C33E00FE25A8 /* CNFGRAPI.h */,
28CE8E8A1CD4C33E00FE25A8 /* EMCONFIG.h */,
);
path = mnvm_cfg;
sourceTree = "<group>";
};
28CE8E8E1CD4C3B200FE25A8 /* mnvm_core */ = {
isa = PBXGroup;
children = (
28CE8ECF1CD4D5B900FE25A8 /* INTLCHAR.h */,
28CE8ECD1CD4D1A100FE25A8 /* STRCONST.h */,
28CE8E8F1CD4C3B200FE25A8 /* COMOSGLU.h */,
28CE8E911CD4C3B200FE25A8 /* DATE2SEC.h */,
28CE8E921CD4C3B200FE25A8 /* ENDIANAC.h */,
28CE8E931CD4C3B200FE25A8 /* GLOBGLUE.c */,
28CE8E941CD4C3B200FE25A8 /* GLOBGLUE.h */,
28CE8E961CD4C3B200FE25A8 /* IWMEMDEV.c */,
28CE8E971CD4C3B200FE25A8 /* IWMEMDEV.h */,
28CE8E981CD4C3B200FE25A8 /* KBRDEMDV.c */,
28CE8E991CD4C3B200FE25A8 /* KBRDEMDV.h */,
28CE8E9A1CD4C3B200FE25A8 /* M68KITAB.c */,
28CE8E9B1CD4C3B200FE25A8 /* M68KITAB.h */,
28CE8E9C1CD4C3B200FE25A8 /* MINEM68K.c */,
28CE8E9D1CD4C3B200FE25A8 /* MINEM68K.h */,
28CE8E9E1CD4C3B200FE25A8 /* MOUSEMDV.c */,
28CE8E9F1CD4C3B200FE25A8 /* MOUSEMDV.h */,
28CE8EA01CD4C3B200FE25A8 /* MYOSGLUE.h */,
28CE8EA11CD4C3B200FE25A8 /* PROGMAIN.c */,
28CE8EA21CD4C3B200FE25A8 /* PROGMAIN.h */,
28CE8EA31CD4C3B200FE25A8 /* ROMEMDEV.c */,
28CE8EA41CD4C3B200FE25A8 /* ROMEMDEV.h */,
28CE8EA51CD4C3B200FE25A8 /* RTCEMDEV.c */,
28CE8EA61CD4C3B200FE25A8 /* RTCEMDEV.h */,
28CE8EA71CD4C3B200FE25A8 /* SCCEMDEV.c */,
28CE8EA81CD4C3B200FE25A8 /* SCCEMDEV.h */,
28CE8EA91CD4C3B200FE25A8 /* SCRNEMDV.c */,
28CE8EAA1CD4C3B200FE25A8 /* SCRNEMDV.h */,
28CE8EAB1CD4C3B200FE25A8 /* SCRNMAPR.h */,
28CE8EAC1CD4C3B200FE25A8 /* SCSIEMDV.c */,
28CE8EAD1CD4C3B200FE25A8 /* SCSIEMDV.h */,
28CE8EAE1CD4C3B200FE25A8 /* SNDEMDEV.c */,
28CE8EAF1CD4C3B200FE25A8 /* SNDEMDEV.h */,
28CE8EB01CD4C3B200FE25A8 /* SONYEMDV.c */,
28CE8EB11CD4C3B200FE25A8 /* SONYEMDV.h */,
28CE8EB21CD4C3B200FE25A8 /* SYSDEPNS.h */,
28CE8EB31CD4C3B200FE25A8 /* VIAEMDEV.c */,
28CE8EB41CD4C3B200FE25A8 /* VIAEMDEV.h */,
);
path = mnvm_core;
sourceTree = "<group>";
};
28F676B41CD15E0B00FC6FA6 = {
isa = PBXGroup;
children = (
@ -60,12 +176,17 @@
children = (
28F676C31CD15E0B00FC6FA6 /* AppDelegate.h */,
28F676C41CD15E0B00FC6FA6 /* AppDelegate.m */,
28CE8ECB1CD4CDC500FE25A8 /* MYOSGLUE.m */,
28CE8ED41CD4F56C00FE25A8 /* ScreenView.h */,
28CE8ED51CD4F56C00FE25A8 /* ScreenView.m */,
28F676C61CD15E0B00FC6FA6 /* ViewController.h */,
28F676C71CD15E0B00FC6FA6 /* ViewController.m */,
28F676C91CD15E0B00FC6FA6 /* Main.storyboard */,
28F676CC1CD15E0B00FC6FA6 /* Assets.xcassets */,
28F676CE1CD15E0B00FC6FA6 /* LaunchScreen.storyboard */,
28F676D11CD15E0B00FC6FA6 /* Info.plist */,
28CE8E8E1CD4C3B200FE25A8 /* mnvm_core */,
28CE8E871CD4C33E00FE25A8 /* mnvm_cfg */,
28F676C01CD15E0B00FC6FA6 /* Supporting Files */,
);
path = "Mini vMac";
@ -149,8 +270,25 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
28CE8EC01CD4C3B200FE25A8 /* SCSIEMDV.c in Sources */,
28CE8EC11CD4C3B200FE25A8 /* SNDEMDEV.c in Sources */,
28CE8EB51CD4C3B200FE25A8 /* GLOBGLUE.c in Sources */,
28CE8EBF1CD4C3B200FE25A8 /* SCRNEMDV.c in Sources */,
28CE8EBD1CD4C3B200FE25A8 /* RTCEMDEV.c in Sources */,
28CE8EB61CD4C3B200FE25A8 /* IWMEMDEV.c in Sources */,
28CE8ED61CD4F56C00FE25A8 /* ScreenView.m in Sources */,
28CE8EB91CD4C3B200FE25A8 /* MINEM68K.c in Sources */,
28CE8EBA1CD4C3B200FE25A8 /* MOUSEMDV.c in Sources */,
28CE8EC31CD4C3B200FE25A8 /* VIAEMDEV.c in Sources */,
28CE8EB81CD4C3B200FE25A8 /* M68KITAB.c in Sources */,
28CE8EB71CD4C3B200FE25A8 /* KBRDEMDV.c in Sources */,
28CE8EBC1CD4C3B200FE25A8 /* ROMEMDEV.c in Sources */,
28CE8EBB1CD4C3B200FE25A8 /* PROGMAIN.c in Sources */,
28F676C81CD15E0B00FC6FA6 /* ViewController.m in Sources */,
28CE8EC21CD4C3B200FE25A8 /* SONYEMDV.c in Sources */,
28F676C51CD15E0B00FC6FA6 /* AppDelegate.m in Sources */,
28CE8EBE1CD4C3B200FE25A8 /* SCCEMDEV.c in Sources */,
28CE8ECC1CD4CDC500FE25A8 /* MYOSGLUE.m in Sources */,
28F676C21CD15E0B00FC6FA6 /* main.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
@ -267,7 +405,7 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
INFOPLIST_FILE = "Mini vMac/Info.plist";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = "net.namedfork.Mini-vMac";
PRODUCT_BUNDLE_IDENTIFIER = net.namedfork.minivmac;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Debug;
@ -278,7 +416,7 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
INFOPLIST_FILE = "Mini vMac/Info.plist";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = "net.namedfork.Mini-vMac";
PRODUCT_BUNDLE_IDENTIFIER = net.namedfork.minivmac;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Release;
@ -302,6 +440,7 @@
28F676D61CD15E0B00FC6FA6 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};

View File

@ -12,6 +12,7 @@
@property (strong, nonatomic) UIWindow *window;
+ (instancetype)sharedInstance;
@end

View File

@ -7,6 +7,14 @@
//
#import "AppDelegate.h"
#include "CNFGRAPI.h"
#include "SYSDEPNS.h"
#include "MYOSGLUE.h"
IMPORTPROC RunEmulator(void);
IMPORTPROC SetSpeedStopped(blnr stopped);
static AppDelegate *sharedAppDelegate = nil;
@interface AppDelegate ()
@ -14,32 +22,25 @@
@implementation AppDelegate
+ (instancetype)sharedInstance {
return sharedAppDelegate;
}
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
[self performSelector:@selector(runEmulator) withObject:nil afterDelay:1.0];
return YES;
}
- (void)applicationWillResignActive:(UIApplication *)application {
// Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
// Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
}
- (void)applicationDidEnterBackground:(UIApplication *)application {
// Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
// If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
SetSpeedStopped(trueblnr);
}
- (void)applicationWillEnterForeground:(UIApplication *)application {
// Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
SetSpeedStopped(falseblnr);
}
- (void)applicationDidBecomeActive:(UIApplication *)application {
// Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
}
- (void)applicationWillTerminate:(UIApplication *)application {
// Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
- (void)runEmulator {
RunEmulator();
}
@end

View File

@ -1,13 +1,14 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="6211" systemVersion="14A298i" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="BYZ-38-t0r">
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="10116" systemVersion="15E65" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="BYZ-38-t0r">
<dependencies>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="6204"/>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="10085"/>
</dependencies>
<scenes>
<!--View Controller-->
<scene sceneID="tne-QT-ifu">
<objects>
<viewController id="BYZ-38-t0r" customClass="ViewController" customModuleProvider="" sceneMemberID="viewController">
<viewController id="BYZ-38-t0r" customClass="ViewController" sceneMemberID="viewController">
<layoutGuides>
<viewControllerLayoutGuide type="top" id="y3c-jy-aDJ"/>
<viewControllerLayoutGuide type="bottom" id="wfy-db-euE"/>
@ -15,11 +16,24 @@
<view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
<rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="70W-4V-tYr" customClass="ScreenView">
<rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
<color key="backgroundColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
</view>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
<constraints>
<constraint firstItem="70W-4V-tYr" firstAttribute="bottom" secondItem="wfy-db-euE" secondAttribute="top" id="Xn1-gS-YTJ"/>
<constraint firstItem="70W-4V-tYr" firstAttribute="leading" secondItem="8bC-Xf-vdC" secondAttribute="leading" id="ddo-cc-64n"/>
<constraint firstItem="70W-4V-tYr" firstAttribute="top" secondItem="8bC-Xf-vdC" secondAttribute="top" id="e9i-3F-kaI"/>
<constraint firstAttribute="trailing" secondItem="70W-4V-tYr" secondAttribute="trailing" id="kDH-sv-91j"/>
</constraints>
</view>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="548" y="391"/>
</scene>
</scenes>
</document>

View File

@ -15,13 +15,15 @@
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<string>2.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>UIFileSharingEnabled</key>
<true/>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIMainStoryboardFile</key>
@ -30,6 +32,10 @@
<array>
<string>armv7</string>
</array>
<key>UIRequiresFullScreen</key>
<true/>
<key>UIStatusBarHidden</key>
<true/>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>

1709
Mini vMac/MYOSGLUE.m Normal file

File diff suppressed because it is too large Load Diff

16
Mini vMac/ScreenView.h Normal file
View File

@ -0,0 +1,16 @@
//
// ScreenView.h
// Mini vMac
//
// Created by Jesús A. Álvarez on 30/04/2016.
// Copyright © 2016 namedfork. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface ScreenView : UIView
+ (instancetype)sharedScreenView;
- (void)updateScreen:(CGImageRef)screenImage;
@end

57
Mini vMac/ScreenView.m Normal file
View File

@ -0,0 +1,57 @@
//
// ScreenView.m
// Mini vMac
//
// Created by Jesús A. Álvarez on 30/04/2016.
// Copyright © 2016 namedfork. All rights reserved.
//
#import "ScreenView.h"
#import "CNFGGLOB.h"
static ScreenView *sharedScreenView = nil;
@implementation ScreenView
{
CGImageRef screenImage;
CGRect screenBounds;
}
- (void)awakeFromNib {
[super awakeFromNib];
sharedScreenView = self;
}
+ (instancetype)sharedScreenView {
return sharedScreenView;
}
- (void)updateScreen:(CGImageRef)newScreenImage {
CGImageRelease(screenImage);
screenImage = CGImageRetain(newScreenImage);
[self setNeedsDisplay];
}
- (void)layoutSubviews {
CGSize screenSize = CGSizeMake(vMacScreenWidth, vMacScreenHeight);
CGRect viewBounds = self.bounds;
CGFloat screenScale = MAX(screenSize.width / viewBounds.size.width, screenSize.height / viewBounds.size.height);
screenBounds = CGRectMake(0, 0, screenSize.width / screenScale, screenSize.height / screenScale);
screenBounds.origin.x = (viewBounds.size.width - screenBounds.size.width)/2;
screenBounds = CGRectIntegral(screenBounds);
[self setNeedsDisplay];
}
- (void)drawRect:(CGRect)rect {
// Draw screenImage
CGImageRef imageRef = CGImageRetain(screenImage);
if (imageRef) {
CGContextRef ctx = UIGraphicsGetCurrentContext();
CGContextTranslateCTM(ctx, 0, screenBounds.size.height);
CGContextScaleCTM(ctx, 1.0, -1.0);
CGContextDrawImage(ctx, screenBounds, imageRef);
CGImageRelease(imageRef);
}
}
@end

View File

@ -14,14 +14,8 @@
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
- (BOOL)prefersStatusBarHidden {
return YES;
}
@end

View File

@ -0,0 +1,92 @@
/*
Configuration options used by both platform specific
and 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.
*/
#include <stdint.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
/* --- 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 0
#define HaveRealsi6b 0
/* --- 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
/* capabilities provided by platform specific code */
#define MySoundEnabled 1
#define MySoundRecenterSilence 0
#define kLn2SoundSampSz 4
#define dbglog_HAVE 0
#define NumDrives 16
#define IncludeSonyRawMode 1
#define IncludeSonyGetName 1
#define IncludeSonyNew 0
#define IncludeSonyNameNew 0
#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

View File

@ -0,0 +1,35 @@
//#include <Carbon/Carbon.h>
//#include <AGL/agl.h>
#include <unistd.h>
#define MyAppIsBundle 1
#define kMacCreatorSig 'MnvM'
#define RomFileName "vMac.ROM"
#define EnableDragDrop 1
#define EnableAltKeysMode 0
#define SwapCommandControl 0
#define VarFullScreen 1
#define WantInitFullScreen 0
#define MayFullScreen 1
#define MayNotFullScreen 1
#define WantInitMagnify 0
#define EnableMagnify 0
#define WantInitRunInBackground 0
#define WantInitNotAutoSlow 0
#define WantInitSpeedValue 3
#define NeedRequestInsertDisk 1
#define NeedDoMoreCommandsMsg 1
#define NeedDoAboutMsg 1
#define UseControlKeys 0
#define UseActvCode 0
#define EnableDemoMsg 0
/* version and other info to display to user */
#define NeedIntlChars 1
#define kStrAppName "Mini vMac"
#define kAppVariationStr "minivmac-3.4.0-ios"
#define kStrCopyrightYear "2008-2016"
#define kMaintainerName "Jesús A. Álvarez"
#define kStrHomePage "http://www.namedfork.net/minivmac/"

View File

@ -0,0 +1,172 @@
/*
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.
*/
#define EmClassicKbrd 1
#define EmADB 0
#define EmRTC 1
#define EmPMU 0
#define EmVIA2 0
#define Use68020 0
#define EmFPU 0
#define EmMMU 0
#define EmASC 0
#define CurEmMd kEmMd_Plus
#define kMyClockMult 1
#define WantCycByPriOp 1
#define WantCloserCyc 0
#define kRAMa_Size 0x00200000
#define kRAMb_Size 0x00200000
#define IncludeVidMem 0
#define EmVidCard 0
#define MaxATTListN 16
#define IncludeExtnPbufs 1
#define IncludeExtnHostTextClipExchange 1
#define Sony_SupportDC42 1
#define Sony_SupportTags 1
#define Sony_WantChecksumsUpdated 1
#define Sony_VerifyChecksums 0
#define CaretBlinkTime 0x03
#define SpeakerVol 0x07
#define DoubleClickTime 0x05
#define MenuBlink 0x03
#define AutoKeyThresh 0x06
#define AutoKeyRate 0x03
/* 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
};
/* VIA configuration */
#define VIA1_ORA_FloatVal 0xFF
#define VIA1_ORB_FloatVal 0xFF
#define VIA1_ORA_CanIn 0x80
#define VIA1_ORA_CanOut 0x7F
#define VIA1_ORB_CanIn 0x79
#define VIA1_ORB_CanOut 0x87
#define VIA1_IER_Never0 (1 << 1)
#define VIA1_IER_Never1 ((1 << 3) | (1 << 4))
#define VIA1_CB2modesAllowed 0x01
#define VIA1_CA2modesAllowed 0x01
#define Mouse_Enabled SCC_InterruptsEnabled
#define VIA1_iCA1_PulseNtfy VIA1_iCA1_Sixtieth_PulseNtfy
#define Sixtieth_PulseNtfy VIA1_iCA1_Sixtieth_PulseNtfy
#define VIA1_iCA2_PulseNtfy VIA1_iCA2_RTC_OneSecond_PulseNtfy
#define RTC_OneSecond_PulseNtfy VIA1_iCA2_RTC_OneSecond_PulseNtfy
#define GetSoundInvertTime VIA1_GetT1InvertTime
#define KYBD_ShiftInData VIA1_ShiftOutData
#define KYBD_ShiftOutData VIA1_ShiftInData
#define kCheckSumRom_Size kROM_Size
#define kExtn_Block_Base 0x00F40000
#define kExtn_ln2Spc 5
#define kROM_Base 0x00400000
#define kROM_ln2Spc 20
#define WantDisasm 0
#define ExtraAbnormalReports 0

1
Mini vMac/mnvm_core/COMOSGLU.h Executable file

File diff suppressed because one or more lines are too long

1
Mini vMac/mnvm_core/DATE2SEC.h Executable file
View File

@ -0,0 +1 @@
/* 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; }

1
Mini vMac/mnvm_core/ENDIANAC.h Executable file
View File

@ -0,0 +1 @@
/* 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 #if 0 /* works in GCC from Apple. others? */ static inline ui5r MySwapUi5r(ui5r _data) { __asm__ ("bswap %0" : "+r" (_data)); return _data; } #define HaveMySwapUi5r 1 #endif #ifndef HaveMySwapUi5r #define HaveMySwapUi5r 0 #endif #define do_get_mem_byte(a) ((ui3r)*((ui3b *)(a))) #if BigEndianUnaligned #define do_get_mem_word(a) ((ui4r)*((ui4b *)(a))) #else static MayInline 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 static MayInline ui5r do_get_mem_long(ui3p a) { #if LittleEndianUnaligned #if 0 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 static MayInline 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 static MayInline 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

1
Mini vMac/mnvm_core/GLOBGLUE.c Executable file

File diff suppressed because one or more lines are too long

1
Mini vMac/mnvm_core/GLOBGLUE.h Executable file

File diff suppressed because one or more lines are too long

1
Mini vMac/mnvm_core/INTLCHAR.h Executable file

File diff suppressed because one or more lines are too long

1
Mini vMac/mnvm_core/IWMEMDEV.c Executable file
View File

@ -0,0 +1 @@
/* 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" #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 ReportAbnormal("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 : ReportAbnormal("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
Mini vMac/mnvm_core/IWMEMDEV.h Executable file
View File

@ -0,0 +1 @@
/* 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
Mini vMac/mnvm_core/KBRDEMDV.c Executable file
View File

@ -0,0 +1 @@
/* 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 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) { ReportAbnormal("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) { ReportAbnormal("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
Mini vMac/mnvm_core/KBRDEMDV.h Executable file
View File

@ -0,0 +1 @@
/* 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);

1
Mini vMac/mnvm_core/M68KITAB.c Executable file

File diff suppressed because one or more lines are too long

1
Mini vMac/mnvm_core/M68KITAB.h Executable file
View File

@ -0,0 +1 @@
/* 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, kIKindRolopNM, kIKindRolopND, kIKindRolopDD, kIKindBitOpDD, kIKindBitOpDM, kIKindBitOpND, kIKindBitOpNM, kIKindAndI, kIKindAndEaD, kIKindAndDEa, kIKindOrI, kIKindOrDEa, kIKindOrEaD, kIKindEor, kIKindEorI, kIKindNot, kIKindScc, kIKindNegXB, kIKindNegXW, kIKindNegXL, kIKindNegB, kIKindNegW, kIKindNegL, kIKindEXTW, kIKindEXTL, kIKindMulU, kIKindMulS, kIKindDivU, kIKindDivS, kIKindExgdd, kIKindExgaa, kIKindExgda, kIKindMoveCCREa, kIKindMoveEaCCR, kIKindMoveSREa, kIKindMoveEaSR, kIKindBinOpStatusCCR, kIKindMOVEMApRW, kIKindMOVEMRmMW, kIKindMOVEMrm, kIKindMOVEMmr, kIKindAbcdr, kIKindAbcdm, kIKindSbcdr, kIKindSbcdm, kIKindNbcd, kIKindRte, kIKindNop, kIKindMoveP, kIKindIllegal, kIKindChkW, kIKindTrap, kIKindTrapV, kIKindRtr, kIKindLink, kIKindUnlk, kIKindMoveRUSP, kIKindMoveUSPR, kIKindTas, kIKindF, kIKindCallMorRtm, kIKindStop, kIKindReset, #if Use68020 kIKindBraL, kIKindBccL, kIKindBsrL, kIKindEXTBL, kIKindTRAPcc, kIKindChkL, kIKindBkpt, kIKindDivL, kIKindMulL, kIKindRtd, kIKindMoveC, kIKindLinkL, kIKindPack, kIKindUnpk, kIKindCHK2orCMP2, kIKindCAS2, kIKindCAS, kIKindMoveS, kIKindBitField, #endif kNumIKinds }; enum { kAMdReg, kAMdIndirect, kAMdAPosIncB, kAMdAPosIncW, kAMdAPosIncL, kAMdAPreDecB, kAMdAPreDecW, kAMdAPreDecL, kAMdADisp, kAMdAIndex, kAMdAbsW, kAMdAbsL, kAMdPCDisp, kAMdPCIndex, kAMdImmedB, kAMdImmedW, kAMdImmedL, kAMdDat4, kNumAMds }; enum { kArgkRegB, kArgkRegW, kArgkRegL, kArgkMemB, kArgkMemW, kArgkMemL, kArgkCnst, kNumArgks }; struct DecOpR { /* expected size : 8 bytes */ ui5b A; ui5b B; }; typedef struct DecOpR DecOpR; #define GetUi5rField(v, shift, sz) \ (((v) >> (shift)) & ((1UL << (sz)) - 1)) #define SetUi5rField(v, shift, sz, x) \ (v) = (((v) & ~ (((1UL << (sz)) - 1) << (shift))) \ | (((x) & ((1UL << (sz)) - 1)) << (shift))) #define GetDcoFldAMd(f) (GetUi5rField((f), 16, 8)) #define GetDcoFldArgk(f) (GetUi5rField((f), 24, 4)) #define GetDcoFldArgDat(f) (GetUi5rField((f), 28, 4)) #define SetDcoFldAMd(f, x) SetUi5rField((f), 16, 8, x) #define SetDcoFldArgk(f, x) SetUi5rField((f), 24, 4, x) #define SetDcoFldArgDat(f, x) SetUi5rField((f), 28, 4, x) #define GetDcoMainClas(p) (GetUi5rField((p)->A, 0, 16)) #define GetDcoDstAMd(p) (GetDcoFldAMd((p)->A)) #define GetDcoDstArgk(p) (GetDcoFldArgk((p)->A)) #define GetDcoDstArgDat(p) (GetDcoFldArgDat((p)->A)) #define GetDcoSrcAMd(p) (GetDcoFldAMd((p)->B)) #define GetDcoSrcArgk(p) (GetDcoFldArgk((p)->B)) #define GetDcoSrcArgDat(p) (GetDcoFldArgDat((p)->B)) #define GetDcoCycles(p) (GetUi5rField((p)->B, 0, 16)) #define SetDcoMainClas(p, x) SetUi5rField((p)->A, 0, 16, x) #define SetDcoDstAMd(p, x) SetDcoFldAMd((p)->A, x) #define SetDcoDstArgk(p, x) SetDcoFldArgk((p)->A, x) #define SetDcoDstArgDat(p, x) SetDcoFldArgDat((p)->A, x) #define SetDcoSrcAMd(p, x) SetDcoFldAMd((p)->B, x) #define SetDcoSrcArgk(p, x) SetDcoFldArgk((p)->B, x) #define SetDcoSrcArgDat(p, x) SetDcoFldArgDat((p)->B, x) #define SetDcoCycles(p, x) SetUi5rField((p)->B, 0, 16, x) EXPORTPROC M68KITAB_setup(DecOpR *p);

1
Mini vMac/mnvm_core/MINEM68K.c Executable file

File diff suppressed because one or more lines are too long

1
Mini vMac/mnvm_core/MINEM68K.h Executable file
View File

@ -0,0 +1 @@
/* 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
Mini vMac/mnvm_core/MOUSEMDV.c Executable file
View File

@ -0,0 +1 @@
/* 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" #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
Mini vMac/mnvm_core/MOUSEMDV.h Executable file
View File

@ -0,0 +1 @@
/* 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
Mini vMac/mnvm_core/MYOSGLUE.h Executable file

File diff suppressed because one or more lines are too long

1
Mini vMac/mnvm_core/PROGMAIN.c Executable file

File diff suppressed because one or more lines are too long

1
Mini vMac/mnvm_core/PROGMAIN.h Executable file
View File

@ -0,0 +1 @@
/* 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
Mini vMac/mnvm_core/ROMEMDEV.c Executable file

File diff suppressed because one or more lines are too long

1
Mini vMac/mnvm_core/ROMEMDEV.h Executable file
View File

@ -0,0 +1 @@
/* 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
Mini vMac/mnvm_core/RTCEMDEV.c Executable file

File diff suppressed because one or more lines are too long

1
Mini vMac/mnvm_core/RTCEMDEV.h Executable file
View File

@ -0,0 +1 @@
/* 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);

1
Mini vMac/mnvm_core/SCCEMDEV.c Executable file

File diff suppressed because one or more lines are too long

1
Mini vMac/mnvm_core/SCCEMDEV.h Executable file
View File

@ -0,0 +1 @@
/* 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
Mini vMac/mnvm_core/SCRNEMDV.c Executable file
View File

@ -0,0 +1 @@
/* 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
Mini vMac/mnvm_core/SCRNEMDV.h Executable file
View File

@ -0,0 +1 @@
/* 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
Mini vMac/mnvm_core/SCRNMAPR.h Executable file
View File

@ -0,0 +1 @@
/* 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
Mini vMac/mnvm_core/SCSIEMDV.c Executable file
View File

@ -0,0 +1 @@
/* 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" #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
Mini vMac/mnvm_core/SCSIEMDV.h Executable file
View File

@ -0,0 +1 @@
/* 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
Mini vMac/mnvm_core/SNDEMDEV.c Executable file
View File

@ -0,0 +1 @@
/* 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" #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; ui3p addr = addy + (2 * StartOffset) + RAM; 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++ = *addr #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
Mini vMac/mnvm_core/SNDEMDEV.h Executable file
View File

@ -0,0 +1 @@
/* 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

1
Mini vMac/mnvm_core/SONYEMDV.c Executable file

File diff suppressed because one or more lines are too long

1
Mini vMac/mnvm_core/SONYEMDV.h Executable file
View File

@ -0,0 +1 @@
/* 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
Mini vMac/mnvm_core/STRCONST.h Executable file

File diff suppressed because one or more lines are too long

1
Mini vMac/mnvm_core/SYSDEPNS.h Executable file
View File

@ -0,0 +1 @@
/* 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 int #define trueblnr 1 #define falseblnr 0 #define nullpr ((void *) 0) #define anyp ui3p /* pascal string, single byte characters */ #define ps3p ui3p #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 #define FORWARDFUNC LOCALFUNC #ifdef AllFiles #define GLOBALFUNC LOCALFUNC #define EXPORTFUNC LOCALFUNC #else #define GLOBALFUNC #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

1
Mini vMac/mnvm_core/VIAEMDEV.c Executable file

File diff suppressed because one or more lines are too long

1
Mini vMac/mnvm_core/VIAEMDEV.h Executable file
View File

@ -0,0 +1 @@
/* 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);