A me invece piace molto il 6809, chissà che sistemi c'erano realmente in giro ai tempi.
Il C128 mi è piaciuto particolarmente, tant'è che mi era venuto il pallino di studiarne nel dettaglio gli schemi elettrici. La parte più "stronza" è sicuramente quella che obbliga l'8502 a lavorare a frequenza dimezzata per colpa del VIC-III che altrimenti non gli sta dietro, e per fortuna si poteva mettere il turbo mode disattivando il display a 40 colonne.
Un altro difetto era il clock dello Z80 che era sì da 4,5 MHz (mi pare), ma con parecchi wait state che lo riducevano a lavorare ad un clock equivalente a circa 2,5MHz, per potersi sincronizzare con il chipset Commodore in maniera corretta.
Questi difetti sono sicuramente sintomo di un progetto spinto dal marketing (volevano il supporto CP/M a tutti i costi), ma nonostante questo i ragazzi di Commodore hanno fatto un lavoro mostruoso in brevissimo tempo. Tanto di cappello
Salve ragazzi,mi fa piacere aver avuto tutti questi preziosi suggerimenti. Ora devo però chiarire una cosa. Il 6502 non è reale ma emulato tramite microcontrollore (pic o atmel, deciderò tra qualche giorno). Quindi, in realtà, posso manipolare il codice sorgente per far comportare la CPU come voglio (se avete suggerimenti, sono ben accetti). L'emulatore cattura la chiamata all'istruzione JSR e controlla l'indirizzo se è quello per le chiamate hardware, sospende la CPU virtuale, recupera i dati dalla RAM dedicata all'I/O ed esegue i compiti richiesti.Gli interrupt software potrei anche disattivarli, perchè non necessari.Si sil compilatore è quello (cc65) e me lo sto studiando bene bene.Grazie a tutti,Enzo.
Citazione da: ecalogiuri - 08 Gennaio 2014, 09:13:33Salve ragazzi,mi fa piacere aver avuto tutti questi preziosi suggerimenti. Ora devo però chiarire una cosa. Il 6502 non è reale ma emulato tramite microcontrollore (pic o atmel, deciderò tra qualche giorno). Quindi, in realtà, posso manipolare il codice sorgente per far comportare la CPU come voglio (se avete suggerimenti, sono ben accetti). L'emulatore cattura la chiamata all'istruzione JSR e controlla l'indirizzo se è quello per le chiamate hardware, sospende la CPU virtuale, recupera i dati dalla RAM dedicata all'I/O ed esegue i compiti richiesti.Gli interrupt software potrei anche disattivarli, perchè non necessari.Si sil compilatore è quello (cc65) e me lo sto studiando bene bene.Grazie a tutti,Enzo.Ma scusa, non ti conviene a questo punto inserire una nuova istruzione dedicata? Il 6502 aveva un sacco di opcode liberi. In questo modo ti eviti di confrontare ogni volta i registri: quando quella particolare istruzione viene eseguita, sei sicuro che devi fare qualcosa si speciale.Ovviamente nel codice assembly 6502 la puoi inserire usando le classiche istruzioni DB.
OK, fammi sapere se ti va bene un modello tra quelli a disposizione, p.e. {apple2, apple2enh, … }, se e' così poi lo si può clonare modificando i sorgenti stessi della toolchain, va aggiunto in diversi punti e va fornita una libreria.la toolchain prevede che il modello venga usato -t modellop.e.Codice: [Seleziona]all: apple2apple2: @echo -n "- building for apple2 ... " @cl65 -O -t apple2 hello.c text.s @echo "done"apple2enh: @echo -n "- building for apple][ ... " @cl65 -O -t apple2enh hello.c text.s @echo "done"my: @echo -n "- building for my ... " @cc65 -O -t my hello.c @cl65 -O -t my hello.c text.s @echo "done"clean: @rm -f helloIo ho aggiunto un finto modello "my", ed ho dovuto modificaresrc/common/target.hsrc/common/target.csrc/cc65/main.csrc/ca65/main.csrc/ld65/main.c
all: apple2apple2: @echo -n "- building for apple2 ... " @cl65 -O -t apple2 hello.c text.s @echo "done"apple2enh: @echo -n "- building for apple][ ... " @cl65 -O -t apple2enh hello.c text.s @echo "done"my: @echo -n "- building for my ... " @cc65 -O -t my hello.c @cl65 -O -t my hello.c text.s @echo "done"clean: @rm -f hello
Userò un ATMega32, penso a 20 Mhz ed emulatore svincolato dalla simulazione dei wait state per istruzione. La zero page la mapperò direttamente nella memoria del microcontrollore, spero così di guadagnare un pò di velocità...
Raga, non mi torna quello che ci siamo detti, per 6502 trovo l'istruzione TXS Transfer index X to stack pointer quindi posso piazzami lo stack dove mi pare,
semmai c'e' una modalità di accesso alla memoria che e' ristretta SOLO alla page0, ma questo e' opzionale, ovvero puoi aggirarla usando altre modalità.