commit c9a3425146ddf8dddc77366e02327ca27cb8d7bd from: Aleksey Ryndin date: Thu Aug 29 17:30:16 2024 UTC Add /forth/cf2023.gmi commit - c62d918af79ee0118f3122328878753144144a12 commit + c9a3425146ddf8dddc77366e02327ca27cb8d7bd blob - 5f253db376e12e4a91df69b8deb3cfee5032ec9f blob + 9da8884d1c505011f5b0b90f1c81643f21a067c4 --- .gitignore +++ .gitignore @@ -2,3 +2,6 @@ **/*.mp3 capsule/squat/reports/DDI0183G_uart_pl011_r1p5_trm.pdf capsule/squat/reports/SysReg_xml_v88A-2021-12.pdf +capsule/forth/How_to_program_in_colorForth_cf2023.pdf +capsule/forth/cf2023_colorForth.pdf + blob - b64a16669c282c930343efa49378b27ca8fb4dee blob + 5c7879d2e0beac4fde5861195b0068c8668233cb --- capsule/atom.xml +++ capsule/atom.xml @@ -8,8 +8,14 @@ continue continue@to.any-key.press - 2024-08-21T19:28:42.698364+00:00 + 2024-08-29T17:05:06.088655+00:00 + gemini://any-key.press/forth/cf2023.gmi + + colorForth: радикальный минимализм Чака Мура + 2024-08-29T17:05:06.088655+00:00 + + gemini://any-key.press/not_my_voice/Migursky/american-anarchism/ Курс лекций Александра Мигурского "Американский анархизм в лицах: социальная философия сквозь призму политики и культуры США XIX-XXI веков" (2022 год) blob - 63bbf4dbbd33b43f0f5864a3c14ad0c6970542b7 blob + bed668de0b9ee376a466b8533ad72302bed0ad92 --- capsule/forth/index.gmi +++ capsule/forth/index.gmi @@ -2,6 +2,7 @@ В этом разделе капсулы собраны материалы, которые прямо или косвенно относятся к языку программирования и интегрированной среде разработки Forth. +=> cf2023.gmi colorForth: радикальный минимализм Чака Мура => retro.gmi Retro: современный диалект Forth => introduction.gmi Моё знакомство с Forth blob - /dev/null blob + b16aa7c58f075b7793af833d3ca5d1f886f6e308 (mode 644) --- /dev/null +++ capsule/forth/cf2023.gmi @@ -0,0 +1,82 @@ +# colorForth: радикальный минимализм Чака Мура + +Продолжая разбираться в диалектах Forth я решил подробнее изучить colorForth. Это Forth-система, написанная Чаком Муром (автором оригинального Forth). Но погрузился я не в версию colorForth 2001/2002 года (которую писал непосредственно Чак Мур), а в её современное продолжение cf2023, написанное уже Howerd Oakford. + +=> https://colorforth.github.io/ Архив оригинальной colorForth, сохраненный на github pages +=> https://www.inventio.co.uk/colorForth_archive/Chuck_Moore_Website/index.html Архив оригинальной colorForth, сохраненный Howerd Oakford +=> https://www.inventio.co.uk/cf2023/ colorForth cf2023 + +Материалы по Forth в наше время найти довольно непросто, постоянно натыкаешься на умершие ссылки. Поэтому в своей капсуле я сохранил ключевую документацию по colorForth cf2023: + +=> http://www.inventio.co.uk/cf2023/cf2023_colorForth.pdf +=> cf2023_colorForth.pdf Копия документа, сохранённая в моей капсуле + +## Репозиторий cf2023.tg + +К сожалению, Howerd Oakford (автор оригинального) cf2023 подразумевает, что сборка и запуск кода будет происходить на Windows машине. Плюс в оригинальном репозитории много файлов, которые не нужны для первого знакомства с colorForth. Поэтому я собрал свой репозиторий: +=> cf2023.tgz + +Внутри архива я разметил файлы cf2023.nasm и cf2023Ref.img из оригинального репозитория. И добавил простые инструкции для сборки и запуска - Makefile. + +Что бы собрать cf2023.img необходим исходный код (файл cf2023.nasm) и файл cf2023Ref.img, из которого будут взяты бинарные данные (например: шрифты). Фактически cf2023Ref.img это эталонная сборка cf2023 (да, для сборки cf2023 нужен успешно собранный cf2023). + +Собирается cf2023 ассемблером NASM (Netwide Assembler): +=> https://www.nasm.us/ Netwide Assembler (NASM) +> This is the project webpage for the Netwide Assembler (NASM), an asssembler for the x86 CPU architecture portable to nearly every modern platform, and with code generation for many platforms old and new. + +Например на OpenBSD nasm можно поставить из пакетов (`pkg_add nasm`). + +Для запуска cf2023 предлагается использовать Bochs или QEMU. При упоминании Bochs у меня всплывают в памяти очень тяжёлые воспоминания, поэтому его я даже не пробовал. В Makefile я добавил запуск qemu, (вроде бы аккуратно) сконвертировав аргументы запуска с Windows. +На OpenBSD qemu так же можно поставить из пакетов (`pkg_add qemu`). + +При запуске `make` в директории cf2023 (при условии наличия в вашей системе nasm и qemu) сначала будет сформирован файл cf2023.img, который будет запущен на исполнение QEMU. + +## Что перед нами + +Перед нами радикально минималистичная "операционная система" (хотя многие, уверен, не стали бы называть ее ОС, тут зависит от ваших взглядов на этот термин). + +Вся система содержится в собранном nasm'ом img-файле (cf2023.img). Все последующие изменения, вносимые пользователем, так же будут записаны в cf2023.img (или на диск, куда был записан cf2023.img для запуска на реальной машине). + +### Клавиатура + +Клавиатура в colorForth для меня это самая большая "головная боль". В системе используется 27-клавишная раскладка клавиатуры Dvorak. Это значит, что нанесённые на вашу физическую клавиатуру символы не значат ничего :) Используется три группы клавиш: +=> colorForth_keyboard.jpg + +И существует около пяти вариантов того, на какие символы проецируются клавиши в настоящий момент. На экране (в правом нижнем углу) всегда есть подсказка какой режим маппинга сейчас активен. + +Я крайне рекомендую пройти шаги, описанные в документе "How to program in colorForth cf2023". После того, как этот документ провёл меня "за руку" по простейшим операциям, в моей голове сложилась система применения и переключения раскладки клавиатуры в colorForth. +=> http://www.inventio.co.uk/cf2023/How_to_program_in_colorForth_cf2023.pdf How to program in colorForth cf2023 +=> How_to_program_in_colorForth_cf2023.pdf Копия документа, сохранённая в моей капсуле + +### Исходный код + +Когда я назвал colorForth радикально минималистичной ОС я имел ввиду, например, то, что в ней нет файловой системы. Вместо этого только набор из парных блоков кода, у которых вместо имени есть только свой порядковый номер. Это чем-то похоже на сектора диска, но каждый блок занимает 1024 байта и блоки организованы парами. Принято, что чётные блоки содержат код, а парные им нечётные блоки содержат текстовые комментарии. Блок с комментариями так же называют "теневым" ("shadow block"). Кроме того, если блок кода начинается с комментария "App: " (без кавычек), то считается, что такой блок содержит приложение (приложения перечислены в утилите colorForth explorer, запускаемой словом xx). + +Но когда я говорю "код" или "комментарий" это не значит, что блок содержит текст в одной из привычных современному пользователю кодировок. colorForth пишет (и читает) исходный код в собственном строго структурированном и упакованном формате. + +Каждый 1024-байтный блок разделён на 256 32-битных значений. Как и в любом Forth, в colorForth единицей выполнения является скомпилированное слово ("word"). В 32-битных значении блока, с которого начинается слово, первые 4 бита определены под цвет (тот самый "color"). Например: +* красные слова являются началом определения нового слова (аналог ": " в классическом Forth) +* зеленые слова являются вызовом ранее определённых слов +* белые слова являются комментариями (аналог круглых скобок в классическом Forth) + +Затем, после 4 бит цвета, расположены непосредственны символы этого слова. Но символы упакованы кодом Хаффмана. +=> https://www.inventio.co.uk/colorForth_archive/Chuck_Moore_Website/chars.html Подробности о кодировании символов в colorForth + +Хотя, если быть более точным, то cf2023, использует алгоритм Шеннона - Фано для упаковки utf8. Но принцип сохраняется. + +Соответственно, каждое слово в colorForth занимает одно или более 32-битных значений, идущих подряд в блоке. +=> https://www.inventio.co.uk/colorForth_archive/Chuck_Moore_Website/parsed.html Подробности о структурировании слов + +И этот формат с одной стороны напрямую отображается и модифицируется редактором. А с другой стороны напрямую исполняется ядром colorForth. То есть такая организация отменяет разделение на исходный и скомпилилированный код. Радикальный минимализм. + +## P.S. Что c colorForth сегодня + +Чак Мур, судя по данным на сайте основанной им компании GreenArrays, уже лет десять живёт в дали от "цивилизации" в пустыне Невада: + +=> https://www.greenarraychips.com/home/news/index.php +> New GreenArrays Headquarters 1 May 2024: +> We have finished moving our offices and lab onto a very small farm in Northern Missouri. Thanks to the continuing audacious and life-enhancing achievements of men like Elon Musk and Jeff Bezos, we've concluded it is now practical to operate a high tech business in a beautiful, healthy rural area that is remote from the risks, costs, liabilities and often squalor found in many US cities. Chuck Moore, living in the Nevada desert, has been enjoying another version of such a working area for a decade. + +Оригинальная версия colorForth не менялась с начала 2000-х (то ли с 2001-го, то ли с 2002-го). + +Последний релиз наследника colorForth cf2023 (roomed zebra) состоялся, как нетрудно догадаться, в 2023 году. Но проект не выглядит заброшенным навсегда. Надеюсь, что Howerd Oakford ещё удивит нас новыми концепциями. blob - /dev/null blob + a12270112022409c302a4326d94cd97e9fbaa676 (mode 644) Binary files /dev/null and capsule/forth/cf2023.tgz differ blob - /dev/null blob + 606fdd18bb67d4918e10b3ed41f6b3b0051a57f5 (mode 644) Binary files /dev/null and capsule/forth/colorForth_keyboard.jpg differ