La primera era saber que sucede cuando conectas dos paneras ( por ejemplo un Vic20 y un C64 o un C16 ) a la misma unidad de disco, ya sea una Vic-1541 o una 1571.
La segunda es conocer hasta que punto la unidad interna de un C128D o DCR es accesible por el bus IEC. También consultado en Amiga Wave.
Para la primera de las cuestiones tengo que decir que me lo pensé mucho porque no estoy dispuesto a ser temerario y cargarme un equipo por hacer una prueba que pudiera carecer de sentido. Para estas cosas primero y muy importante es documentarse y a partir de ahí asegurarse de que lo que se va a hace se puede y que no vas a cascar nada. Si hay riesgo de fastidiar un equipo no hagas nada que luego puedas lamentar.
Hay un post en sleepingelephant que dice lo mismo: http://www.sleepingelephant.com/ipw-web ... php?t=3828 y mucha info aquí. http://www.baltissen.org/newhtm/1541a.htm
Dicho todo eso, la duda de si iba a funcionar o no solo hizo acrecentar las ganas y la tentación de probarlo... ¿ qué pasará ?
La primera hipótesis ( o mejor dicho ) conjetura que imaginé, fue la de que cualquiera de los dos equipos podría acceder a la 1541, pero NO los dos a la vez. Y había que salir de dudas y probar. Así que con audacia y determinación lo hice.
Lo que pasará es que el Kernal tiene un bug en su código de reseteo que bloqueará el bus hasta que se acceda una vez o manualmente se reseteen los registros del bus que liberan las lineas ofensivas.
En un Vic20 esto se puede hacer mediante POKE 37137, PEEK(37137) OR 3 y en un C64 mediante POKE 56576, PEEK(56576) AND 239 , esto está documentado en el manual del StarCommander. http://sta.c64.org/scdoc.html
Esto desacopla el Commodore desde el bus serie común, cambiando la línea CLK a alto. Cada vez que también se acceda a la unidad se tendrá que lanzar este comando de nuevo después. El StarCommander por ejemplo, desacopla el ordenador de forma automática desde el bus serie unos segundos después de haber completado una operación de disco.
Con esto entendemos que habría que asegurarse que los equipos no van a tratar de acceder a la unidad al mismo tiempo, no hay nada en el protocolo que compruebe una colisión del BUS.
Prueba 1) FUNCIONA
No funcionará hasta que ambos ordenadores hagan el primer intento de acceder a la unidad. La unidad a probar tiene el ID 8. Así que conecté el Vic20 y el C64 con sus cables a la 1541. Puse un floppy con .PRG y cositas y lancé un par de LOAD "$",8 desde cada máquina un par de veces.
¡Guauu! ¡Wooooowww! Ojalá hubiéramos sabido de esto hace un par de décadas. Ahora la unidad 1541 es un servidor de ficheros entre mi VIC20 y mi C64 como clientes. Funcionar funciona, lo que no he hecho es hacer que ambos Commodore hagan uso simultaneo de la 1541. Sin los POKES malamente funcionará.
NO HAGAIS USO DE LA 1541 SIMULTÁNEAMENTE DESDE AMBOS COMMODORE
Esperad a que termine uno para poder operar con el otro.
Ya solo me falta encontrar el POKE para los TED (C16) pero esto tiene mucha miga, no se hasta que punto los dispositivos IEC que usamos serían capaces de gestionar el tinglado pero vamos, funciona que es lo importante.
Edito: En el fragor de la batalla aparecieron en combate....
[tabs][tabs: ]C64: POKE 56576,PEEK(56576) OR 192
Vic20: POKE 37137,PEEK(37137) OR 3
Plus/4: POKE 1,PEEK(1) OR 1[/tabs]
POKE 56576, PEEK(56576) AND 215 This "switches off" PA3 (ATN OUT), PA4 (CLK OUT) and PA5 (DATA OUT) on the CIA2, thus, setting the appropriate lines inactive on the IEC bus.
Commodore serial bus signals can be controlled from the C-64 by using the following poke commands:
CLK
poke 56576, peek(56576) or 16
poke 56576, peek(56576) and 239
DATA
poke 56576, peek(56576) or 32
poke 56576, peek(56576) and 223
ATN
poke 56576, peek(56576) or 8
poke 56576, peek(56576) and 247
Prueba 2) C128D/DCR y 1571 interna en BUS IEC.
De momento la he dejado en espera de reunir más información y si alguien ha hecho alguna prueba si lo quiere contar o sabe del tema se agradece y mucho.
To use the built-in drive of a C128D or an SX64 or to use the same Commodore drive from a Commodore machine and a PC, you must execute a POKE command on the Commodore machine:
Commodore 64/128: "POKE 56576, PEEK(56576) AND 239" or simply "POKE 56576, 199".
Commodore Plus4: "POKE 1, PEEK(1) OR 1".
Commodore VIC20: "POKE 37137, PEEK(37137) OR 3".