PC-01 Lviv

It is currently 28 Mar 2024, 16:20

Forum Games WEB Tape Loader Twitter RSS

All times are UTC+03:00




Post new topic  Reply to topic  [ 49 posts ]  Go to page 1 2 3 4 Next
Author Message
PostPosted: 21 Dec 2011, 17:10 
Offline
User avatar

Joined: 11 Aug 2008, 17:05
Posts: 1405
Location: Украина
Пусть и в "железячной" теме, но приведу любопытное воспоминание о баге Бэйсика ПК-01 "Львов":
Quote:
Еще помню свою первую персоналку ПК-01 "Львов". Родной для зверька язык - Бейсик (в ПЗУ вшит интерпретатор). Я, впрочем, предпочитал коды процессора, но поначалу пару прог на Бейсике решил для разминки написать. Моё знакомство с Бейсиком закончилось после такого эпизода.

О, сколько я рвал на себе волосы над отладкой абсолютно правильной программы (как с моей точки зрения, так и по всем разумным правилам), когда я ясно пишу в одной строке присваивание COUNT=0, а через три строки этот COUNT сам по себе оказывается абсолютно другим. Оказалось: тот говноблядский интерпретатор считал значащими только первые две буквы идентификатора. Но, что самое интересное, "в целях совместимости" допускал идентификаторы любой длины. В итоге переменные COUNT и CODE он считал одной и той же переменной!
Источник

Люди-человеки, было такое?

upd.
03/09/2012: Тема вынесена из "Недостатки и недоработки ПК-01 "Львов".

Связанные темы "Расширенный Basic для ПК-01 "Львов", "Оператор SLOAD".

_________________
Carthago delenda est, Carthaginem delendam esse


Top
   
 Post subject:
PostPosted: 21 Dec 2011, 20:12 
Offline

Joined: 23 Oct 2011, 23:48
Posts: 197
А нечего было выделываться! :lol:


Top
   
 Post subject:
PostPosted: 21 Dec 2011, 23:29 
Offline

Joined: 04 Sep 2008, 19:39
Posts: 131
Location: Владимир
Quote:
Люди-человеки, было такое?
Image

Подтверждаю. Самое забавное, что узнал об этом впервые )))
На бейсике почти не программировал, оперативно ушёл на асм.


Top
   
 Post subject:
PostPosted: 22 Dec 2011, 00:25 
Offline

Joined: 23 Oct 2011, 23:48
Posts: 197
Можно лишь предположить, что разработчики пожертвовали точной идентификацией переменной ради быстродействия интерпретатора?


Top
   
 Post subject:
PostPosted: 22 Dec 2011, 01:57 
Offline
User avatar

Joined: 11 Aug 2008, 17:05
Posts: 1405
Location: Украина
Quote:
Можно лишь предположить, что разработчики пожертвовали точной идентификацией переменной ради быстродействия интерпретатора?
Что-то в этом есть. Два символа как раз составляют 16-разрядное слово, максимум для ЦП "Львова". Возможно, что так удалось организовать быстрый поиск по списку переменных. Несомненно, это было смелым рационализаторским предложением.

_________________
Carthago delenda est, Carthaginem delendam esse


Top
   
 Post subject:
PostPosted: 22 Dec 2011, 02:30 
Offline

Joined: 23 Oct 2011, 23:48
Posts: 197
Ну да, я об этом и подумал. Тут все программеры в прошлом или настоящем и меня поняли.
На "Львове" сама процедура вычленения из массива лишних более 2-х байт займёт просто уйму ресурсов, особенно в цикле.


Top
   
 Post subject:
PostPosted: 22 Dec 2011, 14:33 
Offline
User avatar

Joined: 11 Aug 2008, 17:05
Posts: 1405
Location: Украина
Для полноты картины еще одна классическая ошибка Бэйсика ПК-01 "Львов":
Image
Зачем и что это - науке неизвестно.

_________________
Carthago delenda est, Carthaginem delendam esse


Top
   
 Post subject:
PostPosted: 23 Dec 2011, 20:15 
Offline

Joined: 07 Dec 2010, 16:54
Posts: 227
Quote:
Люди-человеки, было такое?
такое было в подавляющем большинстве бейсиков (2 бувы на идентификатор), причём это было документировано. тут как раз неожиданностей нет.
По поводу LIST 50--70 эта штука меня в своё время немало позабавила, а секрет скорее всего прост - это дамп произвольного участка памяти как бейсик-программы, где-то там неотлавливаемое переполнение происходит (могли и как числа с плавающей точкой параметры взять с командной строки). Ну, а коды больше 0x7F декодируются как токены (программа в токенизированном виде хранится в памяти). Корвет позволял вместо операторов вводить русские буквы (там КОИ8 использовался), потом эти "магические буквы" становились операторами. А Львову это было не нужно, у него горячие клавиши были...


Top
   
 Post subject:
PostPosted: 23 Dec 2011, 22:54 
Offline

Joined: 04 Sep 2008, 19:39
Posts: 131
Location: Владимир
Quote:
Числовая переменная обозначается в БЕЙСИКе ПК-01 идентификатором, который состоит из одной или двух латинских букв или латинской буквы и последующей цифры, например: X, P1, RD, A2.
RTFM, однако. Вот ведь...


Top
   
 Post subject: Re:
PostPosted: 25 Aug 2012, 15:50 
Offline

Joined: 23 Aug 2012, 12:28
Posts: 123
Quote:
Для полноты картины еще одна классическая ошибка Бэйсика ПК-01 "Львов":
Image
Зачем и что это - науке неизвестно.
Интересный прикол. LISTномер_строки-любая_нечисловая_белиберда в итоге запускает выполнение с адреса равного номер_строки.
Выбранный в примере номер 50 интересен тем, что команда все же отработает как LIST (и распечатает "строки" с адресов 058Bh и F5CFh), т.к. перейдет на адрес 0032h. Соответственно есть несколько номеров строк (адресов перехода), при которых эта конструкция будет работать как LIST (причем есть варианты с другими адресами печатаемых строк).
Интересно, есть примеры программ с использованием этой штуки для неявного запуска процедур в кодах (например рестарт будет LIST63488-нечисловая_белиберда)?
Менее интересный вариант LISTномер_строки:что_угодно игнорирует все что после двоеточия и работает аналогично LISTномер_строки, но это касается не только LIST.


Top
   
 Post subject: Re: Re:
PostPosted: 25 Aug 2012, 15:59 
Offline

Joined: 29 Mar 2012, 21:35
Posts: 115
Quote:
Интересный прикол. LISTномер_строки-любая_нечисловая_белиберда в итоге запускает выполнение с адреса равного номер_строки.
Блин, откуда ты эти приколы берёшь? Связь с космосом? :)


Top
   
 Post subject: Re: Re:
PostPosted: 25 Aug 2012, 16:05 
Offline

Joined: 21 Aug 2012, 22:30
Posts: 145
Quote:
Интересный прикол.
Повод окончательно забить на бейсик.


Top
   
PostPosted: 25 Aug 2012, 17:04 
Offline

Joined: 23 Aug 2012, 12:28
Posts: 123
К сожалению обработка LIST в ПЗУ, поэтому загружаемой программой исправить не получится. Тем не менее в век эмуляторов это вряд ли кого-то смутит, поэтому я рискнул пропатчить ПЗУ. На первый взгляд при этом ничего не поломалось.


Attachments:
BasicListPatch.zip [12.43 KiB]
Downloaded 382 times
Top
   
 Post subject: Re: Re:
PostPosted: 25 Aug 2012, 23:14 
Offline
User avatar

Joined: 11 Aug 2008, 17:05
Posts: 1405
Location: Украина
Quote:
Интересно, есть примеры программ с использованием этой штуки для неявного запуска процедур в кодах (например рестарт будет LIST63488-нечисловая_белиберда)?
Вы маг и чародей, профессор! :shock:
Ничего подобного я припомнить не могу. Бэйсик ПК-01 вообще довольно загадочная вещь. Мы как-то уже поднимали вопрос его генезиса в вопросах к Вл. Пуйде, но первоисточник все-таки твердо не установили. Если будет желание, почитайте озвученные соображения. К сожалению, пока нет ответов на наши вопросы к Юр. Опырю, который непосредственно доводил до ума Бэйсик ПК-01... Все-таки надеюсь, мы преодолеем эту трудность.

Еще у нас есть тема, где обсуждался расширенный вариант Бэйсика, на котором были написаны некоторые игрушки для ПК-01. Довольно аппетитная штучка, кстати, была.

_________________
Carthago delenda est, Carthaginem delendam esse


Top
   
 Post subject: Re: Re:
PostPosted: 26 Aug 2012, 01:29 
Offline

Joined: 07 Dec 2010, 16:54
Posts: 227
Quote:
Менее интересный вариант LISTномер_строки:что_угодно игнорирует все что после двоеточия и работает аналогично LISTномер_строки, но это касается не только LIST.
это касается всех "операторо-команд", которые можно записать в код, но после выполнения которых происходит останов выполнения программы и горячий рестарт интерпретатора. (p.s. в других диалектах бейсика частенько эти команды ничем не отличались от встроенных операторов, а вот в ПК-01 - так).


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 49 posts ]  Go to page 1 2 3 4 Next

Forum Games WEB Tape Loader Twitter RSS

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Powered by phpBB® Forum Software © phpBB Limited