[zxspectrum] Re: IM MODE
- From: Paolo Ferraris <pieffe8@xxxxxxxxxxxxx>
- To: zxspectrum@xxxxxxxxxxxxx
- Date: Tue, 28 Feb 2006 08:36:50 -0600
Alessandro Poppi wrote:
On Monday, February 27, 2006 8:00 AM [GMT+1],
Paolo Ferraris <pieffe8@xxxxxxxxxxxxx> wrote:
sembra troppo complicato. Comunque una soluzione software come quella
prospettata da te non dovrebbe essere difficile da scrivere, se si
possono usare i 16K inferiori come ROM custom/RAM. Se vuoi ti
suggerisco come fare.
Dimmi, dimmi... pero` considera che non posso permettermi di modificare
nemmeno un byte di ram, eccetto quella relativa allo schermo, altrimenti
potrei non riuscire a rientrare nel programma appena snappato. Va beh
che posso rileggerlo dallo snap stesso, ma mi sembra un po` macchinoso.
Ok. La cosa migliore sarebbe avere qualche byte di RAM prima della zona
video, ma questo dipende dall'hardware. La zona video va comunque bene
lo stesso. La sintassi precisa ovviamente dipende dall'assembler.
-p
IMODE equ 16384 ;; o qualunque altro indirizzo in cui possiamo
;; scrivere, conterra` i'interrupt mode
ORG 003F ;; interrupt address
... ;; la routine puo` contenere niente
;; se si vuole solo scoprire l'interrupt mode;
;; puo` contenere dell'altro in caso si voglia, per
;; esempio, gestire la tastiera se il magic button e`
;; interattivo
EI
RET
org 0066 ;; NON-MASKABLE INTERRUPT routine
... ;; salvataggio dei registri, in particolare di I ed AF;
;; gli interrupt sono disabilitati
xor a
ld (IMODE),a ;; salviamo che siamo in IM0
ld i,2
ei ;; abilitiamo momentaneamente gli interrupt
halt ;; (almeno) una chiamata agli interrupt;
;; se siamo in IM2 allora la routine all'indirizzo
;; puntato dalla locazione di memoria 02FFh (cioe`
;; NEWINT) viene lanciato, altrimenti direttamente 33h
di ;; ridisabilitiamo gli interrupt
... ;; continuiamo la routine normale
org 02FF
defw NEWINT ;; puntatore alla routine da essere lanciata in ;; caso
in IM2 (I deve essere settato a 2)
...
org ... ;; routine di interrupt in caso di IM2
NEWINT:
push af
ld a,2
ld (IMODE),a ;; salviamo che siamo in IM2
pop af
jp 3Fh ;; normale routine di interrupt
- Follow-Ups:
- [zxspectrum] Re: IM MODE
- From: Alessandro Poppi
- [zxspectrum] Re: IM MODE
- From: SancheZ
- References:
- [zxspectrum] IM MODE
- From: Alessandro
- [zxspectrum] Re: IM MODE
- From: Paolo Ferraris
- [zxspectrum] Re: IM MODE
- From: Alessandro Poppi
Other related posts:
- » [zxspectrum] IM MODE
- » [zxspectrum] Re: IM MODE
- » [zxspectrum] Re: IM MODE
- » [zxspectrum] Re: IM MODE
- » [zxspectrum] Re: IM MODE
- » [zxspectrum] Re: IM MODE
- » [zxspectrum] Re: IM MODE
- » [zxspectrum] Re: IM MODE
- » [zxspectrum] Re: IM MODE
- » [zxspectrum] Re: IM MODE
- » [zxspectrum] Re: IM MODE
- » [zxspectrum] Re: IM MODE
- » [zxspectrum] Re: IM MODE
- » [zxspectrum] Re: IM MODE
On Monday, February 27, 2006 8:00 AM [GMT+1], Paolo Ferraris <pieffe8@xxxxxxxxxxxxx> wrote:
sembra troppo complicato. Comunque una soluzione software come quella prospettata da te non dovrebbe essere difficile da scrivere, se si possono usare i 16K inferiori come ROM custom/RAM. Se vuoi ti suggerisco come fare.
Dimmi, dimmi... pero` considera che non posso permettermi di modificare nemmeno un byte di ram, eccetto quella relativa allo schermo, altrimenti potrei non riuscire a rientrare nel programma appena snappato. Va beh che posso rileggerlo dallo snap stesso, ma mi sembra un po` macchinoso.
IMODE equ 16384 ;; o qualunque altro indirizzo in cui possiamo ;; scrivere, conterra` i'interrupt mode ORG 003F ;; interrupt address
org 0066 ;; NON-MASKABLE INTERRUPT routine
- [zxspectrum] Re: IM MODE
- From: Alessandro Poppi
- [zxspectrum] Re: IM MODE
- From: SancheZ
- [zxspectrum] IM MODE
- From: Alessandro
- [zxspectrum] Re: IM MODE
- From: Paolo Ferraris
- [zxspectrum] Re: IM MODE
- From: Alessandro Poppi