| Autore |
Discussione  |
|
|
jack1
Nuovo Utente
|
Inserito il - 15/05/2009 : 00:26:37
|
Salve a tutti,desideravo alcuni consigli per quanto riguarda la programmazione in assembler. Ho cercato di trovare alcuni programmi gratuiti che si trovano in rete per i miei scopi ma ancora non ci capisco molto. Ciò che mi occorrerebbe ,sarebbe quello di creare un programma in linguaggio assembler (possibilmente a 8 bit come per esempio con lo Z80) per poi renderlo eseguibile su un emulatore spectrum a 48k. Il programma dovrebbe emulare un pannello stile l'insegna di una farmacia,in cui la croce cambia colore ogni tot secondi,per esempio ogni 3 sec, e abbia l'effetto di rotazione,inserendo anche la data scorrevole.Sapete come posso fare?o quali registri dovrei usare? Grazie in anticipo.
P.S. Se qualcuno è in grado di darmi qualche pezzo di codice su come impostare il programma e in che modo renderlo eseguibile,sarei davvero grato. Conto sul vostro aiuto :)
|
|
|
ekkekkazz
Utente innocuo
 
|
Inserito il - 16/05/2009 : 10:58:51
|
Ciao, sinceramente di Z80 non ne so nulla, non ho mai provato a fare una cosa del genere. Pero' dovresti controllare che se il tuo assemblatore supporta quel formato, in genere un assemblatore supporta diversi formati.
Ti do un paio di entry point :>
http://it.geocities.com/antonio_di_stefano/Informatica/z80.htm Qui trovi tutto, dal set di istruzioni ad un simulatore ad un assemblatore vero (TASM) che supporta Z80.
http://z80.msk.ru/ Questo e' un assemblatore specifico per Z80 basato su NASM.
Magari se hai qualche problema piu' specifico metti il codice.
Ciao! |
 |
|
|
jack1
Nuovo Utente
|
Inserito il - 16/05/2009 : 12:11:16
|
Ehi,grazie. Ho trovato interessante il primo link.Diciamo che è proprio quello che fa per me.In pratica dovrei trovare un assemblatore per Z80,oppure scrivere il codice e trasformarlo in file oggetto (obj) con TASM per poi farlo funzionare su spectrum (es. 48k). Il link lo conoscevo già,ma non avevo idea di come iniziare ad implementare il programma per creare una Croce da insegna farmaceutica e visualizzarla in spectrum. Grazie per la risposta e spero di avere un'ulteriore illuyminazione ;) Ciao,a presto. |
 |
|
|
ekkekkazz
Utente innocuo
 
|
Inserito il - 16/05/2009 : 15:29:30
|
Allora, diciamo che avrei una tesi da mandare avanti ma attendo un' zione anch'io. :|
Ti dico quello che ho fatto (ovviamente non ho risolto il tuo problema :P).
Esistono diversi emulatori dello spectrum in giro, questi caricano dei file SNA (degli snapshot).
Quindi il processo e' ASM -> OBJ -> SNA. Poi devi far partire l'SNA con un simulatore.
Partiamo dal codice. Su quel link ti dice qual e' la mappa della memoria:
0000-3FFF: ROM (16K)
4000-57FF: Memoria grafica (display file)
5800-5AFF: Mappa colori (attributes)
5B00-5BFF: Buffer di stampa
5C00-5CB5: Variabili di sistema
...
8000-????: RAM libera
FF58-FFFF: Caratteri grafici utente
Il tuo codice comincia ad 8000h byte dall'inizio, perche' fino ad 8000h sei nel sistema. La visualizzazione della croce e dei colori la fai scrivendo nell'area di memoria che va da 4000 a 5AFF. Ovviamente li' ogni byte ha una sua posizione sullo schermo (per capire come e' strutturato lo schermo devi studiare sul link dove spiega che e' diviso in righe, linee, pixel, ecc).
Lo skeleton del programma utilizzando TASM e' questo:
.ORG $8000
ENTRY
; codice, codice, codice
.END
Per esempio in mezzo ho messo qualche riga presa dal link sopra.
.ORG $8000
ENTRY LD HL,$4000 ; carica l'indirizzo del display file
LD (HL),170 ; 170 in binario vale %10101010
LD HL,$5800 ; carica l'indirizzo del display file
LD (HL),10 ; 10 in binario: %00 001 010
RET ; ritorna da dove aveva lasciato
.END
Su quel link trovi davvero tutto l'instruction set, c'e' anche un esempio di tetris che ti puo' essere utile (vedi in fondo).
Per la compilazione, devi usare dei comandi. Scarica TASM, spostati nella directory dov'e' tasm.exe, compila con:
C:DOCUME~1ADMINI~1Desktop\test>tasm -80 test.txt
dove test.txt e' un file di testo col codice. Avrai in output test.obj e test.lst.
Ora devi usare il tool di quel tizio li' sempre nel primo link, cioe' specld.exe, che ti converte un OBJ in SNA.
C:DOCUME~1ADMINI~1Desktop\test>Specld.exe test.OBJ 32768
32768 e' il base address (8000 in hex), cioe' il punto in cui comincia il tuo codice. Ora hai l'SNA.
|
Modificato da - ekkekkazz in data 16/05/2009 15:32:16 |
 |
|
|
jack1
Nuovo Utente
|
Inserito il - 16/05/2009 : 16:56:08
|
Grazie,considerando il fatto che sto cominciando da zero,sei stato abbastanza nte e gentile.Avevo cercato addirittura di far girare il programma preso come esempio,cioè il tetris,direttamente sull'emulatore spectrum 48k.Avevo letto che si possono caricare oltre ai file SNA anche quelli in .Z80 ma,al momento dell'esecuzione,trova errore in due variabili.Forse il programma avrà qualche errore?..mah,probabile magari che mi ci dovrò dedicare di più. Ti ringrazio per avermi risposto e in bocca al lupo per la tua tesi ;)
|
 |
|
|
ekkekkazz
Utente innocuo
 
|
Inserito il - 16/05/2009 : 19:46:20
|
Prego. Crepi il lupo (chissa' quando). :\
|
Modificato da - ekkekkazz in data 16/05/2009 19:46:50 |
 |
|
|
Virgilio
Utente assiduo
  
Regione: Puglia
Prov.: Bari
Città: Bari
|
Inserito il - 16/05/2009 : 22:45:13
|
Per curiosità, come mai vorresti fare un lavoro per un computer vintage, come lo Spectrum?
|
 |
|
|
jack1
Nuovo Utente
|
Inserito il - 17/05/2009 : 02:16:39
|
Ciao Virgilio,la mia necessità è dovuta solo a scopo didattico.Tu saresti in grado di aiutarmi?Ad ogni modo quello che mi interesserebbe di più è il codice assembler per z80 del programma che ho esposto nel mio primo post. Ciao e buona Domenica ;) |
 |
|
|
jack1
Nuovo Utente
|
Inserito il - 26/05/2009 : 17:44:12
|
Salve,scusate,volevo fare una domanda riguardo sempre quest'argomento. Essendo molto complicatgo il fatto di inserire pixel per pixel nel compilatore,non sarebbe possibile convertire qualche immagine in codice assembly? Oppure magari utilizzare delle immagini e creare delle sequenzencon le immagini stesse.So che col x86 si può fare,volevo sapere se si può fare anche con z80.Grazie,ciao :) |
 |
|
| |
Discussione  |
|
|
|