MSX-SDF-1 · proyecto de ejemplo

Reloj

Fecha y hora con pila para cualquier MSX1, con un DS1307 por I²C

Un MSX1 no trae reloj: MSX-DOS pregunta la fecha en cada arranque, y si nadie la contesta los archivos quedan con una fecha cualquiera. Con un módulo DS1307 colgado del I²C de la placa, la máquina arranca sabiendo qué día y qué hora es, y el BASIC los puede leer.

Se suma al lector de SD: la misma Disk ROM y el mismo firmware. En hardware, lo único nuevo es el módulo del reloj, con su pila.

  • Prototipo · rev1
  • MSX1 en adelante
  • DS1307 por I²C
  • Firmware 0.2
Render de la cara superior del PCB del cartucho MSX-SDF-1

La misma placa del kit, rev1: el reloj es un módulo enchufado a H1.

Antes que nada

La placa todavía es un prototipo.

El reloj funciona sobre la rev1, que necesita correcciones a mano antes de andar. Antes de pensar en armar uno, leé el aviso en la página del kit.

Ver el aviso

Qué hace falta

Un módulo de reloj y cuatro cables

Un módulo con un DS1307 —los que se venden como Tiny RTC sirven— enchufado al I²C que ya sale por el header H1. No hay que tocar la placa ni cortar pistas: son cuatro cables, y el módulo queda en el área universal o colgando del header.

La pila tiene que estar. Sin ella el DS1307 no contesta y el MSX no encuentra el reloj. Si el módulo no la trae, hay que poner una CR2032, o por lo menos llevar a masa la patita de la batería.

La placa no tiene resistencias de pull-up en el I²C. La mayoría de los módulos ya las traen; si el tuyo no, van dos de 4,7 kΩ de SDA y SCL a 5 V.

Pin Señal Al módulo
1VCCVCC · 5 V
8SDASDA
9SCLSCL
10GNDGND

Pines del header H1. Los demás siguen siendo del lector de SD.

Uso

Cómo se usa

Ponerlo en hora, una vez

Un DS1307 nuevo viene parado. Se pone en hora desde el BASIC con CALL RTC y la fecha entre comillas; después sigue andando solo, con la máquina apagada, mientras dure la pila.

CALL RTC solo, sin nada más, muestra la fecha y la hora actuales. El día de la semana lo calcula el cartucho: no hace falta dárselo.

10 REM poner el reloj
20 CALL RTC("2026-09-23 18:30:00")

30 REM ver la hora
40 CALL RTC
2026-09-23 18:30:04

MSX-DOS ya no pregunta la fecha

Con el reloj puesto, MSX-DOS arranca directo, sin pedir la fecha. DATE y TIME muestran las del reloj, y cada archivo que se guarda en el disco queda con su fecha y hora de verdad. No hay nada que cargar: es la Disk ROM la que le pregunta la hora al cartucho.

MSX-DOS arrancando con la fecha del reloj. Verlo en YouTube.

Desde un programa: el dispositivo RTC:

Para usar la hora en un programa, el reloj se abre como un archivo: OPEN "RTC:". Cada línea que se lee trae la hora de ese momento, y el archivo no se termina nunca, así que se puede leer en un bucle.

Lo que va después de los dos puntos elige el formato. RTC:N es el cómodo para programar: un solo INPUT # llena año, mes, día, hora, minutos, segundos y día de la semana.

Nombre Devuelve
RTC:2026-09-23 18:30:07
RTC:D2026-09-23
RTC:T18:30:07
RTC:N2026,9,23,18,30,7,4
RTC:WMIE
10 REM un reloj en pantalla
20 OPEN "RTC:T" FOR INPUT AS #1
30 LINE INPUT #1,T$
40 LOCATE 0,0 : PRINT T$
50 GOTO 30

10 REM la fecha en variables
20 OPEN "RTC:N" FOR INPUT AS #1
30 INPUT #1,Y,M,D,H,MI,S,W
40 CLOSE #1

Si el reloj no está conectado, el OPEN da Device I/O error.

El reloj desde el BASIC. Verlo en YouTube.

Estado

Dónde está el reloj

Probado en la placa: MSX-DOS arranca con la fecha y la hora del reloj, CALL RTC la muestra y la pone, y los formatos de RTC: se leen desde el BASIC.

Es parte del firmware 0.2, que todavía está en desarrollo. El código está en el repositorio.