Проект retro-40 - фантазийного Форт ретро-компьютера (программа) 256x192, 16цветов, звук с некоторым количеством игр и демо
на базисе Ficl Форта (c SDL2) . Вдохновлённый Lambda/8, Jupiter ACE.
Собрался и запустился в LiveCD Linux Puppy, но пока не разбирался почему нет нормального отображения фонта.
но команды ввода слов Форта работают
Upd: При запуске собранного проекта под 32 Linux для правильного отображения вводимых символов с клавиатуры
необходимо подправить файл font.fs в следующих строчках (т.к. изначально font таблица хранения данных расчитана под 64-бит ячейку памяти при сборке под Linux64, если не изменять в этом моменте Си код api,c)
: @font ( c -- u ) CELLS 2 * font + @ ; : !font ( udg c -- ) CELLS 2 * font + ! ;
Snake игра изначально загружается,
а к примеру загрузить Форт Tetris программу и запустить
include tetris.fs tetris
Звуки в Тетрис игре довольно брутально воспринимаются. :)
P.S. В представленных играх и демо проекта, есть и рейтрейсинг по типу игры Вольфeнштейн и какая то стрелялка и бродилка по типу Марио и ещё некоторые демо и программы.
Шрифт 6x4 конечно это хардкорный выбор в этом проекте. :)
но этому есть и логическое объяснение. Раньше в Форт широко использовалось хранение программы в виде блоков (размером 1024 байт) в непрерывном пространстве памяти и сбрасываемых или загружаемых с диска
(т.е. это и был вариант хранения данных без файловой системы). По номеру блока можно было считывать как отдельный блок так и их последовательность. Для поддержки блоковой памяти даже был слой определённых слов и оставшийся отчасти и с принятием стандарта Forth94 ( где добавили работу с файлами в обычном их "Си" понимании). Так вот 1024 = 64 * 16 где 64 - это допустимое количество символов строки для размещения,
а 16 - соответственно строк в блоке данных.
т.е. выбрав шрифт 6х4 автор проекта, возможно, предполагал, что 256/4 = 64, а 192/6= 32 что по "ширине" как раз соответствует размеру блока, а 32 - в два раза больше его "высоты" (т.е. возможность для отображения сразу двух 1024-х байт стандартных Форт блоков)
В некоторых Форт системах до сих пор можно встретить файлы с .scr расширением как бы обозначающих, что в них то как раз и хранится программа в формате 1024-х байт кратности блоков.
И соответственно есть простые утилиты на Форт для конвертации их в текст и обратно по тексту в блоки.
Фонт вероятно может быть выбран и другой для вывода текста т.к. само окно программы большого размера при запуске, т.е. к примеру уложить символ шрифта в 8x8 матрицу.
Проект, вероятно, собирается и под Windows, но это не проверял.
Сохранение образа созданной игры - по идее должнa быть стандартная возможность для сохранения и запуска их как автономного приложения т.к. используется полноценная Форт система.
Сам Ficl достаточно зрелая Форт система и с включением, в частности, какой то объектной системы и применялся в загрузчиках ОС FreeBSD.
коммиты в проект в диапазоне 2018 - 2019 годов.
UPD: Сообщение с другого форума по реализации 3D бродилки для Retro-40
P.S. Ещё сообщение по бродилке от её автора
Скомпилировал саму бродилку под win32, но работает и в winxp/win10, а также в ubuntu+wine, весит аж 6K, но можно и меньше, если порядок в коде навести :)
http://totalvacuum.ru/tiny3dgl.zip
Управление кнопками awd
Рисуем через opengl: кадры попиксельно формируем в массиве, а затем скармливаем массив в opengl через glDrawPixels. Чем-то похоже на забивание гвоздей электронным микроскопом, но главное, что работает... :)
Чтобы оценить частоту кадров, после каждой отрисовки сцены делаю декремент цвета пола, таким образом цвета постоянно бегают в цикле от 255 до 0. На стационарном компьютере с win7 и на ноутбуке с win10 в районе 50fps получается для разрешения 512x384, а если поставить 256x176, то полный цикл по цветам в районе секунды занимает, т.е. примерно 256fps. Даже на крохотном и неторопливом sony vayo p-19 с winxp примерно 5fps@512x384 и 25fps@256x176 получается... :)
Причем вся сцена (~200K точек) вычисляется на чистом форте, из asm там только базовые примитивы и прокладки для win. Да и в скомпилированном exe-шнике из 6K примерно 2K занимают импорт и прочая виндовая шелуха... Т.е. довольно-таки шустро и компактно получается. :)
ESP32FORTH vs Python BENCHMARKS Jason C-J Tay Forth2020 Zoom #21
Очень маленький "Форт" на Си примерно в 100 строк
Вариант реализации исполнения слов "Форт" языка на Си
gcc forth.c -o forth
P.S. Можно расширить до полноценной Форт системы.
А, этот проект -mcForth байт-кодовое построение (C-Forth)
с помощью gforth собирается: make bootstrap.
FORTH2020 Zoom Meetings Presentations
Обновлена информацией с последней Zoom тусовки "Еврофортёров"
хочу содержимое всех регистров именно моего камня STM32 через уарт записать в некий файл и вдумчиво его изучить.
Как рабочий вариант - использовать какой нибудь Форт (Forth) для STM32.
К примеру использовать народный Mecrisp-Stellaris как в этом видео
Mecrisp Forth on STM32 Microcontroller (blue pill)
или менее народные VFX Forth, SwiftForth and other ...
на базисе Mecrisp и Cube Mecrisp-Cube
http://totalvacuum.ru/sky3d.htm
Здесь более традиционный Форт в том смысле, что интерпретирует входной текст, компилируя на лету в словарь. И immediate create does> есть :)
При этом весит html всего 10K: и реализация Форта на JavaScript и исходный код 3D-бродилки
http://totalvacuum.ru/spectrum.htm
здесь рисует спектр сигнала (смешаны 2 синусоиды, которые бегают по частоте, а одна из них еще и по амплитуде), а сам Форт заточен под реализацию FFT: в стеке комплексные числа
KPG
`f=16+f;if(f>192)f=192;` — это типа inline assembler?
nbkolchin
> `f=16+f;if(f>192)f=192;` — это типа inline assembler?
Вероятно, похоже на прямую вставку JS кода в программе. :)
P.S. Ещё один минимальный Форт на Си в одном файле.
https://gist.github.com/lbruder/10007431
Чтобы мозги не ржавели и не покрылись ржавчиной.
Пара познавательных видосиков русскоязычных преподавателей в топик, если читать книги в целом не комильфо. :)
1. Системы реального времени (СРВ, RTS). Лекция. Язык Forth (Shared March 10, 2022)
(Автор только ошибся - в Фортe и стандарте есть локальные переменныe)
2. Операционные системы - Система Forth 17.12.21
P.S. т.е. где то Форт или его основы понимания дают и в курсе операционных систем.
Встретился и такой проект запуска ядра Forth64 с "дискетки" на ПК.
Вполне запустился с помощью Grub на i5 с внешнего SSD-USB.
(собрал этот проект и в Linux)
Правда до старта консоли образуется "большая" пауза т.к. не предназначены современные процессоры для пережовывания Форт Косвенного шитого кода. :)
(по примерному варианту представленному в видео 2)
Форт на ассемблере Fasm (32) + Forth с примерами интерфейсных окон на GTK+
take gtk examples
P.S. При пересборке системы исправил команду lea ecx, [-1*edi+1] на lea ecx, [edi+1]
т.к. почему то Fasm она не понравилась, в строке 1121 файла csp4th-core.asm (может и не правильная такая правка в этом коде)
и переставил ключи сборщика -ldl в конец строки gcc в Makefile
KPG
> т.к. почему то Fasm она не понравилась,
Вoт не поверите! Мне она тоже не нравится!!!
(может подразумевается макрос, типа «neg edi ;; lea ecx,[edi+1] ;; neg edi»???
Однако появляются такие проекты.
Проект в развитии.
Dusk OS
Dusk OS — это 32-битный Forth и старший брат Collapse OS. Его основная цель — быть максимально полезным на первом этапе цивилизационного коллапса, то есть, когда мы уже не можем производить современные компьютеры, но все еще существует много современных компьютеров.
Он делает это, агрессивно отдавая приоритет простоте за счет неортодоксальных ограничений.
Dusk OS вносит новшества (ну, будет вводить новшества), имея компилятор «почти C», позволяющий использовать код UNIX C с помощью скромных усилий по портированию, чтобы достичь своих целей и оставаться верным своим проектным ограничениям с минимальными усилиями.
И такой новый проект :)
Armageddon
Создание языка программирования из ничего, т. е. развитие, управляемое зомби-апокалипсисом.
Язык программирования, полностью определенный в DEBUG.COM.
Представьте, что Землю уничтожают зараженные вирусом зомби. Техника в основном разрушена. Вам отчаянно нужно найти компьютер, чтобы разработать лекарство от вируса. Вы нашли убежище в заброшенном музее. Единственный доступный компьютер — 16-битный IBM AT 80286 с установленной на нем DOS. На этой машине нет ни интерпретатора языка программирования, ни компилятора. Вы нашли программу под названием DEBUG.COM размером около 10 КБ. Весь бинарник умещается в 2-3 QR-кода.
У вас нет другого выбора, кроме как построить язык программирования в отладчике, вводя биты прямо в память компьютера и выгружая результат на диск.
Вы начинаете определять FORTH. Пишите примитивы и внутренний интерпретатор на ассемблере, раскладываете в памяти структуру словаря. Затем вы компилируете текстовый интерпретатор и определяющие слова на бумаге, затем вводите каждый байт один за другим. Затем вы можете написать структуры управления потоком на FORTH.
После того, как все заработает, следующим шагом будет написание метакомпилятора и создание нового, более мощного FORTH из оригинальной версии.
...
Приключение начинается...
Конечно, для запуска Форт лучше всего подходят Форт процессоры, которых на рынке ещё нет и это не есть хорошо, но пытливые умы работают и над этим в разных вариантах, к примеру, и разрабатывая Форт прцессор в ограничении 16-ти базовых команд (4-е бит на команду).
Математики из Иваново тоже подключились и представили
Программу поиска Fort-программы по тестам
P.S. Недавно разместил ещё пост на roboforum.ru в топике про Форт для роботов , вспомнив, что и там у меня есть аккаунт. :)
KPG
> Конечно, для запуска Форт лучше всего подходят Форт процессоры, которых на
> рынке ещё нет и это не есть хорошо, но пытливые умы работают и над этим в
> разных вариантах, к примеру, и разрабатывая Форт прцессор в ограничении 16-ти
> базовых команд (4-е бит на команду).
Форт-процессоры. R65F11 и R65F12, созданные Rockwell International Corp., представляют собой восьмиразрядные процессоры, размещающие 133 Форт-слова на одном кристалле ПЗУ. Вспомогательные кристаллы ПЗУ содержат дополнительные слова Форта, полезные для создания программного обеспечения. Семейство МА2000 National Semiconductor Corp. состоит из набора модулей с интерфейсом через стек, формирующих в совокупности полный автономный Форт-компьютер. Семейство высокоскоростных процессоров Novix NC4000 представляет собой Форт-кристаллы, в которых команды Форта высокого уровня выполняются за один такт.
(с) книжка от Броуди от тыща девятьсот восемьдесят какого-то года.
40 лет уж почти прошло, а "форт-процессоров" на рынке всё нет, и пытливые умы над этим всё работают.
Sbtrn. Devil
> 40 лет уж почти прошло, а "форт-процессоров" на рынке всё нет, и пытливые умы
> над этим всё работают.
Ну, прямо сказать, что нет - это для покупки на том же Чип и Дип магазине для использования в составе "Ардуино-Форт".
Из ещё живых MISC (используемых в каких то проектах) можно и вспомнить RTX-2010 - полетевшего в составе зонда к метеориту Герасименко-Чюлюмова или тот же GA144 или ранее выпускаемый Atmel 4-ёх битный контроллер Marc4.
у нас тоже освоен один из K1894 линейка, в Белорусском Интеграле осталась линейка Дофин процессоров (K1881 сейчас)
P.S. 'Неспроста" их нет на рынке даже в плане конкуренции по ряду присутвующим им характеристикам с RISC, CISC. :)
и разработчики для использования Форт реализуют его в рамках традиционных архитектур на всевозможных инструментальных средствах и для разных операционных систем или автономных решениях.
R65F11 и R65F12 использовал ядро 6502 и не мог напрямую с ним конкуриовать на вычислительных задачах. Это как, к примеру, запускать amForth, FlashForth в рамках Arduino-AVR
Хотя и такие фан проекты делают Fignition
Собираем 8-битный компьютер: как уменьшить количество микросхем до шести
Sbtrn. Devil
https://bernd-paysan.de/b16.html - Утверждается, что использовался для управления питанием в каком-то из iPhone.
Ну и разумеется 144-ядерник от https://www.greenarraychips.com/
Вся эта байда имеет смысл, только если речь идёт о решениях требующих очень низкого энергопотребления. Других преимуществ у них нет от слова совсем.