X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=Pico%2Fcarthw%2Fsvp%2Fssp16.h;h=4f4dfa0098e8aaaa3276910af1eb9449bb09bc81;hb=726bbb3e08e3d4e7ed086a3c98dec0e21a386d75;hp=c2a40602bcea5b92f35de76296d2c7ac639a602d;hpb=f8ef8ff7100baa0ac0ecfcacb47aea3a9e24bc38;p=picodrive.git diff --git a/Pico/carthw/svp/ssp16.h b/Pico/carthw/svp/ssp16.h index c2a4060..4f4dfa0 100644 --- a/Pico/carthw/svp/ssp16.h +++ b/Pico/carthw/svp/ssp16.h @@ -1,3 +1,10 @@ +// basic, incomplete SSP160x (SSP1601?) interpreter + +// (c) Copyright 2008, Grazvydas "notaz" Ignotas +// Free for non-commercial use. + +// For commercial use, separate licencing terms must be obtained. + // register names enum { @@ -34,13 +41,24 @@ typedef struct }; }; unsigned short stack[6]; + unsigned int pmac_read[6]; // read modes/addrs for PM0-PM5 + unsigned int pmac_write[6]; // write ... // - #define SSP_PMC_HAVE_ADDR 1 // address written to PMAC, waiting for mode + #define SSP_PMC_HAVE_ADDR 0x0001 // address written to PMAC, waiting for mode + #define SSP_PMC_SET 0x0002 // PMAC is set + #define SSP_WAIT_PM0 0x2000 // bit1 in PM0 + #define SSP_WAIT_30FE06 0x4000 // ssp tight loops on 30FE08 to become non-zero + #define SSP_WAIT_30FE08 0x8000 // same for 30FE06 + #define SSP_WAIT_MASK 0xe000 unsigned int emu_status; - unsigned int pad[10]; + unsigned int pad[30]; } ssp1601_t; void ssp1601_reset(ssp1601_t *ssp); -void ssp1601_run(ssp1601_t *ssp, int cycles); +void ssp1601_run(int cycles); + +int ssp1601_dyn_init(void); +void ssp1601_dyn_reset(ssp1601_t *ssp); +void ssp1601_dyn_run(int cycles);