mirror of
https://github.com/markdavidlong/AppleSAWS.git
synced 2025-02-05 15:31:55 +00:00
Normalized construction of 16-bit words from 2 8-bit values throughout code
This commit is contained in:
parent
e75ed40ce0
commit
388f1f3694
@ -1,5 +1,6 @@
|
||||
#include "ApplesoftRetokenizer.h"
|
||||
#include "applesofttoken.h"
|
||||
#include "util.h"
|
||||
|
||||
#include <QDebug>
|
||||
#include <QRegularExpression>
|
||||
@ -33,12 +34,13 @@ void ApplesoftRetokenizer::parse(quint16 start_address)
|
||||
while (idx < m_data.length()) {
|
||||
ApplesoftLine line;
|
||||
line.address = current_address;
|
||||
line.next_address = (quint8) m_data[idx] + (((quint8) m_data[idx+1]) *256);
|
||||
|
||||
line.next_address = makeWord(m_data[idx],m_data[idx+1]);
|
||||
idx++; idx++;
|
||||
line.linenum = (quint8) m_data[idx] + (((quint8) m_data[idx+1])*256);
|
||||
|
||||
line.linenum = makeWord(m_data[idx],m_data[idx+1]);
|
||||
idx++; idx++;
|
||||
|
||||
if (line.next_address == 0x00) { break; }
|
||||
do {
|
||||
val = m_data[idx++];
|
||||
|
@ -1,4 +1,5 @@
|
||||
#include "applesoftfile.h"
|
||||
#include "util.h"
|
||||
#include <QDebug>
|
||||
#include <QRegularExpression>
|
||||
#include <QRegularExpressionMatch>
|
||||
@ -28,7 +29,7 @@ void ApplesoftFile::setData(QByteArray data)
|
||||
|
||||
quint8 addlo = m_data.at(0);
|
||||
quint8 addhi = m_data.at(1);
|
||||
m_length = addlo + (addhi * 256);
|
||||
m_length = makeWord(addlo,addhi);
|
||||
m_data.remove(0,2);
|
||||
|
||||
m_retokenizer->setData(m_data);
|
||||
|
@ -1,5 +1,6 @@
|
||||
#include <QDebug>
|
||||
#include "binaryfile.h"
|
||||
#include "util.h"
|
||||
|
||||
BinaryFile::BinaryFile(QByteArray data) : GenericFile(data)
|
||||
{
|
||||
@ -15,8 +16,8 @@ void BinaryFile::setData(QByteArray data)
|
||||
if (data.length() >= 4) {
|
||||
QByteArray metadata = data.left(4);
|
||||
m_data = data.mid(4);
|
||||
setAddress((quint8) metadata[0] + ((quint8) metadata[1]*256));
|
||||
m_length = (quint8) metadata[2] + ((quint8) metadata[3]*256);
|
||||
setAddress(makeWord(metadata[0],metadata[1]));
|
||||
m_length = makeWord(metadata[2],metadata[3]);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -36,7 +36,8 @@ FileDescriptiveEntry CatalogSector::makeFDE(int offset)
|
||||
fde.firstTSListSector.track = m_data->rawData()[offset + 0x00];
|
||||
fde.firstTSListSector.sector = m_data->rawData()[offset + 0x01];
|
||||
fde.fileTypeAndFlags = m_data->rawData()[offset + 0x02];
|
||||
fde.lengthInSectors = m_data->rawData()[offset + 0x21] + (m_data->rawData()[offset + 0x22] * 256);
|
||||
//fde.lengthInSectors = m_data->rawData()[offset + 0x21] + (m_data->rawData()[offset + 0x22] * 256);
|
||||
fde.lengthInSectors = makeWord( m_data->rawData()[offset + 0x21], m_data->rawData()[offset + 0x22]);
|
||||
for (int idx = 0x03; idx <= 0x20; idx++) {
|
||||
fde.filename.append(m_data->rawData()[idx+offset]);
|
||||
}
|
||||
|
@ -4,6 +4,7 @@
|
||||
#include <QString>
|
||||
|
||||
#include "sector.h"
|
||||
#include "util.h"
|
||||
|
||||
VTOC::VTOC(Sector *data)
|
||||
{
|
||||
@ -43,7 +44,8 @@ quint8 VTOC::sectorsPerDisk() {
|
||||
}
|
||||
|
||||
qint16 VTOC::bytesPerSector() {
|
||||
return m_data->rawData()[0x36] + (256 * m_data->rawData()[0x37]);
|
||||
return makeWord(m_data->rawData()[0x36],
|
||||
m_data->rawData()[0x37]);
|
||||
}
|
||||
|
||||
bool VTOC::isSectorInUse(TSPair ts) {
|
||||
@ -51,7 +53,8 @@ bool VTOC::isSectorInUse(TSPair ts) {
|
||||
quint8 sec = ts.sector;
|
||||
quint8 baseaddr = (track * 4) + 0x38;
|
||||
|
||||
quint16 word = (((quint16) m_data->rawData()[baseaddr]) *256) + (quint8) m_data->rawData()[baseaddr+1];
|
||||
//quint16 word = (((quint16) m_data->rawData()[baseaddr]) *256) + (quint8) m_data->rawData()[baseaddr+1];
|
||||
quint16 word = makeWord(m_data->rawData()[baseaddr+1],m_data->rawData()[baseaddr]);
|
||||
quint16 bitpos = (quint16) 0x01 << (quint16) sec;
|
||||
|
||||
return !(word & bitpos);
|
||||
|
@ -14,9 +14,9 @@ void RelocatableFile::setData(QByteArray data)
|
||||
{
|
||||
// qDebug() << "setData()";
|
||||
if (data.length() >= 6) {
|
||||
m_starting_ram_address = (quint8) m_data[0] + ((quint8) m_data[1] * 256);
|
||||
m_ram_image_length = (quint8) m_data[2] + ((quint8) m_data[3] * 256);
|
||||
m_code_image_length = (quint8) m_data[4] + ((quint8) m_data[5] * 256);
|
||||
m_starting_ram_address = makeWord(m_data[0],m_data[1]);
|
||||
m_ram_image_length = makeWord(m_data[2],m_data[3]);
|
||||
m_code_image_length = makeWord(m_data[4],m_data[5]);
|
||||
|
||||
int offset = 0;
|
||||
|
||||
|
@ -5,6 +5,7 @@
|
||||
#include <QByteArray>
|
||||
|
||||
#include "genericfile.h"
|
||||
#include "util.h"
|
||||
|
||||
|
||||
typedef enum { RFS1Byte, RFS2Byte } FieldSize;
|
||||
@ -27,7 +28,7 @@ public:
|
||||
void init(quint8 rld, quint8 fo_low, quint8 fo_hi, quint8 lbsym) {
|
||||
m_rld_flag = rld;
|
||||
m_halfword_or_sym_num = lbsym;
|
||||
m_field_offset = (quint8) fo_low + ((quint8) fo_hi * 256);
|
||||
m_field_offset = makeWord(fo_low,fo_hi);
|
||||
}
|
||||
|
||||
void init(quint8 rld, quint16 fo, quint8 lbsym) {
|
||||
|
@ -33,10 +33,11 @@ void CatalogWidget::prepForNewDisk(QString filename, DiskFile *disk)
|
||||
|
||||
QString CatalogWidget::createToolTip(FileDescriptiveEntry &fde) {
|
||||
QString retval;
|
||||
//qDebug() << AppleString(fde.filename).printable().trimmed();
|
||||
retval += AppleString(fde.filename).printable().trimmed() + "\n";
|
||||
retval += QString("Type: %1\n").arg(fde.fileType());
|
||||
retval += QString("Sectors: %1 (%2 bytes)\n").arg(fde.lengthInSectors).arg(fde.lengthInSectors*256);
|
||||
retval += QString("Sectors: %1 (%2 bytes)\n")
|
||||
.arg(fde.lengthInSectors)
|
||||
.arg(fde.lengthInSectors*256);
|
||||
retval += QString("%1\n").arg(fde.isLocked()?"Locked":"Unlocked");
|
||||
|
||||
GenericFile *file = m_disk->getFile(fde);
|
||||
@ -80,7 +81,8 @@ void CatalogWidget::processNewlyLoadedDisk(QString diskfilename, DiskFile *disk)
|
||||
foreach(FileDescriptiveEntry fde, m_disk->getAllFDEs()) {
|
||||
QString filetype = fde.fileType();
|
||||
QString filename = AppleString(fde.filename).printable().trimmed();
|
||||
int size = fde.lengthInSectors;
|
||||
quint16 size = fde.lengthInSectors;
|
||||
qDebug() << "SIZE: " << size;
|
||||
bool locked = fde.isLocked();
|
||||
QString sizeStr = QString("%1").arg(size,5,10,QChar(' ')).toUpper();
|
||||
QString text = QString("%1 %2 %3 %4").arg(locked?"*":" ").arg(sizeStr).arg(filetype).arg(filename);
|
||||
|
Loading…
x
Reference in New Issue
Block a user