Página 1 de 3

Emulador de Macintosh 128k En Basic (FreeBasic)

Publicado: 13 Jul 2013, 09:53
por jepalza
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 6551 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 6551 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

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

Publicado: 13 Jul 2013, 13:10
por mentalthink
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...

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

Publicado: 13 Jul 2013, 13:13
por imd
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......

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

Publicado: 13 Jul 2013, 15:37
por princemegahit
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.

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

Publicado: 13 Jul 2013, 15:47
por mcleod_ideafix
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)

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

Publicado: 13 Jul 2013, 16:59
por mentalthink
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.

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

Publicado: 13 Jul 2013, 18:35
por jepalza
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.

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

Publicado: 13 Jul 2013, 19:50
por mentalthink
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?¿...

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

Publicado: 13 Jul 2013, 20:08
por zup
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.

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

Publicado: 14 Jul 2013, 06:45
por jepalza
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,