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]