Sideras Spectrum

Descripción del contenido de la página

Juego escrito en Forth para la computadora Sinclair ZX Spectrum.

Etiquetas:

Sideras Spectrum es una versión de Sideras para la ZX Spectrum, escrita en Abersoft Forth. Es una adaptación tan fiel que adolece del mismo error que el original: No está escrita pensando en Forth; me limité a adaptar el código de un dialecto de Forth a otro. Mirando ahora el código que sigue y viendo su pobre estilo siento ganas de reescribirlo desde cero con el estilo de Forth... Pero lo único que he hecho es un par de retoques cosméticos y corregir alguna errata.

Hay algunos detalles interesantes para comentar sobre la adaptación de Ace Forth a Abersoft Forth, pues aparte de algunas diferencias en el lenguaje en sí, lógicamente las palabras relacionadas con cada máquina son diferentes (gráficos, pantalla, sonido y variables del sistema):

Código fuente

( Sideras Spectrum )
( Written in Abersoft Forth for the Sinclair ZX Spectrum )
( Based on "Sideras", written by unknown author in Ace Forth for the Jupiter Ace )

( Copyright [C] 1985,2009 Marcos Cruz, http://programandala.net )
( License: http://programandala.net/license )

( 1985-08-25 First version. )
( 2009-06-07 Some little changes. )

: TASK ;

23670 CONSTANT SEED

: RND
    SEED @ 75 U* 75 0 D+ OVER OVER U< - -
    1 - DUP SEED ! U* SWAP DROP
;

: RANDOM  23672 @ SEED !  ;

: DEF  8 * UDG + DUP 8 + SWAP DO I C! LOOP  ;

0 VARIABLE X
0 VARIABLE VELOCIDAD
0 VARIABLE CONTADOR

: K=  INKEY = ;

: IZQ
    X @ 0 > 49 K= AND
    IF -1 X +!
    THEN
;

: SIDERAS
    21 20 RND AT
    CONTADOR @ 200 <
    IF   ."  *         *"
    ELSE 124 EMIT 8 SPACES 124 EMIT
    THEN
    CR CR
;

: IMPACTO?  11 X @ SCREEN 32 >  ;

: ACELERADOR
    CONTADOR @ 5 MOD 0=
    VELOCIDAD @ 10 > AND
    IF -1 VELOCIDAD +!
    THEN
;

: CRASH
    10 1000 BLEEP
    CR CR ." HA RECORRIDO " CONTADOR ? ." PARSECS" QUIT
;

: DER
    X @ 30 < 48 K= AND
    IF  1 X +!
    THEN
;

: INIC
    0 DUP PAPER BORDER 7 INK CLS
    0 CONTADOR !  50 VELOCIDAD !
    24 60 102 255 231 195 129 DUP 0 DEF
;

: RUN
    INIC
    BEGIN
        10 X @ OVER 1 - OVER AT SPACE AT SPACE
        DER IZQ
        10 X @ AT 144 EMIT
        ACELERADOR
        10 RND 10 + VELOCIDAD @ BLEEP
        IMPACTO?
        IF CRASH
        THEN
        SIDERAS
        1 CONTADOR +!
        12 K=
    UNTIL
;


Descargas

El código fuente que ofrezco es un fichero de texto simple creado a partir de un antiguo listado de impresora. No es directamente utilizable por la ZX Spectrum; para ejecutarlo habría que teclearlo en Abersoft Forth con su propio editor.

Precisamente para convertir textos fuente de Forth en ficheros TAP legibles en un emulador de ZX Spectrum estoy escribiendo el programa Ftaper.

Páginas relacionadas

Sideras
Un juego escrito en Ace Forth para la computadora Jupiter Ace.
Siderator
Juego escrito en Ace Forth para la Jupiter Ace.