Trasferimento di un file testuale da PC/Lubuntu ad Amiga ...

Riflessioni, eventi, curiosità

Trasferimento di un file testuale da PC/Lubuntu ad Amiga ...

Messaggioda AMG_Novice_Usr » lun giu 01, 2020 7:09 pm

Trasferimento di un file testuale da PC/Lubuntu ad Amiga e viceversa … problemi/stranezze!

Ciao a tutti,

l’obiettivo finale è quello di creare con Raspberry PI un adattatore USB/seriale per un A1200 fisico, tuttavia, per il momento, ho deciso di aggredire un problema più semplice e di più facile debugging, quindi al posto di un Raspberry, ho un PC su cui gira Lubuntu 18.04 LTS.

Da questo PC esco con una porta USB, vista come ttyUSB0 (/dev/ttyUSB0), in questa porta USB ho inserito un adapter USB/Rs232, la Rs232 arriva, tramite cavetto Null-modem, alla porta seriale dell’Amiga.

L’obiettivo finale è di trasferire un qualunque file (.adf, .lha ecc …), ma per semplicità ho deciso di cominciare con un file testuale, residente appunto su PC.
Avatar utente
AMG_Novice_Usr

Veterano
 
Messaggi: 271
Iscritto il: ven mag 01, 2020 10:10 am
Località: Pisa

Re: Trasferimento di un file testuale da PC/Lubuntu ad Amiga

Messaggioda AMG_Novice_Usr » lun giu 01, 2020 7:22 pm

Bene,
questo è il programmino che viene eseguito su PC:

test7.c
https://drive.google.com/file/d/1L9ZNhZ ... Sj-df/view

Evito di postare tutte le versioni di questo programma: ho provato svariati baud-rate, poiché dalle prime prove evincevo (sbagliando) che 19200 fosse troppo alto (non è vero, va benissimo), piuttosto che ho provato sia l’approccio più “bare metal” legato alla voluta assenza di buffer TX/RX sia lato PC/Lubuntu sia lato Amiga (quindi ad ogni operazione I/O, seguiva sempre un fflush), sia l’approccio di inserimento di buffers TX/RX.
Come vedete dal sorgente, vi posto l’ultima scuola di pensiero da me seguita, ovvero il buffering dei files fisici … ma ripeto, le stranezze si verificano anche nell’altro caso.

Questo è il file testuale che il programmino vorrebbe inviare ad Amiga:

doc3.txt
https://drive.google.com/file/d/19sSYlu ... eemuk/view

Su Amiga, ho optato per provare entrambe le strade, ovvero senza buffer (quindi con fflush) e con buffer, specularmente a ciò che provavo su PC, inoltre su Amiga ho optato per 2 ulteriori filoni di test: utilizzo di uno script batch scritto in AmigaDOS (per vedere se tante volte il mio programma C su Amiga presentasse dei problemi), e poi chiaramente utilizzo di un analogo programma scritto in C in ambiente IDE “StormC 3.0” … sia nel primo che nel secondo caso, riscontro problemi, quindi c’è qualcosa di grosso sotto …

Ecco il mio script scritto in AmigaDOS:

batch4
https://drive.google.com/file/d/1QReYWg ... CysVx/view

Come potere vedere, niente di più banale (cmd è un file vuoto che serve a fare il clearing di quello di ricezione da PC ogni volta che scripto lo script).

Ecco l’analogo programma in C su Amiga:

test5.cpp
https://drive.google.com/file/d/1Lfs-by ... EPt-o/view

Come potete vedere, sembrerebbe la fiera delle (apparenti) ovvietà.
Avatar utente
AMG_Novice_Usr

Veterano
 
Messaggi: 271
Iscritto il: ven mag 01, 2020 10:10 am
Località: Pisa

Re: Trasferimento di un file testuale da PC/Lubuntu ad Amiga

Messaggioda AMG_Novice_Usr » lun giu 01, 2020 7:41 pm

In breve, su Amiga non sono ancora riuscito a vedere il file “doc3.txt” come dovrebbe essere.
Il file su PC è questo:

testo_pc.jpg
https://drive.google.com/file/d/1NIhK90 ... xbpvJ/view

pc_ok2.jpg
https://drive.google.com/file/d/1vvnHbn ... 32MgU/view

Il programma che gira su PC fornisce questo info-log sullo stdout, e sembra molto congruente con la realtà del file inviato in seriale USB->Rs232 verso Amiga:

pc_ok.jpg
https://drive.google.com/file/d/1KykDmF ... IHw3F/view

Quindi lato PC sembra tutto molto promettente.

Lato Amiga … ecco il file che mi ritrovo:

testo_amiga_dos.jpg
https://drive.google.com/file/d/1sT600M ... -rS10/view

questo file è stato creato dal comando “copy AUX: file cmd_rx” dello script AmigaDOS che avete visto in precedenza, man mano che i bytes arrivavano sulla porta seriale AUX: di Amiga.

la cosa è sistematica/ripetibile N volte, con N che tende ad infinito, quindi non siamo di fronte a malfunzionamenti occasionali, ramdomici … il problema è strutturale. Come vedete, manca sempre un pezzo della tredicesime/ultima riga, più la stringa “END” finale … perché?

Se invece di scriptare lo script in AmigaDOS di cui sopra, lancio il programma in C lato Amiga, ecco l’info-log che tale programma stampa sulla CLI-Shell:

amiga_quasi_ok_dos.jpg
https://drive.google.com/file/d/1p8GlzC ... 3nXvK/view

come si evince, anche qui tutto sembra OK … eppure, il file testuale non è quello di partenza, quello inviato dal PC
(stessa identica deformità mostrata sopra)
Cosa sta accadendo?

Per i più pazienti, ecco 2 brevissimi video che mostrano in modalità “live” il fenomeno:

amiga_quasi_ok_dos2.mp4
https://drive.google.com/file/d/1KlGUiR ... 1O2iF/view

pc-amiga.mp4
https://drive.google.com/file/d/1bgp9qR ... _RWeA/view
Ultima modifica di AMG_Novice_Usr il mar giu 02, 2020 11:23 am, modificato 1 volta in totale.
Avatar utente
AMG_Novice_Usr

Veterano
 
Messaggi: 271
Iscritto il: ven mag 01, 2020 10:10 am
Località: Pisa

Re: Trasferimento di un file testuale da PC/Lubuntu ad Amiga

Messaggioda AMG_Novice_Usr » lun giu 01, 2020 7:53 pm

Ho provato anche a fare il contrario, ossia ad inviare da Amiga un file testuale verso PC/Lubuntu, per capire se le stranezze fossero monodirezionali o meno … ebbene … le stranezze sono bidirezionali!

Questo è il programma che gira su Amiga:

Project6.cpp
https://drive.google.com/file/d/13E6qip ... bu9K-/view

che invia in seriale il file testuale solito.
Tutto tranquillo.

Questo è il programma che gira su PC/Lubuntu:

test11.c
https://drive.google.com/file/d/1eWnk8e ... GX3RV/view

che ascolta dalla seriale e scrive sul nascituro “doc4.txt” il file trasmesso da Amiga.
Anche qui, tutto tranquillo.

Ecco ciò che accade:

amiga-pc.mp4
https://drive.google.com/file/d/1lgB0C0 ... 8RZBB/view

come si vede dal video, da Amiga dovrebbe partire un file di 277 bytes, invece su PC/Lubuntu arriva un file molto più lungo, circa 533 bytes, la cui prima porzione è una copia fedele del file inviato da Amiga, poi c’è un’appendice che non ci dovrebbe essere, sembra un’altra copia “deformata” del file, inoltre Amiga invia il carattere FS = 28 (file separator) per chiudere la trasmissione, ma la seriale ttyUSB0 lato PC/Lubuntu non sembra accorgersi di tale carattere di controllo … infatti devo chiudere a mano brutalmente la comunicazione lato PC (CTRL+C) … la scrittura su file su PC “doc4.txt” la trovo perché ho adottato la tecnica senza buffer + fflush, quindi anche in assenza di chiusura corretta “fclose(FILE*)” del file di ricezione su PC, ciò che è arrivato da Amiga fino a quel moment lo trovo su doc4.txt.

Ogni osservazione/suggerimento con cognizione di causa sarà ben accetta!
Ultima modifica di AMG_Novice_Usr il mar giu 02, 2020 11:26 am, modificato 1 volta in totale.
Avatar utente
AMG_Novice_Usr

Veterano
 
Messaggi: 271
Iscritto il: ven mag 01, 2020 10:10 am
Località: Pisa

Re: Trasferimento di un file testuale da PC/Lubuntu ad Amiga

Messaggioda AMIGASYSTEM » lun giu 01, 2020 9:25 pm

AMG_Novice_Usr, ai video devi dare i consensi altrimenti non potrà vederli nessuno, da qualche giorno su Google Drive sono cambiate le impostazioni, adesso su ogni video da condividere occorre dare i consensi di condivisione.
Immagine - AROS One Home Site - AfA One - AROS One x86 - AROS One 68K - WinUAE OS 4.1 -

Miei AMIGA
Amiga 4000/Cyberstorm MK II/060/Picasso RAM 6MB Kick 3.1
Amiga 1200/030 Ram 16 Mega HD 500 MB
Amiga 1200/040 Ram 32 Mega HD 500 MB
Amiga 600 HD 20 MB
Amiga 600 Doppio Kickstart 2.05-1.3
Amiga 500 Plus Doppio Kickstart 204-1.3
Amiga 500
CD32/SX-32 MK1 RAM 8 MB HD 4G
CD32 Standard
Avatar utente
AMIGASYSTEM

Staff
 
Messaggi: 5513
Iscritto il: ven lug 25, 2008 8:39 pm
Località: Brindisi

Re: Trasferimento di un file testuale da PC/Lubuntu ad Amiga

Messaggioda AMG_Novice_Usr » mar giu 02, 2020 11:28 am

Ciao Carlo,
adesso i links dovrebbero andar bene ed essere visibili da tutti.
Avatar utente
AMG_Novice_Usr

Veterano
 
Messaggi: 271
Iscritto il: ven mag 01, 2020 10:10 am
Località: Pisa

Re: Trasferimento di un file testuale da PC/Lubuntu ad Amiga

Messaggioda AMG_Novice_Usr » mar giu 02, 2020 12:46 pm

Sono accessibili adesso i links, sia video che immagini che testi (sorgenti dei programmi)?
grazie
Avatar utente
AMG_Novice_Usr

Veterano
 
Messaggi: 271
Iscritto il: ven mag 01, 2020 10:10 am
Località: Pisa

Re: Trasferimento di un file testuale da PC/Lubuntu ad Amiga

Messaggioda AMG_Novice_Usr » mar giu 02, 2020 12:48 pm

Anticipo un attimo quello che potrebbe venire dopo …

Intanto vorrei risolvere i problemi di comunicazione e sua affidabilità fra PC/Lubuntu e Amiga.
Una volta risolti, una volta che qualunque file di testo può essere inviato da PC ad Amiga, il secondo step sarebbe
quello di provare a trasmettere PC/Linux -> Amiga un file binario non testuale.

L'esercizio sembrerebbe identico al precedente, e invece ho già sperimentato delle differenze, quindi difficoltà.
Il motivo risiede nel modo con cui si riesce a chiudere la porta COM lato Amiga, quindi il device AUX:

Infatti, prima di usare il device AUX: io usavo SER: , tuttavia sperimentai un problema, ovvero che non riuscivo a
scatenare la chiusura della porta COM SER: lato Amiga, nonostante io inviassi il carattere di file-separator FS decimale 28:
ho tentato tutti i caratteri di controllo, i primi 30 della tabella ASCII, ma nessuno di loro, inviato da PC verso Amiga,
era in grado di imporre/scatenare la chiusura della porta seriale SER: su Amiga, quindi il comando/programma AmigaDOS
"COPY from SER: to <mio-file>" non ritornava mai, quindi le risorse impegnate non si chiudevano correttamente ed il file
<mio-file> su Amiga (file inviato dal PC) non si creava.

Passando da SER: ad AUX: ho risolto questo problema, nel senso che inviando il carattere FS = 28, Amiga chiude
la porta seriale AUX: ed il file <mio-file> viene così creato correttamente!

Ultimo passaggio:

finchè si invia un file di testo, tutto ok, nel senso che un file testuale è fatto solo di caratteri visibili e comunque di
tabulazione (es: \n, \t, \r ecc ...), i caratteri invisibili di controllo non vengono coinvolti, salvo appunto il controllo
del flusso, quindi quando hai finito di trasmettere il file testuale, tu invii ad Amiga un bel 28 e tutto finisce bene.

Se però devi inviare un file binario? Come fai?

Un file binario (un eseguibile, un archivio, ecc ...) sarà pieno di 28, o comunque non possiamo certo escludere che
non ce ne sia qualcuno, quindi il rischio (mi è già successo) è che supponiamo che a metà eseguibile ci sia un bel 28
piazzato lì, quindi la porta seriale AUX: di Amiga si chiude prematuramente, quando il PC ha inviato solo metà
file … quindi come fare a controllare (triggerare la chiusura) della porta COM AUX: oppure SER: di Amiga senza
avvalersi dei caratteri di controllo come FS=28?

Una volta risolto questo bus-illis, il terzo step sarebbe quello di sostituire il PC/Lubuntu con una economicissima
schedina senza schermo Raspberry PI e scrivere un demone che quando inserisci una chiavetta USB chiamata "Amiga",
lui automaticamente ne invia il contenuto all'Amiga.
Avatar utente
AMG_Novice_Usr

Veterano
 
Messaggi: 271
Iscritto il: ven mag 01, 2020 10:10 am
Località: Pisa

Re: Trasferimento di un file testuale da PC/Lubuntu ad Amiga

Messaggioda Raffaele » sab giu 27, 2020 10:48 am

Parti dalle cose semplici.
Usa PuTTY su Linux e Amiga Term lato Amiga e monitora con un programma fatto da te l'attività della seriale per vedere cosa stanno facendo i due programmi di emulazione terminale...

Ti rimando a questo sito qui:
https://wiki.amigaos.net/wiki/Advanced_ ... ging_Guide
Que viva Amiga! :ammicca:
Avatar utente
Raffaele

Supremo
 
Messaggi: 3501
Iscritto il: dom mag 22, 2005 1:01 pm
Località: Qualche volta qui, qualche volta su altri siti


Torna a Amiga in generale

Chi c’è in linea

Visitano il forum: Nessuno e 15 ospiti

cron