nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 19 Apr 2024 17:22



Reply to topic  [ 85 posts ]  Go to page Previous  1, 2, 3, 4, 5, 6  Next
RFORTH 
Author Message
Devil

Joined: 26 May 2003 06:57
Posts: 859
Reply with quote
Интересный вариант форта. И если lsforth это тот же Кириллин-Клубович-Ноздрунов с прямым шитым кодом (описанный в их книге), то форт Шихова - это уже реализация с подпрограммным шитым кодом. До сих пор мне не встречался, по крайней мере на отечественных восьмибитках. Видимо никто не решился набивать дамп из журнала Радио. Сам он писал или содрал откуда - сказать сложно, но если Шихов был фортером, то и писал он его скорее всего на форте, иначе сложно объяснить постоянные CALL DROP / RET вместо JMP DROP в словах использующих верхний элемент стека, который находится в регистрах BC.

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

Данному форту нехватает очень многого, чтобы считаться фортом, соответствующему стандарту, но то, что это минимальное ядро форта - это неоспоримо.

Code:
L0810:
  MVI  D,08H            ;0810  16 08
  NOP                   ;0812  00
  POP  B                ;0813  C1
  POP  D                ;0814  D1
  RET                   ;0815  C9

Да, первую фиктивную словарную статью ты просмотрел :) Между прочим она играет важную роль в цикле INTERPRET. Обычно он бесконечный, но чтобы его закончить в конце текста, делают фиктивное слово, совпадающее с кодом символа в конце текста (в данном случае ноль), выполняемое IMMEDIATE, и делающее выход из INTERPRET (в данном случае POP D / RET).

_________________
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/


Last edited by b2m on 03 May 2020 09:50, edited 1 time in total.



03 May 2020 06:12
Profile WWW
Devil

Joined: 26 May 2003 06:57
Posts: 859
Reply with quote
Lavr wrote:
Компилируется без ошибок с совпадением всех контрольных сумм.
Работает под RAMFOS также, как оригинал.

А в других адресах? ;)

_________________
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/


03 May 2020 06:22
Profile WWW
Devil

Joined: 26 May 2003 06:57
Posts: 859
Reply with quote
Кстати, демонстрационная программа содержит некоторые недостающие части этого форта, а также полезные пояснения.

Там есть опечатки!!!
Quote:
: IMMEDIAT ' I - DUP CR 40 OR SWAP C! ;
: (KEY) R0 1+ ; СR .. (КЕТ) @ . (" МАШИННО ЗАВИСИМЫЙ АДРЕС ПОДПРОГРАММЫ ВВОДА = F803 "") CR
: (ENIT) R0 2+ 2+ ; CR .. (ENIT] @ . (" МАШИННО ЗАВИСИМЫЙ АДРЕС ПОДПРОГРАММ ВЫВОДА F809 "") CR
: (LAGT) (ENIT) 2+ ; CR CR .. (" АДРЕС НАЧАЛА ПОСЛЕДНЕГО СЛОВА В СЛОВАРЕ НАХОДИТСЯ В ЯЧЕЙКЕ "") (LAST) .

Удвоенные кавычки в конце строки "") тоже опечатка, нужен только один символ кавычек.

_________________
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/


03 May 2020 07:10
Profile WWW
Devil

Joined: 26 May 2003 06:57
Posts: 859
Reply with quote
b2m wrote:
Удвоенные кавычки в конце строки "") тоже опечатка, нужен только один символ кавычек.

З.Ы. Однако не факт.

Попробовал оба варианта:
(" TEST"") печатает текст, в стандарте вроде нужно писать ." TEST"
(" TEST") просто комментарий, в стандарте ( TEST )

_________________
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/


03 May 2020 09:46
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Lavr wrote:
Lavr wrote:
...а автор утверждает, что фактически стандарт FORTH 83, то вот ссылка на автора:
Язык Форт для "Радио-86РК". Н.Шихов, г.Козьмодемьянск, Республика Марий-Эл
И как он сам пишет - алгоритм у него несколько не такой, как в стандартных FORTH-ах.
Ну это подробнее лучше прочитать по ссылке выше, хотя там очень небрежный OCR... :-?
Эту статью автора много где в Интернете продублировали, но всюду - куча ошибок OCR,
заметных невооруженным глазом даже людям, далёким от FORTH-а, но знакомым с программированием.

Так что если кого этот вариант FORTH-а заинтересовал, читать лучше посматривая в сканы,
поскольку важное значение имеют точки, апострофы, кавычки и даже наличие пробелов в примерах.

Поэтому сканы "в студию" я тоже выкладываю:
Attachment:
Forth_RK86.part1.rar [1.39 MiB]
Downloaded 286 times
Attachment:
Forth_RK86.part2.rar [1.18 MiB]
Downloaded 291 times
(порезано rar-ом на 2 части из-за ограничений форума на размер вложения)

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

Ну и я сам сейчас по тексту и сканам проверяю, что делает этот FORTH, а чего не делает...

_________________
iLavr


03 May 2020 14:28
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
[offtop]
Lavr wrote:
Язык Форт для "Радио-86РК". Н.Шихов, г.Козьмодемьянск, Республика Марий-Эл
Если все обратили внимание, г.Козьмодемьянск приводит меня в эйфорию! :esurprised:
А зря я вообще насмешки пытался строить... город, как город...
город Козьмодемьянск, Республика Марий Эл - административный центр Горномарийского района

Кое-чем город Козьмодемьянск даже весьма знаменит! :roll:
Quote:
Город Козьмодемьянск по многим признакам очень похож на описываемый в романе Ильфа и Петрова "Двенадцать стульев" город Васюки. После долгих исследований романа (а таковые серьезно проводились и литературоведами, и любителями) статус Козьмодемьянска - Васюки был подтвержден, и эта идея стала серьезным увлечением козьмодемьянцев. Так был создан Музей сатиры и юмора им.Остапа Бендера.
[/offtop]

 P.S. Немножко про "город Козьмодемьянск"
Lavr wrote:
P.S. Немножко про "город Козьмодемьянск" - я думаю, вряд ли кто понял, в чем дело.
А дело в том, что статью Шихова я просматривал ещё в оригинале в 1995 году в
журнале "Радио", поскольку я этот журнал выписывал. "Просматривал" - поскольку
язык Форт меня тогда не интересовал. Ну и поскольку, как убедительно показал тут
один наш коллега, читаем мы не по буквам, а слова целиком
, то этот город у меня
прочитался тогда как КоСмодемьянск, и в памяти это отложилось.
С тех пор, когда мне встречалась эта статья, реакция была:"а... Шихов... город
КоСмодемьянск...". Человеку, выросшему в стране с городами Киров, Куйбышев и т.п.
это слово глаз совершенно не резало... Интересно, что когда я читал эту статью
уже внимательно здесь: http://www.danbigras.ru/RK86/Fort_RK/FORT_RK.html, как ни
странно, КоСмодемьянск опять остался КоСмодемьянском! :roll:
И только вот здесь https://subscribe.ru/archive/comp.soft.prog.forth/200506/17114028.html
я вдруг неожиданно четко увидел - КоЗЬмодемьянск! :esurprised:
Они что, глумятся? :o - такая у меня была первая реакция, тут-то я и полез в Гугл...
:wink:

_________________
iLavr


03 May 2020 14:54
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
День Радио я опять провёл с пользой и демонстрационную программу от Шихова
на его FORTH-е для "Радио-86РК" довёл-таки до ума! :kruto:

Да уж... пока наберешь демонстрационную программу от Шихова, весь FORTH
непеременно изучишь... :roll:
Тем более, что реально некоторые пробелы очень важны, а я работал в
ассемблерном редакторе "Специалиста_МХ", который любит удалять концевые
пробелы и вставлять символ табуляции в начале строки... :-?
Также выяснилась неприятная вещь, что FORTH от Шихова работает сугубо в
КОИ-7
, все символы старше 7FH он считает концом строки.

И конечно же меня больше волновало, работает ли сам FORTH, или таки есть
ошибки в набранном мной дампе.
Тем более, что некоторые фокусы FORTH-а меня поначалу очень озадачили...

Ниже на картинке - так он показывает числа 0F803H и 0F809H в HEX-виде :
Attachment:
FORTHPRG.gif
FORTHPRG.gif [ 12.33 KiB | Viewed 6947 times ]
Но в десятичном виде - это совершенно правильно (числа со знаком).

Также есть ошибки в самом оригинальном листинге:
Code:
: OCTAL 2 (BASE) C! ;
(" OCTAL УСТАНОВИТ ВОСЬМИРИЧНУЮ СИСТЕМУ СЧИСЛЕНИЯ ")

В тексте статьи есть такой же пример:
Code:
: OCTAL 8 (BASE) C! ;
(" OCTAL УСТАНОВИТ ВОСЬМИРИЧНУЮ СИСТЕМУ СЧИСЛЕНИЯ ")

В общем для всех, кто надумал приобщиться к FORTH-у на привычных нам
"ламповых" 8-битках, выкладываю архив с "правильными файлами":
Attachment:
FORTHR86.zip [75.85 KiB]
Downloaded 285 times

В архиве:
FORTHPR7.ASM - это в КОИ-7 - для тех, у кого "РК-86" или эмулятор -> 2100H;
FORTHPR8.ASM - это в КОИ-8 то же самое;
FORTHPRG.ASM - это в WIN-1251 то же самое;
FORTHPRG.rtf - это для эстетов: подсвечена латиница и цифры.
Шутка, конечно, но так я выявил много ошибок OCR. :wink:

FORTH86.ALL - а это для владельцев эмулятора "Специалиста_МХ" от Шевцова.

Здесь полный "фарш", плюс бонус - перекодировщик (в коллекцию Fifan-a).
Attachment:
FORTH_SP.gif
FORTH_SP.gif [ 4.4 KiB | Viewed 6947 times ]

Загружаем FORTH86.ALL, запускаем FORTH86.EXE и приобщаемся к FORTH-у... :lol:

Если всё промелькнуло очень быстро, делаем побольше задержку процессора:
(300...500H) после чего: COLD и [Enter].

И как там написано в конце цикла статей Шихова:"Желаю удачи!" :ebiggrin:

_________________
iLavr


07 May 2020 16:56
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Ну и, я думаю, материалы статей Н.Шихова в приличном качестве надо тоже здесь выложить.
На тот случай, когда у меня снова жесткий диск рухнет, или ноутбук прикажет долго жить... (щютка) :lol:
Attachment:
Язык Forth.zip [38.47 KiB]
Downloaded 300 times

Когда я новый для себя материал читаю, обычно делаю собственный "дайджест":
и читаю при этом внимательней, получается, и непонятные фразы рихтую...

Впрочем, Н.Шихова я сильно не правил, разве что слово "кладём" всюду по тексту
заменил на "заносим"... "кладём" - как-то глаз режет... :wink:

Ну и все примеры я на FORTH-е не проверял, скажу честно, хотя кое-что мне весьма
пригодилось при отладке демонстрационной программы.
А формат *.rtf - на тот крайний случай, когда и М$ Ворда нет...

_________________
iLavr


07 May 2020 17:35
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Я тут Интернет прошариваю частым бреднем в поисках примеров каких-либо законченных
и полезных программ на FORTH, чтобы посмотреть, как умные люди пишут хорошие программы
на нём. Но пока всё как-то безуспешно, как будто все фортеры вымерли... :osad:

Интересно, что сайтов по FORTH-у много, в 100 глоток FORTH хвалят, но путных примеров
законченных программ пока не встретил. Либо ссылки давно протухшие. :-?

Но по пути нашел исходники FORTH-а для 6502, вроде как даже фирменная версия от
Quote:
; FORTH INTEREST GROUP
; P.O. BOX 2154
; OAKLAND, CALIFORNIA


Если кому-либо интересно, то вот они эти исходники:
Attachment:
forth65.zip [32.91 KiB]
Downloaded 287 times

_________________
iLavr


09 May 2020 17:00
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Lavr wrote:
Попробую запустить под эмулятором "Специалиста_МХ", системные вызовы стандартные -
должно получиться...
...под RAMFOS этот FORTH нормально запускается, поскольку системные вызовы стандартны.

Я декомпилировал Редактор EDIT_MX из пакета RAMFOS и "срастил" его
с имеющимся FORTH-ом. Получился довольно удачный пакет FORTHED_MX,
в котором FORTH и EDIT_MX удачно взаимодействуют друг с другом и
пользуются всеми удобствами OS RAMFOS.
Attachment:
forthed.gif
forthed.gif [ 7.73 KiB | Viewed 6817 times ]

Пока тестирую и выявляю баги, фичи и разные прочие несуразности...

В частности, непонятно мне было, если брать что-то из пустого стека,
FORTH должен ответить "СТЕК ПУСТ" (я заменил на EMPTY!, чтобы не
было русского КОИ-7).
FORTH так и делает, но перед "СТЕК ПУСТ" выводит всё же какое-то
число. :o Я думал - ошибка, оказалось - фича! :wink:
FORTH просто по алгоритму сначала печатает пару ВС, а уж потом
проверяет, что "СТЕК ПУСТ", но в паре ВС - всегда что-то есть! :roll:

Ну и еще встречались багофичи не критические, которые надо бы проверить.
Сам FORTH работает... Как закончу всё это - пакет выложу...

И нашел я замечательный сайт с материалами по FORTH-у, которые написаны
так, как я люблю: кратко, четко, понятно, с примерами по делу!
И не надо мне рассказывать, что яблоко - это тоже "объект" со своими
свойствами и методами! Яблоко в нашем деле - это просто яблоко!
:-?

Сайт этот посвящен компьютеру Jupiter ACE: http://jupiter-ace.co.uk/usermanual.html
Там выложены мануалы на этот компьютер, описание его FORTH-а, примеры...

Ниже - краткий дайджест слов FORTH-а от Jupiter ACE.

 Jupiter ACE Reference
Attachment:
JA-Reference.gif
JA-Reference.gif [ 172.91 KiB | Viewed 6817 times ]

Контурами обведены слова, совпадающие с FORTH-ом "Радио-РК86".
Да, FORTH от Jupiter ACE побогаче будет! Но у него и размер - 8КБайт,
супротив нашего - 2КБайт...

В общем, читал я мануал Jupiter ACE по его FORTH-у и вспоминал, что
программировать в кодах я учился по мануалу от "Микроши", там было
тоже кратко и понятно изложено всё... :kruto:

В общем, кто хочет поиграть в FORTH, но FORTH от "Радио-РК86" ощущает
убогим - рекомендую, там есть эмулятор Jupiter ACE и весь софт на сайте
имеется...

Нет, конечно, если хотите приобщиться к великому, читайте Leo Brodie -
"Thinking FORTH"... :esurprised:
Attachment:
eggs.gif
eggs.gif [ 4.82 KiB | Viewed 6817 times ]

Но когда меня пытаются научить программированию на яблоках и яйцах,
я такое читать не могу... Хотя осилил главу: яйца... яйца... яйца... :-?

_________________
iLavr


12 May 2020 15:53
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Чтобы немного освоиться с языком FORTH, я решил попрактиковаться
в написании законченной программы на нём, но поскольку я этого
никогда не делал, я выбрал в качестве прототипа игру Towers of Hanoi
из программ для компьютера Jupiter ACE, поскольку его FORTH более
близок к тому, на чем я решил поупражняться. Тем более, что алгоритм
был мне знаком, я такую игрушку ковырял, еще когда учился под Windows
программировать на всяких ВАСЮКАХ. :wink:
Attachment:
HANOIW.gif
HANOIW.gif [ 3.81 KiB | Viewed 6756 times ]

Всё остальное, что пишут в умных книгах, от этих двух версий FORTH
довольно-таки далеко, хотя первые страниц так 20...30 об основах
языка FORTH во всех книгах примерно одинаковы.

Ну и Башни Hanoi я решил "расточить" сразу под управление мышью в среде
RAMFOS эмулятора "Специалиста_МХ", что позволяет мой "мышиный загрузчик"
программы-эмулятора: http://www.nedopc.org/forum/viewtopic.php?f=81&t=19664&start=15
Тем более, что игра неспешная, потыкать мышью - самое то! :kruto:

В общем-то это всё у меня довольно-таки успешно получилось:

 Скриншот Towers of Hanoi SPMX
Attachment:
Hanoi580.gif
Hanoi580.gif [ 22.73 KiB | Viewed 6756 times ]


Выкладываю архив со всеми файлами исходниками, ремиксом и др.
Attachment:
Hanoi.zip [73.61 KiB]
Downloaded 278 times

Там же в архиве исходник редактора EDIT_MX, который я перенёс на адреса
0000Н - ниже FORTH-а, который остался на своём месте с адреса 0800Н.
Служебные ячейки FORTH-а используются во многих примерах и подпрограммах,
и пришлось бы их править все, что совершенно излишне, на мой взгляд.
Тем более, что кодофайл FORTH-а расположен сразу после него до области
текста программы с адреса 2100Н - это я в EDIT_MX подправил...

А вот что я не подправил, ибо непонятно было, кого подправить, FORTH или
EDIT_MX - это стоп-байты. EDIT_MX использует стоп-байт 0FFH в качестве
метки конца текста, а FORTH считает концом текста байты 00H, 00H, а на
байт 0FFH он не реагирует, и если дальше в памяти остался какой-то текст,
FORTH будет его читать, пока не встретит байты 00H, 00H. :-?

Поскольку хотелось позаниматься FORTH-ом, а не ковырять EDIT_MX, я решил
проблему "костыликом" - там в пакете утилита CLEARMEM, которая чистит
память байтом 00H до HIMEM.
Так же в EDIT_MX запуск FORTH-а возможен по [F6 - 4TH] и [F7 - COD].
[F7 - COD] - я предполагал сохранять FORTH с расширенным кодофайлом, но
для этого места в коде EDIT_MX пока не нашлось.

Писать программу на FORTH-е можно в любом удобном редакторе, лучше в КОИ8
или только на английском. Для конвертации текста в формат, совместимый
с эмулятором Шевцова, я тут небольшую утилиту выкладывал.

Что касается FORTH-а - тут надо быть осторожным, ибо он действительно ни
за чем не следит, кроме вершины своего кодофайла. Если что-то не так пошло,
легко обрушит всю OS RAMFOS, ибо она вся в ОЗУ. :-?

И второй момент - надо быть очень внимательным с пробелами, точками и
переносом строки.
К примеру:
Code:
: LIST[0D]
BEGIN
...
REPEAT ;

FORTH скомпилирует в новое слово LIST[0D]BEGIN , а вот
Code:
: LIST[0D]
[20]BEGIN
...
REPEAT ;
это он скомпилирует правильно!

Также несколько иначе работает: ."текст" - лучше: ." текст".
но если
Code:
."       текст      1      2      3"
то лидирующие пробелы FORTH уберет.
Слово EMIT выводит любые коды на экран.
С остальными словами - сложнее. Байт старше 7FH считается стоп-байтом
конца строки, где младшие 7 бит несут информацию о её длине.

А так в общем-то язык простенький, легкий для освоения, только вот в
словах его и своих на второй день начинаешь путаться, поэтому по ходу
дела я вручную "подсвечивал" и оригинал Hanoi и свой ремикс... :lol:

Ну и в итоге я-таки не понял одного: какие-такие бухгалтерские расчеты
мечтал Шурик выполнять на своём "Специалисте" под FORTH-ом, сидя в деревне.
Любой ВАСИК, на мой взгляд, способен был делать это лучше, ибо даже в
самом неудобном ВАСИК-е от Волкова плавающая арифметика-таки нормально
приделана была, ибо, как мы выяснили, её написал ещё друг Билла...
:wink:

_________________
iLavr


17 May 2020 11:40
Profile
Doomed
User avatar

Joined: 05 Nov 2007 05:08
Posts: 487
Location: Украина
Reply with quote
расчеты простые: аптека. но тогда у нас были миллионы, и в васиках, которые у меня были в наличии, мне не хватало разрядности - 6 цифр мантисса, а целочисленных переменных не было. да и сейчас при нынешних ценах 6 цифр никак не хватит, когда точность нужна до копейки.

для обработки статистики прививок мне в васике не хватало памяти. мне бы хватило байта, а обычная переменная занимала три байта - сечас понимаю, что можно было хранить как символы, обращаясь через chr/val, но тогда был аврал и выдумывать было некогда.

попади сейчас в то время, я бы вообще на асме бы сделал - нужно было только процедуры преобразования чисел в строку и наоборот иметь, и многобайтные операции.


17 May 2020 12:07
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
shoorick wrote:
В далеком 2001 году написал русифицированный форт для дос :)
Attachment:
pfile.png
pfile.png [ 7.84 KiB | Viewed 6753 times ]

Недавно решил его "реанимировать". Переписывать, конечно, не собираюсь :)
Портировал на фасм и добавил внутрь русификацию.

В свете прочитанного мной про язык ФОРТ за эту неделю, "добавил внутрь русификацию"
ты как-то вот так? :wink:
Code:
: НАЧИНАЙ BEGIN ;
: ЕСЛИ IF ;
: ИНАЧЕ ELSE ;
: ТОГДА THEN ;
и т.п.

_________________
iLavr


17 May 2020 13:09
Profile
Doomed
User avatar

Joined: 05 Nov 2007 05:08
Posts: 487
Location: Украина
Reply with quote
если честно - уже не помню что на что я менял :)
в таком способе русификации могут быть подводные камни: возможно, некоторым словам понадобится флаг IMMEDIATE после объявления ;)


17 May 2020 13:25
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
shoorick wrote:
если честно - уже не помню что на что я менял :)
Ну я не конкретно, а в принципе спросил про способ...
shoorick wrote:
в таком способе русификации могут быть подводные камни: возможно, некоторым словам понадобится флаг IMMEDIATE после объявления ;)

А вот флаг IMMEDIATE г-н Шихов меня менять научил! :wink:

_________________
iLavr


17 May 2020 13:28
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 85 posts ]  Go to page Previous  1, 2, 3, 4, 5, 6  Next

Who is online

Users browsing this forum: No registered users and 65 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.