HispaMSX

utilidades RSC 2

2003-04-10 21:06:26
Holas, 

pues resulta que tengo un par de utilidades por aqui que igual a alguie le 
sirven de ayuda.
Los algos se dedican a traducir los ficheros de codigo fuente grabados desde 
el RSC 2 a ASCII y vice versa. Ademas, respetan los comentarios y adaptan 
mayusculas y minusculas segun convenga. 

Ambos estan programados en Qbasic y probados con varios programas. 

El que quiera puede modificarlos y/o mejorarlos o hacer lo que quiera con 
ellos, pero aviso: no trasteeis con los ficheros fuentes de ese megapeaazo 
programa que taaaanto tiempo levais programando para por si ...
Si aguien quiere informacion sobre el formato de los ficheros, pues se la 
puedo proporcionar. 

Como los ficherillos son muy muy pequenhajos, pues los mando. 

hala nenes,
IVI
  ----------

'conversion de fichero RSC a texto ASCII
'
'para informacion de la estructura,
'consultar el fichero RSCFILE.TXT
'
'29/1/2003
'
CLS
FILES
PRINT
INPUT "¨Fichero RSC a convertir (con extension)"; n$
FILES n$ 'existe el fichero?
PRINT "¨Quieres grabar el resultado (s/n)? ";
sn$ = INPUT$(1)
PRINT
IF sn$ = "s" OR sn$ = "S" THEN
        INPUT "Nombre fichero texto ", ns$
        OPEN ns$ FOR OUTPUT AS 2
ELSE
        OPEN "crt:" FOR OUTPUT AS 2
END IF
'
'averiguamos la longitud del fichero
OPEN n$ FOR BINARY ACCESS READ AS 1
l = LOF(1)
CLOSE 1
PRINT
PRINT "Longitud fichero "; n$; " "; l
'
OPEN n$ FOR RANDOM ACCESS READ AS 1 LEN = l
'FIELD 1, 1 AS id$, 2 AS lon$, l - 3 AS lineas$
FIELD 1, l AS f$
GET 1, 1
'
id$ = LEFT$(f$, 1)
lon$ = MID$(f$, 2, 2)
'
lon = ASC(LEFT$(lon$, 1)) + 256 * ASC(RIGHT$(lon$, 1))
PRINT "Identificador "; ASC(id$)
PRINT "Longitud datos "; HEX$(lon)
PRINT
PRINT "Convirtiendo ..."
'
pu = 4 'puntero de datos. Comienzo primera linea
DO
        si = ASC(MID$(f$, pu, 1))'siguiente linea=pu+si
        PRINT #2, MID$(f$, pu + 4, si - 4) 'salida a fichero o pantalla
        pu = pu + si + 1 'linea + fin linea (01)
LOOP WHILE pu < l

CLOSE
PRINT "Ok"


  ----------

'convierte ficheros de texto ASCII
'a ficheros formato RSC,
'cargables desde el ensamblador RSC
'
'para detalles ficheros RSC,
'ver el fichero RSCFILE.TXT
'
'29/1/2003 - FUNCIONA
'11/2/2003 - conversion minusculas a mayusculas
'            (RSC solo soporta codigo fuente en MAYUSCULAS)
'
CLS
FILES
PRINT
INPUT "¨Fichero ASCII a convertir (con extension)"; fe$
PRINT
FILES fe$ 'comprueba si existe
PRINT
INPUT "¨Fichero resultante "; fs$
'
PRINT
PRINT "Convirtiendo fichero ..."
'
OPEN fe$ FOR INPUT AS 1
'
ls$ = "" 'buffer para fichero
lf = 0 'longitud fichero resultante
n = 10'numero de linea incial
DO
        LINE INPUT #1, li$
        lo = LEN(li$)
        'los nemotecnicos se convierten a mayusculas pero no los comentarios
        li1$ = UCASE$(LEFT$(li$, INSTR(li$, ";"))) 'parte de programa
        li2$ = RIGHT$(li$, lo - LEN(li1$))'parte de comentario
        IF li1$ = "" THEN li2$ = UCASE$(li2$)
        lo = lo + 4 'tama¤o linea+4
        lsb = n AND &HFF
        msb = (n AND &HFF00) / 256
        ls$ = ls$ + CHR$(lo) 'longitud linea
        ls$ = ls$ + CHR$(lsb) + CHR$(msb) + CHR$(0) 'numero linea
        'texto de la linea
        'ls$ = ls$ + li$
        ls$ = ls$ + li1$ + li2$
        ls$ = ls$ + CHR$(1) 'fin linea
        lf = lf + lo + 1'long fichero
        n = n + 10
LOOP WHILE NOT EOF(1)
'
lf = lf + 1 'long datos
lsbl = lf AND &HFF
msbl = (lf AND &HFF00) / 256
'
ls$ = CHR$(2) + CHR$(lsbl) + CHR$(msbl) + ls$ + CHR$(0)
'
OPEN fs$ FOR RANDOM ACCESS WRITE AS 2 LEN = LEN(ls$)
FIELD 2, LEN(ls$) AS d$
LSET d$ = ls$
PUT 2
'
CLOSE
PRINT "Ok"



[Se han eliminado los trozos de este mensaje que no contenían texto]


<Anterior en la conversación] Conversación actual [Siguiente en la conversación>