--- BODRATO Stefano <Stefano.Bodrato@xxxxxxxxxxxxxxxx> wrote: > >Be, io non ho capito quale fosse l'intento. > >Se l'intento e' trasformare un PUSHA o come cavolo si scrive del 6502 in un > >PUSH HL dello Z80 la cosa si puo' fare. > >Se invece si vuole accendere un pixel a video allora la cosa e' diversa. > > La prima delle due ! > Allora, vediamo di ricapitolare. Da una parte c'e' il 6502 con un suo set di registri e un set di istruzioni che operano su registri e su locazioni di memoria. Dall'altra parte c'e' uno Z80 con un suo set di registri e un set di istruzioni che operano su registri e su locazioni di memoria. Entrambi indirizzano a 16 bit e quindi vedono 64K di memoria. Definiamo quello che si vuole ottenere: data una sequenza di istruzioni 6502 che a partire da una serie di dati presenti in alcune locazioni di memoria (INPUT) producono dei risultati in altre locazioni di memoria (OUTPUT), si vuole tradurre la sequenza di istruzioni data per un processore Z80 che a partire dall'input nelle corrispondenti locazioni di memoria produca un output nelle corrispondenti locazioni di memoria del 6502. cioe' per esempio questo programmino che somma LOC_A+LOC_B e scrive il risultato in LOC_C. Lo scrivo in assembler Z80. LOC_A: DEFB 10H; LOC_B: DEFB 20H; LOC_C: DEFB 00H; SOMMA: LD A, (LOC_B); LD B, A; LD A, (LOC_A); ADD A, B; LD (LOC_C), A; RET; Sicuramente una cosa del genere e' traducibile in qualunque assembler per qualunque processore. Ci sara' chi avra' istruzioni piu' efficienti e chi meno efficienti, ma ci si arriva. Il nocciolo della questione e' che il codice occupera' una certa porzione di ram a seconda del processore, di dimensioni diverse. In Z80 sono 12 byte mi pare. Magari in 6502 ce ne vogliono di piu' o di meno... Quando il codice cresce di dimensione e l'input e l'output interessano il resto della memoria, potrebbero subentrare problemi di sovrapposizione. Mi spiego: un programma che per Z80 occupa 16K di codice e utilizza interamente il resto della ram per leggere e scrivere, si riesce a trasformare in un equivalente 6502 che occupi i primi 16K di memoria per il codice e che quindi utilizzi le stesse locazioni di memoria per l'input e l'output? Se nella conversione il codice risultante raddoppiasse di dimensione, dove lo mettiamo? ===== // // In a world without walls and fences // you would not need windows and gates. // (Confucio) == P'n'P: http://maicrosoft.italiamac.com __________________________________ Do you Yahoo!? Yahoo! Finance: Get your refund fast by filing online. http://taxes.yahoo.com/filing.html