fifan, скорее всего выравнивание по границе страницы в 64КБ.
Вид для печати
fifan, скорее всего выравнивание по границе страницы в 64КБ.
А какой смысл в заигрывании со сменными страницами RAM-диска под Коммандером? Просто интересно свой драйвер написать? Выбираем букву диска с B по H переписываем туда файлы с диска А (ROM-диска) и так далее. Не удобнее было средствами BIOS самого Специалиста МХ сделать линейный RAM-диск объёмом 512 кБайт с продуманным механизмом записи каталога. Соответственно панель этого диска сделать со скроллингом вывода имён файлов с объёмом и стартовым адресом. В RAMFOSе с его синими окнами более 16 файлов на каждой панели не выводились.
А вот Flash диск особенно с ПО записи на него мне понравился. Респект SpaceEngineer'у за работу!
Добавлю: Более 16 файлов выводится, но листанием по 16 файлов. Листание страниц с 1 по 4 (почему не с 0 по 7?) возможно клавишами Shift+стрелка влево/вправо. А вот полноценный скроллинг с исчезновением верхней строки смотрелся бы разумно.
Выравнивание по секторам (256) в структуре ром-диска коммандера, плюс выравнивание по 64 кб страницам.
Скрипт, создающий образ, тупо перебирает все файлы в папки и пытается всунуть в странице. Из-за этого в некоторых страницах всего по два файла, и под 30 кб пустого места. Такое бывает, если следующий за текущим файл больше оставшегося свободного места.
- - - Updated - - -
Не понял, что ты имеешь в виду. (Можно на ты?)
Средствами какого BIOS? Коммандер/MXOS понимает только диски в формате "типа FAT8", поэтому непрерывный диск на 2 мега не сделать. Рамфос же имеет непрерывную структуру диска, где файлы идут друг за другом без разрывов, и тоже только до 64 кб. Такая структура не позволяет сделать удаление/запись: при удалении файла из середины, всё, что выше, копируется в образовавшуюся дырку. Для 64к рам дисков это Ok, но для флеша это убийство... Да и стирать/писать его можно только 256-байтными блоками. Т.е. к рамфосу можно прикрутить читалку такого флеш диска, но вот писалку... Если бы посмотреть, как устроена его родная MXDOS, но я даже её саму не знаю как вытащить из odi файлов, и исходников вообще нигде не видел, даже на самих odi от Афанасьева (там, кстати, есть исходники рамфоса). Но одно ясно - MXDOS сделана она довольно костыльно, запись/чтение/выполнение файлов с дискеты идет только через рам диск.
В общем, архитектура Коммандера как нельзя лучше подходит для флеш диска. Поэтому я написал драйвер именно для него. К тому же, мне пока не понятно, как прикручивать драйверы к рамфосу. Та же MXDOS это не драйвер дисковода, а целая самостоятельная ОС, которая понимает формат рам дисков рамфоса, и, похоже, использует его БИОС.
Я почему это всё затеял, и почему спрашивал тебя про драйвер дисковода (и PVV пытаю про Sdos)? Я хочу перевести MXOS на FAT12/FAT16, чтобы сделать непрерывные диски (рам, флеш, ром системный до 256кб). Лучше сразу "в настоящем" формате FAT12/FAT16, чтобы потом легче было прикрутить драйвер дисковода и SD карты.
А следующим этапом - запуск программ от Рамфоса. Для этого надо будет реализовать его точки входа. Если не получится, то есть план B: перевести дисковые операции Рамфоса тоже на FAT12/FAT16. Тогда можно будет на компе иметь обе системы, переключаться между ними когда надо, и они обе будут видеть содержимое дисков. Есть ещё план C, более костыльный: сделать для Коммандера драйвер рам-диска в формате Рамфоса. Это будет своеобразный мост между системами.
А, вон оно как, спасибо за подсказку.
Мне не нравится что дисков в Коммандере аж 7 (B...H), а не один. Ещё имя файла только заглавными буквами и 6 букв. В остальном хорошая задумка была у Константина Юденцов, жаль что не доделал свой Коммандер.
Файлы в RAM-диск пишутся друг за другом с 32-байтным заголовком и самим кодовым кодом. И так все 512 кБайт можно записать. Но не понятен принцип в конце каждых 64 кБайт. Если файл не входит в текущую страницу, то он должен писаться в следующую. А как это об этом сообщается пользователю? Вот формат файла на RAM/ROM дисках:
Есть 5 байт в заголовке файла, которые используются не рационально, а именно туда записывается или байт #00, или #20. Для чего вот создатели RAMFOS так поступили?Цитата:
; 3 байта - признак заголовка (#d3 #d3 #d3)
; 8 байт - имя файла
; 1 байт - пробел (#20)
; 3 байта - расширение файла
; 1 байт - признак сохранённости файла (#8c)
; 3 байта - дата создания файла
; 5 байт - признак RAM/ROM-диска (#00 #00 #00 #00 #00/#20 #20 #20 #20 #20)
; 2 байта - начальный адрес
; 2 байта - конечный адрес
; 2 байта - контрольная сумма
; ... тело файла
; 2 байта - адрес признака заголовка
Я это к чему. Я полтора года не развевал код нового MXDOS версии 4. Некоторые подпрограммы я переписал, некоторые оставил. Я застопорился именно на выводе имён файлов на границе страниц. Писал на ассемблере ASM80WIN под эмуллятором. Несколько раз ставил прошитую ПЗУ на Сябр. Работает. Вот скриншот программы. В нижнем правом углу выходит число целых страниц:остаток памяти на текущей странице. Левая панель сменная (по F3) - ROM-диск/SD карта, левая - только RAM-диск непрерывный со скроллингом вывода имён файлов. F5-копирование (пока только с ROM на RAM-диск), F4-просмотр/редактирование выбранного файла, F6-переименование файла, пробел-выделение файлов, ВК-запуск файла, забой-удаление файла (пока только с RAM-диска).
Единственное что меня разочаровывает это то что я не смогу на Сябре (пока мой единственный рабочий) посмотреть работу с SD картой. Ты же, SpaceEngineer поддерживаешь считыватель с SD карты по схеме HardWareMan'а работающий на Специалисте МХ2? Я то использую считыватель SD карты по схеме от Vinxru, который распаян на Сябре. Vinxru написал некоторую DOS и я использую её подпрограммы.
Вот я и хочу его доделать.
Это ты про рамфос говоришь. Я же предлагаю избавиться от такого устройства рам-диска и перейти на FAT12. Все 64к банки Сепциалиста можно объединить в один непрерывный диск, я уже знаю как. Неполные секторы в конце 64к страниц (те, что частично перекрываются портами) можно просто пометить как "бэды" при форматировании.
О, там есть исходники MXDOS? Или это другой дос, самописный? Я ещё забыл что ты писал некий SpetsCommander (я не смог его запустить). Это не одно и то же? Дай exe погонять))
Я заложил возможность подключения обоих вариантов контроллера без разрезов и МГТФ. Планирую спаять аппаратный SPI по схеме HWM_PVV. Ещё мне подогнали рабочую ВГ93, надо будет спаять контроллер FDD. Какую схему взять, от Сябра? Помню, ты писал, что в MX2 контроллер не работает из-за неправильной частоты клока. В моём железном Специалисте клок стандартный - 8 МГц.
- - - Updated - - -
Да это просто тест. Я уже начал переводить Коммандер Юденцова на FAT16. Будет один непрерывный диск на 2 Мб без костылей с 64к страницами. И рам-диск тоже станет одним непрерывным.
- - - Updated - - -
Я кстати перевожу исходники vinxru на мнемоники Z80. Поудобнее они.
Исходник MXDOS у меня есть, последняя версия называется RAMFOS 6.4. MXDOS4 - полностью рукописная программа, использует п/п от RAMFOS 6.4, свои тоже есть п/п, например вывод двойной рамки окон. SpetsCommander есть версии для двух различных SD контроллеров. Работает в режиме std и только с SD картой. Я как-то ещё поддерживал Flash-диск под МХ2. Соберу исходники и программы и передам.[/QUOTE]
В схеме от Сябра я неправильно развёл системный разъём. Есть исправленная схема и печатка - нет времени запускать плату.
Я тоже так делаю. Но HardWareMan нас не поймёт...
Я правильно понимаю, что:
MXDOS = RAMFOS 6.4 - это программа Афанасьева?
MXDOS4 - твоя?
Из Коммандера, надеюсь? :) Там она просто реактивная, потому что линии рисуются графически, а не символами псевдографики.
Приверженец мнемоник i8080?
Почти сделал, бинарники старые и новые полностью совпадают. Использую SjASMPlus. Этот ассемблер имеет опцию --i8080, которая заставляет его использовать только набор инструкций i8080. Осталась одна проблема: он как-то странно обрабатывает код BLOCK n (который .block n в i8080). Он его обрабатывает как DB 0,n. Т.е. вместо того, чтобы просто присвоить адреса меткам, он в сам бинарник его встраивает как массив нулей. Из-за этого DOS.SYS неправильно собирается: у него в начале кода объявлены 33 байта системных переменных, которые под начинаются с 8FDFh (с помощью BLOCK). А компилятор берёт и встраивает их в бинарник, из-за чего тот начинается с 33 нулей. Может быть, надо использовать не BLOCK, а что-то другое?
https://z00m128.github.io/sjasmplus/....html#s_macros
MXDOS - это ОС, которая записывается на каждую дискету и переписывается при загрузке дискеты в определённую память. С этого адреса я хочу загружать свою MXDOS, назвал её версии 4.
RAMFOS - это ОС, которая сидит в ПЗУ и сразу встречает нас приглашением ввода даты. Если дисковод отсутствует, то мы можем выводить на экран только содержимое либо ROM-диска, либо RAM-диска.
Кстати в приложенном архиве я вставил RAMFOS 6.4 с исходником. Кроме этого выложил свой SpetsBrowser для любого Std Специалиста и для Специалиста МХ2 с поддержкой считывателя SD карты от HardWareMan'а. Есть и файлы для эмулятора emu.
Самособой, но я сам сделал подпрограмму, исходники Коммандера я не копал. Этим и отличаться будет моя версия от предыдущих версий MXDOS (решил присвоить ей версию 4) от предыдущих. Но в отличие от предыдущих моя пока не поддерживает дисковод, только SD карту (пока только чтение) и RAM/ROM диски.