Чтобы немного освоиться с языком
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
Выкладываю архив со всеми файлами исходниками, ремиксом и др.
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.