Forth http://www.fforum.winglion.ru/ |
|
ef \ esoteric forth \ http://www.fforum.winglion.ru/viewtopic.php?f=40&t=3244 |
Страница 4 из 15 |
Автор: | Hishnik [ Пт сен 13, 2019 02:02 ] |
Заголовок сообщения: | Re: ef \ esoteric forth \ |
KPG писал(а): Есть такой проект делающийся на средства краудфандингa ZX-Spectrum Next (спектрум совместимый компьютер на FPGA с наличием разных плюшек, как HDMI, SD, частоты процессора + 7, 14, 28 МГц ...) Winglion такое делал на Альтере в начале 2000-х. Спринтер. Графика от Doom на Z80 (с ускорителем в ПЛИС) впечатляла. |
Автор: | Total Vacuum [ Чт июн 18, 2020 16:57 ] |
Заголовок сообщения: | Re: ef \ esoteric forth \ |
Продолжаем разговор... Перевел с tasm на fasm, выбросил кое-что лишнее, теперь весит 1412 байт, цель (1024 байта) еще далеко, но свет в конце тоннеля уже виден Код: % c \ core \ % s \ stdio \ \ a push addr (label) b % s hex (byte) c % s putc d display 'h' e encode f [ ] file g % s fgetc h % s hex i [ ] label index j jmp k case l [ ] token length m newline n next token o % s fopen p pass q [ ] quick search table r ret s % s puts t [ ] token u update token string v verify w write label: x % s fclose y yet another char z jz \ : k \ case \ q , = ; : y \ yet another char \ f @ g # q . ; : u \ update token string \ q , l @ t + ! l @ 1+ l ! ; : n \ next token \ 0 l ! 1 ( 1 ( y # '!' < & ) '\' k # ( y '\' - ) ) u '"' k '`' k ''' k # { y u _ } | | ( t , y u - ) t , ; : m \ newline \ 9 1+ c ; : d \ display 'h' \ 'h' c ; : w \ write label: \ d h ':' c ; : a \ push addr (label) \ i @ # 1+ i ! ; : v \ verify \ i @ w e a ; : r \ ret \ "ret" s m ; : j \ jmp \ "jmp h" s h m ; : z \ jz \ i @ "je h" s h a ; : e \ encode \ q . ':' k { 0 n # # # j d w n ';' - ( t , e n ';' - ) r w q + . ~ '%' k { n _ t p ~ ''' k { t "call h" s m 1+ , "db " s b d ~ '"' k { t ';' e "db " s s ",0" s ~ '`' k { t # l @ + 1- 0 $ . 1+ s ~ '{' k { '\' v _ z ~ '~' k { i @ j w a ~ '}' k { w ~ '(' k { '\' v z ~ ')' k { $ j w ~ '[' k { ' ' v z ~ ']' k { $ j w '_' e ~ q , "call hh" s h } } } } } } } } } } } } m ; : p \ pass \ f @ $ o f ! n ( t , e n ) f @ x f ! ; '~' 3 + # [ # q + # . ] # # # 1- , + 0 $ . 1+ p r 'g' - [ # 'a' + # q + , { # d w "call v" s m "db " s b d m ~ _ } ] Валяется тут: http://totalvacuum.ru/EF/00000005.zip |
Автор: | mOleg [ Пт июн 19, 2020 20:26 ] |
Заголовок сообщения: | Re: ef \ esoteric forth \ |
Уберите пробельные символы, и будет вообще атас! |
Автор: | Hishnik [ Пт июн 19, 2020 22:50 ] |
Заголовок сообщения: | Re: ef \ esoteric forth \ |
Даже если ничего не убирать, чем-то похоже на Фокал. |
Автор: | Total Vacuum [ Сб июн 20, 2020 21:54 ] |
Заголовок сообщения: | Re: ef \ esoteric forth \ |
mOleg писал(а): Уберите пробельные символы, и будет вообще атас! Там в архиве есть то же самое, но без пробелов (файл efxtest.ef): Код: %c%s:kq,=;:yf@g#q.;:uq,l@t+!l@1+l!;:n0l!1(1(y#'!'<&)'\'k#(y'\'-) )u'"'k'`'k'''k#{yu_}||(t,yu-)t,;:m91+c;:d'h'c;:wdh':'c;:ai@#1+i! ;:vi@wea;:r"ret"sm;:j"jmp h"shm;:zi@"je h"sha;:eq.':'k{0n###jdwn ';'-(t,en';'-)rwq+.~'%'k{n_tp~'''k{t"call h"sm1+,"db "sbd~'"'k{t ';'e"db "ss",0"s~'`'k{t#l@+1-0$.1+s~'{'k{'\'v_z~'~'k{i@jwa~'}'k{ w~'('k{'\'vz~')'k{$jw~'['k{' 'vz~']'k{$jw'_'e~q,"call hh"sh}}}}} }}}}}}}m;:p f@$of!n(t,en)f@xf!;'~'3+#[#q+#.]###1-,+0$.1+pr'g'-[# 'a'+#q+,{#dw"call v"sm"db "sbdm~_}] Компилируется в то же самое и так же точно работает... |
Автор: | Total Vacuum [ Сб июн 20, 2020 22:04 ] |
Заголовок сообщения: | Re: ef \ esoteric forth \ |
Hishnik писал(а): Даже если ничего не убирать, чем-то похоже на Фокал. Звучит как грязное ругательство... Скорее уж на brainfuck похоже... Кстати, у меня где-то есть ядро brainfuck размером 60 с хвостиком байт, если к этом ядру дописать в хвост исходник на brainfuck (в командной строке пишем copy bfcore.com+source.bf), то получается рабочий файл, т.е. фактически компиляция без компилятора... Если найду, выложу... Я хочу такой же трюк с esoteric forth проделать... |
Автор: | KPG [ Ср июн 24, 2020 05:44 ] |
Заголовок сообщения: | Re: ef \ esoteric forth \ |
mOleg писал(а): Уберите пробельные символы, и будет вообще атас! В этом проекте Arduino-Shell так передаются строки Форт-букв (команд) на выполнение. Названия букв-команд сопоставлены с Форт-словами, но по другим правилам, чем в ef \ esoteric forth \. |
Автор: | KPG [ Пт июн 26, 2020 01:10 ] |
Заголовок сообщения: | Re: ef \ esoteric forth \ |
А, в этом проекте Форта для Attiny85 придумали использовать код-морзе в качестве ввода/вывода команд tiny-morse-forth (проект в начальной фазе разработки) P.S. Есть и декодер морзе Morse decoder for ATtiny13A подцепить дисплей по I2C и можно тренироваться в наборе "Форт-символов и программ" азбукой морзе. поисковый запрос "morse avr"на Github |
Автор: | Total Vacuum [ Вт июн 30, 2020 15:36 ] |
Заголовок сообщения: | Re: ef \ esoteric forth \ |
KPG писал(а): В этом проекте Arduino-Shell так передаются строки Форт-букв (команд) на выполнение. Названия букв-команд сопоставлены с Форт-словами, но по другим правилам, чем в ef \ esoteric forth \. Не совсем, в esoteric forth зарезервированы только небуквенные символы и цифры... А все буквы a-z свободны, пользователь может использовать их по своему усмотрению... |
Автор: | Total Vacuum [ Вт июн 30, 2020 15:55 ] |
Заголовок сообщения: | Re: ef \ esoteric forth \ |
KPG писал(а): А, в этом проекте Форта для Attiny85 придумали использовать код-морзе в качестве ввода/вывода команд tiny-morse-forth (проект в начальной фазе разработки) Это шедевр Отлично подойдет для тех, у кого на компьютере из устройств ввода только телеграфный ключ, а из устройств вывода - светодиод... Будете смеяться, но идея esoteric forth родилась в тот момент, когда мне пришлось допиливать прибор, у которого не оказалось свободных портов для отладки... В наличии был лишь экран с плохоньким (резистивным) тачскрином и 3 кнопки... В тот момент подумалось, что для таких ситуаций неплохо иметь на борту предельно лаконичный язык... И максимально простой в реализации... А что может быть проще Форта? Только упрощенный Форт... Прибор в итоге так и не пошел в серию, а для отладки соорудили программный UART через GPIO... Но идея esoteric forth засела где-то в подсознании... |
Автор: | Total Vacuum [ Ср июл 08, 2020 17:11 ] |
Заголовок сообщения: | Re: ef \ esoteric forth \ |
KPG писал(а): В этом проекте Arduino-Shell так передаются строки Форт-букв (команд) на выполнение. Названия букв-команд сопоставлены с Форт-словами, но по другим правилам, чем в ef \ esoteric forth \. Набросал тут на досуге... Код: IMPORT c ( core ) IMPORT s ( stdio ) VAR f ( file ) VAR i ( label index ) 2048 ARRAY t ( token ) : k ( c -- f ) ( case ) t C@ = DUP IF 0 t ! THEN ; : y ( -- c ) ( yet another char ) f @ g DUP t ! ; : n ( -- c ) ( next token ) BEGIN BEGIN y DUP '!' < & 0= UNTIL '(' k DUP IF BEGIN y ')' = UNTIL THEN 0= UNTIL t C@ ; : m ( -- ) ( newline ) 9 1+ c ; : q ( -- ) ( print 'h' ) 'h' c ; : w ( n -- ) ( write label: ) q h ':' c ; : a ( -- n ) ( push label ) i @ DUP 1+ i ! ; : v ( -- n ) ( verify ) i @ w a ; : r ( -- ) ( ret ) "ret" s m ; : j ( n -- ) ( jmp ) "jmp h" s h m ; : z ( n -- ) ( jz ) '\' e "je h" s h ; : l ( -- ) ( call ) "call hh" s ; : d ( -- ) ( db ) "db " s ; : e ( c -- ) ( encode ) t C! ':' k IF 0 n DUP DUP DUP j q w n ';' - IF BEGIN t C@ e n ';' = UNTIL THEN r w t + C! 0 t C! THEN 'I' k DROP 'T' k DROP 'E' k DROP 'N' k DROP 'D' k DROP 'R' k DROP 'P' k DROP 'A' k DROP 'W' k DROP 'G' k DROP 'M' k IF n DROP n DROP n DROP n DROP n DROP t p THEN ( IMPORT ) ''' k IF ' ' e d y b q y DROP 0 t C! THEN '"' k IF ';' e d '"' c BEGIN y DUP c '"' = UNTIL ",0" s 0 t C! THEN '`' k IF y '`' - IF BEGIN t C@ c y '`' = UNTIL THEN 0 t C! THEN 'F' k IF v DROP i @ z a THEN ( IF ) 'H' k IF w THEN ( THEN ) 'B' k IF v THEN ( BEGIN ) 'L' k IF 'O' e z THEN ( UNTIL ) 'C' k IF 'C' n DROP '@' k IF DROP ',' THEN '!' k IF DROP '.' THEN e THEN t C@ IF t C@ l h THEN m 0 t C! ; : p ( addr -- ) ( pass ) f @ SWAP o f ! ( open ) n IF BEGIN t C@ e n 0= UNTIL THEN f @ x f ! ( close ) ; '~' 3 + DUP BEGIN 1- DUP t + DUP C! DUP 0= UNTIL DROP DUP DUP DUP 1- C@ + 0 SWAP C! 1+ ( argv ) p r 'g' - BEGIN 1- DUP 'a' + DUP t + C@ IF DUP q w l m d b q m DUP THEN DROP DUP 0= UNTIL DROP В первом приближении выглядит как программа, написанная на каком-то диалекте Форта, тем не менее, это тот же самый esoteric forth, но в профиль... По традиции транслирует сам себя в asm. Делает вид, что "понимает" слова ( ) IMPORT VAR ARRAY 0-9 a-z : ; + - * / < = > & | ^ DUP SWAP PICK DROP @ ! C@ C! "string" 'c' `asm` IF THEN BEGIN UNTIL, однако при ближайшем рассмотрении видно, что все длинные имена отлавливаются по одной букве (выделено жирным), а остальные буквы игнорируются... Оно тут: http://totalvacuum.ru/EF/pseudo.zip |
Автор: | KPG [ Вс сен 27, 2020 16:32 ] |
Заголовок сообщения: | Re: ef \ esoteric forth \ |
sectorforth Код: sectorforth is a 16-bit x86 Forth that fits in a 512-byte boot sector.
Inspiration to write sectorforth came from a 1996 Usenet thread (in particular, Bernd Paysan's first post on the thread). |
Автор: | KPG [ Ср янв 13, 2021 16:00 ] |
Заголовок сообщения: | Re: ef \ esoteric forth \ |
Похоже на местную разработку. PlanckForth: Bootstrapping an Interpreter from Handwritten 1KB Binary |
Автор: | KPG [ Чт июн 17, 2021 22:45 ] |
Заголовок сообщения: | Re: ef \ esoteric forth \ |
Хабр: Разместить FORTH в 512 байтах Статья из блога проекта miniforth - Форта в 512-байт загрузочного сектора |
Автор: | KPG [ Ср июл 07, 2021 22:27 ] |
Заголовок сообщения: | Re: ef \ esoteric forth \ |
ALForth |
Страница 4 из 15 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |