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
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.
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 |
|---|---|---|
| 1 | VCC | VCC · 5 V |
| 8 | SDA | SDA |
| 9 | SCL | SCL |
| 10 | GND | GND |
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:D | 2026-09-23 |
| RTC:T | 18:30:07 |
| RTC:N | 2026,9,23,18,30,7,4 |
| RTC:W | MIE |
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.