update to Mini vMac 3.5.8 (resolves #21)

This commit is contained in:
Jesús A. Álvarez 2017-09-23 15:38:28 +02:00
parent cd39334ebb
commit 49d44a6847
71 changed files with 137 additions and 39744 deletions

View File

@ -218,10 +218,8 @@
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>"; };
283423301CF9C0F10088B634 /* FB1BPP2I.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = FB1BPP2I.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>"; };
283423331CF9C0F10088B634 /* FPMATHNT.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = FPMATHNT.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>"; };
@ -257,7 +255,6 @@
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>"; };
283423571CF9C0F10088B634 /* STRCONST.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = STRCONST.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>"; };
@ -301,6 +298,8 @@
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>"; };
@ -479,12 +478,11 @@
2834232D1CF9C0F10088B634 /* DISAM68K.c */,
2834232E1CF9C0F10088B634 /* DISAM68K.h */,
2834232F1CF9C0F10088B634 /* ENDIANAC.h */,
283423301CF9C0F10088B634 /* FB1BPP2I.h */,
283423311CF9C0F10088B634 /* FPCPEMDV.h */,
283423321CF9C0F10088B634 /* FPMATHEM.h */,
283423331CF9C0F10088B634 /* FPMATHNT.h */,
283423341CF9C0F10088B634 /* GLOBGLUE.c */,
283423351CF9C0F10088B634 /* GLOBGLUE.h */,
28C63A5D1F76970000BB02B3 /* HPMCHACK.h */,
283423361CF9C0F10088B634 /* INTLCHAR.h */,
283423371CF9C0F10088B634 /* IWMEMDEV.c */,
283423381CF9C0F10088B634 /* IWMEMDEV.h */,
@ -518,7 +516,7 @@
283423541CF9C0F10088B634 /* SNDEMDEV.h */,
283423551CF9C0F10088B634 /* SONYEMDV.c */,
283423561CF9C0F10088B634 /* SONYEMDV.h */,
283423571CF9C0F10088B634 /* STRCONST.h */,
28C63A5E1F76979500BB02B3 /* STRCNENG.h */,
283423581CF9C0F10088B634 /* SYSDEPNS.h */,
283423591CF9C0F10088B634 /* VIA2EMDV.c */,
2834235A1CF9C0F10088B634 /* VIA2EMDV.h */,

View File

@ -1,5 +1,15 @@
{
"images" : [
{
"idiom" : "iphone",
"size" : "20x20",
"scale" : "2x"
},
{
"idiom" : "iphone",
"size" : "20x20",
"scale" : "3x"
},
{
"size" : "29x29",
"idiom" : "iphone",
@ -36,6 +46,16 @@
"filename" : "Icon-60@3x.png",
"scale" : "3x"
},
{
"idiom" : "ipad",
"size" : "20x20",
"scale" : "1x"
},
{
"idiom" : "ipad",
"size" : "20x20",
"scale" : "2x"
},
{
"size" : "29x29",
"idiom" : "ipad",

View File

@ -1,9 +1,13 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="10117" systemVersion="15F34" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="BYZ-38-t0r">
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="11762" systemVersion="16D32" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="BYZ-38-t0r">
<device id="retina4_7" orientation="portrait">
<adaptation id="fullscreen"/>
</device>
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="10085"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="11757"/>
<capability name="Constraints to layout margins" minToolsVersion="6.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<scenes>
<!--View Controller-->
@ -15,15 +19,15 @@
<viewControllerLayoutGuide type="bottom" id="wfy-db-euE"/>
</layoutGuides>
<view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
<rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="70W-4V-tYr" customClass="ScreenView">
<view contentMode="scaleToFill" misplaced="YES" 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"/>
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</view>
</subviews>
<color key="backgroundColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<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"/>
@ -46,18 +50,18 @@
<objects>
<tableViewController id="WUA-f8-k8g" customClass="SettingsViewController" sceneMemberID="viewController">
<tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="grouped" separatorStyle="default" rowHeight="44" sectionHeaderHeight="18" sectionFooterHeight="18" id="9gA-gD-7Wx">
<rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="backgroundColor" red="0.93725490199999995" green="0.93725490199999995" blue="0.95686274510000002" alpha="1" colorSpace="calibratedRGB"/>
<color key="backgroundColor" red="0.93725490199999995" green="0.93725490199999995" blue="0.95686274510000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<prototypes>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="none" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="speed" id="v4I-0T-H8m">
<rect key="frame" x="0.0" y="93.5" width="600" height="44"/>
<rect key="frame" x="0.0" y="55.5" width="375" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="v4I-0T-H8m" id="cO5-De-1JT">
<rect key="frame" x="0.0" y="0.0" width="600" height="43.5"/>
<rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<segmentedControl opaque="NO" tag="128" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="plain" selectedSegmentIndex="3" translatesAutoresizingMaskIntoConstraints="NO" id="gQ6-2l-dni">
<segmentedControl opaque="NO" tag="128" contentMode="scaleToFill" misplaced="YES" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="plain" selectedSegmentIndex="3" translatesAutoresizingMaskIntoConstraints="NO" id="gQ6-2l-dni">
<rect key="frame" x="8" y="8" width="584" height="29"/>
<segments>
<segment title="1x"/>
@ -81,13 +85,13 @@
</tableViewCellContentView>
</tableViewCell>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="none" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="mouse" id="JgY-zN-3ID">
<rect key="frame" x="0.0" y="137.5" width="600" height="44"/>
<rect key="frame" x="0.0" y="99.5" width="375" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="JgY-zN-3ID" id="iUk-se-WGk">
<rect key="frame" x="0.0" y="0.0" width="600" height="43.5"/>
<rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<segmentedControl opaque="NO" tag="128" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="plain" selectedSegmentIndex="0" translatesAutoresizingMaskIntoConstraints="NO" id="jgK-lW-V9w">
<segmentedControl opaque="NO" tag="128" contentMode="scaleToFill" misplaced="YES" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="plain" selectedSegmentIndex="0" translatesAutoresizingMaskIntoConstraints="NO" id="jgK-lW-V9w">
<rect key="frame" x="178" y="7" width="244" height="29"/>
<constraints>
<constraint firstAttribute="width" constant="244" id="5ej-m2-BJ6"/>
@ -108,41 +112,41 @@
</tableViewCellContentView>
</tableViewCell>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="keyboard" textLabel="6WO-0z-y7c" style="IBUITableViewCellStyleDefault" id="q7C-00-4ss">
<rect key="frame" x="0.0" y="181.5" width="600" height="44"/>
<rect key="frame" x="0.0" y="143.5" width="375" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="q7C-00-4ss" id="yUn-mI-DwM">
<rect key="frame" x="0.0" y="0.0" width="600" height="43.5"/>
<rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Title" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="6WO-0z-y7c">
<rect key="frame" x="15" y="0.0" width="570" height="43.5"/>
<rect key="frame" x="15" y="0.0" width="345" height="43.5"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="16"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
</tableViewCellContentView>
</tableViewCell>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationWidth="60" reuseIdentifier="machine" textLabel="znE-ML-UrQ" detailTextLabel="xcq-HY-ZDe" style="IBUITableViewCellStyleSubtitle" id="MGj-K1-5lZ">
<rect key="frame" x="0.0" y="225.5" width="600" height="44"/>
<rect key="frame" x="0.0" y="187.5" width="375" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="MGj-K1-5lZ" id="ueO-zm-JQP">
<rect key="frame" x="0.0" y="0.0" width="600" height="43.5"/>
<rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Title" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="znE-ML-UrQ">
<rect key="frame" x="15" y="6" width="31.5" height="19.5"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="16"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Detail" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="xcq-HY-ZDe">
<rect key="frame" x="15" y="25.5" width="30.5" height="13.5"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="11"/>
<color key="textColor" red="0.5568627451" green="0.5568627451" blue="0.57647058819999997" alpha="1" colorSpace="calibratedRGB"/>
<color key="textColor" red="0.5568627451" green="0.5568627451" blue="0.57647058819999997" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
@ -150,41 +154,41 @@
<inset key="separatorInset" minX="0.0" minY="0.0" maxX="0.0" maxY="0.0"/>
</tableViewCell>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="about" textLabel="YWX-qF-gPj" detailTextLabel="xr3-v1-hzM" style="IBUITableViewCellStyleValue1" id="Mon-vq-IrO">
<rect key="frame" x="0.0" y="269.5" width="600" height="44"/>
<rect key="frame" x="0.0" y="231.5" width="375" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="Mon-vq-IrO" id="mGZ-Jb-6j4">
<rect key="frame" x="0.0" y="0.0" width="600" height="43.5"/>
<rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Title" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="YWX-qF-gPj">
<rect key="frame" x="15" y="12" width="31.5" height="19.5"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="16"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Detail" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="xr3-v1-hzM">
<rect key="frame" x="543.5" y="12" width="41.5" height="19.5"/>
<rect key="frame" x="318.5" y="12" width="41.5" height="19.5"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="16"/>
<color key="textColor" red="0.5568627451" green="0.5568627451" blue="0.57647058819999997" alpha="1" colorSpace="calibratedRGB"/>
<color key="textColor" red="0.5568627451" green="0.5568627451" blue="0.57647058819999997" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
</tableViewCellContentView>
</tableViewCell>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="toggle" textLabel="a1l-XI-MEz" style="IBUITableViewCellStyleDefault" id="1nB-54-Qfk">
<rect key="frame" x="0.0" y="313.5" width="600" height="44"/>
<rect key="frame" x="0.0" y="275.5" width="375" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="1nB-54-Qfk" id="fZu-5X-Z4B">
<rect key="frame" x="0.0" y="0.0" width="600" height="43.5"/>
<rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Title" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="a1l-XI-MEz">
<rect key="frame" x="15" y="0.0" width="570" height="43.5"/>
<rect key="frame" x="15" y="0.0" width="345" height="43.5"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="16"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
@ -235,29 +239,29 @@
<objects>
<tableViewController id="mbX-kA-h6M" customClass="InsertDiskViewController" sceneMemberID="viewController">
<tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="28" sectionFooterHeight="28" id="EFr-QR-Vqc">
<rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<prototypes>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="cell" textLabel="8ef-Se-DXA" detailTextLabel="CbL-Kq-e9s" style="IBUITableViewCellStyleValue1" id="iZQ-DG-qho" customClass="FileTableViewCell">
<rect key="frame" x="0.0" y="72" width="600" height="44"/>
<rect key="frame" x="0.0" y="28" width="375" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="iZQ-DG-qho" id="pcB-3f-clB">
<rect key="frame" x="0.0" y="0.0" width="600" height="43.5"/>
<rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Title" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumScaleFactor="0.69999999999999996" adjustsLetterSpacingToFitWidth="YES" id="8ef-Se-DXA">
<rect key="frame" x="15" y="12" width="31.5" height="19.5"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="16"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Detail" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumScaleFactor="0.5" adjustsLetterSpacingToFitWidth="YES" id="CbL-Kq-e9s">
<rect key="frame" x="550" y="15" width="35" height="16"/>
<rect key="frame" x="325" y="15" width="35" height="16"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="13"/>
<color key="textColor" red="0.55686274509803924" green="0.55686274509803924" blue="0.57647058823529407" alpha="1" colorSpace="calibratedRGB"/>
<color key="textColor" red="0.55686274509803924" green="0.55686274509803924" blue="0.57647058823529407" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
@ -317,7 +321,7 @@
<autoresizingMask key="autoresizingMask"/>
</navigationBar>
<toolbar key="toolbar" opaque="NO" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="TXk-M9-69L">
<rect key="frame" x="0.0" y="556" width="600" height="44"/>
<rect key="frame" x="0.0" y="623" width="375" height="44"/>
<autoresizingMask key="autoresizingMask"/>
</toolbar>
<connections>

View File

@ -29,8 +29,8 @@ typedef uint32_t ui5b;
typedef int32_t si5b;
#define HaveRealsi5b 1
#define HaveRealui6b 0
#define HaveRealsi6b 0
#define HaveRealui6b 1
#define HaveRealsi6b 1
/* --- integer representation types ---- */
@ -62,8 +62,8 @@ typedef uint64_t ui6b;
#define NeedIntlChars 1
#define kStrAppName "Mini vMac"
#define kAppVariationStr "minivmac-3.4.0-ios"
#define kStrCopyrightYear "2016"
#define kAppVariationStr "minivmac-3.5.8-ios"
#define kStrCopyrightYear "2017"
#define kMaintainerName "Jesús A. Álvarez"
#define kStrHomePage "https://namedfork.net/minivmac"
#define VarFullScreen 0

View File

@ -71,6 +71,8 @@
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>2.2.3</string>
<key>MNVMVersion</key>
<string>3.5.8</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>

View File

@ -30,7 +30,7 @@
#include "SYSDEPNS.h"
#include "ENDIANAC.h"
#include "MYOSGLUE.h"
#include "STRCONST.h"
#include "STRCNENG.h"
#include "EMCONFIG.h"
#import "EmulatorProtocol.h"

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

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

File diff suppressed because one or more lines are too long

View File

@ -1,209 +1 @@
/*
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(int 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);
}
/* 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(int 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); }

File diff suppressed because one or more lines are too long

View File

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

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,117 +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;
}
/* 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 one or more lines are too long

View File

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

View File

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

View File

@ -1,17 +0,0 @@
/*
FB1BPP2I.h
Copyright (C) 2012 Kevin Keeling
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.
*/
EXPORTPROC FB1BPPtoIndexed(u32*, u8*, int);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,503 +0,0 @@
/*
FPMATHNT.h
Copyright (C) 2009 Ross Martin, 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.
*/
/*
Floating Point MATH implemented with NaTive operations
*/
#include <stdio.h>
#include <math.h>
#define FPDEBUG if (0)
/* #define FPDEBUG */
typedef long double myfpr;
/*
Only valid for a host that's an X386 processor
68881 extended is 96 bits. This is 1 bit sign, 15 bits exponent
16 bits unused, 1 bit explicit integer bit of mantissa, and
63 bits of normal mantissa
Intel extended is packed into 128 bits. It is 80 bits, with
1 bit sign, 15 bits exponent, 1 bit explicit integer bit of
mantissa, and 63 bits of mantissa.
So for the most part these match. Just have to match the correct
bytes.
*/
#if BigEndianUnaligned
#define fldbitsi(i) (9 - (i))
#else
#define fldbitsi(i) (i)
#endif
LOCALPROC myfp_FromExtendedFormat(myfpr *r, ui4r v2, ui5r v1, ui5r v0)
{
int ii;
union {
ui3b fbits[16];
myfpr x;
} extended_p, fixer;
myfpr result;
/* filler. Don't really need, helped me debug */
for (ii = 10; ii < 16; ii++) {
extended_p.fbits[ii] = 0x77;
}
/* sign and exponent */
*(ui4b *)&extended_p.fbits[fldbitsi(8)] = v2;
/* mantissa */
*(ui5b *)&extended_p.fbits[fldbitsi(4)] = v1;
*(ui5b *)&extended_p.fbits[fldbitsi(0)] = v0;
result = extended_p.x;
FPDEBUG printf("read_long_double reads %lf (0x",
(double)extended_p.x);
FPDEBUG {
int ii;
for (ii = 12; ii >= 0; ii--) {
printf("%02x", extended_p.fbits[ii]);
}
}
/*
Check for unusual condition where 68881 mantissa high bit
isnt' set.
This is an error for the x86 FPU, so I need to patch it.
*/
if ((extended_p.fbits[fldbitsi(7)] & 0x80) == 0x00) {
/* High bit of mantissa isn't set */
if (((extended_p.fbits[fldbitsi(9)] & 0x7F) == 0x7F)
&& (extended_p.fbits[fldbitsi(8)] == 0xFF))
{
/* infinity, OK for mantissa high bit to not be set */
} else if (((extended_p.fbits[fldbitsi(9)] & 0x7F) == 0x00)
&& (extended_p.fbits[fldbitsi(8)] == 0x00))
{
/* zero, OK for mantissa high bit to not be set */
} else {
/*
Not OK for mantissa high bit to not be set.
Fix using the FPU itself
*/
extended_p.fbits[fldbitsi(7)] =
extended_p.fbits[fldbitsi(7)] | 0x80;
/* Force top bit to 1 */
/*
Create a second extended long with *only* the high bit
of the mantissa set, identical sign and exponent. Then
subtract it off to remove the 1 bit we just forced in
the top of the mantissa.
*/
/* sign and exponent */
fixer.fbits[fldbitsi(9)] = extended_p.fbits[fldbitsi(9)];
fixer.fbits[fldbitsi(8)] = extended_p.fbits[fldbitsi(8)];
/* mantissa */
fixer.fbits[fldbitsi(7)] = 0x80;
fixer.fbits[fldbitsi(6)] = 0x00;
fixer.fbits[fldbitsi(5)] = 0x00;
fixer.fbits[fldbitsi(4)] = 0x00;
fixer.fbits[fldbitsi(3)] = 0x00;
fixer.fbits[fldbitsi(2)] = 0x00;
fixer.fbits[fldbitsi(1)] = 0x00;
fixer.fbits[fldbitsi(0)] = 0x00;
result = extended_p.x - fixer.x;
FPDEBUG
{
printf(
"Fixing denormalized extended precision float\n");
printf("XP: 0x");
for (ii = 0; ii < 16; ii++) {
printf("%02x", extended_p.fbits[ii]);
}
printf(" %lf\n", (double)extended_p.x);
printf("FX: 0x");
for (ii = 0; ii < 16; ii++) {
printf("%02x", fixer.fbits[ii]);
}
printf(" %lf\n", (double)fixer.x);
fixer.x = result;
printf("Out: 0x");
for (ii = 0; ii < 16; ii++) {
printf("%02x", fixer.fbits[ii]);
}
printf(" %lf\n", (double)fixer.x);
}
}
}
/*
printf("XP: 0x");
for (ii = 0; ii < 16; ii++) {
printf("%02x", extended_p.fbits[ii]);
}
printf(" %lf\n", (double)extended_p.x);
extended_p.x = 1.5 + 7.0 / 1024 / 1024 / 1024 / 1024;
printf("ZP: 0x");
for(ii = 0; ii < 16; ii++) {
printf("%02x", extended_p.fbits[ii]);
}
printf(" %lf\n", (double)extended_p.x);
*/
/*
printf("read_long_double returns %lf\n", (double)extended_p.x);
*/
*r = result;
}
LOCALPROC myfp_ToExtendedFormat(myfpr *dd, ui4r *v2, ui5r *v1, ui5r *v0)
{
union {
ui3b fbits[16];
myfpr x;
} extended_p;
extended_p.x = *dd;
/* sign and exponent */
*v2 = *(ui4b *)&extended_p.fbits[fldbitsi(8)];
/* mantissa */
*v1 = *(ui5b *)&extended_p.fbits[fldbitsi(4)];
*v0 = *(ui5b *)&extended_p.fbits[fldbitsi(0)];
}
/*
Only valid for a host that's an X386 processor
*/
#if BigEndianUnaligned
#define fdbitsi(i) (7 - (i))
#else
#define fdbitsi(i) (i)
#endif
LOCALPROC myfp_FromDoubleFormat(myfpr *r, ui5r v1, ui5r v0)
{
union {
ui3b fbits[8];
double d;
} double_p;
*(ui5b *)&double_p.fbits[fdbitsi(4)] = v1;
*(ui5b *)&double_p.fbits[fdbitsi(0)] = v0;
*r = (myfpr)double_p.d;
}
LOCALPROC myfp_ToDoubleFormat(myfpr *dd, ui5r *v1, ui5r *v0)
{
union {
ui3b fbits[8];
double d;
} double_p;
double_p.d = (double)*dd;
*v1 = *(ui5b *)&double_p.fbits[fdbitsi(4)];
*v0 = *(ui5b *)&double_p.fbits[fdbitsi(0)];
}
LOCALPROC myfp_FromSingleFormat(myfpr *r, ui5r x)
{
union {
ui5b fbits;
float f;
} single_p;
single_p.fbits = x;
*r = (myfpr)single_p.f;
}
LOCALFUNC ui5r myfp_ToSingleFormat(myfpr *ff)
{
union {
ui5b fbits;
float f;
} single_p;
single_p.f = (float)*ff;
return single_p.fbits;
}
LOCALPROC myfp_FromLong(myfpr *r, ui5r x)
{
*r = (myfpr)(si5b)x;
}
LOCALFUNC ui5r myfp_ToLong(myfpr *x)
{
return (ui5r)(si5r)(si5b)*x;
}
LOCALFUNC blnr myfp_IsNan(myfpr *x)
{
return isnan(*x);
}
LOCALFUNC blnr myfp_IsInf(myfpr *x)
{
return isinf(*x);
}
LOCALFUNC blnr myfp_IsZero(myfpr *x)
{
return (*x == 0.0);
}
LOCALFUNC blnr myfp_IsNeg(myfpr *x)
{
return (*x < 0.0);
}
#define myfp_Add(r, a, b) (*r) = ((*a) + (*b))
#define myfp_Sub(r, a, b) (*r) = ((*a) - (*b))
#define myfp_Mul(r, a, b) (*r) = ((*a) * (*b))
#define myfp_Div(r, a, b) (*r) = ((*a) / (*b))
#define myfp_Mod(r, a, b) (*r) = (fmod((*a), (*b)))
#define myfp_Rem(r, a, b) (*r) = (remainder((*a), (*b)))
LOCALPROC myfp_Scale(myfpr *r, myfpr *a, myfpr *b)
{
myfpr fscaleval;
fscaleval = (*b < 0.0) ? ceil(*b) : floor(*b);
*r = *a * pow(2.0, fscaleval);
}
LOCALPROC myfp_GetMan(myfpr *r, myfpr *x)
{
int expval;
*r = frexp(*x, &expval) * 2.0;
}
LOCALPROC myfp_GetExp(myfpr *r, myfpr *x)
{
int expval;
(void) frexp(*x, &expval);
*r = (myfpr) (expval - 1);
}
LOCALPROC myfp_IntRZ(myfpr *r, myfpr *x)
{
*r = (*x < 0.0) ? ceil(*x) : floor(*x);
}
LOCALPROC myfp_Int(myfpr *r, myfpr *x)
{
/* Should take the current rounding mode into account, don't */
*r = floor(*x + 0.5);
}
#define myfp_RoundToSingle(r, x) (*r) = ((myfpr)(float)(*x))
#define myfp_RoundToDouble(r, x) (*r) = ((myfpr)(double)(*x))
#define myfp_Abs(r, x) (*r) = (((*x) < 0) ? - (*x) : (*x))
#define myfp_Neg(r, x) (*r) = (- (*x))
#define myfp_Sqrt(r, x) (*r) = (sqrt(*x))
#define myfp_TenToX(r, x) (*r) = (pow(10.0, *x))
#define myfp_TwoToX(r, x) (*r) = (pow(2.0, *x))
#define myfp_EToX(r, x) (*r) = (exp(*x))
#define myfp_EToXM1(r, x) (*r) = (exp(*x) - 1.0)
#define myfp_Log10(r, x) (*r) = (log10(*x))
#define myfp_Log2(r, x) (*r) = (log(*x) / log(2.0))
#define myfp_LogN(r, x) (*r) = (log(*x))
#define myfp_LogNP1(r, x) (*x) = (log(*x + 1.0))
#define myfp_Sin(r, x) (*r) = (sin(*x))
#define myfp_Cos(r, x) (*r) = (cos(*x))
#define myfp_Tan(r, x) (*r) = (tan(*x))
#define myfp_ASin(r, x) (*r) = (asin(*x))
#define myfp_ACos(r, x) (*r) = (acos(*x))
#define myfp_ATan(r, x) (*r) = (atan(*x))
#define myfp_Sinh(r, x) (*r) = (sinh(*x))
#define myfp_Cosh(r, x) (*r) = (cosh(*x))
#define myfp_Tanh(r, x) (*r) = (tanh(*x))
#define myfp_ATanh(r, x) (*r) = (atanh(*x))
LOCALPROC myfp_SinCos(myfpr *r_sin, myfpr *r_cos, myfpr *source)
{
*r_sin = sin(*source);
*r_cos = cos(*source);
}
LOCALFUNC blnr myfp_getCR(myfpr *r, ui4b opmode)
{
myfpr v;
switch (opmode) {
case 0x00:
v = M_PI;
break;
case 0x0B:
v = log10(2.0);
break;
case 0x0C:
v = exp(1.0);
break;
case 0x0D:
v = 1.0 / log(2.0);
break;
case 0x0E:
v = 1.0 / log(10.0);
break;
case 0x0F:
v = 0.0;
break;
case 0x30:
v = log(2.0);
break;
case 0x31:
v = log(10.0);
break;
case 0x32:
v = 1.0;
break;
case 0x33:
v = 10.0;
break;
case 0x34:
v = 100.0;
break;
case 0x35:
v = 10000.0;
break;
case 0x36:
v = 1.0e8;
break;
case 0x37:
v = 1.0e16;
break;
case 0x38:
v = 1.0e32;
break;
case 0x39:
v = 1.0e64;
break;
case 0x3A:
v = 1.0e128;
break;
case 0x3B:
v = 1.0e256;
break;
case 0x3C:
v = 1.0e512;
break;
case 0x3D:
v = 1.0e1024;
break;
case 0x3E:
v = 1.0e2048;
break;
case 0x3F:
v = 1.0e4096;
break;
default:
return falseblnr;
}
*r = v;
return trueblnr;
}
LOCALVAR struct myfp_envStruct
{
ui5r FPCR; /* Floating point control register */
ui5r FPSR; /* Floating point status register */
} myfp_env;
LOCALPROC myfp_SetFPCR(ui5r v)
{
myfp_env.FPCR = v;
}
LOCALPROC myfp_SetFPSR(ui5r v)
{
myfp_env.FPSR = v;
}
LOCALFUNC ui5r myfp_GetFPCR(void)
{
return myfp_env.FPCR;
}
LOCALFUNC ui5r myfp_GetFPSR(void)
{
return myfp_env.FPSR;
}
LOCALFUNC ui3r myfp_GetConditionCodeByte(void)
{
return (myfp_env.FPSR >> 24) & 0x0F;
}
LOCALPROC myfp_SetConditionCodeByte(ui3r v)
{
myfp_env.FPSR = ((myfp_env.FPSR & 0x00FFFFFF)
| (v << 24));
}
LOCALPROC myfp_SetConditionCodeByteFromResult(myfpr *result)
{
/* Set condition codes here based on result */
int c_nan = myfp_IsNan(result) ? 1 : 0;
int c_inf = myfp_IsInf(result) ? 1 : 0;
int c_zero = myfp_IsZero(result) ? 1 : 0;
int c_neg = myfp_IsNeg(result) ? 1 : 0;
myfp_SetConditionCodeByte(c_nan
| (c_inf << 1)
| (c_zero << 2)
| (c_neg << 3));
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

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

@ -0,0 +1 @@
/* 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 one or more lines are too long

View File

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

View File

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

View File

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

View File

@ -1,27 +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);
/* 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 one or more lines are too long

View File

@ -1,234 +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);
/* 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 one or more lines are too long

View File

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

View File

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

View File

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

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

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

File diff suppressed because one or more lines are too long

View File

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

File diff suppressed because one or more lines are too long

View File

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

File diff suppressed because one or more lines are too long

View File

@ -1,28 +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);
/* 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 one or more lines are too long

View File

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

View File

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

View File

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

File diff suppressed because one or more lines are too long

View File

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

View File

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

View File

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

View File

@ -1,25 +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);
/* 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/SGLUALSA.h Executable file

File diff suppressed because one or more lines are too long

1
Mini vMac/mnvm_core/SGLUDDSP.h Executable file

File diff suppressed because one or more lines are too long

View File

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

View File

@ -1,25 +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
/* 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 one or more lines are too long

View File

@ -1,31 +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);
/* 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/STRCNENG.h Executable file

File diff suppressed because one or more lines are too long

View File

@ -1,164 +0,0 @@
/*
STRCONST.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 ;]control;} key. You will remain in the Control Mode until you release the ;]control;} 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 ;]control;} 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 ;]control;} 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 ;]control;} 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"

View File

@ -1,80 +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
/* 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 one or more lines are too long

View File

@ -1,48 +1 @@
/*
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);
/* 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 one or more lines are too long

View File

@ -1,48 +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);
/* 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 one or more lines are too long

View File

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