741 lines
29 KiB
Plaintext
741 lines
29 KiB
Plaintext
25/9/2002
|
|
---------
|
|
* Añadido un control para evitar que haya más de "max_process" procesos. Si
|
|
ocurre, se produce un critical_error. A veces permite un pequeño margen,
|
|
en función de la memoria disponible. (Er_Makina)
|
|
* Aconsejo usar en cualquier momento stub_quit() en lugar de exit(), ya que
|
|
ahí se libera varindex y se ejecuta SDL_Quit. (Er_Makina)
|
|
* Añadidos los opcodes optimizados al stub. He puesto no_optimization a 0 en
|
|
el ediv.cfg. He compilado los test y parece que rulan perfectamente.
|
|
(Er_Makina)
|
|
|
|
24/9/2002
|
|
---------
|
|
* ¡¡Añadido indexado de variables dinámico!! (¿contento Rise?) :D
|
|
+------------------------------+
|
|
| LEER ESTO CON MUCHA ATENCIÓN |
|
|
+------------------------------+
|
|
1) Compilad la documentación (doc/html/makedokNT.bat) y leed bien el
|
|
varindex-howto.html. Las macros a que hace referencia se encuentran en
|
|
varindex.h (para el stub) y export.h (para las dll's), por si quereis
|
|
verlas.
|
|
2) NO INCLUYÁIS VARINDEX.H EN LAS DLL's, sólamente export.h
|
|
|
|
Ya tenéis acceso a cualquier variable, tabla o estructura de cualquier dll
|
|
desde cualquier otra dll. Falta hacer un sistema de dependencias, rara vez
|
|
se va a dar el caso de que una dll dependa de otra (a excepción de la
|
|
graphics o la edivstd), pero vendrá muy bien de todas formas y aseguraremos
|
|
la robustez de ediv, especialmente de cara a dll's hechas por usuarios.
|
|
Al compilar, ediv (compilado como Debug) guarda en varindex.out la tabla
|
|
de variables sin comprimir, que podeis comparar con la lista que muestra
|
|
el stub en stdout al arrancar, por si hay que comprobar errores. (Er_Makina)
|
|
* Naturalmente ha sido necesario adaptar el stub y todas las dlls. De paso he
|
|
aprovechado para cambiar alguna cosilla por ahí para quitar warnings (uf
|
|
la graphics tiene cada warnings mas peligrosos.. variables sin inicializar..
|
|
de to) :P (Er_Makina)
|
|
* ¡¡Corregido bug de los 154 procesos!! (Er_Makina)
|
|
* ¡¡Ya se inicializan las variables locales!! (Er_Makina)
|
|
* Cambiado max_process en ediv.cfg de 20 a 1024 (Er_Makina)
|
|
* Por hacer: controlar el máximo de procesos permitidos. (Er_Makina)
|
|
|
|
9/9/2002
|
|
--------
|
|
* Le he añadido icono al stub, y también he hecho un programa (iconchanger)
|
|
para cambiárselo después de haber compilado un programa con ediv. mola
|
|
eh? :) incluyo también un icono de pacman de ejemplo ke me kedó mu majo.
|
|
(Er_Makina)
|
|
* Agregados all_drawing y all_text a sus correspondientes dll's. (Er_Makina)
|
|
* He incluido en la estructura fp funciones para errores (Runtime_Error y
|
|
Critical_Error). ¡¡Empezad a usarlas YA!! Tenéis una lista completa de los
|
|
errores en el language.c del stub. Podéis añadir nuevos errores aprovechando
|
|
los huecos, pero no añadáis a menos que estéis seguros de que ese error no
|
|
existe ya (si la descripción no es como os gusta, pos la cambiáis un poco,
|
|
hala). (Er_Makina)
|
|
|
|
6/9/2002
|
|
--------
|
|
* Mejorado ligeramente el sistema de indexado de variables, ya no estan
|
|
esos #defines tan engorrosos porke los identificadores van con enum.
|
|
Recordad recompilar si insertais alguna variable nueva. ¡Ojo! Tienen que
|
|
estar ordenadas por global, reserved y local, no vale saltearlas, de esta
|
|
forma se localizan mas rapidamente. (Er_Makina)
|
|
|
|
27/6/2002
|
|
---------
|
|
* Modificado el formato de los exes en modo debug. En lugar de la ruta
|
|
absoluta hacia el prg, se guarda el codigo fuente completo comprimido
|
|
(primero el tamaño descomprimido, luego el tamaño comprimido y luego el
|
|
codigo comprimido) (Er_Makina)
|
|
|
|
26/6/2002
|
|
---------
|
|
* El ediv_export daba error si se declaraban dos objetos con igual nombre en
|
|
distintos niveles de struct (problema con el "height" de la estructura
|
|
"video_modes" de la graphics.dll y la local "height" de edivstd.dll).
|
|
Creo que el problema está corregido (ver crea_objeto() en parser.c) pero
|
|
hace falta testearlo un poco más (Er_Makina)
|
|
|
|
16/3/2002
|
|
---------
|
|
* El MOTD ya puede ser recibido correctamente en Linux, no es unicamente para
|
|
sistemas Windows (Daijo)
|
|
|
|
22/2/2002
|
|
---------
|
|
* Corregido bug al leer las Dlls. Estas si contenian caracteres en mayúsculas
|
|
no las encontraba, solo encontraba aquellas cuyo nombre estaba escrito en
|
|
minusculas. Ahora las carga perfectamente, incluso en Linux, aunque es mas
|
|
probable ver mIDlL.dLL en Windows, que mISo.sO en lnx :).
|
|
(Daijo)
|
|
|
|
* Por ahora pongo al trazador un textbox normal y corriente, sin resaltado ni
|
|
nada (lo del resaltado de sintaxis va a tener tela...) (Er_Makina)
|
|
|
|
|
|
21/2/2002
|
|
---------
|
|
* Quitados los archivos _ml.* y añadidos los utils.*, estos ultimos servirán
|
|
para albergar todas las rutinas utiles que creemos. Actualmente contiene
|
|
'strcasecmp' y 'strncasecmp' definidas para Win32, en los sistemas **IX ya
|
|
existian. (Daijo)
|
|
|
|
|
|
19/2/2002
|
|
---------
|
|
|
|
* Comenzada la debug.dll. Se trata de una aplicación Qt que se ejecuta con el
|
|
entrypoint "debug". Tiene prioridad -512, ya que nunca debe ser añadida
|
|
manualmente, el compilador la añade siempre automáticamente cuando se compila
|
|
con la opción -d. Sólo funciona con el stub que tiene el trazador activado
|
|
(*.dbg), recordad compilarlo antes de probar el trazador. También he añadido
|
|
el entrypoint "trace", útil para trazar el programa sentencia por sentencia.
|
|
Naturalmente, el trazador aun está en bragas x) tengo el diseño hecho aparte,
|
|
de momento es un calco del trazador de DIV2 pero luego le iremos añadiendo
|
|
cosas (quickwatches y cosas de esas molonas). (Er_Makina)
|
|
|
|
* Corregidos algunos serios bugs relacionados con la carga de DLL's (otra vez
|
|
:P) (Er_Makina)
|
|
|
|
|
|
18/2/2002
|
|
---------
|
|
|
|
* Ahora en la 2ª fase del compilador y en el stub se le añade la extensión a
|
|
una DLL antes de cargarla. Esto no taba problemas en Windows 2000, pero
|
|
podía darlos en Windows XP/9x/Me. (Er_Makina)
|
|
|
|
* Añadido Call_Entrypoint. Teneis que recompilar todas las DLL's que tengais
|
|
para que funcionen correctamente. (Er_Makina)
|
|
|
|
|
|
17/2/2002
|
|
---------
|
|
|
|
* Una nueva dll llamada prueba.dll, para hacer tonterias como escribir mensajes
|
|
y numeros en un archivo, y mostrar msgbox. (Er_Makina)
|
|
|
|
* He conseguido que rule el prueba.prg ;) va perfectamente, voy a ver si es
|
|
capaz de ejecutar correctamente programas mas complejos, usando variables
|
|
globales, privadas, locales, etc (Er_Makina)
|
|
|
|
* Añadido #ifndef _CABECERA_H - #define _CABECERA_H - ... - #endif para evitar
|
|
includes recursivos. No habia ningun problema con esto, pero es mejor
|
|
evitarlos desde un principio. (Daijo)
|
|
|
|
|
|
16/2/2002
|
|
---------
|
|
|
|
* Completadas algunas instrucciones EML del intérprete. (Er_Makina)
|
|
|
|
* Arreglado un bug por el cual no se cargaban las dlls adecuadas. (Er_Makina)
|
|
|
|
|
|
15/2/2002
|
|
---------
|
|
|
|
* Bug arreglado: cuando en Win32 se encontraba la primera DLL, se contabilizaba
|
|
aunque no fuera válida. (Er_Makina)
|
|
|
|
* Ahora el nombre de las DLL's se almacena sin extensión. (Er_Makina)
|
|
|
|
* En el ediv.cfg ahora hay una sección llamada dll_priority, donde se pueden
|
|
ajustar prioridades a las DLL's, las cuales se superponen a las prioridades
|
|
por defecto de cada DLL. (Er_Makina)
|
|
|
|
* Si una DLL tiene como prioridad 512 (P_SIEMPRE), se tomará siempre como
|
|
necesaria. Si tiene -512 (P_NUNCA), se ignora la DLL. (Er_Makina)
|
|
|
|
* El directorio donde se encuentran las DLL's puede configurarse en el ediv.cfg
|
|
(Er_Makina)
|
|
|
|
* En edivcentral.com he creado una carpeta llamada "actual" donde hay
|
|
documentos que cambian frecuentemente, útiles para mantenerse informado sobre
|
|
el desarrollo de eDIV. Allí están el TODO, el ChangeLog, el MOTD, y también
|
|
el language.txt. Se puede acceder a ellos en www.edivcentral.com/actual. El
|
|
changelog se puede ver rápidamente en changelog.edivcentral.com.
|
|
(Er_Makina + Daijo)
|
|
|
|
* El sistema de prioridades de las DLL's ya funciona perfectamente, la tabla de
|
|
DLL's se ordena en memoria segun las prioridades antes de decidir cual se usa
|
|
y cual no. De esta forma se escriben ya ordenadas en el bytecode. (Er_Makina)
|
|
|
|
|
|
14/2/2002
|
|
---------
|
|
|
|
* Bug arreglado: en WinNT el stub fallaba al cargar una DLL. He puesto
|
|
que use las funciones de windows (LoadLibrary y compañia), pero
|
|
dll_load.c sigue siendo necesaria para cargar dll's embebidas en el
|
|
exe. (Er_Makina)
|
|
|
|
* El stub ya carga el indice de variables. OJO: aun no esta hecho lo de
|
|
las prioridades de las DLL's, por lo que es posible recibir ceros al
|
|
intentar localizar una variable, aunque pertenezca al edivstd.
|
|
(Er_Makina)
|
|
|
|
|
|
31/1/2002
|
|
---------
|
|
|
|
* Ya rula el indexado de variables por el lado del compilador. Se guarda
|
|
el indice comprimido en el exe, justo despues del bytecode, asi que hay
|
|
que adaptar el stub en consecuencia. (Er_Makina)
|
|
|
|
|
|
23/1/2002
|
|
---------
|
|
|
|
* Adaptado ediv_export.c al stub. Kizas me haya saltado algo y tenga
|
|
algunos bugs, ya me encargare de comprobarlo con algunas "chivatas" ;)
|
|
(Er_Makina)
|
|
|
|
|
|
13/1/2002
|
|
---------
|
|
|
|
* El compilador lee un archivo de configuración (ediv.cfg) de donde
|
|
obtiene las opciones de compilación por defecto, el servidor para el
|
|
MOTD, un idioma forzado y el directorio de las dll's. Falta por incluir
|
|
una sección [dll_priority] donde indicar las prioridades por defecto de
|
|
las dll's. Éstas irán, por ahora, de -512 a 512. El valor por defecto
|
|
es 0. Una dll con 512 de prioridad se cargará siempre aunque no se
|
|
indique ninguna referencia a una función de la dll en el PRG (éste es
|
|
el caso de la edivstd y la graphics). Una prioridad de -512 hace que
|
|
la dll no se cargue nunca (útil para tener varias dll's que hagan lo
|
|
mismo, por ejemplo una sound que use fmod y otra que use sdl).
|
|
(Daijo & Er_Makina)
|
|
|
|
* He incluido errores run-time leves y graves en el stub (mirar error.c).
|
|
En error.c explico también el planteamiento de poner msgbox en linux
|
|
para los errores. Los mensajes de error leves son los mismos que en
|
|
div2, esto es importante para mantener la compatibilidad con
|
|
ignore_error(). (Er_Makina)
|
|
|
|
* He mejorado la comunicación HTTP/1.1 para obtener el MOTD. Ahora
|
|
detecta si la información recibida es de texto plano, y no admite fi-
|
|
cheros de más de 1024 bytes. (Er_Makina)
|
|
|
|
* Implementado el sistema de entrypoints en el compilador y extern.h,
|
|
queda meterlo en el stub. (Er_Makina)
|
|
|
|
* Carga de dll's a medio hacer en el stub (ya funciona la instrucción IMP),
|
|
le falta un ediv_export.c, por tanto no compila. El stub busca las dll's
|
|
primero en el directorio actual y luego en dll\ (so/ en el caso de Linux).
|
|
(Er_Makina)
|
|
|
|
* dll_load.c y dll_load.h movidos a la carpeta shared. (Er_Makina)
|
|
|
|
* Arreglado pequeño desastre con el fichero extern.h (Er_Makina)
|
|
|
|
* Varios pequeños bugs arreglados. (Er_Makina)
|
|
|
|
|
|
1/12/2001
|
|
---------
|
|
|
|
* Ligeramente modificado el SDK, las funciones ediv_export ya no retornan
|
|
un puntero C a los datos exportados, sino un puntero DIV, es decir, la
|
|
posición en mem[] o loc[] donde han sido colocados. Esto permitirá hacer
|
|
el sistema de indexado para que unas DLLs (o el stub) puedan acceder a
|
|
datos de otras, y para que se pueda acceder a los datos locales mediante
|
|
mem[id+offset]. (Er_Makina)
|
|
|
|
* También he metido algunos #defines para hacer las funciones predefinidas
|
|
o autoejecutables de las DLL, se declararán con una función tipo
|
|
EDIV_Export_Auto(id_funcion,handle). Aun no tengo muy claro como fun-
|
|
cionará el asunto en general, imagino que todo se desencadenará a partir
|
|
de EDIV_post_process y a partir de ahí todas las DLLs irán llamando a las
|
|
correspondientes autoejecutables de las demás. Si alguien no entiende esto,
|
|
que me lo pregunte y me rallaré mas xD (Er_Makina)
|
|
|
|
* Añadida capacidad para leer un MOTD situado en www.edivcentral.com/motd.txt
|
|
con la opción -n, --news (de momento sólo rula en Win32) (Daijo + Er_Makina)
|
|
|
|
|
|
30/11/2001
|
|
----------
|
|
|
|
* Añadido archivo language.txt en el directorio raiz, para que sea mas facil
|
|
hacer traducciones. El que haga alguna traducción nueva, que la mande
|
|
a ediv@divsite.net para que la implementemos en el language.c. (Er_Makina)
|
|
|
|
|
|
29/11/2001
|
|
----------
|
|
|
|
* Añadido soporte multi-idioma (ojo, la traduccion al portugues esta por
|
|
terminar, y el #ifdef de detectar_idioma lo puse mal como WIN322 o algo asi
|
|
pa probar como rularia en linux. Probad a trastear con la variable de
|
|
entorno LANG... ;) (Er_Makina)
|
|
|
|
|
|
26/11/2001
|
|
----------
|
|
* He limpiado el encrypt.c del proyecto encrypt, ahora es hasta legible xD.
|
|
(Daijo)
|
|
|
|
* Los incluides, workspaces y librerias de ZLIB y SDL han sido eliminadas como
|
|
parte del codigo de eDiv. (Daijo)
|
|
|
|
* El archivo 'ediv 2ª etapa.txt' tambien lo he quitado. (Daijo)
|
|
|
|
* He arreglado unas incompatibilidades del STUB con las cabeceras de Windows,
|
|
en
|
|
concreto con WINBASE.H que tenia definiciones de lstrcpy, lstrcat y lstrlen.
|
|
Ahora si esta definido windows, las 'undefine' antes de ser vueltas a definir
|
|
en el stub :). (Daijo)
|
|
|
|
* Nuevo workspace 'modules.dsw' en 'Visual C' con las DLL. (Daijo)
|
|
|
|
* _ml.c lo voy a reescribir, por lo tanto he eliminado casi todo su codigo y el
|
|
codigo en ediv.c que utilizaban alguna funcion suya. (Daijo)
|
|
|
|
* Hay unos cuantos folders menos que no usabamos (limpieza rules xD). (Daijo)
|
|
|
|
21/11/2001
|
|
----------
|
|
* He comentado del kernel.c las lineas que servian para el programa de rebote
|
|
de
|
|
la bola. No las elimineis, ya que esas lineas estan en bien. Lo que aun no se
|
|
es porque cuando hay mas de un proceso activo el stub peta. Cuando lo
|
|
solucione
|
|
volvere a activar esas lineas. ( Riseven )
|
|
|
|
20/11/2001
|
|
----------
|
|
* Viendo la descripcion de las variables locales predefinidas, he visto que
|
|
exis-
|
|
ten variables locales privadas del interprete que sirven para el
|
|
funcionamien-
|
|
to del interprete. Estas variables cuinciden casi exactamente con las que
|
|
hice en procs_s[], esto debe ser buena señal no? al parecer el funcionamiento
|
|
interno del interprete de dani y el que estoy haciendo se parecen mas de lo
|
|
que hubiera imaginado en un principio. Mejor, asi es menos probable que nos
|
|
aparezcan errores inesperados de incompatibilidad :)
|
|
( Riseven )
|
|
|
|
* He hecho que el stub cargue "bola.bmp" en imgs[0] para poder utilizar de
|
|
grafi-
|
|
co 0, todos los procesos se visualizan en la posicion que indice su X e Y.
|
|
El stub peta si al llegar al frame hay mas de un proceso activo, aun no muy
|
|
bien el motivo. ( Riseven )
|
|
|
|
* He notado que la iloc_len es mas pequeña de lo que deberia ser, solo en
|
|
variables locales predefinidas ya hay 42, mientras que iloc_len vale 37.
|
|
( Riseven )
|
|
|
|
* He medido la velocidad del eDiv para modod 320x200, con un proceso cuyo graph
|
|
es una imagen de 25x25 pixels y e obtenido estos resultados:
|
|
CON DOUBLEBUFFERING SIN DOUBLEBUFFERING
|
|
Modo ventana: 106 fps 122 fps
|
|
Modo fullscreen: 64 fps 157 fps
|
|
( Riseven )
|
|
|
|
19/11/2001
|
|
----------
|
|
* Ya funciona correctamente la eliminacion de procesos ( antes siempre se
|
|
elimi-
|
|
naba el primer proceso ) esto era debido a que interprete() estaba mal.
|
|
( Riseven )
|
|
|
|
* Tras pelearme un poco con el ADA y JPF que ambos contenian fallos e
|
|
conseguido
|
|
que funcione correctamente el FROM :) No se muy bien que cosas soporta ya el
|
|
interprete, y que cosas utilizan mnemonicos no definidos aun.
|
|
( Riseven )
|
|
|
|
* Se me olvidaba, es NECESARIO utilizar <compiler_options _no_optimization;> ya
|
|
que aun no he hecho ningun mnemonico optimizado. ( Riseven )
|
|
|
|
* En stdout.txt podreis ver un debugger improvisado ;) , en cada paso escribe
|
|
el indice de codigo ( imem ), el numero de proceso activo ( num_proc, no con-
|
|
fundir con Id del proceso ), el indice de pila ( sp ) y el valor actual de la
|
|
pila ( pila[sp] )
|
|
( Riseven )
|
|
|
|
* Añadidas las variables locales al interprete, falta testearlo. Se trata de
|
|
los
|
|
mnemonicos AID y CID. AID suma id a la pila, y CID carga id en la pila. Esto
|
|
es debido a k las variables locales funcionan sumando id+offset_variable,
|
|
donde
|
|
id es el offset donde empiezan las variables locales del proceso
|
|
correspondien-
|
|
te, y offset_variable es el offset relativo. Los offset_relativos son iguales
|
|
para distintos procesos, si el offset relativo de X para un proceso es 19,
|
|
para
|
|
otra variable tb sera 19. ( Riseven )
|
|
|
|
* RNG ya esta hecho, bueno, en realidad no hace nada, pero si esta definido
|
|
DEBUG
|
|
si que hacia algunas cosas que no e puesto, no se si nos seran necesarias
|
|
para
|
|
nuestro debugger, si esto es asi ya sabeis donde faltan algunas rutinas :P
|
|
( Riseven )
|
|
|
|
* Ya se soporta SWITCHs :), los mnemonicos asociados son CSE Y CSR, y estan sin
|
|
testear. ( Riseven )
|
|
|
|
* Ya estan casi todos los menmonicos basicos, solo faltan algunos complicados
|
|
como
|
|
CPA, FUN o EXT, y algunos otros orientados unicamente a debug como RNG, DBG o
|
|
CHK.
|
|
Tecnicamente, si no se utilizan cadenas y utilizando la no_optimization, el
|
|
interprete ahora deberia estar preparado para soportarlo CASI TODO :).
|
|
( Riseven )
|
|
|
|
18/11/2001
|
|
----------
|
|
* He metido unos 30+ mnemonicos de EML, la mayoria de ellos testeados.
|
|
( Riseven )
|
|
|
|
16/11/2001
|
|
----------
|
|
* Creada procs_s[], esta estructura guarda informacion de los procesos activos,
|
|
posee datos como el indice actual del proceso ( en el k se quedo al llamar
|
|
a FRAME ), el graph, priority, x , y, id, y demas variables k tenga k
|
|
utilizar el kernel, para evitar tener k acceder a mem[] para buscar esos
|
|
datos.
|
|
Tambien guarda el tipo de proceso k es. ( Riseven )
|
|
|
|
* Incluidos los mnemonicos en el inte.h , copiados de compiler.h ( Riseven )
|
|
|
|
* Se inicializan las variables de posicion de codigo, globales, locales
|
|
publicas
|
|
y locales privadas. Se crea el proceso main y se mete a la lista de ejecucion
|
|
de procesos con lista_mete(). Creada la lista de ejecucion de procesos, se
|
|
llama proc_orden[], y guarda los procesos ordenados por priority, exactamente
|
|
lo que guarda es el indice correspondiente de procs_s[] ( Riseven )
|
|
|
|
15/11/2001
|
|
----------
|
|
|
|
* He comentado todo el code en C del eDivNoid, no borreis los comentarios, k
|
|
me vienen bien para programar el interprete ( Riseven )
|
|
|
|
8/11/2001
|
|
---------
|
|
|
|
* Implementada compilación cruzada: ahora es posible indicar el sistema
|
|
al que se quiere compilar con la opción -s, seguida del nombre del sistema
|
|
(deberá existir un fichero de stub con el nombre de ese sistema, ver si-
|
|
guiente punto) (Er_Makina)
|
|
|
|
* Implementado sistema de doble stub: uno con extensión .rel para compila-
|
|
ciones definitivas y otro con extensión .dbg para compilaciones de debug.
|
|
Para elegir si compilar el .rel o el .dbg se debe elegir "Select
|
|
configuration..." en el menú Build de Visual C y elegir por ejemplo
|
|
"Win32 Debug" para la versión .rel y "Win32 Debug con trazador" para la
|
|
versión .dbg. La diferencia entre los dos es que el .dbg se compila con
|
|
la macro DBG definida, y por tanto se activan las rutinas de depurado de
|
|
eDIV. (Er_Makina)
|
|
|
|
* El script makelib.bat también ha sido modificado para implementar lo de
|
|
los nuevos stubs y AHORA SE EJECUTA AUTOMÁTICAMENTE DESPUÉS DE COMPILAR
|
|
EL STUB, por lo que ya no hace falta hacerlo manualmente. Esto está
|
|
configurado en la pestaña "post-build step" en las opciones del proyecto
|
|
stub. (Er_Makina)
|
|
|
|
* Añadidas rutinas de stub y kernel de Riseven y |RooT|. (Daijo)
|
|
|
|
|
|
7/11/2001
|
|
---------
|
|
|
|
* Cambiado el 'magic' de la edivrun.lib de "dj!" a "eDIV Stub" (Er_Makina)
|
|
Nota: PROHIBIDO CAMBIARLO OTRA VEZ :PPPPPP
|
|
|
|
* El stub ahora descomprime el código y lo guarda en memoria. (Er_Makina)
|
|
|
|
* La clave de encriptación, el 'magic' de la edivrun.lib y otros datos
|
|
que son comunes a varios programas ahora se encuentran en el archivo
|
|
shared.h para poder modificar algun dato sin tener que hacerlo en varios
|
|
ficheros a la vez (Daijo)
|
|
|
|
* encrypt.c ordenado con sangrados de texto (Daijo)
|
|
|
|
* Nota: los programas que usan la zlib fallan al ejecutarlos en una makina
|
|
con micro AMD y Windows XP. No sucede cuando se compila con Visual C++ 7
|
|
(Framework .NET beta2) (Daijo)
|
|
|
|
|
|
29/6/2001
|
|
---------
|
|
|
|
* Corregidos miles de bugs de la versión para Win32. ':) Ahora se lee el
|
|
fichero prg en modo "rb" en vez de "r" ya que el gracioso de güindows
|
|
en modo "r" te sustituye los CRLF por LF a secas >:( y el programa no
|
|
resultaba tan grande como el tamaño del propio archivo, por lo que
|
|
encontraba "caracteres no reconocidos" (basura) antes de llegar al EOF
|
|
(el carácter de ASCII 0).
|
|
|
|
* Añadida opción -c o --check que hace que no se guarde el exe. Útil para
|
|
comprobar sintaxis, sacar listados, etc sin sobreescribir el exe actual
|
|
o simplemente sin malgastar espacio (y el trabajo de borrar el exe) xD
|
|
|
|
* Comenzada documentación... de solo mirar el indice ya da la sensación
|
|
de estar leyendo una tesis doctoral... xD También comencé una referencia
|
|
de EML pero me acabé aburriendo así que ya lo terminaré un día que esté
|
|
realmente aburrido y no tenga ganas de hacer otra cosa :p
|
|
Por cierto, la introducción me ha salido muy chunga, parece como si
|
|
hubiera escrito un anuncio del div3 o algo asi :( así que el que quiera
|
|
modificarla que lo haga por favor, o mejor dicho hacedlo, ke seguro ke
|
|
teneis mas inspiracion ke yo xD
|
|
|
|
(Er_Makina)
|
|
|
|
|
|
28/6/2001
|
|
---------
|
|
|
|
* Re-construidos proyectos para Win32, he puesto los includes de la zlib y
|
|
SDL en /inc, y sus libs correspondientes en /zlib. En /src/visual c está
|
|
el workspace con el ediv, stub y encrypt. Cada dll tiene su propio work-
|
|
space en el directorio de su source.
|
|
|
|
* Añadida la ruta absoluta del PRG en Win32 al compilar en modo debug.
|
|
|
|
* Ligeramente modificado el formato de los EXE, ahora se añade el tamaño de
|
|
los datos comprimidos después del tamaño de los datos descomprimidos. El
|
|
numerito tiene formato de unsigned long, que no recuerdo ahora mismo
|
|
cuantos bytes eran.
|
|
|
|
* Parece que hay un fallo en Win32 al reconocer qué DLLs se usan en el PRG.
|
|
Al compilar C.PRG, sólo reconoce que se usa edivstd.dll, cuando en reali-
|
|
dad debería usar también sample.dll. Esto se puede arreglar con una
|
|
sesión de debug pero ahora no tengo tiempo, mañana me ocuparé de eso.
|
|
(o esta noche si no me entra sueño xD)
|
|
|
|
* He modificado un poco el export.h para hacerlo más compatible con win32.
|
|
He comentarizado también el asunto del DllMain, tanto en el export.h como
|
|
en las DLLs, ya que aparte de darme problemas en win32, no tenía utilidad
|
|
en Linux.
|
|
|
|
(Er_Makina)
|
|
|
|
|
|
27/6/2001
|
|
---------
|
|
|
|
* Arreglado un bug por el cual se echaba a perder todo el eml. En un sitio
|
|
escribí mem en vez de imem y... ^_^ También he arreglado la generación de
|
|
la rutina de carga de DLLs, ahora recuerdo que no se puede volver de un
|
|
JMP con un RET xD
|
|
|
|
* Arreglado ELSEIF. No volveré a ser tan chapuzas, lo juro xD
|
|
Y esta vez lo he comprobado bien, repasando el desensamblado y todo :)
|
|
|
|
* Se escribe stub_size al final del ejecutable
|
|
|
|
* La opción -d (--debug) ya funciona. El formato del ejecutable de debug es
|
|
el siguiente: primero el stub y el EML, como en los ejecutables normales.
|
|
Luego, la ruta absoluta del PRG (hay que terminar la función escribe_lin
|
|
para hacer esto en win32). Luego la información que relaciona el bytecode
|
|
con el texto (lin), es decir, indica donde empieza y donde termina cada
|
|
sentencia tanto en el bytecode (mem[]) como en el prg. Naturalmente esto
|
|
es útil para el trazador. Luego viene la tabla de objetos (dbg), como en el
|
|
fichero .tab pero más críptico, obviamente. Primero está el volcado de la
|
|
tabla de objetos, sustituyendo los nombres por offsets a su nombre
|
|
correspondiente en el volcado de vnom (vector de nombres), que es lo que
|
|
viene justo después. Por último, se escriben 3 valores: el comienzo de la
|
|
sección "lin" en el fichero (justo donde termina el bytecode y empieza la
|
|
ruta del prg), el comienzo de la sección "dbg", y stub_size. Ah, el
|
|
ejecutable se marca como debug en el bit 6 de mem[0] (+64).
|
|
|
|
(Er_Makina)
|
|
|
|
|
|
26/6/2001
|
|
---------
|
|
|
|
* Opciones de línea de comando. Ahora se puede elegir generar una tabla de
|
|
objetos *.tab (--table) y/o el listado EML (--list). La opción --debug no
|
|
está disponible todavia. He metido estas nuevas opciones en listados.c
|
|
|
|
* Arreglado el estropicio que borró todos los mensajes de error a partir
|
|
del 55, por un despiste mio, que me puse un ediv.c que me pasó daijo y no
|
|
estaba actualizado
|
|
|
|
* Desactivado el sistema de "multi-error", lo he metido en #ifdefs por si
|
|
alguien en algun futuro quiere activarlo o por si le hace ilu.
|
|
|
|
* Arreglado horrible bug por el cual no se borraba vhash[] y las propias
|
|
dlls daban errores del tipo "el nombre no es nuevo" después de la
|
|
precompilación.
|
|
|
|
y creo ke ya ta... (Er_Makina)
|
|
|
|
|
|
25/6/2001
|
|
---------
|
|
|
|
* Terminado el proceso de remcompilación para ahorrar la memoria de las
|
|
DLLs no usadas
|
|
|
|
* Ya se crea el EXE, por ahora tiene la misma estructura que los EXE de
|
|
DIV2
|
|
|
|
(Er_Makina)
|
|
|
|
|
|
24/6/2001
|
|
---------
|
|
|
|
* Modularizadas las rutinas de carga de DLLs (Daijo)
|
|
|
|
* Terminada sección PRIVATE, código principal y PROCESOS (función
|
|
sintactico()). (Er_Makina)
|
|
|
|
* Terminadas todas las sentencias (función sentencia()) y añadido ELSEIF,
|
|
ojo que LTLEX.DEF ha sido modificado, y obviamente los #defines de p_xxxx
|
|
de PARSER.H tambien (Er_Makina)
|
|
|
|
|
|
22/6/2001
|
|
---------
|
|
|
|
* Completadas las variables y constantes predefinidas en edivstd.dll
|
|
|
|
* Terminada sección LOCAL
|
|
|
|
* He comprobado y arreglado algunos errores, el 39 y algun otro que no me
|
|
acuerdo
|
|
|
|
(Er_Makina)
|
|
|
|
|
|
21/6/2001
|
|
---------
|
|
|
|
* Terminada sección GLOBAL con todas sus declaraciones. ':)
|
|
|
|
* Corregidos algunos detalles y fallos de las expresiones constantes.
|
|
|
|
* POR HACER: Provocar y comprobar TODOS los errores :p
|
|
|
|
* Ah he hecho un icono del ediv, ediv.ico ^_^
|
|
|
|
(Er_Makina)
|
|
|
|
|
|
20/6/2001
|
|
---------
|
|
|
|
* EVALUADOR DE EXPRESIONES CONSTANTES TERMINADO :D
|
|
Bueno, en realidad casi, tan sólo falta comprobar todos los errores. Como
|
|
el DIV original detenía la compilación al encontrar un error y eDIV no,
|
|
hay que añadir código después de las llamadas a error() para hacer que el
|
|
parsing siga como si no hubiera pasado nada. A veces esto se arregla con
|
|
poner simplemente lexico(); pero la mayoría de las veces hay que hacer
|
|
algo más para ignorar el error.
|
|
|
|
* Tambien he incluido el generador de código y el optimizador peephole, y
|
|
de hecho ya sería capaz de compilar cosas, aunque sólo a la memoria (es
|
|
decir, al buffer mem[]). De momento solo reconoce el compiler_options.
|
|
Paciencia.
|
|
|
|
* Como podeis ver, ya hay unos cuantos mensajes de error, un problema es
|
|
que no sabemos cómo tenía el DIV original organizados los errores, así
|
|
que hay que investigar por qué se produce el error y qué mensaje le
|
|
viene bien. He usado mensajes originales del DIV2, fijándome en el
|
|
errores.html que me hice a partir de la ayuda del DIV2. Por desgracia no
|
|
están en orden :(
|
|
|
|
* En el DIV2 hay errores que tienen varios códigos para un solo mensaje,
|
|
esto es para que la ayuda de ese error sea más específica en el contexto
|
|
en que se ha producido el error. Aquí yo he puesto un solo código para
|
|
cada mensaje, si más tarde queremos hacer la ayuda multi-contexto ya se
|
|
cambiará.
|
|
|
|
* Aun no podemos considerar expresion.c terminado, ya que queda el código
|
|
para la evaluación de sentencias de asignación, expresiones variables y
|
|
condiciones.
|
|
|
|
* Se que el codigo, tal como esta ahora es ilegible, (especialmente
|
|
expresion.c y parser.c), pero me hubiera llevado semanas ordenarlo tal
|
|
como lo he hecho con plexico() por ejemplo, ya me pondré un día a hacerlo
|
|
y de paso destriparlo bien y poner todos los comentarios que pueda (por
|
|
ahora he puesto comentarios a todos los errores, para saber cuáles son)
|
|
|
|
* Ah, y he hecho una dll llamada "edivstd" se que ya la odiais de solo ver
|
|
el nombre, pero es necesaria una libreria "estandar" para cosas tan basicas
|
|
e inclasificables como las opciones de compilacion (ya implementadas, por
|
|
cierto :D ), la estructura local reserved, las locales father, smallbro,
|
|
bigbro, etc. Estas cosas pertenecen al gestor de procesos y eso es algo
|
|
que viene incluido en el stub.
|
|
|
|
(Er_Makina)
|
|
|
|
|
|
18/6/2001
|
|
---------
|
|
|
|
* La versión de Linux ya carga y registra los *.so al igual que la de win
|
|
hacía con las *.dll. Terminado el ediv_export.c, ya soporta datos locales
|
|
aunque aún hay que retocar un poco la exportación de funciones. Por
|
|
cierto, se me olvidó decir que eliminé el rollo del /src/gcc-linux porque
|
|
ahora que tenemos makefiles decentes ya no sirve para nada. (Er_Makina)
|
|
|
|
|
|
17/6/2001
|
|
---------
|
|
|
|
* La versión de Linux ya tiene todos sus makefiles y ya encuentra las *.so.
|
|
He modificado ligeramente el export.h para hacerlo compatible y he inclu-
|
|
ido una dll de muestra, sample. Aun no he probado a compilarla en win32.
|
|
(Er_Makina)
|
|
|
|
|
|
15/6/2001
|
|
---------
|
|
|
|
* Incluyo los ficheros necesarios para compilar bajo Linux, en src/gcc-linux
|
|
Hay que leer el archivo "MUY IMPORTANTE" que se encuentra en ese directorio.
|
|
Estos archivos solo son para desarrollo, es decir que requieren las rutas
|
|
relativas del CVS y por tanto NO DEBEN SER INCLUIDOS EN LOS PAQUETES DIS-
|
|
TRIBUIDOS. Algún día meteré ahí un directorio con un script que genere
|
|
automáticamente el paquete de código fuente para Linux, al estilo GNU.
|
|
(Er_Makina)
|
|
|
|
|
|
14/6/2001
|
|
---------
|
|
|
|
* Pakeo rapido, version con soporte para linux aunque aun por terminar. Ya esta
|
|
hecha la sustitucion de _findfirst y _findnext aunque aun queda por terminar
|
|
de
|
|
implementar el soporte .so.
|
|
Por hacer: terminar soporte .so y hacer el SDK para los .so (quizas haga
|
|
falta un export.h distinto?) a ser posible que se pueda utilizar el mismo src
|
|
para hacer una .dll y un .so, please mejor dicho esto es OBLIGATORIO
|
|
(Er_Makina)
|
|
|
|
|
|
15/04/2001
|
|
----------
|
|
|
|
* Añadido CheckWindowsVersion a Dll_Load.c. Ahora esta funcion se
|
|
llama justo antes de InitialiceDllLoad para ajustar g_bIsWinNT a
|
|
1 o 0, dependiendo si usamos WINNT/WIN2K o Win'9x/Me. (Daijo).
|
|
|