[an error occurred while processing this directive]
.ао0
.шп8
.ми0
.цв
---------------------------------------------------- ОПИСАНИЕ ОТЛИЧИЙ ПРОГРАММНОЙ СРЕДЫ "BASIC-MASTER" ОТ СТАНДАРТНОГО ИНТЕРПРЕТАТОРА "BASIC A9.1" (ИКП-1). ИСПРАВЛЕНИЕ ОШИБОК В ДОС 3.3 И СИСТЕМЕ "МОНИТОР" ----------------------------------------------------
(Описание для программистов и пользователей)
.лв
.шп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 из таблицы "Диспетчера" резидентных драйверов (см. соответствующее описание). Применяется для работы с Библиотекой драйверов операторов фирмы "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
*3EE3L
Если в ячейке ¤3EE3 при этом храниться байт ¤60 (RTS), то Вы работаете с системой, в которую внесены кикие-то изменения. Причем сделал это программист не являющийся специалистом в данной среде. Старайтесь не пользоваться такими средами т.к. никто не знает, что от них можно ждать. Новая система "BASIC-MASTER" имеет нормальную подпрограмму контроля за суммой системы с исправленными таблицами контрольной суммы по сравнению со стандартной системой.
4] Система может поставляться в трех видах:
- Файлом (для запуска системы только из Best Tool Kit) имя файла "BASICA92.EXE" (модификация: "BASICA93.EXE") - На системном диске (загружается самостоятельно) - В составе ИКП-4
Вы можете перевести систему из вариантов 1 и 3 в вариант 2 отформатировав диск командой "INIT FILENAME" из загруженной системы.
.сс
.шп72
ОТ АВТОРА
.шп0
Автор настоящей системы Серков С.В. (он же автор описания, которое Вы читаете, ученик Волкова И.М.) посвятил изучению системы DOS 3.3 и интерпретатора "Бейсик" около пяти лет. Причем для этого были изучены описания соответсвующих "фирменных" систем (APPLE) и их исходных текстов (не говоря уже о том сколько бессонных ночей было проведено при "раскопках" информации методом "научного тыка"). Считаю, что в настоящее время являюсь лучшим знатоком этих систем в нашей дорогой столице и за ее пределами. Могу уверить особенно самонадеянных, что они не знают и половины из того, что следовало бы (не говоря уже о знаниях системного программиста). Впрочем, в основном это не их вина, а вина заводских разработчиков програмного обеспечения, которые всегда старались "зажать" информацию, чем сильно навредили программистам. За это особое "спасибо" хочу выразить тов. Кривцову, Понамареву, Пешкову и другим "великим деятелям". Автор настоящего описания никогда никому помочь не отказывался, поэтому по любым вопросам связанным с работой DOS 3.3, "Бейсик" и "BASIC-MASTER" прошу обращаться к автору.
.шп8
19.11.94. Friends' software Серков С.В. (095) 400-6865 (в любое время)
.шп0
[an error occurred while processing this directive]