Blame | Last modification | View Log | Download | RSS feed | ?url?
(C) CompoWellcome (2:5085/131.49) TR-DOS version 6.05/09/10/11E. Хочу предложить вашему вниманию одну из последних версий мо- ей прошивки TR-DOS'а. Предидущая подверсия была описана в седьмом WallPaper'е, нововведения помечены знаком '+'. Сразу оговорюсь, что в нашей прошивке подвергся изменению не только ДОС, но и BASIC 128 (вместо 128 Basic'a можно использо- вать MadRom, а можно и вообще ничего не использовать :). Предварительно должен признаться, что большинство идей от- нюдь не собственного производства, а взяты из самых разных ДОС'ов (5.13, 6.06H и т.д.), после чего все было засунуто в TR-DOS 5.04Em. Да и самой статье используются отрывки :) из описания ДОС'a 5.04Em, за что его автору (ДОС и описания) большое спасибо! Пункт номер 1. Форматирование дискет в 3-х вариантах: ORIGINAL - обычный формат; TURBO - форматирование диска с другим расположением секто- ров, что приводит к ускорению операций чтения/записи диска примерно в 2 раза; FAST-TUR
BO - форматирование аналогично TURBO, но без опера- ции проверки (если Вы уверены в качестве ваших дискет), при этом ускоряется сама операция форматирования. Bыбор формата производится по запросу DOS после ввода обыч- ной команды FORMAT клавишами <1>, <2> или <3>. Kлавиша <SPACE> отменяет команду. При форматировании выдается сообщение о но- мере форматируемой в данный момент дорожки и стороны диска. После окончания форматирования выдается запрос на его повтор. Пункт номер 2. При записи файла на диск в случае если файл с таким именем на диске есть DOS выдает запрос о стирании старого файла. Если Вы ответите <Enter> или <Y> старый файл будет стерт и на его место будет записан новый файл если он не длиннее старого. Если же новый файл длиннее, то он будет записан как обычно с первого свободного сектора диска, а в каталоге появится еще один стертый файл. + Исправлена ошибка предидущей подверсии TR-DOS 6.05E. Пункт номер 3. В описании к ДОС 5.13 пишут: 'Удален автотест дисковода
. Дисководы принимаются все 2х80, шаг 6 мкс'. Imho, так делать нельзя, вернее можно, но на некоторых дисководах возможны глю- ки. Не раз возникала ситуация (на разных машинах) когда диско- вод после сброса при первом обращении упорно отказывается вы- водить бошки на нулевой трек. Возникает в основном если до этого какая-нить прога ухитрилась загнать их в самый конец диска. В ДОС'е 6.05 мы вернули автотест, только укоротили его. + По желанию некоторых граждан возможность отмены автотеста была вынесена в инсталлятор. Пункт номер 4. Ускорeнная команда MOVE. В обычной версии ДОС команда MOVE наиболее длинная по времени работы, кроме того создается впе- чатление, что дисковод больше стоит чем работает. Это объяс- няется тем, что каждый раз при перемещении файла производится чтение каталога и запись в него. В данной версии чтение и за- пись каталога производятся один раз. Информация каталога сох- раняется в ОЗУ и все операции с каталогом (только в команде MOVE) производятся в ОЗУ, что
значительно ускоряет работу ко- манды, в среднем в 3 - 4 раза, а в некоторых случаях и более. Пункт номер 5. Введена новая команда - переименование диска: MOVE "name". При этом команда MOVE не выполняется, а просто имя диска заме- няется на "name". Пункт номер 6. В DOS 6.05E изменен редактор командной строки. Во-первых, устранена неприятность которая возникает при входе в DOS в 128 режиме. Во-вторых, устранено влияние клавиш редактирования, которые перемещают курсор строки в 48 режиме. И наиболее важ- ная часть - возможность вызова предыдущей команды с помощью клавиши <EDIT>. Если Вы хотите повторить операцию или повто- рить ее с немного измененными параметрами, то можно вызвать ее сразу после выполнения нажав клавишу <EDIT>. Если же Вы что-то набрали в командной строке, то клавиша <EDIT> не сработает (в стандартной версии это приводит к вызову строки из BASIC прог- раммы). Пункт номер 7 (самый большой). DOS 6.05E разумеется поддерживает работу с RAM-диском, осно- ванном на дополните
льном ОЗУ до 1024k. При этом 4k отводится под каталог и некоторые другие функции, а остальная свободная память отведена под рабочее пространство RAM-диска. Для ини- циализации RAM-диска используется команда FORMAT "d:name". Да- лее с диском D: можно обращаться как с обычным дисководом, с той лишь разницей, что этот диск невозможно сменить и при вык- лючении питания информация на нем теряется. Полезным свойством является то, что при сбросе информация на диске D: остается невредимой, и возможна дальнейшая работа с ним без операции FORMAT. Для системных программистов важно, что работа с RAM-диском не отличается от работы с обычным диском через входы #3D00, #3D03, #3D13 и при обращении в DOS к подпрограммам, работаю- щим на уровне работы с секторами диска. Программы записи и чтения секторов работают даже если диск D: не был 'отформати- рован'. Пользователь в этом случае имеет всю память RAM-диска, но без файловой организации. Программы использующие прямое программирование К1818ВГ93 ес-
тественно не работают. Под RAM-DISK по умолчанию в инсталляторе отводится не все 1024К ОЗУ, а только старшие 512К. Нижние 512К отведены под ре- зидент (см. ниже). Благодаря чему можно из RAM-DISK'а запускать не только 128К программы (например Страну Мифов или пользоваться при копиро- вании из/в RAM Disk буфером не 128, а 512К). Порт расширенной памяти используется #7FFD. Если кто захочет может поставить свой (инсталлятор делает это легко доступным). [в 6.09/10/11E при операциях с рамдиском текущая страничка
определяется по 4, а не по 2 байтам, теперь ошибки практически
исключены]
[в версии для ZX Evo рамдиск располагается в верхнем мегабайте и адресуется по порту #f7f7] + Добавлено отключение двигателя реального дисковода при об- ращении к виртуальному. Пункт номер 8 (немного меньше). Magic'и... Ну что тут скажешь? Целиком и полностью передрано из TR-DOS 5.13 ;). Имхо, рульные возможности (цитирую отрывок из описания 5.13): "Значительно расширены функции волшебной кнопищи. При ее на- жатии комп подвешивается, и ждет нажатия: 1 - запуск стандартной процедуры сохранения, только еще сох- раняется, а при загрузке восстанавливается и корректируется регистр R. 2 - то же самое, но стек помещается в низ экрана. Предназна- чено для взлома. 3 - Переход в STS. BANK=#57 Два числа на стеке и несколько байт в области атрибутов - в зависимости от положения стека. Перед входом в STS гасится му- зыкалка. PC в STS'е показывает место останова, но не всегда. Его можно точно узнать под стеком. 4 - Возврат в программу. Выполняет функцию паузы. В некоторых прогах стоит проверк
а на адрес перехода в тырдо- се (#0066), и если магик нестандартный, то облом. В данной версии такие проверки не найдут отличий: перехват осуществлен в начале засирания стека." Вот так-то ;). Пункт номер 9. Имеется доступ ко всем регистрам контроллера K1818ВГ93 аж двумя способами. Утянуто из разных версий. Первый способ (скорпионовский): #3FF0 OUT (C),A:RET #3FF3 IN A,(C) :RET Второй (весьма странный) через новые системные вызовы #3D13: #0D - Регистр D содержит младший адрес порта, регистр E дан- ные в него. Если необходим и старший адрес порта, то он указы- вается в регистре B. #0F - Регистр D содержит младший адрес порта, на выходе в ре- гистре E данные из него. Если необходим и старший адрес порта, то он указывается в регистре B. И еще две (в довесок): #10 - Вызов подпрограммы записи #3FBA. В регистре HL адрес области данных, в DE - время ожидания готовности ВГ93. #11 - Вызов подпрограммы чтения #3FD5. В регистре HL адрес буфера, в DE время ожидания готовности
ВГ93. Пункт номер 10. Разумеется исправлена ошибка TR-DOS'а работы с большой груп- пой секторов командами 5 и 6 из #3D13 (см.ZF#3). Пункт номер 11. Имеется встроенный Mini-boot который запускается из TR-DOS по команде '8' (бывшая команда 80). Уж не знаю кто был автором этого бута, но я его немного доработал (sorry...): В связи с тем, что переключаться на драйв 'B' возможно не шибко быстро, в нем реализован автопоиск диск в дисководах 'A' и 'B'. Например выходим в ДОС (диск в дисководе 'B') нажимаем '8' и через две-три секунды boot сам переключится на него! И еще выбрать текущий дисковод в boot'е можно клавишами 1-4, а клавиша 'D' - Reset Dos. [в 6.11E убран] + Команда '4' (бывшая 40) в ДОС'e служит для уничтожения ре- зидента. Пункт номер 12. В TR-DOS 6.05E убран тест памяти, очистка которой сделано через команду PUSH, вследствии этого скорость RESET-DOS вырас- ла немерянно... А также, через PUSH очищается память при сбро- се в BASIC 128, с аналогичными последствиями :). Пункт ном
ер 13. Значительно ускорено чтение с дисковода. Намного быстрее чи- тают даже такие программы как iS-DOS и Honey Comander'e, не говоря уже о программах типа Conver Comander, Real Comander или командах TR-DOS LIST, LOAD и т.д. Ускорять запись, как показали эксперементы, к сожалению нельзя. Некоторые дисководы не успевают раскрутить диск, пос- ледствия сего ужасны... Пункт номер 14. Исправлены некоторые мелкие глючки TR-DOS (какие именно уже не помню). И также как и в ДОС 5.13 по команде NEW можно узнать дату последнего изменения кода. [в DOS6.10e убран якобы "фикс" команды PEEK, из-за которого
менялось расширение (#5ce5) при команде чтения файла, а в
результате глючил Wolfed.] Так называемый 'Родионовский вектор прерываний #0900-#0А00' затронут не был, все программы использующие его идут нормаль- но. Дополнительные возможности Пункт номер 1 (другой, не тот что прежде). Естественно поддерживается резидентом Honey Commander, но благодаря изменению BASIC 128 попасть в него можно при любом сбросе (кроме 48-го ;-), в отличии от версии TR-DOS 5.13f, в которой перехват резидента возможен только при RESET-DOS. Воз- можности резидента в нашей версии значительно расширены, пе- рехватывать сброс может абсолютно любая программа с минималь- ными затратами памяти. Достаточно разместить по адресу #FFF0 в странице 31 (#1F) строку символов 'Residentpresent!' (без про- белов), и сразу же после сброса управление будет передано на адрес #C000 этой же страницы. Под такой резидент уже переделаны: Real Comander, Conver Comander, FPM (две версии), Luxe Copy, Direct Comander, boot Трубинова и boot Родионова ;-). И самый рулез - такой резиде
нт поддерживает, переделанная мной Lara Croft 4.4! Возможно что-то еще, что я упустил. Пользоваться такими программами стало не в пример удобнее. Дополнительно в Conver и в Luxe Copy встроена гасилка экрана. Пункт номер 2. Если на машине имеются CMOS часы (по умолчанию установле- ны порты Gluk, но в инсталляторе можно поставить любые дру- гие), то при выходе в ДОС из любой программы автостарт будет произведен с дисковода указанного в ячейке #10 часов. [в версии для ZX Evo убрано] Пункт номер 3. [obsolete] Пункт номер 4. Нажатие 5+RESET вызывает сброс с игнорированием всех рези- дентов. Очень редко бывает (при копировании всего диска за раз) убивается часть резидента так, что после сброса комп ухо- дит в полную медитацию, вывести его из которой можно только выключением питания. [в версии для ZX Evo резиденты убраны]