trunk/hash/vz_cass.xml
| r242380 | r242381 | |
| 1 | | <?xml version="1.0"?> |
| 2 | | <!DOCTYPE softwarelist SYSTEM "softwarelist.dtd"> |
| 3 | | |
| 4 | | <!-- |
| 5 | | |
| 6 | | List of known tape releases by Dick Smith in Australia: |
| 7 | | |
| 8 | | X-7274 Attack of the Killer Tomatoes |
| 9 | | X-7231 Match Box |
| 10 | | X-7232 Poker |
| 11 | | X-7233 Hangman |
| 12 | | X-7234 Slot Machine/Knock Off/Russian Roulette |
| 13 | | X-7235 Blackjack |
| 14 | | X-7236 Circus (*) |
| 15 | | X-7237 Biorhythm/Pair Matching/Calendar |
| 16 | | X-7238 Horse Race |
| 17 | | X-7239 Invaders (*) |
| 18 | | X-7240 Dynasty Derby |
| 19 | | X-7241 Learjet |
| 20 | | X-7242 Ghost Hunter (*) |
| 21 | | X-7243 Hoppy (*) |
| 22 | | X-7244 Super Snake |
| 23 | | X-7245 Knights and Dragons |
| 24 | | X-7247 Star Blaster (*) |
| 25 | | X-7248 VZ-Asteroids |
| 26 | | X-7249 Air Traffic Controller |
| 27 | | X-7250 Lunar Lander |
| 28 | | X-7251 Statistics 1 |
| 29 | | X-7252 Statistics 2 |
| 30 | | X-7253 Matrix |
| 31 | | X-7254 Tennis Lesson/Golf Lesson |
| 32 | | X-7255 Introduction to BASIC |
| 33 | | X-7256 Elementary Geometry |
| 34 | | X-7257 Speed Reading |
| 35 | | X-7258 Typing Teacher |
| 36 | | X-7259 Mailing List |
| 37 | | X-7261 Portfolio Management |
| 38 | | X-7262 Discounted Cash Flow Analysis |
| 39 | | X-7263 Financial Ratio Analysis |
| 40 | | X-7264 Tennis (*) |
| 41 | | X-7265 Checkers |
| 42 | | X-7266 Planet Patrol (*) |
| 43 | | X-7268 Ladder Challenge (*) |
| 44 | | X-7270 Panik (*) |
| 45 | | X-7271 Othello |
| 46 | | X-7272 Dracula's Castle |
| 47 | | X-7273 Backgammon |
| 48 | | X-7275 VZ Chess (*) |
| 49 | | X-7276 Music Writer |
| 50 | | X-7278 Disassembler |
| 51 | | X-7279 Duel |
| 52 | | X-7280 Hex Utilities |
| 53 | | X-7281 Word Processor |
| 54 | | X-7282 Editor Assembler |
| 55 | | X-7285 Spell'O'Matic 1 & 2 |
| 56 | | X-7286 Spell'O'Matic 3 & 4 |
| 57 | | X-7287 Flashword 1 & 2 |
| 58 | | X-7288 Flashword 3 & 4 |
| 59 | | X-7289 Metric Spycatcher |
| 60 | | X-7290 Whizkid Spycatcher |
| 61 | | X-7330 Sprite Generator |
| 62 | | X-7331 Formula One |
| 63 | | X-7332 Galaxon (*) |
| 64 | | X-7333 Dawn Patrol (*) |
| 65 | | X-7339 Space RAM |
| 66 | | X-7342 Crash |
| 67 | | X-7344 Maze of Argon |
| 68 | | X-7345 Word Matching |
| 69 | | |
| 70 | | * = dumped |
| 71 | | |
| 72 | | Demonstration Tape (included with the VZ200) |
| 73 | | Demonstration Tape (included with the VZ300) |
| 74 | | |
| 75 | | --> |
| 76 | | |
| 77 | | <softwarelist name="vz_cass" description="Dick Smith VZ-200/300 cassettes"> |
| 78 | | |
| 79 | | <software name="chess"> |
| 80 | | <description>Chess</description> |
| 81 | | <year>198?</year> |
| 82 | | <publisher>Dick Smith</publisher> |
| 83 | | <info name="serial" value="X-7275" /> |
| 84 | | <part name="cass1" interface="vtech1_cass"> |
| 85 | | <dataarea name="cass" size="2854400"> |
| 86 | | <rom name="chess.wav" size="2854400" crc="7cc80cf3" sha1="770b09e8755fad97e12f320cd5fea3416669cd36" offset="0" /> |
| 87 | | </dataarea> |
| 88 | | </part> |
| 89 | | </software> |
| 90 | | |
| 91 | | <software name="circus"> |
| 92 | | <description>Circus</description> |
| 93 | | <year>198?</year> |
| 94 | | <publisher>Dick Smith</publisher> |
| 95 | | <info name="serial" value="X-7236" /> |
| 96 | | <part name="cass1" interface="vtech1_cass"> |
| 97 | | <dataarea name="cass" size="1317376"> |
| 98 | | <rom name="circus.wav" size="1317376" crc="ab3ba833" sha1="1b33e2f3f2389f61f2e815be626b5d84083be77e" offset="0" /> |
| 99 | | </dataarea> |
| 100 | | </part> |
| 101 | | </software> |
| 102 | | |
| 103 | | <software name="dawn"> |
| 104 | | <description>Dawn Patrol</description> |
| 105 | | <year>198?</year> |
| 106 | | <publisher>Dick Smith</publisher> |
| 107 | | <info name="serial" value="X-7333" /> |
| 108 | | <part name="cass1" interface="vtech1_cass"> |
| 109 | | <dataarea name="cass" size="3640544"> |
| 110 | | <rom name="dawn.wav" size="3640544" crc="22d096f5" sha1="ac480a16b6d6b8d6f08875e9c6ca13cadc413fa1" offset="0" /> |
| 111 | | </dataarea> |
| 112 | | </part> |
| 113 | | </software> |
| 114 | | |
| 115 | | <!-- Not released by Dick Smith? --> |
| 116 | | <software name="defpen"> |
| 117 | | <description>Defense Penetrator</description> |
| 118 | | <year>1982</year> |
| 119 | | <publisher>Cosmic Software</publisher> |
| 120 | | <info name="author" value="Tom Thiel" /> |
| 121 | | <part name="cass1" interface="vtech1_cass"> |
| 122 | | <dataarea name="cass" size="1926592"> |
| 123 | | <rom name="defpen.wav" size="1926592" crc="b3dfa117" sha1="b7b53d11483fd78dfc81484e0830e6f6913c6e47" offset="0" /> |
| 124 | | </dataarea> |
| 125 | | </part> |
| 126 | | </software> |
| 127 | | |
| 128 | | <software name="galaxon"> |
| 129 | | <description>Galaxon</description> |
| 130 | | <year>198?</year> |
| 131 | | <publisher>Dick Smith</publisher> |
| 132 | | <info name="serial" value="X-7332" /> |
| 133 | | <part name="cass1" interface="vtech1_cass"> |
| 134 | | <dataarea name="cass" size="1628976"> |
| 135 | | <rom name="galaxon.wav" size="1628976" crc="8909df05" sha1="4ee1ce9aa8538b8aad9d0839fdb1396335074945" offset="0" /> |
| 136 | | </dataarea> |
| 137 | | </part> |
| 138 | | </software> |
| 139 | | |
| 140 | | <software name="ghost"> |
| 141 | | <description>Ghost Hunter</description> |
| 142 | | <year>198?</year> |
| 143 | | <publisher>Dick Smith</publisher> |
| 144 | | <info name="author" value="Dubois and McNamara" /> |
| 145 | | <info name="serial" value="X-7242" /> |
| 146 | | <part name="cass1" interface="vtech1_cass"> |
| 147 | | <dataarea name="cass" size="1732336"> |
| 148 | | <rom name="ghost.wav" size="1732336" crc="b5ed2320" sha1="f58e328e0b20d453a1c0486fd8e10c5f3e7ecfa7" offset="0" /> |
| 149 | | </dataarea> |
| 150 | | </part> |
| 151 | | </software> |
| 152 | | |
| 153 | | <software name="hamsam"> |
| 154 | | <description>Hamburger Sam</description> |
| 155 | | <year>????</year> |
| 156 | | <publisher></publisher> |
| 157 | | <part name="cass1" interface="vtech1_cass"> |
| 158 | | <dataarea name="cass" size="5109472"> |
| 159 | | <rom name="hamsam.wav" size="5109472" crc="7aed86a7" sha1="b5061edb1401cea4aee97d8cd92c582c9c14e66b" offset="0" /> |
| 160 | | </dataarea> |
| 161 | | </part> |
| 162 | | </software> |
| 163 | | |
| 164 | | <software name="hoppy"> |
| 165 | | <description>Hoppy</description> |
| 166 | | <year>198?</year> |
| 167 | | <publisher>Dick Smith</publisher> |
| 168 | | <info name="serial" value="X-7243" /> |
| 169 | | <part name="cass1" interface="vtech1_cass"> |
| 170 | | <dataarea name="cass" size="3172080"> |
| 171 | | <rom name="hoppy.wav" size="3172080" crc="60e7e15a" sha1="1d56a04af700a94d44d6bb0ddfaf89213db39ce8" offset="0" /> |
| 172 | | </dataarea> |
| 173 | | </part> |
| 174 | | </software> |
| 175 | | |
| 176 | | <software name="invaders"> |
| 177 | | <description>Invaders</description> |
| 178 | | <year>198?</year> |
| 179 | | <publisher>Dick Smith</publisher> |
| 180 | | <info name="author" value="Dubois and McNamara" /> |
| 181 | | <info name="serial" value="X-7239" /> |
| 182 | | <part name="cass1" interface="vtech1_cass"> |
| 183 | | <dataarea name="cass" size="1723824"> |
| 184 | | <rom name="invaders.wav" size="1723824" crc="f959681e" sha1="e12bc9384e7fe1efc0ecff6356c3e3ded7ee8373" offset="0" /> |
| 185 | | </dataarea> |
| 186 | | </part> |
| 187 | | </software> |
| 188 | | |
| 189 | | <software name="ladder"> |
| 190 | | <description>Ladder Challenge</description> |
| 191 | | <year>198?</year> |
| 192 | | <publisher>Dick Smith</publisher> |
| 193 | | <info name="serial" value="X-7268" /> |
| 194 | | <part name="cass1" interface="vtech1_cass"> |
| 195 | | <dataarea name="cass" size="1622288"> |
| 196 | | <rom name="ladder.wav" size="1622288" crc="47ab9ccf" sha1="e6d72b7bc26b124c906b9c0e0015137ae8844a4d" offset="0" /> |
| 197 | | </dataarea> |
| 198 | | </part> |
| 199 | | </software> |
| 200 | | |
| 201 | | <software name="missile"> |
| 202 | | <description>Missile</description> |
| 203 | | <year>????</year> |
| 204 | | <publisher></publisher> |
| 205 | | <part name="cass1" interface="vtech1_cass"> |
| 206 | | <dataarea name="cass" size="5109776"> |
| 207 | | <rom name="missile.wav" size="5109776" crc="55a1fda4" sha1="1de495534447cee16d3db22b043d53b6d15f05fe" offset="0" /> |
| 208 | | </dataarea> |
| 209 | | </part> |
| 210 | | </software> |
| 211 | | |
| 212 | | <software name="panik"> |
| 213 | | <description>Panik</description> |
| 214 | | <year>198?</year> |
| 215 | | <publisher>Dick Smith</publisher> |
| 216 | | <info name="serial" value="X-7270" /> |
| 217 | | <part name="cass1" interface="vtech1_cass"> |
| 218 | | <dataarea name="cass" size="1708928"> |
| 219 | | <rom name="panik.wav" size="1708928" crc="8b8c4c5a" sha1="e9e2ae5c406f9ac79b186cb34b2849b9e2a477e3" offset="0" /> |
| 220 | | </dataarea> |
| 221 | | </part> |
| 222 | | </software> |
| 223 | | |
| 224 | | <software name="ppatrol"> |
| 225 | | <description>Planet Patrol</description> |
| 226 | | <year>198?</year> |
| 227 | | <publisher>Dick Smith</publisher> |
| 228 | | <info name="serial" value="X-7266" /> |
| 229 | | <part name="cass1" interface="vtech1_cass"> |
| 230 | | <dataarea name="cass" size="2107776"> |
| 231 | | <rom name="ppatrol.wav" size="2107776" crc="3eb828ed" sha1="b56777b732587856f554d978d844a3815ec50f69" offset="0" /> |
| 232 | | </dataarea> |
| 233 | | </part> |
| 234 | | </software> |
| 235 | | |
| 236 | | <software name="starblas"> |
| 237 | | <description>Star Blaster</description> |
| 238 | | <year>198?</year> |
| 239 | | <publisher>Dick Smith</publisher> |
| 240 | | <info name="serial" value="X-7247" /> |
| 241 | | <info name="usage" value="Needs 16k memory expansion" /> |
| 242 | | <part name="cass1" interface="vtech1_cass"> |
| 243 | | <dataarea name="cass" size="3327120"> |
| 244 | | <rom name="starblas.wav" size="3327120" crc="e6a5b55f" sha1="07715fd8104891d0d4d3b06b5609674ca93af920" offset="0" /> |
| 245 | | </dataarea> |
| 246 | | </part> |
| 247 | | </software> |
| 248 | | |
| 249 | | <software name="tennis"> |
| 250 | | <description>Tennis</description> |
| 251 | | <year>198?</year> |
| 252 | | <publisher>Dick Smith</publisher> |
| 253 | | <info name="serial" value="X-7264" /> |
| 254 | | <part name="cass1" interface="vtech1_cass"> |
| 255 | | <dataarea name="cass" size="2100784"> |
| 256 | | <rom name="tennis.wav" size="2100784" crc="3eb5ed00" sha1="6c2f2d4c9d60b6f2bd977eddd397d6dbdbfc52f1" offset="0" /> |
| 257 | | </dataarea> |
| 258 | | </part> |
| 259 | | </software> |
| 260 | | |
| 261 | | </softwarelist> |
trunk/src/emu/cpu/arcompact/arcompactdasm_ops.c
| r242380 | r242381 | |
| 139 | 139 | |
| 140 | 140 | UINT8 condition = op & 0x0000001f; |
| 141 | 141 | |
| 142 | | print("B(%s) %08x (%08x)", conditions[condition], pc + (address * 2), op & ~0xffffffdf); |
| 142 | print("B(%s) %08x (%08x)", conditions[condition], pc + (address * 2) + 2, op & ~0xffffffdf); |
| 143 | 143 | return size; |
| 144 | 144 | } |
| 145 | 145 | |
| r242380 | r242381 | |
| 153 | 153 | address |= ((op & 0x0000000f) >> 0) << 20; |
| 154 | 154 | if (address & 0x800000) address = -(address & 0x7fffff); |
| 155 | 155 | |
| 156 | | print("B %08x (%08x)", pc + (address * 2), op & ~0xffffffcf); |
| 156 | print("B %08x (%08x)", pc + (address * 2) + 2, op & ~0xffffffcf); |
| 157 | 157 | return size; |
| 158 | 158 | } |
| 159 | 159 | |
| r242380 | r242381 | |
| 169 | 169 | |
| 170 | 170 | UINT8 condition = op & 0x0000001f; |
| 171 | 171 | |
| 172 | | print("BL(%s) %08x (%08x)", conditions[condition], pc + (address *2), op & ~0xffffffdf ); |
| 172 | print("BL(%s) %08x (%08x)", conditions[condition], pc + (address *2) + 2, op & ~0xffffffdf ); |
| 173 | 173 | return size; |
| 174 | 174 | } |
| 175 | 175 | |
| r242380 | r242381 | |
| 183 | 183 | address |= ((op & 0x0000000f) >> 0) << 20; |
| 184 | 184 | if (address & 0x800000) address = -(address&0x7fffff); |
| 185 | 185 | |
| 186 | | print("BL %08x (%08x)", pc + (address *2), op & ~0xffffffcf ); |
| 186 | print("BL %08x (%08x)", pc + (address *2) + 2, op & ~0xffffffcf ); |
| 187 | 187 | return size; |
| 188 | 188 | } |
| 189 | 189 | |
| r242380 | r242381 | |
| 208 | 208 | int arcompact_handle01_01_01_0e_dasm(DASM_OPS_32) { GET_01_01_01_BRANCH_ADDR; print("BBIT0 (b & 1<<u6) == 0 (dst %08x) (%08x)", pc + (address * 2) + 4, op); return 4; } |
| 209 | 209 | int arcompact_handle01_01_01_0f_dasm(DASM_OPS_32) { GET_01_01_01_BRANCH_ADDR; print("BBIT1 (b & 1<<u6) != 0 (dst %08x) (%08x)", pc + (address * 2) + 4, op); return 4; } |
| 210 | 210 | |
| 211 | | |
| 211 | #if 0 |
| 212 | 212 | //#define EXPLICIT_EXTENSIONS |
| 213 | 213 | |
| 214 | 214 | static const char *datasize[0x4] = |
| r242380 | r242381 | |
| 216 | 216 | #ifdef EXPLICIT_EXTENSIONS |
| 217 | 217 | /* 00 */ ".L", // Dword (default) (can use no extension, using .L to be explicit) |
| 218 | 218 | #else |
| 219 | | /* 00 */ "",// Dword (default) |
| 219 | /* 00 */ " ",// Dword (default) |
| 220 | 220 | #endif |
| 221 | 221 | /* 01 */ ".B", // Byte |
| 222 | 222 | /* 02 */ ".W", // Word |
| r242380 | r242381 | |
| 228 | 228 | #ifdef EXPLICIT_EXTENSIONS |
| 229 | 229 | /* 00 */ ".ZX", // Zero Extend (can use no extension, using .ZX to be explicit) |
| 230 | 230 | else |
| 231 | | /* 00 */ "", // Zero Extend |
| 231 | /* 00 */ " ", // Zero Extend |
| 232 | 232 | #endif |
| 233 | 233 | /* 01 */ ".X" // Sign Extend |
| 234 | 234 | }; |
| r242380 | r242381 | |
| 238 | 238 | #ifdef EXPLICIT_EXTENSIONS |
| 239 | 239 | /* 00 */ ".AN", // No Writeback (can use no extension, using .AN to be explicit) |
| 240 | 240 | #else |
| 241 | | /* 00 */ "", // No Writeback |
| 241 | /* 00 */ " ", // No Writeback |
| 242 | 242 | #endif |
| 243 | 243 | /* 01 */ ".AW", // Writeback pre memory access |
| 244 | 244 | /* 02 */ ".AB", // Writeback post memory access |
| r242380 | r242381 | |
| 250 | 250 | #ifdef EXPLICIT_EXTENSIONS |
| 251 | 251 | /* 00 */ ".EN", // Data Cache Enabled (can use no extension, using .EN to be explicit) |
| 252 | 252 | #else |
| 253 | | /* 00 */ "", // Data Cache Enabled |
| 253 | /* 00 */ " ", // Data Cache Enabled |
| 254 | 254 | #endif |
| 255 | 255 | /* 01 */ ".DI" // Direct to Memory (Cache Bypass) |
| 256 | 256 | }; |
| 257 | 257 | |
| 258 | | static const char *flagbit[0x2] = |
| 259 | | { |
| 260 | | #ifdef EXPLICIT_EXTENSIONS |
| 261 | | /* 00 */ ".NF", // Don't Set Flags (can use no extension, using .NF to be explicit) |
| 262 | | #else |
| 263 | | /* 00 */ "", // Don't Set Flags |
| 264 | | #endif |
| 265 | | /* 01 */ ".F" // Set Flags |
| 266 | | }; |
| 267 | | |
| 268 | 258 | static const char *regnames[0x40] = |
| 269 | 259 | { |
| 270 | 260 | /* 00 */ "r0", |
| r242380 | r242381 | |
| 335 | 325 | /* 3e */ "r62(LIMM)", // use Long Immediate Data instead of register |
| 336 | 326 | /* 3f */ "r63(PCL)" |
| 337 | 327 | }; |
| 328 | #endif |
| 338 | 329 | |
| 339 | | |
| 340 | 330 | int arcompact_handle02_dasm(DASM_OPS_32) |
| 341 | 331 | { |
| 342 | 332 | // bitpos |
| r242380 | r242381 | |
| 344 | 334 | // fedc ba98 7654 3210 fedc ba98 7654 3210 |
| 345 | 335 | // fields |
| 346 | 336 | // 0001 0bbb ssss ssss SBBB DaaZ ZXAA AAAA |
| 347 | | int size = 4; |
| 348 | 337 | |
| 349 | | int A = (op & 0x0000003f) >> 0; //op &= ~0x0000003f; |
| 350 | | int X = (op & 0x00000040) >> 6; //op &= ~0x00000040; |
| 351 | | int Z = (op & 0x00000180) >> 7; //op &= ~0x00000180; |
| 352 | | int a = (op & 0x00000600) >> 9; //op &= ~0x00000600; |
| 353 | | int D = (op & 0x00000800) >> 11;// op &= ~0x00000800; |
| 354 | | int B = (op & 0x00007000) >> 12;// op &= ~0x00007000; |
| 355 | | int S = (op & 0x00008000) >> 15;// op &= ~0x00008000; |
| 356 | | int s = (op & 0x00ff0000) >> 16;// op &= ~0x00ff0000; |
| 357 | | int b = (op & 0x07000000) >> 24;// op &= ~0x07000000; |
| 338 | #if 0 |
| 339 | int A = (op & 0x0000003f >> 0); //op &= ~0x0000003f; |
| 340 | int X = (op & 0x00000040 >> 6); //op &= ~0x00000040; |
| 341 | int Z = (op & 0x00000180 >> 7); //op &= ~0x00000180; |
| 342 | int a = (op & 0x00000600 >> 9); //op &= ~0x00000600; |
| 343 | int D = (op & 0x00000800 >> 11);// op &= ~0x00000800; |
| 344 | int B = (op & 0x00007000 >> 12);// op &= ~0x00007000; |
| 345 | int S = (op & 0x00008000 >> 15);// op &= ~0x00008000; |
| 346 | int s = (op & 0x00ff0000 >> 16);// op &= ~0x00ff0000; |
| 347 | int b = (op & 0x07000000 >> 24);// op &= ~0x07000000; |
| 358 | 348 | |
| 359 | 349 | int breg = b | (B << 3); |
| 360 | 350 | int sdat = s | (S << 8); // todo - signed |
| 351 | #endif |
| 361 | 352 | |
| 362 | | UINT32 limm = 0; |
| 363 | | if (breg == LIMM_REG) |
| 364 | | { |
| 365 | | GET_LIMM_32; |
| 366 | | size = 8; |
| 367 | | } |
| 368 | 353 | |
| 369 | 354 | output += sprintf( output, "LD"); |
| 370 | | output += sprintf( output, "%s", datasize[Z]); |
| 371 | | output += sprintf( output, "%s", dataextend[X]); |
| 372 | | output += sprintf( output, "%s", addressmode[a]); |
| 373 | | output += sprintf( output, "%s", cachebit[D]); |
| 374 | | output += sprintf( output, " "); |
| 375 | | output += sprintf( output, "%s, ", regnames[A]); |
| 376 | | output += sprintf( output, "["); |
| 377 | | if (breg == LIMM_REG) output += sprintf( output, "(%08x), ", limm); |
| 378 | | else output += sprintf( output, "%s, ", regnames[breg]); |
| 379 | | output += sprintf( output, "%d", sdat); |
| 380 | | output += sprintf( output, "]"); |
| 355 | // output += sprintf( output, "%s", datasize[Z]); |
| 356 | // output += sprintf( output, "%s", dataextend[X]); |
| 357 | // output += sprintf( output, "%s", addressmode[a]); |
| 358 | // output += sprintf( output, "%s", cachebit[D]); |
| 359 | // output += sprintf( output, " "); |
| 360 | // output += sprintf( output, "%s, ", regnames[A]); |
| 361 | // output += sprintf( output, "["); |
| 362 | // output += sprintf( output, "%s(%d %d), ", regnames[breg], B, b); |
| 363 | // output += sprintf( output, "%d", sdat); |
| 364 | // output += sprintf( output, "]"); |
| 381 | 365 | |
| 382 | | return size; |
| 366 | return 4; |
| 383 | 367 | } |
| 384 | 368 | |
| 385 | 369 | int arcompact_handle03_dasm(DASM_OPS_32) |
| 386 | 370 | { |
| 387 | | int size = 4; |
| 388 | 371 | // bitpos |
| 389 | | // 1111 1111 1111 1111 0000 0000 0000 0000 |
| 390 | | // fedc ba98 7654 3210 fedc ba98 7654 3210 |
| 372 | // 11111 111 11111111 0 000 000000 0 00 00 0 |
| 373 | // fedcb a98 76543210 f edc ba9876 5 43 21 0 |
| 391 | 374 | // fields |
| 392 | | // 0001 1bbb ssss ssss SBBB CCCC CCDa aZZR |
| 393 | | int B = (op & 0x00007000) >> 12;// op &= ~0x00007000; |
| 394 | | int S = (op & 0x00008000) >> 15;// op &= ~0x00008000; |
| 395 | | int s = (op & 0x00ff0000) >> 16;// op &= ~0x00ff0000; |
| 396 | | int b = (op & 0x07000000) >> 24;// op &= ~0x07000000; |
| 375 | // 00011 bbb ssssssss S BBB CCCCCC D aa ZZ R |
| 397 | 376 | |
| 398 | | int breg = b | (B << 3); |
| 399 | | int sdat = s | (S << 8); // todo - signed |
| 377 | print("ST r+o (%08x)", op ); |
| 378 | return 4; |
| 379 | } |
| 400 | 380 | |
| 401 | | int R = (op & 0x00000001) >> 0; op &= ~0x00000001; |
| 402 | | int Z = (op & 0x00000006) >> 1; op &= ~0x00000006; |
| 403 | | int a = (op & 0x00000018) >> 3; op &= ~0x00000018; |
| 404 | | int D = (op & 0x00000020) >> 5; op &= ~0x00000020; |
| 405 | | int C = (op & 0x00000fc0) >> 6; op &= ~0x00000fc0; |
| 406 | | |
| 407 | | UINT32 limm = 0; |
| 408 | | if (breg == LIMM_REG) |
| 409 | | { |
| 410 | | GET_LIMM_32; |
| 411 | | size = 8; |
| 412 | | } |
| 381 | int arcompact_handle04_00_dasm(DASM_OPS_32) { print("ADD (%08x)", op); return 4;} |
| 382 | int arcompact_handle04_01_dasm(DASM_OPS_32) { print("ADC (%08x)", op); return 4;} |
| 383 | int arcompact_handle04_02_dasm(DASM_OPS_32) { print("SUB (%08x)", op); return 4;} |
| 384 | int arcompact_handle04_03_dasm(DASM_OPS_32) { print("SBC (%08x)", op); return 4;} |
| 385 | int arcompact_handle04_04_dasm(DASM_OPS_32) { print("AND (%08x)", op); return 4;} |
| 386 | int arcompact_handle04_05_dasm(DASM_OPS_32) { print("OR (%08x)", op); return 4;} |
| 387 | int arcompact_handle04_06_dasm(DASM_OPS_32) { print("BIC (%08x)", op); return 4;} |
| 388 | int arcompact_handle04_07_dasm(DASM_OPS_32) { print("XOR (%08x)", op); return 4;} |
| 389 | int arcompact_handle04_08_dasm(DASM_OPS_32) { print("MAX (%08x)", op); return 4;} |
| 390 | int arcompact_handle04_09_dasm(DASM_OPS_32) { print("MIN (%08x)", op); return 4;} |
| 391 | int arcompact_handle04_0a_dasm(DASM_OPS_32) { print("MOV (%08x)", op); return 4;} |
| 392 | int arcompact_handle04_0b_dasm(DASM_OPS_32) { print("TST (%08x)", op); return 4;} |
| 393 | int arcompact_handle04_0c_dasm(DASM_OPS_32) { print("CMP (%08x)", op); return 4;} |
| 394 | int arcompact_handle04_0d_dasm(DASM_OPS_32) { print("RCMP (%08x)", op); return 4;} |
| 395 | int arcompact_handle04_0e_dasm(DASM_OPS_32) { print("RSUB (%08x)", op); return 4;} |
| 396 | int arcompact_handle04_0f_dasm(DASM_OPS_32) { print("BSET (%08x)", op); return 4;} |
| 397 | int arcompact_handle04_10_dasm(DASM_OPS_32) { print("BCLR (%08x)", op); return 4;} |
| 398 | int arcompact_handle04_11_dasm(DASM_OPS_32) { print("BTST (%08x)", op); return 4;} |
| 399 | int arcompact_handle04_12_dasm(DASM_OPS_32) { print("BXOR (%08x)", op); return 4;} |
| 400 | int arcompact_handle04_13_dasm(DASM_OPS_32) { print("BMSK (%08x)", op); return 4;} |
| 401 | int arcompact_handle04_14_dasm(DASM_OPS_32) { print("ADD1 (%08x)", op); return 4;} |
| 402 | int arcompact_handle04_15_dasm(DASM_OPS_32) { print("ADD2 (%08x)", op); return 4;} |
| 403 | int arcompact_handle04_16_dasm(DASM_OPS_32) { print("ADD3 (%08x)", op); return 4;} |
| 404 | int arcompact_handle04_17_dasm(DASM_OPS_32) { print("SUB1 (%08x)", op); return 4;} |
| 405 | int arcompact_handle04_18_dasm(DASM_OPS_32) { print("SUB2 (%08x)", op); return 4;} |
| 406 | int arcompact_handle04_19_dasm(DASM_OPS_32) { print("SUB3 (%08x)", op); return 4;} |
| 407 | int arcompact_handle04_1a_dasm(DASM_OPS_32) { print("MPY (%08x)", op); return 4;} // * |
| 408 | int arcompact_handle04_1b_dasm(DASM_OPS_32) { print("MPYH (%08x)", op); return 4;} // * |
| 409 | int arcompact_handle04_1c_dasm(DASM_OPS_32) { print("MPYHU (%08x)", op); return 4;} // * |
| 410 | int arcompact_handle04_1d_dasm(DASM_OPS_32) { print("MPYU (%08x)", op); return 4;} // * |
| 413 | 411 | |
| 414 | 412 | |
| 415 | | output += sprintf( output, "ST"); |
| 416 | | output += sprintf( output, "%s", datasize[Z]); |
| 417 | | output += sprintf( output, "%s", addressmode[a]); |
| 418 | | output += sprintf( output, "%s", cachebit[D]); |
| 419 | | output += sprintf( output, " "); |
| 420 | 413 | |
| 421 | | output += sprintf( output, "%s, ", regnames[C]); |
| 422 | | if (breg == LIMM_REG) output += sprintf( output, "(%08x), ", limm); |
| 423 | | else output += sprintf( output, "%s, ", regnames[breg]); |
| 424 | | output += sprintf( output, "%d", sdat); |
| 425 | | |
| 426 | | if (R) output += sprintf( output, "(reserved bit set)"); |
| 427 | | |
| 428 | | |
| 429 | | return size; |
| 430 | | } |
| 431 | | |
| 432 | | |
| 433 | | int arcompact_handle04_helper_dasm(char *output, offs_t pc, UINT32 op, const UINT8* oprom, const char* optext, int ignore_dst, int b_reserved) |
| 414 | int arcompact_handle04_20_dasm(DASM_OPS_32) |
| 434 | 415 | { |
| 435 | | // PP |
| 436 | | // 0010 0bbb 00ii iiii FBBB CCCC CCAA AAAA |
| 416 | // todo, other bits (in none long immediate mode at least) |
| 417 | |
| 437 | 418 | int size = 4; |
| 419 | int C = (op & 0x00000fc0) >> 6; |
| 420 | UINT8 condition = op & 0x0000001f; |
| 438 | 421 | |
| 439 | | int p = (op & 0x00c00000) >> 22; op &= ~0x00c00000; |
| 440 | | int b = (op & 0x07000000) >> 24; op &= ~0x07000000; |
| 441 | | int B = (op & 0x00007000) >> 12; op &= ~0x00007000; |
| 442 | | int breg = b | (B << 3); |
| 443 | | int F = (op & 0x00008000) >> 15;op &= ~0x00008000; |
| 444 | | |
| 445 | | output += sprintf( output, "%s", optext); |
| 446 | | output += sprintf( output, "%s", flagbit[F]); |
| 447 | | // output += sprintf( output, " p(%d)", p); |
| 422 | op &= ~0x00000fc0; |
| 448 | 423 | |
| 449 | | |
| 450 | | if (!b_reserved) |
| 424 | if (C == LIMM_REG) |
| 451 | 425 | { |
| 452 | | output += sprintf(output, " %s, ", regnames[breg]); |
| 426 | UINT32 limm; |
| 427 | GET_LIMM_32; |
| 428 | size = 8; |
| 429 | |
| 430 | print("J(%s) %08x (%08x)", conditions[condition], limm, op); |
| 453 | 431 | } |
| 454 | 432 | else |
| 455 | 433 | { |
| 456 | | if (breg) output += sprintf(output, "reserved(%s), ", regnames[breg]); |
| 434 | print("J(%s) (r%d) (%08x)", conditions[condition], C, op); |
| 457 | 435 | } |
| 458 | 436 | |
| 459 | | |
| 460 | | if (p == 0) |
| 461 | | { |
| 462 | | // 0010 0bbb 00ii iiii FBBB CCCC CCAA AAAA |
| 463 | | |
| 464 | | int C = (op & 0x00000fc0) >> 6; op &= ~0x00000fc0; |
| 465 | | int A = (op & 0x0000003f) >> 0; op &= ~0x0000003f; |
| 466 | | |
| 467 | | if (C == LIMM_REG) |
| 468 | | { |
| 469 | | UINT32 limm; |
| 470 | | GET_LIMM_32; |
| 471 | | size = 8; |
| 472 | | output += sprintf( output, "(%08x) ", limm ); |
| 473 | | if (!ignore_dst) output += sprintf( output, "DST(%s)", regnames[A]); |
| 474 | | else |
| 475 | | { |
| 476 | | if (A) output += sprintf(output, "unused(%s)", regnames[A]); |
| 477 | | } |
| 478 | | } |
| 479 | | else |
| 480 | | { |
| 481 | | output += sprintf( output, "C(%s) ", regnames[C]); |
| 482 | | if (!ignore_dst) output += sprintf( output, "DST(%s)", regnames[A]); |
| 483 | | else |
| 484 | | { |
| 485 | | if (A) output += sprintf(output, "unused(%s)", regnames[A]); |
| 486 | | } |
| 487 | | |
| 488 | | } |
| 489 | | } |
| 490 | | else if (p == 1) |
| 491 | | { |
| 492 | | // 0010 0bbb 00ii iiii FBBB UUUU UUAA AAAA |
| 493 | | int U = (op & 0x00000fc0) >> 6; op &= ~0x00000fc0; |
| 494 | | int A = (op & 0x0000003f) >> 0; op &= ~0x0000003f; |
| 495 | | |
| 496 | | output += sprintf( output, "U(%02x) ", U ); |
| 497 | | if (!ignore_dst) output += sprintf( output, "DST(%s)", regnames[A]); |
| 498 | | else |
| 499 | | { |
| 500 | | if (A) output += sprintf(output, "unused(%s)", regnames[A]); |
| 501 | | } |
| 502 | | } |
| 503 | | else if (p == 2) |
| 504 | | { |
| 505 | | int S = (op & 0x00000fff) >> 0; op &= ~0x00000fff; |
| 506 | | output += sprintf( output, "S(%02x)", S); |
| 507 | | |
| 508 | | } |
| 509 | | else if (p == 3) |
| 510 | | { |
| 511 | | int M = (op & 0x00000020) >> 5; op &= ~0x00000020; |
| 512 | | int Q = (op & 0x0000001f) >> 0; op &= ~0x0000001f; |
| 513 | | |
| 514 | | output += sprintf( output, " M(%d)", M); |
| 515 | | output += sprintf( output, " Cond<%s> ", conditions[Q]); |
| 516 | | |
| 517 | | if (M == 0) |
| 518 | | { |
| 519 | | int C = (op & 0x00000fc0) >> 6; op &= ~0x00000fc0; |
| 520 | | output += sprintf( output, "C(%s)", regnames[C]); |
| 521 | | |
| 522 | | } |
| 523 | | else if (M == 1) |
| 524 | | { |
| 525 | | int U = (op & 0x00000fc0) >> 6; op &= ~0x00000fc0; |
| 526 | | output += sprintf( output, "U(%02x)", U); |
| 527 | | |
| 528 | | } |
| 529 | | |
| 530 | | } |
| 531 | | |
| 532 | 437 | return size; |
| 533 | 438 | } |
| 534 | 439 | |
| 535 | | int arcompact_handle04_00_dasm(DASM_OPS_32) |
| 536 | | { |
| 537 | | return arcompact_handle04_helper_dasm(output, pc, op, oprom, "ADD", 0,0); |
| 538 | | } |
| 539 | 440 | |
| 540 | | int arcompact_handle04_01_dasm(DASM_OPS_32) |
| 541 | | { |
| 542 | | return arcompact_handle04_helper_dasm(output, pc, op, oprom, "ADC", 0,0); |
| 543 | | } |
| 544 | 441 | |
| 545 | | int arcompact_handle04_02_dasm(DASM_OPS_32) |
| 546 | | { |
| 547 | | return arcompact_handle04_helper_dasm(output, pc, op, oprom, "SUB", 0,0); |
| 548 | | } |
| 442 | int arcompact_handle04_21_dasm(DASM_OPS_32) { print("Jcc.D (%08x)", op); return 4;} |
| 443 | int arcompact_handle04_22_dasm(DASM_OPS_32) { print("JLcc (%08x)", op); return 4;} |
| 444 | int arcompact_handle04_23_dasm(DASM_OPS_32) { print("JLcc.D (%08x)", op); return 4;} |
| 549 | 445 | |
| 550 | | int arcompact_handle04_03_dasm(DASM_OPS_32) |
| 551 | | { |
| 552 | | return arcompact_handle04_helper_dasm(output, pc, op, oprom, "SBC", 0,0); |
| 553 | | } |
| 554 | 446 | |
| 555 | | int arcompact_handle04_04_dasm(DASM_OPS_32) |
| 556 | | { |
| 557 | | return arcompact_handle04_helper_dasm(output, pc, op, oprom, "AND", 0,0); |
| 558 | | } |
| 559 | 447 | |
| 560 | | int arcompact_handle04_05_dasm(DASM_OPS_32) |
| 561 | | { |
| 562 | | return arcompact_handle04_helper_dasm(output, pc, op, oprom, "OR", 0,0); |
| 563 | | } |
| 564 | 448 | |
| 565 | | int arcompact_handle04_06_dasm(DASM_OPS_32) |
| 566 | | { |
| 567 | | return arcompact_handle04_helper_dasm(output, pc, op, oprom, "BIC", 0,0); |
| 568 | | } |
| 569 | | |
| 570 | | int arcompact_handle04_07_dasm(DASM_OPS_32) |
| 571 | | { |
| 572 | | return arcompact_handle04_helper_dasm(output, pc, op, oprom, "XOR", 0,0); |
| 573 | | } |
| 574 | | |
| 575 | | int arcompact_handle04_08_dasm(DASM_OPS_32) |
| 576 | | { |
| 577 | | return arcompact_handle04_helper_dasm(output, pc, op, oprom, "MAX", 0,0); |
| 578 | | } |
| 579 | | |
| 580 | | int arcompact_handle04_09_dasm(DASM_OPS_32) |
| 581 | | { |
| 582 | | return arcompact_handle04_helper_dasm(output, pc, op, oprom, "MIN", 0,0); |
| 583 | | } |
| 584 | | |
| 585 | | |
| 586 | | int arcompact_handle04_0a_dasm(DASM_OPS_32) |
| 587 | | { |
| 588 | | return arcompact_handle04_helper_dasm(output, pc, op, oprom, "MOV", 1,0); |
| 589 | | } |
| 590 | | |
| 591 | | int arcompact_handle04_0b_dasm(DASM_OPS_32) |
| 592 | | { |
| 593 | | return arcompact_handle04_helper_dasm(output, pc, op, oprom, "TST", 1,0); |
| 594 | | } |
| 595 | | |
| 596 | | int arcompact_handle04_0c_dasm(DASM_OPS_32) |
| 597 | | { |
| 598 | | return arcompact_handle04_helper_dasm(output, pc, op, oprom, "CMP", 1,0); |
| 599 | | } |
| 600 | | |
| 601 | | int arcompact_handle04_0d_dasm(DASM_OPS_32) |
| 602 | | { |
| 603 | | return arcompact_handle04_helper_dasm(output, pc, op, oprom, "RCMP", 1,0); |
| 604 | | } |
| 605 | | |
| 606 | | int arcompact_handle04_0e_dasm(DASM_OPS_32) |
| 607 | | { |
| 608 | | return arcompact_handle04_helper_dasm(output, pc, op, oprom, "RSUB", 0,0); |
| 609 | | } |
| 610 | | |
| 611 | | int arcompact_handle04_0f_dasm(DASM_OPS_32) |
| 612 | | { |
| 613 | | return arcompact_handle04_helper_dasm(output, pc, op, oprom, "BSET", 0,0); |
| 614 | | } |
| 615 | | |
| 616 | | int arcompact_handle04_10_dasm(DASM_OPS_32) |
| 617 | | { |
| 618 | | return arcompact_handle04_helper_dasm(output, pc, op, oprom, "BCLR", 0,0); |
| 619 | | } |
| 620 | | |
| 621 | | int arcompact_handle04_11_dasm(DASM_OPS_32) |
| 622 | | { |
| 623 | | return arcompact_handle04_helper_dasm(output, pc, op, oprom, "BTST", 0,0); |
| 624 | | } |
| 625 | | |
| 626 | | int arcompact_handle04_12_dasm(DASM_OPS_32) |
| 627 | | { |
| 628 | | return arcompact_handle04_helper_dasm(output, pc, op, oprom, "BXOR", 0,0); |
| 629 | | } |
| 630 | | |
| 631 | | int arcompact_handle04_13_dasm(DASM_OPS_32) |
| 632 | | { |
| 633 | | return arcompact_handle04_helper_dasm(output, pc, op, oprom, "BMSK", 0,0); |
| 634 | | } |
| 635 | | |
| 636 | | int arcompact_handle04_14_dasm(DASM_OPS_32) |
| 637 | | { |
| 638 | | return arcompact_handle04_helper_dasm(output, pc, op, oprom, "ADD1", 0,0); |
| 639 | | } |
| 640 | | |
| 641 | | int arcompact_handle04_15_dasm(DASM_OPS_32) |
| 642 | | { |
| 643 | | return arcompact_handle04_helper_dasm(output, pc, op, oprom, "ADD2", 0,0); |
| 644 | | } |
| 645 | | |
| 646 | | int arcompact_handle04_16_dasm(DASM_OPS_32) |
| 647 | | { |
| 648 | | return arcompact_handle04_helper_dasm(output, pc, op, oprom, "ADD3", 0,0); |
| 649 | | } |
| 650 | | |
| 651 | | int arcompact_handle04_17_dasm(DASM_OPS_32) |
| 652 | | { |
| 653 | | return arcompact_handle04_helper_dasm(output, pc, op, oprom, "SUB1", 0,0); |
| 654 | | } |
| 655 | | |
| 656 | | int arcompact_handle04_18_dasm(DASM_OPS_32) |
| 657 | | { |
| 658 | | return arcompact_handle04_helper_dasm(output, pc, op, oprom, "SUB2", 0,0); |
| 659 | | } |
| 660 | | |
| 661 | | int arcompact_handle04_19_dasm(DASM_OPS_32) |
| 662 | | { |
| 663 | | return arcompact_handle04_helper_dasm(output, pc, op, oprom, "SUB3", 0,0); |
| 664 | | } |
| 665 | | |
| 666 | | int arcompact_handle04_1a_dasm(DASM_OPS_32) |
| 667 | | { |
| 668 | | return arcompact_handle04_helper_dasm(output, pc, op, oprom, "MPY", 0,0); |
| 669 | | } // * |
| 670 | | |
| 671 | | int arcompact_handle04_1b_dasm(DASM_OPS_32) |
| 672 | | { |
| 673 | | return arcompact_handle04_helper_dasm(output, pc, op, oprom, "MPYH", 0,0); |
| 674 | | } // * |
| 675 | | |
| 676 | | int arcompact_handle04_1c_dasm(DASM_OPS_32) |
| 677 | | { |
| 678 | | return arcompact_handle04_helper_dasm(output, pc, op, oprom, "MPYHU", 0,0); |
| 679 | | } // * |
| 680 | | |
| 681 | | int arcompact_handle04_1d_dasm(DASM_OPS_32) |
| 682 | | { |
| 683 | | return arcompact_handle04_helper_dasm(output, pc, op, oprom, "MPYU", 0,0); |
| 684 | | } // * |
| 685 | | |
| 686 | | |
| 687 | | |
| 688 | | int arcompact_handle04_20_dasm(DASM_OPS_32) |
| 689 | | { |
| 690 | | return arcompact_handle04_helper_dasm(output, pc, op, oprom, "J", 1,1); |
| 691 | | } |
| 692 | | |
| 693 | | |
| 694 | | |
| 695 | | int arcompact_handle04_21_dasm(DASM_OPS_32) |
| 696 | | { |
| 697 | | return arcompact_handle04_helper_dasm(output, pc, op, oprom, "J.D", 1,1); |
| 698 | | } |
| 699 | | |
| 700 | | int arcompact_handle04_22_dasm(DASM_OPS_32) |
| 701 | | { |
| 702 | | return arcompact_handle04_helper_dasm(output, pc, op, oprom, "JL", 1,1); |
| 703 | | } |
| 704 | | |
| 705 | | int arcompact_handle04_23_dasm(DASM_OPS_32) |
| 706 | | { |
| 707 | | return arcompact_handle04_helper_dasm(output, pc, op, oprom, "JL.D", 1,1); |
| 708 | | } |
| 709 | | |
| 710 | | |
| 711 | | |
| 712 | | |
| 713 | 449 | int arcompact_handle04_28_dasm(DASM_OPS_32) { print("LPcc (%08x)", op); return 4;} |
| 714 | 450 | int arcompact_handle04_29_dasm(DASM_OPS_32) { print("FLAG (%08x)", op); return 4;} |
| 715 | 451 | int arcompact_handle04_2a_dasm(DASM_OPS_32) { print("LR (%08x)", op); return 4;} |
| r242380 | r242381 | |
| 742 | 478 | |
| 743 | 479 | |
| 744 | 480 | |
| 745 | | // format on these is.. |
| 746 | 481 | |
| 747 | | // 0010 0bbb aa11 0ZZX DBBB CCCC CCAA AAAA |
| 748 | | // note, bits 11 0ZZX are part of the sub-opcode # already - this is a special encoding |
| 749 | | int arcompact_handle04_3x_helper_dasm(char *output, offs_t pc, UINT32 op, const UINT8* oprom, int dsize, int extend) |
| 750 | | { |
| 751 | | int size = 4; |
| 752 | | output += sprintf(output, "LD"); |
| 753 | | output += sprintf(output, "%s", datasize[dsize]); |
| 754 | | output += sprintf(output, "%s", dataextend[extend]); |
| 755 | 482 | |
| 756 | | int mode = (op & 0x00c00000) >> 22; op &= ~0x00c00000; |
| 757 | | int b = (op & 0x07000000) >> 24; op &= ~0x07000000; |
| 758 | | int B = (op & 0x00007000) >> 12; op &= ~0x00007000; |
| 759 | | int breg = b | (B << 3); |
| 760 | | int D = (op & 0x00008000) >> 15;op &= ~0x00008000; |
| 761 | | int C = (op & 0x00000fc0) >> 6; op &= ~0x00000fc0; |
| 762 | | int A = (op & 0x0000003f) >> 0; op &= ~0x0000003f; |
| 483 | int arcompact_handle04_30_dasm(DASM_OPS_32) { print("LD r-r (basecase 0x30) (%08x)", op); return 4;} |
| 484 | int arcompact_handle04_31_dasm(DASM_OPS_32) { print("LD r-r (basecase 0x31) (%08x)", op); return 4;} |
| 485 | int arcompact_handle04_32_dasm(DASM_OPS_32) { print("LD r-r (basecase 0x32) (%08x)", op); return 4;} |
| 486 | int arcompact_handle04_33_dasm(DASM_OPS_32) { print("LD r-r (basecase 0x33) (%08x)", op); return 4;} |
| 487 | int arcompact_handle04_34_dasm(DASM_OPS_32) { print("LD r-r (basecase 0x34) (%08x)", op); return 4;} |
| 488 | int arcompact_handle04_35_dasm(DASM_OPS_32) { print("LD r-r (basecase 0x35) (%08x)", op); return 4;} |
| 489 | int arcompact_handle04_36_dasm(DASM_OPS_32) { print("LD r-r (basecase 0x36) (%08x)", op); return 4;} |
| 490 | int arcompact_handle04_37_dasm(DASM_OPS_32) { print("LD r-r (basecase 0x37) (%08x)", op); return 4;} |
| 763 | 491 | |
| 764 | | output += sprintf(output, "%s", addressmode[mode]); |
| 765 | | output += sprintf(output, "%s", cachebit[D]); |
| 766 | 492 | |
| 767 | | output += sprintf( output, "DST(%s)", regnames[A]); |
| 768 | | output += sprintf( output, "SRC1(%s)", regnames[breg]); |
| 769 | | output += sprintf( output, "SRC2(%s)", regnames[C]); |
| 770 | 493 | |
| 771 | | |
| 772 | 494 | |
| 773 | 495 | |
| 774 | | return size; |
| 775 | | |
| 776 | 496 | |
| 777 | | |
| 778 | | } |
| 779 | | |
| 780 | | int arcompact_handle04_30_dasm(DASM_OPS_32) { return arcompact_handle04_3x_helper_dasm(output,pc,op,oprom,0,0); } |
| 781 | | // ZZ value of 0x0 with X of 1 is illegal |
| 782 | | int arcompact_handle04_31_dasm(DASM_OPS_32) { return arcompact_handle04_3x_helper_dasm(output,pc,op,oprom,0,1); } |
| 783 | | int arcompact_handle04_32_dasm(DASM_OPS_32) { return arcompact_handle04_3x_helper_dasm(output,pc,op,oprom,1,0); } |
| 784 | | int arcompact_handle04_33_dasm(DASM_OPS_32) { return arcompact_handle04_3x_helper_dasm(output,pc,op,oprom,1,1); } |
| 785 | | int arcompact_handle04_34_dasm(DASM_OPS_32) { return arcompact_handle04_3x_helper_dasm(output,pc,op,oprom,2,0); } |
| 786 | | int arcompact_handle04_35_dasm(DASM_OPS_32) { return arcompact_handle04_3x_helper_dasm(output,pc,op,oprom,2,1); } |
| 787 | | // ZZ value of 0x3 is illegal |
| 788 | | int arcompact_handle04_36_dasm(DASM_OPS_32) { return arcompact_handle04_3x_helper_dasm(output,pc,op,oprom,3,0); } |
| 789 | | int arcompact_handle04_37_dasm(DASM_OPS_32) { return arcompact_handle04_3x_helper_dasm(output,pc,op,oprom,3,1); } |
| 790 | | |
| 791 | | |
| 792 | | |
| 793 | | |
| 794 | | |
| 795 | | |
| 796 | 497 | int arcompact_handle05_00_dasm(DASM_OPS_32) { print("ASL a <- b asl c (%08x)", op); return 4;} |
| 797 | 498 | int arcompact_handle05_01_dasm(DASM_OPS_32) { print("LSR a <- b lsr c (%08x)", op); return 4;} |
| 798 | 499 | int arcompact_handle05_02_dasm(DASM_OPS_32) { print("ASR a <- b asr c (%08x)", op); return 4;} |
trunk/src/mame/drivers/bwidow.c
| r242380 | r242381 | |
| 334 | 334 | m_lastdata = data; |
| 335 | 335 | } |
| 336 | 336 | |
| 337 | | WRITE8_MEMBER(bwidow_state::spacduel_coin_counter_w) |
| 338 | | { |
| 339 | | if (data == m_lastdata) return; |
| 340 | | set_led_status(machine(), 0, !BIT(data,5)); // start lamp |
| 341 | | set_led_status(machine(), 1, !BIT(data,4)); // select lamp |
| 342 | | coin_lockout_w(machine(), 0, !BIT(data,3)); |
| 343 | | coin_lockout_w(machine(), 1, !BIT(data,3)); |
| 344 | | coin_lockout_w(machine(), 2, !BIT(data,3)); |
| 345 | | coin_counter_w(machine(), 0, BIT(data,0)); |
| 346 | | coin_counter_w(machine(), 1, BIT(data,1)); |
| 347 | | coin_counter_w(machine(), 2, BIT(data,2)); |
| 348 | | m_lastdata = data; |
| 349 | | } |
| 350 | | |
| 351 | 337 | /************************************* |
| 352 | 338 | * |
| 353 | 339 | * Interrupt ack |
| r242380 | r242381 | |
| 393 | 379 | AM_RANGE(0x0900, 0x0907) AM_READ(spacduel_IN3_r) /* IN1 */ |
| 394 | 380 | AM_RANGE(0x0905, 0x0906) AM_WRITENOP /* ignore? */ |
| 395 | 381 | AM_RANGE(0x0a00, 0x0a00) AM_DEVREAD("earom", atari_vg_earom_device, read) |
| 396 | | AM_RANGE(0x0c00, 0x0c00) AM_WRITE(spacduel_coin_counter_w) /* coin out */ |
| 382 | // AM_RANGE(0x0c00, 0x0c00) AM_WRITE(coin_counter_w) /* coin out */ |
| 397 | 383 | AM_RANGE(0x0c80, 0x0c80) AM_DEVWRITE("avg", avg_device, go_w) |
| 398 | 384 | AM_RANGE(0x0d00, 0x0d00) AM_WRITENOP /* watchdog clear */ |
| 399 | 385 | AM_RANGE(0x0d80, 0x0d80) AM_DEVWRITE("avg", avg_device, reset_w) |
| 400 | 386 | AM_RANGE(0x0e00, 0x0e00) AM_WRITE(irq_ack_w) /* interrupt acknowledge */ |
| 401 | 387 | AM_RANGE(0x0e80, 0x0e80) AM_DEVWRITE("earom", atari_vg_earom_device, ctrl_w) |
| 402 | 388 | AM_RANGE(0x0f00, 0x0f3f) AM_DEVWRITE("earom", atari_vg_earom_device, write) |
| 403 | | AM_RANGE(0x1000, 0x10ff) AM_DEVREADWRITE("pokey1", pokey_device, read, write) |
| 404 | | AM_RANGE(0x1400, 0x14ff) AM_DEVREADWRITE("pokey2", pokey_device, read, write) |
| 389 | AM_RANGE(0x1000, 0x100f) AM_DEVREADWRITE("pokey1", pokey_device, read, write) |
| 390 | AM_RANGE(0x1400, 0x140f) AM_DEVREADWRITE("pokey2", pokey_device, read, write) |
| 405 | 391 | AM_RANGE(0x2000, 0x27ff) AM_RAM AM_SHARE("vectorram") AM_REGION("maincpu", 0x2000) |
| 406 | 392 | AM_RANGE(0x2800, 0x3fff) AM_ROM |
| 407 | 393 | AM_RANGE(0x4000, 0xffff) AM_ROM |
| r242380 | r242381 | |
| 950 | 936 | ROM_LOAD( "136002-125.n4", 0x0000, 0x0100, CRC(5903af03) SHA1(24bc0366f394ad0ec486919212e38be0f08d0239) ) |
| 951 | 937 | ROM_END |
| 952 | 938 | |
| 953 | | ROM_START( spacduel1 ) |
| 954 | | ROM_REGION( 0x10000, "maincpu", 0 ) |
| 955 | | /* Vector ROM */ |
| 956 | | ROM_LOAD( "136006-106.r7", 0x2800, 0x0800, CRC(691122fe) SHA1(f53be76a49dba319050ca7767de3441521910e83) ) |
| 957 | | ROM_LOAD( "136006-107.np7", 0x3000, 0x1000, CRC(d8dd0461) SHA1(58060b20b2511d30d2ec06479d21840bdd0b53c6) ) |
| 958 | | /* Program ROM */ |
| 959 | | ROM_LOAD( "136006-101.r1", 0x4000, 0x1000, CRC(cd239e6c) SHA1(b6143d979dd35a46bcb783bb0ac02d4dca30f0c2) ) |
| 960 | | ROM_LOAD( "136006-102.np1", 0x5000, 0x1000, CRC(4c451e8a) SHA1(c05c52bb08acccb60950a15f05c960c3bc163d3e) ) |
| 961 | | ROM_LOAD( "136006-103.m1", 0x6000, 0x1000, CRC(ee72da63) SHA1(d36d62cdf7fe76ee9cdbfc2e76ac5d90f22986ba) ) |
| 962 | | ROM_LOAD( "136006-104.kl1", 0x7000, 0x1000, CRC(e41b38a3) SHA1(9e8773e78d65d74db824cfd7108e7038f26757db) ) |
| 963 | | ROM_LOAD( "136006-105.j1", 0x8000, 0x1000, CRC(5652710f) SHA1(b15891d22a47ac3448d2ced40c04d0ab80606c7d) ) |
| 964 | | ROM_RELOAD( 0x9000, 0x1000 ) |
| 965 | | ROM_RELOAD( 0xa000, 0x1000 ) |
| 966 | | ROM_RELOAD( 0xb000, 0x1000 ) |
| 967 | | ROM_RELOAD( 0xc000, 0x1000 ) |
| 968 | | ROM_RELOAD( 0xd000, 0x1000 ) |
| 969 | | ROM_RELOAD( 0xe000, 0x1000 ) |
| 970 | | ROM_RELOAD( 0xf000, 0x1000 ) /* for reset/interrupt vectors */ |
| 971 | 939 | |
| 972 | | /* AVG PROM */ |
| 973 | | ROM_REGION( 0x100, "user1", 0 ) |
| 974 | | ROM_LOAD( "136002-125.n4", 0x0000, 0x0100, CRC(5903af03) SHA1(24bc0366f394ad0ec486919212e38be0f08d0239) ) |
| 975 | | ROM_END |
| 976 | 940 | |
| 977 | | ROM_START( spacduel0 ) |
| 978 | | ROM_REGION( 0x10000, "maincpu", 0 ) |
| 979 | | /* Vector ROM */ |
| 980 | | ROM_LOAD( "136006-006.r7", 0x2800, 0x0800, CRC(691122fe) SHA1(f53be76a49dba319050ca7767de3441521910e83) ) |
| 981 | | ROM_LOAD( "136006-007.np7", 0x3000, 0x1000, CRC(d8dd0461) SHA1(58060b20b2511d30d2ec06479d21840bdd0b53c6) ) |
| 982 | | /* Program ROM */ |
| 983 | | ROM_LOAD( "136006-001.r1", 0x4000, 0x1000, CRC(8f993ac8) SHA1(38b6d1ee3f19bb77b8aca24fbbae38684f194796) ) |
| 984 | | ROM_LOAD( "136006-002.np1", 0x5000, 0x1000, CRC(32cca051) SHA1(a01982e4362ba3dcdafd02d5403f8a190042e314) ) |
| 985 | | ROM_LOAD( "136006-003.m1", 0x6000, 0x1000, CRC(36624d57) SHA1(e66cbd747c2a298f402b91c2cf042a0697ff8296) ) |
| 986 | | ROM_LOAD( "136006-004.kl1", 0x7000, 0x1000, CRC(b322bf0b) SHA1(d67bf4e1e9b5b14b0455f37f9be11167aa3575c2) ) |
| 987 | | ROM_LOAD( "136006-005.j1", 0x8000, 0x1000, CRC(0edb1242) SHA1(5ec62e48d15c5baf0fb583e014cae2ec4bd5f5e4) ) |
| 988 | | ROM_RELOAD( 0x9000, 0x1000 ) |
| 989 | | ROM_RELOAD( 0xa000, 0x1000 ) |
| 990 | | ROM_RELOAD( 0xb000, 0x1000 ) |
| 991 | | ROM_RELOAD( 0xc000, 0x1000 ) |
| 992 | | ROM_RELOAD( 0xd000, 0x1000 ) |
| 993 | | ROM_RELOAD( 0xe000, 0x1000 ) |
| 994 | | ROM_RELOAD( 0xf000, 0x1000 ) /* for reset/interrupt vectors */ |
| 995 | | |
| 996 | | /* AVG PROM */ |
| 997 | | ROM_REGION( 0x100, "user1", 0 ) |
| 998 | | ROM_LOAD( "136002-125.n4", 0x0000, 0x0100, CRC(5903af03) SHA1(24bc0366f394ad0ec486919212e38be0f08d0239) ) |
| 999 | | ROM_END |
| 1000 | | |
| 1001 | | |
| 1002 | 941 | /************************************* |
| 1003 | 942 | * |
| 1004 | 943 | * Game drivers |
| 1005 | 944 | * |
| 1006 | 945 | *************************************/ |
| 1007 | 946 | |
| 1008 | | GAME( 1980, spacduel, 0, spacduel, spacduel, driver_device, 0, ROT0, "Atari", "Space Duel (version 2)", GAME_SUPPORTS_SAVE ) |
| 1009 | | GAME( 1980, spacduel1,spacduel, spacduel, spacduel, driver_device, 0, ROT0, "Atari", "Space Duel (version 1)", GAME_SUPPORTS_SAVE ) |
| 1010 | | GAME( 1980, spacduel0,spacduel, spacduel, spacduel, driver_device, 0, ROT0, "Atari", "Space Duel (prototype)", GAME_SUPPORTS_SAVE ) |
| 947 | GAME( 1980, spacduel, 0, spacduel, spacduel, driver_device, 0, ROT0, "Atari", "Space Duel", GAME_SUPPORTS_SAVE ) |
| 1011 | 948 | GAME( 1982, bwidow, 0, bwidow, bwidow, driver_device, 0, ROT0, "Atari", "Black Widow", GAME_SUPPORTS_SAVE ) |
| 1012 | 949 | GAME( 1982, gravitar, 0, gravitar, gravitar, driver_device, 0, ROT0, "Atari", "Gravitar (version 3)", GAME_SUPPORTS_SAVE ) |
| 1013 | 950 | GAME( 1982, gravitar2,gravitar, gravitar, gravitar, driver_device, 0, ROT0, "Atari", "Gravitar (version 2)", GAME_SUPPORTS_SAVE ) |
trunk/src/mame/drivers/peplus.c
| r242380 | r242381 | |
| 1834 | 1834 | ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */ |
| 1835 | 1835 | ROM_END |
| 1836 | 1836 | |
| 1837 | | ROM_START( pepp0046b ) /* Normal board : 10's or Better (PP0046) */ |
| 1837 | ROM_START( pepp0046b ) /* Normal board : 10's or Better (PP0043) */ |
| 1838 | 1838 | /* |
| 1839 | 1839 | PayTable 10s+ 2PR 3K STR FL FH 4K SF RF (Bonus) |
| 1840 | 1840 | ---------------------------------------------------------- |
| r242380 | r242381 | |
| 4721 | 4721 | ROM_LOAD( "cap656.u50", 0x0000, 0x0100, CRC(038cabc6) SHA1(c6514b4f9dbed6ab2631f563f7e00648661ebdbb) ) |
| 4722 | 4722 | ROM_END |
| 4723 | 4723 | |
| 4724 | | ROM_START( pemg0183 ) /* Normal board : Montana Choice Multi-Game MG0183 - Requires a Printer (not yet supported) */ |
| 4725 | | /* |
| 4726 | | MG0183 has 4 poker games: |
| 4727 | | Jacks or Better |
| 4728 | | Joker Wild Poker |
| 4729 | | Four of a Kind Bonus Poker |
| 4730 | | Deuces Wild Poker |
| 4731 | | |
| 4732 | | Came out of an IGT machine with belly glass calling it Montana Choice |
| 4733 | | */ |
| 4734 | | ROM_REGION( 0x10000, "maincpu", 0 ) |
| 4735 | | ROM_LOAD( "mg0183_756-782.u68", 0x00000, 0x10000, CRC(b89bcf75) SHA1(f436eb604c81ba6f08e1d11029ce8fff4f50dc3e) ) /* Stalls with "PRINTER ERROR" */ |
| 4736 | | |
| 4737 | | ROM_REGION( 0x020000, "gfx1", 0 ) |
| 4738 | | ROM_LOAD( "mro-cg1209.u72", 0x00000, 0x8000, CRC(39b0cc43) SHA1(0a95a7122e64fed7355e762ff2eda2a7246d4693) ) |
| 4739 | | ROM_LOAD( "mgo-cg1209.u73", 0x08000, 0x8000, CRC(5285ffab) SHA1(e959bf2fec46ee62d7a625eb64f74635fd697643) ) |
| 4740 | | ROM_LOAD( "mbo-cg1209.u74", 0x10000, 0x8000, CRC(4604ac16) SHA1(b3a7c6c807eb2be7f451d2fcbb6455a66c155a46) ) |
| 4741 | | ROM_LOAD( "mxo-cg1209.u75", 0x18000, 0x8000, CRC(da344256) SHA1(1320c4a8b48a9e61a4607e0a9d08083fde2bd334) ) |
| 4742 | | |
| 4743 | | ROM_REGION( 0x100, "proms", 0 ) |
| 4744 | | ROM_LOAD( "cap1144.u50", 0x0000, 0x0100, NO_DUMP ) |
| 4745 | | ROM_LOAD( "cap1426.u50", 0x0000, 0x0100, CRC(6c7c3462) SHA1(b5481b548f4db460d27a4bfebb08188f36ca0c11) ) |
| 4746 | | |
| 4747 | | ROM_REGION( 0x1000, "printer", 0 ) /* ROM from the printer driver PCB */ |
| 4748 | | ROM_LOAD( "lp_86.u9", 0x0000, 0x1000, CRC(cdd93c06) SHA1(96f0a6e231f355a0b82bb0e1e698edbd66ff3020) ) /* 2732 EPROM */ |
| 4749 | | ROM_END |
| 4750 | | |
| 4751 | 4724 | ROM_START( pemg0252 ) /* Normal board : Player's Choice Multi-Game MG0252 - Requires a Printer (not yet supported) */ |
| 4752 | 4725 | /* |
| 4753 | 4726 | MG0252 has 4 poker games: |
| r242380 | r242381 | |
| 8060 | 8033 | ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) ) |
| 8061 | 8034 | ROM_END |
| 8062 | 8035 | |
| 8063 | | ROM_START( pex2478p ) /* Superboard : Joker Poker - French (X002478P+XP000154) */ |
| 8064 | | /* |
| 8065 | | w/J w/oJ |
| 8066 | | PayTable Ks+ 2P 3K STR FL FH 4K SF RF 5K RF (Bonus) |
| 8067 | | ---------------------------------------------------------------- |
| 8068 | | PI104A 1 1 2 3 5 7 15 50 100 300 400 800 |
| 8069 | | % Range: 92.0-94.0% Optimum: 96.0% Hit Frequency: 44.5% |
| 8070 | | Programs Available: X002317P, X002478P |
| 8071 | | */ |
| 8072 | | ROM_REGION( 0x10000, "maincpu", 0 ) |
| 8073 | | ROM_LOAD( "xp000154.u67", 0x00000, 0x10000, CRC(f5f9ba4d) SHA1(d59f477c0a22065a62ffbe44d802b19078fefbb8) ) |
| 8074 | | |
| 8075 | | ROM_REGION( 0x10000, "user1", 0 ) |
| 8076 | | ROM_LOAD( "x002478p.u66", 0x00000, 0x10000, CRC(c667f425) SHA1(a47432af0915ac5369c0c2470bb8086f7f021058) ) /* Joker Poker - French */ |
| 8077 | | |
| 8078 | | ROM_REGION( 0x020000, "gfx1", 0 ) |
| 8079 | | ROM_LOAD( "mro-cg2452.u77", 0x00000, 0x8000, CRC(188cdf9e) SHA1(b575ee8c140589ed7d3c5c6cd21c2ea4806136c5) ) |
| 8080 | | ROM_LOAD( "mgo-cg2452.u78", 0x08000, 0x8000, CRC(eaae3a1c) SHA1(b46822c59f2176306fc7864f9c560e86d4237747) ) |
| 8081 | | ROM_LOAD( "mbo-cg2452.u79", 0x10000, 0x8000, CRC(38c94e65) SHA1(2bba913ed305062c232e58349c2ffff8b2ded563) ) |
| 8082 | | ROM_LOAD( "mxo-cg2452.u80", 0x18000, 0x8000, CRC(22080393) SHA1(885eecbd4a8255f8ffa01d3ad0f80ad6631c7c9a) ) |
| 8083 | | |
| 8084 | | ROM_REGION( 0x200, "proms", 0 ) |
| 8085 | | ROM_LOAD( "capx2307.u43", 0x0000, 0x0200, CRC(58d81338) SHA1(f0044ebbd0128d6fb74d850528ef02730c180f00) ) |
| 8086 | | ROM_END |
| 8087 | | |
| 8088 | | ROM_START( pex2479p ) /* Superboard : Joker Poker - French (X002479P+XP000154) */ |
| 8089 | | /* |
| 8090 | | w/J w/oJ |
| 8091 | | PayTable Ks+ 2P 3K STR FL FH 4K SF RF 5K RF (Bonus) |
| 8092 | | ---------------------------------------------------------------- |
| 8093 | | PI105A 1 1 2 3 4 5 20 40 100 200 400 800 |
| 8094 | | % Range: 91.0-93.0% Optimum: 95.0% Hit Frequency: 44.5% |
| 8095 | | Programs Available: X002318P, X002479P |
| 8096 | | */ |
| 8097 | | ROM_REGION( 0x10000, "maincpu", 0 ) |
| 8098 | | ROM_LOAD( "xp000154.u67", 0x00000, 0x10000, CRC(f5f9ba4d) SHA1(d59f477c0a22065a62ffbe44d802b19078fefbb8) ) |
| 8099 | | |
| 8100 | | ROM_REGION( 0x10000, "user1", 0 ) |
| 8101 | | ROM_LOAD( "x002479p.u66", 0x00000, 0x10000, CRC(e95b3550) SHA1(8bd702fb81cef0b9782a9e6b404917fc302ae1ef) ) /* Joker Poker - French */ |
| 8102 | | |
| 8103 | | ROM_REGION( 0x020000, "gfx1", 0 ) |
| 8104 | | ROM_LOAD( "mro-cg2452.u77", 0x00000, 0x8000, CRC(188cdf9e) SHA1(b575ee8c140589ed7d3c5c6cd21c2ea4806136c5) ) |
| 8105 | | ROM_LOAD( "mgo-cg2452.u78", 0x08000, 0x8000, CRC(eaae3a1c) SHA1(b46822c59f2176306fc7864f9c560e86d4237747) ) |
| 8106 | | ROM_LOAD( "mbo-cg2452.u79", 0x10000, 0x8000, CRC(38c94e65) SHA1(2bba913ed305062c232e58349c2ffff8b2ded563) ) |
| 8107 | | ROM_LOAD( "mxo-cg2452.u80", 0x18000, 0x8000, CRC(22080393) SHA1(885eecbd4a8255f8ffa01d3ad0f80ad6631c7c9a) ) |
| 8108 | | |
| 8109 | | ROM_REGION( 0x200, "proms", 0 ) |
| 8110 | | ROM_LOAD( "capx2307.u43", 0x0000, 0x0200, CRC(58d81338) SHA1(f0044ebbd0128d6fb74d850528ef02730c180f00) ) |
| 8111 | | ROM_END |
| 8112 | | |
| 8113 | | ROM_START( pex2480p ) /* Superboard : Joker Poker (Aces or Better) - French (X002480P+XP000154) */ |
| 8114 | | /* |
| 8115 | | w/J w/oJ |
| 8116 | | PayTable As 2P 3K STR FL FH 4K SF RF 5K RF (Bonus) |
| 8117 | | ---------------------------------------------------------------- |
| 8118 | | PI106B 1 1 2 3 5 6 20 50 100 200 500 1000 |
| 8119 | | % Range: 89.5-91.5% Optimum: 93.5% Hit Frequency: 39.2% |
| 8120 | | Programs Available: X002320P, X002480P |
| 8121 | | */ |
| 8122 | | ROM_REGION( 0x10000, "maincpu", 0 ) |
| 8123 | | ROM_LOAD( "xp000154.u67", 0x00000, 0x10000, CRC(f5f9ba4d) SHA1(d59f477c0a22065a62ffbe44d802b19078fefbb8) ) |
| 8124 | | |
| 8125 | | ROM_REGION( 0x10000, "user1", 0 ) |
| 8126 | | ROM_LOAD( "x002480p.u66", 0x00000, 0x10000, CRC(a1ec5a5f) SHA1(a272f9f3f11756a78247fc5aa58f09ea83604fc0) ) /* Joker Poker - French */ |
| 8127 | | |
| 8128 | | ROM_REGION( 0x020000, "gfx1", 0 ) |
| 8129 | | ROM_LOAD( "mro-cg2452.u77", 0x00000, 0x8000, CRC(188cdf9e) SHA1(b575ee8c140589ed7d3c5c6cd21c2ea4806136c5) ) |
| 8130 | | ROM_LOAD( "mgo-cg2452.u78", 0x08000, 0x8000, CRC(eaae3a1c) SHA1(b46822c59f2176306fc7864f9c560e86d4237747) ) |
| 8131 | | ROM_LOAD( "mbo-cg2452.u79", 0x10000, 0x8000, CRC(38c94e65) SHA1(2bba913ed305062c232e58349c2ffff8b2ded563) ) |
| 8132 | | ROM_LOAD( "mxo-cg2452.u80", 0x18000, 0x8000, CRC(22080393) SHA1(885eecbd4a8255f8ffa01d3ad0f80ad6631c7c9a) ) |
| 8133 | | |
| 8134 | | ROM_REGION( 0x200, "proms", 0 ) |
| 8135 | | ROM_LOAD( "capx2307.u43", 0x0000, 0x0200, CRC(58d81338) SHA1(f0044ebbd0128d6fb74d850528ef02730c180f00) ) |
| 8136 | | ROM_END |
| 8137 | | |
| 8138 | | ROM_START( pex2485p ) /* Superboard : Standard Draw Poker - French (X002480P+XP000154) */ |
| 8139 | | /* |
| 8140 | | PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus) |
| 8141 | | ---------------------------------------------------------- |
| 8142 | | PI103B 1 2 3 4 5 7 22 50 300 1000 |
| 8143 | | % Range: 90.4-92.4% Optimum: 94.4% Hit Frequency: 45.5% |
| 8144 | | Programs Available: X002485P |
| 8145 | | */ |
| 8146 | | ROM_REGION( 0x10000, "maincpu", 0 ) |
| 8147 | | ROM_LOAD( "xp000154.u67", 0x00000, 0x10000, CRC(f5f9ba4d) SHA1(d59f477c0a22065a62ffbe44d802b19078fefbb8) ) |
| 8148 | | |
| 8149 | | ROM_REGION( 0x10000, "user1", 0 ) |
| 8150 | | ROM_LOAD( "x002485p.u66", 0x00000, 0x10000, CRC(2ed40148) SHA1(f3c211955ef159da8ab14cfecbdfa2deaa3110ae) ) /* Standard Draw Poker - French */ |
| 8151 | | |
| 8152 | | ROM_REGION( 0x020000, "gfx1", 0 ) |
| 8153 | | ROM_LOAD( "mro-cg2452.u77", 0x00000, 0x8000, CRC(188cdf9e) SHA1(b575ee8c140589ed7d3c5c6cd21c2ea4806136c5) ) |
| 8154 | | ROM_LOAD( "mgo-cg2452.u78", 0x08000, 0x8000, CRC(eaae3a1c) SHA1(b46822c59f2176306fc7864f9c560e86d4237747) ) |
| 8155 | | ROM_LOAD( "mbo-cg2452.u79", 0x10000, 0x8000, CRC(38c94e65) SHA1(2bba913ed305062c232e58349c2ffff8b2ded563) ) |
| 8156 | | ROM_LOAD( "mxo-cg2452.u80", 0x18000, 0x8000, CRC(22080393) SHA1(885eecbd4a8255f8ffa01d3ad0f80ad6631c7c9a) ) |
| 8157 | | |
| 8158 | | ROM_REGION( 0x200, "proms", 0 ) |
| 8159 | | ROM_LOAD( "capx2307.u43", 0x0000, 0x0200, CRC(58d81338) SHA1(f0044ebbd0128d6fb74d850528ef02730c180f00) ) |
| 8160 | | ROM_END |
| 8161 | | |
| 8162 | 8036 | ROM_START( pekoc766 ) /* Superboard : Standard Draw Poker (PP0766) English / Spanish - Key On Credit */ |
| 8163 | 8037 | /* |
| 8164 | 8038 | PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus) |
| r242380 | r242381 | |
| 9175 | 9049 | GAMEL(1987, peip0120, peip0031, peplus, peplus_poker, peplus_state, nonplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (IP0120) Standard Draw Poker - French", 0, layout_pe_poker ) |
| 9176 | 9050 | |
| 9177 | 9051 | /* Normal board : Multi-Game - Player's Choice - Some sets require a printer (not yet supported) */ |
| 9178 | | GAMEL(1994, pemg0183, 0, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Montana Choice (MG0183) Multi-Game", GAME_NOT_WORKING, layout_pe_poker) /* Needs printer support */ |
| 9179 | 9052 | GAMEL(1994, pemg0252, 0, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Choice (MG0252) Multi-Game", GAME_NOT_WORKING, layout_pe_poker) /* Needs printer support */ |
| 9180 | 9053 | |
| 9181 | 9054 | /* Normal board : Blackjack */ |
| r242380 | r242381 | |
| 9323 | 9196 | GAMEL(1995, pex2421p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002421P+XP000064) Deuces Wild Bonus Poker - French", 0, layout_pe_poker ) |
| 9324 | 9197 | GAMEL(1995, pex2440p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002440P+XP000053) Deuces Wild Poker", 0, layout_pe_poker ) |
| 9325 | 9198 | GAMEL(1995, pex2461p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002461P+XP000055) Joker Poker (Two Pair or Better)", 0, layout_pe_poker ) |
| 9326 | | GAMEL(1995, pex2478p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002478P+XP000154) Joker Poker - French", 0, layout_pe_poker ) |
| 9327 | | GAMEL(1995, pex2479p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002479P+XP000154) Joker Poker - French", 0, layout_pe_poker ) |
| 9328 | | GAMEL(1995, pex2480p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002480P+XP000154) Joker Poker (Aces or Better) - French", 0, layout_pe_poker ) |
| 9329 | | GAMEL(1995, pex2485p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002485P+XP000154) Standard Draw Poker - French", 0, layout_pe_poker ) |
| 9330 | 9199 | |
| 9331 | 9200 | /* Superboard : Poker (Key On Credit) */ |
| 9332 | 9201 | GAMEL(1995, pekoc766, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0766 A5W-A6F) Standard Draw Poker", 0, layout_pe_poker ) |
trunk/src/mess/drivers/mathmagi.c
| r242380 | r242381 | |
| 3 | 3 | /*************************************************************************** |
| 4 | 4 | |
| 5 | 5 | APF Mathemagician |
| 6 | | * TMS1100 MP1030 - MCU |
| 7 | | * 2 x DS8870N - Hex LED Digit Driver |
| 8 | | * 2 x DS8861N - MOS-to-LED 5-Segment Driver |
| 6 | * TMS1100 MP1030 |
| 9 | 7 | |
| 10 | | This is a tabletop educational calculator. It came with plastic overlays |
| 11 | | for playing different kind of games. Refer to the manual on how to use it. |
| 12 | | In short, to start from scratch, press [SEL]. By default the device is in |
| 13 | | calculator teaching mode. If [SEL] is followed with 1-6 and then [NXT], |
| 14 | | one of the games is started. |
| 15 | | |
| 16 | | 1) Number Machine |
| 17 | | 2) Countin' On |
| 18 | | 3) Walk The Plank |
| 19 | | 4) Gooey Gumdrop |
| 20 | | 5) Football |
| 21 | | 6) Lunar Lander |
| 22 | | |
| 23 | | |
| 24 | | TODO: |
| 25 | | - some of the led symbols are probably wrong, output pla is unknown |
| 26 | | |
| 27 | 8 | ***************************************************************************/ |
| 28 | 9 | |
| 29 | 10 | #include "emu.h" |
| r242380 | r242381 | |
| 45 | 26 | m_button_matrix(*this, "IN") |
| 46 | 27 | { } |
| 47 | 28 | |
| 48 | | required_device<tms1xxx_cpu_device> m_maincpu; |
| 49 | | required_ioport_array<6> m_button_matrix; |
| 29 | required_device<cpu_device> m_maincpu; |
| 30 | optional_ioport_array<11> m_button_matrix; |
| 50 | 31 | |
| 51 | 32 | UINT16 m_o; |
| 52 | 33 | UINT16 m_r; |
| r242380 | r242381 | |
| 67 | 48 | |
| 68 | 49 | READ8_MEMBER(mathmagi_state::read_k) |
| 69 | 50 | { |
| 51 | printf("r"); |
| 52 | |
| 70 | 53 | UINT8 k = 0; |
| 71 | 54 | |
| 72 | 55 | // read selected button rows |
| 73 | | for (int i = 0; i < 6; i++) |
| 74 | | { |
| 75 | | const int ki[6] = { 3, 5, 6, 7, 9, 10 }; |
| 76 | | if (m_r >> ki[i] & 1) |
| 56 | for (int i = 0; i < 11; i++) |
| 57 | if (m_r >> i & 1) |
| 77 | 58 | k |= m_button_matrix[i]->read(); |
| 78 | | } |
| 79 | 59 | |
| 80 | 60 | return k; |
| 81 | 61 | } |
| 82 | 62 | |
| 83 | 63 | WRITE16_MEMBER(mathmagi_state::write_o) |
| 84 | 64 | { |
| 85 | | // O1-O7: led segments A-G |
| 86 | 65 | m_o = data; |
| 66 | |
| 67 | printf("\n%02X ",m_o); |
| 68 | for (int i=0;i<11;i++) printf("%d",m_r>>(10-i)&1); |
| 87 | 69 | } |
| 88 | 70 | |
| 89 | 71 | WRITE16_MEMBER(mathmagi_state::write_r) |
| 90 | 72 | { |
| 91 | | // R3,R5-R7,R9,R10: input mux |
| 92 | | // and outputs: |
| 93 | | for (int i = 0; i < 11; i++) |
| 94 | | { |
| 95 | | if (data >> i & 1) |
| 96 | | { |
| 97 | | // R8: custom math symbols digit |
| 98 | | // R9: custom equals digit |
| 99 | | // R10: lamps |
| 100 | | if (i >= 8) |
| 101 | | for (int j = 0; j < 8; j++) |
| 102 | | output_set_lamp_value(i*10 + j, m_o >> j & 1); |
| 103 | | |
| 104 | | // R0-R7: 7seg leds |
| 105 | | else |
| 106 | | output_set_digit_value(i, m_o >> 1 & 0x7f); |
| 107 | | } |
| 108 | | } |
| 109 | | |
| 110 | 73 | m_r = data; |
| 74 | |
| 75 | printf("\n%02X ",m_o); |
| 76 | for (int i=0;i<11;i++) printf("%d",m_r>>(10-i)&1); |
| 111 | 77 | } |
| 112 | 78 | |
| 113 | 79 | |
| r242380 | r242381 | |
| 128 | 94 | */ |
| 129 | 95 | |
| 130 | 96 | static INPUT_PORTS_START( mathmagi ) |
| 131 | | PORT_START("IN.0") // R3 |
| 132 | | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("1") |
| 133 | | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("2") |
| 134 | | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("3") |
| 135 | | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_MINUS_PAD) PORT_NAME("-") |
| 97 | PORT_START("IN.0") // R0 |
| 98 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_1) |
| 99 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_2) |
| 100 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_3) |
| 101 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_4) |
| 136 | 102 | |
| 137 | | PORT_START("IN.1") // R5 |
| 138 | | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_0) PORT_CODE(KEYCODE_0_PAD) PORT_NAME("0") |
| 139 | | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_SPACE) PORT_NAME("_") // blank |
| 140 | | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_R) PORT_NAME("r") |
| 141 | | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PLUS_PAD) PORT_NAME("+") |
| 103 | PORT_START("IN.1") // R1 |
| 104 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_5) |
| 105 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_6) |
| 106 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_7) |
| 107 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_8) |
| 142 | 108 | |
| 143 | | PORT_START("IN.2") // R6 |
| 144 | | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("4") |
| 145 | | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("5") |
| 146 | | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("6") |
| 147 | | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_ASTERISK) PORT_NAME(UTF8_MULTIPLY) |
| 109 | PORT_START("IN.2") // R2 |
| 110 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_9) |
| 111 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_0) |
| 112 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Q) |
| 113 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_W) |
| 148 | 114 | |
| 149 | | PORT_START("IN.3") // R7 |
| 150 | | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_S) PORT_NAME("SEL") |
| 151 | | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_N) PORT_NAME("NXT") |
| 152 | | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_C) PORT_NAME("?") // check |
| 153 | | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD) PORT_NAME("=") |
| 115 | PORT_START("IN.3") // R3 |
| 116 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_E) |
| 117 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_R) |
| 118 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_T) |
| 119 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Y) |
| 154 | 120 | |
| 155 | | PORT_START("IN.4") // R9 |
| 156 | | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_7) PORT_CODE(KEYCODE_7_PAD) PORT_NAME("7") |
| 157 | | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_8_PAD) PORT_NAME("8") |
| 158 | | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_9_PAD) PORT_NAME("9") |
| 159 | | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_SLASH_PAD) PORT_NAME(UTF8_DIVIDE) |
| 121 | PORT_START("IN.4") // R4 |
| 122 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_U) |
| 123 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_I) |
| 124 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_O) |
| 125 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_A) |
| 160 | 126 | |
| 161 | | PORT_START("IN.5") // R10 |
| 162 | | PORT_CONFNAME( 0x01, 0x00, "Players") |
| 163 | | PORT_CONFSETTING( 0x00, "1" ) |
| 164 | | PORT_CONFSETTING( 0x01, "2" ) |
| 165 | | PORT_BIT( 0x0e, IP_ACTIVE_HIGH, IPT_UNUSED ) |
| 127 | PORT_START("IN.5") // R5 |
| 128 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_S) |
| 129 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_D) |
| 130 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F) |
| 131 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_G) |
| 132 | |
| 133 | PORT_START("IN.6") // R6 |
| 134 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_H) |
| 135 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_J) |
| 136 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_K) |
| 137 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_L) |
| 138 | |
| 139 | PORT_START("IN.7") // R7 |
| 140 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Z) |
| 141 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_X) |
| 142 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_C) |
| 143 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_V) |
| 144 | |
| 145 | PORT_START("IN.8") // R8 |
| 146 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_B) |
| 147 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_N) |
| 148 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_M) |
| 149 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_COMMA) |
| 150 | |
| 151 | PORT_START("IN.9") // R9 |
| 152 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_0_PAD) |
| 153 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_1_PAD) |
| 154 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_2_PAD) |
| 155 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_3_PAD) |
| 156 | |
| 157 | PORT_START("IN.10") // R10 |
| 158 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_4_PAD) // 1P/2P switch? |
| 159 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_5_PAD) |
| 160 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_6_PAD) |
| 161 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_7_PAD) |
| 166 | 162 | INPUT_PORTS_END |
| 167 | 163 | |
| 168 | 164 | |
| r242380 | r242381 | |
| 182 | 178 | save_item(NAME(m_r)); |
| 183 | 179 | } |
| 184 | 180 | |
| 185 | | // LED segments A-G |
| 186 | | enum |
| 187 | | { |
| 188 | | lA = 0x02, |
| 189 | | lB = 0x04, |
| 190 | | lC = 0x08, |
| 191 | | lD = 0x10, |
| 192 | | lE = 0x20, |
| 193 | | lF = 0x40, |
| 194 | | lG = 0x80 |
| 195 | | }; |
| 196 | 181 | |
| 197 | 182 | static const UINT16 mathmagi_output_pla[0x20] = |
| 198 | 183 | { |
| 199 | 184 | /* O output PLA configuration currently unknown */ |
| 200 | | lA+lB+lC+lD+lE+lF, // 0 |
| 201 | | lB+lC, // 1 |
| 202 | | lA+lB+lG+lE+lD, // 2 |
| 203 | | lA+lB+lG+lC+lD, // 3 |
| 204 | | lF+lB+lG+lC, // 4 |
| 205 | | lA+lF+lG+lC+lD, // 5 |
| 206 | | lA+lF+lG+lC+lD+lE, // 6 |
| 207 | | lA+lB+lC, // 7 |
| 208 | | lA+lB+lC+lD+lE+lF+lG, // 8 |
| 209 | | lA+lB+lG+lF+lC+lD, // 9 |
| 210 | | lA+lB+lG+lE, // question mark |
| 211 | | lE+lG, // r |
| 212 | | lD, // underscore? |
| 213 | | lA+lF+lG+lE+lD, // E |
| 214 | | lG, // - |
| 215 | | 0, // empty |
| 216 | | 0, // empty |
| 217 | | lG, // lamp 4 or MATH - |
| 218 | | lD, // lamp 3 |
| 219 | | lF+lE+lD+lC+lG, // b |
| 220 | | lB, // lamp 2 |
| 221 | | lB+lG, // MATH + |
| 222 | | lB+lC, // MATH mul |
| 223 | | lF+lG+lB+lC+lD, // y |
| 224 | | lA, // lamp 1 |
| 225 | | lA+lG, // MATH div |
| 226 | | lA+lD, // EQUALS |
| 227 | | 0, // ? |
| 228 | | 0, // ? |
| 229 | | lE+lD+lC+lG, // o |
| 230 | | 0, // ? |
| 231 | | lA+lF+lE+lD+lC // G |
| 185 | 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, |
| 186 | 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, |
| 187 | 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, |
| 188 | 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f |
| 232 | 189 | }; |
| 233 | 190 | |
| 234 | 191 | |
| 235 | 192 | static MACHINE_CONFIG_START( mathmagi, mathmagi_state ) |
| 236 | 193 | |
| 237 | 194 | /* basic machine hardware */ |
| 238 | | MCFG_CPU_ADD("maincpu", TMS1100, MASTER_CLOCK) |
| 195 | // MCFG_CPU_ADD("maincpu", TMS1100, MASTER_CLOCK) |
| 196 | MCFG_CPU_ADD("maincpu", TMS1100, 10000) // temp |
| 239 | 197 | MCFG_TMS1XXX_OUTPUT_PLA(mathmagi_output_pla) |
| 240 | 198 | MCFG_TMS1XXX_READ_K_CB(READ8(mathmagi_state, read_k)) |
| 241 | 199 | MCFG_TMS1XXX_WRITE_O_CB(WRITE16(mathmagi_state, write_o)) |
| r242380 | r242381 | |
| 267 | 225 | ROM_END |
| 268 | 226 | |
| 269 | 227 | |
| 270 | | COMP( 1980, mathmagi, 0, 0, mathmagi, mathmagi, driver_device, 0, "APF Electronics Inc.", "Mathemagician", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW ) |
| 228 | COMP( 1980, mathmagi, 0, 0, mathmagi, mathmagi, driver_device, 0, "APF Electronics Inc.", "Mathemagician", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW | GAME_NOT_WORKING ) |
trunk/src/mess/drivers/vt240.c
| r242380 | r242381 | |
| 18 | 18 | ****************************************************************************/ |
| 19 | 19 | |
| 20 | 20 | #include "emu.h" |
| 21 | | |
| 22 | | #include "bus/rs232/rs232.h" |
| 23 | 21 | #include "cpu/i8085/i8085.h" |
| 24 | 22 | #include "cpu/t11/t11.h" |
| 25 | | #include "machine/clock.h" |
| 26 | | #include "machine/dec_lk201.h" |
| 27 | | #include "machine/i8251.h" |
| 28 | | #include "machine/mc68681.h" |
| 29 | | #include "machine/ms7004.h" |
| 30 | 23 | #include "machine/ram.h" |
| 31 | 24 | #include "video/upd7220.h" |
| 32 | 25 | |
| 33 | | #define VERBOSE_DBG 1 /* general debug messages */ |
| 34 | 26 | |
| 35 | | #define DBG_LOG(N,M,A) \ |
| 36 | | do { \ |
| 37 | | if(VERBOSE_DBG>=N) \ |
| 38 | | { \ |
| 39 | | logerror("%11.6f at %s: ",machine().time().as_double(),machine().describe_context()); \ |
| 40 | | logerror A; \ |
| 41 | | } \ |
| 42 | | } while (0) |
| 43 | | |
| 44 | 27 | class vt240_state : public driver_device |
| 45 | 28 | { |
| 46 | 29 | public: |
| 47 | 30 | vt240_state(const machine_config &mconfig, device_type type, const char *tag) |
| 48 | 31 | : driver_device(mconfig, type, tag), |
| 49 | 32 | m_maincpu(*this, "maincpu"), |
| 50 | | m_i8251(*this, "i8251"), |
| 51 | | m_duart(*this, "duart"), |
| 52 | 33 | m_hgdc(*this, "upd7220"), |
| 53 | 34 | m_video_ram(*this, "video_ram"){ } |
| 54 | 35 | |
| 55 | 36 | required_device<cpu_device> m_maincpu; |
| 56 | | |
| 57 | | required_device<i8251_device> m_i8251; |
| 58 | | DECLARE_WRITE_LINE_MEMBER(write_keyboard_clock); |
| 59 | | |
| 60 | | required_device<mc68681_device> m_duart; |
| 61 | | |
| 62 | 37 | required_device<upd7220_device> m_hgdc; |
| 63 | 38 | DECLARE_READ8_MEMBER( test_r ); |
| 64 | 39 | DECLARE_READ8_MEMBER( pcg_r ); |
| r242380 | r242381 | |
| 69 | 44 | //UINT8 *m_char_rom; |
| 70 | 45 | |
| 71 | 46 | required_shared_ptr<UINT16> m_video_ram; |
| 72 | | |
| 73 | 47 | DECLARE_DRIVER_INIT(vt240); |
| 74 | 48 | virtual void machine_reset(); |
| 75 | 49 | INTERRUPT_GEN_MEMBER(vt240_irq); |
| 76 | 50 | UPD7220_DRAW_TEXT_LINE_MEMBER( hgdc_draw_text ); |
| 77 | 51 | }; |
| 78 | 52 | |
| 79 | | WRITE_LINE_MEMBER(vt240_state::write_keyboard_clock) |
| 80 | | { |
| 81 | | m_i8251->write_txc(state); |
| 82 | | m_i8251->write_rxc(state); |
| 83 | | } |
| 84 | | |
| 85 | 53 | /* TODO */ |
| 86 | 54 | UPD7220_DRAW_TEXT_LINE_MEMBER( vt240_state::hgdc_draw_text ) |
| 87 | 55 | { |
| r242380 | r242381 | |
| 133 | 101 | } |
| 134 | 102 | |
| 135 | 103 | |
| 136 | | // PDF page 78 (4-25) |
| 137 | | static ADDRESS_MAP_START( vt240_mem, AS_PROGRAM, 16, vt240_state ) |
| 104 | static ADDRESS_MAP_START(vt240_mem, AS_PROGRAM, 8, vt240_state) |
| 138 | 105 | ADDRESS_MAP_UNMAP_HIGH |
| 139 | | AM_RANGE (0000000, 0077777) AM_ROM |
| 140 | | // 0170xxx MEM MAP/8085 decoder |
| 141 | | AM_RANGE (0171000, 0171003) AM_DEVREADWRITE8("i8251", i8251_device, data_r, data_w, 0x00ff) |
| 142 | | AM_RANGE (0171004, 0171007) AM_DEVREADWRITE8("i8251", i8251_device, status_r, control_w, 0x00ff) |
| 143 | | AM_RANGE (0172000, 0172077) AM_DEVREADWRITE8("duart", mc68681_device, read, write, 0xff) |
| 144 | | // 0173000 Video logic |
| 145 | | // 0174000 Video logic |
| 146 | | // 017500x Video logic |
| 147 | | // 0176xxx NVR |
| 148 | | // 017700x System comm logic |
| 149 | | ADDRESS_MAP_END |
| 150 | | |
| 151 | | // PDF page 134 (6-9) |
| 152 | | #if 0 |
| 153 | | static ADDRESS_MAP_START(vt240_char_mem, AS_PROGRAM, 8, vt240_state) |
| 154 | | ADDRESS_MAP_UNMAP_HIGH |
| 155 | | AM_RANGE(0x0000, 0x3fff) AM_ROM AM_REGION("charcpu", 0) |
| 156 | | AM_RANGE(0x4000, 0x5fff) AM_ROM AM_REGION("charcpu", 0x8000) |
| 106 | AM_RANGE(0x0000, 0x3fff) AM_ROM AM_REGION("ipl", 0) |
| 107 | AM_RANGE(0x4000, 0x5fff) AM_ROM AM_REGION("ipl", 0x8000) |
| 157 | 108 | AM_RANGE(0x8000, 0x87ff) AM_RAM |
| 158 | 109 | ADDRESS_MAP_END |
| 159 | 110 | |
| 160 | | static ADDRESS_MAP_START(vt240_char_io, AS_IO, 8, vt240_state) |
| 111 | static ADDRESS_MAP_START(vt240_io, AS_IO, 8, vt240_state) |
| 161 | 112 | ADDRESS_MAP_UNMAP_HIGH |
| 162 | 113 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 163 | 114 | AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("upd7220", upd7220_device, read, write) |
| 164 | 115 | AM_RANGE(0x20, 0x20) AM_READ(test_r) |
| 165 | 116 | //AM_RANGE(0x30, 0x30) AM_READWRITE(pcg_r,pcg_w) // 0x30 PCG |
| 166 | 117 | ADDRESS_MAP_END |
| 167 | | #endif |
| 168 | 118 | |
| 119 | |
| 169 | 120 | static ADDRESS_MAP_START( upd7220_map, AS_0, 16, vt240_state) |
| 170 | 121 | AM_RANGE(0x00000, 0x3ffff) AM_RAM AM_SHARE("video_ram") |
| 171 | 122 | ADDRESS_MAP_END |
| r242380 | r242381 | |
| 184 | 135 | //device.execute().set_input_line(I8085_RST65_LINE, ASSERT_LINE); |
| 185 | 136 | } |
| 186 | 137 | |
| 187 | | static const gfx_layout vt240_chars_8x10 = |
| 138 | static const gfx_layout vt240_chars_8x8 = |
| 188 | 139 | { |
| 189 | 140 | 8,10, |
| 190 | 141 | RGN_FRAC(1,1), |
| r242380 | r242381 | |
| 192 | 143 | { 0 }, |
| 193 | 144 | { STEP8(0,1) }, |
| 194 | 145 | { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8, 8*8, 9*8 }, |
| 195 | | 8*10 |
| 146 | 8*16 |
| 196 | 147 | }; |
| 197 | 148 | |
| 198 | 149 | static GFXDECODE_START( vt240 ) |
| 199 | | GFXDECODE_ENTRY( "charcpu", 0x338*10-2, vt240_chars_8x10, 0, 8 ) |
| 150 | GFXDECODE_ENTRY( "ipl", 0x0000, vt240_chars_8x8, 0, 8 ) |
| 200 | 151 | GFXDECODE_END |
| 201 | 152 | |
| 202 | | static MACHINE_CONFIG_FRAGMENT( vt240_motherboard ) |
| 203 | | MCFG_CPU_ADD("maincpu", T11, XTAL_7_3728MHz) // confirm |
| 153 | static MACHINE_CONFIG_START( vt240, vt240_state ) |
| 154 | /* basic machine hardware */ |
| 155 | MCFG_CPU_ADD("maincpu", I8085A, XTAL_16MHz / 4) |
| 204 | 156 | MCFG_CPU_PROGRAM_MAP(vt240_mem) |
| 205 | | MCFG_T11_INITIAL_MODE(5 << 13) |
| 206 | | |
| 207 | | /* |
| 208 | | MCFG_CPU_ADD("charcpu", I8085A, XTAL_16MHz / 4) |
| 209 | | MCFG_CPU_PROGRAM_MAP(vt240_char_mem) |
| 210 | | MCFG_CPU_IO_MAP(vt240_char_io) |
| 157 | MCFG_CPU_IO_MAP(vt240_io) |
| 211 | 158 | MCFG_CPU_VBLANK_INT_DRIVER("screen", vt240_state, vt240_irq) |
| 212 | | */ |
| 213 | 159 | |
| 160 | |
| 161 | /* video hardware */ |
| 214 | 162 | MCFG_SCREEN_ADD("screen", RASTER) |
| 215 | 163 | MCFG_SCREEN_REFRESH_RATE(50) |
| 216 | 164 | MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */ |
| 217 | 165 | MCFG_SCREEN_SIZE(640, 480) |
| 218 | 166 | MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1) |
| 219 | | // MCFG_VIDEO_START_OVERRIDE(vt240_state,vt240) |
| 167 | // MCFG_VIDEO_START_OVERRIDE(vt240_state,vt240) |
| 220 | 168 | MCFG_SCREEN_UPDATE_DEVICE("upd7220", upd7220_device, screen_update) |
| 221 | 169 | MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette") |
| 222 | 170 | MCFG_GFXDECODE_ADD("gfxdecode", "palette", vt240) |
| r242380 | r242381 | |
| 224 | 172 | MCFG_DEVICE_ADD("upd7220", UPD7220, XTAL_4MHz / 4) |
| 225 | 173 | MCFG_DEVICE_ADDRESS_MAP(AS_0, upd7220_map) |
| 226 | 174 | MCFG_UPD7220_DRAW_TEXT_CALLBACK_OWNER(vt240_state, hgdc_draw_text) |
| 227 | | |
| 228 | | MCFG_MC68681_ADD("duart", XTAL_3_6864MHz) /* 2681 duart (not 68681!) */ |
| 229 | | // MCFG_MC68681_IRQ_CALLBACK(WRITELINE(dectalk_state, dectalk_duart_irq_handler)) |
| 230 | | MCFG_MC68681_A_TX_CALLBACK(DEVWRITELINE("rs232", rs232_port_device, write_txd)) |
| 231 | | // MCFG_MC68681_B_TX_CALLBACK(WRITELINE(dectalk_state, dectalk_duart_txa)) |
| 232 | | // MCFG_MC68681_INPORT_CALLBACK(READ8(dectalk_state, dectalk_duart_input)) |
| 233 | | // MCFG_MC68681_OUTPORT_CALLBACK(WRITE8(dectalk_state, dectalk_duart_output)) |
| 234 | | // MCFG_I8251_DTR_HANDLER(DEVWRITELINE("rs232", rs232_port_device, write_dtr)) |
| 235 | | // MCFG_I8251_RTS_HANDLER(DEVWRITELINE("rs232", rs232_port_device, write_rts)) |
| 236 | | |
| 237 | | MCFG_RS232_PORT_ADD("rs232", default_rs232_devices, "null_modem") |
| 238 | | MCFG_RS232_RXD_HANDLER(DEVWRITELINE("duart", mc68681_device, rx_a_w)) |
| 239 | | // MCFG_RS232_DSR_HANDLER(DEVWRITELINE("duart", mc68681_device, ipX_w)) |
| 240 | 175 | MACHINE_CONFIG_END |
| 241 | 176 | |
| 242 | | static MACHINE_CONFIG_START( mc7105, vt240_state ) |
| 243 | | MCFG_FRAGMENT_ADD(vt240_motherboard) |
| 244 | | |
| 245 | | // serial connection to MS7004 keyboard |
| 246 | | MCFG_DEVICE_ADD("i8251", I8251, 0) |
| 247 | | // MCFG_I8251_RXRDY_HANDLER(DEVWRITELINE("pic8259", pic8259_device, ir1_w)) |
| 248 | | |
| 249 | | MCFG_DEVICE_ADD("ms7004", MS7004, 0) |
| 250 | | MCFG_MS7004_TX_HANDLER(DEVWRITELINE("i8251", i8251_device, write_rxd)) |
| 251 | | |
| 252 | | // baud rate is supposed to be 4800 but keyboard is slightly faster |
| 253 | | MCFG_DEVICE_ADD("keyboard_clock", CLOCK, 4960*16) |
| 254 | | MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(vt240_state, write_keyboard_clock)) |
| 255 | | MACHINE_CONFIG_END |
| 256 | | |
| 257 | 177 | /* ROM definition */ |
| 258 | 178 | ROM_START( mc7105 ) |
| 259 | | ROM_REGION( 0x10000, "charcpu", ROMREGION_ERASEFF ) |
| 179 | ROM_REGION( 0x10000, "ipl", ROMREGION_ERASEFF ) |
| 260 | 180 | ROM_LOAD( "027.bin", 0x8000, 0x8000, CRC(a159b412) SHA1(956097ccc2652d494258b3682498cfd3096d7d4f)) |
| 261 | 181 | ROM_LOAD( "028.bin", 0x0000, 0x8000, CRC(b253151f) SHA1(22ffeef8eb5df3c38bfe91266f26d1e7822cdb53)) |
| 262 | 182 | |
| 263 | | ROM_REGION( 0x20000, "maincpu", ROMREGION_ERASEFF ) |
| 183 | ROM_REGION( 0x20000, "subcpu", ROMREGION_ERASEFF ) |
| 264 | 184 | ROM_LOAD16_BYTE( "029.bin", 0x00000, 0x8000, CRC(4a6db217) SHA1(47637325609ea19ffab61fe31e2700d72fa50729)) |
| 265 | 185 | ROM_LOAD16_BYTE( "031.bin", 0x00001, 0x8000, CRC(47129579) SHA1(39de9e2e26f90c5da5e72a09ff361c1a94b9008a)) |
| 266 | 186 | ROM_LOAD16_BYTE( "030.bin", 0x10000, 0x8000, CRC(05fd7b75) SHA1(2ad8c14e76accfa1b9b8748c58e9ebbc28844a47)) |
| r242380 | r242381 | |
| 270 | 190 | /* Driver */ |
| 271 | 191 | DRIVER_INIT_MEMBER(vt240_state,vt240) |
| 272 | 192 | { |
| 273 | | UINT8 *ROM = memregion("charcpu")->base(); |
| 193 | UINT8 *ROM = memregion("ipl")->base(); |
| 274 | 194 | |
| 275 | 195 | /* patch T11 check */ |
| 276 | 196 | ROM[0x09d] = 0x00; |
| 277 | 197 | ROM[0x09e] = 0x00; |
| 278 | 198 | ROM[0x09f] = 0x00; |
| 279 | 199 | |
| 280 | | /* ROM checksum */ |
| 200 | /* ROM checksum*/ |
| 281 | 201 | ROM[0x15c] = 0x00; |
| 282 | 202 | ROM[0x15d] = 0x00; |
| 283 | 203 | ROM[0x15e] = 0x00; |
| r242380 | r242381 | |
| 286 | 206 | /* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ |
| 287 | 207 | //COMP( 1983, vt240, 0, 0, vt220, vt220, driver_device, 0, "Digital Equipment Corporation", "VT240", GAME_NOT_WORKING | GAME_NO_SOUND) |
| 288 | 208 | //COMP( 1983, vt241, 0, 0, vt220, vt220, driver_device, 0, "Digital Equipment Corporation", "VT241", GAME_NOT_WORKING | GAME_NO_SOUND) |
| 289 | | COMP( 1983, mc7105, 0, 0, mc7105, vt240, vt240_state, vt240, "Elektronika", "MC7105", GAME_NOT_WORKING | GAME_NO_SOUND) |
| 209 | COMP( 1983, mc7105, 0, 0, vt240, vt240, vt240_state, vt240, "Elektronika", "MC7105", GAME_NOT_WORKING | GAME_NO_SOUND) |
trunk/src/mess/machine/victor9kb.c
| r242380 | r242381 | |
| 383 | 383 | //------------------------------------------------- |
| 384 | 384 | |
| 385 | 385 | static ADDRESS_MAP_START( victor9k_keyboard_io, AS_IO, 8, victor_9000_keyboard_t ) |
| 386 | // P0 is unconnected on pcb |
| 386 | 387 | AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READWRITE(kb_p1_r, kb_p1_w) |
| 387 | 388 | AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_WRITE(kb_p2_w) |
| 388 | 389 | AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(kb_t1_r) |
| r242380 | r242381 | |
| 416 | 417 | |
| 417 | 418 | INPUT_PORTS_START( victor9k_keyboard ) |
| 418 | 419 | PORT_START("Y0") |
| 419 | | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 420 | | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 421 | | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 422 | | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 423 | | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 424 | | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 425 | | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 426 | | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 420 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("CLR/HOME") PORT_CODE(KEYCODE_HOME) // S12 |
| 421 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("\xc2\xb1/\xc2\xb0/"UTF8_SMALL_PI) PORT_CODE(KEYCODE_TILDE) // +-, degree, pi // S13 |
| 422 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME(UTF8_UP" SCRL "UTF8_DOWN) PORT_CODE(KEYCODE_SCRLOCK) // unicode arrows // S33 |
| 423 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("TAB/BACK") PORT_CODE(KEYCODE_TAB) PORT_CHAR(9) // S34 |
| 424 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("RVS On-Off/ESC") PORT_CODE(KEYCODE_ESC) PORT_CHAR(27) // S54 |
| 425 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("LOCK/CAPSLOCK") PORT_CODE(KEYCODE_CAPSLOCK) // S55 |
| 426 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("UNDL On-Off") PORT_CODE(KEYCODE_PRTSCR) // need better key code // S75 |
| 427 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Left Shift") PORT_CODE(KEYCODE_LSHIFT) PORT_CHAR(UCHAR_SHIFT_1) // S76 |
| 427 | 428 | |
| 428 | 429 | PORT_START("Y1") |
| 429 | | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 430 | | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 431 | | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 432 | | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 433 | | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 434 | | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 435 | | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 436 | | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 430 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("1 ! |") PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHAR('!') PORT_CHAR('|') // S14 |
| 431 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("2 @ <") PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_CHAR('@') PORT_CHAR('<') // S15 |
| 432 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Q") PORT_CODE(KEYCODE_Q) PORT_CHAR('q') PORT_CHAR('Q') // S35 |
| 433 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("W") PORT_CODE(KEYCODE_W) PORT_CHAR('w') PORT_CHAR('W') // S36 |
| 434 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("A") PORT_CODE(KEYCODE_A) PORT_CHAR('a') PORT_CHAR('A') // S56 |
| 435 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("S") PORT_CODE(KEYCODE_S) PORT_CHAR('s') PORT_CHAR('S') // S57 |
| 436 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("UNUSED S75") // unused // S75 |
| 437 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Z") PORT_CODE(KEYCODE_Z) PORT_CHAR('z') PORT_CHAR('Z') // S76 |
| 437 | 438 | |
| 438 | 439 | PORT_START("Y2") |
| 439 | | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 440 | | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 441 | | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 442 | | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 443 | | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 444 | | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 445 | | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 446 | | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 440 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("3 # >") PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHAR('3') PORT_CHAR('3')// S16 |
| 441 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("4 $ \xc2\xb7") PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_CHAR('$') // centered closed dot U+00B7 // S17 |
| 442 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("E") PORT_CODE(KEYCODE_E) PORT_CHAR('e') PORT_CHAR('E') // S37 |
| 443 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("R") PORT_CODE(KEYCODE_R) PORT_CHAR('r') PORT_CHAR('R') // S38 |
| 444 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("D") PORT_CODE(KEYCODE_D) PORT_CHAR('d') PORT_CHAR('D') // S58 |
| 445 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("F") PORT_CODE(KEYCODE_F) PORT_CHAR('f') PORT_CHAR('F') // S59 |
| 446 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("X") PORT_CODE(KEYCODE_X) PORT_CHAR('x') PORT_CHAR('X') // S79 |
| 447 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("C") PORT_CODE(KEYCODE_C) PORT_CHAR('c') PORT_CHAR('C') // S80 |
| 447 | 448 | |
| 448 | 449 | PORT_START("Y3") |
| 449 | | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 450 | | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 451 | | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 452 | | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 453 | | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 454 | | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 455 | | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 456 | | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 450 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("5 % "UTF8_UP) PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_CHAR('%') // S18 |
| 451 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("6 \xc2\xa2 \xc2\xac") PORT_CODE(KEYCODE_6) PORT_CHAR('6') // cent U+00A2, logic not U+00AC // S19 |
| 452 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("T") PORT_CODE(KEYCODE_T) PORT_CHAR('t') PORT_CHAR('T') // S39 |
| 453 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Y") PORT_CODE(KEYCODE_Y) PORT_CHAR('y') PORT_CHAR('Y') // S40 |
| 454 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("G") PORT_CODE(KEYCODE_G) PORT_CHAR('g') PORT_CHAR('G') // S60 |
| 455 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("H") PORT_CODE(KEYCODE_H) PORT_CHAR('h') PORT_CHAR('H') // S61 |
| 456 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("V") PORT_CODE(KEYCODE_V) PORT_CHAR('v') PORT_CHAR('V') // S81 |
| 457 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("B") PORT_CODE(KEYCODE_B) PORT_CHAR('b') PORT_CHAR('B') // S82 |
| 457 | 458 | |
| 458 | 459 | PORT_START("Y4") |
| 459 | | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 460 | | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 461 | | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 462 | | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 463 | | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 464 | | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 465 | | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 466 | | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 460 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("7 & ^") PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR('&') PORT_CHAR('^') // S20 |
| 461 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("8 * `") PORT_CODE(KEYCODE_8) PORT_CHAR('8') PORT_CHAR('*') PORT_CHAR('`') // S21 |
| 462 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("U") PORT_CODE(KEYCODE_U) PORT_CHAR('u') PORT_CHAR('U') // S41 |
| 463 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("I") PORT_CODE(KEYCODE_I) PORT_CHAR('i') PORT_CHAR('I') // S42 |
| 464 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("J") PORT_CODE(KEYCODE_J) PORT_CHAR('j') PORT_CHAR('J') // S62 |
| 465 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("K") PORT_CODE(KEYCODE_K) PORT_CHAR('k') PORT_CHAR('K') // S63 |
| 466 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("N") PORT_CODE(KEYCODE_N) PORT_CHAR('n') PORT_CHAR('N') // S83 |
| 467 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("M") PORT_CODE(KEYCODE_M) PORT_CHAR('m') PORT_CHAR('M') // S84 |
| 467 | 468 | |
| 468 | 469 | PORT_START("Y5") |
| 469 | | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 470 | | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 471 | | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 472 | | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 473 | | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 474 | | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 475 | | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 476 | | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 470 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("9 ( {") PORT_CODE(KEYCODE_9) PORT_CHAR('9') PORT_CHAR('(') PORT_CHAR('{') // S22 |
| 471 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("0 ) }") PORT_CODE(KEYCODE_0) PORT_CHAR('0') PORT_CHAR(')') PORT_CHAR('}') // S23 |
| 472 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("O") PORT_CODE(KEYCODE_O) PORT_CHAR('o') PORT_CHAR('O') // S43 |
| 473 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("P") PORT_CODE(KEYCODE_P) PORT_CHAR('p') PORT_CHAR('P') // S44 |
| 474 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("L") PORT_CODE(KEYCODE_L) PORT_CHAR('l') PORT_CHAR('L') // S64 |
| 475 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("; :") PORT_CODE(KEYCODE_COLON) PORT_CHAR(';') PORT_CHAR(':') // S65 |
| 476 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME(",") PORT_CODE(KEYCODE_COMMA) PORT_CHAR(',') // S85 |
| 477 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME(".") PORT_CODE(KEYCODE_STOP) PORT_CHAR('.') // S86 |
| 477 | 478 | |
| 478 | 479 | PORT_START("Y6") |
| 479 | | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 480 | | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 481 | | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 482 | | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 483 | | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 484 | | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 485 | | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 486 | | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 480 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("- _ ~") PORT_CODE(KEYCODE_MINUS) PORT_CHAR('-') PORT_CHAR('_') PORT_CHAR('~') // S24 |
| 481 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("= + \\") PORT_CODE(KEYCODE_EQUALS) PORT_CHAR('=') PORT_CHAR('+') PORT_CHAR('\\') // S25 |
| 482 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("\xc2\xbd \xc2\xbc") PORT_CODE(KEYCODE_OPENBRACE) // unicode half fraction U+00BD / quarter fraction U+00BC // S45 |
| 483 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("[ ]") PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR('[') PORT_CHAR(']') // S46 |
| 484 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("' \"") PORT_CODE(KEYCODE_QUOTE) PORT_CHAR('\'') PORT_CHAR('\"') // S66 |
| 485 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("UNUSED S67") // unused // S67 |
| 486 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("/ ?") PORT_CODE(KEYCODE_SLASH) PORT_CHAR('/') PORT_CHAR('?') // S87 |
| 487 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Right Shift") PORT_CODE(KEYCODE_RSHIFT) PORT_CHAR(UCHAR_SHIFT_1) // S88 |
| 487 | 488 | |
| 488 | 489 | PORT_START("Y7") |
| 489 | | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 490 | | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 491 | | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 492 | | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 493 | | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 494 | | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 495 | | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 496 | | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 490 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("BACKSPACE") PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(8) // S26 |
| 491 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("INS") PORT_CODE(KEYCODE_INSERT) // S27 |
| 492 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("UNUSED S47") // unused // S47 |
| 493 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("ERASE/EOL") PORT_CODE(KEYCODE_END) // should this be mapped to end or del? // S48 |
| 494 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("RETURN") PORT_CODE(KEYCODE_ENTER) PORT_CHAR(13) // S68 |
| 495 | //PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Word "UTF8_LEFT"/Volume Up \xf0\x9f\x94\x88\xe2\x96\xb4") PORT_CODE(KEYCODE_PGUP) // unicode U+2190/U+1F508 + U+25B4 // S69 |
| 496 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Word "UTF8_LEFT"/Volume Up") PORT_CODE(KEYCODE_PGUP) // unicode U+2190/U+1F508 + U+25B4 // S69 |
| 497 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME(UTF8_UP"/Brightness Up \xe2\x98\xbc\xe2\x96\xb4") PORT_CODE(KEYCODE_UP) PORT_CHAR(UCHAR_MAMEKEY(UP)) // U+2191/U+263C + U+25B4 // S89 |
| 498 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME(UTF8_DOWN"/Brightness Down \xe2\x98\xbc\xe2\x96\xbe") PORT_CODE(KEYCODE_DOWN) PORT_CHAR(UCHAR_MAMEKEY(DOWN)) // U+2193/U+263C + U+25BE // S90 |
| 497 | 499 | |
| 498 | 500 | PORT_START("Y8") |
| 499 | | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 500 | | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 501 | | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 502 | | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 503 | | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 504 | | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 505 | | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 506 | | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 501 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("DEL") PORT_CODE(KEYCODE_DEL) PORT_CHAR(127) // S28 |
| 502 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad MODE CALC/=") PORT_CODE(KEYCODE_NUMLOCK) // S29 |
| 503 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("REQ/CAN") PORT_CODE(KEYCODE_BACKSLASH) // is this a good key for this? does sysrq make more sense? // S49 |
| 504 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 7") PORT_CODE(KEYCODE_7_PAD) // S50 |
| 505 | //PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Word "UTF8_RIGHT"/Volume Down \xf0\x9f\x94\x88\xe2\x96\xbe") PORT_CODE(KEYCODE_PGDN) // unicode U+2192/U+1F508 + U+25B4 // S70 |
| 506 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Word "UTF8_RIGHT"/Volume Down") PORT_CODE(KEYCODE_PGDN) // unicode U+2192/U+1F508 + U+25B4 // S70 |
| 507 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 4") PORT_CODE(KEYCODE_4_PAD) // S71 |
| 508 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 1") PORT_CODE(KEYCODE_1_PAD) // S91 |
| 509 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 2") PORT_CODE(KEYCODE_2_PAD) // S92 |
| 507 | 510 | |
| 508 | 511 | PORT_START("Y9") |
| 509 | | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 510 | | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 511 | | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 512 | | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 513 | | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 514 | | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 515 | | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 516 | | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 512 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad %") // find a good key for this // S30 |
| 513 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad \xc3\xb7") PORT_CODE(KEYCODE_SLASH_PAD) // unicode division sign U+00F7 // S31 |
| 514 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 8") PORT_CODE(KEYCODE_8_PAD) // S51 |
| 515 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 9") PORT_CODE(KEYCODE_9_PAD) // S52 |
| 516 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 5") PORT_CODE(KEYCODE_5_PAD) // S72 |
| 517 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 6") PORT_CODE(KEYCODE_6_PAD) // S73 |
| 518 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 3") PORT_CODE(KEYCODE_3_PAD) // S93 |
| 519 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad Enter") PORT_CODE(KEYCODE_ENTER_PAD) // S94 |
| 517 | 520 | |
| 518 | 521 | PORT_START("YA") |
| 519 | | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 520 | | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 521 | | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 522 | | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 523 | | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 524 | | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 525 | | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 526 | | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 522 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad \xc3\x97") PORT_CODE(KEYCODE_ASTERISK) // unicode multiply sign U+00D7 // S32 |
| 523 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("F10 [10]") PORT_CODE(KEYCODE_F10) // S11 |
| 524 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad -") PORT_CODE(KEYCODE_MINUS_PAD) // S53 |
| 525 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("F9 [9]") PORT_CODE(KEYCODE_F9) // S10 |
| 526 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad +") PORT_CODE(KEYCODE_PLUS_PAD) // S74 |
| 527 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("UNUSED S09") // unused // S09 |
| 528 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("F7 [7]") PORT_CODE(KEYCODE_F7) // S07 |
| 529 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("F6 [6]") PORT_CODE(KEYCODE_F6) // S06 |
| 527 | 530 | |
| 528 | 531 | PORT_START("YB") |
| 529 | | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 530 | | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 531 | | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 532 | | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 533 | | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 534 | | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 535 | | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 536 | | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 532 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("UNUSED S04") // unused // S104 |
| 533 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad .") PORT_CODE(KEYCODE_DEL_PAD) // S103 |
| 534 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 00") // S102 |
| 535 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 0") PORT_CODE(KEYCODE_0_PAD) // S101 |
| 536 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME(UTF8_RIGHT"/Contrast Down \xe2\x97\x90\xe2\x96\xbe") PORT_CODE(KEYCODE_RIGHT) PORT_CHAR(UCHAR_MAMEKEY(RIGHT)) // U+2190/U+25D0 + U+25BE S100 |
| 537 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME(UTF8_LEFT"/Contrast Up \xe2\x97\x90\xe2\x96\xb4") PORT_CODE(KEYCODE_LEFT) PORT_CHAR(UCHAR_MAMEKEY(LEFT)) // U+2190/U+25D0 + U+25B4 S99 |
| 538 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("PAUSE/CONT") PORT_CODE(KEYCODE_PAUSE) // S98 |
| 539 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Spacebar") PORT_CODE(KEYCODE_SPACE) PORT_CHAR(' ') // S97 |
| 537 | 540 | |
| 538 | 541 | PORT_START("YC") |
| 539 | | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 540 | | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 541 | | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 542 | | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 543 | | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 544 | | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 545 | | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 546 | | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) |
| 542 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("F5 [5]") PORT_CODE(KEYCODE_F5) // S05 |
| 543 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("F4 [4]") PORT_CODE(KEYCODE_F4) // S04 |
| 544 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("F3 [3]") PORT_CODE(KEYCODE_F3) // S03 |
| 545 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("F2 [2]") PORT_CODE(KEYCODE_F2) // S02 |
| 546 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("F1 [1]") PORT_CODE(KEYCODE_F1) // S01 |
| 547 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("F8 [8]") PORT_CODE(KEYCODE_F8) // S11 |
| 548 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("RPT") PORT_CODE(KEYCODE_LCONTROL) // S95 |
| 549 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("ALT") PORT_CODE(KEYCODE_LALT) PORT_CODE(KEYCODE_RALT) PORT_CHAR(UCHAR_SHIFT_2) // S96 |
| 547 | 550 | INPUT_PORTS_END |
| 548 | 551 | |
| 549 | 552 | |
| r242380 | r242381 | |
| 685 | 688 | |
| 686 | 689 | */ |
| 687 | 690 | |
| 688 | | // keyboard rows 0-11 |
| 691 | // falling (?edge or level?), latch keyboard rows 0-11 |
| 689 | 692 | if (!BIT(data, 0)) |
| 690 | 693 | { |
| 691 | 694 | m_y = m_p1 & 0x0f; |