ПК-01 ЛЬВОВ

форум о ПК-01,02 "Львов"
Текущее время: 06 мар 2021, 18:22

Forum Games WEB Tape Loader Twitter RSS

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 49 сообщений ]  На страницу 1 2 3 4 След.
Автор Сообщение
 Заголовок сообщения: Стандартный Basic 2.0
СообщениеДобавлено: 21 дек 2011, 17:10 
Не в сети
Аватара пользователя

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

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

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

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

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

_________________
Carthago delenda est, Carthaginem delendam esse


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: 21 дек 2011, 20:12 
Не в сети

Зарегистрирован: 23 окт 2011, 23:48
Сообщения: 197
А нечего было выделываться! :lol:


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: 21 дек 2011, 23:29 
Не в сети

Зарегистрирован: 04 сен 2008, 19:39
Сообщения: 131
Откуда: Владимир
Цитата:
Люди-человеки, было такое?
Изображение

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


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: 22 дек 2011, 00:25 
Не в сети

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


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: 22 дек 2011, 01:57 
Не в сети
Аватара пользователя

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

_________________
Carthago delenda est, Carthaginem delendam esse


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: 22 дек 2011, 02:30 
Не в сети

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


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: 22 дек 2011, 14:33 
Не в сети
Аватара пользователя

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

_________________
Carthago delenda est, Carthaginem delendam esse


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: 23 дек 2011, 20:15 
Не в сети

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


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: 23 дек 2011, 22:54 
Не в сети

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


Вернуться к началу
 Заголовок сообщения: Re:
СообщениеДобавлено: 25 авг 2012, 15:50 
Не в сети

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


Вернуться к началу
 Заголовок сообщения: Re: Re:
СообщениеДобавлено: 25 авг 2012, 15:59 
Не в сети

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


Вернуться к началу
 Заголовок сообщения: Re: Re:
СообщениеДобавлено: 25 авг 2012, 16:05 
Не в сети

Зарегистрирован: 21 авг 2012, 22:30
Сообщения: 138
Цитата:
Интересный прикол.
Повод окончательно забить на бейсик.


Вернуться к началу
СообщениеДобавлено: 25 авг 2012, 17:04 
Не в сети

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


Вложения:
BasicListPatch.zip [12.43 КБ]
186 скачиваний
Вернуться к началу
 Заголовок сообщения: Re: Re:
СообщениеДобавлено: 25 авг 2012, 23:14 
Не в сети
Аватара пользователя

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

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

_________________
Carthago delenda est, Carthaginem delendam esse


Вернуться к началу
 Заголовок сообщения: Re: Re:
СообщениеДобавлено: 26 авг 2012, 01:29 
Не в сети

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


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 49 сообщений ]  На страницу 1 2 3 4 След.

Forum Games WEB Tape Loader Twitter RSS

Часовой пояс: UTC+03:00


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
cron
Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB