Emulador de CPU Motorola 68000 en FreeBasic

Foro dedicado a la emulación de sistemas clásicos en el PC o en otros sistemas.
jepalza

Emulador de CPU Motorola 68000 en FreeBasic

Mensajepor jepalza » 12 Abr 2013, 15:08

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)
Adjuntos
68000_FreeBasic_Emulador_1.JPG
68000_FreeBasic_Emulador_1.JPG (32.58 KiB) Visto 9495 veces

Avatar de Usuario
imd
Atari 1040 STf
Atari 1040 STf
Mensajes: 830
Registrado: 16 Jul 2010, 15:58
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: (Otro)
Primera consola: (Otro)
Gracias dadas: 1 vez
Gracias recibidas: 1 vez
Contactar:

Re: Emulador de CPU Motorola 68000 en FreeBasic

Mensajepor imd » 12 Abr 2013, 15:37

=D> olé y olé =D>

Avatar de Usuario
jltursan
Amiga 2500
Amiga 2500
Mensajes: 4028
Registrado: 13 Oct 2006, 19:45
Sistema Favorito: MSX
primer_sistema: Dragon
Ubicación: Serracines, Madrid, España
Gracias dadas: 57 veces
Gracias recibidas: 157 veces
Contactar:

Re: Emulador de CPU Motorola 68000 en FreeBasic

Mensajepor jltursan » 12 Abr 2013, 17:35

Pues sí =D>

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

jepalza

Re: Emulador de CPU Motorola 68000 en FreeBasic

Mensajepor jepalza » 29 Abr 2013, 21:25

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 9383 veces

Avatar de Usuario
jotego
Atari 1040 STf
Atari 1040 STf
Mensajes: 657
Registrado: 16 Ene 2013, 23:25
Sistema Favorito: Atari ST
primer_sistema: Amstrad CPC
consola_favorita: Sony PlayStation 2
Primera consola: Atari Lynx
Ubicación: Valencia (España)
Gracias dadas: 27 veces
Gracias recibidas: 44 veces
Contactar:

Re: Emulador de CPU Motorola 68000 en FreeBasic

Mensajepor jotego » 29 Abr 2013, 22:41

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

jepalza

Re: Emulador de CPU Motorola 68000 en FreeBasic

Mensajepor jepalza » 30 Abr 2013, 13:54

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 :-$ )

Avatar de Usuario
_ThEcRoW
Amstrad PCW 8256
Amstrad PCW 8256
Mensajes: 174
Registrado: 05 Oct 2007, 23:06
Sistema Favorito: (Otro)
primer_sistema: Amstrad PCW
consola_favorita: Nintendo SNES
Primera consola: Atari 2600
Gracias dadas: 1 vez

Re: Emulador de CPU Motorola 68000 en FreeBasic

Mensajepor _ThEcRoW » 07 May 2013, 17:55

Emulacion completa de los custom chips del amiga en basic???

jepalza

Re: Emulador de CPU Motorola 68000 en FreeBasic

Mensajepor jepalza » 07 May 2013, 19:41

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

Avatar de Usuario
jotego
Atari 1040 STf
Atari 1040 STf
Mensajes: 657
Registrado: 16 Ene 2013, 23:25
Sistema Favorito: Atari ST
primer_sistema: Amstrad CPC
consola_favorita: Sony PlayStation 2
Primera consola: Atari Lynx
Ubicación: Valencia (España)
Gracias dadas: 27 veces
Gracias recibidas: 44 veces
Contactar:

Re: Emulador de CPU Motorola 68000 en FreeBasic

Mensajepor jotego » 07 May 2013, 20:03

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!

jepalza

Re: Emulador de CPU Motorola 68000 en FreeBasic

Mensajepor jepalza » 07 May 2013, 21:25

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.


Volver a “Emuladores”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado