PC-01 Lviv http://pc01.lviv.ua/forum/ |
|
Стандартный Basic 2.0 http://pc01.lviv.ua/forum/viewtopic.php?f=22&t=189 |
Page 1 of 4 |
Author: | liberation [ 21 Dec 2011, 17:10 ] |
Post subject: | Стандартный Basic 2.0 |
Пусть и в "железячной" теме, но приведу любопытное воспоминание о баге Бэйсика ПК-01 "Львов": Quote: Еще помню свою первую персоналку ПК-01 "Львов". Родной для зверька язык - Бейсик (в ПЗУ вшит интерпретатор). Я, впрочем, предпочитал коды процессора, но поначалу пару прог на Бейсике решил для разминки написать. Моё знакомство с Бейсиком закончилось после такого эпизода.
ИсточникО, сколько я рвал на себе волосы над отладкой абсолютно правильной программы (как с моей точки зрения, так и по всем разумным правилам), когда я ясно пишу в одной строке присваивание COUNT=0, а через три строки этот COUNT сам по себе оказывается абсолютно другим. Оказалось: тот говноблядский интерпретатор считал значащими только первые две буквы идентификатора. Но, что самое интересное, "в целях совместимости" допускал идентификаторы любой длины. В итоге переменные COUNT и CODE он считал одной и той же переменной! Люди-человеки, было такое? upd. 03/09/2012: Тема вынесена из "Недостатки и недоработки ПК-01 "Львов". Связанные темы "Расширенный Basic для ПК-01 "Львов", "Оператор SLOAD". |
Author: | Kucher [ 21 Dec 2011, 20:12 ] |
Post subject: | |
А нечего было выделываться! |
Author: | a99 [ 21 Dec 2011, 23:29 ] |
Post subject: | |
Quote: Люди-человеки, было такое?
Подтверждаю. Самое забавное, что узнал об этом впервые ))) На бейсике почти не программировал, оперативно ушёл на асм. |
Author: | Kucher [ 22 Dec 2011, 00:25 ] |
Post subject: | |
Можно лишь предположить, что разработчики пожертвовали точной идентификацией переменной ради быстродействия интерпретатора? |
Author: | liberation [ 22 Dec 2011, 01:57 ] |
Post subject: | |
Quote: Можно лишь предположить, что разработчики пожертвовали точной идентификацией переменной ради быстродействия интерпретатора?
Что-то в этом есть. Два символа как раз составляют 16-разрядное слово, максимум для ЦП "Львова". Возможно, что так удалось организовать быстрый поиск по списку переменных. Несомненно, это было смелым рационализаторским предложением.
|
Author: | Kucher [ 22 Dec 2011, 02:30 ] |
Post subject: | |
Ну да, я об этом и подумал. Тут все программеры в прошлом или настоящем и меня поняли. На "Львове" сама процедура вычленения из массива лишних более 2-х байт займёт просто уйму ресурсов, особенно в цикле. |
Author: | liberation [ 22 Dec 2011, 14:33 ] |
Post subject: | |
Для полноты картины еще одна классическая ошибка Бэйсика ПК-01 "Львов": Зачем и что это - науке неизвестно. |
Author: | sadfsdfsdaf [ 23 Dec 2011, 20:15 ] |
Post subject: | |
Quote: Люди-человеки, было такое?
такое было в подавляющем большинстве бейсиков (2 бувы на идентификатор), причём это было документировано. тут как раз неожиданностей нет.По поводу LIST 50--70 эта штука меня в своё время немало позабавила, а секрет скорее всего прост - это дамп произвольного участка памяти как бейсик-программы, где-то там неотлавливаемое переполнение происходит (могли и как числа с плавающей точкой параметры взять с командной строки). Ну, а коды больше 0x7F декодируются как токены (программа в токенизированном виде хранится в памяти). Корвет позволял вместо операторов вводить русские буквы (там КОИ8 использовался), потом эти "магические буквы" становились операторами. А Львову это было не нужно, у него горячие клавиши были... |
Author: | a99 [ 23 Dec 2011, 22:54 ] |
Post subject: | |
Quote: Числовая переменная обозначается в БЕЙСИКе ПК-01 идентификатором, который состоит из одной или двух латинских букв или латинской буквы и последующей цифры, например: X, P1, RD, A2.
RTFM, однако. Вот ведь...
|
Author: | ivagor [ 25 Aug 2012, 15:50 ] |
Post subject: | Re: |
Quote: Для полноты картины еще одна классическая ошибка Бэйсика ПК-01 "Львов":
Интересный прикол. LISTномер_строки-любая_нечисловая_белиберда в итоге запускает выполнение с адреса равного номер_строки.Зачем и что это - науке неизвестно. Выбранный в примере номер 50 интересен тем, что команда все же отработает как LIST (и распечатает "строки" с адресов 058Bh и F5CFh), т.к. перейдет на адрес 0032h. Соответственно есть несколько номеров строк (адресов перехода), при которых эта конструкция будет работать как LIST (причем есть варианты с другими адресами печатаемых строк). Интересно, есть примеры программ с использованием этой штуки для неявного запуска процедур в кодах (например рестарт будет LIST63488-нечисловая_белиберда)? Менее интересный вариант LISTномер_строки:что_угодно игнорирует все что после двоеточия и работает аналогично LISTномер_строки, но это касается не только LIST. |
Author: | b2m [ 25 Aug 2012, 15:59 ] |
Post subject: | Re: Re: |
Quote: Интересный прикол. LISTномер_строки-любая_нечисловая_белиберда в итоге запускает выполнение с адреса равного номер_строки.
Блин, откуда ты эти приколы берёшь? Связь с космосом?
|
Author: | NeoSpectruman [ 25 Aug 2012, 16:05 ] |
Post subject: | Re: Re: |
Quote: Интересный прикол.
Повод окончательно забить на бейсик.
|
Author: | ivagor [ 25 Aug 2012, 17:04 ] | ||
Post subject: | Re: Недостатки и недоработки ПК-01 "Львов" | ||
К сожалению обработка LIST в ПЗУ, поэтому загружаемой программой исправить не получится. Тем не менее в век эмуляторов это вряд ли кого-то смутит, поэтому я рискнул пропатчить ПЗУ. На первый взгляд при этом ничего не поломалось.
|
Author: | liberation [ 25 Aug 2012, 23:14 ] |
Post subject: | Re: Re: |
Quote: Интересно, есть примеры программ с использованием этой штуки для неявного запуска процедур в кодах (например рестарт будет LIST63488-нечисловая_белиберда)?
Вы маг и чародей, профессор! Ничего подобного я припомнить не могу. Бэйсик ПК-01 вообще довольно загадочная вещь. Мы как-то уже поднимали вопрос его генезиса в вопросах к Вл. Пуйде, но первоисточник все-таки твердо не установили. Если будет желание, почитайте озвученные соображения. К сожалению, пока нет ответов на наши вопросы к Юр. Опырю, который непосредственно доводил до ума Бэйсик ПК-01... Все-таки надеюсь, мы преодолеем эту трудность. Еще у нас есть тема, где обсуждался расширенный вариант Бэйсика, на котором были написаны некоторые игрушки для ПК-01. Довольно аппетитная штучка, кстати, была. |
Author: | sadfsdfsdaf [ 26 Aug 2012, 01:29 ] |
Post subject: | Re: Re: |
Quote: Менее интересный вариант LISTномер_строки:что_угодно игнорирует все что после двоеточия и работает аналогично LISTномер_строки, но это касается не только LIST.
это касается всех "операторо-команд", которые можно записать в код, но после выполнения которых происходит останов выполнения программы и горячий рестарт интерпретатора. (p.s. в других диалектах бейсика частенько эти команды ничем не отличались от встроенных операторов, а вот в ПК-01 - так).
|
Page 1 of 4 | All times are UTC+03:00 |
Powered by phpBB® Forum Software © phpBB Limited https://www.phpbb.com/ |