01 апреля 1998
  Железо  

  Одним  из создателей компьютера Sprinter яв-
ляется  Иван  Макарченко, "железячник" и прог-
раммист  одновременно.


    
    
      
    



  Сейчас, когда фирма ПЕТЕРС ведет продажу но-
вых  машин, Иван продолжает делать доработки и
исправляет  обнаруженные  (увы!)  недостатки в
своем  "детище". Кроме этого он ведет активную
переписку  в электронной сети. Так что человек
он  занятой и "раскрутить" его на материальчик
для  журнала  сейчас  довольно  трудно. Но ему
также  приходится  участвовать  во  встречах с
программистами,   желающими  понять,  что  там
"внутри" у Sprinter'а и как это можно с толком
использовать.  Ниже  мы  приводим ответы Ивана
Макарченко  на  некоторые вопросы, заданные на
встрече с очередным программистом.

  Вопрос:  Как  организовано  адресное  прост-
ранство в Sprinter'е?
  Иван  Макарченко: Адресное пространство про-
цессора Z84C15, как и Z80, разделено на четыре
окна  проецирования размером по 16 кБт. В каж-
дое  окно  может  быть  включена  любая из 256
страниц  ОЗУ  компьютера. Переключение страниц
достаточно  простое:  выводится  номер  нужной
страницы  в порт соответствующего окна процес-
сора. Для обеспечения совместимости со Scorpi-
on'ом  и  другими  машинами с верхней памятью,
сохранены старые порты для манипуляции страни-
цами ОЗУ в последнем окне процессора.

  Вопрос: Почти в каждой программе использует-
ся стрелка курсора. Если она большая (пикселей
на  восемь), то, учитывая необходимость слеже-
ния  за  параметрами, программа не будет успе-
вать  перерисовывать  ее.  Это будет выглядеть
как  дергание  стрелки.  А как это выглядит на
Sprinter'е?
  ИМ: На Sprinter'е это будет выглядеть гораз-
до  лучше. Дело в том, что здесь помимо основ-
ного  ОЗУ есть теневое видеоОЗУ. Можно сделать
так что бы информация записывалась в него, а в
основное не записывалась.
  Вопрос: А как же тогда восстанавливать изоб-
ражение под курсором?
  ИМ:  Из  основного ОЗУ. В нем хранится копия
экрана,  но только без курсора. То есть курсор
на экране есть, а в памяти его как бы нет.

  Вопрос:  Я  как-то читал в амижном журнале о
подключении  винчестера.  Проблемы были такие.
Некоторые  винчестеры не могут сообщить данные
о  количестве  головок и так далее. Необходима
калибровка. Что здесь можно сделать?
  ИМ: По-видимому не получается считать первый
сектор  первой  дорожки.  Мы можем взять любой
винчестер  и прочитать первый сектор, а калиб-
ровку  сделать, скажем, два сектора на дорожке
и  один цилиндр. Все считается, если винчестер
рабочий.

  Вопрос:  Возможно когда-нибудь на Sprinter'е
встанет вопрос о борьбе с вирусами. Может быть
целесообразно  "закрыть" винчестер для челове-
ка, разрешая доступ только через BIOS?
  ИМ:  Такой  подход  с одной стороны замедлит
работу  компьютера в целом, а с другой ограни-
чит возможности программистов. Ограничить дос-
туп  к  устройствам - это первое, что приходит
на  ум,  когда есть желание оградить компьютер
от  вирусов, но такой ли ценой? Борьбу с виру-
сами  нужно  поручить операционке, а не закры-
вать железо.

  Вопрос: Какие новые функции появились в ПЗУ?
  ИМ:   Могу   перечислить:

 - инициализация  распределения ОЗУ или полная
   инициализация компьютера;
 - выделение страниц памяти;
 - освобождение страниц ОЗУ;
 - получение адресов портов для окон проециро-
   вания.
 - получение  номеров  страниц, подключённых в
   окна CPU.
 - вывод символов на экран 80x32;
 - скролл экрана;
 - изображение точек, линий на графическом
   экране;
 - изменение палитры;
 - чтение/запись секторов винчестера;


  Вопрос:  Если  будет  обнаружена  какая-либо
ошибка, например в одном из ПЗУ, что делать?
  ИМ: Если ошибка вызвана аппаратной неисправ-
ностью,  то  будет произведена замена платы. А
если,  это была ошибка в одной из подпрограмм,
то  меняется  прошивка ПЛМок и все. По времени
это занимает 10-15 минут.

  Вопрос:  Можно  ли одновременно пользоваться
старыми и новыми портами вывода?
  ИМ: Нет, поскольку произойдёт смешение номе-
ров страниц, которое сложно предсказать. Прог-
рамма,  включившая новое распределение портов,
обязана  забыть  о старом до момента, пока оно
не будет восстановлено вызовом соответствующей
функцией ПЗУ.

  Вопрос: Может ли Sprinter работать с монито-
рами VGA и SVGA?
  ИМ:  Нет,  к сожалению. С этим у нас большая
проблема.   Ситуация  такая.  Кадрово-строчная
частота  у  VGA-монитора  формально в два раза
выше.  Получается, что если мы выводим точки в
том же самом разрешении при строчной частоте в
два  раза выше, нам надо что бы и видеоОЗУ ра-
ботало  в два раза быстрее. То есть не 42 МГц,
а 84 МГц.
  Формально,что бы получить 640х256 достаточно
14 МГц.  Но у нас есть  14 МГц  выборки точек,
14 МГц выборка палитры и 14 МГц что бы выбрать
режим экрана.
Получается  так, выбераешь режим экрана, потом
точку,  потом  для  нее палитру. Фактически на
выборку точки уходит три цикла ОЗУ, занимающие
все 42 МГц. Это предел для этой платы.
  Вопрос:  Так все-таки, в конечном итоге, как
будет  выглядеть  экран на мониторах: будет ли
заметно  мерцание, или же его удастся избежать
и если да, то на каких мониторах?
  ИМ:  Суть такая: если режим 640х256 - мерца-
ния  нет,  а  если 640х512 - мерцание есть. Но
надо  помнить  что  существует возможность ис-
пользования сразу нескольких графических режи-
мов. Совсем не обязательно выводить весь экран
в самом высоком разрешении.

                    ─────

   Описание дисковой системы SP-DOS 5.OЧEi


             Дисковые накопители.

  Система  поддерживает IDE винчестеры различ-
ной  емкости,  дисководы  5,25"  емкостью  720
Кбайт  и  дисководы  3,5" емкостью 720 Кбайт и
1.44 Мбайт, а также виртуальные RAM-диски, ко-
торые создаются в памяти компьютера.

              Синтаксис команд.

  SP-DOS - гибкая система и вы можете получить
доступ к ней из бейсика и машинных кодов. Ког-
да  командный процессор SP-DOS ждет от вас ко-
манды, вы видите подсказку в виде имени диско-
вода  и стрелки "А:>". Если выполнение команды
завершилось  ошибкой,  то  вслед за подсказкой
будет  выведена старая команда, которую вы мо-
жете  отредактировать и снова ввести. Если вам
понадобится  выполнить  одну  и туже команду с
разными  параметрами, несколько раз подряд, то
вы  можете,  восстановить  последнюю введенную
команду с помощью клавиши .

              Возврат из SP-DOS.

  Для  возврата из SP-DOS используется команда
RETURN.  Команда не требует дополнительных па-
раметров и вводится при нажатии на клавишу "Y"
в режиме курсора "K"

         Переход в SP-DOS из бейсика.

  Для входа в командный процессор SP-DOS нужно
вызвать подпрограмму в машинных кодах с адреса
15616.

RANDOMIZE USR 15616

     Выполнение команд SP-DOS из бейсика.

  Для того чтобы выполнить команду SP-DOS, на-
ходясь в бейсике, перед командой надо записать
префикс:

RANDOMIZE USR 15619:REM:

  В этом случае после работы команда возвраща-
ет  управление  в бейсик, хотя и тут есть свои
исключения.  При  этом  команда  SP-DOS должна
быть последней в строке программы на бейсике.
  Функция  USR  15619  возвращает  код  ошибки
SP-DOS  (содержимое  переменной 23823). Полный
перечень  кодов ошибок вы найдете в конце опи-
сания.

        Выбор дисковода по умолчанию.

  Диск по умолчанию - это диск, к которому бу-
дут  обращаться  команды, в которых не указано
имя  дисковода. После инициализации по умолча-
нию выбирается дисковод A.
  SP-DOS  поддерживает одновременную работу 4х
дисков  (A, B, C, D). Формат команды для изме-
нения диска по умолчанию следующий:

с проверкой наличия диска в дисководе
*"дисковод:"

без проверки
/дисковод:

  Имя дисковода - это символ A, B, C или D.

            Временный выбор диска.

  Постоянно  изменять  диск по умолчанию - это
долго и неудобно. Поэтому в большинстве команд
можно указать дисковод, к которому команда бу-
дет иметь доступ. Для этого перед именем файла
нужно  записать имя диска с двоеточием, напри-
мер:

LOAD "B:PROGRAM"

  Если  для команды не требуется имя файла, то
имя диска с двоеточием указывается после нее:

CAT "B:"

            Переназначение дисков.

  Кроме дисководов для дискет SP-DOS поддержи-
вает жесткий диск (винчестер) и RAM-диски. Для
переназначения  дисков  на  эти устройства ис-
пользуйте команды:

/hdd      - для назначения на текущий диск 
            винчестера
/rmd n    - для назначения на текущий диск
            RAM-диска n, где n
            один из 1бти рамдисков (e,f,g,
            h,i,j,k,l,m,n,o,p,q,r,s,t)
/fdd      - для назначения на текущий диск  
            дисковода для дискет

            Форматирование диска.

  Для  использования диск должен быть отформа-
тирован.  Форматирование  - это разметка доро-
жек,  секторов  и  создание каталога на диске.
Формат команды:

FORMAT "имя диска"[номер формата]

  После  нажатия  ENTER,  если не задан <номер
формата>, вам будет выдан запрос:

FORMAT:      1 Original
             2 Turbo
             3 Turbo/FAST
             4 Quick
             5 RAM-disk

  Выберите требуемый формат нажав клавишу от 1
до  5, после чего начнется форматирование дис-
ка. Во время процесса номер текущей форматиру-
емой  стороны  (HEAD)  и дорожки (CYLINDER) вы
будете  видеть  внизу экрана. По окончании там
вы увидите сообщение, например:

Disk: DISCNAME
2544/2544
A:>

  DISCNAME - это имя диска, за которым следует
количество отформатировавшихся секторов и мак-
симально  возможное  количество  секторов  для
данного  формата  диска. Если эти два числа не
равны, то это значит, что на диске есть плохие
сектора  и его не рекомендуется использовать в
системе SP-DOS.
  Вы  можете  форматировать  диск  не только с
дисководе  по умолчанию. Для назначения диско-
вода перед именем диска поставьте имя дисково-
да с двоеточием после него.
  На дорожке SP-DOS создает 16 секторов по 256
байтов. Дорожка 0 отводится под каталог.

                Каталог диска.

  Имеются 3 команды вывода каталога: CAT, LIST
для дисков TR-DOS и /dir - для дисков MSDOS.
  Команда  CAT выводит имена и расширения фай-
лов,  их  длину  в  секторах, имя диска, коли-
чество стертых и нестертых файлов на нем и ко-
личество свободного места.

Title:DISKNAME
5 File(s)
0 Del.file

A:boot      1:boot     44
A:Start_Up  9:SHELL   140
A:readme   60

2290 Free

A:>

  Команда  LIST выводит еще и тип диска, адрес
загрузки  файлов,  их  длину в байтах и строки
автостарта программ на бейсике.

Title:DISKNAME    Disk Drive: A
5 File(s)        80 Track D. Side
0 Del.file(s)   Free Sectors 2290

  File Name     Start Lenght Line
boot      1   00252 00252 10
boot     44   40000 11200
Start_Up  9   02280 02280 10
SHELL   140   00239 00239 1
readme   60   40000 15280

2290 Free

A:>

  Команда /dir выводит имена и расширения фай-
лов и их длинну в байтах.

DISKO1  .TRD    655360
ABOUT   .TXT      2348

A:>

                 ПРИМЕЧАНИЕ:
На винчестере данные хранятся в формате MSDOS,
так что, команды CAT и LIST с ним не работают,
используйте команду /dir.

          Использование RAM-дисков.

  Для создания RAM-диска наберите команду:

/rmd n

где  "n"  имя  RAM-диска  (e,f,g,h...t). После
создания  диск надо отформатировать или загру-
зить его образ из MSDOS файла. Командой:

/load n diskname.trd

где  "n"  имя  созданного  вами  RAM-диска,  а
diskname.trd имя файла содержащего образ диска
TRDOS.

  С точки зрения программы RAM-диски выглядят,
как  обычные  дискеты в формате TR-DOS. С ними
работают  все стандартные команды чтения/запи-
си.  Разница  заключается  лишь в том, что при
выключении питания компьютера вся находившаяся
на  них  информация теряется, что-бы её сохра-
нить,  надо  записать  RAM-диск обратно в файл
образа диска, на винчестере или на дискете от-
форматированной  в  стандарте MSDOS. Используя
команду:

/save n diskname.trd

где  "n"  -  имя  рамдиска, а diskname.trd имя
файла содержащего образ диска TR-DOS.

  Чтобы освободить память, которая использова-
лась под RAM-диск, можно воспользоватся коман-
дой:

/clear n

где "n" освобождаемый RAM-диск

или  можно очистить сразу все RAM-диски коман-
дой:

/init

ПРИМЕЧАНИЕ:  При сбросе информация на RAM-дис-
ках сохраняется.


             Копирование файлов.

  Для копирования файлов имеются 3 команды:

COPY - копирование файлов при двух дисководах

COPY  S  -  копирование одного файла при одном
дисководе

COPY  B  -  копирование  всего диска при одном
дисководе

  1. Команда COPY.

 Синтаксис команды:

COPY<новое имя>,<старое имя><расширение>

  Здесь  <новое имя> и <старое имя> - старое и
новое имена копируемого файла. Они представля-
ют собой обычные строковые выражения. Расшире-
ние файла обозначается ключевыми словами:

 CODE - расширение C
 DATA - расширение D
    # - расширение #
иначе - расширение B

  Расширение B может обозначаться пустой стро-
кой.  Бывают также исключения, о которых будут
отдельные замечания.
  Если  вместо  обоих  имен  файлов  поставить
звездочки, то будут копироваться все файлы.
  Если во время копирования на диске-приемнике
встретится файл с таким же именем и расширени-
ем,  как и тот, который копируется, то система
выдаст сообщение, например:

FILENAME FILE EXISTS
OVERWRITE?(Y/N)

  Если вы ответите Y, то файл будет переписан,
иначе  копирование  продолжится  со следующего
файла.

  2. Команда COPY S.

  Синтаксис:

COPY S <имя файла><расширение>

  Поскольку  будет  использоваться один диско-
вод,  то команда будет просить вас менять дис-
ки.  SOURCE DISC - это диск-источник, DESTINA-
TION DISC - диск-приемник.

  3. Команда COPY B.

  Синтаксис команды:

COPY B

  Команда  точно  так  же,  как и COPY S будет
просить вас менять диски. Внимание!!! Вся ста-
рая  информация на диске-приемнике будет стер-
та,  так как команда производит абсолютное ко-
пирование всей используемой части диска дорож-
ку  в дорожку. Команда работает только на дис-
ководе по умолчанию.

            Переименование файлов.

  Одно  из  достоинств дисковой системы - воз-
можность  изменять  имя  файлов. Для этого ис-
пользуется команда:

NEW<новое имя>,<старое имя><расширение>

               Удаление файлов.

  Если  файл  на диске устарел и больше вам не
потребуется,  то  его можно удалить. Для этого
используется команда:

ERASE<имя файла><расширение>

  Команда  удаляет все файлы с такими данными.
Процедура  удаления файла заключается в замене
первого  символа  его  имени  на CHR$ 1. После
этого  файл не отображается в каталоге, но его
можно  восстановить при помощи какого-либо CO-
MANDERa.  Для физического удаления файлов слу-
жит команда MOVE.

         Упаковка пространства диска.

  Когда файл удален, он все еще занимает место
на  диске. Чтобы освободить это место для дру-
гих  файлов, требуется команда MOVE. Синтаксис
команды:

MOVE

  После  использования  этой команды вы уже не
сможете  восстановить  стертые  файлы, поэтому
будьте  осторожны.  Команда работает только на
дисководе по умолчанию.

            Переименование диска.

  Иногда  возникает необходимость изменить имя
диска,  выводимое  командами  CAT  и LIST. Для
этого в SP-DOS используется команда MOVE:

MOVE "NewName"

  SP-DOS, выполняя эту команду, просто заменит
имя текущего диска на NewName.

                Запись файлов.

  Для  записи  файлов  служит команда SAVE. Ее
синтаксис такой же, как и в бейсике. Для обоз-
начения  расширения файла B можно использовать
только  пустую  строку или слово LINE. Примеры
команд записи:

SAVE"PROGRAM"LINE 10
SAVE"A:TEST"
SAVE"ARRAY"DATA A$()
SAVE"PROC"CODE 32000,2166

               Загрузка файлов.

  Команда  LOAD  абсолютно  такая  же, как и в
бейсике.  Для  обозначения  расширения B можно
использовать  любой символ, кроме CODE и DATA.
При успешной загрузке программы на бейсике она
либо  запустится,  либо вы попадете в бейсик с
сообщением OK. Можно также ввести просто LOAD-
. Тогда будет произведена попытка авто-
загрузки  и при неудаче вы выйдете в командный
процессор SP-DOS, а в бейсик сможете вернуться
по команде RETURN. Примеры команд загрузки:

LOAD"PROGRAM"
LOAD"FONT"CODE 40000,768
LOAD"ARRAY"DATA A$()
LOAD"PROC"CODE

                Запуск файлов.

  SP-DOS позволяет запускать программы на бей-
сике  и  в кодах одной командой. Для этого ис-
пользуется команда RUN. Ее синтаксис такой же,
как  и  LOAD.  Также есть команда RUN -
эквивалент LOAD.

     Проверка файлов и слияние программ.

  Для  этого  служат  команды  MERGE и VERIFY.
Синтаксис такой же, как и у LOAD. Естественно,
MERGE  работает только с программами на бейси-
ке. Есть также команда MERGE.

                    ───── 



Other articles:



Similar articles:

В этот день...   23 November