PC-01 Lviv
http://pc01.lviv.ua/forum/

Расширенный Basic для ПК-01 "Львов"
http://pc01.lviv.ua/forum/viewtopic.php?f=22&t=65
Page 1 of 3

Author:  liberation [ 30 Nov 2011, 15:44 ]
Post subject:  Расширенный Basic для ПК-01 "Львов"

Известно, что некоторые игрушки для "Львова" были написаны на расширенном Бэйсике, в котором были реализованы уже упоминавшиеся операторы работы со спрайтами get и put. Кто-нибудь внимательно изучал это расширение? Что там и как там? (Мой опыт в этом вопросе крайней скуден, поскольку я единожды пользовался этой штукенцией).

upd.
Связанная тема "Стандартный Basic 2.0".

Author:  Zelya [ 30 Nov 2011, 15:54 ]
Post subject: 

Только что не удалось запустить Сокобан на бейские. Наверное, как раз из-за этого! Прийдется дизассемблировать и изучать.

Author:  sadfsdfsdaf [ 02 Dec 2011, 22:18 ]
Post subject: 

там грузится бинарная программа (сам бейсик), патчит таблицу операторов, правит системные переменные (адресов размещения программы и буферов), после этого бейсик программа грузится по смещённым адресам (в формате CSAVE можно увидеть реальные адреса загрузки, т.к. тут сохраняют на ленте всю область ОЗУ в бинарном виде и в том поле как раз адреса "для связи" строк). сам бейсик есть в моём эмуляторе, программы к нему тоже, расширение файлов .lvr (но такая предосторожность с моей стороны в принципе была избыточна, детектить их можно по полю связи).

Author:  liberation [ 21 Dec 2011, 15:28 ]
Post subject: 

Quote:
там грузится бинарная программа (сам бейсик), патчит таблицу операторов, правит системные переменные (адресов размещения программы и буферов)
А какие операторы добавляются/изменяются?

Author:  sadfsdfsdaf [ 23 Dec 2011, 20:27 ]
Post subject: 

Quote:
А какие операторы добавляются/изменяются?
уже не помню, скорее всего уже имеющиеся, но неиспользванные ключевые слова (вроде draw/get/put или @@).

надо дизассемблировать
просмотр LV_VIEW.EXE ALMAZY.LVR >ALMAZY.LST

даёт примерно такие подозрительные места:
10 CLS:CLS0,0,255,256,15:DRAW"@BR10BD10C240"
...
950 CLS:PRINT@@(10,7,2)"ВРЕМЯ ИСТЕКЛО."
960 PRINT@@(0,10,0)"ВЫ СОБРАЛИ"S"БРИЛЛИАНТОВ."
...

в принципе, имеющиеся тоже могли быть переопределены (CLS тут подозрителен).
..... подводит память :-(

вот эти бейсики, если ничего не путаю: RASHIR.LVT RASHIR2.LVT

и стандартный список токенов:
private static String toks[] = {
// 0x80
"END", "FOR", "NEXT", "DATA", "INPUT", "DIM", "READ", "LET",
"GOTO", "RUN", "IF", "RESTORE", "GOSUB", "RETURN", "REM", "STOP",
// 0x90
"CLS", "ON", "PLOT", "DRAW", "POKE", "PRINT", "DEF", "CONT",
"LIST", "CLEAR", "CLOAD", "CSAVE", "NEW", "LOAD", "MERGE", "SAVE",
// 0xA0
"OUT", "WAIT", "SLOAD", "BSAVE", "BLOAD", "BAUD", "LOCATE", "COLOR",
"LINE", "PSET", "PRESET", "CIRCLE", "PAINT", "GET", "PUT", "BEEP",
// 0xB0
"SOUND", "DELETE", "RENUM", "EDIT", "VPOKE", "@@", "@@", "@@",
"@@", "@@", "@@", "@@", "TAB(", "TO", "SPC(", "FN",
// 0xC0
"THEN", "NOT", "STEP", "+", "-", "*", "/", "^",
"AND", "OR", ">", "=", "<", "@@", "@@", "@@",
// 0xD0
"SGN", "INT", "ABS", "USR", "FRE", "INP", "POS", "SQR",
"RND", "LOG", "EXP", "COS", "SIN", "TAN", "ATN", "PEEK",
// 0xE0
"LEN", "STR$", "VAL", "ASC", "CHR$", "LEFT$", "RIGHT$", "MID$",
"INKEY$", "HEX$", "POINT", "VARPTR", "CSRLIN", "VPEEK", "@@", "@@",
// 0xF0
"@@", "@@", "@@", "@@", "@@", "@@", "@@", "@@",
"@@", "@@", "@@", "@@", "@@", "@@", "@@", "@@"
};

p.s. Таблица подпрограмм

Author:  liberation [ 24 Dec 2011, 20:44 ]
Post subject: 

Когда-нибудь, сугубо из спортивного интереса, можно будет попробовать реконструировать Basic ПК-01, но с работой над ошибками, оптимизацией и парочкой приколов - а что, кто сказал, что на "Львове" невозможны замыкания, генераторы или даже ООП? :D

Author:  sadfsdfsdaf [ 02 Jan 2012, 05:14 ]
Post subject: 

Quote:
Когда-нибудь, сугубо из спортивного интереса, можно будет попробовать реконструировать Basic ПК-01, но с работой над ошибками, оптимизацией и парочкой приколов - а что, кто сказал, что на "Львове" невозможны замыкания, генераторы или даже ООП? :D
ООП - это самое простое, а вот замыкания, генераторы.... в классическом виде для таких машин это Форт, а в неклассическом.... предлагаешь Haskell портировать ? :-)
а вот ПЗУ конечно неплохо бы декомпилировать с подробными комментариями...

Author:  liberation [ 02 Jan 2012, 11:56 ]
Post subject: 

Quote:
ООП - это самое простое, а вот замыкания, генераторы.... в классическом виде для таких машин это Форт, а в неклассическом.... предлагаешь Haskell портировать ? :-)
А чего мелочиться - сразу JavaScript. :D
Quote:
а вот ПЗУ конечно неплохо бы декомпилировать с подробными комментариями...
Хорошо, даже очень хорошо. Какую бы форму для этого выбрать? Мож, что-то типа Wiki стоит развернуть (я слабо ориентируюсь в подобных средствах представления информации)?

Author:  liberation [ 02 Jan 2012, 12:00 ]
Post subject: 

На форуме nedoPC отыскалась тема "откуда растут уши у советских бейсиков", где выдвинута смелая гипотеза, что почти все сов. Бейсики ведут свое происхождение от альтаировского. Можно почитать при случае.

Author:  liberation [ 03 Sep 2012, 13:13 ]
Post subject:  Re: Расширенный Basic для ПК-01 "Львов"

Реплики про дизассемблирование стандартного ПЗУ переехали в отдельную тему.

Author:  ivagor [ 26 Oct 2012, 17:36 ]
Post subject:  Re: Расширенный Basic для ПК-01 "Львов"

Пара копеек про EXTENDED BASIC (XBASIC) 3.2
Изменяет (в некоторых случаях, типа PUT - определяет) операторы:
PUT и CLS; GET и LET; PRINT; DRAW; CLOAD; BEEP; SLOAD; STOP; CONT; BAUD
и функцию TAN

Author:  liberation [ 26 Oct 2012, 17:50 ]
Post subject:  Re: Расширенный Basic для ПК-01 "Львов"

Quote:
Пара копеек про EXTENDED BASIC (XBASIC) 3.2
Изменяет (в некоторых случаях, типа PUT - определяет) операторы:
PUT и CLS; GET и LET; PRINT; DRAW; CLOAD; BEEP; SLOAD; STOP; CONT; BAUD
и функцию TAN
А подробнее можно, что именно изменяется? Потому как набор операторов выглядит неожиданно - тут и SLOAD, тут и LET, и BAUD, да еще и TAN напоследок...

UPD.
А от какой проги взят этот XBASIC?

Author:  ivagor [ 26 Oct 2012, 18:24 ]
Post subject:  Re: Расширенный Basic для ПК-01 "Львов"

Quote:
А подробнее можно, что именно изменяется? Потому как набор операторов выглядит неожиданно - тут и SLOAD, тут и LET, и BAUD, да еще и TAN напоследок...
Что именно изменяется, т.е. описание расширенного бейсика :) ?
Подробно я смотрел BEEP, т.к. он бипит из ОЗУ и я предположил, что возможно в руководстве по XBASIC есть табличка, где расписаны соответствия аргументов и нот - можно было бы попытаться оценить торможение при выполнении из ОЗУ. Описание XBASICа я хотел спросить на форуме, но, как я понимаю, оно недоступно. Кроме того, даже если была бы пресловутая табличка, полного доверия у меня к ней после ознакомления с BEEP нет. Там и ошибка есть, и зачем-то ei/di, в общем как-то не особо.
Quote:
UPD.
А от какой проги взят этот XBASIC?
v3.2 из каталога игрушки TAIPEI. В сборнике SYSTEM еще есть версия 3.1

Author:  liberation [ 26 Oct 2012, 22:20 ]
Post subject:  Re: Расширенный Basic для ПК-01 "Львов"

Quote:
Что именно изменяется, т.е. описание расширенного бейсика :) ?
Как изменяется поведение вышеперечисленных операторов, какой функционал они реализовывают. :wink:
Quote:
Подробно я смотрел BEEP, т.к. он бипит из ОЗУ и я предположил, что возможно в руководстве по XBASIC есть табличка, где расписаны соответствия аргументов и нот - можно было бы попытаться оценить торможение при выполнении из ОЗУ. Описание XBASICа я хотел спросить на форуме, но, как я понимаю, оно недоступно.
Описание XBASIC действительно недоступно, поскольку его никогда не существовало. Если Вы читали воспоминания Текотева, то могли заметить, что для программистов поначалу вообще никакой документации не предполагалось, и так было аж до 91-го года:
Quote:
А с 1991 года руководство по эксплуатации было дополнено «Руководством программиста» и в комплект программ было включено системное ПО для ПК.
Такой вот юзепфрендли подход. :D
Quote:
Там и ошибка есть, и зачем-то ei/di, в общем как-то не особо.
Да, остается только догадываться, на каких именно машинках писалось ПО для серийного ПК-01. То ли это были таинственные прототипы, то ли последующие разработки (ПК-01М, к примеру).
Quote:
v3.2 из каталога игрушки TAIPEI. В сборнике SYSTEM еще есть версия 3.1
У меня есть ничем не подкрепленное подозрение, что расширений стандартного Бейсика было больше. Но это пока догадки, нужно внимательно пересмотреть наследие ПК-01 на этом языке.

Author:  ivagor [ 27 Oct 2012, 11:01 ]
Post subject:  Re: Расширенный Basic для ПК-01 "Львов"

Quote:
Как изменяется поведение вышеперечисленных операторов, какой функционал они реализовывают. :wink:
ОК, я напишу про BEEP и про TAN, а кто-нибудь про другие.
BEEPпериод_колебаний_канала1,период_колебаний_канала2,длительность[;аналогично и т.д.] - звучит IMHO довольно неприятно.
числовая_переменная=TAN() - опрос курсора без буферизации, можно отслеживать одновременное нажатие клавиш.
Quote:
Описание XBASIC действительно недоступно, поскольку его никогда не существовало.
Тогда игрушки в каталоге XBS написали авторы XBASICа или их знакомые? Или те, кто покопался в XBASICе и вдруг решил на нем что-то сделать? Или еще вариант - авторы для затравки сделали пару игрушек, их (эти игрушки) кто-то посмотрел и по аналогии сделал свои.
Quote:
У меня есть ничем не подкрепленное подозрение, что расширений стандартного Бейсика было больше.
В архиве SYSTEM папка DEVELOP\FORBASIC еще есть чего-то.

Page 1 of 3 All times are UTC+03:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/