diff --git a/FruitMachine/AppleII/Peripherals/DiskII/DiskII.swift b/FruitMachine/AppleII/Peripherals/DiskII/DiskII.swift
index 797fd82..f4126e5 100644
--- a/FruitMachine/AppleII/Peripherals/DiskII/DiskII.swift
+++ b/FruitMachine/AppleII/Peripherals/DiskII/DiskII.swift
@@ -77,8 +77,7 @@ class DiskII: NSObject, Peripheral {
var mediaPosition: Int = 0
var motorPhase: MotorPhase = .Phase0
- var diskImage = DiskImage(diskPath: "/Users/luigi/apple2/clean332sysmas.do")
-
+ var diskImage: DiskImage?
init(slot: Int, romPath: String) {
slotNumber = slot
@@ -102,6 +101,10 @@ class DiskII: NSObject, Peripheral {
action: actionDispatchOperation)
}
+ func attachDiskImage(imagePath: String) {
+ diskImage = DiskImage(diskPath: imagePath)
+ }
+
//http://ftp.twaren.net/NetBSD/misc/wrstuden/Apple_PDFs/Software%20control%20of%20IWM.pdf
private func actionDispatchOperation(something: AnyObject, address: UInt16, byte: UInt8?) -> UInt8? {
let operationNumber = UInt8(address & 0xFF) - UInt8(0x80 & 0xFF) - UInt8(0x10 * slotNumber)
@@ -224,7 +227,7 @@ class DiskII: NSObject, Peripheral {
modeString = "???"
}
- print("Reading byte \(mediaPosition) of track \(currentTrack). DOS is \(modeString) T\(trk) S\(sec).")
+ print("Head is at nibble \(mediaPosition) of track \(currentTrack). DOS is \(modeString) T\(trk) S\(sec).")
return readByteOfTrack(track: currentTrack, advance: softswitches.MotorPowered ? 1 : 0)
}
case 13:
@@ -243,11 +246,14 @@ class DiskII: NSObject, Peripheral {
}
func readByteOfTrack(track: Int, advance: Int) -> UInt8 {
- let trackData = diskImage.encodedTracks[track]
+ if(diskImage == nil) { return 0x00 } //No disk inserted, fail.
- let result = trackData[mediaPosition]
+ let trackData = diskImage?.encodedTracks[track]
+ if(trackData == nil) { return 0x00 } //No disk inserted, fail.
+
+ let result = trackData![mediaPosition]
//Advance the drive to the next byte
- mediaPosition = (mediaPosition + advance) % trackData.count
+ mediaPosition = (mediaPosition + advance) % trackData!.count
return result
}
diff --git a/FruitMachine/AppleIIViewController.swift b/FruitMachine/AppleIIViewController.swift
index 2d438d8..f53312f 100644
--- a/FruitMachine/AppleIIViewController.swift
+++ b/FruitMachine/AppleIIViewController.swift
@@ -25,13 +25,14 @@ class AppleIIViewController: NSViewController {
// Do view setup here.
preferencesWindowController = PreferencesWindowController()
-
self.view.addSubview(computer.emulatorView)
setupDriveNotifications()
-
NotificationCenter.default.addObserver(self, selector: #selector(self.debuggerBreak), name: DebuggerNotifications.Break, object: nil)
+ let drive = computer.backplane[6]! as! DiskII
+ drive.attachDiskImage(imagePath: "/Users/luigi/apple2/clean332sysmas.do")
+
self.frameTimer = Timer.scheduledTimer(timeInterval: 1.0/60.0,
target: self,
selector: #selector(runEmulation),
diff --git a/FruitMachine/FruitMachine.storyboard b/FruitMachine/FruitMachine.storyboard
index 2fa1cf0..bbd8ce2 100644
--- a/FruitMachine/FruitMachine.storyboard
+++ b/FruitMachine/FruitMachine.storyboard
@@ -64,6 +64,12 @@