1

Temat: wirtualny procesor - z80 emulator

Witam,

napisalem emulator procesora z80 na kanwie ktorego uruchomilem zx spectrum emulator (w innym watku i na atari.online.pl mozna zobaczyc jak dzialaja gry z zx spectrum uruchomione na tym emulcu) obecnie chcialbym opublikowac emulator z80 w najwygodniejszej dla userow formie (oczywiscie mozna go extractowac z tych gier ale  sa wygodniejsze metody - publikacja).

moja propozycja:
- z80 emulator jako osobny programik (wielkosc ok. 3 kb razem z tablicami)
- biblioteka rozkazow (osobno, poniewaz mozna emulowac inny niz z80 procesor)

emulator z80 posiada tablice skokow zawierajaca:
- procedure uruchomienia z80 (run_z80).
- procedure powrotu z trybu z80

      przyklad1:

      lda #0                            ; program 6502
      jsr run_z80                     ; uruchomienie z80
      xor a                              ; program z80
      ld (colbaks),a
      ret                                 ; makro $dd,$01 powrot do trybu 6502
      ldy #0                            ; program 6502

      przyklad2:

      lda <_z                          ; program 6502
      ldx >_z                          ; wartosci dla pc procesora z80
      jmp run_z80                   ; uruchomienie z80
_6  lda #0                            ;

_z   xor a                             ; program z80
      ld (colbaks),a
      jp _6                             ; makro $dd,$02 powrot do trybu 6502

roznica jest taka, ze w pierwszym przykladzie nastapi korekta pc procesora 6502, tak ze po powrocie z trybu z80 program bedzie wykonywany od kolejnego rozkazu (tym razem juz rozkazu 6502)

- procedury dodawania/aktualizacji rozkazow emulowanego procesora
- procedury aktualizacji pc emulowanego procesora

przyklad:
      ldy #$12                      ; kod rozkazu LD (de),a procesora z80
      lda <_z                         
      ldx >_z                       ; adres procedury obslugi rozkazu
      jsr update_z80               
     
_z   ldy #0
      lda z80_a
      sta (z80_de),y
      jmp z80_pc_plus1

i wlasnie zdefiniowalismy nowy rozkaz zapisujacy zawartosc akumulatora z80 do pamieci pod adresem wskazywanym przez pare rejestrow de proca z80, jesli masz 65816 zdefiniujesz sobie rozkazy korzystajac
z jego mozliwosci

procedur update jest 5 dla rozkazow zwyklych, i z prefiksami fd,dd,ed,cb (oczywiscie prefiksy tez mozemy zmieniac)

procedury aktualizacji pc z80 o 1,2,3 i 4 bajty

czy to wystarczy? jakies uwagi?


-- edit
sa dwie procedury aktualizacji pc: o 1 bajt i o ilosc bajtow zawarta w akumulatorze - to uklon w strone makrorozkazow.

Ostatnio edytowany przez xxl (2007-04-19 14:01:28)

http://atari.pl/hsc/ad.php?i=1.