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.
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.