ZX Review
#5-6
04 ноября 1997 |
|
Форум - По поводу компилятора бейсика "Blast".
(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, АНФИМОВОЙ Е.В.
Другие статьи номера:
Похожие статьи:
В этот день... 21 ноября