Menů principale
 Notizie
 Grafica
 Forum
 Links
 Retro Trailer
 Recensioni
 Modelli Amiga
 Storia Amiga
 Retro-Gamers
 Lista Utenti
 Contatti
 Policy sito
Ricerca Google

Login

Nick


Password


20 Novembre 2021 Postato da: AMG_Novice_Usr
Programma in C (IDE: StormC 3.0) su A1200 reale, per trasferimento file PC -> Amiga
Buonasera,

Sto cercando di preparare un programmino in C nell’ambiente di sviluppo per C/C++ per Amiga “StormC 3.0”.

Il programmino in questione, che deve girare su un A1200 reale, è il seguente (codice sorgente):

https://drive.google.com/file/d/1Lfs-byWqWQsS Ajn425ULtbLFhNwEPt-o/view

Come vedete, la filosofia è banale, ovvero apro il file/device della porta seriale di Amiga “AUX:” (SER: ha un problema … rimando eventualmente a post successivi questo approfondimento “AUX:” vs “SER:”), porta seriale opportunamente pre-impostata tramite le Prefs (quindi IPrefs), in modo da matchare con le caratteristiche (baud-rate, numero di stop bits, parity bit e hand-shaking) della seriale lato PC/Windows.

Dicevo, apro in lettura il primo file AUX: da cui devo leggere/prelevare i bytes man mano che questi arrivano dal PC/Windows, poi apro un secondo file “pippo.txt” (un qualunque nome, lungo un qualunque path), questo file è aperto in scrittura, il quale riceve i bytes che arrivano via seriale.

Lato PC sto usando un programmino chiamato RealTerm, per non stare a farmi da solo il programma trasmettitore:

https://drive.google.com/file/d/1OcRkcGo_0NeX q9qNNt2NXdaiBidQ2T/view
Commenti: 5  Aggiungi  - Leggi

Indice: forum / Richieste di Aiuto


utente amiga quadratico medio

Post inviati: 701

Visulizza profilo Messaggio Personale
87.8.147.*** Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36/8mqEzXuL-46
Commento 1
AMG_Novice_Usr 20 Novembre 2021    18:14:48
per quanto riguarda l'ultimo link, se al posto dell'emoticon (ovvero fra i caratteri 'B' e 'i') ci mettete la stringa con i due caratteri "",
arrivate a vedere l'immagine voluta.

A500-Plus + A501 + switch meccanico per selezione Double-kickstart 1.3 v. 34.5 / 3.1 v. 40.63 /// A600, Rev. MB. 1.5, espansione in trap-door 1MB chip-ram, Kick-Cloanto 45.66, HDD interno a tracce da 2GB modello MK2104MAV by Toshiba su porta IDE: partizione DH1 con WB2.1 (default) + partizione DH2 con WB3.1 /// A500, Kick 1.3 v. 34.5, scheda espansione in trap-door da 512KB /// A600, espansione da 4MB-fast-ram innestata con zoccolo direttamente su 68K, Kick 2.05 v. 37.300, espansione di chip-ram in trap-door da 1MB, CF da 4GB su adattatore interno CF/IDE: partizione DH0 con CWB GAAE, partizione DH1 con WB2.1, partizione DH2 con WB1.3 /// A500, Rev. MB 6A, Kick 1.3 v. 34.5, A520-TV-RF-Modulator /// A500, PWR-LED ROSSO. Kick 1.2 v. 33.180 /// A500-Plus, PWR-LED ROSSO, Kick 2.04 v. 37.175, Driver DF1 esterno Savage DMF 322, A590 alimentato da alimentatore di CD32, con dentro espansione da 2MB di fast-ram + HDD SCSI Seagate ST32151N da 2GB - DH0 con WB 2.04 e DH1 con WB 1.2 /// A1200, 68EC020, Kick 3.0 v. 39.106, HDD a tracce Hitachi 40GB interno su porta IDE con installato CWB, espansione A1208 in trap-door da 8MB-fast-ram, PLipBox su porta parallela per collegamento via Ethernet a Internet /// Commodore 64 Assy NO. 250425 + floppy drive 5’’ 1/4 modello 1541

utente amiga quadratico medio

Post inviati: 701

Visulizza profilo Messaggio Personale
87.8.147.*** Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36/8mqNiKuL-34
Commento 2
AMG_Novice_Usr 20 Novembre 2021    18:20:51
Vi mostro un brevissimo video che descrive il problema che lamento:

https://drive.google.com/file/d/1xh-JtJaeN4ddeKHTZ yp5U2ELYSDB2vK2/view

Come vedete, appena lancio il SEND di questo file testuale di prova (le frasi ASCII sono idiote, random, giusto per vedere se su A1200 riuscivo a ricevere qualcosa):

https://drive.google.com/file/d/1XY4ar1T4OW578yvam McckmuClk2LlJrT/view

il programma sender su PC/Windows sembra fare il suo dovere, il mio programmino su Amiga sembra fare il suo dovere, dal byte 1 al byte 232 (il file .txt in questione consta di 239 bytes), poi appena viene ricevuto il byte 232, il ciclo “for” su Amiga di raccolta dei bytes proveniente dal PC, tramite seriale AUX, si blocca: per sboccare il processo, devo inviare il byte decimale 28, ovvero FS (File Separator).

Se infatti invio il byte decimale 28, il processo termina con successo, poiché arrivano i pochi rimanenti bytes dal 233 fino al byte 239, a quel punto il file è finito, quindi feof() ritorna 1, quindi esco dal loop, quindi fine della storia.

Se controllo il path/file di destinazione "pippo.txt", in effetti trovo il file correttamente transitato da PC ad Amiga.

https://drive.google.com/file/d/1jyYxm6_paQXUvS8ii QsKhQ8apQnNhAxT/view

A500-Plus + A501 + switch meccanico per selezione Double-kickstart 1.3 v. 34.5 / 3.1 v. 40.63 /// A600, Rev. MB. 1.5, espansione in trap-door 1MB chip-ram, Kick-Cloanto 45.66, HDD interno a tracce da 2GB modello MK2104MAV by Toshiba su porta IDE: partizione DH1 con WB2.1 (default) + partizione DH2 con WB3.1 /// A500, Kick 1.3 v. 34.5, scheda espansione in trap-door da 512KB /// A600, espansione da 4MB-fast-ram innestata con zoccolo direttamente su 68K, Kick 2.05 v. 37.300, espansione di chip-ram in trap-door da 1MB, CF da 4GB su adattatore interno CF/IDE: partizione DH0 con CWB GAAE, partizione DH1 con WB2.1, partizione DH2 con WB1.3 /// A500, Rev. MB 6A, Kick 1.3 v. 34.5, A520-TV-RF-Modulator /// A500, PWR-LED ROSSO. Kick 1.2 v. 33.180 /// A500-Plus, PWR-LED ROSSO, Kick 2.04 v. 37.175, Driver DF1 esterno Savage DMF 322, A590 alimentato da alimentatore di CD32, con dentro espansione da 2MB di fast-ram + HDD SCSI Seagate ST32151N da 2GB - DH0 con WB 2.04 e DH1 con WB 1.2 /// A1200, 68EC020, Kick 3.0 v. 39.106, HDD a tracce Hitachi 40GB interno su porta IDE con installato CWB, espansione A1208 in trap-door da 8MB-fast-ram, PLipBox su porta parallela per collegamento via Ethernet a Internet /// Commodore 64 Assy NO. 250425 + floppy drive 5’’ 1/4 modello 1541

utente amiga quadratico medio

Post inviati: 701

Visulizza profilo Messaggio Personale
87.8.147.*** Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36/2kcL6ZrR-71
Commento 3
AMG_Novice_Usr 20 Novembre 2021    18:23:23
Le mie domande sarebbero:

1)

Per quale motivo il flusso TX->RX->fgetc() (fgetc è bloccante) raccolta dei bytes in transito si blocca al byte 232-esimo? E perché devo mandare il decimale 28 (FS) per far finire il trasferimento del file CC.txt?

Io ho pensato ad un discorso di buffer su AUX:

ho provato ad annullare il buffer, mettendo nella mia User-startup-sequence:

C:AddBuffer >NIL: 0

E ho anche provato ad usare la funzione fflush(), per avere un controllo non bufferizzato, cioè per avere il pieno controllo byte-wise del flusso nelle mie mani, ma senza successo.

Ho anche tentato la strada opposta, ovvero assegnare alla seriale un buffer grande, ma nulla è cambiato: continuo ad avere l’interruzione al byte 232-esimo.

A500-Plus + A501 + switch meccanico per selezione Double-kickstart 1.3 v. 34.5 / 3.1 v. 40.63 /// A600, Rev. MB. 1.5, espansione in trap-door 1MB chip-ram, Kick-Cloanto 45.66, HDD interno a tracce da 2GB modello MK2104MAV by Toshiba su porta IDE: partizione DH1 con WB2.1 (default) + partizione DH2 con WB3.1 /// A500, Kick 1.3 v. 34.5, scheda espansione in trap-door da 512KB /// A600, espansione da 4MB-fast-ram innestata con zoccolo direttamente su 68K, Kick 2.05 v. 37.300, espansione di chip-ram in trap-door da 1MB, CF da 4GB su adattatore interno CF/IDE: partizione DH0 con CWB GAAE, partizione DH1 con WB2.1, partizione DH2 con WB1.3 /// A500, Rev. MB 6A, Kick 1.3 v. 34.5, A520-TV-RF-Modulator /// A500, PWR-LED ROSSO. Kick 1.2 v. 33.180 /// A500-Plus, PWR-LED ROSSO, Kick 2.04 v. 37.175, Driver DF1 esterno Savage DMF 322, A590 alimentato da alimentatore di CD32, con dentro espansione da 2MB di fast-ram + HDD SCSI Seagate ST32151N da 2GB - DH0 con WB 2.04 e DH1 con WB 1.2 /// A1200, 68EC020, Kick 3.0 v. 39.106, HDD a tracce Hitachi 40GB interno su porta IDE con installato CWB, espansione A1208 in trap-door da 8MB-fast-ram, PLipBox su porta parallela per collegamento via Ethernet a Internet /// Commodore 64 Assy NO. 250425 + floppy drive 5’’ 1/4 modello 1541

utente amiga quadratico medio

Post inviati: 701

Visulizza profilo Messaggio Personale
87.8.147.*** Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36/8mqDiPuL-36
Commento 4
AMG_Novice_Usr 20 Novembre 2021    18:33:23
2)

Ci sono metodi in C/C++ migliori per implementare questa applicazione?

3)

Se al posto di un file testuale, io volessi trasferire da PC ad Amiga un file di altro genere, ad esempio un archivio .zip oppure .lha (che è poi il mio obbiettivo finale) … beh … ho già provato, ma ad un certo punto, al byte N-esimo, si pianta il trasferimento, esattamente come avviene per il file testuale.

Escludo questioni del tipo (correggetemi se sbaglio):

"per forza, lato PC stai mandando un array di bytes fra i quali c'è un byte di terminazione ASCII, ovvero 0x00, da cui l'interruzione del flusso dati", poichè le funzioni stdio che vedete nel sorgente sono byte-wise, raw-byte, bare-metal, o come dirsi voglia, non sono funzioni del C standard, ad alto livello, che interrompono la loro analisi, il loro parsing (ritornano, in altre parole) al primo carattere di fine stringa 0x00 ('').

Apparentemente, IMHO, non c'è alcun motivo per cui al 232-esimo carattere dobbiamo avere quella interruzione del flusso dati.

E poi perchè inviando 28 (FS) il flusso termina correttamente?

Sapete spiegarmi cosa sta accadendo, e come risolvere?
Grazie!

A500-Plus + A501 + switch meccanico per selezione Double-kickstart 1.3 v. 34.5 / 3.1 v. 40.63 /// A600, Rev. MB. 1.5, espansione in trap-door 1MB chip-ram, Kick-Cloanto 45.66, HDD interno a tracce da 2GB modello MK2104MAV by Toshiba su porta IDE: partizione DH1 con WB2.1 (default) + partizione DH2 con WB3.1 /// A500, Kick 1.3 v. 34.5, scheda espansione in trap-door da 512KB /// A600, espansione da 4MB-fast-ram innestata con zoccolo direttamente su 68K, Kick 2.05 v. 37.300, espansione di chip-ram in trap-door da 1MB, CF da 4GB su adattatore interno CF/IDE: partizione DH0 con CWB GAAE, partizione DH1 con WB2.1, partizione DH2 con WB1.3 /// A500, Rev. MB 6A, Kick 1.3 v. 34.5, A520-TV-RF-Modulator /// A500, PWR-LED ROSSO. Kick 1.2 v. 33.180 /// A500-Plus, PWR-LED ROSSO, Kick 2.04 v. 37.175, Driver DF1 esterno Savage DMF 322, A590 alimentato da alimentatore di CD32, con dentro espansione da 2MB di fast-ram + HDD SCSI Seagate ST32151N da 2GB - DH0 con WB 2.04 e DH1 con WB 1.2 /// A1200, 68EC020, Kick 3.0 v. 39.106, HDD a tracce Hitachi 40GB interno su porta IDE con installato CWB, espansione A1208 in trap-door da 8MB-fast-ram, PLipBox su porta parallela per collegamento via Ethernet a Internet /// Commodore 64 Assy NO. 250425 + floppy drive 5’’ 1/4 modello 1541

utente amiga quadratico medio

Post inviati: 701

Visulizza profilo Messaggio Personale
87.8.147.*** Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36/8mqErPuL-62
Commento 5
AMG_Novice_Usr 20 Novembre 2021    18:36:36
quest'ultimo dettaglio HW è ininfluente, ad ogni modo lo cito:

fra A1200 e PC/Win sto usando un cavetto null-modem + adattatore DB9_Rs232 <-> USB 2.0 di tipo Manhattan.

Thanks in advance!

A500-Plus + A501 + switch meccanico per selezione Double-kickstart 1.3 v. 34.5 / 3.1 v. 40.63 /// A600, Rev. MB. 1.5, espansione in trap-door 1MB chip-ram, Kick-Cloanto 45.66, HDD interno a tracce da 2GB modello MK2104MAV by Toshiba su porta IDE: partizione DH1 con WB2.1 (default) + partizione DH2 con WB3.1 /// A500, Kick 1.3 v. 34.5, scheda espansione in trap-door da 512KB /// A600, espansione da 4MB-fast-ram innestata con zoccolo direttamente su 68K, Kick 2.05 v. 37.300, espansione di chip-ram in trap-door da 1MB, CF da 4GB su adattatore interno CF/IDE: partizione DH0 con CWB GAAE, partizione DH1 con WB2.1, partizione DH2 con WB1.3 /// A500, Rev. MB 6A, Kick 1.3 v. 34.5, A520-TV-RF-Modulator /// A500, PWR-LED ROSSO. Kick 1.2 v. 33.180 /// A500-Plus, PWR-LED ROSSO, Kick 2.04 v. 37.175, Driver DF1 esterno Savage DMF 322, A590 alimentato da alimentatore di CD32, con dentro espansione da 2MB di fast-ram + HDD SCSI Seagate ST32151N da 2GB - DH0 con WB 2.04 e DH1 con WB 1.2 /// A1200, 68EC020, Kick 3.0 v. 39.106, HDD a tracce Hitachi 40GB interno su porta IDE con installato CWB, espansione A1208 in trap-door da 8MB-fast-ram, PLipBox su porta parallela per collegamento via Ethernet a Internet /// Commodore 64 Assy NO. 250425 + floppy drive 5’’ 1/4 modello 1541


Utenti Online
Utenti registrati: 1206 dal 1 Gennaio 2006
di cui online: 1 registrati - amiga1200 -
14 non registrati

Benvenuto all'ultimo utente registrato: zulu

Buon Compleanno a Hannibal - 

© Amigapage 1998 - 2007 - Sito italiano dedicato alla piattaforma Amiga ed evoluzioni varie.
Struttura del sito interamente ideata e realizzata da Marco Lovera e Alessandra Lovera - Tutto il materiale inserito all'interno del sito č dei rispettivi autori/creatori.
E' assolutamente vietata la riproduzione o la manipolazione di tutti i contenuti o parte di essi senza l'esplicito consenso degli amministratori e degli autori/creatori.

Eseguito in 0.095442056655884 secondi