Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Пт июл 10, 2020 18:30

...
Google Search
Forth-FAQ Spy Grafic

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 56 ]  На страницу Пред.  1, 2, 3, 4
Автор Сообщение
 Заголовок сообщения: Re: ef \ esoteric forth \
СообщениеДобавлено: Пт сен 13, 2019 02:02 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6942
Благодарил (а): 17 раз.
Поблагодарили: 112 раз.
KPG писал(а):
Есть такой проект делающийся на средства краудфандингa ZX-Spectrum Next
(спектрум совместимый компьютер на FPGA с наличием разных плюшек, как HDMI, SD, частоты процессора + 7, 14, 28 МГц ...)

Winglion такое делал на Альтере в начале 2000-х. Спринтер. Графика от Doom на Z80 (с ускорителем в ПЛИС) впечатляла.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: ef \ esoteric forth \
СообщениеДобавлено: Чт июн 18, 2020 16:57 
Не в сети
Аватара пользователя

Зарегистрирован: Ср июл 03, 2019 11:10
Сообщения: 98
Откуда: Москва
Благодарил (а): 17 раз.
Поблагодарили: 0 раз.
Продолжаем разговор... :D

Перевел с tasm на fasm, выбросил кое-что лишнее, теперь весит 1412 байт, цель (1024 байта) еще далеко, но свет в конце тоннеля уже виден :D
Код:
% 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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: ef \ esoteric forth \
СообщениеДобавлено: Пт июн 19, 2020 20:26 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5012
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 21 раз.
Поблагодарили: 58 раз.
Уберите пробельные символы, и будет вообще атас!

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: ef \ esoteric forth \
СообщениеДобавлено: Пт июн 19, 2020 22:50 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6942
Благодарил (а): 17 раз.
Поблагодарили: 112 раз.
Даже если ничего не убирать, чем-то похоже на Фокал.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: ef \ esoteric forth \
СообщениеДобавлено: Сб июн 20, 2020 21:54 
Не в сети
Аватара пользователя

Зарегистрирован: Ср июл 03, 2019 11:10
Сообщения: 98
Откуда: Москва
Благодарил (а): 17 раз.
Поблагодарили: 0 раз.
mOleg писал(а):
Уберите пробельные символы, и будет вообще атас!

:D Там в архиве есть то же самое, но без пробелов (файл 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~_}]

Компилируется в то же самое и так же точно работает... :D


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: ef \ esoteric forth \
СообщениеДобавлено: Сб июн 20, 2020 22:04 
Не в сети
Аватара пользователя

Зарегистрирован: Ср июл 03, 2019 11:10
Сообщения: 98
Откуда: Москва
Благодарил (а): 17 раз.
Поблагодарили: 0 раз.
Hishnik писал(а):
Даже если ничего не убирать, чем-то похоже на Фокал.

Звучит как грязное ругательство... :D Скорее уж на brainfuck похоже... :) Кстати, у меня где-то есть ядро brainfuck размером 60 с хвостиком байт, если к этом ядру дописать в хвост исходник на brainfuck (в командной строке пишем copy bfcore.com+source.bf), то получается рабочий файл, т.е. фактически компиляция без компилятора... Если найду, выложу... Я хочу такой же трюк с esoteric forth проделать... :D


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: ef \ esoteric forth \
СообщениеДобавлено: Ср июн 24, 2020 05:44 
Не в сети

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 1201
Благодарил (а): 3 раз.
Поблагодарили: 44 раз.
mOleg писал(а):
Уберите пробельные символы, и будет вообще атас!


В этом проекте Arduino-Shell
так передаются строки Форт-букв (команд) на выполнение.

:o Названия букв-команд сопоставлены с Форт-словами, но по другим правилам, чем в ef \ esoteric forth \.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: ef \ esoteric forth \
СообщениеДобавлено: Пт июн 26, 2020 01:10 
Не в сети

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 1201
Благодарил (а): 3 раз.
Поблагодарили: 44 раз.
А, в этом проекте Форта для Attiny85 придумали использовать код-морзе в качестве ввода/вывода команд :)
tiny-morse-forth (проект в начальной фазе разработки)

P.S. Есть и декодер морзе Morse decoder for ATtiny13A
подцепить дисплей по I2C и можно тренироваться в наборе "Форт-символов и программ" азбукой морзе. :)

поисковый запрос "morse avr"на Github


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: ef \ esoteric forth \
СообщениеДобавлено: Вт июн 30, 2020 15:36 
Не в сети
Аватара пользователя

Зарегистрирован: Ср июл 03, 2019 11:10
Сообщения: 98
Откуда: Москва
Благодарил (а): 17 раз.
Поблагодарили: 0 раз.
KPG писал(а):
В этом проекте Arduino-Shell
так передаются строки Форт-букв (команд) на выполнение.

:o Названия букв-команд сопоставлены с Форт-словами, но по другим правилам, чем в ef \ esoteric forth \.

:D Не совсем, в esoteric forth зарезервированы только небуквенные символы и цифры... А все буквы a-z свободны, пользователь может использовать их по своему усмотрению... :)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: ef \ esoteric forth \
СообщениеДобавлено: Вт июн 30, 2020 15:55 
Не в сети
Аватара пользователя

Зарегистрирован: Ср июл 03, 2019 11:10
Сообщения: 98
Откуда: Москва
Благодарил (а): 17 раз.
Поблагодарили: 0 раз.
KPG писал(а):
А, в этом проекте Форта для Attiny85 придумали использовать код-морзе в качестве ввода/вывода команд :)
tiny-morse-forth (проект в начальной фазе разработки)

Это шедевр :) Отлично подойдет для тех, у кого на компьютере из устройств ввода только телеграфный ключ, а из устройств вывода - светодиод... :D

Будете смеяться, но идея esoteric forth родилась в тот момент, когда мне пришлось допиливать прибор, у которого не оказалось свободных портов для отладки... В наличии был лишь экран с плохоньким (резистивным) тачскрином и 3 кнопки... В тот момент подумалось, что для таких ситуаций неплохо иметь на борту предельно лаконичный язык... И максимально простой в реализации... А что может быть проще Форта? Только упрощенный Форт... :D

Прибор в итоге так и не пошел в серию, а для отладки соорудили программный UART через GPIO... Но идея esoteric forth засела где-то в подсознании... :D


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: ef \ esoteric forth \
СообщениеДобавлено: Ср июл 08, 2020 17:11 
Не в сети
Аватара пользователя

Зарегистрирован: Ср июл 03, 2019 11:10
Сообщения: 98
Откуда: Москва
Благодарил (а): 17 раз.
Поблагодарили: 0 раз.
KPG писал(а):
В этом проекте Arduino-Shell
так передаются строки Форт-букв (команд) на выполнение.

:o Названия букв-команд сопоставлены с Форт-словами, но по другим правилам, чем в ef \ esoteric forth \.

:D Набросал тут на досуге...
Код:
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, но в профиль... :D
По традиции транслирует сам себя в asm. Делает вид, что "понимает" слова ( ) IMPORT VAR ARRAY 0-9 a-z : ; + - * / < = > & | ^ DUP SWAP PICK DROP @ ! C@ C! "string" 'c' `asm` IF THEN BEGIN UNTIL, однако при ближайшем рассмотрении видно, что все длинные имена отлавливаются по одной букве (выделено жирным), а остальные буквы игнорируются... :D
Оно тут: http://totalvacuum.ru/EF/pseudo.zip


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 56 ]  На страницу Пред.  1, 2, 3, 4

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы не можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
phpBB сборка от FladeX // Русская поддержка phpBB