[zxspectrum] nuova trap per la rom nel clone

  • From: "Alessandro" <apoppi@xxxxxxxx>
  • To: <zxspectrum@xxxxxxxxxxxxx>
  • Date: Sun, 27 Aug 2006 18:16:38 +0200

Adesso che il PIC e` piuttosto interattivo, ho sentito il bisogno di aggiungere la possibilita` di chiamare funzioni "di sistema" (ovvero routines presenti nella mia rom di boot, che gestiscono l'hardware del clone) da altre rom (e quindi anche dal basic).

Al momento, il sistema meno invasivo che ho trovato consiste in un nuovo indirizzo "trappato" dalla cpld, che quindi swappa dentro la mia rom: l'indirizzo e` $25 (37) e, in entrambe le rom (48/128K) contiene almeno 3 bytes liberi consecutivi.

Quando lo Z80 effettua un opcode-fetch a quell'indirizzo, si attiva la mia rom che contiene un salto alla routine di servizio.

A livello preliminare, il tipo di servizio richiesto deve essere pokato nella locazione ram 23728 (quella inutilizzata a causa dell'errore nella gestione dell'NMI nella rom del 48K, insieme alla 23729). Questo per poter fare la chiamata da BASIC, senza cioe` poter caricare valori nei registri.

Al momento ho scritto solo alcune funzioni, tipo "manda un byte al pic, ricevi un byte dal pic, stessa cosa per la seriale "vera" (quella da 115K2), e uno per saltare nel bootrom come da reset.

In molti casi (ad esempio la ricezione di un byte) il carattere viene restituito in BC, in modo che il basic lo ottenga come risultato della chiamata "USR 37".

Funziona tutto molto bene, ma mi stavo chiedendo se la cosa non e` troppo invasiva a livello di compatibilita` e se ci sono sistemi migliori.

Ciao!


Other related posts:

  • » [zxspectrum] nuova trap per la rom nel clone