Spectrum Disk Interface 1541 SDI por Milan Urosevic & Ivan Gerencir V.1.0 Es una interfaz que había que fabricar uno mismo, publicado en la revista "Moj mikro" del año 1986 en sus ediciones 5, 6 y 7, sección "Consejos sobre Hardware". Una vez construido permite conectar una unidad de disco VC 1541 de Commodore al ZX Spectrum. El SDI usa las variables del sistema del Spectrum desde 23698 hasta 23727 (MEMBOT) y 23728 así que no usa ningún espacio de la RAM del BASIC del usuario. Acerca de Moj Mikro: Moj mikro era un magazine sobre computadoras mensual en lengua eslovenia. Moj mikro fue establecida en 1984 en Eslovenia. Su editor fundador fue Žiga Turk. Su objetivo eran los varones con edades entre los 14 y 64 años. Moj mikro fue uno de los magazines más populares en Yugoslavia durante los años 80, generando una gran variedad de tópicos tecnológicos y fue publicada también en lengua Serbo-Croata (hasta 1991). A continuación los articulos que nos interesan: Moj Mikro 5 1986 Conectamos el VC 1541 al ZX Spectrum (1) El primer artículo consta de tres páginas de la 28 a la 30, y sirve como introducción, explicando que el Spectrum normalmente usa un sistema de cinta de casete, mientras las máquinas de Commodore usan además unidades de disco. A partir de ahi pasa a explicar que se puede conectar la disquetera VC-1541 de Commodore si se fabrica una interfaz con una EPROM conteniendo el DOS. El artículo sigue con una lista de los comandos del DOS así como una lista de los componentes de dicha interfaz; un programa ejemplo y una pantalla del catálogo del disco; cerrando con una comparativa entre las unidades VC-1541 y VC-1571. Moj Mikro 6 1986 Conectamos el VC 1541 al ZX Spectrum (2) Este artículo trata del hardware y nos muestra la placa base y enseña donde van los componentes antes mencionados de la interfaz. Moj Mikro 7 1986 Conectamos el VC 1541 al ZX Spectrum (3) La tercera parte es a nivel software y nos muestra el listado hexadecimal del DOS, además de una explicación más detallada de los comandos Basic y mensajes de error u otro tipo. Y ahora pasamos a ver los comandos del SDI... DOS vl.0 del Spectrum Disk Interface Sintaxis: *comando "nombre" {parametros} Los comandos del SDI son de dos tipos: palabras clave de Sinclair y tipeables, los cuales sí pueden ser abreviados. Las no tipeables son cuatro y las tipeables pueden ser indistintamente en minúsculas o en mayúsculas. *Format, *Cat, *Load, *Save, *Merge, *Verify, *Move, *Erase, *Eprom, *Rename, *Initialize, *Error, *Validate El nombre de un archivo puede ser de hasta 16 caracteres. Solo 12 si se usa la extensión de 3 caracteres más el punto. La extensión es meramente referencial así como opcional y son 4: .PRG - programas BASIC .DAT - matrices de datos .COD - rutinas en código máquina .SCR - pantallas salvadas Permite usar '?' y '*' como comodines (wildcards) en las busquedas. *Format Sintaxis: * FORMAT "nombre del volumen{,ID}" Abreviaciones: palabra clave del Spectrum Formatea un disco nuevo dándole un código de identidad ID de dos caracteres. ID es innecesario si solo se vuelve a formtear el mismo disco. *Cat Sintaxis: * CAT Abreviaciones: palabra clave del Spectrum Para ver el catalogo del disco en la pantalla se debe tipear: PRINT:* CAT. Para mandar el texto a la impresora: LPRINT:* CAT. O también: OPEN #2, "P": * CAT: CLOSE #2 *Save Sintaxis: *SAVE"nombre" {especificación} Abreviaciones: *S, *SA, *SAV Ejemplos: *SAVE "programa" *save "datos" DATA ... *SA "codigo1" CODE ... *s "pantalla" SCREENS Nota 1: *SAVE no deja salvar si el nombre ya existe, en ese caso se tipea: *SAVE "0@:nombre" Nota 2: No hay mención de la opción LINE en el artículo original. *Load Sintaxis: *LOAD"nombre" {especificación} Abreviaciones: *L Ejemplos: *LOAD "programa" *load "datos" DATA ... *LO "codigo1" CODE ... *L "pantalla" SCREENS *LOAD "I?e fa*" - cargará primer programa que cumpla con comodines *load "*" - cargará el archivo recientemente salvado *Merge Sintaxis: *MERGE"nombre" Abreviaciones: *M, *MER carga y fusiona el programa del disco con el programa en curso. *Verify Sintaxis: *VERIFY"nombre" {especificación} Abreviaciones: *VE, *VER Ejemplos: *VERIFY "nombre" *verify"datos" DATA ... *VE "codigo1" CODE ... *VERI "pantalla" SCREEN$ *VER "I?e fa*" - verificará programa según los comodines *VERIFY "*" - verificará el archivo recientemente salvado *Move Sintaxis: * MOVE "nuevo fichero=fichero original" Abreviaciones: palabra clave del Spectrum copia los archivos de acuerdo con la sintaxis dada. *Rename Sintaxis: *RENAME "nombre nuevo=nombre original" Abreviaciones: *R, *REN renombra los archivos de acuerdo con la sintaxis dada. *Erase Sintaxis: * ERASE "nombre" Abreviaciones: palabra clave del Spectrum Nota: * ERASE "*" eliminará todos los archivos del disco *Validate Sintaxis: *VALIDATE Abreviaciones: *VA, *VALID libera el espacio dejado por los archivos eliminados, o mal grabados, estos últimos tienen una marca junto al nombre. *Error Sintaxis: *ERROR Abreviaciones: ninguna Si el LED del disco parpadea en rojo indicando un error, el DOS se detiene sin dar mensaje alguno. Para ver el error del disco en la pantalla se debe tipear: PRINT:*ERROR. Para imprimir el texto: LPRINT:*ERROR. O también: OPEN #2, "P": *ERROR: CLOSE #2 Da la siguiente información: número de error, descripción del error, número de track (pista) y bloque en el que ocurrió el error. *Initialize Sintaxis: *INITIALIZE Abreviaciones: *I, *INIT, *INITIA Cuando por un error, los comandos del sistema cesan su funcionamiento, *I restaura el disco como cuando lo enciendes para que puedas continuar. *Eprom Sintaxis: *EPROM,n Abreviaciones: ninguna cambia el número de rutina n del EPROM número 3 a LA RAM y lo inicia según sea necesario. La EPROM 3 (con capacidades de 2 a 16k) del SDI puede ser usada para guardar programas utilitarios propios, ya sea TOOLKIT, DEVPAC o BETABASIC. Nota: Es necesario que entre las primeras líneas del listado BASIC se halle lo sigte.: RANDOMIZE USR 16000 para que los comandos de disco puedan ser utilizados dentro del programa que los requiera. Programa ejemplo publicado en Moj Mikro 5: 10 REM program matrica 15 RANDOMIZE USR 16000 20 DIM a(9,9):DIM b(9,9) 30 FOR i=1 TO 9:FOR j=1 TO 9 50 LET a(i,j)=RND*10 55 LET b(i,j)=RND*10 60 NEXT j:NEXT i 75 GOSUB 1000 80*save "mat a" DATA a() 90*save "mat b" DATA b() 100 CLEAR: RANDOMIZE USR 16000 110*load "mat a" DATA b() 120*load "mat b" DATA a() 140 GOSUB 1000 150 STOP 1000 FOR i=1 TO 9:FOR j=1 TO 9 1020 PRINT a(i,j), 1030 PRINT b(i,j) 1040 NEXT j: NEXT i 1050 RETURN Nota: la forma como el programa está escrito hace una función SWAP con las matrices, es decir las intercambia al cargar. Mensajes diversos: DISK FULL - se da con SAVE, el disco está lleno FILE NOT FOUND - se da con LOAD, VERIFY o MERGE, archivo no encontrado DEVICE NOT PRESENT - dispositivo no existe SEARCHING FOR ... - buscando ... LOADING - cargando, sucede tras hacer un LOAD SAVING - salvando VERIFYING ERROR - error en la verificación FILE ALREADY EXISTS - se da con SAVE, el fichero ya existe NOW MERGING - mezclando ahora, sucede tras hacer un MERGE WRONG FILE TYPE - tipo de archivo arroneo, pasa con LOAD o VERIFY FILES NOT EQUAL IN LENGHT - VERIFY, los archivos no son del mismo largo EPROM NOT PRESENT - no se halla ningún EPROM EPROM ERROR - error en el EPROM ROUTINE NOT PRESENT - rutina no presente Al revisar la ROM se encuentra el sigte mensaje: SPECTRUM DISK INTERFACE DOS V1.0 Autori HARDVERA: UROSEVIC MILAN  SOFTVERA: GERENCIR IVAN Para cerrar: Si comparamos el SDI con el Proceed 1 de Logitech, el SDI resulta ser muy básico. Tiene dos EPROMs de 4k, pero solo usa una normalmente. Hay un botón de RESET y un led de encendido. Se conecta al bus de expansion del Spectrum sin interferir con otras unidades conectadas en paralelo como el IF1, IF2 etc. Requiere de su propia fuente de +5v. Al parecer solo permite conectar una sola unidad 1541, a diferencia del Proceed que admite más de una unidad. Encima genera problemas con los Spectrum que poseen la Rom NEC. Tampoco tiene ficheros tipo OPEN. Un detalle a considerar es la sintaxis real de dos de los comandos del SDI. En el primer artículo *Eprom tiene la sintaxis *EPROM,n y la última opción de *Save se ve como *SAVE"@:nombre". Sin embargo en el artículo final no se explica nada de la sintaxis correcta de *Eprom y en cuanto al *Save ya mencionado, se muestra como *SAVE"o@:nombre", pero en otra parte vemos OPEN @ en vez de OPEN #. Así que deja en duda la real sintaxis de dicho *Save. Podría ser "0@:...", "O@:..." o incluso "O#:..." para el caso. Solo quien lo haya armado en su casa o conseguido de otro que lo tuviera ya hecho, pude confirmar la sintaxis real de dichos comandos. Y dicho esto, cierro finalmente mis notas sobre el SDI. (c)2019 - 2020 zx_if1@hotmail.com