ZX Review #5-6
04 ноября 1997
  Бейсик  

Форум - По поводу компилятора бейсика "Blast".

<b>Форум</b> - По поводу компилятора бейсика
(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, АНФИМОВОЙ Е.В.




Другие статьи номера:

Adventure Project - Проектирование и разработака Адвентюрных и RPG игр.

Adventure Project - Русификация адвентюр.

TR-DOS для начинающих - Продолжение.

Авторская разработка - Scorpion 2000 (С.Зонов).

Авторская разработка - Трамплин (С.Веремеенко).

Визитная карточка - новый электронный юмористический журнал "SpectrofUn".

Перекресток драконов - Раскрутка игры Finders Keepers.

Перекресток драконов - Раскрутка игры Knight Tyme.

Перекресток драконов - Раскрутка игры Spellbound.

Перекресток драконов - Раскрутка игры Stormbringer.

Ретро - 40 лучших процедур: Слияние картинок, Вращение символа по часовой стрелке, Инвертирование символов, Изменение атрибута, Закрашивание контура, Построение шаблонов (Дж.Хардман, Э.Хьюзон.).

Советы экспертов - Total Eclipse 2.

Советы экспертов Super League.

Форум-игры - Описание игры Страна Мифов.

Форум-игры - Прохождение Renegade.

Форум-игры - Тонкости торговли в игре Elite

Форум - Изучение и отладка @-файлов с помощью STS 5.1. Особенности отладки программ с помощью монитора STS. Исправление ошибки STS 5.1.

Форум - Компрессия программ.

форум - О сокращении времени форматирования. О записи секторов одновременно с форматированием. Перестроение экрана за одно прерывание.

Форум - Особенности ассемблера ZX ASM 3.0.

Форум - По поводу компилятора бейсика "Blast".

Форум - По поводу релоцируемых программ.

Форум - Программы "Пламя" и "Дракон".

Читатель-читателю - TR-DOS: как не допустить ошибки?

Читатель-читателю - Эффективная работа с дисководом .

Этиды - Расчет адреса в файле атрибутов. Программа скроллирования заданного окна на 1 пиксел вправо. Программа очистки заданного окна. Процедура вывода картинки из буфера.

Этюды - Индикатор каналов музыкального процессора. Процедура очистки экрана. Предложение по стандартизации.

Этюды - Набор из восьми программ "расширения" экрана. Две процедуры проявления экрана.

Этюды - Новые темы для разработок.

Этюды - Программа воспроизведения инструмента от редакторов оцифрованной музыки.

Этюды - Программа обработки @-бейсик файлов.

Этюды - Процедура поворота символа на 90 градусов по часовой стрелке.

Этюды - Процедура поиска текстовых файлов.

Этюды - Экранная процедура "UP HL".


Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Демопати - Chaos C0NstRucTI0n'2001: результаты.
Инструментарий - Инструкция по пользованию пакетом программ "ZX-WINWORD", предназначенных для подготовки иллюстрированных текстов.
Party - Funtop: On The Eve.
Отдохнем - GLODING PROGRAMMING (Программирование снизу вверх наискосок)
Обо всём про всё - Перепечатка из газеты "Мир увлечений".

В этот день...   25 апреля