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 "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++];

View File

@ -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);

View File

@ -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]);
}
}

View File

@ -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]);
}

View File

@ -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);

View File

@ -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;

View File

@ -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) {

View File

@ -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);