- setprg16(0x8000,EXPREGS[1]);\r
- setprg16(0xC000,EXPREGS[1]);\r
- } \r
- else\r
- { \r
- if(EXPREGS[0]&3)\r
- {\r
- uint32 blocksize = (6)-(EXPREGS[0]&3);\r
- uint32 mask = (1<<blocksize)-1;\r
- V &= mask;\r
- //V &= 63; //? is this a good idea?\r
- V |= (EXPREGS[1]<<1);\r
- setprg8(A,V);\r
- }\r
- else\r
- setprg8(A,V & prg_mask);\r
-\r
- if(EXPREGS[3]&2)\r
- {\r
- setprg8(0xC000,EXPREGS[4]);\r
- setprg8(0xE000,EXPREGS[5]);\r
- }\r
+ case 0: setprg8(A, (block << 1) | (V & 0x3F));\r
+ if(extra)\r
+ {\r
+ setprg8(0xC000,EXPREGS[4]);\r
+ setprg8(0xE000,EXPREGS[5]);\r
+ }\r
+ break;\r
+ case 1: setprg8(A, ((hiblock | (EXPREGS[1] & 0x70)) << 1) | (V & 0x1F));\r
+ if(extra)\r
+ {\r
+ setprg8(0xC000,EXPREGS[4]);\r
+ setprg8(0xE000,EXPREGS[5]);\r
+ }\r
+ break;\r
+ case 2: setprg8(A, ((hiblock | (EXPREGS[1] & 0x78)) << 1) | (V & 0x0F));\r
+ if(extra)\r
+ {\r
+ setprg8(0xC000,EXPREGS[4]);\r
+ setprg8(0xE000,EXPREGS[5]);\r
+ }\r
+ break;\r
+ case 3: setprg16(0x8000,(bank | block));\r
+ setprg16(0xC000,(bank | block));\r
+ break;\r
+ case 4: setprg32(0x8000,(bank | block) >> 1);\r
+ break;\r