Mozo, hay un Huevo de Pascua en mi ordenador!

Algunos de los easter eggs mas famosos, revisitados en esta entrega en el dia de pascuas.

La película Ready Player One (2018) dirigida por Steven Spilberg y basada en el libro homónimo de Ernest Cline popularizó el ya ultra conocido (gracias a internet) “primer easter egg (huevo de pascua) de la historia”. De la historia de los videojuegos, aclaremos. Y también aclaremos que eso es lo que creemos, solo hasta que aparezca uno anterior.

Cuenta la historia que Atari era reacia a dar a conocer los nombres de los programadores, artistas y diseñadores de sus videojuegos que por aquel entonces se publicaban para sus sistemas, en este caso para el Atari VCS/2600. Lo cual tenía a estos personajes algo disconformes. Así fue que en un acto de rebeldía, en el juego Adventure (1979), si el jugador hacía una cierta serie de acciones aparecería en pantalla la leyenda”Created by Warren Robinet”, en clara declaración de autoría e inmortalizando un nombre que de otra forma, hubiese quedado como uno más del montón.

Hay que entender el contexto, claro. No es que Atari fuera un explotador tampoco. Simplemente, la industria aún estaba en pañales. Y “el Atari” era, de alguna manera, considerado un juguete. Se vendía en los mismos mostradores que los juegos electrónicos, y las máquinas de pong hogareñas. Entonces los cartuchos de juegos eran meros accesorios que uno podía comprar (o pedirle a Santa) para cambiar el juego de la consola. Un gran avance sobre la generación anterior (las maquinas de Pong), que solo tenían un juego (o variantes de esta) y la cosa ya se estaba poniendo aburrida. Fairchild ya lo había hecho un año antes, pero la idea estaba en el aire. Y bajo esa lógica, así como Mattel no publicaba los accesorios de Barbie con el nombre de sus diseñadores, ¿porque lo haría Atari o quien fuese con sus cartuchos? “Sí, lo hizo un ingeniero. Un empleado. Pero te lo vende Atari”. Desde el punto de vista de la empresa, daba igual quién fabricaba qué parte.

Pero sucede que a diferencia del caso de Barbie, los juegos terminaron siendo lo más importante de la consola. Y si le sumamos el hecho que la VCS/2600, debido a sus limitaciones, era extremadamente difícil de programar, estos tipos era Rockstars. Invaluables y… mal pagos. Bueno, según ellos. Artistas. Así que no es de extrañar esa necesidad de querer firmar la obra.

Vamos a repasar algunos easter eggs fomosos que tal vez ya nuestros lectores conozcan, o tal vez no. En cualquier caso, siempre es divertido encender alguna de estas máquinas de 40 años y ver que todavía siguen ahí. Y esto las hace un poquito mas humanas… ¿no les parece?

Microsoft!

Cuenta la historia que Jack Tramiel, fundador de Commodore, en una maniobra (y canchereada a lo “che pibe”) le dijo a Bill Gates “yo ya me casé una vez” cuando éste le propuso la idea de que el interprete BASIC que le había vendido para sus nuevas microcomputadoras PET lo usaran bajo el modelo de licencias. Pero Jack ya había pagado una vez y no quería atarse a nadie. Bill entonces, previendo un posible juicio donde tuviese que demostrar autoría, dejó escondido dentro del código de su interprete la palabra “Microsoft!”. El comando mágico es

WAIT 6502,x

…donde X es la cantidad de veces que se escribe.

Claro que luego los ingenieros de Commodore lo descubrieron (Bill no se contuvo y lo escribió en una CES…) y lo eliminaron; pero si aún tienen acceso a una de las primeras PET, Billy sigue saliéndose con la suya.

Corolario: cuando Commodore necesitó un nuevo BASIC para la flamante y pronto a estrenarse Amiga… bueno digamos que por eso es que en la pantalla de la contemporánea C128 tuvieron que poner “BASIC 7.0 (c)1977 Microsoft Corp.” Pero Jack ya no estaba.

Software y Herdware

Ya que mencionamos la Commodore 128, los ingenieros que participaron en su desarrollo también quisieron dejar su marca. Bueno. Es que se había puesto de moda. Dentro de los gabinetes de las “súper avanzadas” Apple Macintosh (1984) y Commodore Amiga (1985) podemos ver inmortalizadas en el plástico las firma de los artistas que las crearon. Cada plataforma que salia al mercado era un sistema completamente nuevo al cual había que inventarle todo, esto requería de trabajo en equipo. Y mucho esfuerzo. Así que había que dejar la huella.

El comando mágico es entonces:

SYS 32800,123,45,6

… y aquí podemos ver quienes fueron los encargados del Software y quienes del Hardware o “herdware”, juego de palabras porque Bill Herd fue el encargado de liderar el equipo.

Pero ya lo habían hecho antes también. Si en la Commodore 16, Commodore 116 o Commodore Plus/4 (son básicamente la misma maquina en diferentes configuraciones) escribimos:

SYS 52651

… aparecerán los nombres de los involucrados.

Rebeldes

Como vimos al principio, los Easter Eggs no son solo una manera de firmar la obra. Sino también pretenden dejar un mensaje. A veces menos y a veces más explicito.

Terminando este artículo (que podría volverse infinito), me pareció muy emblemático el caso de la Amiga 500 (1987).

Commodore era una empresa que tras la renuncia de Jack Tramiel se volvió algo caótica. Cuando los ingenieros terminaron el desarrollo del Amiga, tenían en sus manos la computadora de consumo masivo (léase “hogareña” o “personal”) más poderosa del momento. Pero fue un fracaso en ventas, principalmente porque la gente de Marketing (al menos la gente de marketing de USA, aclaremos), no supo venderla. Eran áreas que estaban muy desconectadas entre si, lo que trajo mucha rivalidad interna y frustración en los desarrolladores.

Así que para la salida de la Amiga 500 nuestros enojados amigos dejaron en ROM (Kickstart 1.2) lo siguiente: Al presionar ambas teclas ALT, ambas teclas SHIFT, y las teclas de función obtenemos los siguientes mensajes en la barra de menu:

… + F1 : “System Software: Carl, Neil & Kodiak”

… + F2: “Graphics Software: Dale, Bart, Jim & :RJ:

… + F3: “QA: Jon, Bruce, Stan, Kim & Jerry

… + F4: “LG Support: Caryn, Dave, Victor, Terry, Cheryl & Nancy”

… + F5: “CBM Software: Andy, Barry, Dave & Eric”

… + F6: “Pics: Sheryl & Jack”

… + F7: “Docs: Rick, Mitch, Peggy & Rob”

… + F8: “Chips: Jay, Akio, Glenn, Edwin, Mark & Dave”

… + F9: “HW: Dave, Bill, ChrisR & Josh”

… + F10: “Me Made Amiga, They fucked it up.”

Wow.

Cuando Commodore descubrió ese ultimo, imagínense que no les resultó nada gracioso, porque si bien la combinación de teclas es algo … digamos … complicada, no es tan difícil que se dé, así que pidieron que se remueva.

Pero lejos de hacerlo, solo lo escondieron más. En las siguientes revisiones del ROM, con F10 podíamos leer: “Moral Support: Joe Pillow & The Dancing Fools” (la explicación de estos personajes requiere un artículo aparte)

Pero si presionamos la combinación antes citada con F1 y quitamos el diskette del drive interno, aparecerá el mensaje “The Amiga, Born a Champion”.

Pero esto no es todo. Si luego, sin soltar nada, presionamos el botón izquierdo del mouse y volvemos a introducir el disquette, vuelve a aparecer “We made Amiga…”

Los Chiches de la Commodore 64 – Ep 1 – El Reset Jabonera

En esta ocasión vamos a estudiar a un gran amigo que nos dejó excelentes recuerdos a la hora de obtener vidas infinitas en nuestros videojuegos, El Reset o Jabonera.

Vamos a estudiar que hacía, como funciona por dentro, que circuitos tenía y cómo lograr poner vidas infinitas en alguno de nuestros videojuegos favoritos.

Qué es el reset

El reset es un dispositivo que nos dejaba llamar al circuito de reset del procesador 6510 sin tener que apagar el mismo y sin la necesidad de borrar la memoria y comenzar desde cero. De esta forma podemos modificar posiciones de memoria con un programa cargado en la misma.

Su forma más típica es la de un cartucho blanco con un botón rojo que se conecta al puerto de usuario.

El puerto de usuario posee el siguiente pinout

Estamos interesados en dos pines específicos el pin 12 de ground o tierra que nos va a poder dar valores LOW o cero y el PIN 3 o Reset. Algunos diseños también usan el pin 1, el pin N o el pin A como ground.

El  PIN 3 está conectado a través del PCB del Commodore 64 directamente con el Pin 40 o de Reset del Procesador 6510. El Botón de reset activa el reset del procesador.

Así se ve la conexión de ambos resaltada en azul donde vemos la conexión del Pin 3 del puerto de usuario al pin 40 del procesador 6510. También existe otro modelo de reset que está conecta al puerto serial y hasta puede estar conectado en la disquetera.

La línea de reset se mantiene en High cercano a los 5 Volts gracias a una resistencia de 1Kilo ohms que conecta la línea de reset con los 5 Volts del mother, en el diagrama R36.

Cómo funciona el reset internamente

El botón de reset internamente es un circuito que conecta el pin 3 de reset al pin 12 de ground a través de un botón de push que se encuentra normalmente abierto, al presionarlo y unirlo al pin 12 de ground hace que el pin 3 del user port conectado al pin 40 del procesador reciba un voltaje de low (menor a 0,4 Volts).

En esta foto podemos ver el pin 1 unido al pin 3 (recordar que una alternativa de pin de grund era el uno)  y un botón para reset conectados a un placa que expande el puerto de usuario.

En nuestras latitudes (33 grados sur) hemos encontrado directamente cables soldados al botón y a los dos pines del user port de la mother lo que no solemos recomendar.

En nuestros pagos esta es la típica jabonera a la que estamos acostumbrados, la que conectamos al User port.

La misma posee un botón conectado a los pines 3 como reset y 12 como Ground a través de dos alambres.

Si medimos con un osciloscopio cada vez que presionamos el reset vemos como la línea del reset conectada al pin 3 baja a 0 volts. En la imagen el probe o punta de testeo del osciloscopio está conectado al pin 3 de reset y el cable de ground al pin 12.

Al recibir un low en el pin 40 del procesador se activa la rutina de reset del 6510 que en este caso va hasta la posición de memoria $FFFC y $FFFD y se fija que dirección de memoria está aquí adentro y va a ejecutar ese programa.

En el caso de la Commodore 64 va a la rutina que está en la posición $FCE2 y ejecuta el siguiente programa:

Esta rutina inicializa la commodore sin borrar la memoria:

  • Primero carga el valor $FF al registro X para luego configurar el stack pointer,
  • Deshabilita las interrupciones prendiendo el flag de interrupciones,
  • Configura el stack pointer en FF dejándole listo en $01FF,,
  • Borra el flag de modo decimal del procesador,
  • Se fija si existe algún cartucho con autostart y si existe este lo ejecuta (a partir de la posición $8000),
  • Si no había cartucho llama a las rutinas de inicialización IOINIT (inicialización de dispositivos),, RAMTAS (inicilaiza y testea la RAM), RESTOR (configura los vectores como ser también el de reset $FFFCy $FFFD),  y por último CINT que inicializa la pantalla,,
  • Limpia el flag de interrupciones habilitándolas nuevamente y
  • Arranca el programa de Basic a través de la posición de memoria $A000.

Finalmente vemos que nos deja en el prompt de basic pero con el programa que estuviera en memoria a la hora de pulsar el botón de reset todavía cargado en la misma.

¿Cómo lo usamos?

Primero cargamos un programa a memoria desde disco o cassette y ni bien este terminó de cargar pulsamos el botón de reset.

Si el programa que había en memoria es un programa en basic debemos antes de usarlo restaurar los punteros al código y memoria del mismo. Esto se realiza con los siguientes comandos.

(pO = p [Shift] o; pE = p [Shift] e) estas son las abreviaturas de poke para po y peek para pe

pO2050,8:sys42291:pO46,(pE(35)-pE(781)>253):pO45,pE(781)+2and255:clr

Luego de esto podemos correr el programa Basic, listarlo con LIST o grabarlo a disco.

Si lo que tenemos es un programa en código máquina, como por ejemplo un juego, podemos verlo con un monitor de código máquina o por si ejemplo si tenemos el wonderboy y queremos ponerle como truco vidas infinitas tipeamos los siguientes comandos desde el basic.

POKE 2676,238

SYS 2112

El comando Poke modifica la posición de memoria de las vidas y el comando SYS es una llamada a ejecutar el programa que está en la dirección 2112 que es el comienzo del juego.

Conclusión

Y de esta forma funciona nuestra querida Jabonera que tanto hemos usado para poder interrumpir alguno que otro videojuego y ahora sí ,con vidas infinitas, poder terminarlo. Un circuito muy simple y uno de nuestros clásicos chiches de Commodore.

Estudio visual

Para poder estudiar visualmente cómo funciona el Reset Jabonera, les dejo este video que complementa al artículo.

Referencias

A continuación les dejo algunos links donde profundizar el tema:

VIDEOS

El Reset Jabonera – Lo Chiches de la Commodore 64 Parte 1

Aquí tiene acceso a toda la serie de videos:

Los Chiches de La Commodore 

Artículos

Aquí encuentran todos los Artículos sobre Los Chiches de la Commodore:

PAPERS

ROM de Commodore 64 comentada 

Mapping the Commodore 64 

6510 MICROPROCESSOR WITH I/O 

Esquema del Mother parte Izquierda Commodore 64

Esquema del Mother parte Derecha Commodore 64 

Reset switch 

Wonder Boy Cheats, Codes, and Secrets for Commodore 64 – GameFAQs 

Todos los ejemplos de código de los videos los pueden encontrar en:

https://github.com/osolabstech/loschiches

Los Chiches de la Commodore 64 – Ep Cero – Introducción

 ¡Bienvenidos! Estamos empezando una nueva serie llamada Los Chiches de la Commodore 64. Nuestra querida Commodore nos dio muchas alegrías pero ella no podría haber hecho todo sola, por eso, siempre se valió de algunos Chiches.

En esta nueva serie vamos a estudiar cuáles son esos chiches, como funcionan por dentro y como usarlos.

Qué son los Chiches

Los Chiches son todos aquellos dispositivos clásicos y modernos que nos ayudan a usar la Commodore como por ejemplo la Famosa Jabonera de Reset, el sd2iec, los joysticks, el lápiz óptico, los adaptadores para el mouse, los cartuchos, los death test, las expansiones de memoria, módems tradicionales, modem wifi. Y podría seguir mucho tiempo más.

Siempre fueron un pequeño misterio cómo funcionan por dentro, de qué circuitos de la máquina se valen y sobre todo ¡Cómo se usan! ¡Más de uno tiene alguna función oculta que todavía al día de hoy no descubrimos!.

Qué vamos a ver

En este viaje vamos a estudiar:

Nuevos dispositivos de entrada salida como ser:

  • Adaptadores VGA como el Apollo 64+.
  • Sd2iec para conectar una sd card a tu Commodore.
  • Pi1541 para tener una 1541 con sdcard que respete todos los vericuetos e idiosincrasias de nuestra querida 1541.
  • El clásico Sánguche (leer con voz de yo quiero un sangucheee) S-Video  a RGB a HDMI.

Dispositivos modernísimos como ser:

  • El cartucho Ultimate II+, una gran navaja suiza.
  • Modem wifi para acceder a una bbs a través de Internet.
  • VersaCart para poder armar tu propio cartucho.
  • La Ram Expansion Unit (REU)  a través de una raspberry pi.
  • Joysticks modernos con microswitches.
  • IRQHack.

Dispositivos Clásicos como ser:

  • La Jabonera de Reset.
  • El cartucho CPM.
  • El clásico modem de Commodore.
  • La REU de ampliación de memoria 1750.
  • Joystick Colossus.
  • Turbo Cartridge.
  • FastLoad.

No te preocupes si no entendiste ni la mitad de los acrónimos, esta serie es para vos.

Bienvenidos

En fin tenemos para divertirnos un buen rato y aprender cada día más de nuestra querida Commodore 64. Así que para todos los que siempre quisieron saber cómo funcionan esos maravillosos chiches que usa nuestra Commodore, así como para los que recién los están descubriendo ahora,  les pido que me acompañen en esta nueva aventura.

Saludos

Carlinho de OsoLabs

En Video

Aquí puede encontrar el video Introductorio para la nueva serie.

Los Chiches De la Commodore – Episodio 0 – Bienvenidos!!