Просмотр полной версии : Вектор-06Ц: Средства разработки
В базе есть ещё один интересный язык -- Форт (http://www.sensi.org/scalar/ware/34/). В своё время баловался им на Векторе... Своеобразный, не похожий на другие язык программирования.
Интересно, позволял ли он ассемблерные вставки? Если да, то ИМХО странно, что этот язык остался очень "нишевым". Ведь даже для разработки игр все критичные по времени выполнения процедуры можно было писать на ассемблере, а основную игровую логику - на Форте.
Форт -- непростой в применении язык. Писать на нем интересно, но непросто. По-моему большинство увлекающихся Фортом имеют склонность уходить глубоко в Форт и забывать о связи с реальным миром. Уже сразу с порога терминология намекает на герметичность: "Форт-система". Попробуй-ка напиши чего-нибудь в "форт-системе" так, чтобы этим можно было бы воспользоваться не имея никакого представления о форт-системах. Мне кажется, что 99 человек из 100 попробовавших просто разбивались лбом об эту стену. 1 неразбившийся оставался внутри, так что о нем ничего не известно =)
Для современной разработки на Форте для Вектора (и не только) советую DX-Forth
http://dxforth.mirrors.minimaltype.com/
Это современный Форт, который читает исходники из файлов (а не "экранов") и может выдавать обычный исполняемый .COM. Хорошо совместим с другими современными фортами, например gforth.
- - - Добавлено - - -
P.S. я пытался (или пытаюсь? кто знает) писать на Форте рогалик: https://github.com/svofski/forth-roguelike
Игры там как таковой еще нет, но можно походить по сгенеренному лабиринту. Интересно как пример программы, которая из одного сорца работает на Векторе и современном компьютере без изменений.
В процессе разработки я не столкнулся ни с какими непреодолимыми барьерами, то есть в принципе можно продолжать разработку и, если подумать, осталось не так много. Главная проблема -- работа над проектом на Форте требует очень глубокого погружения в особое состояние сознания (форт-система головного мозга), на что обычно просто не хватает ресурса.
Lethargeek
29.06.2021, 15:40
Интересно, позволял ли он ассемблерные вставки?
Любой форт как минимум позволяет выполнить готовый машинный код с произвольного адреса (в том числе из байтового массива, заданного в тексте программы). Если нужно писать код именно в ассемблерной форме - ищем (или пишем)) библиотеку. Правда, у попадавшихся мне на глаза форт-ассемблеров и синтаксис был фортоспецифичный постфиксный - то есть "A B MOV" вместо "MOV A,B" итп).
- - - Добавлено - - -
Главная проблема -- работа над проектом на Форте требует очень глубокого погружения в особое состояние сознания (форт-система головного мозга), на что обычно просто не хватает ресурса.
А по мне, так форт как велосипед - разучиться ездить невозможно, уже умеючи. Трудности только при низкоуровневой оптимизации возникают, когда нужно состояние стека держать в уме.
когда нужно состояние стека держать в уме
Если все хорошо планировать и минимально документировать написанное, в уме держать приходится минимум. Это работает сначала, пока получается идти по заранее намеченному плану, или пока корректировки плана не отнимают слишком много сил. Трудности возникают, когда зашел уже далеко и вдруг возникает потребность быстро захачить. Может случиться так, что придется думать, а это тяжело. Поэтому я считаю Форт очень хорошим тренировочным языком. Для воспитания, если можно так выразиться.
Lethargeek
29.06.2021, 16:49
Если все хорошо планировать и минимально документировать написанное, в уме держать приходится минимум.
это другой уровень, а я именно о
низкоуровневой оптимизации
когда ради эффективности выгодно жонглировать значениями
Извините за оффтоп, средство разработки не для вектора, но думаю полезно быть в курсе, что делается для 6502, например вот (https://www.youtube.com/watch?v=ejbTKtgSZI0) видео про llvm-mos.
Извините за оффтоп, средство разработки не для вектора, но думаю полезно быть в курсе, что делается для 6502, например вот (https://www.youtube.com/watch?v=ejbTKtgSZI0) видео про llvm-mos.
Красивое.. Очень позитивный доклад. Завидно, конечно.
На всякий случай стоит напомнить для тех, кто зашел сюда, помышляя: "Ах, как бы это!..". С++20 никто не обещал, но с простым Си для 8080 ситуация не безнадежная. Можно программировать с помощью z88dk (https://github.com/z88dk/z88dk), ack (https://github.com/davidgiven/ack) и c8080 (https://github.com/alemorf/c8080).
Для желающих более современного C и даже C++ на векторе все же есть ZPUGCC8080 (https://zx-pk.ru/threads/32514-zpu-na-vektore.html). Конечно для многих задач не подойдет по скорости, но некоторые приемлемо шевелятся даже на обычном векторе. И там есть потенциал роста, если переписать виртуальную машину с переносом упора со скорости на объем поддерживаемой памяти, то можно будет компилировать что-то более объемное, нетипичное для 8-биток. Но такой вариант конечно будет ориентирован на современные ускоренные варианты вектора.
Так понимаю, что самый продвинутый из Бейсиков для Вектор-06ц — вот этот (https://caglrc.cc/scalar/ware/940/)?
Существует ли для оного компилятор?
Не существует и не планируется.
Не существует и не планируется.
А вообще для любого Бейсика под Вектор-06ц компиляторы существуют?
Специально для векторовских бейсиков нет, только общеCP/Mные.
aGGreSSor
18.10.2025, 12:59
А вообще для любого Бейсика под Вектор-06ц компиляторы существуют?
Вектор с оговорками можно считать CP/M-совместимой машиной.
Поэтому если программа не рисует вектор-специфическую графику вектор-специфическими средствами, то Вы можете получить COM-файл для МикроДОС или CP/M-80 из любого CP/M-компилятора.
Самый производительный и удобный компилятор Бейсика для CP/M который нашёл это C-Basic от Digital Research. Если не трогать операторы касающиеся графики, графических режимов и некоторые дисковые функции, то всё остальное в нём работает. ESC-последовательностями на экран рисует с достаточно приемлимой скоростью, даже конкурирует с CP/M-ассемблерами (если говорить про вывод через BDOS и всякие драйвера). По сравнению с другими компиляторами Бейсика - просто пушка (http://www.gaby.de/cpm/randyfiles/DRI/CBASIC_1982.pdf). Но, с какого-нибудь QBasic потребуется адаптация, конечно. Есть своя специфика.
Скорость зависит от задачи. Например плавучка в CBasic только двойной точности, соответственно чудовищно медленная. Мандельброта считает в 4 раза медленнее, чем BASCOM с одинарной точностью. Нельзя назвать такое сравнение вполне корректным, это скорее говорит о том, что CBasic для некоторых задач совсем не подходит.
aGGreSSor
18.10.2025, 18:53
Скорость зависит от задачи. Например плавучка в CBasic только двойной точности, соответственно чудовищно медленная. Мандельброта считает в 4 раза медленнее, чем BASCOM с одинарной точностью. Нельзя назвать такое сравнение вполне корректным, это скорее говорит о том, что CBasic для некоторых задач совсем не подходит.
Наверняка. Но если честно, то мне нечасто приходится считать Мандельброта и выполнять вычисления с плавающей запятой в программах на 8-битных компьютерах. ;)
Обычно используются целочисленные вычисления и самые простые сравнения. Всё более серьёзное считается на ББ и сводится в таблицы.
На мой взгляд, где-то 2275+ адвентюр для CP/M (https://solutionarchive.com/list/system%2C1/) ждут своего часа для переноса под МикроДОС (адаптация, русификация и т.д.).
Причём скомпилированные в Bascom они будут тормозить больше, есть тесты:
https://zx-pk.ru/attachment.php?attachmentid=82983
Прошу прощения, ошибся, Мандельброт в 2.5 раза медленнее, не в 4.
И попробовал целочисленные переменные. Область C000-DFFF CBasic заполняет нулями примерно в 1.5 раза медленнее, чем bascom.
- - - Добавлено - - -
На всякий случай приведу версию компилятора, может есть новее:
CBASIC Compiler CB-80 21 May 83 Version 2.0
aGGreSSor
18.10.2025, 22:24
Прошу прощения, ошибся, Мандельброт в 2.5 раза медленнее, не в 4.
И попробовал целочисленные переменные. Область C000-DFFF CBasic заполняет нулями примерно в 1.5 раза медленнее, чем bascom.
- - - Добавлено - - -
На всякий случай приведу версию компилятора, может есть новее:
CBASIC Compiler CB-80 21 May 83 Version 2.0
У меня точно такая же. В предыдущем посте (https://zx-pk.ru/threads/9532-vektor-06ts-sredstva-razrabotki.html?p=1219452&viewfull=1#post1219452) добавил выжимку из вот этой простыни (https://github.com/user-attachments/assets/64212c6a-c707-4e4b-a0f9-e19e043753f0).
На самом деле я адаптировал пять игр разного размера под CBasic. Сказать что вообще не тормозят нельзя, но по крайней мере компиляции из их оригинальных бейсиков тормозят ещё больше (под эмулятором Вектора, 3МГц). Так что, пусть косвенно, но тесты гражданина davidly могу подтвердить. :)
Попробовал SIEVE.BAS из репозитория davidly. Увеличил число итераций до 100, чтобы время инициализации меньше влияло.
cbasic 2.0 - 296 секунд
bascom 5.3 - 335.5 секунд
Запускал в старом микродосе, в новых досах можно получить абсолютные цифры поменьше, но тут интереснее соотношение.
Для меня результат неожиданный, надо будет присмотреться к cbasic (для целочисленных программ), понять, где он быстрее bascom.
Проверил в цикле сложение и умножение целых. CBasic быстрее в сложении в 1.24 раза, в умножении в 2.7 раза! Полез смотреть, в cbasic процедура умножения развернутая, а в bascom цикл+тупизна. Впечатлен, но конечно cbasic более поздний и к тому времени было видно по крайней мере часть позиций, где можно обойти bascom. Очень жаль, что в cbasic нет одинарной плавучки.
Деление целых в cbasic у меня получилось в полтора с лишним раза быстрее, чем в bascom. С учетом сложения и умножения получается, что базовая целочисленная арифметика в cbasic быстрее bascom.
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot