Subversion Repositories pentevo

Rev

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-TURBO - форматирование аналогично 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 резиденты убраны]