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!