ace2ans

Descripción del contenido de la página

Capa para poder compilar algunos programas en Ace Forth bajo un ANS Forth.

Etiquetas:

Cuando escribo código para la Jupiter Ace en formato de texto simple, echo de menos una manera de comprobarlo con rapidez. Algunos emuladores tienen la opción de leer un fichero de texto como si fuera la entrada del teclado, pero lo hacen demasiado lentamente, lo que no es práctico para encontrar que al final hay alguna palabra por definir en el programa. Por ello tuve la idea de escribir una capa de código que me permitiera compilar las fuentes en Ace Forth bajo un ANS Forth, como parte del proceso de desarrollo y depuración.

El trabajo aún no ha acabado. Algunas palabras importantes aún no están terminadas.

Código fuente

\ ace2ans.fs

\ Layer to compile or even run some Ace Forth programs under an ANS Forth.

\ Copyright (C) 2009,2010,2013 Marcos Cruz (programandala.net)
\ License: http://programandala.net/license

\ 2009-06-07 First version. Some words are not finished.
\ 2010-03-02 New (faulty) versions of 'definer' and 'compiler'.
\ 2013-08-22 Changes in comments.
\ 2013-08-22 New: 'variable'.

\ To-do
\ 2013-08-22 Can Ace Forth's 'repeat' be used without 'while'?

: ascii  ( "text" -- c )  state @ if postpone [char] else char then  ;  immediate
: at  ( y x -- )  swap at-xy  ;
: beep  ( u1 u2 -- )  2drop  ;
: bload  ( "text" -- )  parse-word 2drop  ;
: bsave  ( "text" -- )  parse-word 2drop  ;
: bverify  ( "text" -- )  parse-word 2drop  ;
: call  ( a -- )  drop  ;
: cls  ( -- )  page  ;
: compiler  ( -- ) postpone : postpone create  ;  \ xxx draft 
: definer  ( -- )  postpone : postpone create  ;  \ xxx draft
: edit  ( "text" -- )  parse-word 2drop  ;
: fast  ( -- )  ;
: forget  ( "text" -- )  parse-word 2drop  ;
: i'  ( -- n )  i  ;  \ xxx unfinished
: in  ( a -- ) drop  ;
: inkey  ( -- c )  key? if key else 0 then  ;
: invis  ( -- )  ;
: line  ( -- )  ;  \ xxx unfinished
: list  ( "text" -- )  see  ;
: load  ( "text" -- )  postpone include  ;
: out  ( b a -- ) 2drop  ;
: plot  ( x y u -- ) drop at-xy [char] . emit  ;
: redefine ( "text" -- )  parse-word 2drop  ;
: retype  ( -- )  ;  \ xxx unfinished
: runs>  ( -- ) does>  ;  immediate  \ xxx not tested
: save  ( "text" -- )  parse-word 2drop  ;
: slow  ( -- )  ;
: u*  ( u1 u2 -- ud )  um*  ;
: u/mod  ( ud u1 -- u2 u3 )  um/mod  ;
: verify  ( "text" -- )  parse-word 2drop  ;
: variable  ( x "name" -- )  drop variable  ;
: vis  ( -- )  ;
: vlist  ( -- )  words  ;

Descargas