Emulador de Macintosh 128k En Basic (FreeBasic)
Publicado: 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.
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:
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:
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
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:
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
