ZX Spectrum
Game

FORTH Compiler/Editor

Your Computer (Великобритания),

Автор:

Жанр: Программы и утилиты


Доступные версии

 Неофициальное издание
Играть!

Язык

  • Русский
  • English

Управление

  • Клавиатура(?)

Игроков

  • Один
  • Описание (авт.пер.)
  • Информация

ВПЕРЕД

            Дэвид Миллингтон представляет программу

             развивать Forth на Spectrum.

Эта версия компьютерного языка Forth будет работать на 48K Spectrum, но из-за многих адресов мешке б, он не совместим с Microdrives и меж- сталкиваются 1 операционную систему.

  Он состоит из двух отдельных частей: компилятор и редактор написано в Basic и набор слов Форта в машинный код.

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

  Увеличение скорости происходит из-за того факта, что Forth Программа переходит непосредственно в машинный код, и Модульный характер Forth делает процесс компиляции очень легко. Так как компилятор в моей версии в Basic, его компилирует довольно медленно, но код, созданный будет работать как быстро, как коммерческих Фортов.

  Теория простого программирования в Форт был покрыты в предыдущих выпусках компьютера, но я буду Напомним простые понятия для тех, кто плохо знаком с язык. Моя реализация в основном стандартный Forth и включает все обычные структуры, но отличается своей Использование переменных и строк и менее гибок в методы определяющих слов. Тем не менее, она должна служить Введение в преимуществах языка и может быть используется для таких приложений, как графических игр, как я надеюсь, показать в следующей статье.

  [При загрузке программы, вы] должны быть представлены Название и после короткой паузы знак вопроса подсказку и мигает пустой появится курсор в нижней, ждем ваших команд.

Главной особенностью Forth является стек, который является просто куча цифр. Количество может быть добавлено к верхней части стек, а затем верхний ряд может быть удален. Эти два простые операции являются основой Forth. Вы должны сейчас введите в 23 и нажмите клавишу ВВОД, и это число будет сделан на вершине стека. Если сейчас вы набираете точку и ENTER, верхний ряд в стеке будут удалены и распечатать.

Полная остановка является примером Forth слова, многие из которых что-то сделать, чтобы стек, как показано на рисунке. Слово + принесу два числа из стека, сложите их вместе, и место сумма обратно на вершину. Теперь вы должны быть в состоянии использовать Forth в добавить вместе два числа и распечатать результат. Один из способов заключается войти         23 45 +.

и ответ 68 появится. Это также показывает, как несколько пунктов может быть введен вместе, разделенных пробелами. Точно так же слова -, /, * доступны для арифметики, и сложные выражения могут быть оценены. Рассмотрим Основные заявление         PRINT (5 + 11) / (5-3) Эквивалент в Форт является         5 11 + 5 3 – /.

Оба даст ответ 8. Если Forth версия кажется Странно, исследование цифра 3, в котором подробно эффект от стек, как каждая команда выполняется. Форт просто требуется каждая операция, чтобы быть размещены после операндов вместо между ними, являются ли они номера или другие выражения.

Это известно как постфиксный нотации, и это автоматически

устраняет необходимость в скобках.

 Рисунок 3.

 Выражение 5 11 + 5 3 – /.

 – – – – – – – – – – – – – – – – – – – – – – – – – – – – –  Стек 3                    11 5 5 2

                5 5 16 16 16 16 8

Вы должны экспериментировать с различными выражениями, пока вы

уверены, что происходит и как стек используется.

Рано или поздно вы обнаружите, что Форт работает только на целых чисел. Пытаться         20 6 /.

и ответ 3 производится. Диапазон чисел, которые могут быть обработаны является -32768 до 32767, хотя есть, между 32768 и 65535 могут быть введены, и они будут преобразованы для негативов. При попытке ввести что-либо за пределами этого Диапазон, то сообщение об ошибке “Количество вне диапазона ‘будет появляются. Полный список сообщений об ошибках системы дается на рисунке 4 для справки. [Рисунок 4, а другой refe- Renče столы, можно найти в конце этого текстового файла.]

До сих пор мы сделали только простые расчеты в режиме прямого

и вы, вероятно, ждут, чтобы попробовать полную программу.

Главное понять, что программа Форт имеет мало сходство с базовой или машинный код. Есть не номера строк и нет Последовательный порядок инструкций ния, которые составляют реальную программу. Вместо этого мы хранить Инструкция по определению слова. Вы встречались пять слов так далеко, и те, которые можно определить себя может быть использован в точно так же.

  Предположим, мы хотим, чтобы определить слово с именем средняя которые будет вычислить среднее из трех цифр. Вводить         :. Средний + + 3 /;   Там будет задержка в то время как слово составляется, и то быстрое и курсор будет появляться. Синтаксис определение слова является двоеточие следует имя мы хотим используют следует последовательность операций и прекращается с запятой. Там нет места после двоеточия или перед точкой с запятой.

  Если вы сейчас ввести 10 14 3 в среднем. Затем 9, средний из этих трех чисел, будут напечатаны. Средняя слово Теперь же часть из Форт лексики компьютера как встроенный или «основных» слов, и все они хранятся в области памяти называется словарь. Вы можете определить дальнейшее слова, используя обе основные слова и свои собственные, и идея развиваться программу, состоящую из вложенных определений слов пока, как правило, только одно слово не требуется для выполнения ваша программа.

  Это делает развитие программы проще, чем в Basic, так как Задачи могут быть подразделены и соответствующие слова написаны и испытывают отдельно. Важность стека становится очевидно, поскольку он используется для передачи параметров и от слова, как это было показано со средним слова.

Рисунок 5 списков и кратко объясняет большинство слов Форта

поддерживается. Те, кто уже знаком с языком должно сможете попробовать некоторые большие программы, но, прежде чем приступать ни на что слишком авантюрной вам нужно знать, как редактировать вашу работу в случае ошибки. Форт является как склонны к Программа ошибки и опечатки, как основной, но, как и любой COM- сложенный язык, ошибки занять много времени, чтобы исправить.

  Есть несколько команд для редактирования и использования periphe- к специалистам и они перечислены на рисунке 6. Следует отметить, что они не являются частью языка Forth и не являются ни в означает стандарт в любых других Forth систем, которые вместо использовать экраны для редактирования. Чтобы указать системную команду вы должны начать строку звездочкой. Введите * редактировать среднем и вы должны найти определение принес на дно экран так же, как вы впервые вошли в него. Это может быть изменено использованием стандартных средств управления курсором и поступил, когда закончите. Alter его         :. Средний + + + 4 /; чтобы средняя из четырех чисел можно найти. На Нажатие Enter вы услышите странный писк, который является Эффект редактора Sinclair используется на высокой скорости.

Через несколько секунд курсор, снова с Поправка, внесенная в среднем.

  В целом, чем больше слов вы определили, больше задержка будет, так как много перекомпиляции должно быть сделано. Каждое определение вводе хранится в исходном коде буфер в редактировании случае требуется позже. Команда * список будет перечислить все определения в буфере. Однако, если вас введите * дель то буфер источник очищается, и вы будете не в состоянии редактировать среднем, хотя он все еще может быть использован в Форт. Это объясняет, почему вы не можете редактировать основные слова.   Есть Сохранение и загрузка команд и для источника буфер и словарь-четвертых, еще раз описано на рисунке 6. После команды * слоад будет длительная задержка в то время как исходный код скомпилирован. Команда * сброс удалит все и начать Forth с начала снова. Если вас есть принтер ZX, то он может быть включен с * пр о, что позволяет весь вывод на печать. * пр от отменит это объект.

  Как было сказано выше, цифра 5 содержит краткие пояснения из наиболее распространенных Форт словами. Испустите используется для печати одиночные символы, и на Spectrum это особенно полезно, так как это может работать обычный цвет и положение управляющие символы. Например         16 излучают 4 излучают 42 Emit напечатает зеленой звездой “.

  Есть два слова, которые имеют дело с ввода с клавиатуры, но только на одном уровне символов. Получить будет ждать ключ или смещается нажатия клавиши, и возвращает его код на стек. Он будет производить стандартный щелчок ключа, и, когда его быстро называется, это позволит ключи повторить. Другой Слово является ключевым, и это работает как INKEY $ в Basic. Это будет вернуть код ключа, который в настоящее время нажатой, или 0, если не будет нажата ни одна. Там нет подразумеваемая ожидание, поскольку есть с получить.

  Есть четыре слова для манипулирования стек и их проиллюстрированы схематично на фиг.5b. Наиболее полезным является ДУП, как он будет дублировать верхний ряд, допустимая сила числе один экземпляр будет использоваться и другие сохранились на потом использовать.

В любом компьютерном языке, способность выполнять повторяется

операции с использованием петель, и принимать решения очень важно. Вы можете думать, что отсутствие номеров строк и GO TO сделает это сложно, но, на самом деле, Forth предоставляет несколько слов полезно контроля и это позволяет более четкие структуры программы, которая будет создана, чем в Basic.   Есть прямые эквиваленты Basic для-NEXT в государственной менты и они делают и петли. Фактическое расположение этого и другие структуры показаны на рисунке 5. слово инд разместит индекс счетчик цикла в стеке где он может быть использован. В стандарте Forth это слово просто Я, но я изменил его, чтобы избежать путаницы с переменной состоянии I.

  Слово + петля позволит шаги, отличных от 1.

следующая прямой линии показывают, как различные размеры шага и направления обслуживаются, и должен быть введен индивидуально:         20 1 делать инд. петля         1 20 сделать инд. петля         100 1 делать инд. 17 + петля         -30 30 сделать инд. 2 + петля   Рисунок 7 содержит определение слова называется граф, которая использует цикл, чтобы показать скорость Forth. Две точки показаны от этого перечисления. Определение Форт-слово может занимать несколько строк при условии: а; знаменуют начало и конец, а также комментарии могут быть включены, если они находятся на отдельной строке и в скобки.

  Введите определение и выполнить его, введя количество, и Вы должны видеть цифры от 1 до 10 тысяч быстро быть печатается в левом верхнем углу экрана. Вы должны также попытаться редактирования счетчика, чтобы увидеть, как каждая строка представлена ​​отдельно в нижней части.

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

Оба эти петли будут полезны в различных условиях.

  Условия результаты операторов<,>,<>и =, которые все требуют два числа, чтобы быть по сравнению с быть в стеке, и они будут возвращать истинное значение – 1 – или ложная ценность – 0. До и во время и не ожидал такой код условия, чтобы быть в стеке. Они используют это значение в решил, следует ли выйти или продолжить цикл. Follo- крыло линия использует цикл ждать нажатия клавиши:         не начать клавиш = до   Если-то-иначе структура позволит две разные участки кода должна быть выполнена в зависимости от того условие истинно или ложно, прежде чем возобновить с нормальным течь исполнения. Фактическое расположение этих структур снова объяснил на рисунке 5.

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

Слово экз вернет индекс из самого внутреннего цикла, и только даст правильное значение, если это происходит в Такое же определение слова, как в начале и в конце цикла.

Если вы скрестите структуры, то авария, скорее всего.

Легкость грохот Forth является штраф за его высокой скорости и близость в машинный код.

  Вы можете разместить следующие инструкции в цикле, если вы думаю, что это не может выйти:         Ключ 32 = если прерывания затем Нажатие клавиши пробела остановит программу с не плохо эффекты, и сообщение         Программа прервана появится. Прервать это одно слово, которое будет безопасно остановить выполнение и прыгать из всех вложенных циклов и слов.

Остальные рисунке 7 показаны некоторые примеры определений слов

для иллюстрации различных аспектов простого программирования. Тип позволит ввести строку текста на экране, прекращено ввести. Он показывает не начать-до петли в действии, а также иллюстрирует использование GET. Заполните простой Утилита для заполнения экрана с характером вашей выбор. Например,         35 заполнения заполнит экран с хэш знаков. Это может быть немного медленнее, чем вы ожидали, но это из-за медлительности рутины печати Синклера.

  Следующее слово, квадрат, рассчитает и распечатать квадрат числа в стеке. Она вызывается Последнее слово, квадраты, которые будут печатать форматированный таблицу кв номера до любого заданного значения.

  Когда вы ввели все эти определения, вы можете, как чтобы сохранить их на пленку, чтобы опробовать команды кассетные. Это Важно, что вы должны экспериментировать с Forth и средства компилятора. [На самом деле, они уже на Forth.tzx, под названием “Рисунок 7”, после основной Программа.]

[Система также имеет некоторые особенности, которые не были описаны

в статье. Некоторые из них похожи на стандартный Forth особенности, но большинство из них не совсем то же самое, как ри- или Форт-97. Они весьма полезны, хотя, так что я опишу их в короткий. Имейте в виду, что я только собирала все это от самой программы; это, вероятно, точно, но я могу сделали ошибку.

  Первые до ряд слов управления памятью. Первый из них выделить. Это займет несколько из стека, и выделяет это число байтов из выделенной области между скомпилированный код и стек. Базовый адрес это Площадь затем помещается в стек. Вы можете смело использовать этот память для хранения значений в, как описано ниже. Последующее призывает выделить будет зарезервировать дополнительную память непосредственно следующему числе предыдущий.

  Слово ясно очистит как стек и выделяют Площадь. После понятно, следующее значение толкнул будет выталкиваться на базе стека, как если бы система только что были сброшены, и на следующий выделяют выделит с самого начала области выделить. По сути, это как * сброса, но не теряя весь код.

  Если вы хотите использовать ваш отведенное память, или действительно любой памяти не входит в стек или вашей программы, вы можете использовать ^,?,! и @. ^ Слово всплывает адрес из стека, следует значение и сохраняет младший байт, что Значение по адресу, указанному. Для значений ниже 256, что является само значение. Это означает, что         255 23692 ^ это то же самое,         POKE 23692.255 то есть, он устанавливает счетчик прокрутки 255.

  И наоборот,? появляется адрес, и толкает содержимое из этой ячейки памяти в стек. Таким образом, 23 693? , является Форт эквивалент PRINT PEEK 23693, который является текущие постоянные цвета.

  Слова! и @ очень похожи на ^ и? соответ- ственно, кроме того, что они работают над числами двухбайтными. Они хранить и читать младший байт значения в указанный адрес, а старший байт по следующему адресу, так же, как описано в главе 25 руководства Spectrum. Для пример, 23606 @ поставит адрес набора символов в стеке, и 30000 23606! изменит его (мы надеемся, по адресу, где вы загрузили ваш новый, красиво переработан шрифт).

  Обратите внимание, что вы не ограничены адресами течение Четвертая система для любого из этих четырех слов, и что Messing о с адресов, которые вы не уверены безопасны только так опасно, как с помощью нерадивых тычет в Basic. Форт Сама система начинается с 43000, а все, что выше, что и ниже области UDG Небезопасно ^ или! В, за исключением того Память, которую запросили помощи выделяют.

  Слова! и @ не следует путать с рядом особенность, которая является то, что из переменных. Как Basic, Forth делает использовать переменные, но из-за сильного внимания на стеке их использование является более ограниченным. В настоящей системе, они еще более ограничены, чем в большинстве. У вас есть ровно 26 из им; они идентифицируются по одной строчной буквы, в г. Каждый может содержать один Forth значение, так же, как стек запись. Чтобы сохранить значение в одной из этих переменных, нажать значение в стек, а затем введите переменную Название письмо, и сразу же, без пробела, по!.

Чтобы получить значение переменной, использовать имя письмо с последующим по @. Например,         42 г!

будет хранить значение 42 в переменную г, и         т @.

распечатает значение, хранящееся в переменной т в настоящее время.   Обратите внимание на разницу между этой функцией и двух- байт заглянуть / тыкать команды: в переменной использования,! и @ являются непосредственно связанный с именем переменной, в то время как в прятки / мешке команды отдельные слова, отделенные от адреса они работают на пробел, как и любой другой нормальный слова.

Скорее полезно, а вот два строковые функции. Если вас

включают любую строку между двойными кавычек внутри вашего Команда, это поставит эту строку, с ENTER (CHR $ 13) добавляется, в скомпилированный код, и нажать ее начала add- ССГ в стеке. В дополнение к этому, есть $ слово, которая принимает адрес из стека и выводит строку начиная с этого адреса и вплоть до первой CHR $ 13 найдено. Обратите внимание, что это CHR $ 13 само по себе не напечатаны, так что если вы хотите сообщение до конца с новой строки, Вы должны будете использовать 13 излучают. Отметим также, что эта строка адрес является нормальным 16-разрядное число, и вы можете выполнять арифметические операции на нем так же, как вы могли бы в Basic.

Например, попробуйте:         “О Hello, World!” 3 + $ (То же самое верно, кстати, для используются адреса по ^? ! @ И выделить – но позаботиться, опять же, не сделать ошибка и точка, где вы не намерены.)   Наконец, есть “вставка прямой код” объект. Это ставит байт, указанные шестнадцатеричных чисел, непосредственно в Код поток. Излишне говорить, что это и очень мощный и очень опасная черта. Доступ к нему осуществляется по используя символ # и сразу (опять же без пробелов) шестнадцатеричных кодов для машины код или данные, которые будут вставлены. Каждый байт должен быть ровно два шестнадцатеричные цифры (так что если вы хотите вставить 12, необходимо использовать 0оС никогда просто с.)   Позаботьтесь: код, который вы вставка выполняется буквально, как машинный код, как часть вашей команды. Можно, конечно, сделать огромный ущерб с этим, но вы также можете использовать его для большой эффект, если вы заботитесь. Например, вы можете использовать Вперед в Поп и нажмите процедуры по установке # cdd4a8 и # Cdc8a8 соответственно. Эти поместить значение с вершины стек в HL и нажмите HL назад в стек. В между, вы можете сделать с HL, что вы хотите; например, Вы можете перевести его для быстрого 2 * или 2 /, или даже передать его к ПЗУ калькулятора, чтобы расширить программу Forth с SIN и COS.

  Менее trickily, вы можете позвонить простые процедуры ПЗУ, как те, для сигнала или CLS. Или еще проще, просто один Слово # c7 вставляет команду RST 0, который сбрасывает Спектр изнутри Forth! Менее резко, #cf средства RST 8, который является отчет об ошибке объекта из спектра Оперативная память; Форт захватывает обработку для собственного использования ошибку, так это не очень полезно, но очень удобно использование это включить # CF16. Это вызывает ошибки H, STOP в ВХОД, которая заставляет систему вперед, чтобы остановить чисто без сброса компьютера.

  И, кстати, да, что это значит, что в прошлом undocu- таджи особенностью Forth не новое слово, но способ остановить систему от редактора: просто ворваться командной строки с помощью клавиши со стрелкой вниз, или перейти-6. Это

нормальный Basic Input, замаскированный с лукавой мешке.]
 Рисунок 4. Четвертая сообщения об ошибках компилятора.

 Неопределенное слово слово либо не определено в

                       словарь или в случае * редактировать,                        исходный код, если определение                        недоступен.

 Плохой линия линия вошла в целом не                        смысл. Эта ошибка также может быть                        производится, если вы превысите память                        зарезервированы для компилятора.

 Плохой переменная незаконным имя переменной был                        используемый.

 Деление на ноль 1 0 / была предпринята попытка, для                        Пример.

 Количество вне диапазона числа за пределами диапазоне от -32768                        65535 был введен.

 Неверный номер номер содержит нечислового                        характер.

 BREAK BREAK была нажата, когда с помощью липкой ленты,                        Принтер или «свиток?

 Неверное имя Незаконное имя файла в кассете                        команды.

 Неверный код же, как в основной цвет.

 Лента ошибка загрузки То же, что в Basic.

 Программа прервали слово прерывания был выполнен.

 После сообщения об ошибке, то строка, содержащая ошибку

 должен быть введен снова в полном объеме. Если какая-либо ошибка происходит после  редактировании слово, слово автоматически будет представлен  снова для редактирования, начиная с самого начала, и вы  должны пропустить через него, нажав кнопку ENTER, пока не дойдете до

 нарушившая линия.

 Рисунок 5. Резюме основных Форт словами.

 Арифметические операторы:

 + Добавить два числа и место результат на стек.

 – Вычтите верхний ряд из второго ряда.

 * Умножьте два верхних номера.

 / Разделите верхнюю число на второе число. Результат             округляется до меньшего целого.

 Условные операторы:  =,<>,<,>Сравните две верхние цифры в соответствии с указан             состояние, и возвращение 1, если условие             держит, в противном случае 0.

 Стек манипуляции: (рисунок 5б)  падение Снимите верхнюю число из стека.

 DUP верхнее число Дублировать на стеке.

 своп Своп два верхних числа на стеке.

 над Скопируйте второй номер на стек на вершину, над             Оригинальный топ число.

 Управляющие структуры:  В последующем описании, элементы в скобках  относятся к любому соответствующему блоку слов Форта. Все  структуры могут быть вложены в себе и других, чтобы  Любой уровень, но все слова, в любой момент уровня вложенности  должен быть в то же определение слова.

 (Отделка) (начать) делать (код) цикл             Выполните проиндексирован петлю, с индексом начала             в (начать) и считая вверх или вниз на один             до (отделка) не будет достигнута. (Код) повторяется             соответствующее число раз.

 (Отделка) (начать) делать (код) (приращение) + петли             То же, что предыдущий, за исключением того, размер приращения является             указано.

 начать (код) (состояние) до             (Код) повторяется до (состояния) дает             истинное значение (ненулевое).

 начать (состояние), а (код) повторите             (Код) повторяется до тех пор, (условие)             дает истинное значение. Если (условие) является ложным             в первый раз, а затем (код) пропускается             в целом.

 (Состояние), если (правда код) еще (ложный код), то             Если (условие) истинно, то (правда код) является             выполняется, в противном случае (ложно код) выполняется.             Обе части продолжают выполнение после затем.

 (Состояние), если (правда код), то             То же, что предыдущий, за исключением того, ненужные условия             не рассматривается отдельно, и еще, и             (Ложный код) опущены.

 инд Место индекс счетчик сокровенном сделать петлю на             стек.

 прервать вернуться в командный режим, очистка всех вложенных

            петли и слова.

[Рисунок 5а. Номера документально Forth слова.

 Управление памятью:

 выделяют Pops ряд из стека, и выделяет, что             количество байтов памяти от “свободной зоне”             между стеком и кода. Толчки             базовый адрес выделенного блока на             стек.

 ясно Сброс указателя стека и выделено             блокировать указатель обратно в свои начальные значения.  ^ Pops два числа, и загружает адрес памяти             из верхней числа с самыми низкими 8 битов             второе значение. Другими словами, то же самое             понятия, как базового мешке.

 ? Забирает ряд, затем толкает нашел один байт             по этому адресу в стек. То есть, PEEK.

 ! Делает то же самое, как!, Кроме того, что он тычет             полный 16-битный, число на два последующих             ячейки памяти, в формате, описанном в             руководство Спектр, глава 25.

            Отметим, что это отдельное слово, а не к             путать с х! Переменная для хранения,             описано ниже.

 @ Ли то же самое,?, Кроме того, что она заглядывает             и толкает 16-битный, количество 2-байт.

            Как!, Не следует путать с переменной.

 Переменная для хранения:  В обоих этих команд, х может быть какой-либо одной, нижний регистр  Письмо от А до Я. Они не путать с  двухбайтовое заглянуть и тыкать слова, описано выше. Таковы  отдельные слова; это всегда часть команды со-  состоящий из одной переменной письма и тоже! или @.

 х! Забирает значение и сохраняет его в переменной х.

 х @ Помещает значение переменной х в стеке.

 Обработка строк:  “Строка” Вставить “строка”, а затем на новую строку, в             памяти, и нажмите его адрес в стеке.

 $ Поп адрес из стека, и печать             строка, начинающаяся по этому адресу, до (не             в том числе) первому символу новой строки (CHR $ 13) найдены.  Прямая вставка код:  # Необходимо соблюдать непосредственно (без пробела) по любой             количество двузначных шестнадцатеричных чисел. Эти             номера будут вставлены непосредственно в

            код команды. ]

 На рисунке 5б. Последствия операции стека.

 Исходное состояние своп стек DUP раскрывающегося над

                            30 20  30 30 20 30  20 20 20 30 20

 10 10 10 10 10

 Рисунок 6. операционные команды компилятора.

 Все команды должны начинаться со звездочкой.

 * Редактирование “слово” Позволяет слово для редактирования одной строки на                      Время, если исходный код                      имеется, то перекомпилирует «слово» и                      все после него.

 * Список Перечисляет все значения слов в источнике                      Код буфер.

 * Дель Очищает исходный код буфер, но листья                      Форт словарь нетронутыми.

 * Сброс Очищает все и перезапускает Forth.

 * Dsave “Имя файла” Сохранить весь Форт словарь в трех                      части.

 * DLOAD ‘имя файла’ Загрузка словарь, и очищает источник                      Код буфер.

 * Ssave ‘имя файла’ Сохраняет исходный код буфер на ленте.

 * Слоад ‘имя файла’ Загрузка исходного буфера кода и компилирует                      это в словаре. Там будет                      Длительная задержка в то время как это делается.  Обратите внимание, что имя файла не заключено в кавычки,  и если это не указано в команде нагрузки, то первый  Файл найден будет загружен.

 * Пр на Посылает всю дальнейшую вывод ZX                      Принтер.

 * Пр от Использует экран снова для выхода.

 * DList списки содержимое словаря, и                      адрес подпрограммы машинного кода                      для каждого слова.

 * Msave Сохраняет Форт программу в качестве независимого

                     Код рутина машина.

 Рисунок 7
 * Список

 : Рассчитывать 10000 1 Выполните

 (Создан цикл)  22 излучают 0 излучают 0 Emit  (Перейти печати поз. В левом верхнем углу)  экз.

 (Распечатать счетчика цикла)  петля;

 Тип начать

 (Создан цикл)  получить DUP  (Получить символ с клавиатуры и сделать еще одну копию  в стеке)  излучать  (Распечатать характер)  не 13 = до  (Продолжать с петлей, пока персонаж не является ENTER –  Код 13)  ;

 : Заливка (код символа уже в стеке)

 22 излучают 0 излучают 0 Emit  704 1 делать  (Создан цикл)  DUP излучать  (Дублировать характер в стеке и распечатать верх  копия)  петля  падение  (Символ удаляется из стека)  ;

 : Квадрат DUP *.

 (Распечатать квадрат числа в стеке)  ;

 : Квадраты 1 сделать

 (Верхний предел цикла уже в стеке)  экз.

 (Печатать номер)  6 излучать  (Это управляющий символ запятая)  инд площади  (Вычисления квадрата, используя предыдущее слово мы определили)  13 излучать  (Печать на новой линии)  петля;

 20 квадратов

 1 1  2 4  3 9  4 16  5 25  6 36  7 49  8 64  9 81  10 100  11 121  12 144  13 169  14 196  15 225  16 256  17 289  18 324  19 361

 20 400

[и, наконец, несколько замечаний о TZX. Это содержит

  (Конечно) сама программа, которой следует   Программа использовалась для создания словаря по умолчанию.

    После этого небольшой дополнительный словарь   инструменты, которые я должен был создать в порту программу (“ОХО”,   опубликовано в ZX Computing в июне 1985 года, а также доступны   состоянии в WoS) в этой версии вперед, и которые я   думал бы сделать хороший словарь образца. Ты можешь   загрузить исходный или составлен словарь,   как вам будет угодно. Будьте осторожны, чтобы не загружать его на   вершина вашей собственной программы, так как это Forth не делает   Слияние; загрузить набор инструментов, а затем введите программу.     Большинство слов в этом словаре просты   достаточно, чтобы понять. абс и мода делать то, что вы бы   ожидать, что они: абс включается верхнее значение стека в его   абсолютный (т.е., неотрицательна) значение, как Basic ABS, и   мод вычисляет остаток от деления верхней   два значения стека – дополнение вперед в целом /.

    Не менее удивительно, являются и, или и не. Они ведут себя   так же, как основной и или и нет, в том числе и и или   возвращение одного из своих аргументов, если это возможно. 4 2 и,   например, дает 4, так же, как 4 и 2 делает в Basic.

  Вы можете удивиться, почему я включил не, когда 0 = так же   Короткая. Причина в том, что 0 = компилируется в код, который   делает<вставить 0, называют =>а не компилирует в<вызова   не>(которые затем, в свою очередь вставляет 0 и звонков =). Таким образом,   не приводит к довольно короткий, но чуть медленнее,   Код, чем 0 =. Выбор за вами.

    Есть две функции экрана, которая также сделать просто   то, что вы ожидали бы их.<Лин>
<кол>на помещает   курсор в<лин>,<кол>, в то время как CLS очищает экран   (Называя две процедуры ROM, чтобы сделать так), то ставит   курсор назад в левом верхнем углу экрана.

    Последние два слова не сразу видно, как   они должны были быть написаны в машинный код. Первый из   это является гниль, которая на самом деле является стандартным Форт-слово,   Он действует что-то вроде обмена трех значений. Он принимает   три верхних значения из стека, затем кладет их обратно на   с третьим значением на вершине, а затем два других.

  1 2 3 4 гниль приводит холдинга стека, сверху   вниз, 2 4 3 1: 2 был повернут к вершине.

    Наконец мы оставить, также стандартный вперед, который   устанавливает окончательный предел самого внутреннего делать петли на его   Текущий индекс. Это означает, что, когда петля находится рядом   выполняется, то цикл завершится. Следует отметить, что это   предел, который изменяется, не текущий индекс. Странно,   но почему-то, это стандартная.

  И последнее предупреждение: это Forth не делает много   из проверки ошибок. Если Вы заполните исходный буфер с   больше текста, чем может поместиться, она будет весело выбросить   отдых, но постоянно обновлять свои указатели, в результате чего код   который будет работать, но не могут быть изменены больше (и   * Список которых будет прекращено в результате ошибки). Использование * дель   действительно решить эту проблему в той, что любой новый код будет вести себя   как обычно, но, конечно, вы все равно можете не редактировать старый   Источник.

    А если серьезно, вы можете скомпилировать больше кода, чем воли   соответствовать между компилятором и области выделить, или нажатием   более 250-это значения и начать над концом   оперативной памяти, или даже поп больше значения, чем в стеке   и (в конечном счете) начав свой скомпилированный код! Ни один   это будет предотвращено. Вы должны работать на него, но   все это возможно.

    Управляющие структуры также не делают никакой проверки на ошибки   все, и это довольно легко сломать. Все, что вам   сделать случайно оставить одно слово. Например,   загрузить систему от свежего (не сделать это с помощью   недавно ввели программа в памяти), затем введите петлю как   Ваша первая линия. Просто одно слово, без его дел.

  Теперь вы будете осторожны в будущем. Оставив от   Структура заканчивая слово может быть столь же катастрофические последствия; попробуйте, если   сама по себе.

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

                               Ричард Бос, октябрь 2012 года]

Сыграйте в FORTH Compiler/Editor прямо сейчас! Это приложение для программирования, которое создал David Millington, было выпущено компанией Your Computer в 1984 году в Великобритании.

Не запускается или глючит игра, или не можете пройти? Спросите в комментариях.

Subscribe
Уведомлять об
guest
0 Comments
Inline Feedbacks
View all comments
 

Сохранённые игры[X]

  

Справка[X]

Помощь уже в пути!

Не забывайте периодически сохранять игровой прогресс на сервере (клавишей F8), чтобы уверенно продвигаться вперёд!

Если вы гость на сайте, то прогресс будет сохранён только в памяти браузера и потеряется при закрытии. Чтобы этого не произошло - просто войдите в свой профиль.

Для загрузки сохранённой игры жмите F3 или откройте меню "Диск" кнопкой на правой панели.

Если игра не запускается, или у вас есть вопросы по игре - задайте их ниже.

Помощь

Размер

  • x1 [256x192]
  • x2 [512x384]
  • x3 [768x576]
  • Полный

Диск

Кликни в окно эмулятора, чтобы управлять!
<<<<
Close
0
Would love your thoughts, please comment.x
()
x