X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=Pico%2Fcarthw%2Fsvp%2Fssp16.h;h=fddb5ed73b637254a7cdcda40f19b4cd63483921;hb=71bb1b7bd0186eb056609fec62a134dcaadbffdf;hp=e2be484ffb6313eddb43092fb33c4a0e0742ac06;hpb=30752975e044377d40b2d496d17591d96a02c3af;p=picodrive.git diff --git a/Pico/carthw/svp/ssp16.h b/Pico/carthw/svp/ssp16.h index e2be484..fddb5ed 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 { @@ -19,30 +26,42 @@ typedef union typedef struct { union { - unsigned short RAM[256*2]; // 2 internal RAM banks + unsigned short RAM[256*2]; // 000 2 internal RAM banks struct { unsigned short RAM0[256]; unsigned short RAM1[256]; }; }; - ssp_reg_t gr[16]; // general registers + ssp_reg_t gr[16]; // 400 general registers union { - unsigned char r[8]; // BANK pointers + unsigned char r[8]; // 440 BANK pointers struct { unsigned char r0[4]; unsigned char r1[4]; }; }; - unsigned short stack[6]; - unsigned int pmac_read[6]; // read modes/addrs for PM0-PM5 - unsigned int pmac_write[6]; // write ... + unsigned short stack[6]; // 448 + unsigned int pmac_read[6]; // 454 read modes/addrs for PM0-PM5 + unsigned int pmac_write[6]; // 46c write ... // #define SSP_PMC_HAVE_ADDR 0x0001 // address written to PMAC, waiting for mode #define SSP_PMC_SET 0x0002 // PMAC is set - #define SSP_30FE06_WAIT 0x4000 // ssp tight loops on 30FE08 to become non-zero - #define SSP_30FE08_WAIT 0x8000 // same for 30FE06 - unsigned int emu_status; - unsigned int pad[30]; + #define SSP_WAIT_PM0 0x2000 // bit1 in PM0 + #define SSP_WAIT_30FE06 0x4000 // ssp tight loops on 30FE06 to become non-zero + #define SSP_WAIT_30FE08 0x8000 // same for 30FE06 + #define SSP_WAIT_MASK 0xe000 + unsigned int emu_status; // 484 + /* used by recompiler only: */ + struct { + unsigned int ptr_rom; // 488 + unsigned int ptr_iram_rom; // 48c + unsigned int ptr_dram; // 490 + unsigned int iram_dirty; // 494 + unsigned int iram_context; // 498 + unsigned int ptr_btable; // 49c + unsigned int ptr_btable_iram; // 4a0 + unsigned int tmp0; // 4a4 + } drc; } ssp1601_t;