Чтобы немного освоиться с языком 
FORTH, я решил попрактиковаться
в написании законченной программы на нём, но поскольку я этого
никогда не делал, я выбрал в качестве прототипа игру 
Towers of Hanoi
из программ для компьютера 
Jupiter ACE, поскольку его 
FORTH более
близок к тому, на чем я решил поупражняться. Тем более, что алгоритм
был мне знаком, я такую игрушку ковырял, еще когда учился под Windows
программировать на всяких ВАСЮКАХ.  
 
 
HANOIW.gif
Всё остальное, что пишут в умных книгах, от этих двух версий 
FORTH-а
довольно-таки далеко, хотя первые страниц так 20...30 об основах
языка 
FORTH во всех книгах примерно одинаковы.
Ну и 
Башни Hanoi я решил "расточить" сразу под управление мышью в среде
RAMFOS эмулятора "
Специалиста_МХ", что позволяет мой "мышиный загрузчик"
программы-эмулятора: 
viewtopic.php?f=81&t=19664&start=15
Тем более, что игра неспешная, потыкать мышью - самое то!  
 
 
В общем-то это всё у меня довольно-таки успешно получилось:
 Скриншот Towers of Hanoi SPMX
 Скриншот Towers of Hanoi SPMX
Выкладываю архив со всеми файлами исходниками, ремиксом и др.
Hanoi.zip
Там же в архиве 
исходник редактора 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-ом, сидя в деревне.
Любой ВАСИК, на мой взгляд, способен был делать это лучше, ибо даже в
самом неудобном ВАСИК-е от Волкова плавающая арифметика-таки нормально
приделана была, ибо, как мы выяснили, её написал ещё друг Билла...  
You do not have the required permissions to view the files attached to this post.