Normalized construction of 16-bit words from 2 8-bit values throughout code

This commit is contained in:
Mark Long 2016-10-31 00:02:53 -05:00
parent e75ed40ce0
commit 388f1f3694
8 changed files with 26 additions and 15 deletions

View File

@ -1,5 +1,6 @@
#include "ApplesoftRetokenizer.h" #include "ApplesoftRetokenizer.h"
#include "applesofttoken.h" #include "applesofttoken.h"
#include "util.h"
#include <QDebug> #include <QDebug>
#include <QRegularExpression> #include <QRegularExpression>
@ -33,12 +34,13 @@ void ApplesoftRetokenizer::parse(quint16 start_address)
while (idx < m_data.length()) { while (idx < m_data.length()) {
ApplesoftLine line; ApplesoftLine line;
line.address = current_address; 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++; 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++; idx++; idx++;
if (line.next_address == 0x00) { break; } if (line.next_address == 0x00) { break; }
do { do {
val = m_data[idx++]; val = m_data[idx++];

View File

@ -1,4 +1,5 @@
#include "applesoftfile.h" #include "applesoftfile.h"
#include "util.h"
#include <QDebug> #include <QDebug>
#include <QRegularExpression> #include <QRegularExpression>
#include <QRegularExpressionMatch> #include <QRegularExpressionMatch>
@ -28,7 +29,7 @@ void ApplesoftFile::setData(QByteArray data)
quint8 addlo = m_data.at(0); quint8 addlo = m_data.at(0);
quint8 addhi = m_data.at(1); quint8 addhi = m_data.at(1);
m_length = addlo + (addhi * 256); m_length = makeWord(addlo,addhi);
m_data.remove(0,2); m_data.remove(0,2);
m_retokenizer->setData(m_data); m_retokenizer->setData(m_data);

View File

@ -1,5 +1,6 @@
#include <QDebug> #include <QDebug>
#include "binaryfile.h" #include "binaryfile.h"
#include "util.h"
BinaryFile::BinaryFile(QByteArray data) : GenericFile(data) BinaryFile::BinaryFile(QByteArray data) : GenericFile(data)
{ {
@ -15,8 +16,8 @@ void BinaryFile::setData(QByteArray data)
if (data.length() >= 4) { if (data.length() >= 4) {
QByteArray metadata = data.left(4); QByteArray metadata = data.left(4);
m_data = data.mid(4); m_data = data.mid(4);
setAddress((quint8) metadata[0] + ((quint8) metadata[1]*256)); setAddress(makeWord(metadata[0],metadata[1]));
m_length = (quint8) metadata[2] + ((quint8) metadata[3]*256); m_length = makeWord(metadata[2],metadata[3]);
} }
} }

View File

@ -36,7 +36,8 @@ FileDescriptiveEntry CatalogSector::makeFDE(int offset)
fde.firstTSListSector.track = m_data->rawData()[offset + 0x00]; fde.firstTSListSector.track = m_data->rawData()[offset + 0x00];
fde.firstTSListSector.sector = m_data->rawData()[offset + 0x01]; fde.firstTSListSector.sector = m_data->rawData()[offset + 0x01];
fde.fileTypeAndFlags = m_data->rawData()[offset + 0x02]; 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++) { for (int idx = 0x03; idx <= 0x20; idx++) {
fde.filename.append(m_data->rawData()[idx+offset]); fde.filename.append(m_data->rawData()[idx+offset]);
} }

View File

@ -4,6 +4,7 @@
#include <QString> #include <QString>
#include "sector.h" #include "sector.h"
#include "util.h"
VTOC::VTOC(Sector *data) VTOC::VTOC(Sector *data)
{ {
@ -43,7 +44,8 @@ quint8 VTOC::sectorsPerDisk() {
} }
qint16 VTOC::bytesPerSector() { 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) { bool VTOC::isSectorInUse(TSPair ts) {
@ -51,7 +53,8 @@ bool VTOC::isSectorInUse(TSPair ts) {
quint8 sec = ts.sector; quint8 sec = ts.sector;
quint8 baseaddr = (track * 4) + 0x38; 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; quint16 bitpos = (quint16) 0x01 << (quint16) sec;
return !(word & bitpos); return !(word & bitpos);

View File

@ -14,9 +14,9 @@ void RelocatableFile::setData(QByteArray data)
{ {
// qDebug() << "setData()"; // qDebug() << "setData()";
if (data.length() >= 6) { if (data.length() >= 6) {
m_starting_ram_address = (quint8) m_data[0] + ((quint8) m_data[1] * 256); m_starting_ram_address = makeWord(m_data[0],m_data[1]);
m_ram_image_length = (quint8) m_data[2] + ((quint8) m_data[3] * 256); m_ram_image_length = makeWord(m_data[2],m_data[3]);
m_code_image_length = (quint8) m_data[4] + ((quint8) m_data[5] * 256); m_code_image_length = makeWord(m_data[4],m_data[5]);
int offset = 0; int offset = 0;

View File

@ -5,6 +5,7 @@
#include <QByteArray> #include <QByteArray>
#include "genericfile.h" #include "genericfile.h"
#include "util.h"
typedef enum { RFS1Byte, RFS2Byte } FieldSize; typedef enum { RFS1Byte, RFS2Byte } FieldSize;
@ -27,7 +28,7 @@ public:
void init(quint8 rld, quint8 fo_low, quint8 fo_hi, quint8 lbsym) { void init(quint8 rld, quint8 fo_low, quint8 fo_hi, quint8 lbsym) {
m_rld_flag = rld; m_rld_flag = rld;
m_halfword_or_sym_num = lbsym; 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) { void init(quint8 rld, quint16 fo, quint8 lbsym) {

View File

@ -33,10 +33,11 @@ void CatalogWidget::prepForNewDisk(QString filename, DiskFile *disk)
QString CatalogWidget::createToolTip(FileDescriptiveEntry &fde) { QString CatalogWidget::createToolTip(FileDescriptiveEntry &fde) {
QString retval; QString retval;
//qDebug() << AppleString(fde.filename).printable().trimmed();
retval += AppleString(fde.filename).printable().trimmed() + "\n"; retval += AppleString(fde.filename).printable().trimmed() + "\n";
retval += QString("Type: %1\n").arg(fde.fileType()); 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"); retval += QString("%1\n").arg(fde.isLocked()?"Locked":"Unlocked");
GenericFile *file = m_disk->getFile(fde); GenericFile *file = m_disk->getFile(fde);
@ -80,7 +81,8 @@ void CatalogWidget::processNewlyLoadedDisk(QString diskfilename, DiskFile *disk)
foreach(FileDescriptiveEntry fde, m_disk->getAllFDEs()) { foreach(FileDescriptiveEntry fde, m_disk->getAllFDEs()) {
QString filetype = fde.fileType(); QString filetype = fde.fileType();
QString filename = AppleString(fde.filename).printable().trimmed(); QString filename = AppleString(fde.filename).printable().trimmed();
int size = fde.lengthInSectors; quint16 size = fde.lengthInSectors;
qDebug() << "SIZE: " << size;
bool locked = fde.isLocked(); bool locked = fde.isLocked();
QString sizeStr = QString("%1").arg(size,5,10,QChar(' ')).toUpper(); 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); QString text = QString("%1 %2 %3 %4").arg(locked?"*":" ").arg(sizeStr).arg(filetype).arg(filename);