mirror of
https://github.com/cmosher01/Epple-II.git
synced 2024-12-29 00:31:40 +00:00
remove obsolete diskbytes class; fix addrbus rev reference
This commit is contained in:
parent
694ff96d12
commit
2f10890b34
@ -13,7 +13,7 @@ epple2_CPPFLAGS = $(AM_CPPFLAGS) -DETCDIR=\"$(sysconfdir)\"
|
|||||||
epple2_SOURCES = a2colorsobserved.cpp addressbus.cpp analogtv.cpp apple2.cpp \
|
epple2_SOURCES = a2colorsobserved.cpp addressbus.cpp analogtv.cpp apple2.cpp \
|
||||||
applentsc.cpp card.cpp cassette.cpp cassettein.cpp cassetteout.cpp \
|
applentsc.cpp card.cpp cassette.cpp cassettein.cpp cassetteout.cpp \
|
||||||
clipboardhandler.cpp clockcard.cpp \
|
clipboardhandler.cpp clockcard.cpp \
|
||||||
configep2.cpp cpu.cpp diskbytes.cpp diskcontroller.cpp drive.cpp drivemotor.cpp \
|
configep2.cpp cpu.cpp diskcontroller.cpp drive.cpp drivemotor.cpp \
|
||||||
emptyslot.cpp emulator.cpp firmwarecard.cpp gui.cpp hypermode.cpp \
|
emptyslot.cpp emulator.cpp firmwarecard.cpp gui.cpp hypermode.cpp \
|
||||||
keyboard.cpp keyboardbuffermode.cpp languagecard.cpp filterchroma.cpp \
|
keyboard.cpp keyboardbuffermode.cpp languagecard.cpp filterchroma.cpp \
|
||||||
filterluma.cpp lss.cpp main.cpp memory.cpp paddlebuttonstates.cpp \
|
filterluma.cpp lss.cpp main.cpp memory.cpp paddlebuttonstates.cpp \
|
||||||
@ -28,7 +28,7 @@ tinyfiledialogs.cpp
|
|||||||
|
|
||||||
noinst_HEADERS = a2colorsobserved.h addressbus.h analogtv.h apple2.h applentsc.h \
|
noinst_HEADERS = a2colorsobserved.h addressbus.h analogtv.h apple2.h applentsc.h \
|
||||||
card.h cassette.h cassettein.h cassetteout.h \
|
card.h cassette.h cassettein.h cassetteout.h \
|
||||||
clipboardhandler.h clockcard.h configep2.h cpu.h diskbytes.h \
|
clipboardhandler.h clockcard.h configep2.h cpu.h \
|
||||||
diskcontroller.h drive.h drivemotor.h e2const.h emptyslot.h emulator.h firmwarecard.h font3x5.h gui.h \
|
diskcontroller.h drive.h drivemotor.h e2const.h emptyslot.h emulator.h firmwarecard.h font3x5.h gui.h \
|
||||||
hypermode.h keyboardbuffermode.h keyboard.h languagecard.h filterchroma.h \
|
hypermode.h keyboardbuffermode.h keyboard.h languagecard.h filterchroma.h \
|
||||||
filterluma.h lss.h memory.h paddlebuttonstates.h paddles.h picturegenerator.h \
|
filterluma.h lss.h memory.h paddlebuttonstates.h paddles.h picturegenerator.h \
|
||||||
|
@ -26,7 +26,7 @@
|
|||||||
#include "cassetteout.h"
|
#include "cassetteout.h"
|
||||||
#include "slots.h"
|
#include "slots.h"
|
||||||
|
|
||||||
AddressBus::AddressBus(ScreenImage& gui, int revision, Memory& ram, Memory& rom, Keyboard& kbd, VideoMode& vid, Paddles& paddles, PaddleButtonStates& paddleButtonStates, SpeakerClicker& speaker, CassetteIn& cassetteIn, CassetteOut& cassetteOut, Slots& slts):
|
AddressBus::AddressBus(ScreenImage& gui, int& revision, Memory& ram, Memory& rom, Keyboard& kbd, VideoMode& vid, Paddles& paddles, PaddleButtonStates& paddleButtonStates, SpeakerClicker& speaker, CassetteIn& cassetteIn, CassetteOut& cassetteOut, Slots& slts):
|
||||||
gui(gui), revision(revision), ram(ram), rom(rom), kbd(kbd), vid(vid), paddles(paddles), paddleButtonStates(paddleButtonStates), speaker(speaker), cassetteIn(cassetteIn), cassetteOut(cassetteOut), slts(slts)
|
gui(gui), revision(revision), ram(ram), rom(rom), kbd(kbd), vid(vid), paddles(paddles), paddleButtonStates(paddleButtonStates), speaker(speaker), cassetteIn(cassetteIn), cassetteOut(cassetteOut), slts(slts)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
@ -32,7 +32,7 @@ class Slots;
|
|||||||
class AddressBus {
|
class AddressBus {
|
||||||
private:
|
private:
|
||||||
ScreenImage& gui;
|
ScreenImage& gui;
|
||||||
int revision;
|
int& revision;
|
||||||
Memory& ram;
|
Memory& ram;
|
||||||
Memory& rom;
|
Memory& rom;
|
||||||
Keyboard& kbd;
|
Keyboard& kbd;
|
||||||
@ -47,7 +47,7 @@ class AddressBus {
|
|||||||
unsigned char data; // this emulates the (floating) data bus
|
unsigned char data; // this emulates the (floating) data bus
|
||||||
|
|
||||||
public:
|
public:
|
||||||
AddressBus(ScreenImage& gui, int revision, Memory& ram, Memory& rom, Keyboard& kbd, VideoMode& vid, Paddles& paddles, PaddleButtonStates& paddleButtonStates, SpeakerClicker& speaker, CassetteIn& cassetteIn, CassetteOut& cassetteOut, Slots& slts);
|
AddressBus(ScreenImage& gui, int& revision, Memory& ram, Memory& rom, Keyboard& kbd, VideoMode& vid, Paddles& paddles, PaddleButtonStates& paddleButtonStates, SpeakerClicker& speaker, CassetteIn& cassetteIn, CassetteOut& cassetteOut, Slots& slts);
|
||||||
~AddressBus();
|
~AddressBus();
|
||||||
|
|
||||||
unsigned char read(const unsigned short address);
|
unsigned char read(const unsigned short address);
|
||||||
|
@ -46,7 +46,7 @@ Apple2::Apple2(KeypressQueue& keypresses, PaddleButtonStates& paddleButtonStates
|
|||||||
cassetteIn(gui),
|
cassetteIn(gui),
|
||||||
cassetteOut(gui),
|
cassetteOut(gui),
|
||||||
addressBus(gui,revision,ram,rom,kbd,videoMode,paddles,paddleButtonStates,speaker,cassetteIn,cassetteOut,slts),
|
addressBus(gui,revision,ram,rom,kbd,videoMode,paddles,paddleButtonStates,speaker,cassetteIn,cassetteOut,slts),
|
||||||
picgen(tv,videoMode,this->revision),
|
picgen(tv,videoMode,revision),
|
||||||
video(videoMode,addressBus,picgen,textRows),
|
video(videoMode,addressBus,picgen,textRows),
|
||||||
#ifdef USE_EMU
|
#ifdef USE_EMU
|
||||||
transistors("transistors"),
|
transistors("transistors"),
|
||||||
|
@ -1,132 +0,0 @@
|
|||||||
/*
|
|
||||||
epple2
|
|
||||||
Copyright (C) 2008 by Christopher A. Mosher <cmosher01@gmail.com>
|
|
||||||
|
|
||||||
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 3 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program 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
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
#include "diskbytes.h"
|
|
||||||
|
|
||||||
#include <vector>
|
|
||||||
#include <algorithm>
|
|
||||||
#include <istream>
|
|
||||||
#include <ostream>
|
|
||||||
#include <fstream>
|
|
||||||
|
|
||||||
DiskBytes::DiskBytes(bool lss13):
|
|
||||||
lss13(lss13)
|
|
||||||
{
|
|
||||||
unload();
|
|
||||||
}
|
|
||||||
|
|
||||||
DiskBytes::~DiskBytes()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
bool DiskBytes::load(const std::string& filePath)
|
|
||||||
{
|
|
||||||
|
|
||||||
|
|
||||||
// TODO better I/O error handling during disk loading and saving
|
|
||||||
std::ifstream in(filePath.c_str(),std::ios::binary|std::ios::in);
|
|
||||||
if (!in.is_open())
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (isLoaded())
|
|
||||||
{
|
|
||||||
unload();
|
|
||||||
}
|
|
||||||
for (int t(0); t < TRACKS_PER_DISK; ++t)
|
|
||||||
{
|
|
||||||
this->bytes[t].resize(BYTES_PER_TRACK);
|
|
||||||
in.read((char*)&this->bytes[t][0],BYTES_PER_TRACK);
|
|
||||||
}
|
|
||||||
in.close();
|
|
||||||
|
|
||||||
this->filePath = filePath;
|
|
||||||
|
|
||||||
checkForWriteProtection();
|
|
||||||
|
|
||||||
this->loaded = true;
|
|
||||||
this->modified = false;
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
void DiskBytes::checkForWriteProtection()
|
|
||||||
{
|
|
||||||
std::ofstream outf(filePath.c_str(),std::ios::binary|std::ios::app);
|
|
||||||
this->writable = outf.is_open();
|
|
||||||
outf.close();
|
|
||||||
}
|
|
||||||
|
|
||||||
void DiskBytes::save()
|
|
||||||
{
|
|
||||||
if (isWriteProtected() || !isLoaded())
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
std::ofstream out(filePath.c_str(),std::ios::binary);
|
|
||||||
for (int t(0); t < TRACKS_PER_DISK; ++t)
|
|
||||||
out.write((char*)&this->bytes[t][0],BYTES_PER_TRACK);
|
|
||||||
out.flush();
|
|
||||||
out.close();
|
|
||||||
|
|
||||||
this->modified = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
void DiskBytes::unload()
|
|
||||||
{
|
|
||||||
this->byt = 0;
|
|
||||||
this->writable = true;
|
|
||||||
this->loaded = false;
|
|
||||||
this->filePath = "";
|
|
||||||
this->modified = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
unsigned char DiskBytes::get(const int track)
|
|
||||||
{
|
|
||||||
if (!isLoaded())
|
|
||||||
{
|
|
||||||
return 0xFF;
|
|
||||||
}
|
|
||||||
const unsigned char ret = this->bytes[track][this->byt];
|
|
||||||
nextByte();
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
void DiskBytes::put(const unsigned char track, const unsigned char value)
|
|
||||||
{
|
|
||||||
if (TRACKS_PER_DISK <= track)
|
|
||||||
{
|
|
||||||
throw 0;
|
|
||||||
}
|
|
||||||
if (isWriteProtected() || !isLoaded())
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
this->bytes[track][this->byt] = value;
|
|
||||||
this->modified = true;
|
|
||||||
nextByte();
|
|
||||||
}
|
|
||||||
|
|
||||||
void inline DiskBytes::nextByte()
|
|
||||||
{
|
|
||||||
// emulates circular disk track
|
|
||||||
++this->byt;
|
|
||||||
if (this->byt >= BYTES_PER_TRACK)
|
|
||||||
{
|
|
||||||
this->byt = 0;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,74 +0,0 @@
|
|||||||
/*
|
|
||||||
epple2
|
|
||||||
Copyright (C) 2008 by Christopher A. Mosher <cmosher01@gmail.com>
|
|
||||||
|
|
||||||
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 3 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program 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
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
#ifndef DISKBYTES_H
|
|
||||||
#define DISKBYTES_H
|
|
||||||
|
|
||||||
#include <string>
|
|
||||||
#include <vector>
|
|
||||||
|
|
||||||
class DiskBytes
|
|
||||||
{
|
|
||||||
private:
|
|
||||||
enum { TRACKS_PER_DISK = 0x23 };
|
|
||||||
enum { BYTES_PER_TRACK = 0x1A00 };
|
|
||||||
|
|
||||||
bool lss13;
|
|
||||||
|
|
||||||
std::vector<unsigned char> bytes[TRACKS_PER_DISK];
|
|
||||||
|
|
||||||
std::string fileName;
|
|
||||||
std::string filePath;
|
|
||||||
bool writable;
|
|
||||||
bool loaded;
|
|
||||||
unsigned int byt; // represents rotational position of disk
|
|
||||||
bool modified;
|
|
||||||
|
|
||||||
void nextByte();
|
|
||||||
void checkForWriteProtection();
|
|
||||||
|
|
||||||
public:
|
|
||||||
DiskBytes(bool lss13);
|
|
||||||
~DiskBytes();
|
|
||||||
|
|
||||||
bool load(const std::string& filePath);
|
|
||||||
std::string getFileName()
|
|
||||||
{
|
|
||||||
return this->fileName;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool isLoaded()
|
|
||||||
{
|
|
||||||
return this->loaded;
|
|
||||||
}
|
|
||||||
|
|
||||||
void save();
|
|
||||||
void unload();
|
|
||||||
unsigned char get(const int track);
|
|
||||||
void put(const unsigned char track, const unsigned char value);
|
|
||||||
bool isWriteProtected()
|
|
||||||
{
|
|
||||||
return !this->writable;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool isModified()
|
|
||||||
{
|
|
||||||
return this->modified;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif
|
|
Loading…
Reference in New Issue
Block a user