Дискеты Teledisk и CP/M 2.2
Moderator: Shaos
-
- Writer
- Posts: 11
- Joined: 30 Oct 2008 06:27
- Location: Москва
Дискеты Teledisk и CP/M 2.2
Я тут разбирал файлы, выложенные Shaos и CHRV по Ориону. Там часть дискет в формате Teledisk (.TD0), часть в виде распакованных директорий. Мне показалось не совсем удобным все это каждый раз конвертировать в ODI, поэтому я написал библиотеку для использования в эмуляторах, которая позволяет на лету (т.е. в памяти) создавать посекторный образ для обоих случаев, включая загрузочные варианты. Формат диска любой, привязки именно к Ориону нет. Плюс в работе вариант, работающий с тем же самым, но упакованным в Zip. Написано на Delphi 7, без проблем должно работать в Builder. Для остального возможен вариант с DLL, либо доработка под Free Pascal.
Если это кому-то интересно, я могу довести библиотеку до товарного вида и предоставить ее в общий доступ.
Если это кому-то интересно, я могу довести библиотеку до товарного вида и предоставить ее в общий доступ.
-
- Banned
- Posts: 2139
- Joined: 20 Mar 2005 13:41
- Location: От туда
-
- Maniac
- Posts: 269
- Joined: 05 Oct 2006 04:45
- Location: Moscow
Нашел что-нибудь интересное?Panther wrote:Я тут разбирал файлы, выложенные Shaos и CHRV по Ориону.
Интересно, выкладывай. А либа работает только на RO, или на запись тоже?Panther wrote: я написал библиотеку для использования в эмуляторах, которая позволяет на лету (т.е. в памяти) создавать посекторный образ для обоих случаев, включая загрузочные варианты. Формат диска любой, привязки именно к Ориону нет. Плюс в работе вариант, работающий с тем же самым, но упакованным в Zip. Написано на Delphi 7, без проблем должно работать в Builder. Для остального возможен вариант с DLL, либо доработка под Free Pascal.
Если это кому-то интересно, я могу довести библиотеку до товарного вида и предоставить ее в общий доступ.
На седьмую версию каких-то особых завязок нет?
Всем добра!
-
- Writer
- Posts: 11
- Joined: 30 Oct 2008 06:27
- Location: Москва
Все будет в исходниках. Смысл как раз в том, чтобы сделать нормальную общедоступную библиотеку.HardWareMan wrote:Давай выкладывай. А там разберемся.
PS Оригинал на Дельфи я приветствую.
Записать можно готовый образ, а если в эмуляторе поддерживается запись, то образ и будет с изменениями. Но это же от данной библиотеки не зависит, как буфер в файл слить (хотя там и есть функция для этого, просто для удобства).Error404 wrote:Интересно, выкладывай. А либа работает только на RO, или на запись тоже?
На седьмую версию каких-то особых завязок нет?
Можно сделать экспорт в Teledisk, проблем нет, но оно надо? Если нужно, то сделаю.
Насчет обратного экспорта диска CP/M в набор файлов я еще не решил, как это правильно организовать, если директория непустая. Совпадающие файлы перезаписать, а отсутствующие в образе (т.е. удаленные через эмулятор) удалить? Опасная штука, если не ту директорию указать

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

Всем добра!
-
- Admin
- Posts: 23989
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
-
- Writer
- Posts: 11
- Joined: 30 Oct 2008 06:27
- Location: Москва
Тестируя генерацию образа CP/M я столкнулся с такой проблемой:
В описателе формата диска (DPB) есть поле под названием DSM. В классических руководствах по CP/M утверждается (и мои расчеты по приведенным примерам это подтверждают), что оно равно максимальному номеру блока, причем каталог входит в этот объем.
Т.е. для расчета DSM отбрасываем системные треки, делим оставшееся место на размер блока и вычитаем единицу.
С другой стороны, разбирая диски Орионовских систем, я обнаружил, что в них DSM отличается тем, что из него уже вычтен каталог и не вычтена единица. Т.е. он обозначает максимальное свободное место в блоках.
Какой алгоритм вычисления DSM в итоге использовать? Это принципиальное решение авторов орионовской версии CP/M или ошибка программ генерации образов? Если это не ошибка, то придется вводить форматы "наши слоны" и "буржуи проклятые"?
В описателе формата диска (DPB) есть поле под названием DSM. В классических руководствах по CP/M утверждается (и мои расчеты по приведенным примерам это подтверждают), что оно равно максимальному номеру блока, причем каталог входит в этот объем.
Т.е. для расчета DSM отбрасываем системные треки, делим оставшееся место на размер блока и вычитаем единицу.
С другой стороны, разбирая диски Орионовских систем, я обнаружил, что в них DSM отличается тем, что из него уже вычтен каталог и не вычтена единица. Т.е. он обозначает максимальное свободное место в блоках.
Какой алгоритм вычисления DSM в итоге использовать? Это принципиальное решение авторов орионовской версии CP/M или ошибка программ генерации образов? Если это не ошибка, то придется вводить форматы "наши слоны" и "буржуи проклятые"?
-
- Maniac
- Posts: 269
- Joined: 05 Oct 2006 04:45
- Location: Moscow
Честно говоря, ни вижу ничего чем это было бы черевато при конвертации из одного представления в другое (содержимое же не меняется?). BDOS на дискетках классический, слава богу ковырять его у адаптатаров ума не хватило, - разберется (им писалось, им же и прочитается). Худшее - не полное использование дискеты. Но кого теперь волнуют "пропавшие" 2 килобайта?Panther wrote:Тестируя генерацию образа CP/M я столкнулся с такой проблемой:
В описателе формата диска (DPB) есть поле под названием DSM. В классических руководствах по CP/M утверждается (и мои расчеты по приведенным примерам это подтверждают), что оно равно максимальному номеру блока, причем каталог входит в этот объем.
Т.е. для расчета DSM отбрасываем системные треки, делим оставшееся место на размер блока и вычитаем единицу.
С другой стороны, разбирая диски Орионовских систем, я обнаружил, что в них DSM отличается тем, что из него уже вычтен каталог и не вычтена единица. Т.е. он обозначает максимальное свободное место в блоках.
Какой алгоритм вычисления DSM в итоге использовать? Это принципиальное решение авторов орионовской версии CP/M или ошибка программ генерации образов? Если это не ошибка, то придется вводить форматы "наши слоны" и "буржуи проклятые"?
Всем добра!
-
- Writer
- Posts: 11
- Joined: 30 Oct 2008 06:27
- Location: Москва
Ну, хотелось, чтобы программа была универсальней. Ладно, сделаю, что если есть загрузчик, то его параметры имеют безусловный приоритет.Error404 wrote:Честно говоря, ни вижу ничего чем это было бы черевато при конвертации из одного представления в другое (содержимое же не меняется?). BDOS на дискетках классический, слава богу ковырять его у адаптатаров ума не хватило, - разберется (им писалось, им же и прочитается). Худшее - не полное использование дискеты. Но кого теперь волнуют "пропавшие" 2 килобайта?
-
- Writer
- Posts: 11
- Joined: 30 Oct 2008 06:27
- Location: Москва
Пока работа с CP/M немного застопорилась, выложил описание формата и исходные коды библиотеки Teledisk:
http://www.emuverse.ru/wiki/Teledisk
http://www.emuverse.ru/wiki/Teledisk
-
- Doomed
- Posts: 585
- Joined: 19 Feb 2017 03:46
- Location: Санкт-Петербург, Россия, третья планета от Солнца, галактика Млечный Путь
Re:
Лень сейчас разираться о чём это, но помню, что в первых вариантах адаптаций CP/M на ОРИОН (до 1993-94) один из параметров DPB был неверным. В частности на дискету можно было записать только 778 кб вместо 800, т.к общий объём диска в блоках был неверным. После я эту ошибку исправил. Это скорей всего не наша, отечественная ошибка, а пришедшая из версии CP/M прототипа. Потому что фирменные читалки дискетных форматов любили именно такой формат, причём если какой-либо параметр DPB изменить (например, число секторов на трек, общий размер в блоках, число зарезервированных системных треков), то формат переставал читаться.Panther wrote:В описателе формата диска (DPB) есть поле под названием DSM... разбирая диски Орионовских систем, я обнаружил, что в них DSM отличается тем, что из него уже вычтен каталог и не вычтена единица
Я на этом пострадал, т.к любил использовать другие форматы, немного более выгодные форматы, например, 6 секторов на трек при DD-КНГМД и DD-дисках, число резервированных треков не 4, а 2, а общее число треков не 160, а 164 или 166 (большее число треков добавляло к полезным 780К ещё 50К). Из-за этого, когда в 1996-97 я стал переводить файлы с дискет на PC винт, то большинство моих дискет не читалось фирменными читалками, приходилось форматировать дискету форматёром из 1990 года, копировать туда файлы и только с такой дискеты удавалось считать в PC.
-
- Fanat
- Posts: 84
- Joined: 10 Sep 2009 04:27
- Location: 41.213.126.12
Re: Дискеты Teledisk и CP/M 2.2
а кто нибудь встречал полный исходный код teledisk на просторах инета ?
вопрос возник потому что я использую teledisk 2.12 и все работает нормально
но на 486 таже версия и с теми же фалами пишет что ошибка DMA при записи последних секторов
попробовал версию теледиска которая позволяет выбирать писать напрямую на диск или через BIOS номер ошибки изменился но смысл сообщения тот же
я нашел утилиты конвертации td0 в другие форматы но хотелось бы исспользовать теледиск
вопрос возник потому что я использую teledisk 2.12 и все работает нормально
но на 486 таже версия и с теми же фалами пишет что ошибка DMA при записи последних секторов
попробовал версию теледиска которая позволяет выбирать писать напрямую на диск или через BIOS номер ошибки изменился но смысл сообщения тот же
я нашел утилиты конвертации td0 в другие форматы но хотелось бы исспользовать теледиск