From 184d6bc9567f2e1efe1a9a39263f0be4ef1d5c96 Mon Sep 17 00:00:00 2001 From: Ralph Ronnquist Date: Wed, 5 May 2021 13:54:43 +1000 Subject: [PATCH] reformat to 80 columns --- src/bootstrap.asm | 56 ++++++++++++++++++++++++++--------------------- 1 file changed, 31 insertions(+), 25 deletions(-) diff --git a/src/bootstrap.asm b/src/bootstrap.asm index 1b8b658..5c22e52 100644 --- a/src/bootstrap.asm +++ b/src/bootstrap.asm @@ -1,26 +1,25 @@ -;; vim: syntax=fasm - -;; We need some basic words to be available before we can implement the actual -;; interpreter. For this reason we need to write some words in assembly, even -;; though they depend only on other Forth words. Such words are defined in this -;; file. +;; We need some basic words to be available before we can implement +;; the actual interpreter. For this reason we need to write some words +;; in assembly, even though they depend only on other Forth words. +;; Such words are defined in this file. ;; -;; With these words, we can finally defined INTERPRET, and from there we'll load -;; everything else from an external file. +;; With these words, we can finally defined INTERPRET, and from there +;; we'll load everything else from an external file. ;; -;; This file is included from main.asm; see that file for more information. +;; This file is included from main.asm; see that file for more +;; information. -;; Define a Forth word that is implemented in Forth. (The body will be a list of -;; 'dq' statements.) +;; Define a Forth word that is implemented in Forth. (The body will be +;; a list of 'dq' statements.) macro forth label, name, immediate { header label, name, immediate dq DOCOL } forth COMMA, ',' - dq HERE, GET, PUT ; Set the memory at the address pointed to by HERE - dq HERE, GET, LIT, 8, PLUS ; Calculate new address for HERE to point to - dq HERE, PUT ; Update HERE to point to the new address + dq HERE, GET, PUT ; Set the memory at the address pointed to by HERE + dq HERE, GET, LIT, 8, PLUS ; Calculate new address for HERE to point to + dq HERE, PUT ; Update HERE to point to the new address dq EXIT ;; Mark the last added word as immediate. @@ -47,9 +46,9 @@ forth OUTOF_IMMEDIATE, ']' dq LIT, 1, STATE, PUT_BYTE dq EXIT -;; INTERPRET-WORD expects a word as a (buffer, length) pair on the stack. It -;; interprets and executes the word. It's behavior depends on the current STATE. -;; It provides special handling for integers. +;; INTERPRET-WORD expects a word as a (buffer, length) pair on the +;; stack. It interprets and executes the word. It's behavior depends +;; on the current STATE. It provides special handling for integers. forth INTERPRET_WORD, 'INTERPRET-WORD' dq PAIRDUP ;; Stack is (word length word length). @@ -59,10 +58,13 @@ forth INTERPRET_WORD, 'INTERPRET-WORD' ;; - Word is found - - dq STATE, GET, ZBRANCH, 8 * 11 ; Check whether we are in compilation or immediate mode + dq STATE, GET, ZBRANCH, 8 * 11 ; Check whether we are in compilation + ; or immediate mode ;; (Word found, compilation mode) - dq DUP_, IS_IMMEDIATE, NOT_, ZBRANCH, 8 * 6 ; If the word is immediate, continue as we would in immediate mode + dq DUP_, IS_IMMEDIATE, NOT_, ZBRANCH, 8 * 6 ; If the word is + ; immediate, continue as we would in + ; immediate mode ;; Otherwise, we want to compile this word dq TCFA @@ -85,7 +87,8 @@ forth INTERPRET_WORD, 'INTERPRET-WORD' dq DROP dq PARSE_NUMBER - dq STATE, GET, ZBRANCH, 8 * 5 ; Check whether we are in compilation or immediate mode + dq STATE, GET, ZBRANCH, 8 * 5 ; Check whether we are in compilation + ; or immediate mode ;; (Number, compilation mode) dq LIT, LIT, COMMA @@ -95,21 +98,24 @@ forth INTERPRET_WORD, 'INTERPRET-WORD' ;; (Number, immediate mode) dq EXIT -;; The INTERPRET word reads and interprets a single word from the user. +;; The INTERPRET word reads and interprets a single word from the +;; user. forth INTERPRET, 'INTERPRET' dq READ_WORD dq INTERPRET_WORD dq EXIT -;; INTERPRET_STRING is a variant of INTERPRET that reads from a string instead -;; of from the user. It takes a string as a (buffer, length) pair on the stack -;; and interprets the entire string, even if the string has more than one word. +;; INTERPRET_STRING is a variant of INTERPRET that reads from a string +;; instead of from the user. It takes a string as a (buffer, length) +;; pair on the stack and interprets the entire string, even if the +;; string has more than one word. forth INTERPRET_STRING, 'INTERPRET-STRING' dq INPUT_LENGTH, PUT dq INPUT_BUFFER, PUT ;; Check if the buffer is-non-empty - ;; [TODO] This probably won't work for strings with whitespace at the end. + ;; [TODO] This probably won't work for strings with whitespace at + ;; the end. dq INPUT_LENGTH, GET dq ZBRANCH, 8 * 5 ; to EXIT -- 2.39.2