Konwersja numeru banku MEMAC B na PORTB i odwrotnie

From Atariki

(Różnice między wersjami)
Jump to: navigation, search
Wersja z dnia 14:23, 22 kwi 2009
KMK (Dyskusja | wkład)

← Previous diff
Wersja z dnia 08:29, 23 kwi 2009
KMK (Dyskusja | wkład)
(bugfix)
Next diff →
Linia 38: Linia 38:
; wy: nr banku MEMAC B w akumulatorze ; wy: nr banku MEMAC B w akumulatorze
- and #%01111111+ ora #%10000000
lsr lsr
lsr lsr

Wersja z dnia 08:29, 23 kwi 2009

Rdzeń FX VBXE może emulować wewnętrzne rozszerzenie pamięci Rambo XL. W takiej sytuacji część (wyższe 256 KB) pamięci VRAM jest widziana przez komputer jako 16 banków rozszerzenia pamięci RAM, którym steruje rejestr PORTB.

Kolejne banki pamięci Rambo XL odpowiadają bankom MEMAC B o numerach od 16 do 31, w następujący sposób:

MEMAC B $10 $11 $12 $13 $14 $15 $16 $17 $18 $19 $1A $1B $1C $1D $1E $1F
PORTB   $83 $87 $8B $8F $A3 $A7 $AB $AF $C3 $C7 $Cb $CF $E3 $E7 $EB $EF

W celu konwersji można skorzystać z tabelki jak powyżej albo, jeśli ważny jest raczej rozmiar programu niż czas jego wykonywania się, z jednej z poniższych procedur.

Konwersja MEMAC B na PORTB

; MEMAC B -> PORTB
; we: nr banku MEMAC B w akumulatorze
; wy: kod PORTB w akumulatorze

   ora #%11110000
   lsr 
   php
   lsr
   php
   asl
   plp
   rol
   plp
   rol
   rol
   rol

Konwersja PORTB na MEMAC B

; PORTB -> MEMAC B
; we: kod PORTB w akumulatorze
; wy: nr banku MEMAC B w akumulatorze

   ora #%10000000
   lsr
   lsr
   lsr
   php
   lsr
   php
   lsr
   plp
   rol
   plp
   rol
Personal tools