(c) С.Галустян, г.Черкесск
По поводу компилятора BLAST
Здравствуйте!
Пишет вам ваш читатель из
г.Черкесска Galustian S.N.
(Cyberdyne Synthesis inc.). В ZX
РЕВЮ неоднократно писалось о
низком качестве существующих
языков программирования. С ком-
пиляторами ROM BASIC'а та же си-
туация. Можно с уверенностью
сказать, что на сегодняшний день
для ZX-Spectrum'а не существует
компилятора, стопроцентно сов-
местимого со стандартным BA-
SIC'ом. То, что эта проблема
важна, говорит вывод, сделанный
Б.А.Курицыным (ZX-Ревю 96/6,стр.
2) о том, что программирование
на ассемблере - это ненормально.
Надо согласиться, что программи-
рование в кодах трудоемко, тре-
бует даже у опытного программис-
та много времени при решении,
казалось бы, несложных задач.
Это обьясняется тем, что ассем-
блер - машинно-ориентированный
язык, а отсюда и вся специфика
программирования. Строго говоря,
ассемблер - это удел программис-
тов-системщиков. Компьютеры, как
известно, создаются не для того,
чтобы на них программировали, а
для того, чтобы они помогали ре-
шать разнообразные прикладные
задачи.
Вышеизложенное показывает,
что ассемблер - не лучший ин-
струмент в достижении этого. Для
решения подобных задач сущес-
твуют проблемно-ориентированные
языки, т.е. языки высокого уров-
ня. Вообще, развитие компьютер-
ной техники идет к тому, что
программирование на языках низ-
кого уровня уйдет в небытие. Ко-
нечно, Spectrum - не та платфор-
ма, на которой этому суждено
сбыться. Но наша задача в дру-
гом. Мы должны выжать все воз-
можное из этого микрокомпьютера.
Сейчас, на мой взгляд, очень ну-
жен эффективный компилятор ROM
BASIC'а. А почему в первую оче-
редь нужен компилятор стандар-
тного BASIC'а, а не, скажем,
BETA-BASIC'а или Паскаля? Да по-
тому, что несмотря на все его
недостатки, им владеет наи-
большее число пользователей. За
основу я предлагаю взять наибо-
лее продвинутый компилятор BLAST
фирмы OCSS. Он имеет ряд ограни-
чений, на которые указал Вячес-
лав Солдатов (Rensoft) (ZX-Ревю
95/1, стр.41), и недоработок,
затрудняющих популяризацию этого
программного продукта.
При работе с BLAST'ом я стол-
кнулся со следующими проблемами.
В некоторых случаях при работе
откомпилированной программы я
получал сообщение "3 Subscript
wrong" при исполнении операто-
ров READ-DATA. Об этом писал и
Вячеслав. В описании к BLAST'у
(я пользуюсь изданием, выпущен-
ным ТОО "Виролл ЛТД" "Систем-
ные программы для ZX-Spectrum",
том 2) на стр.103 сказано, что
"процедуры в машинных кодах,
расширяющие BASIC перехватом
процедур обработки ошибок (или
какими-либо другими методами),
по-прежнему будут работать". На
практике это не подтвердилось.
В откомпилированных программах
процедура ON ERROR GO TO нор-
мально не работает. Обьясняется
это тем, что программа, прошед-
шая BLAST, при попытке ее "зава-
лить" вместо того, чтобы выдать
сообщение об ошибке, иногда ос-
танавливается с сообщением "0
Ok". Это и влечет за собой неэф-
фективность этой процедуры в
данном случае.
При каких ошибках такое про-
исходит, мне не удалось выяс-
нить. Факт тот, что в BASIC-ин-
терпретаторе ON ERROR GO TO ра-
ботает безотказно при любых об-
стоятельствах (выход из програм-
мы возможен только по RESET). В
одной моей программе имелась
строка:
2100 IF N=5 AND LEN STR$ XSIM>3
THEN LET XSIM=VAL((STR$
XSIM)(1 TO 3))
Во время компиляции програм-
мы, трансформированной предвари-
тельно TOOLKIT, в режиме TAPE-
TAPE BLAST выдал ошибку в этой
строке и завис. Если ввести эту
строку отдельно в BLAST и попы-
таться откомпилировать ее в ре-
жиме RAM-RAM, то компилятор вы-
даст ошибку и попросит нажать
клавишу. После нажатия появится
сообщение "Scroll?". Если от-
казаться от скроллирования, то
функционирование BLAST'а восста-
новится. В противном случае эк-
ран заполнится "машинным кодом",
и компьютер зависнет. Вниматель-
ный читатель заметил, что в опе-
раторе LET есть лишние скобки,
которые в BASIC-интерпретаторе
не нарушают работу программы.
Для BLAST'а же строки:
10 LET A=VAL((STR$ A)(1 TO 3))
(выходит ошибка)
10 LET A=VAL(STR$ A)(1 TO 3)
(все нормально)
не являются эквивалентными. Ко-
нечно, хорошо, что BLAST заме-
тил лишние скобки, но мне кажет-
ся, это не потому, что он такой
"умный". Реакция на это у него
нездоровая. В том же описании на
стр.99 сказано, что если во вре-
мя компиляции (вероятно, имеется
в виду компиляция в режиме RAM-
RAM) BLAST'у не хватит памяти,
он попросит у вас разрешения
убрать исходный файл. На практи-
ке в таких случаях BLAST не це-
ремонился и выдавал "NO SPACE -
PRESS ANY KEY TO EXIT".
Что касается компиляции в ре-
жиме RAM-RAM, то с 2869 BYTES
FREE серьезно работать невозмож-
но. Такой режим компиляции имеет
смысл только на компьютерах с
памятью 128 Кб и выше. Но для
этого BLAST нужно еще переде-
лать. Можно упростить доработку,
ограничиваясь хотя бы адапта-
цией под TR-DOS путем замены ко-
манд работы с микродрайвом. Ком-
пилирование BASIC-программ обье-
мом 20K и выше в режиме TAPE-
TAPE очень утомительно и зани-
мает много времени. Тем более,
что перед компиляцией программу
нужно представить в специальном
формате с помощью инструментария
TOOLKIT. Таким образом, скомпи-
лированная программа вдобавок
имеет сильно фрагментированный
вид, что вызывает сложности с
адаптацией под TR-DOS. Поэтому к
TOOLKIT не мешало бы добавить
утилиту, осуществляющую дефраг-
ментацию обьектного кода в моно-
блок. Желательно также, чтобы
BLAST имел встроенную директиву
ON ERROR GO TO. Чтобы не было
неоднозначности, сообщаю, что я
пользовался версией 1.1 с неуда-
ленной Colour protection. Проб-
лема заключается в том, чтобы
нашелся опытный программист, ко-
торый заинтересуется этим компи-
лятором и сможет устранить не-
гативные моменты, обнаруженные
мной и Вячеславом Солдатовым.
Хотелось бы ознакомиться с мне-
нием других читателей по этому
поводу.
В заключение, у меня большая
просьба напечатать мой адрес.
Дело в том, что я увлекаюсь му-
зыкой в стиле RAVE, но информа-
цию по этому направлению в своем
городе найти не могу. Меня инте-
ресует все: аудио и видеокас-
сеты, CD с RAVE-композициями, а
также любая полиграфическая про-
дукция, где обсуждаются проблемы
этого жанра. Существуют ли RAVE-
demos для AY? Буду признателен
любому, кто поможет мне достать
подобную информацию. Пишите мне
по адресу:
357100 КЧР, г.Черкесск-8
ул. Парковая, д.1, кв.36,
Галустяну Сергею
* * *
Творческая группа
LASER SOFTWARE
приглашает для сотрудничества
активные группы
Писать по адресу:
─────────────────
142279 Московская обл.,
Серпуховский район,
п/о поселка Оболенск,
а/я 14, Лещукову Евгению
LASER SOFTWARE PRODUCTION
┌───────────────┐
│ Отвечу всем ! │
└───────────────┘
* * *
ВНИМАНИЕ!
Книга для ZX SPECTRUM на дискете
Возможно, на дискете (для Спектрума!)
будет издана книга П.Ю.Федина "Полное опи-
сание и полный дизассемблер ПЗУ TR-DOS
5.04t (5.03)". На этой же дискете, в ка-
честве справочного материала, планируется
поместить файлы с содержимым ПЗУ TR-DOS
различных версий. Не секрет, что часто
встречаются программы, которые работают не
на всех версиях TR-DOS, причем это проис-
ходит, как правило, из-за того, что автор
не имеет никакой информации о других вер-
сиях.
Вы можете внести свой вклад в это бла-
городное дело, если пришлете дискету с со-
держимым Вашего ПЗУ TR-DOS (кроме стандар-
тных версий 5.01, 5.03, 5.04, естественно)
по адресу:
121019, Москва, а/я 16, АНФИМОВОЙ Е.В.