[an error occurred while processing this directive]

РАЗДЕЛ III СПРАВОЧНЫЕ СВЕДЕНИЯ И ПРИЛОЖЕНИЯ

.ао0

.шп8

.ми0

.лв

III.1

----------------------------------------------------
ОПИСАНИЕ ОТЛИЧИЙ ПРОГРАММНОЙ СРЕДЫ "BASIC-MASTER"
ОТ СТАНДАРТНОГО ИНТЕРПРЕТАТОРА "BASIC A9.1" (ИКП-1).
ИСПРАВЛЕНИЕ ОШИБОК В ДОС 3.3 И СИСТЕМЕ "МОНИТОР"
----------------------------------------------------

(Описание для программистов и пользователей)

FRIENDS' SOFTWARE 1994

программист: Серков С.В.

.шп72

ОТЛИЧИЯ ОТ СТАНДАРТНОЙ СИСТЕМЫ

.шп0

Среда "BASIC-MASTER" представляет собой в сущности улучшенную версию интерпретатора "BASIC A9.1", опирающуюся на ДОС 3.3 и систему "Монитор", в которых были исправлены многие ошибки. Изменения, внесенные в новую версию, касаются трех основных направлений:

1] Исправление ошибок, оставленных в интерпретаторе и ДОС 3.3 основными разработчиками этих систем на ПЭВМ АГАТ-9.

2] Удаление из интерпретатора "BASIC" операторов, потерявших свою актуальность или неработающих операторов и включение новых.

3] Исправление ошибок и внесение некоторых новых подпрограмм в систему "Монитор".

.шп72

1] ИСПРАВЛЕНИЕ ОШИБОК В СИСТЕМЕ

.шп0

Основным разработчиком ДОС 3.3 ПЭВМ "АГАТ" Кривцовым А.Ю. было допущено значительное кол-во ошибок, к сожалению не все из которых удалось исправить автору настоящего описания. Некоторые из них явились элементом случайности, другие появились в результате необдуманного преломления ДОС 3.3 APPLE при переделке на "АГАТ-9". Были исправлены ошибки, устранение которых не потребовало внесения значительных изменений в систему, т.к. для этого потребовалось бы коренным образом пересмотреть структуру ДОС. Далее приводится краткий перечень всех ошибок, которые были устранены:

1) Исправление "подвисания" машины по команде "E000G" для "холодного" старта "Бейсика" из программы "Монитор".

2) Устранение загрузки файла типа "K" командой "LOAD" или запуска его командой "RUN" (Непростительная ошибка!).

3) Исправление допустимого значения параметра "S" (SLOT) при использовании его в командах ДОС (Было "S" максимально равно 7, но ведь у АГАТа 6 слот!).

4) Запрещение задания параметра "V" со значениями от 1 до 4 в команде "INIT" для разметки диска в дисководе типа "Teac" (FD55). Значения V=[1÷4] были заразервированы для драйвера форматирования диска 720 Кб по томам, который так и не был реализован в ДОС. (Однако ДОС предусматривает работу с таким диском, если он уже отформатирован, что можно сделать, например, с помощью программы "FORMAT VOLUME" фирмы "Friends' Software".)

.сс

5) Исправление подпрограммы холодного старта в системе "Монитор".(Если ¤3F3%#¤A5≠¤3F4, то ПЭВМ должна произвести поиск дискового контроллера и если он есть, то перезагрузиться. Однако вместо этого она "подвисала", выполняя STA ¤C0F0!).

6) Исправлена команда интерпретатора "CLEAR", которая не только обнуляла все переменные (что и должна была делать), но еще умудрялась портить все имена переменных в программе. Кроме этого Кривцов решил проявить эрудицию, сделав в команде "CLEAR" выдачу текста программы в формате поиска/замены. Очевидно он не подумал о том, что команду "CLEAR" возможно захочется использовать в качестве оператора внутри программы. В этом случае пользователю "предлагалось" просмотреть весь ее текст, возможно в самом наподходящем для этого месте (не говоря уже о том, какую радость будет испытывать при этом программист). Естественно такая экзотика была устранена. (Причем в "родном" APPLESOFT BASIC, команда "CLEAR" работала именно так, как работает после исправлений.)

7) Был улучшен параметр DCT+6 (задержка при движении головки НГМД FD55.F) в ДОС. Теперь дисковод не издает такие ужасные звуки, которые он издавал раньше. Причем надежность работы ничуть не уменьшилась.

.шп72

2] НОВЫЕ ОПЕРАТОРЫ ИНТЕРПРЕТАТОРА "BASIC-MASTER"

.шп0

Стандартный интерпретатор "Бейсик" имел пять команд для работы с магнитофоном: "LOAD", "SAVE", "STORE", "RECALL" (не путать с аналогичными и работающими командами ДОС) и "SHLOAD". Кроме того, что они потеряли свою актуальность при привязке интерпретатора к ДОС в ПЭВМ АГАТ-9, в отличии от APPLE IIE, но они еще и не работают, т.к. самих подпрограмм чтения/записи на магнитную ленту в системе нет (благодарите за это разработчиков). Итак, у меня было два пути: либо вставить недостающие подпрограммы (что вполне реально), либо наоборот - убрать подпрограммы этих операторов (при этом появляется возможность вставить другие полезные команды). Я выбрал второй путь, т.к. работа с магнитофоном при наличии ДОС в наше время вряд ли нужна. Убрав все лишнее, я внес в интерпретатор следующие команды:

1) PAL=n, n=[1÷4] - включить палитру с номером n. Значение n должно быть числом или переменной. Если значение n нецелое, то его дробная часть будет отброшена. Номера палитры соответствуют техническому описанию ПЭВМ "АГАТ-9". Команда может использоваться как оператор и как директива.

2) PLAY X,Y - выдать на динамик звук частотой X, длительностью Y (однобайтовые числа или переменные). Команда может использоваться как оператор и как директива. Значения X и Y предствлены в условных единицах и соответствуют описанию по книге Мымрина "Конструкция, применение, программирование и ремонт ПЭВМ "АГАТ" (изд. "Машиностроение" 1990 г.). Краткая таблица значений тональностей и длительностей нот приводится ниже:

.сс

-------------------------------------------------
!  нота  ! малая октава ! 1 окт ! 2 окт ! 3 окт !
!--------!--------------!-------!-------!-------!
! до     !              !  192  !  96   !  48   !
! до#    !              !  184  !  92   !  45   !
! ре     !              !  171  !  85   !  42   !
! ре#    !              !  160  !  80   !  40   !
! ми     !              !  152  !  76   !  38   !
! фа     !              !  144  !  72   !  36   !
! фа#    !              !  136  !  68   !  34   !
! соль   !    255       !  128  !  64   !  32   !
! соль#  !    240       !  120  !  60   !  30   !
! ля     !    228       !  114  !  57   !  28   !
! ля#    !    214       !  108  !  54   !  26   !
! си     !    204       !  102  !  51   !  25   !
-------------------------------------------------

 Примеры длительностей:
------------------------
  1/2        255
  1/4        128
  1/8        64
  1/16       32
  1/32       16
  1/4+1/8    192
  1/8+1/16   96
  1/16+1/32  48
------------------------

3) RESTART - холодный старт интерпретатора "Бейсик". Производится поиск контроллера диска в направлении слот 1 → 6, и перезагрузка, если он найден. Если контроллер не найден, то интерпретатор производит переустановку векторов ¤3F0-¤3FF и переходит на ¤E000 (вызывая начальные установки интерпретатора). Командой удобно пользоваться для перезагрузки машины. Может являться оператором и директивой.

4) INPKEY K,VAR - считать символ с клавиатуры в переменную VAR, выдав при этом знак приглашения с кодом K (однобайтовая переменная или число). Параметр VAR должен соответствовать типу вводимой переменной. В принципе оператор аналогичен оператору "GET", но принципиально отличается следующим:

- считывает только с клавиатуры (GET может читать, например из файла)

- можно задать код приглашения (GET всегда выдает знак "?")

5) DR=n - включить драйвер с номером n из таблицы "Диспетчера" резидентных драйверов (см. Приложение 3). Применяется для работы с Библиотекой драйверов фирмы "Friends' Software", расширяющей возможности интерпретатора. Может быть использована, как оператор и как деректива. DR=0 очищает таблицу "Диспетчера" и отключает все драйвера, приводя систему в начальное состояние.

6) HELP - выдать COPYRIGHT.

.сс

.шп72

3] НОВЫЕ ВОЗМОЖНОСТИ ПРОГРАММЫ "МОНИТОР"

.шп0

В связи с написанием новых команд к интерпретатору "Бейсик", в "Мониторе" "BASIC-MASTER" появились следующие подпрограммы:

SETPAL - включить палитру (адрес подпрограммы ¤FF03).

Номер палитры должен быть в регистре A (от 1 до 4).

SOUND - выдать звук (адрес подпрограммы ¤FF16).

.гр

При этом в ячейках ¤3E - частота       | в условных
                   ¤3F - длительность  | единицах

.тт

Величины частоты и длительности соответствуют описанию в книге Мымрина указанной выше для команды "PLAY".

RESTART - холодный старт системы "Бейсик" (адрес подпрограммы ¤F866). (Описание работы см. выше.)

.шп72

ВАЖНЫЕ ПРИМЕЧАНИЯ

.шп0

1] Вам может встретиться еще одна модификация новой системы. Она отличается от описанной только внесением двух подпрограмм в программу "Монитор". В результате при вводе строки появилась новая возможность для редактирования: нажатие клавиши "f1" убирает символ под курсором, по нажатии клавиши "f2" на место курсора вставляется "пробел" и остаток строки сдвигается на один символ вправо. Адреса соответствующих подпрограмм в "Мониторе" следующие:

- DELCHAR ¤FCED

- INSERT BLANK ¤FED5

Эти подпрограммы были скопированы автором из программы "СИСТЕМНЫЙ МОНИТОР".

2] Новая система является более надежной по сравнению со стандартной (и это естественно т.к. в ней исправлено значительное количество ошибок). Поверьте, что автор вносил изменения в систему не как попало, а только после тщательного обдумывания. Однако если Вы пишете BASIC-программу, в которой собираетесь использовать новые команды интерпретатора "BASIC-MASTER" это накладывает некоторые ограничения на ее использование. Дело в том, что все старые программы будут выполняться на новой системе (если только в них не содержится имен переменных идентичных по написанию новым командам), а если программа использует дополнительные возможности новой системы, то она корректна только в ней и на стандартном интерпретаторе работать не будет. Вследствие этого рекомендую вставлять в начало программы, написанной для "BASIC-MASTER", следующее предложение, проверяющее на какой системе запущена Ваша программа:

10 IF PEEK(¤E006)=¤2C THEN 30: REM EXEC PROGRAMM
20 PRINT "Программа для среды 'BASIC-MASTER'":END
30 REM PROGRAMME TEXT

...

.сс

В ячейке ¤E006 "BASIC-MASTER" храниться число ¤2C (в стандартном интерпретаторе ¤79). Это и используется в предложенном алгоритме как отличительный признак систем.

3] Многие программисты уже пытались вносить какие-либо изменения в стандартную систему BASIC A9.1 и DOS 3.3 или строить на их основе свои системы. Примером может служить система "SUBGRAF 3.0" Волкова И.М. И не смотря на мое безграничное уважение к ее автору считаю все эти попытки грубыми и абсолютно некорректными, поскольку все изменения вносились с позиции соображений автора и нисколько не учитывались их последствия на работе среды в целом. (Это не относится к "SIRIUS-BASIC" т.к. он планировался как оболочка для удобства написания "Бейсик"-программы.) Кроме этого существуют среды в которые внесены изменения незаметные "на глаз". Для системного программиста-профессионала несложно отличить основную версию от переделанной. Однако прикладному программисту для этого, как правило, нехватает знаний. Разработчики ДОС 3.3 для "АГАТ-9" позаботились о том, чтобы неопытный программист не мог внести изменений в системные подпрограммы. Для этого они предусмотрели подпрограмму подсчета контрольной суммы системы, которая работает всякий раз при командах DOS "FP" и "INIT". При внесенных изменениях в систему выдается ошибка "СИСТЕМА ИСПОРЧЕНА". Однако некоторые умельцы нашли способ обойти и этот нюанс при переделках системы. Они просто отключают подрограмму "SYSVRFY" (см. исходный текст DOS) вставляя команду "RTS" в самое ее начало. Вы всегда можете проверить это следующим способом:

}CALL-151

*C118:0

*3EE3↵

Если в ячейке ¤3EE3 при этом храниться байт ¤60 (RTS), то Вы работаете с системой, в которую внесены кикие-то изменения. Причем сделал это программист не являющийся специалистом в данной среде. Старайтесь не пользоваться такими средами т.к. никто не знает, что от них можно ждать. Новая система "BASIC-MASTER" имеет нормальную подпрограмму контроля за суммой системы с исправленными таблицами контрольной суммы по сравнению со стандартной системой. Система "BASIC-MASTER" может диагностировать сообщение об ошибке "СИСТЕМА ИСПОРЧЕНА" только если в памяти системы действительно произошел сбой, либо если в систему "Диспетчер" установлены драйверы расширения возможностей интерпретатора "Бейсик" (подробно см. Приложение 3).

4] Система может поставляться в трех видах:

 - В виде отдельного файла (для запуска системы только из
   среды "Best Tool Kit")
   имя файла "BASICA92.EXE" (модификация: "BASICA93.EXE")
 - На системном диске (загружается самостоятельно)
 - В составе пакета "ИКП-4+"

Вы можете перевести систему из вариантов 1 и 3 в вариант 2 отформатировав диск командой "INIT FILENAME" из загруженной системы.

.сс

.шп72

ОТ АВТОРА

.шп0

Автор настоящей системы не уверен, что ему удалось обнаружить и исправить все ошибки в ДОС 3.3 и интерпретаторе "Бейсик". Поэтому вполне возможно, что в последущем появятся новые версии среды "BASIC-MASTER". Для тестирования версий системы и контроля их подлинности автором была написана специальная утилита "CHECKSYS.BAS", которая в настоящее время содержит алгоритмы для тестирования трех систем (включая распознавание "стандартной" среды Бейсик ИКП-1) и по окончанию своей работы сообщает версию Вашей системы с указанием даты ее создания. На момент составления настоящего описания последняя версия системы была создана 02.12.94. Автор гарантирует полную совместимость настоящей и будущих версий системы с существующим програмным обеспечением.

.ст Раздел III:2

[an error occurred while processing this directive]