PDA

Просмотр полной версии : bogobasic



alone
18.05.2007, 21:46
В ZX-Ревю (Украина) 96-1 описан некий BOGOBASIC, в котором есть, например,
такие фичи: ускорен CIRCLE, можно рисовать в нижних 16 пикселах, добавлена
команда "!" - выход в TR-DOS.
У кого-нибудь есть дамп этого чуда?

boo_boo
18.05.2007, 21:55
видимо есть у
http://zx.pk.ru/showpost.php?p=88812&postcount=10

alone
25.05.2007, 17:39
он не отвечает :(

Barmaley_m
18.07.2008, 14:29
У меня есть Bogobasic. И даже его исходник - поскольку я его автор :) На ассемблере ZEUS. Исходник выложу чуть позже, а прошивку можно скачать здесь:
http://www.geocities.com/barmaley_m/bogobasic.zip

Я мог не ответить на приватные сообщения в форуме (поскольку редко сюда заглядываю), но мыло проверяю регулярно (bmspam на мейл.ру) - так что пишите, если что!

Добавлено через 10 часов 39 минут
По просьбам телезрителей, привожу описание возможностей Bogobasic. Данное описание может быть неполным (т.к. по памяти). Может быть когда-нибудь доберусь до бумажки из архива - тогда приведу точнее.

1. Бейсик основан на прошивке Sinclair-82, а не "Орель БК-08". Те возможности из "Орель БК", которые я хотел перенести в Bogobasic, я дизассемблировал и потом уже по-своему вставлял в свою модификацию.

2. Поддерживается полностью клавиатура "Орели", за исключением русского шрифта. Клавиша "Рус" работает как Caps Lock, а клавиша "Р/А" - как Shift. Почему так? Я счел, что русификация бейсика - дело неблагодарное, да и совместимости никакой. А драгоценное место в ПЗУ лучше использовать для более полезных функций.

3. Добавлено три новых команды в бейсик:
! - вызов TR-DOS (эквивалентно RANDOMIZE USR 15616).
@ - исполнение команды TR-DOS из Бейсика (эквивалентно RANDOMIZE USR 15619:REM:)Например, можно в бейсике быстро набрать "@ CAT" - будет каталог. Или "@ RUN "ZEUS" - будет, соответственно, запущена программа ZEUS.
LOAD "" STOP - загрузка программы с кассеты без автозапуска. Полезно для хацкеров :)

При добавлении команд была решена интересная проблема - перевод курсора в режим "K" после символа "@" при вводе.

4. Все графические команды (PLOT, DRAW, CIRCLE) могут рисовать в нижних двух строках экрана. Для этого нужно использовать отрицательные координаты от -1 до -16.

5. Команда CIRCLE работает по прогрессивному алгоритму, который мы с другом придумали (Arcadi Pushnikov). Мы почти дотянули до того, чтобы "изобрести" алгоритм Брезенхама, но только не смогли от одного умножения избавиться. Так что CIRCLE в Bogobasic работает очень быстро по сравнению с реализацией Синклера (хотя и не так быстро, как, например, в игре ELITE). Ну и окружности получаются более красивые, чем у Синклера.

6. Реализация команды Бейсика OPEN# позволяет работать не только с каналами K, S и P, а с любыми каналами, занесенными в информационную область каналов. В частности - поддерживается служебный канал R.

7. Исправлены широко известные ошибки ПЗУ, описанные в публикациях Др. Яна Логана и других. Как правило, для исправления этих ошибок нужно было пропатчить один байт. Какие именно ошибки - сейчас не помню.

8. Исправлены две малоизвестные ошибки ПЗУ Sinclair, из-за которых производилась запись по некоторым адресам ПЗУ. Обычно безвредная, запись приводила к тому, что бейсик сам себя частично портил, если находился в теневом ОЗУ. Обе эти ошибки были исправлены в Бейсик-Орель: оттуда я, собственно, и взял решение. Сам бы вовек не нашел. Одна из этих ошибок была в подпрограмме Scroll, вторая - где-то в недрах "Калькулятора".

9. Улучшена совместимость по сравнению с Орель-бейсиком за счет того, что в тех областях ПЗУ, которые были заполнены FF-ами у Синклера, на границе 256-байтных страниц я оставил по два FF-a. Это помогает тем программам, которые любят ставить на эти адреса таблицу прерываний. В частности, Bomb Jack и Saboteur 2, которые сбоили на "Орель-бейсике", работают нормально на Bogobasic.

Столь виртуозные изменения в Бейсике были бы, конечно, невозможны, если бы у меня на руках не было бесценной книги Др.Др. Яна Логана и Френка О'Хары "Полный дизассемблер ПЗУ ZX-Spectrum" (русский перевод).

zorel
27.01.2011, 23:15
пере залейте, пожалуйста Bogobasic

Лас
27.01.2011, 23:40
пере залейте, пожалуйста Bogobasic
Держите.

Jukov
30.01.2011, 16:52
Есть ли у кого книга Др.Др. Яна Логана и Френка О'Хары "Полный дизассемблер ПЗУ ZX-Spectrum"?

destruct0r
31.01.2011, 18:01
ftp://ftp.worldofspectrum.org/pub/sinclair/books/CompleteSpectrumROMDisassemblyThe.pdf

Jukov
31.01.2011, 20:39
ftp://ftp.worldofspectrum.org/pub/sinclair/books/CompleteSpectrumROMDisassemblyThe.pdf

Спасибочки, а рашен вариант в том же качестве?

destruct0r
01.02.2011, 21:58
http://zx.pk.ru/showthread.php?t=14994, но Вы уже наверное сами нашли ;) Про качество еще не знаю

Barmaley_m
09.01.2016, 20:37
Исходник Bogobasic - в формате Zeus Z80 Assembler.

Чтобы просмотреть:
1) Грузим и запускаем ZEUS в эмуляторе Unreal
2) Входим во встроенный отладчик эмулятора и подгружаем файл bogobas3.z по адресу 8000
3) В ZEUS выполняем команду O32768
4) Выполняем команду L - видим листинг
5) Profit!

Максагор
12.01.2016, 14:25
Вопрос на засыпку: насколько может пострадать совместимость с софтом? В частности, при совместной эксплуатации с BASIC-128?

Barmaley_m
12.01.2016, 23:17
Совместимость страдает, но терпимо (работает больше программ, чем с Орель-бейсик). Можно сказать, что преимущества себя окупают, а для запуска несовместимых программ у меня был режим эмуляции ПЗУ, куда можно было загружать стандартные прошивки.

В ходе изучения, почему страдает совместимость, я нашел несколько критичных мест. Многие из них можно было пофиксить - просто руки в свое время не дошли, когда можно было в режиме эмуляции всё запускать. Критичные места следующие:
1) BHY65TG - это строка, расположенная в ПЗУ, являющаяся частью драйвера стандартной (40 клавиш) клавиатуры. Но некоторые игры имеют свой драйвер клавиатуры, обращаясь к этой строке в ПЗУ по тем адресам, по которым она расположена в стандартной прошивке. bogobasic рассчитан на клавиатуру "Орель БК-08", и в ее драйвере эта строка расположена по другому адресу. Соответственно, в некоторых играх не работает опрос клавиатуры. Можно было бы пофиксить, вернув строку на место и перенеся в другое место таблицу расширенных орелевских клавиш.

С другой стороны, многие программы (напр. ZEUS) обращаются к ПЗУшному драйверу клавиатуры, и благодаря этому в них поддерживаются расширенные орелевские клавиши.

2) Фикс калькулятора, чтобы не затирал первые 5 байт ПЗУ. Некоторые защиты используют калькулятор прямо или косвенно, а из-за фикса некоторые его процедуры исполняются за другое кол-во тактов => портится регистр R. То же касается исправления известной ошибки "0.5 <> 1/2".

3) Мои усовершенствования графики приводят к тому, что команды PLOT и DRAW исполняются за иное кол-во тактов, чем в стандартной прошивке. Как ни смешно, я видел защиту, которая использует процедуру из ПЗУ LINE и при этом рассчитывает на определенное значение регистра R.

4) Некоторые защиты (напр. защиты от ASC) анализируют обработчик NMI и отказываются работать, если он изменен. В bogobasic изменен (для вызова теневого монитора).

Любопытно, что из тех несовместимых с bogobasic программ, которые я анализировал, ни одна не сбивается из-за добавленных команд (!, @, LOAD "" STOP) и измененного обработчика каналов (OPEN #).

Таким образом, совместимость можно было бы улучшить, пожертвовав частью не очень нужных усовершенствований. Прежде всего это графика и фиксы калькулятора. Все равно на эти фиксы никто полагаться не будет, равно как и писать программы на бейсике под расширенную графику. Но ключевые преимущества - драйвер клавиатуры и команды ! и @ - я бы ни за что не убрал, настолько с ними было хорошо.

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

Что касается прошивки бейсик-128 - то по-моему стандартная (неизмененная) с bogobasic не работает, но есть версия бейсика-128 от Андрея Гетало, которая была специально пропатчена для работы с bogobasic, и в нее тоже были внедрены какие-то орелевские плюшки.

goodboy
13.01.2016, 00:26
1) BHY65TG - это строка, расположенная в ПЗУ, являющаяся частью драйвера стандартной (40 клавиш) клавиатуры. Но некоторые игры имеют свой драйвер клавиатуры, обращаясь к этой строке в ПЗУ по тем адресам, по которым она расположена в стандартной прошивке.

как-раз столкнулся с-похожей проблемой в OpenSEbasic http://speccy.info/OpenSE_Basic
http://sourceforge.net/projects/sebasic/files/OpenSE%20BASIC/

zx_
13.01.2016, 15:14
Barmaley_m, а нельзя ли добавить поддержку графических режимов 512х192 и хардварный мультиколор 256х192
от VMG ?
http://speccy.info/512x192


было бы здорово, а то эти режимы уже лет 15 есть , а поддержку бейсиком не имеют

Бука
13.01.2016, 19:36
уже лет 15 есть , а поддержку бейсиком не имеют

Для португальского клона ТС 2048 есть расширение Бейсика от Тimex, поддержка 512*192 точно есть.
Это программно и аппаратно клон 48к с добавкой графических расширений от TS2068 - https://ru.wikipedia.org/wiki/Timex_Computer_2048 .

Аналоги ехСССР тоже были, я не про доработки а нативные 48к с 512*192.

О, нагуглил расширение: http://timex.comboios.info/tmxtechb64-2048.html

zx_
13.01.2016, 21:59
чтобы из постсоветского клона сделать Timex - нужно очень попыхтеть , да и результат неясен
а VMG расширения графики - это четыре дип корпуса для всех модификаций

потому и возникла просьба к автору добавить поддержку расширеной графики

goodboy
14.01.2016, 10:41
нельзя ли добавить поддержку графических режимов 512х192 и хардварный мультиколор 256х192
от VMG ? эти режимы уже лет 15 есть , а поддержку бейсиком не имеют

про пользовательские каналы ввода/вывода не-слышал ?

http://www.worldofspectrum.org/pub/sinclair/screens/in-game/123/64_2.gif

кроме того мне непонятно что можно толкового написать на-бейсике в таком ограниченном объёме
(доп.данные для расширенного экрана начинаются с 24576)

zx_
14.01.2016, 14:38
goodboy, ? трукодеры не должны обсуждать бейсик, это пачкает белые одежды
да и пользовательские каналы это не о том вовсе

лучше бы SEBasic для нашего стандарта расширения графики переделал бы, исходники и все есть , занятие для трукодера отменное, простые пользователи памятник воздвигнут
серьезно

goodboy
14.01.2016, 14:45
какая поддержка расширенного экрана должна быть в-бейсике ? (извини,я не-понимаю)

zx_
14.01.2016, 15:12
goodboy, пять команд , из них одна переключение режима
http://timex.comboios.info/tmxtechb64-2048.html

ну и в описании SEBasic есть про это, вторая ром, но там все к режимам Таймекс, а у нас эти режимы иначе организованы
на мой взгляд работы на час кодеру (шутк)

goodboy
14.01.2016, 15:49
практическая польза от этих команд ?
откуда их вызывать ???

Barmaley_m
14.01.2016, 21:46
Bogobasic создавался для "Орель БК-08", на остальных клонах он не пойдет из-за драйвера расширенной клавиатуры. Можно было бы вернуть на место стандартный драйвер с сохранением и развитием остальных усовершенствований, но... Я не имею планов по изменению или совершенствованию bogobasic. Он делался в 1993г и свою службу сослужил.

Сама идея изменения бейсика всегда чревата потерей совместимости с софтом. Причем в самых неожиданных местах и из-за невинных, казалось бы, изменений. Любой компьютер, у которого прошит в ПЗУ измененный бейсик, должен иметь режим эмуляции ПЗУ, чтобы туда можно было загрузить стандартный бейсик и запускать под ним программы, несовместимые с новым. В случае "Орели БК-08" передо мной стоял нелегкий выбор: отказаться от расширенной клавиатуры в бейсике и многих других программах, с которыми я работал; или пожертвовать совместимостью. Я выбрал второе. Ну и раз уж взялся менять бейсик - то "Остапа понесло". Плюс-минус одна неработающая программа - не страшно, зато некоторые из дополнительных возможностей (вызов команд TR-DOS) добавили много удобств в работе. Ну и вообще было интересно менять бейсик - я как раз в то время зачитывал до дыр дизассемблер бейсика от Яна Логана.

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

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

creator
15.01.2016, 19:30
Barmaley_m, интересно читать твои сообщения, видно что знакомство и общение с ASC явно пошло тебе на пользу.

Barmaley_m
16.01.2016, 00:00
creator, спасибо на добром слове. ASC... Загадочная и закрытая личность. Я даже не знаю, участвовал ли он когда-нибудь на каком-нибудь форуме (хотя бы и не посвященном ZX). А ты с ним общался? На форумах его встречал где-нибудь?

yuriy
16.01.2016, 02:45
Barmaley_m, а он случайно не на Тополях жил? Фамилия знакомая. Но знаком не был. Я помню что уже где-то писали, но по поиску не нашёл.

creator
16.01.2016, 07:23
Barmaley_m, увы, я с ним не общался, но изредка попадались его сообщения в FIDO (в RU.AMIGA было точно) в районе 1996-1997 годов.

Barmaley_m
17.01.2016, 02:26
Barmaley_m, а он случайно не на Тополях жил? Фамилия знакомая. Но знаком не был.
На Тополях, на них самых. Если точнее - 1й Тополь, в районе одноименной остановки, в одной из кирпичных высоток.

Я помню что уже где-то писали, но по поиску не нашёл.
Тут на форуме есть тема про ASC в разделе "Люди" - там я тоже отписывался.

изредка попадались его сообщения в FIDO (в RU.AMIGA было точно) в районе 1996-1997 годов.
Спасибо, буду искать.

yuriy
17.01.2016, 03:35
Barmaley_m, так вот я помню что когда-то читал и сам отписывался, но не нашёл. Угу я как раз на первом за кирпичной высоткой в панельной 9-ти этажке и живу до сих пор.