Página 1 de 3

Emulador de CPU Motorola 68000 en FreeBasic

Publicado: 12 Abr 2013, 15:08
por jepalza
Este es un emulador que comencé en diciembre pasado, pero lo paré por falta de tiempo (y de ganas, todo hay que decirlo), y ayer lo retomé con la mente mas fresca, y logré por fín un gran avance.

El emulador está hecho en Basic con el FreeBasic, y lo he hecho partiendo de un "simulador" (que no "emulador") escrito en C++, llamado "68k_sim" o algo por el estilo.

Me puse a convertir el C++ a Basic, al principio "a pelo", pero al final, opté por hacerme un traductor "C a Basic" rapidillo, y el resto acabarlo a mano. El resultado:¡Un desastre en toda regla! Problemas de punteros, de funciones complejas, y mil historias que me hicieron aparcar el proyecto. Pero Entre ayer y hace un momento, me he puesto las pilas, y he conseguido un primer avance bastante agraciado.

Para poder probar el emulador, he cogido un fuente ya existente en la red, de un Basic llamado "TinyBasic" del año de la "Polka", que está preparado para los 68000, lo he compilado , lo he pasado por el emulador, y tras algunos retoques, he conseguido un primer funcionamiento que me ha dejado pasmado.

Por ahora, y mientras no lo acabe al menos al 90%, no dejo los fuentes en ningún lado, pero un primer ejecutable con el TinyBasic se puede probar, bajándolo de GoogleDrive, AQUI

El emulador está en fase super-ultra Alfa 0.00001, de modo, que aunque permite ver su funcionamiento, y el basic funciona aparentemente, a la hora de la verdad fallan docenas de cosas. Pero al menos, deja escribir comandos simples, y se pueden hacer algunos programillas básicos (mirar en el pantallazo que he puesto, un simple programa). Todavía no funcionan los cálculos numéricos, solo los de texto, por eso, el comando PRINT no imprime nada numérico ni hace cálculos, y acaba dando error. Pero un simple programa como '10 PRINT "prueba" 20 GOTO 10' funciona sin problemas. Eso sí, la velocidad aún, deja muuuucho que desear, primero, por que es Basic, segundo por que está emulando un terminal de texto y uno gráfico, con depuración de variables a tiempo real (o sea, que cada ciclo de la CPU, es tambien un ciclo de depurado), y tercero, por que el código no está nada limpio aún. Todo eso hace que el emulador vaya mas lento que un Spectrum <XX .

En esta primera versión, emulo un terminal de texto CP/M, justo para poder enviarle los textos que salen del Basic TinyBasic, para nada mas. Las entradas desde el teclado DEBEN hacerse en el terminal gráfico, ya que el de texto es solo salida.

Si queréis ver los comandos del Tinybasic (son muy pocos y básicos) podéis descargarlo de AQUI.

Lo gracioso de este asunto, es el hecho de tener un emulador de 68000 escrito en basic, solo para emular otro basic, mucho mas basico <XX (por ahora, por que si esto sigue adelante y logro que funcione casi al 100%, puedo emular en Basic una Megadrive, un Mac o un Amiga o un ST, o eso espero)

Re: Emulador de CPU Motorola 68000 en FreeBasic

Publicado: 12 Abr 2013, 15:37
por imd
=D> olé y olé =D>

Re: Emulador de CPU Motorola 68000 en FreeBasic

Publicado: 12 Abr 2013, 17:35
por jltursan
Pues sí =D>

Por lo menos didáctico (y divertido) lo es un rato :)

Re: Emulador de CPU Motorola 68000 en FreeBasic

Publicado: 29 Abr 2013, 21:25
por jepalza
Aprovechando un hueco en mi apretada agenda (clon spectrum, emulador StarRider, impresora 3D, etc) he revisado el emulador de 68000 en Basic, y he logrado arreglar algunas instrucciones mas, (como DIVU o SUBX) que permiten ahora al emulador ejecutar el basic con operaciones matemáticas, que en la version inicial no permitía.
Se puede descargar de AQUI.
Ni que decir tiene, que es una versión super-cutre-salchichera, a un 50% todavía de ser algo ideal, pero "tacita a tacita", cada vez es mas funcional. Menos queda para tener un Emulador completo en basic.
(ahora, como véis en la foto, se pueden escribir programas simples)
68000_FreeBasic_Emulador_1.JPG
68000_FreeBasic_Emulador_1.JPG (42.58 KiB) Visto 9515 veces

Re: Emulador de CPU Motorola 68000 en FreeBasic

Publicado: 29 Abr 2013, 22:41
por jotego
Tengo mucha curiosidad por ver cómo queda el código en un Basic moderno. Dicho sea de paso... ¡Mira que te gusta el Basic! #-o

Re: Emulador de CPU Motorola 68000 en FreeBasic

Publicado: 30 Abr 2013, 13:54
por jepalza
jotego escribió:Tengo mucha curiosidad por ver cómo queda el código en un Basic moderno. Dicho sea de paso... ¡Mira que te gusta el Basic! #-o


YA es un basic moderno. Quizás lo interpretas mal al ver un Basic "viejo" funcionando. Sé que es difícil de entender, lo explico en el primer mensaje. Intento ser mas claro: Esto que ves es un emulador de una CPU 68000 escrito en un basic "moderno" (o sea, FreeBasic, mas moderno imposible, por que la última versión es de hace unos 6 meses, y es libre de uso), en el cual estoy emulando un Terminal CP/M con su ROM de 16k (en este caso un Basic del año de la Polka) , su RAM de 16K, su teclado y pantalla (terminal de vídeo a la vieja usanza, emulando a la vez el RS232), y con un pequeño módulo de CP/M (el "viejo conocido" operativo).
O sea, que es un Emulador en toda regla de un ordenador con un 68000 y 16k de RAM/ROM que en lugar de ejecutar un sistema operativo, ejecuta un Basic. Com olo haría un IBM-PC si no tuviera HD, que arrancaría por defecto el Basic integrado en la ROM.

El hecho de que vaya tan lento (por ahora) es por que emulo muchos módulos a la vez, y todo en tiempo real. Cuando esté depurado y acabado, la velocidad espero que se acerque a la real, de modo, que se pueda emular un Commodore A500, o como mínimo, una Sega Megadrive.

En cuanto a gustarme el Basic: no es que me guste, ES QUE LO ADORO!!!! (con el nací, crecí y me reproducí) (se quite el C :-$ )

Re: Emulador de CPU Motorola 68000 en FreeBasic

Publicado: 07 May 2013, 17:55
por _ThEcRoW
Emulacion completa de los custom chips del amiga en basic???

Re: Emulador de CPU Motorola 68000 en FreeBasic

Publicado: 07 May 2013, 19:41
por jepalza
_ThEcRoW escribió:Emulacion completa de los custom chips del amiga en basic???


Si, ¿por que no? Otra cosa, es que vaya a 2fps, o que solo funcione al 50% (por ejemplo, no modos HAM). Todo es posible con paciencia. Ten en cuenta, que los basic de hoy día, corriendo en pepinos Intel I7, no tienen nada que envidiar a un C++ corriendo en un Pentium III, y el amiga ya funcionaba en 2000 en los primeros Pentium, que hoy día superamos en potencia.

Re: Emulador de CPU Motorola 68000 en FreeBasic

Publicado: 07 May 2013, 20:03
por jotego
jepalza escribió:Si, ¿por que no? Otra cosa, es que vaya a 2fps, o que solo funcione al 50% (por ejemplo, no modos HAM). Todo es posible con paciencia.


El otro día escuchaba a uno de los mojon twins en el podcast del mundo del spectrum criticar a los que hacían extensiones de hardware para los sistemas clásicos, arguyendo que para navegar por internet o cualquier cosa así ya había ordenadores modernos. Parecía no darse cuenta de que para jugar, ya hay ordenadores modernos también. Otro de los mojon twins dio una opinión contraria: que esto lo hacemos por diversión, y que cada uno se divierte de una manera.

Yo estoy con él. Si a ti te gusta resolver problemas en Basic ¡adelante! A mí ahora me va a dar por las FPGA. ¡la cuestión es divertirse con lo retro!

Re: Emulador de CPU Motorola 68000 en FreeBasic

Publicado: 07 May 2013, 21:25
por jepalza
Las FPGA ya las he probado, y me parecen muy complejas. Me obligan a pensar mas de lo normal para hacer lo mismo que haría en basic en un "plis-plas". Y como bien dices, esto es cacharrero puro al mas estilo retro. Para cosas modernas, ya tenemos sistemas modernos.