MBimport 3

Descripción del contenido de la página

Tercera variante de MBimport, programa escrito en MasterBASIC para importar en el emulador SimCoupe código fuente en MasterBASIC escrito en ficheros de texto creados en el sistema operativo anfitrión.

Etiquetas:

El método de importación de la tercera variante de MBimport es el más sencillo: lee línea a línea un programa en MasterBASIC (escrito en forma de texto y sin números de línea) desde un fichero real de un disco de SAM Coupé (una imagen de disquete MGT).

Para pasar el fichero del sistema anfitrión a una imagen de disquete MGT utilicé la herramienta SAM Diskimage manager, escrita en 2000 por Edwin Blink; es un programa para Windows 95/98 que funciona bien en GNU/Linux con Wine. Desgraciadamente no acepta comandos como parámetros, lo que obliga a hacer la operación manualmente, como es típico en Windows.

SAM Diskimage Manager añade los ficheros a la imagen de disquete como si fueran de tipo CODE, pero por suerte en la SAM Coupé (al contrario de lo que ocurre en la ZX Spectrum con G+DOS o Beta DOS) es posible abrirlos como si fueran ficheros de tipo OPENTYPE para leer su contenido línea a línea. Sim embargo, al abrir un fichero CODE como si fuera OPENTYPE se recibirán los nueve octetos de su cabecera como parte del contenido, por lo que hay que saltarlos: OPEN #4,"filename" IN:let useless$=INP$(#4,9).

Una alternativa más cómoda y rápida que SAM Diskimage Manager para crear una imagen de disco MGT con los ficheros que queramos es el programa MGTize.

Código fuente

    1 REM MBimport 3 (Version A-20110907)
      (C) 2011 Marcos Cruz (programandala.net)
      License programandala.net/license
    2 MODE 1
      OPEN BLOCKS 1
    3 DEF PROC about
        CLS #
        PRINT PEN 5;"MBimport 3"'"Copyright (C) 2011 Marcos Cruz"'"(programandala.net)"''
      END PROC
    4 DEF PROC import file$,lineN
    5   DEFAULT lineN=lastLineByMBimport+1
    6   LOCAL line$,stream
        LET line$="",stream=4
    7   about
    8   SCROLL CLEAR
        ON ERROR STOP
    9   CLOSE #stream
        OPEN #stream,file$ IN
        LET line$=INP$(#stream,9)
   10   DO WHILE NOT EOF stream
   11     INPUT #stream; LINE line$
   12     REM LET line$=STR$ lineN+" "+line$
          PRINT line$
          KEYIN line$
          REM Alternative 1, no error checking
   13      KeyinLine line$
          REM Alternative 2, with error checking
   14     LET lineN=lineN+1
   15   LOOP
   16   KEYIN "label lastLineByMBimport"
   17   CLOSE #stream
   18   SCROLL RESTORE
   19   DEF PROC keyinLine l$
   20     ON ERROR GO TO syntaxError
          KEYIN STR$ lineN+l$
          ON ERROR STOP
          EXIT PROC
   21     LABEL syntaxError
          ON ERROR STOP
          PRINT lineN; PEN 2;l$
          KEYIN STR$ lineN+"REM MIS"+"TAKE "+l$
   22   END PROC
   23   DEF PROC sr
          SCROLL RESTORE
        END PROC
   24   DEF PROC c
          REM Clear after an error
   25     sr
          CLOSE *
          CLEAR
          STOP
        END PROC
   26   DEF PROC d
          REM Delete the imported code
   27     DELETE lastLineByMBimport+1 TO
        END PROC
   28   DEF PROC dMBimport
          REM Delete MBimport
   29     DELETE TO VAL "99"
        END PROC
   30   DEF PROC r
          REM Renum MBimport
   31     RENUM TO endOFMBimport LINE 1 STEP 1
        END PROC
   32   DEF PROC s
          REM Save MBimport 3
   33     d
          ERASE "MBimport3~"
          RENAME "MBimport3","MBimport3~"
          SAVE "MBimport3"
        END PROC
   34   LABEL endOfMBimport
   99   LABEL lastLineByMBimport
        REM This line must be 99

Descargas

MBimport 3 y el resto de variantes están disponibles en la sección de descarga en la página principal de MBimport.

Páginas relacionadas

BBimport
Programa para importar en el intérprete de Beta BASIC un código fuente creado en el sistema anfitrión del emulador de ZX Spectrum.