2016-06-05 01:43:50 +00:00
|
|
|
//
|
|
|
|
// Vic20Document.swift
|
|
|
|
// Clock Signal
|
|
|
|
//
|
|
|
|
// Created by Thomas Harte on 04/06/2016.
|
|
|
|
// Copyright © 2016 Thomas Harte. All rights reserved.
|
|
|
|
//
|
|
|
|
|
|
|
|
import Foundation
|
|
|
|
|
|
|
|
class Vic20Document: MachineDocument {
|
|
|
|
|
|
|
|
private lazy var vic20 = CSVic20()
|
2016-06-24 01:09:34 +00:00
|
|
|
override var machine: CSMachine! {
|
|
|
|
get {
|
|
|
|
return vic20
|
|
|
|
}
|
2016-06-05 01:43:50 +00:00
|
|
|
}
|
2016-06-28 01:38:14 +00:00
|
|
|
override var name: String! {
|
|
|
|
get {
|
|
|
|
return "vic20"
|
|
|
|
}
|
|
|
|
}
|
2016-06-05 01:43:50 +00:00
|
|
|
|
|
|
|
// MARK: NSDocument overrides
|
|
|
|
override init() {
|
|
|
|
super.init()
|
2016-06-05 12:53:05 +00:00
|
|
|
|
2016-06-05 15:20:05 +00:00
|
|
|
if let kernel = rom("kernel-ntsc"), basic = rom("basic"), characters = rom("characters-english") {
|
2016-06-05 12:53:05 +00:00
|
|
|
vic20.setKernelROM(kernel)
|
|
|
|
vic20.setBASICROM(basic)
|
|
|
|
vic20.setCharactersROM(characters)
|
|
|
|
}
|
2016-07-05 20:54:25 +00:00
|
|
|
|
2016-08-01 08:37:30 +00:00
|
|
|
if let drive = dataForResource("1540", ofType: "bin", inDirectory: "ROMImages/Commodore1540") {
|
2016-07-05 20:54:25 +00:00
|
|
|
vic20.setDriveROM(drive)
|
|
|
|
}
|
2016-06-05 01:43:50 +00:00
|
|
|
}
|
2016-06-05 01:49:03 +00:00
|
|
|
|
|
|
|
override class func autosavesInPlace() -> Bool {
|
|
|
|
return true
|
|
|
|
}
|
|
|
|
|
|
|
|
override var windowNibName: String? {
|
|
|
|
return "Vic20Document"
|
|
|
|
}
|
|
|
|
|
2016-06-25 20:24:52 +00:00
|
|
|
override func readFromURL(url: NSURL, ofType typeName: String) throws {
|
|
|
|
if let pathExtension = url.pathExtension {
|
|
|
|
switch pathExtension.lowercaseString {
|
2016-07-10 16:57:17 +00:00
|
|
|
case "tap": vic20.openTAPAtURL(url)
|
|
|
|
case "g64": vic20.openG64AtURL(url)
|
|
|
|
default:
|
|
|
|
let fileWrapper = try NSFileWrapper(URL: url, options: NSFileWrapperReadingOptions(rawValue: 0))
|
|
|
|
try self.readFromFileWrapper(fileWrapper, ofType: typeName)
|
2016-06-25 20:24:52 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2016-06-05 12:53:05 +00:00
|
|
|
// MARK: machine setup
|
|
|
|
private func rom(name: String) -> NSData? {
|
|
|
|
return dataForResource(name, ofType: "bin", inDirectory: "ROMImages/Vic20")
|
|
|
|
}
|
|
|
|
|
2016-06-05 01:49:03 +00:00
|
|
|
override func readFromData(data: NSData, ofType typeName: String) throws {
|
2016-06-05 13:01:32 +00:00
|
|
|
vic20.setPRG(data)
|
2016-06-05 01:49:03 +00:00
|
|
|
}
|
2016-06-05 01:43:50 +00:00
|
|
|
}
|