Войти
ФлеймФорумПрограммирование

Язык Forth - зачем нужен, что можно делать на нём? (31 стр)

Страницы: 130 31 32 33 34 Следующая »
#450
(Правка: 23 июня 2022, 8:19) 23:42, 16 дек 2021

Проект 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 занимают импорт и прочая виндовая шелуха... Т.е. довольно-таки шустро и компактно получается. :)

Изображение
#451
2:37, 25 апр 2022

ESP32FORTH vs Python BENCHMARKS Jason C-J Tay Forth2020 Zoom #21

Запустить видео по клику - Как делать игрыЗапустить видео по клику - Как делать игры

#452
(Правка: 14:16) 13:52, 2 мая 2022

Очень маленький "Форт" на Си примерно в 100 строк

Вариант реализации исполнения слов "Форт" языка на Си

+ немного изменённый вариант

gcc forth.c -o forth

P.S. Можно расширить до полноценной Форт системы.

А, этот проект -mcForth байт-кодовое построение (C-Forth)
с помощью gforth собирается: make bootstrap.

#453
(Правка: 15:06) 15:04, 28 мая 2022

FORTH2020 Zoom Meetings Presentations

Обновлена информацией с последней Zoom тусовки "Еврофортёров"

#454
(Правка: 7:53) 7:44, 23 июня 2022

хочу содержимое всех регистров именно моего камня STM32 через уарт записать в некий файл и вдумчиво его изучить.

Как рабочий вариант - использовать какой нибудь Форт (Forth) для STM32.

К примеру использовать народный Mecrisp-Stellaris как в этом видео

Запустить видео по клику - Как делать игрыЗапустить видео по клику - Как делать игры

Mecrisp Forth on STM32 Microcontroller (blue pill)
или менее народные VFX Forth, SwiftForth and other ...

+ Один из комментариев под видео

на базисе Mecrisp и Cube Mecrisp-Cube

#455
11:37, 28 июня 2022


http://totalvacuum.ru/sky3d.htm

Здесь более традиционный Форт в том смысле, что интерпретирует входной текст, компилируя на лету в словарь. И immediate create does> есть :)
При этом весит html всего 10K:  и реализация Форта на JavaScript и исходный код 3D-бродилки

http://totalvacuum.ru/spectrum.htm

здесь рисует спектр сигнала (смешаны 2 синусоиды, которые бегают по частоте, а одна из них еще и по амплитуде), а сам Форт заточен под реализацию FFT: в стеке комплексные числа

#456
13:03, 28 июня 2022

KPG

`f=16+f;if(f>192)f=192;` — это типа inline assembler?

#457
(Правка: 13:31) 13:14, 28 июня 2022

nbkolchin
> `f=16+f;if(f>192)f=192;` — это типа inline assembler?
Вероятно, похоже на прямую вставку JS кода в программе. :)

P.S. Ещё один минимальный Форт на Си в одном файле.
https://gist.github.com/lbruder/10007431

#458
(Правка: 17:04) 16:47, 20 авг 2022

Чтобы мозги не ржавели и не покрылись ржавчиной.

Пара познавательных видосиков русскоязычных преподавателей в топик, если читать книги в целом не комильфо. :)

1. Системы реального времени (СРВ, RTS). Лекция. Язык Forth (Shared March 10, 2022)
(Автор только ошибся - в Фортe и стандарте  есть локальные переменныe)

Запустить видео по клику - Как делать игрыЗапустить видео по клику - Как делать игры

2. Операционные системы - Система Forth 17.12.21

Запустить видео по клику - Как делать игрыЗапустить видео по клику - Как делать игры

P.S. т.е. где то Форт или его основы понимания дают и в курсе операционных систем.

Встретился и такой проект запуска ядра Forth64 с "дискетки" на ПК.
Вполне запустился с помощью Grub на i5 с внешнего SSD-USB.
(собрал этот проект и в Linux)

eforth-x86-64bits

Правда до старта консоли образуется "большая" пауза т.к. не предназначены современные процессоры для пережовывания Форт Косвенного шитого кода. :)
(по примерному варианту представленному в видео 2)

#459
10:49, 21 авг 2022

cspForth

Форт на ассемблере 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

#460
19:49, 21 авг 2022

KPG
> т.к. почему то Fasm она не понравилась,
Вoт не поверите! Мне она тоже не нравится!!!
(может подразумевается макрос, типа «neg edi ;; lea ecx,[edi+1] ;; neg edi»???

#461
(Правка: 7:17) 6:47, 10 ноя 2022

Однако появляются такие проекты.
Проект в развитии.
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 в топике про Форт для роботов , вспомнив, что и там у меня есть аккаунт. :)

#462
0:49, 11 ноя 2022

KPG
> Конечно, для запуска Форт лучше всего подходят Форт процессоры, которых на
> рынке ещё нет и это не есть хорошо, но пытливые умы работают и над этим в
> разных вариантах, к примеру, и разрабатывая Форт прцессор в ограничении 16-ти
> базовых команд (4-е бит на команду).

Форт-процессоры. R65F11 и R65F12, созданные Rockwell International Corp., представляют собой восьмиразрядные процессоры, размещающие 133 Форт-слова на одном кристалле ПЗУ. Вспомогательные кристаллы ПЗУ содержат дополнительные слова Форта, полезные для создания программного обеспечения. Семейство МА2000 National Semiconductor Corp. состоит из набора модулей с интерфейсом через стек, формирующих в совокупности полный автономный Форт-компьютер. Семейство высокоскоростных процессоров Novix NC4000 представляет собой Форт-кристаллы, в которых команды Форта высокого уровня выполняются за один такт.

(с) книжка от Броуди от тыща девятьсот восемьдесят какого-то года.
40 лет уж почти прошло, а "форт-процессоров" на рынке всё нет, и пытливые умы над этим всё работают.

#463
(Правка: 3:30) 2:54, 11 ноя 2022

Sbtrn. Devil
> 40 лет уж почти прошло, а "форт-процессоров" на рынке всё нет, и пытливые умы
> над этим всё работают.

Ну, прямо сказать, что нет - это для покупки на том же Чип и Дип магазине для использования в составе "Ардуино-Форт".

Из ещё живых MISC (используемых в каких то проектах) можно и вспомнить RTX-2010 - полетевшего в составе зонда к метеориту Герасименко-Чюлюмова или тот же GA144 или ранее выпускаемый Atmel  4-ёх битный контроллер Marc4.

у нас тоже освоен один из K1894 линейка, в Белорусском Интеграле осталась линейка Дофин процессоров (K1881 сейчас)

P.S. 'Неспроста" их нет на рынке даже в плане конкуренции по ряду присутвующим им характеристикам с RISC, CISC. :)

и разработчики для использования Форт реализуют его в рамках традиционных архитектур на всевозможных инструментальных средствах и для разных операционных систем или автономных решениях.

Forth Chips

R65F11 и R65F12 использовал ядро 6502 и не мог напрямую с ним конкуриовать на вычислительных задачах. Это как, к примеру, запускать amForth, FlashForth в рамках Arduino-AVR

Хотя и такие фан проекты делают Fignition
Изображение

Собираем 8-битный компьютер: как уменьшить количество микросхем до шести

Запустить видео по клику - Как делать игрыЗапустить видео по клику - Как делать игры

#464
3:02, 11 ноя 2022

Sbtrn. Devil

https://bernd-paysan.de/b16.html  - Утверждается, что использовался для управления питанием в каком-то из iPhone.

Ну и разумеется 144-ядерник от https://www.greenarraychips.com/

Вся эта байда имеет смысл, только если речь идёт о решениях требующих очень низкого энергопотребления. Других преимуществ у них нет от слова совсем.

Страницы: 130 31 32 33 34 Следующая »
ФлеймФорумПрограммирование