ivagor, монументально. А chr или эквивалента для вывода не-ASCII кодов нет?
В том, другом бейсике, вроде был оператор PLOT, и еще, кажется, оператор переключения видеорежимов.
ivagor, монументально. А chr или эквивалента для вывода не-ASCII кодов нет?
В том, другом бейсике, вроде был оператор PLOT, и еще, кажется, оператор переключения видеорежимов.
В IBASIC нет, поэтому я предложил использовать машиннокодовую процедуру.
Кратко про графические возможности MB.COM
CLS режим. Младший полубайт. 0 - "обычный" режим 256; 8-15 - режим 256 "early scroll"; 1-7 - режим 512.
SCRN палитра,цвет_фона
COLOR цвет изображения
CURS x,y - перемещение графического курсора (режим 256)
PLOT x,y - рисование линии из текущей точки до x,y (режим 256)
Наличие пробела после ключевого слова обязательно
Завершение эпопеи с IBASIC. Все же решил пробежать по служебным директивам (здесь три из них под номерами 1, 2, 5)
1. Служебные директивы (только те, которые необычные, RUN и LIST не вижу смысла комментировать)
1.1 SCR - просто стирает текущую программу в памяти (в других бейсиках это часто NEW)
1.2 NEW[имя] - как SCR, но с заданием имени.
1.3 SAVE[имя] - выгрузка программы
1.4 OLD[имя] - загрузка программы
1.5 SYS - выход в дос
1.6.1 NAME - показывает текущее имя программы
1.6.2 NAMEимя - задает новое имя программы
1.7 UNSAVE[имя.BSC] или ERA[имя.BSC] - удаление программы с диска
1.8 LLIST - в данном бейсике синоним LIST, такие дела
1.9 NULLаргумент. Аргумент от 0 до 255. Задание задержки при переходе к новой строке или при скролле.
Замечание по поводу директив с именем в квадратных скобках. Это значит, что имя можно указывать, а можно не указывать, и тогда будет использовано имя заданное при старте программы или через NAME (или запрошено в случае OLD).
Дополнение про GRAF - это не просто очистка экрана, этот оператор установит 3й бит в BFDC и BFE6 и получится аналог CLS 8-15 в MB.COM. Выйти из этого режима можно по директиве LIST
И мне все же интересно, какой бейсик был прототипом. Это явно не микрософт.
- - - Добавлено - - -
Свел заметки по IBASIC в один файл и исправил ошибки.
Последний раз редактировалось ivagor; 02.02.2019 в 14:35. Причина: исправил про NULL и дополнил про GRAF и LIST
Существует как минимум два разных BIOS для "Океана", с разными адресами рабочих ячеек. BFDC и BFE6 (занятно, что сразу в двух местах устанавливается бит), похоже, относятся ко второй версии BIOS, в которой добавлены процедуры работы с НГМД и поддержка клавиатуры изменена в сторону "матричных" вариантов.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
OLD и UNSAVE это прям BASIC-PLUS-2 для PDP-11. UNTRAP тоже, но из фортрана откуда-то.
Больше игр нет
Спросить уже не у кого https://ocean.ru/index.php/novosti-l...eevich-tilinin
Можно предположить, что перепиливали с чего-то доступного в период с 82 по 86 год. Не считая совсем экзотики, доступны тогда были СМ ЭВМ, клоны PDP-11, а из восьмибитных даже не сообразить сходу.
По поводу IBASIC - порядок токенов напоминает xybasic (на котором был основан бейсик для Баширии-2м), но как будто специально изменён порядок оставшихся токенов. Однако первый токен LET на своём месте, больше вроде нигде такого не было. Вот список токенов из исходников:
Скрытый текст
Код:;branch addresses for command execution, in order of table position cmdta: dw let dw ifcom dw for dw next dw goto dw gosub dw print dw input dw read dw retrn dw def dw dim dw gtdel dw restr dw stop dw endcm if not wild dw null endif dw calcm dw scall if not wild dw put dw poke dw wait endif dw tcoff dw tcon dw tpoff dw tpon dw break dw unbrk if not wild dw enabl dw dsabl dw rndiz endif dw rem dw delay dw save dw load dw list dw clear dw newcm dw run dw cont if not camac dw auto dw delet dw edit dw renum endif if not wild dw move endif dw exec if epstn dw plot endif if sdisk and not c3885 dw open dw close dw linpt dw margn if bendx dw bmsos dw bname dw bzap else dw dircm dw scrat endif endif if bendx dw bfils endif if camac dw camcd dw declr dw drivr dw xenab dw rstat dw camcl dw cinit dw cinhi dw loopc dw bypas dw onlin dw pulse dw open dw close if not c3885 dw creat endif dw lampa dw bkset dw block dw cenab dw cdsab dw sttim else if wild dw wgbuf else dw assig endif if realt dw sttim else dw time endif endif if packi dw onlin dw oflin dw field endif dw on ;must follow ONLINE[свернуть]
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)