[zxspectrum] Re: ZXSpectrum su tutto...

  • From: Roberto Montaruli <rmontaruli@xxxxxxxxx>
  • To: zxspectrum@xxxxxxxxxxxxx
  • Date: Thu, 5 Feb 2004 02:51:58 -0800 (PST)

--- 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

Other related posts: