[zxspectrum] Re: R: Re: R: Re: Link IF1, era Infinite loop: the Sinclair ZX Microdrive story

  • From: Luca Alimandi <luca.alimandi@xxxxxxxxxx>
  • To: zxspectrum@xxxxxxxxxxxxx
  • Date: Thu, 18 Jun 2015 02:32:07 +0200

Il 17/06/2015 09:47, Enrico Maria Giordano ha scritto:


Ah, ok. Ma se ti serve solo per verificare il corretto funzionamento della connessione perché non usi un qualunque terminale già pronto? Poi, se tutto funziona, passi a vedere perché non funziona il programma in VBS, no? O l'hai già fatto?


Ho provato ma ci deve ancora essere qualche problema con il cavo... Vedi più avanti.

In ogni caso, visto che il comando da shell DOS sembra funzionare, posso
pensare di usare anche dei semplici BATch o CMD...

Ok, prova.

Tra l'altro oggi cercando ancora ho trovato delle informazioni interessanti riguardo dei batch per le comunicazioni seriali...
Adesso è tardi; se riesco, sabato aggiorno... (domani sera e dopodomani sera ho degli impegni fino a tardi, non penso che avrò tempo per la ML...)


Questo è sicuramente funzionante, guarda un po' se riesci a prenderne
spunto:

hCom = CreateFile( lpszDevControl,
GENERIC_READ | GENERIC_WRITE, 0, NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL |
FILE_FLAG_OVERLAPPED, NULL );

Ma è linguaggio VBScript?... Mi sembra qualcos'altro...

E' una chiamata all'API CreateFile() che può essere fatta da qualsiasi linguaggio (più o meno). Non so però se può essere fatta da VBScript. Io il VBScript lo uso solo per Internet, non l'ho mai usato per programmi locali.

In ogni caso le costanti che valori devono avere?

#define GENERIC_READ (0x80000000L)
#define GENERIC_WRITE (0x40000000L)
#define OPEN_EXISTING 3
#define FILE_ATTRIBUTE_NORMAL 0x00000080
#define FILE_FLAG_OVERLAPPED 0x40000000


OK, grazie! Proverò (ma ho l'impressione che da VBScript non si potrà invocare...)

No, non c'è differenza dal punto di vista del software applicativo.

Uhm... E allora come mai lo stesso comando non funziona con la mia COM10
e funziona con altre COM?... Boh!

Evidentemente una differenza c'è ma non basta il comando MODE COM per rilevarla.

Forse una mezza spiegazione l'ho trovata in quegli articoli di cui parlavo, ma devo verificare...


Ah, ok. Però non basta ugualmente. Per esperienza so che ci vogliono i
ponticelli indicati nel manuale di Link.

Infatti, ma quei "ponticelli" sono proprio i collegamenti indicati nello
schema del null modem con handshaking!!!

Sei proprio sicuro? Se sì, ok.

EMG



Del cavo null modem sono sicuro (infatti tra PC e PC ha funzionato...)
Poi però ieri cercando ancora su Internet, ho ritrovato lo schema di un un cavo per l'RS232 della IF1 (vedi sotto) e mi sono accorto che l'IF non usava la piedinatura standard (all'epoca lo sapevo e mi era chiaro, ma col tempo l'avevo dimenticato!), e in particolare il pin del GND non è il 5 (come sulle seriali del PC) ma il 7! In realtà sarebbe bastato riguardare il manuale dell'IF1 e si sarebbe subito visto che i piedini non erano in posizione standard! Ma lo avevo dato per scontato e non ho controllato!
Ora e per un po' non ho il tempo di costruirmi il nuovo cavo (esclusivamente per l'IF1) e di fare delle prove, ma appena ho un attimo libero ci riprovo.
Penso proprio che il problema sia lì! ;-)

Ecco uno schema per il collegamento tra il connettore dell'IF1 e una seriale standard del PC (a 9 o a 25 poli) tratto da qui <http://www.fruitcake.plus.com/Sinclair/Interface2/Cartridges/Interface2_RC_New_RS232.htm>:


*Pin* *Name* *PC-9* *PC-25* *Name*
2 TX 3 2 TXD
3 RX 2 3 RXD
4 DTR 4 20 DTR
5 CTS 8 5 CTS
7 0V 5 7 0V
9 9V 6 6 DSR





(la prima colonna si riferisce ai pin del connettore DB9 dell'IF1)

Questo va bene per far colloquiare lo ZX con un PC tramite la seriale dell'IF1 e le routine della ROM in essa presente.

Però, utilizzando un programma diverso (come *Link*) che non gestisce l'handshake hardware (cioè non controlla i segnali DTR, DTS, ecc.), occorre un cavo diverso, tipo questo:

*Pin* *Name* *PC-9* *Name*
2 TX 3 TXD
3 RX 2 RXD
4 N.C. 4 – 6 – 1 DTR +DSR + CD
5 N.C. 7 – 8 CTS + RTS
*7* *0V* *5* *0V*



Insomma, un cavo del tutto simile al null modem già visto, ma con il pin 7 lato IF1 collegato al pin 5 lato PC (GND).

Appena lo costruisco e lo provo vi comunico l'esito...


-- |_ /-\

Other related posts: