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

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

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

Quote:
ОК, я напишу про BEEP и про TAN, а кто-нибудь про другие.
Эх, где бы нам таких толковых "кто-нибудь" найти... Мы бы мир перевернули, а потом на место поставили бы. :D
Quote:
числовая_переменная=TAN() - опрос курсора без буферизации, можно отслеживать одновременное нажатие клавиш.
Опрос курсора? Это как? Получение его координат на экране? И причем тут одновременное нажатие клавиш?
Quote:
Тогда игрушки в каталоге XBS написали авторы XBASICа или их знакомые? Или те, кто покопался в XBASICе и вдруг решил на нем что-то сделать? Или еще вариант - авторы для затравки сделали пару игрушек, их (эти игрушки) кто-то посмотрел и по аналогии сделал свои.
Да, несколько игрушек на XBS считаются однозначно "заводскими", это я про "MAUS" (точно сохранилась), "LEV/Лев в клетке" и "POMID". И вроде бы было еще несколько игрушек, но утверждать не буду, пока не проведу основательную ревизию сохранившихся программ. Так же нельзя исключать, что кто-то занимался "реверс-инжинирингом" и мог написать еще что-то свое. Я знаю об одном таком случае: когда-то я сам написал простенькую игрушку на XBS (но вряд ли она сохранилась), было это сделано после изучения исходников "MAUS" (если не ошибаюсь). Насколько сейчас помню, тогда я глубоко в эту тему не вникал, использовал только GET/PUT для вывода спрайтов.

В целом же, как я уже писал, софт на Бейсике для ПК-01 совершенно не котировался, уж не скажу почему. Просто так было. Возможно, если бы XBS был тогда хоть сколько-нибудь документирован, то все бы пошло несколько иначе. Но получилось как получилось. Хотели как лучше... :wink:

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

Quote:
Опрос курсора? Это как? Получение его координат на экране? И причем тут одновременное нажатие клавиш?
В смысле клавиш курсора. Ну и INKEY$ только одну клавишу дает, а тут в результате 4 младших бита, каждый отвечает за свою стрелку. Для полного счастья еще пробел стоило добавить.

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

Еще пара операторов:
GET (и LET) СимвольнаяПеременная,Xнач,Yнач,Ширина,Высота - сохраняет в символьной переменной копию фрагмента экрана

PUT (и CLS) Xнач,Yнач,Ширина,Высота,Байт - рисование прямоугольника "байтом"
PUT (и CLS) Xнач,Yнач,Ширина,Высота,Символьная переменная - вывод на экран фрагмента заданного СиимвольнойПеременной
PUT (и CLS) Xнач,Yнач - выводит на экран фрагмент из переменной (или рисует прямоугольник "байтом") с размерами заданными предыдущим (последним) "полным" PUTом
Возможны промежуточные варианты между "кратким" и "полным" PUT

Во всех случаях Xнач и Yнач отсчитываются с верхнего левого угла, левее и выше, чем начало системы координат графических операторов. Реальная дискретность Xнач и ширины 4.

Еще PRINT@(X,Y)ЧтоНибудь - Печатает что-нибудь в заданном месте экрана. X и Y текстовые, обычные. Это я просто игрушку посмотрел, не код, может у PRINT еще какие-то возможности есть.

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

Модифицированный вариант DRAW - DRAW"описание_рисунка"
При описании рисунка можно использовать следующие команды:
Rсколько,Lсколько,Dсколько,Uсколько - вправо, влево, вниз, вверх на "сколько" (шаг по 2 точки, см. ниже про "кисть")
Eсколько,Fсколько,Gсколько,Hсколько - вправо-вверх, вправо-вниз, влево-вниз, влево-вверх на "сколько" (шаг по 2 точки, см. ниже про "кисть")
@ - переносит точку рисования DRAW в реальный левый верхний угол экрана, т.е. левее и выше начала координат стандартных графических операторов
B - следующая команда не будет рисовать, а только переместит курсор. Можно использовать для относительного позиционирования курсора. Вместе с @ можно использовать для абсолютного позиционирования курсора.
Cбайт - оказалось, что DRAW рисует "кистью", которая задается оператором C
"Кисть" квадратная из 4х точек, можно их условно пронумеровать:
3 2
1 0
"Байт" в C задает цвета этих 4х точек: 32103210
Описание не совсем полное, но рисовать по этому описанию с использованием модифицированного DRAW можно.

Небольшое дополнение по PRINT@ - в скобках кроме X и Y можно задать третий параметр - цвет, т.е. PRINT(X,Y,цвет)ЧтоНибудь

UPD: Приложил пример использования модифицированного DRAW

Attachments:
DRAW_XBAS_example.ZIP [222 Bytes]
Downloaded 428 times

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

BAUD в XBASICе тоже расширен.
В оригинале операнд BAUD может принимать значения 0 или 1, в XBASIC - от 0 до 4, при этом, что интересно, получаются скорости, описанные в "Секретах Львова" - http://lvovpc.cu.cc/article.shtml?id=5, только длительность пилота в XBASIC чуть меньше.

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

SLOAD в XBASIC заменили. Теперь он грузит на экран фрагменты (спрайты). Формат фрагментов простой - адрес (2 байта), потом 16 байт фрагмента (8x8 точек). Если их пронумеровать от 0 до F, то они будут расположены на экране так
0 1
2 3
4 5
....
E F
Упомянутый "адрес" задает положение байта под номером 0.
В качестве признака окончания можно использовать адрес выходящий за рамки ВОЗУ, т.е. за пределами 4000-7FFF (например 0000).
XBASIC оказался интереснее, чем я ожидал.

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

STOPпериод_звуковых_колебаний (0-255), длительность (0-255) [,период_звуковых_колебаний, длительность...]
Почти аналог SOUND, но длительность при одинаковых числовых значениях больше. Пары "период,длительность" отделяются запятой, а не точкой с запятой, как в SOUND. Для извлечения звука используется своя процедура, не из ПЗУ, поэтому соответствия чисел и нот отличаются от SOUND.

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

Вывод символа с заданным кодом в определенную позицию экрана:
CONTx,y,[цвет],код_символа

В итоге почти все (кроме CLOAD, про него ниже) новые и измененные операторы XBASICа описаны. Описание не исчерпывающее, но все же лучше, чем ничего.

По поводу CLOAD - предполагаю, что его не доделали, т.к. пустить по "новой" ветке удается только при "ручной проводке" в отладчике.

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

Quote:
По поводу CLOAD - предполагаю, что его не доделали, т.к. пустить по "новой" ветке удается только при "ручной проводке" в отладчике.
Потрясающая работа! Огромное спасибо за нее! :D

А что должен был бы делать "новый" CLOAD в идеале?

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

Quote:
А что должен был бы делать "новый" CLOAD в идеале?
У меня получилось так, что после пары вмешательств по ходу выполнения он догрузил бейсик-программу к уже имеющейся в памяти, т.е. своего рода MERGE для программ, записанных по CSAVE, а не по SAVE. Но программа именно дописывается после уже имеющейся в памяти, одинаковые строки не заменяются.

Предполагаю, что для загружаемых по SLOAD спрайтов должен существовать редактор.
Кстати, SLOAD можно использовать для познакоместной загрузки экрана, в духе спектрумовского BOMB JACKа.

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

Сделал простенький пример познакоместной загрузки.
Как его посмотреть в Emu:
1. Загружаем XBASIC 3.2 (для удобства положил в архив)
2. Когда он стартует, задаем палитру OUT193,32 (конечно, это не обязательно, но желательно)
3. Набираем SLOAD и жмем Enter. Появится диалог открытия LVT-файла - жмем кнопку "Отмена". Теперь на тулбаре жмем кнопку Play/Stop и выбираем DIZSLO.WAV. Через 11-12 секунд начнет рисовать при загрузке.

Attachments:
SLOAD_example.ZIP [90.61 KiB]
Downloaded 436 times

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

Quote:
Предполагаю, что для загружаемых по SLOAD спрайтов должен существовать редактор.
Кстати, SLOAD можно использовать для познакоместной загрузки экрана, в духе спектрумовского BOMB JACKа.
Может быть. Существовала программа "Оформитель/OFORM", позволявшая добавить к программе заставку, но я с ней никогда не сталкивался, поэтому о принципах ее работы ничего не скажу. А вот заставки с познакоместной загрузкой я видел, одна из таких игр даже сохранилась, это версия "Popcorn" с ликом Сталлоне.

Надеюсь, что когда я займусь ревизией уцелевшего системного ПО, то можно будет еще что-то добавить по этой теме.

Author:  nick [ 08 Jun 2016, 12:47 ]
Post subject:  Re: Расширенный Basic для ПК-01 "Львов"

Помню расширенный Бейсик, там еще был улучшенный оператор заливки (PAINT), обладавший большей скоростью и поддержкой шаблонов заливки!
Image
По моей информации, автором расширенного Бейсика для ПК-01 "Львов" был Валерий Карпов, доцент кафедры Прикладной математики (теперь "Информационных систем") факультета Прикладной математики (теперь "Прикладной математики и информатики") Львовского (теперь Национального) университета им. И.Франко. Он же вел занятия Малой Академии Наук в классе КУВТ Yamaha MSX.
В 1993 году эмигрировал в США, т.к. специалист был очень толковый, а з/п в сфере высшего образования стали сами знаете какие. Так что связь с той поры утеряна.
Мне кажется, там же была написана программа (вроде на Бейсике?), которая рисует красивого львенка из мультфильма.
Кто-нибудь видел/имеет ту программу?

Author:  Zelya [ 08 Jun 2016, 12:59 ]
Post subject:  Re: Расширенный Basic для ПК-01 "Львов"

Оно?

Image

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

Quote:
Оно?
Нет, однозначно. Там львенок был очень красиво нарисован, как из мультфильма.

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