Дискеты Teledisk и CP/M 2.2

Компьютер Орион-128 (1990) расширяемый до 256 КБ и его развитие

Moderator: Shaos

User avatar
Panther
Writer
Posts: 11
Joined: 30 Oct 2008 06:27
Location: Москва

Дискеты Teledisk и CP/M 2.2

Post by Panther »

Я тут разбирал файлы, выложенные Shaos и CHRV по Ориону. Там часть дискет в формате Teledisk (.TD0), часть в виде распакованных директорий. Мне показалось не совсем удобным все это каждый раз конвертировать в ODI, поэтому я написал библиотеку для использования в эмуляторах, которая позволяет на лету (т.е. в памяти) создавать посекторный образ для обоих случаев, включая загрузочные варианты. Формат диска любой, привязки именно к Ориону нет. Плюс в работе вариант, работающий с тем же самым, но упакованным в Zip. Написано на Delphi 7, без проблем должно работать в Builder. Для остального возможен вариант с DLL, либо доработка под Free Pascal.

Если это кому-то интересно, я могу довести библиотеку до товарного вида и предоставить ее в общий доступ.
User avatar
HardWareMan
Banned
Posts: 2139
Joined: 20 Mar 2005 13:41
Location: От туда

Post by HardWareMan »

Давай выкладывай. А там разберемся. ;)
PS Оригинал на Дельфи я приветствую.
User avatar
Error404
Maniac
Posts: 269
Joined: 05 Oct 2006 04:45
Location: Moscow

Post by Error404 »

Panther wrote:Я тут разбирал файлы, выложенные Shaos и CHRV по Ориону.
Нашел что-нибудь интересное?
Panther wrote: я написал библиотеку для использования в эмуляторах, которая позволяет на лету (т.е. в памяти) создавать посекторный образ для обоих случаев, включая загрузочные варианты. Формат диска любой, привязки именно к Ориону нет. Плюс в работе вариант, работающий с тем же самым, но упакованным в Zip. Написано на Delphi 7, без проблем должно работать в Builder. Для остального возможен вариант с DLL, либо доработка под Free Pascal.
Если это кому-то интересно, я могу довести библиотеку до товарного вида и предоставить ее в общий доступ.
Интересно, выкладывай. А либа работает только на RO, или на запись тоже?
На седьмую версию каких-то особых завязок нет?
Всем добра!
User avatar
Panther
Writer
Posts: 11
Joined: 30 Oct 2008 06:27
Location: Москва

Post by Panther »

HardWareMan wrote:Давай выкладывай. А там разберемся. ;)
PS Оригинал на Дельфи я приветствую.
Все будет в исходниках. Смысл как раз в том, чтобы сделать нормальную общедоступную библиотеку.
Error404 wrote:Интересно, выкладывай. А либа работает только на RO, или на запись тоже?
На седьмую версию каких-то особых завязок нет?
Записать можно готовый образ, а если в эмуляторе поддерживается запись, то образ и будет с изменениями. Но это же от данной библиотеки не зависит, как буфер в файл слить (хотя там и есть функция для этого, просто для удобства).

Можно сделать экспорт в Teledisk, проблем нет, но оно надо? Если нужно, то сделаю.

Насчет обратного экспорта диска CP/M в набор файлов я еще не решил, как это правильно организовать, если директория непустая. Совпадающие файлы перезаписать, а отсутствующие в образе (т.е. удаленные через эмулятор) удалить? Опасная штука, если не ту директорию указать :) А если их оставлять, не потеряется ли смысл такого экспорта? Или хранить список файлов с момента генерации образа и потом сравнивать?

Привязки к версии нет.
User avatar
Panther
Writer
Posts: 11
Joined: 30 Oct 2008 06:27
Location: Москва

Post by Panther »

Error404 wrote:
Panther wrote:Я тут разбирал файлы, выложенные Shaos и CHRV по Ориону.
Нашел что-нибудь интересное?
Пока нет, меня как раз напрягло все это конвертировать, чтобы посмотреть :)
User avatar
Error404
Maniac
Posts: 269
Joined: 05 Oct 2006 04:45
Location: Moscow

Post by Error404 »

Panther wrote:
Error404 wrote:
Panther wrote:Я тут разбирал файлы, выложенные Shaos и CHRV по Ориону.
Нашел что-нибудь интересное?
Пока нет, меня как раз напрягло все это конвертировать, чтобы посмотреть :)
Ну, я просто делал: for %%i in (*.td0) do wteledsk........
А вот отсмотреть все не хватило времени и терпения. :)
Всем добра!
User avatar
Panther
Writer
Posts: 11
Joined: 30 Oct 2008 06:27
Location: Москва

Post by Panther »

Error404 wrote:Ну, я просто делал: for %%i in (*.td0) do wteledsk........
Нет, мне не лень это сделать, просто показалось не очень правильным разводить копии одного и того же в разных форматах.
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Error404 wrote:
Panther wrote:Я тут разбирал файлы, выложенные Shaos и CHRV по Ориону.
Нашел что-нибудь интересное?
Да - Error404 тоже кое-чего предоставил в ту коллекцию ;)
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Panther
Writer
Posts: 11
Joined: 30 Oct 2008 06:27
Location: Москва

Post by Panther »

Shaos wrote:Да - Error404 тоже кое-чего предоставил в ту коллекцию ;)
Сорри - конечно, тоже респект и уважуха. :rotate:
User avatar
Panther
Writer
Posts: 11
Joined: 30 Oct 2008 06:27
Location: Москва

Post by Panther »

Тестируя генерацию образа CP/M я столкнулся с такой проблемой:
В описателе формата диска (DPB) есть поле под названием DSM. В классических руководствах по CP/M утверждается (и мои расчеты по приведенным примерам это подтверждают), что оно равно максимальному номеру блока, причем каталог входит в этот объем.

Т.е. для расчета DSM отбрасываем системные треки, делим оставшееся место на размер блока и вычитаем единицу.

С другой стороны, разбирая диски Орионовских систем, я обнаружил, что в них DSM отличается тем, что из него уже вычтен каталог и не вычтена единица. Т.е. он обозначает максимальное свободное место в блоках.

Какой алгоритм вычисления DSM в итоге использовать? Это принципиальное решение авторов орионовской версии CP/M или ошибка программ генерации образов? Если это не ошибка, то придется вводить форматы "наши слоны" и "буржуи проклятые"?
User avatar
Error404
Maniac
Posts: 269
Joined: 05 Oct 2006 04:45
Location: Moscow

Post by Error404 »

Panther wrote:Тестируя генерацию образа CP/M я столкнулся с такой проблемой:
В описателе формата диска (DPB) есть поле под названием DSM. В классических руководствах по CP/M утверждается (и мои расчеты по приведенным примерам это подтверждают), что оно равно максимальному номеру блока, причем каталог входит в этот объем.

Т.е. для расчета DSM отбрасываем системные треки, делим оставшееся место на размер блока и вычитаем единицу.

С другой стороны, разбирая диски Орионовских систем, я обнаружил, что в них DSM отличается тем, что из него уже вычтен каталог и не вычтена единица. Т.е. он обозначает максимальное свободное место в блоках.

Какой алгоритм вычисления DSM в итоге использовать? Это принципиальное решение авторов орионовской версии CP/M или ошибка программ генерации образов? Если это не ошибка, то придется вводить форматы "наши слоны" и "буржуи проклятые"?
Честно говоря, ни вижу ничего чем это было бы черевато при конвертации из одного представления в другое (содержимое же не меняется?). BDOS на дискетках классический, слава богу ковырять его у адаптатаров ума не хватило, - разберется (им писалось, им же и прочитается). Худшее - не полное использование дискеты. Но кого теперь волнуют "пропавшие" 2 килобайта?
Всем добра!
User avatar
Panther
Writer
Posts: 11
Joined: 30 Oct 2008 06:27
Location: Москва

Post by Panther »

Error404 wrote:Честно говоря, ни вижу ничего чем это было бы черевато при конвертации из одного представления в другое (содержимое же не меняется?). BDOS на дискетках классический, слава богу ковырять его у адаптатаров ума не хватило, - разберется (им писалось, им же и прочитается). Худшее - не полное использование дискеты. Но кого теперь волнуют "пропавшие" 2 килобайта?
Ну, хотелось, чтобы программа была универсальней. Ладно, сделаю, что если есть загрузчик, то его параметры имеют безусловный приоритет.
User avatar
Panther
Writer
Posts: 11
Joined: 30 Oct 2008 06:27
Location: Москва

Post by Panther »

Пока работа с CP/M немного застопорилась, выложил описание формата и исходные коды библиотеки Teledisk:

http://www.emuverse.ru/wiki/Teledisk
User avatar
barsik
Doomed
Posts: 585
Joined: 19 Feb 2017 03:46
Location: Санкт-Петербург, Россия, третья планета от Солнца, галактика Млечный Путь

Re:

Post by barsik »

Panther wrote:В описателе формата диска (DPB) есть поле под названием DSM... разбирая диски Орионовских систем, я обнаружил, что в них DSM отличается тем, что из него уже вычтен каталог и не вычтена единица
Лень сейчас разираться о чём это, но помню, что в первых вариантах адаптаций CP/M на ОРИОН (до 1993-94) один из параметров DPB был неверным. В частности на дискету можно было записать только 778 кб вместо 800, т.к общий объём диска в блоках был неверным. После я эту ошибку исправил. Это скорей всего не наша, отечественная ошибка, а пришедшая из версии CP/M прототипа. Потому что фирменные читалки дискетных форматов любили именно такой формат, причём если какой-либо параметр DPB изменить (например, число секторов на трек, общий размер в блоках, число зарезервированных системных треков), то формат переставал читаться.

Я на этом пострадал, т.к любил использовать другие форматы, немного более выгодные форматы, например, 6 секторов на трек при DD-КНГМД и DD-дисках, число резервированных треков не 4, а 2, а общее число треков не 160, а 164 или 166 (большее число треков добавляло к полезным 780К ещё 50К). Из-за этого, когда в 1996-97 я стал переводить файлы с дискет на PC винт, то большинство моих дискет не читалось фирменными читалками, приходилось форматировать дискету форматёром из 1990 года, копировать туда файлы и только с такой дискеты удавалось считать в PC.
sergey2b
Fanat
Posts: 84
Joined: 10 Sep 2009 04:27
Location: 41.213.126.12

Re: Дискеты Teledisk и CP/M 2.2

Post by sergey2b »

а кто нибудь встречал полный исходный код teledisk на просторах инета ?
вопрос возник потому что я использую teledisk 2.12 и все работает нормально

но на 486 таже версия и с теми же фалами пишет что ошибка DMA при записи последних секторов
попробовал версию теледиска которая позволяет выбирать писать напрямую на диск или через BIOS номер ошибки изменился но смысл сообщения тот же

я нашел утилиты конвертации td0 в другие форматы но хотелось бы исспользовать теледиск