mirror of
https://github.com/MiSTer-devel/Main_MiSTer.git
synced 2026-04-12 03:04:02 +00:00
Comments: converted mixed codepage mess to UTF-8
This commit is contained in:
190
DiskImage.cpp
190
DiskImage.cpp
@@ -135,22 +135,22 @@ struct TD0_MAIN_HEADER // 12 bytes
|
||||
unsigned char Ver; // +4: Source version (1.0 -> 10, ..., 2.1 -> 21)
|
||||
unsigned char __2; // +5: ???
|
||||
unsigned char DiskType; // +6: Source disk type
|
||||
unsigned char Info; // +7: D7- «¨ç¨¥ image info
|
||||
unsigned char Info; // +7: D7-наличие image info
|
||||
unsigned char DataDOS; // +8: if(=0)'All sectors were copied', else'DOS Allocated sectors were copied'
|
||||
unsigned char ChkdSides; // +9: if(=1)'One side was checked', else'Both sides were checked'
|
||||
unsigned short CRC; // +A: CRC 娤¥à TD0_MAIN_HEADER (ªà®¬¥ ¡ ©â á CRC)
|
||||
unsigned short CRC; // +A: CRC хидера TD0_MAIN_HEADER (кроме байт с CRC)
|
||||
};
|
||||
|
||||
struct TD0_INFO_DATA // 10 ¡ ©â ¡¥§ áâப¨ ª®¬¥â à¨ï...
|
||||
struct TD0_INFO_DATA // 10 байт без строки коментария...
|
||||
{
|
||||
unsigned short CRC; // +0: CRC ¤«ï áâàãªâãàë COMMENT_DATA (¡¥§ ¡ ©â®¢ CRC)
|
||||
unsigned short strLen; // +2: „«¨ áâப¨ ª®¬¥â à¨ï
|
||||
unsigned char Year; // +4: „ â á®§¤ ¨ï - £®¤ (1900 + X)
|
||||
unsigned char Month; // +5: „ â á®§¤ ¨ï - ¬¥áïæ (Ÿ¢ àì=0, ”¥¢à «ì=1,...)
|
||||
unsigned char Day; // +6: „ â á®§¤ ¨ï - ç¨á«®
|
||||
unsigned char Hours; // +7: ‚६ï á®§¤ ¨ï - ç áë
|
||||
unsigned char Minutes; // +8: ‚६ï á®§¤ ¨ï - ¬¨ãâë
|
||||
unsigned char Seconds; // +9: ‚६ï á®§¤ ¨ï - ᥪã¤ë
|
||||
unsigned short CRC; // +0: CRC для структуры COMMENT_DATA (без байтов CRC)
|
||||
unsigned short strLen; // +2: Длина строки коментария
|
||||
unsigned char Year; // +4: Дата создания - год (1900 + X)
|
||||
unsigned char Month; // +5: Дата создания - месяц (Январь=0, Февраль=1,...)
|
||||
unsigned char Day; // +6: Дата создания - число
|
||||
unsigned char Hours; // +7: Время создания - часы
|
||||
unsigned char Minutes; // +8: Время создания - минуты
|
||||
unsigned char Seconds; // +9: Время создания - секунды
|
||||
};
|
||||
|
||||
struct TD0_TRACK_HEADER // 4 bytes
|
||||
@@ -169,27 +169,27 @@ struct TD0_SECT_HEADER // 8 bytes
|
||||
|
||||
struct FDD_MAIN_HEADER
|
||||
{
|
||||
char ID[30]; /* ᨣ âãà */
|
||||
unsigned char MaxTracks; /* ç¨á«® â४®¢ (樫¨¤à®¢) */
|
||||
unsigned char MaxHeads; /* ç¨á«® £®«®¢®ª (1 ¨«¨ 2) */
|
||||
char ID[30]; /* сигнатура */
|
||||
unsigned char MaxTracks; /* число треков (цилиндров) */
|
||||
unsigned char MaxHeads; /* число головок (1 или 2) */
|
||||
long diskIndex; /* unused */
|
||||
long DataOffset[512 * 2]; /* ᬥ饨¥ ¢ ä ©«¥ ª áâàãªâãà ¬ § £®«®¢ª®¢ */
|
||||
/* â४®¢ */
|
||||
long DataOffset[512 * 2]; /* смещение в файле к структурам заголовков */
|
||||
/* треков */
|
||||
};
|
||||
|
||||
struct FDD_TRACK_HEADER
|
||||
{
|
||||
unsigned char trkType; /* unused */
|
||||
unsigned char SectNum; /* ç¨á«® ᥪâ®à®¢ â४¥ */
|
||||
unsigned char SectNum; /* число секторов на треке */
|
||||
struct
|
||||
{
|
||||
/* § £®«®¢®ª ᥪâ®à */
|
||||
unsigned char trk; /* ®¬¥à â४ */
|
||||
unsigned char side; /* ®¬¥à áâ®à®ë */
|
||||
/* 7 ¡¨â í⮣® ¡ ©â 㪠§ë¢ ¥â ¡¨â a */
|
||||
unsigned char sect; /* ®¬¥à ᥪâ®à */
|
||||
unsigned char size; /* à §¬¥à ᥪâ®à (ª®¤) */
|
||||
long SectPos; /* ᬥ饨¥ ¢ ä ©«¥ ª ¤ ë¬ á¥ªâ®à */
|
||||
/* заголовок сектора */
|
||||
unsigned char trk; /* номер трека */
|
||||
unsigned char side; /* номер стороны */
|
||||
/* 7 бит этого байта указывает бит a */
|
||||
unsigned char sect; /* номер сектора */
|
||||
unsigned char size; /* размер сектора (код) */
|
||||
long SectPos; /* смещение в файле к данным сектора */
|
||||
} sect[256];
|
||||
};
|
||||
|
||||
@@ -1013,7 +1013,7 @@ bool TDiskImage::FindSector(unsigned char CYL, unsigned char SIDE,
|
||||
bool FirstFind = true;
|
||||
unsigned int FirstPos = 0;
|
||||
|
||||
// Ïîèñê àäðåñíîé ìåòêè òðåáóåìîãî ñåêòîðà...
|
||||
// Поиск адресной метки требуемого сектора...
|
||||
bool ADFOUND = false;
|
||||
for (;;)
|
||||
{
|
||||
@@ -1041,7 +1041,7 @@ bool TDiskImage::FindSector(unsigned char CYL, unsigned char SIDE,
|
||||
|
||||
if (!ADFOUND) return false;
|
||||
|
||||
// ADRMARK íóæíîãî íàéäåí, ïîèñê ìàññèâà äàííûõ...
|
||||
// ADRMARK нужного найден, поиск массива данных...
|
||||
|
||||
unsigned char *track = vgfs->vgfa.TrackPointer;
|
||||
unsigned char *clks = vgfs->vgfa.ClkPointer;
|
||||
@@ -1183,7 +1183,7 @@ void TDiskImage::formatTRDOS(unsigned int Tcount, unsigned int Scount)
|
||||
|
||||
unsigned short TotalSecs = Tcount*Scount * 16 - 16;
|
||||
|
||||
// ôîðìàòèðîâàíèå íîâîãî äèñêà ïîä TR-DOS (16 x 256bytes sector per track)...
|
||||
// форматирование нового диска под TR-DOS (16 x 256bytes sector per track)...
|
||||
unsigned int ptrcrc;
|
||||
unsigned int r;
|
||||
unsigned short vgcrc;
|
||||
@@ -1198,23 +1198,23 @@ void TDiskImage::formatTRDOS(unsigned int Tcount, unsigned int Scount)
|
||||
unsigned int tptr = 0;
|
||||
for (int sec = 0; sec < 16; sec++)
|
||||
{
|
||||
for (r = 0; r < 10; r++) // Ïåðâûé ïðîáåë
|
||||
for (r = 0; r < 10; r++) // Первый пробел
|
||||
{
|
||||
FTracksPtr[trk][side][0][tptr] = 0x4E;
|
||||
FTracksPtr[trk][side][1][tptr++] = 0x00;
|
||||
}
|
||||
for (r = 0; r < 12; r++) // Ñèíõðîïðîìåæóòîê
|
||||
for (r = 0; r < 12; r++) // Синхропромежуток
|
||||
{
|
||||
FTracksPtr[trk][side][0][tptr] = 0x00;
|
||||
FTracksPtr[trk][side][1][tptr++] = 0x00;
|
||||
}
|
||||
ptrcrc = tptr;
|
||||
for (r = 0; r < 3; r++) // Ñèíõðîèìïóëüñ
|
||||
for (r = 0; r < 3; r++) // Синхроимпульс
|
||||
{
|
||||
FTracksPtr[trk][side][0][tptr] = 0xA1;
|
||||
FTracksPtr[trk][side][1][tptr++] = 0xFF;
|
||||
}
|
||||
FTracksPtr[trk][side][0][tptr] = 0xFE; // Ìåòêà "Àäðåñ"
|
||||
FTracksPtr[trk][side][0][tptr] = 0xFE; // Метка "Адрес"
|
||||
FTracksPtr[trk][side][1][tptr++] = 0x00;
|
||||
|
||||
FTracksPtr[trk][side][0][tptr] = (unsigned char)trk; // cyl
|
||||
@@ -1232,26 +1232,26 @@ void TDiskImage::formatTRDOS(unsigned int Tcount, unsigned int Scount)
|
||||
FTracksPtr[trk][side][0][tptr] = (unsigned char)(vgcrc & 0xFF);
|
||||
FTracksPtr[trk][side][1][tptr++] = 0x00;
|
||||
|
||||
for (r = 0; r < 22; r++) // Âòîðîé ïðîáåë
|
||||
for (r = 0; r < 22; r++) // Второй пробел
|
||||
{
|
||||
FTracksPtr[trk][side][0][tptr] = 0x4E;
|
||||
FTracksPtr[trk][side][1][tptr++] = 0x00;
|
||||
}
|
||||
for (r = 0; r < 12; r++) // Ñèíõðîïðîìåæóòîê
|
||||
for (r = 0; r < 12; r++) // Синхропромежуток
|
||||
{
|
||||
FTracksPtr[trk][side][0][tptr] = 0x00;
|
||||
FTracksPtr[trk][side][1][tptr++] = 0x00;
|
||||
}
|
||||
ptrcrc = tptr;
|
||||
for (r = 0; r < 3; r++) // Ñèíõðîèìïóëüñ
|
||||
for (r = 0; r < 3; r++) // Синхроимпульс
|
||||
{
|
||||
FTracksPtr[trk][side][0][tptr] = 0xA1;
|
||||
FTracksPtr[trk][side][1][tptr++] = 0xFF;
|
||||
}
|
||||
FTracksPtr[trk][side][0][tptr] = 0xFB; // Ìåòêà "Äàííûå"
|
||||
FTracksPtr[trk][side][0][tptr] = 0xFB; // Метка "Данные"
|
||||
FTracksPtr[trk][side][1][tptr++] = 0x00;
|
||||
|
||||
for (r = 0; r < 256; r++) // ñåêòîð 256áàéò
|
||||
for (r = 0; r < 256; r++) // сектор 256байт
|
||||
{
|
||||
FTracksPtr[trk][side][0][tptr] = 0x00;
|
||||
FTracksPtr[trk][side][1][tptr++] = 0x00;
|
||||
@@ -1281,7 +1281,7 @@ void TDiskImage::formatTRDOS(unsigned int Tcount, unsigned int Scount)
|
||||
FTracksPtr[trk][side][0][tptr] = (unsigned char)(vgcrc & 0xFF);
|
||||
FTracksPtr[trk][side][1][tptr++] = 0x00;
|
||||
|
||||
for (r = 0; r < 60; r++) // Òðåòèé ïðîáåë
|
||||
for (r = 0; r < 60; r++) // Третий пробел
|
||||
{
|
||||
FTracksPtr[trk][side][0][tptr] = 0x4E;
|
||||
FTracksPtr[trk][side][1][tptr++] = 0x00;
|
||||
@@ -1554,11 +1554,11 @@ void TDiskImage::readFDI(int hfile, bool readonly)
|
||||
struct FDISECINFO
|
||||
{
|
||||
unsigned char ADAM[5];
|
||||
unsigned int SectorOffset; // îòíîñèò DataOffset
|
||||
unsigned int SectorOffset; // относит DataOffset
|
||||
};
|
||||
struct FDITRACKHDR
|
||||
{
|
||||
unsigned int DataOffset; // îòíîñèò íà÷àëà ôàéëà
|
||||
unsigned int DataOffset; // относит начала файла
|
||||
unsigned int SectorCount;
|
||||
FDISECINFO SectorsInfo[256];
|
||||
};
|
||||
@@ -1567,7 +1567,7 @@ void TDiskImage::readFDI(int hfile, bool readonly)
|
||||
unsigned int fdiOFF = 0x0E + fdiSIZEext;
|
||||
|
||||
unsigned int trk, side;
|
||||
// Àíàëèç îáëàñòè çàãîëîâêîâ òðåêîâ...
|
||||
// Анализ области заголовков треков...
|
||||
for (trk = 0; trk <= unsigned(MaxTrack); trk++)
|
||||
for (side = 0; side <= unsigned(MaxSide); side++)
|
||||
{
|
||||
@@ -1590,7 +1590,7 @@ void TDiskImage::readFDI(int hfile, bool readonly)
|
||||
return;
|
||||
}
|
||||
|
||||
fdiOFF += 2; // "Âñåãäà ñîäåðæèò 0 (ðåçåðâ äëÿ ìîäåðíèçàöèè)"
|
||||
fdiOFF += 2; // "Всегда содержит 0 (резерв для модернизации)"
|
||||
|
||||
tracksinfo[trk*(MaxSide + 1) + side].SectorCount = unsigned(ptr[fdiOFF++]);
|
||||
|
||||
@@ -1611,7 +1611,7 @@ void TDiskImage::readFDI(int hfile, bool readonly)
|
||||
}
|
||||
}
|
||||
|
||||
// ôîðìàòèðîâàíèå íîâîãî äèñêà è ðàçìåùåíèå FDI ñåêòîðîâ...
|
||||
// форматирование нового диска и размещение FDI секторов...
|
||||
unsigned int ptrcrc;
|
||||
unsigned int r;
|
||||
unsigned short vgcrc;
|
||||
@@ -1635,7 +1635,7 @@ void TDiskImage::readFDI(int hfile, bool readonly)
|
||||
|
||||
SecCount = tracksinfo[trk*(MaxSide + 1) + side].SectorCount;
|
||||
|
||||
// Âû÷èñëÿåì íåîáõîäèìîå ÷èñëî áàéò ïîä äàííûå:
|
||||
// Вычисляем необходимое число байт под данные:
|
||||
trkdatalen = 0;
|
||||
for (unsigned int ilsec = 0; ilsec < SecCount; ilsec++)
|
||||
{
|
||||
@@ -1645,7 +1645,7 @@ void TDiskImage::readFDI(int hfile, bool readonly)
|
||||
else SL = 128 << SL;
|
||||
|
||||
if (tracksinfo[trk*(MaxSide + 1) + side].SectorsInfo[ilsec].ADAM[4] & 0x40)
|
||||
SL = 0; // çàãîëîâîê áåç ìàññèâà äàííûõ
|
||||
SL = 0; // заголовок без массива данных
|
||||
else
|
||||
trkdatalen += 4; // for data header/crc: 0xA1, 0xFB, ...,2bytes
|
||||
|
||||
@@ -1671,14 +1671,14 @@ void TDiskImage::readFDI(int hfile, bool readonly)
|
||||
|
||||
unsigned int FreeSpace = 6250 - (trkdatalen + SecCount*(3 + 2));
|
||||
|
||||
unsigned int SynchroPulseLen = 1; // 1 óæå ó÷òåí â trkdatalen...
|
||||
unsigned int SynchroPulseLen = 1; // 1 уже учтен в trkdatalen...
|
||||
unsigned int FirstSpaceLen = 1;
|
||||
unsigned int SecondSpaceLen = 1;
|
||||
unsigned int ThirdSpaceLen = 1;
|
||||
unsigned int SynchroSpaceLen = 1;
|
||||
FreeSpace -= FirstSpaceLen + SecondSpaceLen + ThirdSpaceLen + SynchroSpaceLen;
|
||||
|
||||
// Ðàñïðåäåëÿåì äëèíû ïðîáåëîâ è ñèíõðîïðîìåæóòêà:
|
||||
// Распределяем длины пробелов и синхропромежутка:
|
||||
while (FreeSpace > 0)
|
||||
{
|
||||
if (FreeSpace >= (SecCount * 2))
|
||||
@@ -1694,32 +1694,32 @@ void TDiskImage::readFDI(int hfile, bool readonly)
|
||||
|
||||
if ((SynchroSpaceLen >= 12) && (FirstSpaceLen >= 10) && (SecondSpaceLen >= 22) && (ThirdSpaceLen >= 60)) break;
|
||||
};
|
||||
// ïî âîçìîæíîñòè äåëàåì òðè ñèíõðîèìïóëüñà...
|
||||
// по возможности делаем три синхроимпульса...
|
||||
if (FreeSpace >(SecCount * 2) + 10) { SynchroPulseLen++; FreeSpace -= SecCount; }
|
||||
if (FreeSpace >(SecCount * 2) + 9) SynchroPulseLen++;
|
||||
|
||||
// Ôîðìàòèðóåì äîðîæêó...
|
||||
// Форматируем дорожку...
|
||||
|
||||
unsigned int tptr = 0;
|
||||
for (unsigned sec = 0; sec < SecCount; sec++)
|
||||
{
|
||||
for (r = 0; r < FirstSpaceLen; r++) // Ïåðâûé ïðîáåë
|
||||
for (r = 0; r < FirstSpaceLen; r++) // Первый пробел
|
||||
{
|
||||
FTracksPtr[trk][side][0][tptr] = 0x4E;
|
||||
FTracksPtr[trk][side][1][tptr++] = 0x00;
|
||||
}
|
||||
for (r = 0; r < SynchroSpaceLen; r++) // Ñèíõðîïðîìåæóòîê
|
||||
for (r = 0; r < SynchroSpaceLen; r++) // Синхропромежуток
|
||||
{
|
||||
FTracksPtr[trk][side][0][tptr] = 0x00;
|
||||
FTracksPtr[trk][side][1][tptr++] = 0x00;
|
||||
}
|
||||
ptrcrc = tptr;
|
||||
for (r = 0; r < SynchroPulseLen; r++) // Ñèíõðîèìïóëüñ
|
||||
for (r = 0; r < SynchroPulseLen; r++) // Синхроимпульс
|
||||
{
|
||||
FTracksPtr[trk][side][0][tptr] = 0xA1;
|
||||
FTracksPtr[trk][side][1][tptr++] = 0xFF;
|
||||
}
|
||||
FTracksPtr[trk][side][0][tptr] = 0xFE; // Ìåòêà "Àäðåñ"
|
||||
FTracksPtr[trk][side][0][tptr] = 0xFE; // Метка "Адрес"
|
||||
FTracksPtr[trk][side][1][tptr++] = 0x00;
|
||||
|
||||
FTracksPtr[trk][side][0][tptr] = tracksinfo[trk*(MaxSide + 1) + side].SectorsInfo[sec].ADAM[0]; // cyl
|
||||
@@ -1737,12 +1737,12 @@ void TDiskImage::readFDI(int hfile, bool readonly)
|
||||
FTracksPtr[trk][side][0][tptr] = (unsigned char)(vgcrc & 0xFF);
|
||||
FTracksPtr[trk][side][1][tptr++] = 0x00;
|
||||
|
||||
for (r = 0; r < SecondSpaceLen; r++) // Âòîðîé ïðîáåë
|
||||
for (r = 0; r < SecondSpaceLen; r++) // Второй пробел
|
||||
{
|
||||
FTracksPtr[trk][side][0][tptr] = 0x4E;
|
||||
FTracksPtr[trk][side][1][tptr++] = 0x00;
|
||||
}
|
||||
for (r = 0; r < SynchroSpaceLen; r++) // Ñèíõðîïðîìåæóòîê
|
||||
for (r = 0; r < SynchroSpaceLen; r++) // Синхропромежуток
|
||||
{
|
||||
FTracksPtr[trk][side][0][tptr] = 0x00;
|
||||
FTracksPtr[trk][side][1][tptr++] = 0x00;
|
||||
@@ -1754,23 +1754,23 @@ void TDiskImage::readFDI(int hfile, bool readonly)
|
||||
// !WARNING! this feature of FDI format is NOT FULL DOCUMENTED!!!
|
||||
// !!!!!!!!!
|
||||
//
|
||||
// Flags::bit6 - Âîçìîæíî, 1 â äàííîì ðàçðÿäå
|
||||
// áóäåò îáîçíà÷àòü àäðåñíûé ìàðêåð áåç îáëàñòè äàííûõ.
|
||||
// Flags::bit6 - Возможно, 1 в данном разряде
|
||||
// будет обозначать адресный маркер без области данных.
|
||||
//
|
||||
|
||||
if (!(fdiSectorFlags & 0x40)) // oh-oh, data area not present... ;-)
|
||||
{
|
||||
ptrcrc = tptr;
|
||||
for (r = 0; r < SynchroPulseLen; r++) // Ñèíõðîèìïóëüñ
|
||||
for (r = 0; r < SynchroPulseLen; r++) // Синхроимпульс
|
||||
{
|
||||
FTracksPtr[trk][side][0][tptr] = 0xA1;
|
||||
FTracksPtr[trk][side][1][tptr++] = 0xFF;
|
||||
}
|
||||
|
||||
if (fdiSectorFlags & 0x80)
|
||||
FTracksPtr[trk][side][0][tptr] = 0xF8; // Ìåòêà "Óäàëåííûå äàííûå"
|
||||
FTracksPtr[trk][side][0][tptr] = 0xF8; // Метка "Удаленные данные"
|
||||
else
|
||||
FTracksPtr[trk][side][0][tptr] = 0xFB; // Ìåòêà "Äàííûå"
|
||||
FTracksPtr[trk][side][0][tptr] = 0xFB; // Метка "Данные"
|
||||
FTracksPtr[trk][side][1][tptr++] = 0x00;
|
||||
|
||||
|
||||
@@ -1780,7 +1780,7 @@ void TDiskImage::readFDI(int hfile, bool readonly)
|
||||
|
||||
unsigned int secDATAOFF = fdiOFFdata + tracksinfo[trk*(MaxSide + 1) + side].DataOffset + tracksinfo[trk*(MaxSide + 1) + side].SectorsInfo[sec].SectorOffset;
|
||||
|
||||
for (r = 0; r < SL; r++) // ñåêòîð SL áàéò
|
||||
for (r = 0; r < SL; r++) // сектор SL байт
|
||||
{
|
||||
FTracksPtr[trk][side][0][tptr] = ptr[secDATAOFF + r];
|
||||
FTracksPtr[trk][side][1][tptr++] = 0x00;
|
||||
@@ -1806,7 +1806,7 @@ void TDiskImage::readFDI(int hfile, bool readonly)
|
||||
}
|
||||
|
||||
|
||||
for (r = 0; r < ThirdSpaceLen; r++) // Òðåòèé ïðîáåë
|
||||
for (r = 0; r < ThirdSpaceLen; r++) // Третий пробел
|
||||
{
|
||||
FTracksPtr[trk][side][0][tptr] = 0x4E;
|
||||
FTracksPtr[trk][side][1][tptr++] = 0x00;
|
||||
@@ -1873,7 +1873,7 @@ void TDiskImage::readFDD(int hfile, bool readonly)
|
||||
MaxSide = MaxH;
|
||||
|
||||
|
||||
// ôîðìàòèðîâàíèå íîâîãî äèñêà è ðàçìåùåíèå FDD ñåêòîðîâ...
|
||||
// форматирование нового диска и размещение FDD секторов...
|
||||
unsigned int ptrcrc;
|
||||
unsigned int r;
|
||||
unsigned short vgcrc;
|
||||
@@ -1952,7 +1952,7 @@ void TDiskImage::readFDD(int hfile, bool readonly)
|
||||
|
||||
|
||||
|
||||
// Âû÷èñëÿåì íåîáõîäèìîå ÷èñëî áàéò ïîä äàííûå:
|
||||
// Вычисляем необходимое число байт под данные:
|
||||
trkdatalen = 0;
|
||||
for (unsigned int ilsec = 0; ilsec < SecCount; ilsec++)
|
||||
{
|
||||
@@ -1984,14 +1984,14 @@ void TDiskImage::readFDD(int hfile, bool readonly)
|
||||
|
||||
unsigned int FreeSpace = 6250 - (trkdatalen + SecCount*(3 + 2));
|
||||
|
||||
unsigned int SynchroPulseLen = 1; // 1 óæå ó÷òåí â trkdatalen...
|
||||
unsigned int SynchroPulseLen = 1; // 1 уже учтен в trkdatalen...
|
||||
unsigned int FirstSpaceLen = 1;
|
||||
unsigned int SecondSpaceLen = 1;
|
||||
unsigned int ThirdSpaceLen = 1;
|
||||
unsigned int SynchroSpaceLen = 1;
|
||||
FreeSpace -= FirstSpaceLen + SecondSpaceLen + ThirdSpaceLen + SynchroSpaceLen;
|
||||
|
||||
// Ðàñïðåäåëÿåì äëèíû ïðîáåëîâ è ñèíõðîïðîìåæóòêà:
|
||||
// Распределяем длины пробелов и синхропромежутка:
|
||||
while (FreeSpace > 0)
|
||||
{
|
||||
if (FreeSpace >= (SecCount * 2))
|
||||
@@ -2007,32 +2007,32 @@ void TDiskImage::readFDD(int hfile, bool readonly)
|
||||
|
||||
if ((SynchroSpaceLen >= 12) && (FirstSpaceLen >= 10) && (SecondSpaceLen >= 22) && (ThirdSpaceLen >= 60)) break;
|
||||
};
|
||||
// ïî âîçìîæíîñòè äåëàåì òðè ñèíõðîèìïóëüñà...
|
||||
// по возможности делаем три синхроимпульса...
|
||||
if (FreeSpace >(SecCount * 2) + 10) { SynchroPulseLen++; FreeSpace -= SecCount; }
|
||||
if (FreeSpace >(SecCount * 2) + 9) SynchroPulseLen++;
|
||||
|
||||
// Ôîðìàòèðóåì äîðîæêó...
|
||||
// Форматируем дорожку...
|
||||
|
||||
unsigned int tptr = 0;
|
||||
for (unsigned sec = 0; sec < SecCount; sec++)
|
||||
{
|
||||
for (r = 0; r < FirstSpaceLen; r++) // Ïåðâûé ïðîáåë
|
||||
for (r = 0; r < FirstSpaceLen; r++) // Первый пробел
|
||||
{
|
||||
FTracksPtr[trk][side][0][tptr] = 0x4E;
|
||||
FTracksPtr[trk][side][1][tptr++] = 0x00;
|
||||
}
|
||||
for (r = 0; r < SynchroSpaceLen; r++) // Ñèíõðîïðîìåæóòîê
|
||||
for (r = 0; r < SynchroSpaceLen; r++) // Синхропромежуток
|
||||
{
|
||||
FTracksPtr[trk][side][0][tptr] = 0x00;
|
||||
FTracksPtr[trk][side][1][tptr++] = 0x00;
|
||||
}
|
||||
ptrcrc = tptr;
|
||||
for (r = 0; r < SynchroPulseLen; r++) // Ñèíõðîèìïóëüñ
|
||||
for (r = 0; r < SynchroPulseLen; r++) // Синхроимпульс
|
||||
{
|
||||
FTracksPtr[trk][side][0][tptr] = 0xA1;
|
||||
FTracksPtr[trk][side][1][tptr++] = 0xFF;
|
||||
}
|
||||
FTracksPtr[trk][side][0][tptr] = 0xFE; // Ìåòêà "Àäðåñ"
|
||||
FTracksPtr[trk][side][0][tptr] = 0xFE; // Метка "Адрес"
|
||||
FTracksPtr[trk][side][1][tptr++] = 0x00;
|
||||
|
||||
FTracksPtr[trk][side][0][tptr] = trackinfo->sect[sec].trk; // cyl
|
||||
@@ -2050,12 +2050,12 @@ void TDiskImage::readFDD(int hfile, bool readonly)
|
||||
FTracksPtr[trk][side][0][tptr] = (unsigned char)(vgcrc & 0xFF);
|
||||
FTracksPtr[trk][side][1][tptr++] = 0x00;
|
||||
|
||||
for (r = 0; r < SecondSpaceLen; r++) // Âòîðîé ïðîáåë
|
||||
for (r = 0; r < SecondSpaceLen; r++) // Второй пробел
|
||||
{
|
||||
FTracksPtr[trk][side][0][tptr] = 0x4E;
|
||||
FTracksPtr[trk][side][1][tptr++] = 0x00;
|
||||
}
|
||||
for (r = 0; r < SynchroSpaceLen; r++) // Ñèíõðîïðîìåæóòîê
|
||||
for (r = 0; r < SynchroSpaceLen; r++) // Синхропромежуток
|
||||
{
|
||||
FTracksPtr[trk][side][0][tptr] = 0x00;
|
||||
FTracksPtr[trk][side][1][tptr++] = 0x00;
|
||||
@@ -2064,13 +2064,13 @@ void TDiskImage::readFDD(int hfile, bool readonly)
|
||||
|
||||
// DATA AM
|
||||
ptrcrc = tptr;
|
||||
for (r = 0; r < SynchroPulseLen; r++) // Ñèíõðîèìïóëüñ
|
||||
for (r = 0; r < SynchroPulseLen; r++) // Синхроимпульс
|
||||
{
|
||||
FTracksPtr[trk][side][0][tptr] = 0xA1;
|
||||
FTracksPtr[trk][side][1][tptr++] = 0xFF;
|
||||
}
|
||||
|
||||
FTracksPtr[trk][side][0][tptr] = 0xFB; // Ìåòêà "Äàííûå"
|
||||
FTracksPtr[trk][side][0][tptr] = 0xFB; // Метка "Данные"
|
||||
FTracksPtr[trk][side][1][tptr++] = 0x00;
|
||||
|
||||
|
||||
@@ -2080,7 +2080,7 @@ void TDiskImage::readFDD(int hfile, bool readonly)
|
||||
|
||||
unsigned int secDATAOFF = trackinfo->sect[sec].SectPos;
|
||||
|
||||
for (r = 0; r < SL; r++) // ñåêòîð SL áàéò
|
||||
for (r = 0; r < SL; r++) // сектор SL байт
|
||||
{
|
||||
FTracksPtr[trk][side][0][tptr] = ptr[secDATAOFF + r];
|
||||
FTracksPtr[trk][side][1][tptr++] = 0x00;
|
||||
@@ -2095,7 +2095,7 @@ void TDiskImage::readFDD(int hfile, bool readonly)
|
||||
FTracksPtr[trk][side][1][tptr++] = 0x00;
|
||||
|
||||
|
||||
for (r = 0; r < ThirdSpaceLen; r++) // Òðåòèé ïðîáåë
|
||||
for (r = 0; r < ThirdSpaceLen; r++) // Третий пробел
|
||||
{
|
||||
FTracksPtr[trk][side][0][tptr] = 0x4E;
|
||||
FTracksPtr[trk][side][1][tptr++] = 0x00;
|
||||
@@ -2354,7 +2354,7 @@ void TDiskImage::readHOB(int hfile)
|
||||
unsigned short CRC = 0;
|
||||
for (i = 0; i < 15; i++) CRC = CRC + ptr[i];
|
||||
CRC *= 257;
|
||||
CRC += 105; // ñóììà ÷èñåë îò 0 äî 14
|
||||
CRC += 105; // сумма чисел от 0 до 14
|
||||
|
||||
if (CRC != hobRealCRC)
|
||||
ShowError(ERR_FILECRC" HOBETA!");
|
||||
@@ -2371,7 +2371,7 @@ void TDiskImage::readHOB(int hfile)
|
||||
}
|
||||
|
||||
// --- read file...
|
||||
dired.SecLen = ptr[0x0E]; // ÷èñëî ñåêòîðîâ ôàéëà
|
||||
dired.SecLen = ptr[0x0E]; // число секторов файла
|
||||
|
||||
VGFIND_SECTOR vgfs9;
|
||||
if (!FindSector(0, 0, 9, &vgfs9)) { delete ptr; return; }
|
||||
@@ -2529,7 +2529,7 @@ void TDiskImage::readTD0(int hfile, bool readonly)
|
||||
|
||||
unsigned int tmpOFF = tdOFF;
|
||||
|
||||
// Âû÷èñëÿåì íåîáõîäèìîå ÷èñëî áàéò ïîä äàííûå:
|
||||
// Вычисляем необходимое число байт под данные:
|
||||
unsigned int trkdatalen = 0;
|
||||
unsigned int SL;
|
||||
for (unsigned int ilsec = 0; ilsec < SecCount; ilsec++)
|
||||
@@ -2546,7 +2546,7 @@ void TDiskImage::readTD0(int hfile, bool readonly)
|
||||
trkdatalen += SL;
|
||||
}
|
||||
|
||||
// ïðîâåðêà íà âîçìîæíîñòü ôîðìàòà...
|
||||
// проверка на возможность формата...
|
||||
if (trkdatalen + SecCount*(3 + 2) > 6250) // 3x4E & 2x00 per sec checking
|
||||
{
|
||||
delete ptr;
|
||||
@@ -2565,14 +2565,14 @@ void TDiskImage::readTD0(int hfile, bool readonly)
|
||||
|
||||
unsigned int FreeSpace = 6250 - (trkdatalen + SecCount*(3 + 2));
|
||||
|
||||
unsigned int SynchroPulseLen = 1; // 1 óæå ó÷òåí â trkdatalen...
|
||||
unsigned int SynchroPulseLen = 1; // 1 уже учтен в trkdatalen...
|
||||
unsigned int FirstSpaceLen = 1;
|
||||
unsigned int SecondSpaceLen = 1;
|
||||
unsigned int ThirdSpaceLen = 1;
|
||||
unsigned int SynchroSpaceLen = 1;
|
||||
FreeSpace -= FirstSpaceLen + SecondSpaceLen + ThirdSpaceLen + SynchroSpaceLen;
|
||||
|
||||
// Ðàñïðåäåëÿåì äëèíû ïðîáåëîâ è ñèíõðîïðîìåæóòêà:
|
||||
// Распределяем длины пробелов и синхропромежутка:
|
||||
while (FreeSpace > 0)
|
||||
{
|
||||
if (FreeSpace >= (SecCount * 2))
|
||||
@@ -2588,11 +2588,11 @@ void TDiskImage::readTD0(int hfile, bool readonly)
|
||||
|
||||
if ((SynchroSpaceLen >= 12) && (FirstSpaceLen >= 10) && (SecondSpaceLen >= 22) && (ThirdSpaceLen >= 60)) break;
|
||||
};
|
||||
// ïî âîçìîæíîñòè äåëàåì òðè ñèíõðîèìïóëüñà...
|
||||
// по возможности делаем три синхроимпульса...
|
||||
if (FreeSpace >(SecCount * 2) + 10) { SynchroPulseLen++; FreeSpace -= SecCount; }
|
||||
if (FreeSpace >(SecCount * 2) + 9) SynchroPulseLen++;
|
||||
|
||||
// Ôîðìàòèðóåì äîðîæêó...
|
||||
// Форматируем дорожку...
|
||||
|
||||
unsigned int tptr = 0;
|
||||
unsigned int ptrcrc;
|
||||
@@ -2603,23 +2603,23 @@ void TDiskImage::readTD0(int hfile, bool readonly)
|
||||
tdsect = (TD0_SECT_HEADER*)(ptr + tdOFF);
|
||||
tdOFF += sizeof(TD0_SECT_HEADER) + 1;
|
||||
|
||||
for (r = 0; r < FirstSpaceLen; r++) // Ïåðâûé ïðîáåë
|
||||
for (r = 0; r < FirstSpaceLen; r++) // Первый пробел
|
||||
{
|
||||
FTracksPtr[trk][side][0][tptr] = 0x4E;
|
||||
FTracksPtr[trk][side][1][tptr++] = 0x00;
|
||||
}
|
||||
for (r = 0; r < SynchroSpaceLen; r++) // Ñèíõðîïðîìåæóòîê
|
||||
for (r = 0; r < SynchroSpaceLen; r++) // Синхропромежуток
|
||||
{
|
||||
FTracksPtr[trk][side][0][tptr] = 0x00;
|
||||
FTracksPtr[trk][side][1][tptr++] = 0x00;
|
||||
}
|
||||
ptrcrc = tptr;
|
||||
for (r = 0; r < SynchroPulseLen; r++) // Ñèíõðîèìïóëüñ
|
||||
for (r = 0; r < SynchroPulseLen; r++) // Синхроимпульс
|
||||
{
|
||||
FTracksPtr[trk][side][0][tptr] = 0xA1;
|
||||
FTracksPtr[trk][side][1][tptr++] = 0xFF;
|
||||
}
|
||||
FTracksPtr[trk][side][0][tptr] = 0xFE; // Ìåòêà "Àäðåñ"
|
||||
FTracksPtr[trk][side][0][tptr] = 0xFE; // Метка "Адрес"
|
||||
FTracksPtr[trk][side][1][tptr++] = 0x00;
|
||||
|
||||
FTracksPtr[trk][side][0][tptr] = tdsect->ADRM[0]; // cyl
|
||||
@@ -2637,12 +2637,12 @@ void TDiskImage::readTD0(int hfile, bool readonly)
|
||||
FTracksPtr[trk][side][0][tptr] = (unsigned char)(vgcrc & 0xFF);
|
||||
FTracksPtr[trk][side][1][tptr++] = 0x00;
|
||||
|
||||
for (r = 0; r < SecondSpaceLen; r++) // Âòîðîé ïðîáåë
|
||||
for (r = 0; r < SecondSpaceLen; r++) // Второй пробел
|
||||
{
|
||||
FTracksPtr[trk][side][0][tptr] = 0x4E;
|
||||
FTracksPtr[trk][side][1][tptr++] = 0x00;
|
||||
}
|
||||
for (r = 0; r < SynchroSpaceLen; r++) // Ñèíõðîïðîìåæóòîê
|
||||
for (r = 0; r < SynchroSpaceLen; r++) // Синхропромежуток
|
||||
{
|
||||
FTracksPtr[trk][side][0][tptr] = 0x00;
|
||||
FTracksPtr[trk][side][1][tptr++] = 0x00;
|
||||
@@ -2651,13 +2651,13 @@ void TDiskImage::readTD0(int hfile, bool readonly)
|
||||
if (tdsect->DataLength - 1) // oh-oh, data area not present... ;-)
|
||||
{
|
||||
ptrcrc = tptr;
|
||||
for (r = 0; r < SynchroPulseLen; r++) // Ñèíõðîèìïóëüñ
|
||||
for (r = 0; r < SynchroPulseLen; r++) // Синхроимпульс
|
||||
{
|
||||
FTracksPtr[trk][side][0][tptr] = 0xA1;
|
||||
FTracksPtr[trk][side][1][tptr++] = 0xFF;
|
||||
}
|
||||
|
||||
FTracksPtr[trk][side][0][tptr] = 0xFB; // Ìåòêà "Äàííûå"
|
||||
FTracksPtr[trk][side][0][tptr] = 0xFB; // Метка "Данные"
|
||||
FTracksPtr[trk][side][1][tptr++] = 0x00;
|
||||
|
||||
// SL = unsigned(tdsect->ADRM[3]);
|
||||
@@ -2665,7 +2665,7 @@ void TDiskImage::readTD0(int hfile, bool readonly)
|
||||
// else SL = 128 << SL;
|
||||
SL = tdsect->DataLength - 1;
|
||||
|
||||
for (r = 0; r < SL; r++) // ñåêòîð SL áàéò
|
||||
for (r = 0; r < SL; r++) // сектор SL байт
|
||||
{
|
||||
FTracksPtr[trk][side][0][tptr] = ptr[tdOFF + r];
|
||||
FTracksPtr[trk][side][1][tptr++] = 0x00;
|
||||
@@ -2681,7 +2681,7 @@ void TDiskImage::readTD0(int hfile, bool readonly)
|
||||
FTracksPtr[trk][side][1][tptr++] = 0x00;
|
||||
}
|
||||
|
||||
for (r = 0; r < ThirdSpaceLen; r++) // Òðåòèé ïðîáåë
|
||||
for (r = 0; r < ThirdSpaceLen; r++) // Третий пробел
|
||||
{
|
||||
FTracksPtr[trk][side][0][tptr] = 0x4E;
|
||||
FTracksPtr[trk][side][1][tptr++] = 0x00;
|
||||
|
||||
Reference in New Issue
Block a user