Emulador de Macintosh 128k En Basic (FreeBasic)

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

Emulador de Macintosh 128k En Basic (FreeBasic)

Mensajepor jepalza » 13 Jul 2013, 09:53

Hace unos meses publiqué un avance en un emulador de CPU Motorola 68000 escrito enteramente en Basic (con el lenguaje libre FreeBasic). Ya comenté que al final logré una emulación casi perfecta, lo suficientemente perfecta, como para emular un montón de ROMs, como por ejemplo, monitores de ASM, programaciòn Basic (TinyBasic 68k, de dominio público), etc.

511px-Macintosh_128k_transparency.jpg
511px-Macintosh_128k_transparency.jpg (64.66 KiB) Visto 6556 veces


Bueno, pues entre ayer y hoy, movido por la curiosidad, elegí emular un Macintosh 128k (de los mas viejos y sencillos), y elegí este, por que emplea un "hard" muy simple, con poca RAM y ROM, y un modo gráfico muy simple.
Con un texto en la mano sobre las especificaciones de la máquina, hice los cambios necesarios al emulador de 68000, y este es el resultado:

emulador mac128 en basic.png
emulador mac128 en basic.png (66.99 KiB) Visto 6556 veces


Arranca, pero da un error 014120 (algo totalmente lógico). El error, según esta página -->ERRORES comunes en Mac, indica un error en la alimentación de 5v. (algo realmente tonto, en un emulador), pero que es un indicativo, de que funciona.
No sé si seguiré avanzando con el emulador hasta terminarlo al 100%, por que sería complicarme la vida, y reinventar la rueda, pero unos días mas si estaré con él, a ver si al menos, logro ver como carga un OS7.1 o una cosa así.
Tendría que emular la disquetera (en ello estoy), el teclado y el ratón como poco. El sonido paso de emular, por que son simples pitidos, y ademas, no soy músico, no sería capaz de afinar.

Lo divertido de estas cosas, es ver como, con unas pocas líneas de código añadidas a un emulador ya existente (en este caso, mi emulador de 68000), consigues arrancar un sistema retro del año de la polka. Solo he tenido que añadir la ROM a cargar, una pequeña trampa en el arranque (boot) para que no haga el test de hard (por que sino, no arrancaba), y una pequeña y simple emulación de la tarjeta de vídeo.

por ejemplo, la emulación del vídeo de un Mac 128k (y por ende de un 512k), es tan simple como esto:

Código: Seleccionar todo

Sub Pon_Pantalla(r68 As e68000_s)
   Dim f As Integer
   Dim x As Integer=0
   Dim y As Integer=100
   
      saltarsecuadros+=1
   If saltarsecuadros<8000 Then Exit Sub
      saltarsecuadros=0
     
   For f=0 To VRAMSIZE-1
      a=ram(DIRVRAM+f)
      aa$=Bin(a,8)'+cc$
      For g=0 To 7
        PSet (x+g,y),Val(Mid(aa$,g+1,1))+7
      Next g
      x+=8
      If x=512 Then y+=1:x=0
   Next

End Sub

Ya que solo emplea un bit (sí, como suena, ¡1 bit!) de colores, no tiene profundidad, y alcanza 512x342 píxeles de resolución.

Otra cosa divertida de la emulación propia, es la de poder trampear cosas, como por ejemplo, ponerle 4 megas de RAM, en lugar de 128k como viene de serie :P

Avatar de Usuario
mentalthink
Amiga 2500
Amiga 2500
Mensajes: 2840
Registrado: 11 Abr 2010, 15:06
Gracias dadas: 45 veces
Gracias recibidas: 14 veces

Re: Emulador de Macintosh 128k En Basic (FreeBasic)

Mensajepor mentalthink » 13 Jul 2013, 13:10

Pues muy interesante si lo haces funcionar supongo que pondrás un video, no?¿...
Esto es una tarea pendiente que tengo, supongo que con esté tipo de códigos, hacerse por ejemplo un emulador de disketera debe resultar sencillo, para cacharros reales...

Y nos irás enseñado...

Cuando empezé con GLbasic no daba un duro por los Basic, que equivocado estaba pensando en el del CPC, que también es una pasada a día de hoy flipo con cosas como funciones, pero claro con 8 años hay palabros que no se entienden...

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 Macintosh 128k En Basic (FreeBasic)

Mensajepor imd » 13 Jul 2013, 13:13

gran trabajo @jepalza una pena que ese Basic no haya para OSX si no le metía mano, de momento me voy a decantar por HTML5 para juegos retro y remakes......

Avatar de Usuario
princemegahit
Amiga 1200
Amiga 1200
Mensajes: 1693
Registrado: 19 Jul 2012, 12:01
Sistema Favorito: (Otro)
primer_sistema: Spectrum +2
consola_favorita: Atari 2600
Primera consola: Atari 2600
Ubicación: C:\JUEGOS
Gracias dadas: 176 veces
Gracias recibidas: 100 veces

Re: Emulador de Macintosh 128k En Basic (FreeBasic)

Mensajepor princemegahit » 13 Jul 2013, 15:37

Lo tuyo con el Basic es peligroso, espero que consigas arrancar aunque sea un System de los primeros. Ten cuidado no te centres en los últimos, porque no se hasta que punto puede funcionar, viendo la siguiente tabla de la wikipedia se ve que a partir de cierto sistema deja de ser compatible con los primeros modelos, quizá si la emulación es muy básica puede que un system 6 o 7 no funcione pero un 5 o inferior si.

Avatar de Usuario
mcleod_ideafix
Amiga 2500
Amiga 2500
Mensajes: 5316
Registrado: 06 Oct 2009, 04:12
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Vectrex
Primera consola: TV Games/Pong Clone
Ubicación: Jerez de la Frontera
Gracias dadas: 12 veces
Gracias recibidas: 54 veces
Contactar:

Re: Emulador de Macintosh 128k En Basic (FreeBasic)

Mensajepor mcleod_ideafix » 13 Jul 2013, 15:47

Mmmmm..... tengo que echarle un vistazo de verdad a ese FreeBASIC. ¿La emulación es a velocidad 100%? ¿Qué velocidad tiene el micro donde estás emulando?
Es francamente impresionante... después de esto no le puedo hacer ascos a un emulador hecho en JAVA o en .NET ... :) (salvo que requiera un quad core para ejecutar un emulador como ese)
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista

Avatar de Usuario
mentalthink
Amiga 2500
Amiga 2500
Mensajes: 2840
Registrado: 11 Abr 2010, 15:06
Gracias dadas: 45 veces
Gracias recibidas: 14 veces

Re: Emulador de Macintosh 128k En Basic (FreeBasic)

Mensajepor mentalthink » 13 Jul 2013, 16:59

Yo no he tocao el Freebasic, pero el GLbasic por si necesitas cosas para mobiles es lo mejor, no sé si esté Basic tendrá lo de la programación orientada o objetos, cosa que GLBasic si, de hecho glbasic es C++ pero con los comandos de siempre, incluso a mi me parece que el C# es eso, un C++ más productivo y facilón.

jepalza

Re: Emulador de Macintosh 128k En Basic (FreeBasic)

Mensajepor jepalza » 13 Jul 2013, 18:35

EL freebasic está mas orientado a compatibilidad con QBASIC, pero tambien tiene cosas del C++, como punteros y objetos. Solo que yo, simplemente, no los uso. En alguna ocasión he usado punteros, pero intento no hacerlo, de modo que el Basic, sea lo mas retro posible.

En cuanto a la velocidad del emulador, no la he medido, pero no es nada lento (eso sí, en un I7-3200). Hasta que no consiga cargar algo de un disco no lo sabré (por cierto, princemegahit, tienes razón, lo mas "gordo" que puedo probar en el Mac128 es un System 3.0, pero algo es algo).

El GlBasic ya se ha comentado alguna vez, lo conozco y lo he probado, pero realmente, con conocer FreeBasic, me vale y sobra por ahora, y gracias a él, llevo ya unos cuantos emuladores escritos en basic "puro y duro", ademas, al ser un basic limpio, sería fácil llevarlo a otros sistemas.

Ahora mismo me estoy peleando con la forma de mapeos de la ROM/RAM que emplea el Mac128/512, que es un poco liante, a ver si consigo emular el hard básico y que me muestre el icono del "disquete con interrogación" típico.

Si logro hacerlo andar medio bien, publico los fuentes, que mi idea no es guardarlos como si fueran de oro para ganar dinero. Hasta ahora, todos los fuentes de emuladores que he hecho desde que empecé a emular, allá por el 94, han sido libres y circulan por algún lugar de la red.

Avatar de Usuario
mentalthink
Amiga 2500
Amiga 2500
Mensajes: 2840
Registrado: 11 Abr 2010, 15:06
Gracias dadas: 45 veces
Gracias recibidas: 14 veces

Re: Emulador de Macintosh 128k En Basic (FreeBasic)

Mensajepor mentalthink » 13 Jul 2013, 19:50

No si seguro que el Basic que usas tú, como cualquier basic que haya en la red bueno, hay uno de Linux llamado Gambas que está ahora para todos los sitemas y hace cosas muy chulas, algo similar al Visual Basic, pero totalment gratis... a mi el tema de GLbasic es por que está muy orientado a mobiles, y tiene un chorrón de plataformas , que con solo decirle compilar pues ya está... a parte lo bueno de los Basic es eso, que no cambias de C++ a python, que cambia la sintaxis... en realidad, yo lo veo asi, que da igual si programas en python, Basic C++ o Boo, que lo importante es saber como se hacen los "trozos" de código para tal cosa u otra, que C++ lo hace todo, pero depende que Basic como el que tu usas pues también, lo de recomendar siempre el tema de GLbasic es por el apartado mobil... Por ejemplo yo me hecho chorradillas de controlar la luz de casa con un win 6.5 GLbascic el arduino y unbluetooth, y claro la simplicidad que da todo pues haces una cosa, que vete a saber lo que te clavan en algun sitio por eso...

Que para nada pretendo decir si mejor o peor, esto es como el 3D aqui importa el que lleva el volante, que si el Max o el Maya o leches en vinagre, soft de 30€ funcionan mejor que el max de 1.500.000 de pelas.

Eso si que quede claro que no soy comercial de GLbasic, lo que pasa que a mi ese lenguaje me abrio las puertas a la programación, antes de eso que usaba dark basic, no entendia nada me ponía con C++ no salia, ni con otro lenguaje, por eso quizás de usuario o usuario que lea estás lineas le puede parecer un soft interesante, a parte de no cobrar precios abusivos como delphi o el C# este de pago que vale una pasta...

*** Por cierto una duda Delphi, es pascal o una mejora de Pascal, no?¿...

Avatar de Usuario
zup
Amiga 2500
Amiga 2500
Mensajes: 3013
Registrado: 04 Sep 2009, 20:07
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Nintendo DS/3DS
Primera consola: Nintendo GameBoy
Ubicación: Navarra
Gracias dadas: 86 veces
Gracias recibidas: 359 veces
Contactar:

Re: Emulador de Macintosh 128k En Basic (FreeBasic)

Mensajepor zup » 13 Jul 2013, 20:08

Delphi creo que es "Visual Pascal". Es decir, tienes un entorno como el de Visual Basic, donde se asignan acciones a los diferentes elementos, pero el lenguaje que hay debajo es un dialecto de Pascal.
I have traveled across the universe and through the years to find Her. Sometimes going all the way is just a start.
Además vendo cosas!

jepalza

Re: Emulador de Macintosh 128k En Basic (FreeBasic)

Mensajepor jepalza » 14 Jul 2013, 06:45

mentalthink escribió:Eso si que quede claro que no soy comercial de GLbasic

¡diox! tio, me lo has quitado de la boca. Estaba en un tris de preguntarte tu interes por ofrecer siempre el GLBasic, cuando resulta que es comercial (y nada barato, que son 80€).

Sigo prefiriendo los lenguajes libres, no le debes nada a nadie, se actualizan un montón, etc. (ademas, el freebasic, tambien existe para Linux), y admite "chorrones" de librerías , incluídas algunas de C, y eso le da un abanico enorme de trabajo (por ejemplo, admite las DJGPP, las "Allegro", OpenAL, Vorbis...)

Añado: acabo de mirar su web, y me acabo de acordar por que no uso GLBasic: por "mamones", así de simple. Si no pagas, no usas, y a mi ese concepto no me va. La versión libre no tiene librería 3D (para mi esencial), no tiene otras plataformas que no sean PC, linux, mac, y no permiten distribuir lo que haces, si recibes dinero por ello. Ademas, si usas alguno de los módulos "premium", se autolimita a solo 10 minutos de uso.
A mi eso no me gusta, es muy autoritario. El freebasic (por poner uno de los muchos que hay libres), lo tiene todo, sin pagar,


Volver a “Emuladores”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 4 invitados