Ready64 Forum
Commodore 64 => Aiuto & Domande => Topic aperto da: Wildwolf90 - 04 Luglio 2006, 18:10:33
-
Un buongiorno a tutti! Possiedo un datasette che si comporta a mio parere in modo strano. Una volta dato il comando LOAD e aver dato il comando PLAY al mangianastri se il nastro non è posizionato a livello con l'esatta partenza del gioco, la cassetta gira per circa un'unità di contatore e ritorna alla classica schermata di BASIC con la scritta READY. Il commodore non si riavvia perchè se provo a scrivere qualcosa e lo lascio lì prima del load (ad esempio un calcolo come ?5+4) esso non scompare. E' un comportamento anomalo o è normale che il datasette funzioni così? Tengo a precisare che il datasette carica i programmi in modo corretto!.
Grazie in anticipo per l'interessamento
-
Hum, da come descrivi la cosa, io credo che sia anomalissimo, pero' per il C64 e non il datasette.
In condizioni normali dovrebbe far passare il nastro finche' non trova l'header di un qualsiasi programma, e non bloccarsi dopo 1 giro e tornare alla schermata Ready (con una eccezione: puo' succede che se invece a leggere il nastro inizi a meta' di un programma registrato con un turboloader, in quel caso i segnali sonori possono "confondere" la macchina).
Potresti spiegare meglio "l'anomalia" che ti succede sul Commodore? In quanti casi ti capita? In che senso non ti "scompare" il comando che digiti dopo che la macchina torna a quello schermo? :huh:
-
Hum, da come descrivi la cosa, io credo che sia anomalissimo, pero' per il C64 e non il datasette.
In condizioni normali dovrebbe far passare il nastro finche' non trova l'header di un qualsiasi programma, e non bloccarsi dopo 1 giro e tornare alla schermata Ready (con una eccezione: puo' succede che se invece a leggere il nastro inizi a meta' di un programma registrato con un turboloader, in quel caso i segnali sonori possono "confondere" la macchina).
Potresti spiegare meglio "l'anomalia" che ti succede sul Commodore? In quanti casi ti capita? In che senso non ti "scompare" il comando che digiti dopo che la macchina torna a quello schermo? :huh:
Intanto grazie!
Allora, prendo una cassetta con i giochi da rivista. Prendiamo per esempio che il gioco "X" abbia l'inizio al numero di contatore 237. ok? Se comincio da 243, il datasette avanza per uno scatto di contatoree si ferma, tornando alla schermata di basic senza dare alcun messaggio se non il READY. Una cosa però! Devo provare a salvare un programma su una cassetta: mi pare che non succede se lo faccio con programmi scritti da me. Devo provare a salvare il programma ad esempio a contatore 10. Hai capito ora il problema? Proverò anche con altre cassette 8dato che il commodore ce l'ho da 2 giorni. Un'altra cosa... Quando carico un programma, appare la scritta found e il nome di un programma. Come faccio ad inserire questo particolare in un mio programma?
RedPanda, il tuo avatar mi ricorda un particolare gioco su AMIGA..... L'hai preso da li per caso?
-
Una cosa però! Devo provare a salvare un programma su una cassetta: mi pare che non succede se lo faccio con programmi scritti da me. Devo provare a salvare il programma ad esempio a contatore 10. Hai capito ora il problema? Proverò anche con altre cassette 8dato che il commodore ce l'ho da 2 giorni. Un'altra cosa... Quando carico un programma, appare la scritta found e il nome di un programma. Come faccio ad inserire questo particolare in un mio programma?
Non capisco bene cosa intendi con la parola particolare. Intendi la scritta found o il nome del programma? Con la parola found il 64 ti avvisa che ha trovato il programma con nome "XXX", a quel punto o premi il tasto C= per continuare subito il caricamento (ma tanto se non lo premi dopo qualche secondo il 64 lo carica da solo). E questa cosa non la inserisce nessuno a discrezione, fa parte della procedura di caricamento. Naturalmente il nome del programma lo stabilisci tu in fase di salvataggio.
Riguardo i tentativi a vuoto di salvataggio listati, è strano ciò che dici; che procedura hai seguito finora per farlo?
Un consiglio spassionato: prima di continuare, se non riesci ad orizzontarti, leggiti con passione il manuale d'uso, vedrai che spariranno molti dubbi e problemi.
-
Una cosa però! Devo provare a salvare un programma su una cassetta: mi pare che non succede se lo faccio con programmi scritti da me. Devo provare a salvare il programma ad esempio a contatore 10. Hai capito ora il problema? Proverò anche con altre cassette 8dato che il commodore ce l'ho da 2 giorni. Un'altra cosa... Quando carico un programma, appare la scritta found e il nome di un programma. Come faccio ad inserire questo particolare in un mio programma?
Non capisco bene cosa intendi con la parola particolare. Intendi la scritta found o il nome del programma? Con la parola found il 64 ti avvisa che ha trovato il programma con nome "XXX", a quel punto o premi il tasto C= per continuare subito il caricamento (ma tanto se non lo premi dopo qualche secondo il 64 lo carica da solo). E questa cosa non la inserisce nessuno a discrezione, fa parte della procedura di caricamento. Naturalmente il nome del programma lo stabilisci tu in fase di salvataggio.
Riguardo i tentativi a vuoto di salvataggio listati, è strano ciò che dici; che procedura hai seguito finora per farlo?
Un consiglio spassionato: prima di continuare, se non riesci ad orizzontarti, leggiti con passione il manuale d'uso, vedrai che spariranno molti dubbi e problemi.
Riguardo la lettura ho capito che è la cassetta che è fatta così. I programmi mie personali salvati su cassetta e altri nastri "da edicola" vengono letti perfettamente. Come faccio allora a dare il nome che appare accanto alla parola "FOUND" quando viene caricato il programma?
-
Hum, da come descrivi la cosa, io credo che sia anomalissimo, pero' per il C64 e non il datasette.
In condizioni normali dovrebbe far passare il nastro finche' non trova l'header di un qualsiasi programma, e non bloccarsi dopo 1 giro e tornare alla schermata Ready (con una eccezione: puo' succede che se invece a leggere il nastro inizi a meta' di un programma registrato con un turboloader, in quel caso i segnali sonori possono "confondere" la macchina).
Niente allarmismi: non direi proprio che è un comportamento anomalo per il C64! Nel senso che non è dovuto ad un guasto dello stesso ;)
I motivi che possono causare sintomi simili a quelli lamentati da Wildwolf sono due: uno è un pesante disallineamento della testina del datassette; ma, dal momento che i programmi sono caricati correttamente se il nastro è posizionato all'inizio degli stessi, direi che questo si può escludere nel nostro caso. L'altro motivo è appunto dovuto al fatto che, iniziando il LOAD in mezzo al programma, gli impulsi più frequenti, facenti già parte del programma registrato in "turbo", finiscono per essere dati in pasto al kernel loader che, naturalmente, non li gradisce. :)
Solo se i programmi sono registrati col metodo standard, infatti, è garantito il funzionamento del LOAD da qualsiasi punto del nastro, il quale viene scandito alla ricerca del primo header valido.
Riguardo la lettura ho capito che è la cassetta che è fatta così. I programmi mie personali salvati su cassetta e altri nastri "da edicola" vengono letti perfettamente. Come faccio allora a dare il nome che appare accanto alla parola "FOUND" quando viene caricato il programma?
*ahem*
Ti riferisci alla sintassi SAVE "nome programma"? Questa informazione la trovavi sul tuo manuale di fiducia... :overkiller:
-
Hum, da come descrivi la cosa, io credo che sia anomalissimo, pero' per il C64 e non il datasette.
In condizioni normali dovrebbe far passare il nastro finche' non trova l'header di un qualsiasi programma, e non bloccarsi dopo 1 giro e tornare alla schermata Ready (con una eccezione: puo' succede che se invece a leggere il nastro inizi a meta' di un programma registrato con un turboloader, in quel caso i segnali sonori possono "confondere" la macchina).
Niente allarmismi: non direi proprio che è un comportamento anomalo per il C64! Nel senso che non è dovuto ad un guasto dello stesso ;)
I motivi che possono causare sintomi simili a quelli lamentati da Wildwolf sono due: uno è un pesante disallineamento della testina del datassette; ma, dal momento che i programmi sono caricati correttamente se il nastro è posizionato all'inizio degli stessi, direi che questo si può escludere nel nostro caso. L'altro motivo è appunto dovuto al fatto che, iniziando il LOAD in mezzo al programma, gli impulsi più frequenti, facenti già parte del programma registrato in "turbo", finiscono per essere dati in pasto al kernel loader che, naturalmente, non li gradisce. :)
Solo se i programmi sono registrati col metodo standard, infatti, è garantito il funzionamento del LOAD da qualsiasi punto del nastro, il quale viene scandito alla ricerca del primo header valido.
Riguardo la lettura ho capito che è la cassetta che è fatta così. I programmi mie personali salvati su cassetta e altri nastri "da edicola" vengono letti perfettamente. Come faccio allora a dare il nome che appare accanto alla parola "FOUND" quando viene caricato il programma?
*ahem*
Ti riferisci alla sintassi SAVE "nome programma"? Questa informazione la trovavi sul tuo manuale di fiducia... :overkiller:
Inanzitutto di nuovo grazie (lo so sono ripetitivo :lol: !)
Avevo paura che il datasette fosse da buttare!
L'unica cassetta che fa questo discorso contiene molti più giochi delle altre, per cui il produttore deve aver accorciato le pause tra i giochi, quindi bisogna posizionare più accuratamente il nastro per caricarlo. Il manuale me lo sono fatto prestare e questa sera il mio papi me lo porta stampato.... Se qualcuno ha un manuale in più e non se ne fa niente, lo accetterei volentieri! Preferisco la guida originale al duplicato (che ho ottenuto dalla sezione manuali di questo sito! B) )
Grazie ancora per tutto!
-
Confermo anch'io che il comportamento è assolutamente normale in presenza di loader diversi dal kernel standard (col kernel standard può succedere qualcos'altro, ne parlerò un'altra volta).
In particolare la routine di NMI (l'effetto "run/stop+restore") si presenta quando si prova a caricare col LOAD parti di nastro salvate con connection (il caricamento che prevede la chiocciola in un punto a random del quadro, ma SENZA le righe colorate; assai usato nelle cassette della Logica2000, da Computer Set a Formula64 e via dicendo) e con turbo202 (il caricamento con le righe colorate "strette" tipico delle cassette da edicola della Pubblirome/Edigamma -e non solo- ossia le Game2000 e molte altre).
-
Confermo anch'io che il comportamento è assolutamente normale in presenza di loader diversi dal kernel standard (col kernel standard può succedere qualcos'altro, ne parlerò un'altra volta).
In particolare la routine di NMI (l'effetto "run/stop+restore") si presenta quando si prova a caricare col LOAD parti di nastro salvate con connection (il caricamento che prevede la chiocciola in un punto a random del quadro, ma SENZA le righe colorate; assai usato nelle cassette della Logica2000, da Computer Set a Formula64 e via dicendo) e con turbo202 (il caricamento con le righe colorate "strette" tipico delle cassette da edicola della Pubblirome/Edigamma -e non solo- ossia le Game2000 e molte altre).
Esatto, si presenta una @ sullo schermo!
-
Detto proprio tra parentesi: puoi evitare di quotare ogni volta l'intero messaggio a cui rispondi, soprattutto se non ci sono altri messaggi in mezzo? Dovresti invece quotare quanto basta a rendere facile capire a chi e/o a quale punto stai rispondendo.
A parte questo volevo solo segnalarti che in attesa dell'originale puoi trovare la trascrizione del manuale del C64 sul sito, e più precisamente nell'area Manuali (http://ready64.altervista.org/manuali/index.php) :)
-
Niente allarmismi: non direi proprio che è un comportamento anomalo per il C64! Nel senso che non è dovuto ad un guasto dello stesso ;)
Infatti, ho specificato che in presenza di turboloader e' normale che la macchina si interrompa. ;)
Mi preoccuperei se succedesse nel caso di un programma salvato in modo normale!
X Wildwolf90: L'avatar e' Brian The Lion della Psygnosis, ovviamente ;) tra le varie cose ho anch'io gli Amiga
-
connection (il caricamento che prevede la chiocciola in un punto a random del quadro, ma SENZA le righe colorate; assai usato nelle cassette della Logica2000, da Computer Set a Formula64 e via dicendo) e con turbo202 (il caricamento con le righe colorate "strette" tipico delle cassette da edicola della Pubblirome/Edigamma -e non solo- ossia le Game2000 e molte altre).
Vado fuori tema (e faccio una domanda già fatta): da dove vengono i nomi dei vari caricatori? E poi: il Turbo202 è per caso lo stesso che viene chiamato Turbo220 sul sito (http://ready64.altervista.org/basic.php)? E il Turbo Tape 64 perché viene chiamato Turbo250 in Final TAP?
C'erano messaggi ASCII nascosti, diversi in diverse versioni di Connection: "BITURBO", "GALADRIEL"... E addirittura mi pareva che, in alcune cassette da edicola, esistesse anche il Connection con le righe colorate. E infine, mi pareva che la chiocciola apparisse sempre nello stesso punto, non in un punto casuale (ma questa è una pignoleria)
-
Vado fuori tema (e faccio una domanda già fatta): da dove vengono i nomi dei vari caricatori?
Quando il nome non era palesemente scritto in qualche schermata (nel Novaload è così), venivano dal nome dei programmi che li generavano e/o da come venivano chiamati nel "gergo" e/o negli altri programmi e/o sulle riviste specializzate.
E poi: il Turbo202 è per caso lo stesso che viene chiamato Turbo220 sul sito (http://ready64.altervista.org/basic.php)?
Probabilmente sì, come tutte le cose non commerciali è probabile che avesse più di un nome. A me risulta che si chiama con quel nome (Turbo 202 e non Turbo 220).
E il Turbo Tape 64 perché viene chiamato Turbo250 in Final TAP?
Il "Turbo Tape 64" è quello di Stephen Senz (o come si scrive), insomma quello che si carica con <-L per intenderci, usato in tutti i Videobasic e in molte cassette homemade (più che altro perché era diffusissimo e facile da usare).
C'erano messaggi ASCII nascosti, diversi in diverse versioni di Connection: "BITURBO", "GALADRIEL"...
Possibile.
E addirittura mi pareva che, in alcune cassette da edicola, esistesse anche il Connection con le righe colorate.
No, lo escludo. Tutti i caricamenti da edicola con le righe colorate erano varianti del Turbo202 (almeno a livello di frequenze e velocità usate lo erano tutti, compreso l'Easy-Tape ossia quello usato nelle AlGa Soft).
Alcune versioni del Turbo202 facevano comparire la chiocciola quindi se è su quello che ti basi per definire il connection sbagli.
E infine, mi pareva che la chiocciola apparisse sempre nello stesso punto, non in un punto casuale (ma questa è una pignoleria)
Anche questa smentita dalla mia esperienza.
A volte m'è capitato addirittura che la chiocciola comparisse nella stessa riga dove veniva il run, provocando un bel syntax error e le mie risate alla faccia di chi aveva fatto quell'autostart.
-
E addirittura mi pareva che, in alcune cassette da edicola, esistesse anche il Connection con le righe colorate.
No, lo escludo. Tutti i caricamenti da edicola con le righe colorate erano varianti del Turbo202 (almeno a livello di frequenze e velocità usate lo erano tutti, compreso l'Easy-Tape ossia quello usato nelle AlGa Soft).
Alcune versioni del Turbo202 facevano comparire la chiocciola quindi se è su quello che ti basi per definire il connection sbagli.
Qui tutto sta a definire che cosa è "Connection" e che cosa è "Turbo 202".
Un formato di caricamento è definito da come i byte sono codificati sulla cassetta. Ci possono essere diverse varianti di loader, cioè codice scritto diversaamente, che riconoscono lo stesso formato sulla cassetta. Esempi erano il Turbo Tape 64 di Stefan Senz e il caricatore Turbo Tape 64-compatibile di Videobasic (quello di "PREMI LA BARRA SPAZIATRICE"): codice diverso (anche se sicuramente uno originato dall'altro), stesso formato. Perciò si potevano caricare i programmi Videobasic anche col Turbo Tape 64 di Senz.
Io con "Connection" (o con "Caricamento chiocciola", ma riconosco che è un nome bruttissimo) identifico un certo formato in cui i byte sono scritti sulla cassetta, che poi è quello descritto da ice00 in una pagina del suo sito (http://digilander.libero.it/ice00/program/tape/TapeFileFormats.html#Galadriel%20Format). http://www.edicolac64.com/public/scaricaca...superc64ec128n7 (http://www.edicolac64.com/public/scaricacassetta.php?nomecassetta=superc64ec128n7) è un esempio di giochi salvati in formato "Connection", ma con un loader "con le righe". Rispetto al loader Connection più diffuso, una sequenza NOP NOP NOP è stata trasformata in INC $D020 (incrementa il colore del bordo), ma il resto è identico (pure la chiocciola appare). C'è la stringa BITURBO BY SC 85 in ASCII agli indirizzi $351-$361.
Forse, ritrovare la rivista specializzata (o quant'altro) in cui appariva la definizione "Connection" può aiutare a dirimere la questione.
E infine, mi pareva che la chiocciola apparisse sempre nello stesso punto, non in un punto casuale (ma questa è una pignoleria)
Anche questa smentita dalla mia esperienza.
A volte m'è capitato addirittura che la chiocciola comparisse nella stessa riga dove veniva il run, provocando un bel syntax error e le mie risate alla faccia di chi aveva fatto quell'autostart.
Mi pare che questo dipendesse dalla riga in cui scrivevi LOAD. Se era quella giusta, il rU finale veniva scritto nella stessa riga della @. Ma la @ appariva sempre alla stessa riga. In versioni successive, il programma veniva lanciato con una JMP in Assembler, perciò queste versioni del loader erano immuni al problema.
-
una sequenza NOP NOP NOP è stata trasformata in INC $D020
Molto probabilmente il contrario ;)
-
E addirittura mi pareva che, in alcune cassette da edicola, esistesse anche il Connection con le righe colorate.
No, lo escludo. Tutti i caricamenti da edicola con le righe colorate erano varianti del Turbo202 (almeno a livello di frequenze e velocità usate lo erano tutti, compreso l'Easy-Tape ossia quello usato nelle AlGa Soft).
Alcune versioni del Turbo202 facevano comparire la chiocciola quindi se è su quello che ti basi per definire il connection sbagli.
Qui tutto sta a definire che cosa è "Connection" e che cosa è "Turbo 202".
Perfetto, ecco degli esempi.
CONNECTION (http://www.edicolac64.com/public/vedicassetta.php?editore=4)
TURBO202 (http://www.edicolac64.com/public/vedicassetta.php?editore=8)
Un formato di caricamento è definito da come i byte sono codificati sulla cassetta. Ci possono essere diverse varianti di loader, cioè codice scritto diversaamente, che riconoscono lo stesso formato sulla cassetta. Esempi erano il Turbo Tape 64 di Stefan Senz e il caricatore Turbo Tape 64-compatibile di Videobasic (quello di "PREMI LA BARRA SPAZIATRICE"): codice diverso (anche se sicuramente uno originato dall'altro), stesso formato. Perciò si potevano caricare i programmi Videobasic anche col Turbo Tape 64 di Senz.
Stai scherzando, vero?
Forse davvero non te ne sei mai accorto, ma il "PREMI LA BARRA SPAZIATRICE" è scritto tramite un PRINT prima del caricamento in turbo (si vede anche un attimo prima che cominci la parte in turbo) mentre tutto il grosso del caricamento viene effettuato dal solito <-L . Non lo vedi perché è dello stesso colore del fondo, ma c'è.
Del resto basta caricare il loader (la parte all'inizio di ogni programma di videobasic che si carica normalmente con LOAD) *SENZA* lo shift+run/stop, quindi col normale LOAD evitando l'autostart, e dare un LIST per rendersi conto di come funziona il tutto. Nel codice qui riportato ho eliminato le linee REM per motivi di spazio.
1001 POKE53280,6:POKE53281,6:PRINT"{clrhome}{ctrl+7}"
(cutted linee rem)
1022 SYS2150:POKE639,32:POKE640,32
1023 POKE631,95:POKE632,76:POKE633,13:POKE634,32:POKE635,82:POKE636,85:POKE637,78:POKE638,13
1024 POKE198,8 :PRINT"{ctrl+2}PREMI LA BARRA SPAZIATRICE{ctrl+7}.":NEW
La riga 1001 non ha bisogno di commenti.
Nella 1022, la sys richiama e attiva il turbo tape. Dalla 1023 le poke mettono nel buffer di tastiera la sequenza "<-L{invio}{spazio}RUN{invio}" e indicano (POKE198,8) il numero di caratteri in esso, scrivono in alto in bianco "PREMI LA BARRA SPAZIATRICE", ripristinano il colore del fondo e cancellano il programma dalla memoria (o per meglio dire azzerano i puntatori del BASIC e delle variabili), dando così origine al nuovo caricamento (stavolta in turbo).
Le due poke in più in linea 1022 immettono due spazi che però non servono a niente perché non sono "scaricati" dal POKE198,8 in linea 1024 (doveva essere POKE198,10).
Le rem (non copiate qui) servono principalmente per "riempire lo spazio" fino a 2147, chiaro segno che questa routine di turbo tape (non rilocabile) è stata "estrapolata" da qualcos'altro (esatto, proprio il programma originale di Stephen Senz).
Forse, ritrovare la rivista specializzata (o quant'altro) in cui appariva la definizione "Connection" può aiutare a dirimere la questione.
Tanto per dirne uno, "UNIVERSAL TAPE" delle edizioni APE (la stessa del sistema "Progredisco" pubblicizzato su C.C.C.). Lì viene definito "Connection 2". O meglio:
QUESTA UTILITY PERMETTE DI COPIARE DA
NASTRO A DISCO I PROGRAMMI REGISTRATI
CON TRE DIVERSI VELOCIZZATORI:
IL CONNECTION,LA CUI CARATTERISTICA E'
LA COMPARSA,DUE VOLTE,DEL PROMPT 'READY'
AL TERMINE DEL CARICAMENTO.
IL SECONDO TIPO DI VELOCIZZATORE E'
CARATTERIZZATO DALLA COMPARSA ,SEMPRE
AL TERMINE DEL CARICAMENTO,DAL SIMBOLO '@
SULLO SCHERMO.
IL TERZO,IL TURBO 202, E' CARATTERIZ-
ZATO DA STRISCE MULTICOLORI SUL VIDEO
DURANTE IL CARICAMENTO.
Nella schermata di selezione vera e propria vengono chiamati:
F1 CONNECTION
F3 CONNECT. 2 (@)
F5 TURBO 202
Mi pare che questo dipendesse dalla riga in cui scrivevi LOAD.
No, o almeno non soltanto. Ripeto, dalla mia esperienza la posizione della @ era comunque casuale, anche se "generalmente" compariva sulla destra del quadro (dove di solito c'era più "vuoto", ma magari era solo perché le altre volte non si notava nemmeno in mezzo alle scritte).
Se era quella giusta, il rU finale veniva scritto nella stessa riga della @.
Anche questa: negli anni ho visto "rU", "run", "run:" e "rU:". Questo sia per quanto riguarda il turbo in questione sia (talvolta, ma non sempre) per il turbo202.
Ma la @ appariva sempre alla stessa riga. In versioni successive, il programma veniva lanciato con una JMP in Assembler, perciò queste versioni del loader erano immuni al problema.
Infatti compariva solo il ready. ma non compariva il run. Non è che non si aveva il tempo per leggerlo, non compariva proprio. In quel momento fallì il trucchetto di riempire lo schermo di schifezze (tipicamente "fori=1024to2023:pokei,0:next") per ritrovarsi con il cursore e fare quanto più comodo.
Un'altra caratteristica del connection (qui per connection intendo quello chiamato "connection 2" dal programma di cui sopra) diversa dal turbo202 era il tasto restore.
Quando premuto (anche da solo senza il run/stop) riavviava il C64.
Nel Turbo202 nel migliore dei casi il caricamento si piantava o dava effetti strani tipo le righe solo in parte dello schermo, ma il C64 non si riavviava. Se premuto col run/stop provocava per un attimo la scritta READY. in alto (come in condizioni normali) e poi il caricamento che continuava, o meglio continuava la routine di loader ma il caricamento ormai era andato a "donnine di facili costumi".
-
Perfetto, ecco degli esempi.
Sono entrambi Galadriel, qualche nop qua qualche nop la'. il codice e' leggermente modificato ma sono la stessa cosa. Ecco alcuni stralci da 3 tipi diversi di hack dello stesso loader, nel punto in cui effettua il "run"
Filename: galadriel swc-2.prg
02BA FA nop
02BB 03 A0 slo ($A0,X)
02BD E1 AD SBC ($AD,X)
02BF 05 03 ORA $03
02C1 85 26 STA $26
02C3 AD 0C 03 LDA $030C
02C6 85 63 STA $63
02C8 AD 13 03 LDA $0313
02CB 85 62 STA $62
02CD AD 17 03 LDA $0317
02D0 85 27 STA $27
02D2 AD 20 D0 LDA $D020
02D5 48 PHA
02D6 20 61 03 JSR $0361
02D9 A0 1F LDY #$1F
02DB B9 30 FD LDA $FD30,Y
02DE 99 14 03 STA $0314,Y
02E1 88 DEY
02E2 10 F7 BPL $02DB
02E4 20 53 E4 JSR $E453
02E7 68 PLA
02E8 8D 20 D0 STA $D020
02EB A6 26 LDX $26
02ED A4 27 LDY $27
02EF 86 AE STX $AE
02F1 84 AF STY $AF
02F3 86 2D STX $2D
02F5 84 2E STY $2E
02F7 20 60 A6 JSR $A660
02FA 20 8E A6 JSR $A68E
02FD 4C AE A7 JMP $A7AE
0300 BE 02 BE LDX $BE02,Y
Filename: turbo202
Loading address: $02ba
02BA FA nop
02BB 03 A0 slo ($A0,X)
02BD E1 AD SBC ($AD,X)
02BF 05 03 ORA $03
02C1 85 26 STA $26
02C3 AD 0C 03 LDA $030C
02C6 85 63 STA $63
02C8 AD 13 03 LDA $0313
02CB 85 62 STA $62
02CD AD 17 03 LDA $0317
02D0 85 27 STA $27
02D2 20 61 03 JSR $0361
02D5 20 15 FD JSR $FD15
02D8 20 53 E4 JSR $E453
02DB A6 62 LDX $62
02DD A4 63 LDY $63
02DF 86 2D STX $2D
02E1 84 2E STY $2E
02E3 EA NOP
02E4 EA NOP
02E5 EA NOP
02E6 EA NOP
02E7 EA NOP
02E8 EA NOP
02E9 EA NOP
02EA EA NOP
02EB EA NOP
02EC A2 03 LDX #$03
02EE BD BA 02 LDA $02BA,X
02F1 48 PHA
02F2 CA DEX
02F3 10 F9 BPL $02EE
02F5 A2 48 LDX #$48
02F7 A9 00 LDA #$00
02F9 9D B0 02 STA $02B0,X
02FC CA DEX
02FD 10 FA BPL $02F9
02FF 60 RTS
0300 BE 02 BE LDX $BE02,Y
Filename: biturbo by sc 85-2.prg
Loading address: $02BA
02BA FA nop
02BB 03 A0 slo ($A0,X)
02BD E1 AD SBC ($AD,X)
02BF 05 03 ORA $03
02C1 85 26 STA $26
02C3 AD 0C 03 LDA $030C
02C6 85 63 STA $63
02C8 AD 13 03 LDA $0313
02CB 85 62 STA $62
02CD AD 17 03 LDA $0317
02D0 85 27 STA $27
02D2 20 61 03 JSR $0361
02D5 A0 1F LDY #$1F
02D7 B9 30 FD LDA $FD30,Y
02DA 99 14 03 STA $0314,Y
02DD 88 DEY
02DE 10 F7 BPL $02D7
02E0 20 53 E4 JSR $E453
02E3 EA NOP
02E4 A2 03 LDX #$03
02E6 BD BA 02 LDA $02BA,X
02E9 48 PHA
02EA CA DEX
02EB 10 F9 BPL $02E6
02ED A2 40 LDX #$40
02EF A9 00 LDA #$00
02F1 9D B0 02 STA $02B0,X
02F4 CA DEX
02F5 10 FA BPL $02F1
02F7 A6 26 LDX $26
02F9 A4 27 LDY $27
02FB 86 AE STX $AE
02FD 84 AF STY $AF
02FF 60 RTS
0300 BE 02 BE LDX $BE02,Y
nel turbo 202 ad esempio usa una JSR $fd15 che e' la routine in kernal che fa il trasferimento dei vettori a $314, negli altri 2 lo fa a manina...
Nel galadriel vediamo che fa 2 jsr e una jmp per fare il run da asm, negli altri 2 pusha invece nello stack le locazioni (piu' o meno le stesse fatte in modo esplicito dal galadriel) che verranno eseguite dalla rts.
Il resto e' pressoche' invariato.
La chiocciola @ appare sempre in tutti e 3 i loaders a $0690, ogni tanto ci scrive qualcosa, alla fine rimane a 0 (@, come screencode)
e non a posizioni variabili, anche scrivendo il LOAD in posizioni diverse prima di caricare =)
Seguendo passo passo mi sono accorto che viene eseguita (imho per errore) un istruzione illegale nel kernal che scrive a $0690 perche' un RTI ritorna alla locazione sbagliata, il puntatore del vettore di STOP $0328 punta un byte troppo avanti rispetto a dove dovrebbe. Il voler far inibire il runstop/restore con un valore "sbagliato" (molto meglio farlo puntare ad un RTS, ad esempio mettendo $EC) ha causato questa fantomatica @
** Monitor 160 016
.C:fec0 68 PLA
(C:$fec0)
** Monitor 160 020
.C:fec1 40 RTI
(C:$fec1)
** Monitor 160 026
.C:f6b1 A0 E9 LDY #$E9
(C:$f6b1)
** Monitor 160 028
.C:f6b3 4F 90 06 SRE $0690
(C:$f6b3)
SRE = LSR memory, EOR memory
viene shiftato ogni volta, infatti da $20 passa a $10, $8 etc fino a rimanere 0.
-
Anche questa smentita dalla mia esperienza.
A volte m'è capitato addirittura che la chiocciola comparisse nella stessa riga dove veniva il run, provocando un bel syntax error e le mie risate alla faccia di chi aveva fatto quell'autostart.)
A me capita che la chiocciola, in una cassetta, si posizioni moooolte righe più giu rispetto il run, bloccando il caricamento!
-
A me capita che la chiocciola, in una cassetta, si posizioni moooolte righe più giu rispetto il run, bloccando il caricamento!
cita magari anche quale cassetta e quale titolo, se no non possiamo controllare.
-
Ci possono essere diverse varianti di loader, cioè codice scritto diversaamente, che riconoscono lo stesso formato sulla cassetta. Esempi erano il Turbo Tape 64 di Stefan Senz e il caricatore Turbo Tape 64-compatibile di Videobasic (quello di "PREMI LA BARRA SPAZIATRICE"): codice diverso (anche se sicuramente uno originato dall'altro), stesso formato.
Stai scherzando, vero?
No
Forse davvero non te ne sei mai accorto, ma il "PREMI LA BARRA SPAZIATRICE" è scritto tramite un PRINT prima del caricamento in turbo
Me n'ero accorto le prime volte che usavo Video Basic, circa 20 anni fa. E comunque niente di quello che ho scritto è in contraddizione con quello che hai scritto tu.
Il punto del discorso era che uno stesso formato può essere caricato da loader diversi (nel qual caso i due loader sono compatibili). E i loader di Senz e di Video Basic hanno indubbiamente la parte Basic diversa. Comunque, stimolato dal tuo post, ho confrontato i due loader, e effettivamente la parte non Basic è quasi completamente uguale: ci sono 1076 byte uguali, e la parte dopo la fine del listato (i 3 byte $00) è lunga 1081 byte in Turbo Tape 64 e 1079 byte in quello di Video Basic. I due listati, sebbene diversi, hanno la stesa identica lunghezza.
Quindi meglio ricorrere a un altro esempio: http://www.edicolac64.com/public/scaricaca...etta=game2000n1 (http://www.edicolac64.com/public/scaricacassetta.php?nomecassetta=game2000n1) . Il loader è breve (592 byte), non c'è neanche l'ombra di <-L, ma il formato del gioco è esattamente Turbo Tape 64. Invece di <-L, scrivi RUN, non si ferma al FOUND del gioco turbo, ma il formato è identico.
Forse, ritrovare la rivista specializzata (o quant'altro) in cui appariva la definizione "Connection" può aiutare a dirimere la questione.
Tanto per dirne uno, "UNIVERSAL TAPE" delle edizioni APE
Interessante! Edicola 64 non ce l'ha. Non he che hai i .TAP?
-
Interessante! Edicola 64 non ce l'ha. Non he che hai i .TAP?
Ti ho uppato quel universal tape e un paio di connection che ho.
http://iancoog.altervista.org/hid/variconnection.rar (http://iancoog.altervista.org/hid/variconnection.rar)
-
viene eseguita (imho per errore) un istruzione illegale nel kernal che scrive a $0690 perche' un RTI ritorna alla locazione sbagliata, il puntatore del vettore di STOP $0328 punta un byte troppo avanti rispetto a dove dovrebbe. Il voler far inibire il runstop/restore con un valore "sbagliato" (molto meglio farlo puntare ad un RTS, ad esempio mettendo $EC) ha causato questa fantomatica @
Quindi, la caratteristica più famosa di questo loader è dovuta a un bug!
E non è il solo. Il loader calcola la checksum XOR di tutti i byte, carica il byte di checksum da cassetta, ma non li confronta. Quindi non è capace di rilevare errori di caricamento.
Per ingannare l'autostart fatto con rU o simili, avevo ideato questo trucchetto:
- POKE 650,128
- LOAD
- appena iniziato il caricamento del programma turbo, premere e tenere premuto RUN STOP
il RUN veniva interrotto dal RUN STOP prima di essere eseguito.
In http://www.edicolac64.com/public/scaricaca...assetta=peekn14 (http://www.edicolac64.com/public/scaricacassetta.php?nomecassetta=peekn14) le introduzioni dei giochi sono in una versione di Connection interessante. L'indirizzo di inizio del caricamento, invece di essere "hard coded", è preso da $2B-$2C (inizio del Basic), invece quello finale è "hard coded" come sempre. Risultato: se l'inizio del Basic non è il tradizionale $801 ma è spostato in avanti, vengono caricati meno bytes del dovuto, e la parte in Assembler non è dove la SYS si aspetta che sia. Un'idea brillante. I giochi veri e propri sono in una versione di Turbo202 senza righe.
-
Ti ho uppato quel universal tape e un paio di connection che ho.
http://iancoog.altervista.org/hid/variconnection.rar (http://iancoog.altervista.org/hid/variconnection.rar)
La versione in connection.rar "CONNECTION.prg" di 2050 bytes, fa l'autostart con il r+Shift U
0D35 20 15 FD JSR $FD15
0D38 20 53 E4 JSR $E453
0D3B 20 33 A5 JSR $A533
0D3E A5 62 LDA $62
0D40 A6 63 LDX $63
0D42 85 2D STA $2D
0D44 86 2E STX $2E
0D46 A9 52 LDA #$52
0D48 8D 77 02 STA $0277
0D4B A9 D5 LDA #$D5
0D4D 8D 78 02 STA $0278
0D50 A9 0D LDA #$0D
0D52 8D 79 02 STA $0279
0D55 A9 03 LDA #$03
0D57 85 C6 STA $C6
0D59 4C 74 A4 JMP $A474
E nell'header segna "GALADRIEL SW. C."