Presentación del Scainet GMC-4 (Prototipo)

dancresp
Mensajes: 5858
Registrado: 13 Nov 2010 02:08
Ubicación: Barcelona
Agradecido : 443 veces
Agradecimiento recibido: 621 veces

Presentación del Scainet GMC-4 (Prototipo)

Mensajepor dancresp » 18 Mar 2023 22:09

El día había de llegar... y ha llegado!!! -thumbup

Después de muchos años desarrollando software y viendo proyectos hardware pasando por delante de mis narices, que me ponían los dientes largos, me he decidido a realizar mi primer proyecto "serio" en Arduino, para "clonar" un Gakken GMC-4. Ese fantástico micro ordenador de 4 bits, que hace cosas realmente sorprendentes para lo simple que es.

Me hice con el equipo original, lanzado el año 2009 por una revista de electrónica japonesa, creo que sobre el año 2011 y desarrollé un sencillo juego (como no) mediante un emulador en octubre del 2013. Entre los dos portales lleva unas 500 descargas.

SEGMENTS para Gakken GMC-4

10 años después, y con poco más de una semana de desarrollo... ya tengo mi prototipo, usando un Arduino Nano, y emulando perfectamente tanto la parte electrónica como el procesador. Entre otras cosas me ha servido para descubrir que el único emulador conocido que hay para él, funciona mal al ejecutar ciertas instrucciones. Entre otras cosas debido a que el creador no tenía el equipo real y que el manual original deja mucho que reservar.

Por mi parte, después de probar hasta 30 programas he conseguido corregir pequeños bugs y descubrir como funcionan realmente ciertas instrucciones, con el resultado que todos los programas funcionan a la perfección.

Y este es el resultado:

Imagen

Como podéis ver, y a falta de implementar el teclado de 20 teclas (5x4) que recibí ayer, todo el hardware es muy simple: un Arduino Nano, un 74595, 7 LEDS, un display de 7 segmentos, 9 resistencias y 1 zumbador.

El equipo se podrá programar desde el teclado que incorporará, como en el original, o desde el puTTY, cosa que facilita la introducción de los programas y su posterior debug.

Imagen

Para hacer funcionar todo esto he tenido que desarrollar el emulador en C con el IDE de Arduino, y usar el monitor serie que incorpora para poderme comunicar con el prototipo y debugar el software que iba probando.

Para muestra, un botón:

Imagen

Imagen

Que me queda pendiente:
- Conectar el teclado de 20 teclas.
- Programar la parte del teclado, teniendo en cuenta que puedo aprovechar gran parte del código que uso desde el monitor serie.
- Programar los 7 juegos que vienen con el equipo original, y del que no hay el código fuente por ningún lugar.
- Acabar de seleccionar más software extra que vendrá y al que se accederá mediante una combinación de teclas.
- Regenerar el manual original, restaurando las capturas existentes, ya que será totalmente compatible con este clón.
- Probar que el debug y la introducción de programas funcione bien desde el puTTY, ya que ahora uso el monitor serie del IDE.

En este enlace hay un manual del equipo original, el F-Maikon R-165, ya que por lo visto el Gakken GMC-4 es un clón de este.

English manual for the MCT here.

Y para terminar:
Mi deseo es desarrollar una placa, bien bonita, y hacer una tirada para que todos los que queráis un clón lo podáis tener. Es un sistema realmente curioso.

Dudo que el coste total supere los 20€ por unidad, es fácil de montar... y a presumir de equipo de 4 bits, que no lo tiene quien quiere sino quien puede.

Seguiré informando... y abro lista de interesados en un clón.
Adjuntos
GMC-4_1.JPG
(269.22 KiB) No descargado aún
GMC-4_5.JPG
(260.05 KiB) No descargado aún
GMC-4_4.JPG
(301.05 KiB) No descargado aún
GMC-4_2.JPG
(363.71 KiB) No descargado aún
Buscando la IP de la W.O.P.R. he encontrado mi índice

zxpope
Mensajes: 281
Registrado: 02 Ene 2018 02:25
Agradecido : 102 veces
Agradecimiento recibido: 114 veces

Re: Presentación del Scainet GMC-4 (Prototipo)

Mensajepor zxpope » 18 Mar 2023 22:18

hola, gracias por el post

nunca he bajado de los 8 bits
que ventaja tiene usar 4 bits?
me suena el amd2900 creo que era 1 bit

terreno ignoto para mi


idea acabado mecanico:
Imagen

dancresp
Mensajes: 5858
Registrado: 13 Nov 2010 02:08
Ubicación: Barcelona
Agradecido : 443 veces
Agradecimiento recibido: 621 veces

Re: Presentación del Scainet GMC-4 (Prototipo)

Mensajepor dancresp » 18 Mar 2023 22:29

zxpope escribió:nunca he bajado de los 8 bits
que ventaja tiene usar 4 bits?
me suena el amd2900 creo que era 1 bit

terreno ignoto para mi

¿Ventaja de usar 4 bits? Ninguna.
En el fondo todo es más complicado por lo simple que es.

En 8 bits puedes almacenar un valor entre 0 y 255, en 4 bits entre 0 y 15. Imagina hacer cualquier cálculo con esto.

En un Z80 tienes los registros de 8 bits A,B,C,D,E,H y L (principalmente) y puedes hacer pares de 16 bits con BC, DE y HL.
Aquí tienes básicamente los registros de 4 bits A y Y.

En un 8 bits tienes múltiples flags, aquí solo uno.

Pero con todo esto, este equipito de 4 bits que solo dispone de 96 bytes (de 4 bits) acaba realizando sumas, restas, multiplicaciones, divisiones, ordenaciones de números, contadores, juegos, reproduce 14 notas musicales...

... todo con mucho ingenio. Consulta el enlace que paso y mira lo que hay.

Me he dejado decir que habrán 14 pins donde se podrán conectar "cosas" para ser controladas desde este equipo. En plan microcontrolador.

Por cierto, tengo el Digirule y otro similar del Kenbak-1, pero me gustaría que mi equipo sea más cuadrado.
Buscando la IP de la W.O.P.R. he encontrado mi índice

Avatar de Usuario
josemrm
Mensajes: 381
Registrado: 09 Feb 2021 01:05
Ubicación: Bilbao - barrio txiki a 45km
Agradecido : 1818 veces
Agradecimiento recibido: 111 veces

Re: Presentación del Scainet GMC-4 (Prototipo)

Mensajepor josemrm » 19 Mar 2023 21:43

@dancresp

apuntame a la lista para 1 unidad de ese clon de 4 bits. se podrá hacer con una rpi pico?
-m3s3x Gamer desde 1982
-coam1 -j4tar1 -cocbm1 -4mstr4d -sp3zy

IBM RS/6000 43R120
PowerMac 7100/66 7200/90
bplan PEGASOS,Amithlon,PiStorm
Mister UnAmigaReloaded Atlas Cyc1000
Maxbit,ESP,Pico
Rpi,Odroid
BeOS QNX Plan9 CP/M Dr-Dos

Avatar de Usuario
obgonzalez
Mensajes: 62
Registrado: 02 Nov 2018 13:50
Agradecido : 47 veces
Agradecimiento recibido: 35 veces

Re: Presentación del Scainet GMC-4 (Prototipo)

Mensajepor obgonzalez » 19 Mar 2023 22:30

¡Enhorabuena por el trabajo!.

Yo también estoy interesado en tener una de tus maquinitas, apúntame a la lista.

Avatar de Usuario
Luis
Mensajes: 1861
Registrado: 03 Nov 2010 19:00
Agradecido : 1228 veces
Agradecimiento recibido: 587 veces

Re: Presentación del Scainet GMC-4 (Prototipo)

Mensajepor Luis » 19 Mar 2023 23:46

dancresp escribió:En este enlace hay un manual del equipo original, el F-Maikon R-165, ya que por lo visto el Gakken GMC-4 es un clón de este.


Cuando has mencionado el R-165 me ha sorprendido, porque no me sonaba de nada. El GMC-4 es un clon del Science Fair Microcomputer Trainer. Veo que es el que pones en el enlace de todas maneras :)

El SFMT erax un equipo curioso, equipado con una CPU TMS-1100, que era bastante habitual en cacharros de finales de los 70 como handhelds, el Simon, o el Parker Brothers Merlin.

Tengo mi GMC-4 por un cajón. Precisamente lo saqué hace un par de semanas para trastear un rato.

Yo me apunto a uno! Creo que incluso tengo por ahí un par de Arduino Nano que podría usar para este fin. -drinks
AHA! YOU GOT THE WUMPUS!
HEE HEE HEE - THE WUMPUS'LL GET YOU NEXT TIME!!

dancresp
Mensajes: 5858
Registrado: 13 Nov 2010 02:08
Ubicación: Barcelona
Agradecido : 443 veces
Agradecimiento recibido: 621 veces

Re: Presentación del Scainet GMC-4 (Prototipo)

Mensajepor dancresp » 20 Mar 2023 00:10

josemrm escribió:se podrá hacer con una rpi pico?

Por poder hacer se puede hacer con cualquier micro-controlador, pero... ¿para que usar una Pico Pi con doble núcleo de 32 bits a 133 MHz si con un Arduino Nano de 8 bits a 16 MHz vas sobrado y encima cuesta menos de la mitad y es más pequeño?

He trasteado con la Pico Pi, pero en este proyecto todo lo que he hecho lo he desarrollado sobre un Arduino Nano, funcionando perfectamente.

Y como ya he dicho, con este Arduino dudo que todo el kit cueste más de 20€.
Buscando la IP de la W.O.P.R. he encontrado mi índice

dancresp
Mensajes: 5858
Registrado: 13 Nov 2010 02:08
Ubicación: Barcelona
Agradecido : 443 veces
Agradecimiento recibido: 621 veces

Re: Presentación del Scainet GMC-4 (Prototipo)

Mensajepor dancresp » 20 Mar 2023 00:15

Luis escribió:Cuando has mencionado el R-165 me ha sorprendido, porque no me sonaba de nada. El GMC-4 es un clon del Science Fair Microcomputer Trainer. Veo que es el que pones en el enlace de todas maneras :)

El SFMT erax un equipo curioso, equipado con una CPU TMS-1100, que era bastante habitual en cacharros de finales de los 70 como handhelds, el Simon, o el Parker Brothers Merlin.

Sí, los microprocesadores de 4 bits se han usado mucho más de lo que mucha gente se piensa.

Todos los juguetes electrónicos, hand&helds, calculadores y otros trastos de los 70 y hasta mediados de los 80 los llevaban.

Respecto a este equipo, ahora que ya tengo la parte software prácticamente lista, quiero profundizar en este tema y conseguir más información.

Por lo pronto estoy casi a punto de generar un manual PDF del equipo original con las páginas limpias y bien alineadas. Ha sido una matada pero ha valido la pena y servirá al 100% con este clón.
Buscando la IP de la W.O.P.R. he encontrado mi índice

Avatar de Usuario
Luis
Mensajes: 1861
Registrado: 03 Nov 2010 19:00
Agradecido : 1228 veces
Agradecimiento recibido: 587 veces

Re: Presentación del Scainet GMC-4 (Prototipo)

Mensajepor Luis » 20 Mar 2023 00:35

dancresp escribió:Por lo pronto estoy casi a punto de generar un manual PDF del equipo original con las páginas limpias y bien alineadas. Ha sido una matada pero ha valido la pena y servirá al 100% con este clón.


Yo me he descargado este:

https://web.archive.org/web/20120520120 ... 28_260.pdf

Creo que está bastante bien escaneado, ¿no?

Aunque no tan bien alineadas ni limpias las páginas. Ya tengo ganas de ver tu trabajo -thumbup
AHA! YOU GOT THE WUMPUS!
HEE HEE HEE - THE WUMPUS'LL GET YOU NEXT TIME!!

dancresp
Mensajes: 5858
Registrado: 13 Nov 2010 02:08
Ubicación: Barcelona
Agradecido : 443 veces
Agradecimiento recibido: 621 veces

Re: Presentación del Scainet GMC-4 (Prototipo)

Mensajepor dancresp » 20 Mar 2023 10:14

Luis escribió:Yo me he descargado este:

https://web.archive.org/web/20120520120 ... 28_260.pdf

También lo tengo, pero me molestan las franjas negras de los laterales.

Pero yo estoy, como un chino, en esto:

Imagen
Imagen

Por cierto, se indica que el equipo tiene 80 bytes para el programa y 16 bytes para datos, pero realmente el equipo tiene 128 bytes.
Si no se usan las instrucciones AM, MA, M+, M- podemos usar los esos 16 bytes de datos para el programa
Adjuntos
Demo_2.jpg
(130.4 KiB) No descargado aún
Demo_1.jpg
(128.6 KiB) No descargado aún
Buscando la IP de la W.O.P.R. he encontrado mi índice

zxpope
Mensajes: 281
Registrado: 02 Ene 2018 02:25
Agradecido : 102 veces
Agradecimiento recibido: 114 veces

Re: Presentación del Scainet GMC-4 (Prototipo)

Mensajepor zxpope » 26 Mar 2023 11:06

hola dcrespo
he estado jugando con un compilador de C a ASM del GMC-4 http://terus.jp/engineering/gmc4cc/
abajo pego ejemplos.

te importa "portar" el codigo de arduino a linux?
eso me/nos ayudaría a probar este "cacharro"

puedes confirmar si la cpu de esta maquina es la TMS1000?
en opencores https://opencores.org/projects/tms1000 hay
un interesante esquema que explica la filosofia de la maquina: trabajar en BCD no en binario

Imagen

saludos

pd: ron deberia valorar la conveniencia de añadir esta maquina a su coleccion de cores ;-)

CODIGOMAQUINA+ENSAMBLADOR DEL GMC-4 CON EJEMPLOS
================================================

!!
los enteros (int) en esta maquina son de 4bit, asi que nada de lo que digo abajo funciona.
!!

LUNAR LANDER UNIDIMENSIONAL
---------------------------
SI TECLA PULSADA ACTUA PROPULSION A=-2; SINO ACTUA GRAVEDAD LUNAR A=1
V, VELOCIDAD; X ALTURA SOBRE EL SUELO LUNAR
LA VELOCIDAD HA DE SER CERO CUANDO LA ALTURA ES CERO, SINO FIN

LEY FISICA DEL JUEGO
--------------------
int a,x,v;
main(){
x=0;
v=0;
while(1){
a=1;
//if(key)a=-2;
v=v+a;
x=x+v;
}
}


アドレス 機械語 ラベル ニーモニック コメント
00: 8 0 TIA 0 # Constant 0
02: A E TIY E # Address of 'x' (offset 14)
04: 4 AM # Operator '='
05: A D TIY D # Address of 'v' (offset 13) OOTIA
07: 4 AM # Operator '='
08: LABEL0: # infinite loop start
08: 8 1 TIA 1 # Constant 1
0A: A F TIY F # Address of 'a' (offset 15)
0C: 4 AM # Operator '='
0D: A D TIY D # Address of 'v' (offset 13) OOMA
0F: 6 M+ # Operator '+='
10: 4 AM
11: A E TIY E # Address of 'x' (offset 14) OOMA
13: 6 M+ # Operator '+='
14: 4 AM # OORF
15: F 0 8 JUMP LABEL0 # infinite loop jump
18: LABEL1:
18: F F
1A: F F
1C: F F
...
58: F F
5A: F F
5C: F .ALIGN 5D # Global variables
5D: 0 .NIBBLE 0 # Global variable 'v'
5E: 0 .NIBBLE 0 # Global variable 'x'
5F: 0 .NIBBLE 0 # Global variable 'a'
60: # generated by gmc4cc (terus)


CONDICION DE SALIDA
-------------------
int a,x,v;
main(){
x=0;
v=0;
while(x<11){
a=1;
v=v+a;
x=x+v;
}
}



アドレス 機械語 ラベル ニーモニック コメント
00: 8 0 TIA 0 # Constant 0
02: A E TIY E # Address of 'x' (offset 14)
04: 4 AM # Operator '='
05: A D TIY D # Address of 'v' (offset 13) OOTIA
07: 4 AM # Operator '='
08: LABEL2: # while start
08: 8 B TIA B # Constant 11
0A: A E TIY E # Variable 'x'
0C: 7 M- # Operator '<'
0D: F 1 3 JUMP LABEL1
10: F 2 3 JUMP LABEL0 # OOCV
13: LABEL1:
13: 8 1 TIA 1 # Constant 1
15: A F TIY F # Address of 'a' (offset 15)
17: 4 AM # Operator '='
18: A D TIY D # Address of 'v' (offset 13) OOMA
1A: 6 M+ # Operator '+='
1B: 4 AM
1C: A E TIY E # Address of 'x' (offset 14) OOMA
1E: 6 M+ # Operator '+='
1F: 4 AM # OORF
20: F 0 8 JUMP LABEL2 # while loop jump
23: LABEL0: # while end
23: F F
25: F F
...
53: F F
55: F F
57: F F
59: F F
5B: F F .ALIGN 5D # Global variables
5D: 0 .NIBBLE 0 # Global variable 'v'
5E: 0 .NIBBLE 0 # Global variable 'x'
5F: 0 .NIBBLE 0 # Global variable 'a'
60: # generated by gmc4cc (terus)

zxpope
Mensajes: 281
Registrado: 02 Ene 2018 02:25
Agradecido : 102 veces
Agradecimiento recibido: 114 veces

Re: Presentación del Scainet GMC-4 (Prototipo)

Mensajepor zxpope » 26 Mar 2023 11:17

bien tabulado

Screenshot from 2023-03-26 11-16-23.png
Screenshot from 2023-03-26 11-16-23.png (86.39 KiB) Visto 228 veces


Screenshot from 2023-03-26 11-16-40.png
Screenshot from 2023-03-26 11-16-40.png (104.88 KiB) Visto 228 veces

dancresp
Mensajes: 5858
Registrado: 13 Nov 2010 02:08
Ubicación: Barcelona
Agradecido : 443 veces
Agradecimiento recibido: 621 veces

Re: Presentación del Scainet GMC-4 (Prototipo)

Mensajepor dancresp » 27 Mar 2023 13:10

zxpope escribió:hola dcrespo

Dejémoslo en dancresp.

Me hace gracias que haya un dcrespo. Algún día nos tendremos que conoces, a ver si es familia... -grin

zxpope escribió:he estado jugando con un compilador de C a ASM del GMC-4 http://terus.jp/engineering/gmc4cc/
abajo pego ejemplos.

te importa "portar" el codigo de arduino a linux?
eso me/nos ayudaría a probar este "cacharro"

No entiendo a que te refieres con portar el código de Arduino a Linux...

¿Te refieres a introducir tu código en mi equipo a ver si lo ejecuta bien?
He conseguido que la emulación ya funcione perfectamente, y esta tarde le conectaré un teclado de 5x4 para no tener que usar el del PC por USB.

zxpope escribió:puedes confirmar si la cpu de esta maquina es la TMS1000?

En el equipo original, el Microcomputer Trainer, sí.
Si no recuerdo mal va a 400 KHz. Yo he tenido que hacer un "delay()" por cada instrucción para ajustar la velocidad, ya que el Arduino Nano va a 16 MHz.

En el de Gakken GMC-4 ignoro si también lo usa, o simplemente lo han emulado con un microcontrolador, como he hecho yo.
Supongo que sería la más sencillo.
Buscando la IP de la W.O.P.R. he encontrado mi índice

zxpope
Mensajes: 281
Registrado: 02 Ene 2018 02:25
Agradecido : 102 veces
Agradecimiento recibido: 114 veces

Re: Presentación del Scainet GMC-4 (Prototipo)

Mensajepor zxpope » 28 Mar 2023 15:53

hola dancrep, hola a todos,
- ¿el interprete que implementas en arduino, podria ejecutarse en un PC?
- el codigo maquina del GMC-4 es muy elegante, creo que aqui está la gracia del asunto
- pero parece parece que el juego de instrucciones esta sintonizado a el hardware especifico del GMC-4
¿que pasa si quiero poner un segundo digito 7-segmento?
esto me permitiría en un juego visualizar dos variables (velocidad y altura de una nave espacial)
saludos

dancresp
Mensajes: 5858
Registrado: 13 Nov 2010 02:08
Ubicación: Barcelona
Agradecido : 443 veces
Agradecimiento recibido: 621 veces

Re: Presentación del Scainet GMC-4 (Prototipo)

Mensajepor dancresp » 28 Mar 2023 17:57

zxpope escribió:- ¿el interprete que implementas en arduino, podria ejecutarse en un PC?

El intérprete para Arduino está programado en C, con lo que sería "fácilmente adaptable" para funcionar en un PC, si se quisiera hacer un emulador o algo parecido.

zxpope escribió:- el codigo maquina del GMC-4 es muy elegante, creo que aqui está la gracia del asunto

Su código máquina es muy simple, sin casi instrucciones, aunque aún y así es capaz de hacer cosas bastante curiosas.

Con todo, me temo que ese código máquina no es real, sino que el microcontrolador ejecuta un intérprete.

Por ejemplo, el programa que lleva por defecto "Automatic musical performance" permite reproducir una melodía introduciendo las notas desde la dirección 00 a la 5F, pero según su código máquina solo se puede direccionar desde la dirección 50 a la 5F usando el registro Y.
¿Cómo lo hace? Pues eso. Que se han inventado un supuesto "lenguaje máquina" y realmente lo interpreta.

zxpope escribió:- pero parece parece que el juego de instrucciones esta sintonizado a el hardware especifico del GMC-4

Como he puesto en el punto anterior, ese supuesto código máquina no lo ejecuta nativamente el microcontrolador si no que se ejecuta un intérprete.

zxpope escribió:¿que pasa si quiero poner un segundo digito 7-segmento?
esto me permitiría en un juego visualizar dos variables (velocidad y altura de una nave espacial)
saludos

El problema es que no hay instrucciones para mostrar un valor en un segundo dígito.

Se podrían crear nuevas instrucciones usando, por ejemplo, una instrucción E3 (que no existe) o permitiendo añadir un tercer byte (de 4 bits) a esta instrucción, pero claro, ya no sería algo "estándar" de este sistema, sino una extensión.

Por mi parte, he optado por respetar al 100% el funcionamiento original del equipo, añadiendo eso sí funciones extras a partir de acceder a direcciones de memoria inexistentes.

Por ejemplo, si vas a la dirección de memoria...
D0 - Se desactiva el debug por puTTY.
D1 - Se activa el debug por puTTY.

A0 - Se desactiva el sonido.
A1 - Se activa el sonido.

F0 a F5 - Se cargan varios programas preinstalados: Blackjack, Slot Machine, Gun Fighter y tres más.

En todos los casos se muestra un texto con la acción o nombre del programa cargado en el display, letra a letra.
Buscando la IP de la W.O.P.R. he encontrado mi índice


Volver a “Desarrollos y Proyectos RW”

¿Quién está conectado?

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