|
nedoPC.orgElectronics hobbyists community established in 2002 |
|
Author |
Message |
b2m
Devil
Joined: 26 May 2003 06:57 Posts: 859
|
Интересный вариант форта. И если lsforth это тот же Кириллин-Клубович-Ноздрунов с прямым шитым кодом (описанный в их книге), то форт Шихова - это уже реализация с подпрограммным шитым кодом. До сих пор мне не встречался, по крайней мере на отечественных восьмибитках. Видимо никто не решился набивать дамп из журнала Радио. Сам он писал или содрал откуда - сказать сложно, но если Шихов был фортером, то и писал он его скорее всего на форте, иначе сложно объяснить постоянные CALL DROP / RET вместо JMP DROP в словах использующих верхний элемент стека, который находится в регистрах BC. Целевая компиляция у фортеров это как тест, после прохождения которого (т.е. создав форт для другой платформы) можешь считаться фортером Данному форту нехватает очень многого, чтобы считаться фортом, соответствующему стандарту, но то, что это минимальное ядро форта - это неоспоримо. Да, первую фиктивную словарную статью ты просмотрел Между прочим она играет важную роль в цикле 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 |
|
|
b2m
Devil
Joined: 26 May 2003 06:57 Posts: 859
|
А в других адресах?
_________________Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/
|
03 May 2020 06:22 |
|
|
b2m
Devil
Joined: 26 May 2003 06:57 Posts: 859
|
Кстати, демонстрационная программа содержит некоторые недостающие части этого форта, а также полезные пояснения. Там есть опечатки!!! Удвоенные кавычки в конце строки "") тоже опечатка, нужен только один символ кавычек.
_________________Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/
|
03 May 2020 07:10 |
|
|
b2m
Devil
Joined: 26 May 2003 06:57 Posts: 859
|
З.Ы. Однако не факт. Попробовал оба варианта: (" TEST"") печатает текст, в стандарте вроде нужно писать ." TEST"(" TEST") просто комментарий, в стандарте ( TEST )
_________________Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/
|
03 May 2020 09:46 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Эту статью автора много где в Интернете продублировали, но всюду - куча ошибок OCR, заметных невооруженным глазом даже людям, далёким от FORTH-а, но знакомым с программированием. Так что если кого этот вариант FORTH-а заинтересовал, читать лучше посматривая в сканы, поскольку важное значение имеют точки, апострофы, кавычки и даже наличие пробелов в примерах. Поэтому сканы "в студию" я тоже выкладываю: (порезано rar-ом на 2 части из-за ограничений форума на размер вложения)Но честно скажу, что и по сканам порой приходится угадывать по смыслу: точки, апострофы, кавычки и на сканах весьма неуверенно местами различимы... Ну и я сам сейчас по тексту и сканам проверяю, что делает этот FORTH, а чего не делает...
_________________ iLavr
|
03 May 2020 14:28 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
[offtop] А зря я вообще насмешки пытался строить... город, как город... город Козьмодемьянск, Республика Марий Эл - административный центр Горномарийского района Кое-чем город Козьмодемьянск даже весьма знаменит! [/offtop] P.S. Немножко про "город Козьмодемьянск" | | | | Lavr wrote: P.S. Немножко про "город Козьмодемьянск" - я думаю, вряд ли кто понял, в чем дело. А дело в том, что статью Шихова я просматривал ещё в оригинале в 1995 году в журнале "Радио", поскольку я этот журнал выписывал. "Просматривал" - поскольку язык Форт меня тогда не интересовал. Ну и поскольку, как убедительно показал тут один наш коллега, читаем мы не по буквам, а слова целиком, то этот город у меня прочитался тогда как КоСмодемьянск, и в памяти это отложилось. С тех пор, когда мне встречалась эта статья, реакция была:"а... Шихов... город КоСмодемьянск...". Человеку, выросшему в стране с городами Киров, Куйбышев и т.п. это слово глаз совершенно не резало... Интересно, что когда я читал эту статью уже внимательно здесь: http://www.danbigras.ru/RK86/Fort_RK/FORT_RK.html, как ни странно, КоСмодемьянск опять остался КоСмодемьянском! И только вот здесь https://subscribe.ru/archive/comp.soft.prog.forth/200506/17114028.html я вдруг неожиданно четко увидел - КоЗЬмодемьянск! Они что, глумятся? - такая у меня была первая реакция, тут-то я и полез в Гугл... | | | | |
_________________ iLavr
|
03 May 2020 14:54 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
День Радио я опять провёл с пользой и демонстрационную программу от Шихова на его FORTH-е для "Радио-86РК" довёл-таки до ума! Да уж... пока наберешь демонстрационную программу от Шихова, весь FORTH непеременно изучишь... Тем более, что реально некоторые пробелы очень важны, а я работал в ассемблерном редакторе "Специалиста_МХ", который любит удалять концевые пробелы и вставлять символ табуляции в начале строки... Также выяснилась неприятная вещь, что FORTH от Шихова работает сугубо в КОИ-7, все символы старше 7FH он считает концом строки. И конечно же меня больше волновало, работает ли сам FORTH, или таки есть ошибки в набранном мной дампе. Тем более, что некоторые фокусы FORTH-а меня поначалу очень озадачили... Ниже на картинке - так он показывает числа 0F803H и 0F809H в HEX-виде : Но в десятичном виде - это совершенно правильно ( числа со знаком). Также есть ошибки в самом оригинальном листинге: В тексте статьи есть такой же пример: В общем для всех, кто надумал приобщиться к FORTH-у на привычных нам "ламповых" 8-битках, выкладываю архив с "правильными файлами": В архиве:FORTHPR7.ASM - это в КОИ-7 - для тех, у кого "РК-86" или эмулятор -> 2100H; FORTHPR8.ASM - это в КОИ-8 то же самое; FORTHPRG.ASM - это в WIN-1251 то же самое; FORTHPRG.rtf - это для эстетов: подсвечена латиница и цифры. Шутка, конечно, но так я выявил много ошибок OCR. FORTH86.ALL - а это для владельцев эмулятора "Специалиста_МХ" от Шевцова. Здесь полный "фарш", плюс бонус - перекодировщик (в коллекцию Fifan-a). Загружаем FORTH86.ALL, запускаем FORTH86.EXE и приобщаемся к FORTH-у... Если всё промелькнуло очень быстро, делаем побольше задержку процессора: (300...500H) после чего: COLD и [Enter]. И как там написано в конце цикла статей Шихова:" Желаю удачи!"
_________________ iLavr
|
07 May 2020 16:56 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Ну и, я думаю, материалы статей Н.Шихова в приличном качестве надо тоже здесь выложить. На тот случай, когда у меня снова жесткий диск рухнет, или ноутбук прикажет долго жить... (щютка) Когда я новый для себя материал читаю, обычно делаю собственный "дайджест": и читаю при этом внимательней, получается, и непонятные фразы рихтую... Впрочем, Н.Шихова я сильно не правил, разве что слово " кладём" всюду по тексту заменил на " заносим"... " кладём" - как-то глаз режет... Ну и все примеры я на FORTH-е не проверял, скажу честно, хотя кое-что мне весьма пригодилось при отладке демонстрационной программы. А формат *.rtf - на тот крайний случай, когда и М$ Ворда нет...
_________________ iLavr
|
07 May 2020 17:35 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Я тут Интернет прошариваю частым бреднем в поисках примеров каких-либо законченных и полезных программ на FORTH, чтобы посмотреть, как умные люди пишут хорошие программы на нём. Но пока всё как-то безуспешно, как будто все фортеры вымерли... Интересно, что сайтов по FORTH-у много, в 100 глоток FORTH хвалят, но путных примеров законченных программ пока не встретил. Либо ссылки давно протухшие. Но по пути нашел исходники FORTH-а для 6502, вроде как даже фирменная версия от Если кому-либо интересно, то вот они эти исходники:
_________________ iLavr
|
09 May 2020 17:00 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Я декомпилировал Редактор EDIT_MX из пакета RAMFOS и "срастил" его с имеющимся FORTH-ом. Получился довольно удачный пакет FORTHED_MX, в котором FORTH и EDIT_MX удачно взаимодействуют друг с другом и пользуются всеми удобствами OS RAMFOS. Пока тестирую и выявляю баги, фичи и разные прочие несуразности... В частности, непонятно мне было, если брать что-то из пустого стека, FORTH должен ответить " СТЕК ПУСТ" (я заменил на EMPTY!, чтобы не было русского КОИ-7). FORTH так и делает, но перед " СТЕК ПУСТ" выводит всё же какое-то число. Я думал - ошибка, оказалось - фича! FORTH просто по алгоритму сначала печатает пару ВС, а уж потом проверяет, что " СТЕК ПУСТ", но в паре ВС - всегда что-то есть! Ну и еще встречались багофичи не критические, которые надо бы проверить. Сам FORTH работает... Как закончу всё это - пакет выложу... И нашел я замечательный сайт с материалами по FORTH-у, которые написаны так, как я люблю: кратко, четко, понятно, с примерами по делу! И не надо мне рассказывать, что яблоко - это тоже "объект" со своими свойствами и методами! Яблоко в нашем деле - это просто яблоко! Сайт этот посвящен компьютеру Jupiter ACE: http://jupiter-ace.co.uk/usermanual.htmlТам выложены мануалы на этот компьютер, описание его FORTH-а, примеры... Ниже - краткий дайджест слов FORTH-а от Jupiter ACE. Jupiter ACE Reference Контурами обведены слова, совпадающие с FORTH-ом " Радио-РК86". Да, FORTH от Jupiter ACE побогаче будет! Но у него и размер - 8КБайт, супротив нашего - 2КБайт... В общем, читал я мануал Jupiter ACE по его FORTH-у и вспоминал, что программировать в кодах я учился по мануалу от " Микроши", там было тоже кратко и понятно изложено всё... В общем, кто хочет поиграть в FORTH, но FORTH от " Радио-РК86" ощущает убогим - рекомендую, там есть эмулятор Jupiter ACE и весь софт на сайте имеется... Нет, конечно, если хотите приобщиться к великому, читайте Leo Brodie - " Thinking FORTH"... Но когда меня пытаются научить программированию на яблоках и яйцах, я такое читать не могу... Хотя осилил главу: яйца... яйца... яйца...
_________________ iLavr
|
12 May 2020 15:53 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Чтобы немного освоиться с языком FORTH, я решил попрактиковаться в написании законченной программы на нём, но поскольку я этого никогда не делал, я выбрал в качестве прототипа игру Towers of Hanoiиз программ для компьютера Jupiter ACE, поскольку его FORTH более близок к тому, на чем я решил поупражняться. Тем более, что алгоритм был мне знаком, я такую игрушку ковырял, еще когда учился под Windows программировать на всяких ВАСЮКАХ. Всё остальное, что пишут в умных книгах, от этих двух версий FORTH-а довольно-таки далеко, хотя первые страниц так 20...30 об основах языка FORTH во всех книгах примерно одинаковы. Ну и Башни Hanoi я решил "расточить" сразу под управление мышью в среде RAMFOS эмулятора " Специалиста_МХ", что позволяет мой "мышиный загрузчик" программы-эмулятора: http://www.nedopc.org/forum/viewtopic.php?f=81&t=19664&start=15Тем более, что игра неспешная, потыкать мышью - самое то! В общем-то это всё у меня довольно-таки успешно получилось: Скриншот Towers of Hanoi SPMX Выкладываю архив со всеми файлами исходниками, ремиксом и др. Там же в архиве исходник редактора 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, ибо она вся в ОЗУ. И второй момент - надо быть очень внимательным с пробелами, точками и переносом строки. К примеру: FORTH скомпилирует в новое слово LIST[0D]BEGIN , а вот это он скомпилирует правильно! Также несколько иначе работает: ."текст" - лучше: ." текст". но если то лидирующие пробелы FORTH уберет. Слово EMIT выводит любые коды на экран. С остальными словами - сложнее. Байт старше 7FH считается стоп-байтомконца строки, где младшие 7 бит несут информацию о её длине. А так в общем-то язык простенький, легкий для освоения, только вот в словах его и своих на второй день начинаешь путаться, поэтому по ходу дела я вручную "подсвечивал" и оригинал Hanoi и свой ремикс... Ну и в итоге я-таки не понял одного: какие-такие бухгалтерские расчеты мечтал Шурик выполнять на своём "Специалисте" под FORTH-ом, сидя в деревне. Любой ВАСИК, на мой взгляд, способен был делать это лучше, ибо даже в самом неудобном ВАСИК-е от Волкова плавающая арифметика-таки нормально приделана была, ибо, как мы выяснили, её написал ещё друг Билла...
_________________ iLavr
|
17 May 2020 11:40 |
|
|
shoorick
Doomed
Joined: 05 Nov 2007 05:08 Posts: 487 Location: Украина
|
расчеты простые: аптека. но тогда у нас были миллионы, и в васиках, которые у меня были в наличии, мне не хватало разрядности - 6 цифр мантисса, а целочисленных переменных не было. да и сейчас при нынешних ценах 6 цифр никак не хватит, когда точность нужна до копейки.
для обработки статистики прививок мне в васике не хватало памяти. мне бы хватило байта, а обычная переменная занимала три байта - сечас понимаю, что можно было хранить как символы, обращаясь через chr/val, но тогда был аврал и выдумывать было некогда.
попади сейчас в то время, я бы вообще на асме бы сделал - нужно было только процедуры преобразования чисел в строку и наоборот иметь, и многобайтные операции.
|
17 May 2020 12:07 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
В свете прочитанного мной про язык ФОРТ за эту неделю, " добавил внутрь русификацию" ты как-то вот так?
_________________ iLavr
|
17 May 2020 13:09 |
|
|
shoorick
Doomed
Joined: 05 Nov 2007 05:08 Posts: 487 Location: Украина
|
если честно - уже не помню что на что я менял в таком способе русификации могут быть подводные камни: возможно, некоторым словам понадобится флаг IMMEDIATE после объявления
|
17 May 2020 13:25 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Ну я не конкретно, а в принципе спросил про способ... А вот флаг IMMEDIATE г-н Шихов меня менять научил!
_________________ iLavr
|
17 May 2020 13:28 |
|
|
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
|
|