Autore Topic: Lettori Floppy, Sfruttarne Il Cbm Dos  (Letto 4055 volte)

Cbm

  • Utente
  • **
  • Post: 423
  • Gioco Preferito: Wonderboy
Lettori Floppy, Sfruttarne Il Cbm Dos
« il: 26 Giugno 2006, 00:59:21 »
 :c64: iao a tutti.
Ho pensato di stendere nei prossimi giorni, un programmino che permetta di velocizzare le azioni di manutenzione più comuni che si possono fare tramite il Commodore DOS, tale da permettere a chiunque di operare sui dischi senza conoscerlo, o di rendere le operazioni più rapide a favore dei più pigri. Operazioni che sicuramente saranno più familiari e necessarie a chi usa macchine vere e non l'emulatore, e che comunque sono offerte da tanti programmi per pc, anche l'idea è far si che il biscottone se la sbrighi da solo senza supporto esterno.
Il programma avrà un'interfaccia a menù testuali, campo dove il Basic offre il meglio di sè stesso, occasione buona per me per usarlo, sperando umilmente che il contenuto del listato, sia un pò di aiuto didattico, circa i comandi disco, a quei pochi "novizi" che ne sanno meno di me.

Saluti
C= - Dal 1985! Lunga vita e prosperità.

Cbm

  • Utente
  • **
  • Post: 423
  • Gioco Preferito: Wonderboy
Lettori Floppy, Sfruttarne Il Cbm Dos
« Risposta #1 il: 29 Giugno 2006, 02:30:57 »
 L'ho chiamato "Il Discobolo"  :D
Intanto ecco la schermata di avvio.



Ne ho praticamente finito il listato e sembra funzionare tutto per bene.
Il programma per adesso gestisce solo le funzioni più comuni del DOS, anche se penso più avanti di implementare qualche comando meno usato e di perfezionarlo.
Ho fatto in modo che il programma, all'avvio interroghi d'ufficio il canale disco, in modo da evitare che, chiedendo lo status del dischetto durante l'esecuzione, il lettore la prima volta comunichi, invece dello stato del disco stesso, la conferma dell'accensione del lettore, obbligando quindi a ripetere la richiesta e confondendo le idee ai meno pratici. Non credo ci sia un modo per evitare tale comportamento senza usare artifizi. Che ne dite?

Alla prossima.
 
C= - Dal 1985! Lunga vita e prosperità.

KONEY

  • Utente
  • **
  • Post: 60
    • http://www.koney.org
  • Gioco Preferito: ghost'n'goblins
Lettori Floppy, Sfruttarne Il Cbm Dos
« Risposta #2 il: 29 Giugno 2006, 13:58:37 »
 BELLO! e quando ce lo passerai? 8)

Cbm

  • Utente
  • **
  • Post: 423
  • Gioco Preferito: Wonderboy
Lettori Floppy, Sfruttarne Il Cbm Dos
« Risposta #3 il: 29 Giugno 2006, 18:29:51 »
 
Citazione da: "KONEY"
BELLO! e quando ce lo passerai? 8)
E' che non avevo un posto dove metterlo e volevo rileggere bene il codice; al limite lo faccio dopo.

Eccolo qui: ------------ (collegamento eliminato in favore di quello interno al sito riportato nel proseguio della discussione)


Ogni critica o suggerimento è ben voluta.

Oltre alle funzioni tipo formatta, rinomina, cancella ecc... il programma può fare un test sullo stato del disco. Utile anche se un operazione su disco va male (non necessariamente eseguita dal programma, ma anche con comandi diretti). Se lanciato il test subito dopo l'operazione fallita, da l'errore (testo e codice) che lo ha causato (purtroppo è testato solo con l'emulatore).
Tutte cose che comunque si possono fare direttamente a colpi di open; per cui chi non sa come si usano i comandi diretti e volesse andare oltre l'uso comodo e vedere un pò di capirli da sè, potrà risalirci facilmente dal listato.

 :ciauz:
 
C= - Dal 1985! Lunga vita e prosperità.

Fabbroz75

  • Utente
  • **
  • Post: 65
  • Gioco Preferito: Aufwiedersehen Monty
Lettori Floppy, Sfruttarne Il Cbm Dos
« Risposta #4 il: 29 Giugno 2006, 20:16:54 »
 Gran programma!
servirebbe un bel lettore hex delle tracce.. e sarebbe un clone del PCTools dei primi anni 90!

torna veramente utile in molte situzioni.

non è opensource? :metal:  :D  
C64/C64c/C128/C16/Vic20 | 64SD Infinity 2.0 |

Cbm

  • Utente
  • **
  • Post: 423
  • Gioco Preferito: Wonderboy
Lettori Floppy, Sfruttarne Il Cbm Dos
« Risposta #5 il: 04 Luglio 2006, 00:38:55 »
 Ho fatto qualche piccola modifica al file pubblicato.
Ora è possibile usare anche il comando INITIALIZE, e per quanto riguarda la formattazione si può scegliere pure quella rapida.
C= - Dal 1985! Lunga vita e prosperità.

iAN CooG

  • Utente
  • **
  • Post: 1774
    • http://iancoog.altervista.org
  • Gioco Preferito: Turbo Assembler, ActionReplay Monitor, DiskDemon
Lettori Floppy, Sfruttarne Il Cbm Dos
« Risposta #6 il: 04 Luglio 2006, 02:40:23 »
 Voglio essere sincero e franco, per non dare illusioni.
Trovo il programma abbastanza inutile nella forma attuale, esistono decine
di shell/wedges/disk tools molto piu' versatili e potenti sin dagli albori,
basta vedere sul disco stesso fornito con il 1541, ma al di la' della
valutazione soggettiva, e considerandolo pura didattica, presenta evidenti
vizi di forma. Vediamo che si puo' migliorare:
Codice: [Seleziona]
5 FOR a=1 TO 11:READ l$:FOR r=1 TO 200:NEXT r
85 FOR t1=1 TO 1000:NEXT t1
95 FOR t2=1 TO 2500:NEXT t2
e cosi' via per tutto il resto del programma: fai uso eccessivo di
variabili temporanee. Usa meno variabili possibile, occupano memoria e
piu' ne usi piu' il basic ci impiega a cercarle quando vuoi usarle.
Codice: [Seleziona]
510 ON n GOTO
ON GOSUB e' meglio in questi casi.
Codice: [Seleziona]
1000 OPEN 1,8,15
1010 INPUT#1,e$,er$,t$,s$
1020 CLOSE 1
1050 PRINT "stato del disco inserito":PRINT
Ma quale "stato del disco INSERITO"?? =)
E' solo lo stato del drive.
Codice: [Seleziona]
1060 PRINT:IF er$="ok" THEN PRINT "nessun errore presente"
Non e' certo cosi' semplicemente che si controllano gli errori nei
settori del floppy.
Codice: [Seleziona]
2020 PRINT:PRINT "{!*3} il file ''";ca$;"''"
Inezia formale: non usare 2 apici, per stampare il doppio apice usa CHR$(34)
Codice: [Seleziona]
2040 PRINT:INPUT "sei certo di voler procedere (s/n)";co$
2050 IF co$="s" THEN GOTO 2065
2055 IF co$="n" THEN GOTO 10010
2060 GOTO 2040
Anche qua, usare subroutines
Codice: [Seleziona]
2070 OPEN 2,8,15,"s:"+ca$:CLOSE 2
Non e' un errore, ma mi chiedo perche'usare un numero di file sempre diverso
per ogni comando, e per di piu' una sub routine per ogni open/close...
Basterebbe una variabile stringa contenente il comando da eseguire, una sub
OPEN 1,8,15,co$:CLOSE 1
(eventuale controllo e stampa del codice di errore/ok che invece non fai mai)
e un RETURN
Codice: [Seleziona]
5070 OPEN 5,8,15,"n:"+fo$+fd$:CLOSE 5
Manca la virgola!
Codice: [Seleziona]
8000 PRINT "inizializzazione lettore"
8010 PRINT:INPUT "vuoi procedere con l'operazione (s/n)";in$
Operazione in cui e' inutile chiedere conferma.


Ora che ho fatto un po' di pulci, direi che puoi iniziare a sistemarlo,
giusto per fare un po' di pratica con le subroutines.
Ma la cosa piu' importante e' quella di aggiungere funzioni piu' utili
tipo la lettura della directory, lettura, editing e scrittura/spostamento di
blocchi sul disco, verifica e visualizzazione della BAM, test di
lettura/scrittura del disco per verifica errori.
Altrimenti, ripeto, un programma che fa SOLO i comandi base del dos non
serve davvero a niente.
-=[]=--- iAN CooG/HVSC^C64Intros ---=[]=-
- http://hvsc.c64.org - http://intros.c64.org -

Cbm

  • Utente
  • **
  • Post: 423
  • Gioco Preferito: Wonderboy
Lettori Floppy, Sfruttarne Il Cbm Dos
« Risposta #7 il: 04 Luglio 2006, 20:32:44 »
 
Citazione da: "iAN CooG/HF"
Voglio essere sincero e franco
Tranquillo, è una cosa che apprezzo e prediligo. Grazie invece.
Io continuo a fare pratica nei ritagli di tempo e la scelta del programma è un pretesto per padroneggiare il dos con più naturalezza da un lato e concentrarmi su un obiettivo preciso dall'altro. Per l'uso sceglierei il dos wedge.

Citazione
 
Codice: [Seleziona]
5 FOR a=1 TO 11:READ l$:FOR r=1 TO 200:NEXT r
85 FOR t1=1 TO 1000:NEXT t1
95 FOR t2=1 TO 2500:NEXT t2
e cosi' via per tutto il resto del programma: fai uso eccessivo di
variabili temporanee. Usa meno variabili possibile, occupano memoria e
piu' ne usi piu' il basic ci impiega a cercarle quando vuoi usarle.

Si, ne sono consapevole, l'ottimizzazione è un aspetto che mi affascina. Qui non mi sono preoccupato affatto di ottimizzare il listato e le prestazioni, alcune cose che rilevi sono proprio volute. In generale avevo pensato ad un listato il più banale possibile per essere più chiaro a chi sta peggio di me, magari invece ottengo l'effetto contrario man mano che vado avanti perchè diventerà lunghissimo. Anzi dovrei aggiungere i remark...

La prossima cosa che avevo pensato di fare è lo spostamento dei blocchi e il test automatico alla fine di ogni operazione.

Intanto faccio tesoro con interesse della tua disamina. Saluti.  
C= - Dal 1985! Lunga vita e prosperità.

Cbm

  • Utente
  • **
  • Post: 423
  • Gioco Preferito: Wonderboy
Lettori Floppy, Sfruttarne Il Cbm Dos
« Risposta #8 il: 09 Luglio 2006, 00:15:25 »
 Allora, complice il clima più favorevole ho iniziato ad eliminare qualche incongruenza tra quelle segnalatemi da iAN (grazie ancora), in particolare col recupero di ...una virgola sparita, grazie al quale ora la formattazione completa lo è davvero, cosa evidente anche in termini di tempo necessario per eseguirla :lol:
Ho modificato anche la conferma finale delle azioni eseguite, in modo che il canale venga interrogato in maniera silente alla fine di queste, e solo nel caso venga rilevato qualche problema vengano mostrati i risultati del test.
Ho comunque lasciato disponibile l'interrogazione su richiesta, non si mai.
 
C= - Dal 1985! Lunga vita e prosperità.

Alberto

  • Utente
  • **
  • Post: 589
  • Gioco Preferito: Grand Prix Circuit
Lettori Floppy, Sfruttarne Il Cbm Dos
« Risposta #9 il: 09 Luglio 2006, 12:54:39 »
 Esco un attimo dal seminato:ce la faresti a scrivere qualcosa che indichi con quale densità sono registrati i vari settori del disco? :)

Cbm

  • Utente
  • **
  • Post: 423
  • Gioco Preferito: Wonderboy
Lettori Floppy, Sfruttarne Il Cbm Dos
« Risposta #10 il: 10 Luglio 2006, 12:40:41 »
 Per Alberto: credo di non seguirti; cosa intendi per "con quale densità"? Se la densità è il rapporto tra bit e centimetri quadrati (ora non ricordo più quanti bit per i dischi a bassa densità), è uguale per ogni dischetto della stessa categoria e tale rimane. Non ne capisco la misurazione. Forse sto parlando di altro?
C= - Dal 1985! Lunga vita e prosperità.

Alberto

  • Utente
  • **
  • Post: 589
  • Gioco Preferito: Grand Prix Circuit
Lettori Floppy, Sfruttarne Il Cbm Dos
« Risposta #11 il: 10 Luglio 2006, 14:18:10 »
 Forse saprai che i vari settori dei dischi sono registrati con densità variabile, dipendente dalle dimensioni di ciascuna traccia (più densamente le tracce più interne,meno densamente quelle più esterne).
Talvolta però,i vari settori di una stessa traccia venivano registrati con densità diverse in modo che non fosse possibile duplicare i dati sul disco usando i normali comandi del DOS ad alto livello;il formato .g64 è stato introdotto proprio per tenere conto di queste variazioni.

Comunque era solo una curiosità.Si tratta di una feature piuttosto avanzata e di dubbia utilità:poteva servire (ai tempi) su un vero C64 per duplicare i dischi protetti,ma su un emulatore quali vantaggi se ne potrebbero trarre? :dotto:

Cbm

  • Utente
  • **
  • Post: 423
  • Gioco Preferito: Wonderboy
Lettori Floppy, Sfruttarne Il Cbm Dos
« Risposta #12 il: 10 Luglio 2006, 18:28:15 »
 
Citazione da: "Alberto"
Forse saprai che i vari settori dei dischi sono registrati con densità variabile, dipendente dalle dimensioni di ciascuna traccia (più densamente le tracce più interne,meno densamente quelle più esterne).
Ok.
Citazione
Talvolta però,i vari settori di una stessa traccia venivano registrati con densità diverse in modo che non fosse possibile duplicare i dati sul disco usando i normali comandi del DOS ad alto livello;il formato .g64 è stato introdotto proprio per tenere conto di queste variazioni.
Ah ecco. Questo non lo sapevo proprio.
Citazione
Comunque era solo una curiosità.Si tratta di una feature piuttosto avanzata e di dubbia utilità:poteva servire (ai tempi) su un vero C64 per duplicare i dischi protetti,ma su un emulatore quali vantaggi se ne potrebbero trarre?

Ora che ho capito il punto, posso risponderti senza dubbio che viste le mie conoscenze tutt'altro che avanzate (come la feature), ed anche che evidentemente conosco la "fisica" del disco solo di striscio, credo di non potermi cimentare ora come ora nel fare qualcosa di serio in tal senso.  :doh:  
C= - Dal 1985! Lunga vita e prosperità.

Cbm

  • Utente
  • **
  • Post: 423
  • Gioco Preferito: Wonderboy
Lettori Floppy, Sfruttarne Il Cbm Dos
« Risposta #13 il: 08 Agosto 2006, 19:11:24 »
 L'altro ieri ho iniziato a studiare la struttura della traccia 18, scopo lettura della directory. Il manuale è di molto aiuto, ma non volendo limitarmi a copiare gli esempi, ma di comprendere il perchè di ciò che viene usato per lo scopo, sto riscrivendo da zero. Finora sta andando bene, sono riuscito a ottenere qualcosa di funzionante che mi permetta di vedere l'elenco dei files contenuti e l'intestazione del disco con l'id; le cose che in fondo sono quelle strettamente più utili a gestire i comandi presenti finora nel menù (tipi di file e blocchi occupati li ho tralasciati). Questo è l'abbozzo attuale.

Codice: [Seleziona]
5 OPEN 15,8,15
10 OPEN 1,8,0,"$"
20 PRINT "                 ";
30 FOR X=1 TO 28:GET#1,D$:IF X=27 OR X=28 THEN PRINT D$;
35 NEXT X:CLOSE 1:PRINT " [SU]"
40 OPEN 1,8,0,"$"
45 GET#1,D$:IF ST<>0 THEN GOTO 100
46 IF D$<>CHR$(34) THEN GOTO 45
50 GET#1,D$:IF D$<>CHR$(34)THEN PRINT D$;:GOTO 50
70 PRINT:IF ST=0 THEN GOTO 45
100 CLOSE 1:CLOSE 15
READY.

Il problema è che il programma funziona bene in certe occasioni, in altre invece si pianta tutto durante la lettura costringendomi al reset. Secondo voi potrebbe essere (anche) colpa dell'emulatore? Infatti se lancio il programma col turbo per provare, i blocchi sono molto più frequenti.
Sto cercando di ovviare, ma finora non trovo una soluzione.
 
C= - Dal 1985! Lunga vita e prosperità.

eregil

  • Administrator
  • Utente
  • *****
  • Post: 706
  • Gioco Preferito: Impossible Mission
Lettori Floppy, Sfruttarne Il Cbm Dos
« Risposta #14 il: 08 Agosto 2006, 20:16:34 »
 Fai attenzione ad una cosa. Non si hanno gli stessi risultati aprendo "$" sul canale 0 o su un canale "normale".

Se apri "$" sul canale 0, ad esempio

Codice: [Seleziona]
OPEN 1,8,0,"$"
il drive ti invia la directory sotto forma di "programma BASIC", come quando fai LOAD"$",8.

Se invece apri "$" su un canale da 2 a 14, con

Codice: [Seleziona]
OPEN 2,8,2,"$"
o simili, solo allora il formato del "file" che ricevi e che rappresenta la directory, viene rispettato così come spiegato sul manuale e letto nel programma "lettura directory".

Le applicazioni più "avanzate" di lettura directory sono di fatto precluse se utilizzi l'artifizio del canale 0, pertanto, personalmente, ti consiglio di abituarti a lavorare su un canale normale (non 0 o 1) e di analizzare il funzionamento del programmino del manuale (è decisamente più utile che, impuntandosi nel "non voler copiare", provare a scrivere da zero, ma senza tenere conto da principio del formato della directory: è un po' come fare reverse engineering per ricavare delle specifiche che hai già a portata di mano). Cerca di individuare quali sono le GET# che "estraggono" le informazioni che ti servono.

Roberto Morassi su CCC n. 42 (pag. 60 e ss.) ha seguito un approccio ancora più radicale: studiandosi il formato della directory così come memorizzata sul disco (non cioè come "file" aperto con il nome "$", ma proprio nella struttura di ogni singolo settore della traccia 18, che si trova sempre sul manuale), ha realizzato una routine di lettura della directory basata sull'accesso casuale al disco, un po' come se stesse operando su un "suo" file casuale. Se te la senti, prova anche a capire il funzionamento della sua routine; devi però avere già dimestichezza con i file casuali (le spiegazioni sul loro utilizzo si trovano, ancora, sul manuale del drive).
Non rispondo a richieste private, di qualunque genere esse siano.
Per domande tecniche leggete le FAQ e usate l'apposito forum.
Per questioni amministrative contattate lo staff tramite il form Contatti sul sito.