Ciao, ho recentemente trovato su WOS il libro di A. Pennel sui microdrive !! Questo mi ha dato il coraggio di riprendere le librerie di supporto nativo per il microdrive: avendo raramente tempo di collaudare il codice sullo Spectrum reale correvo infatti il grosso rischio di scrivere codice non supportato dagli emulatori o, peggio che funzionasse *solo* sugli emulatori... la cosa mi è già successa un paio di volte, in particolare con del codice per la calcolatrice TI82 e per lo ZX81 e non è affatto piacevole. Pennel propone un trucco che avevo già tentato di realizzare: riscrivendo la routine "MOTOR" del microdrive è possibile gestire le condizioni d'errore senza che il programma si blocchi con il famigerato "microdrive not present". Questo errore infatti non è facilmente trappabile con il solito trucco di modificare ERR_SP, perchè la shadow rom forza un ritorno al BASIC in modo non convenzionale e sporca alcuni flag. Confrontando il disassemblato delle ROM v1 e v2 (in entrambe la routine MOTOR non è commentata) e il codice di Pennel sono riuscito a capire a grandi linee come vengono "accesi" i microdrive: a partire da una condizione di partenza, viene ripetutamente dato un segnale "ON" seguito da "OFF" finchè non viene raggiunto il numero del drive che si vuole realmente accendere (da lì il leggero lampeggio che si vede sul drive #1 quando accendi il #2). A motore acceso poi un loop tenta di leggere qualcosa dal nastro (e nel frattempo, nella ROM originale si controlla la pressione di BREAK). Se non trova nulla dopo un po' di tempo (credo poco più di 200ms), allora il drive risulta assente. Ho scritto una piccola demo; se ritrovo le pwd del mio "sito da battaglia" la metterò online. Tengo a precisare, (non mi stancherò mai di ripeterlo) che senza un emulatore così potente e accurato (ovviamente RealSpectrum) questa routine non esisterebbe... e in egual misura va la mia ammirazione per Pennel che con mezzi molto più rudimentali aveva ottenuto questi risultati. Ho una domanda: qualcuno di voi può suggerirmi un trucco per scoprire in software se l'Interface 1 è collegata ? Ovviamente so controllare la presenza delle variabili di sistema estese, ma non basta. Sto pensando di scatenare una qualche RST 8 e di trappare l'eventuale errore, ma forse c'è un metodo più semplice. ... idee ? _________________________________________________________________ Crea il tuo gadget e vinci 10 Windows Vista e 30€ di musica! http://concorsogadget.it.msn.com/