8bitworkshop/gen/mw8080bw-BVUD3QUV.js.map

8 lines
7.1 KiB
Plaintext

{
"version": 3,
"sources": ["../src/machine/mw8080bw.ts", "../src/platform/mw8080bw.ts"],
"sourcesContent": ["\nimport { Z80, Z80State } from \"../common/cpu/ZilogZ80\";\nimport { BasicScanlineMachine } from \"../common/devices\";\nimport { KeyFlags, newAddressDecoder, padBytes, Keys, makeKeycodeMap, newKeyboardHandler } from \"../common/emu\";\nimport { TssChannelAdapter, MasterAudio, AY38910_Audio } from \"../common/audio\";\n\n// http://www.computerarcheology.com/Arcade/\n\nconst SPACEINV_KEYCODE_MAP = makeKeycodeMap([\n [Keys.A, 1, 0x10], // P1\n [Keys.LEFT, 1, 0x20],\n [Keys.RIGHT, 1, 0x40],\n [Keys.P2_A, 2, 0x10], // P2\n [Keys.P2_LEFT, 2, 0x20],\n [Keys.P2_RIGHT, 2, 0x40],\n [Keys.SELECT, 1, 0x1],\n [Keys.START, 1, 0x4],\n [Keys.P2_START, 1, 0x2],\n]);\n\nconst INITIAL_WATCHDOG = 256;\nconst PIXEL_ON = 0xffeeeeee;\nconst PIXEL_OFF = 0xff000000;\n\nexport class Midway8080 extends BasicScanlineMachine {\n\n cpuFrequency = 1996800; // MHz\n canvasWidth = 256;\n numTotalScanlines = 262;\n numVisibleScanlines = 224;\n cpuCyclesPerLine = Math.floor(1996800 / (262*60));\n defaultROMSize = 0x2000;\n rotate = -90;\n sampleRate = 1;\n\n bitshift_offset = 0;\n bitshift_register = 0;\n watchdog_counter;\n \n cpu: Z80 = new Z80();\n ram = new Uint8Array(0x2000);\n\n constructor() {\n super();\n this.connectCPUMemoryBus(this);\n this.connectCPUIOBus(this.newIOBus());\n this.handler = newKeyboardHandler(this.inputs, SPACEINV_KEYCODE_MAP);\n }\n \n read = newAddressDecoder([\n [0x0000, 0x1fff, 0x1fff, (a) => { return this.rom ? this.rom[a] : 0; }],\n [0x2000, 0x3fff, 0x1fff, (a) => { return this.ram[a]; }],\n ]);\n write = newAddressDecoder([\n [0x2000, 0x23ff, 0x3ff, (a, v) => { this.ram[a] = v; }],\n [0x2400, 0x3fff, 0x1fff, (a, v) => {\n this.ram[a] = v;\n var ofs = (a - 0x400) << 3;\n for (var i = 0; i < 8; i++) {\n this.pixels[ofs + i] = (v & (1 << i)) ? PIXEL_ON : PIXEL_OFF;\n }\n //if (displayPCs) displayPCs[a] = cpu.getPC(); // save program counter\n }],\n ]);\n\n newIOBus() {\n return {\n read: (addr) => {\n addr &= 0x3;\n //console.log('IO read', hex(addr,4));\n switch (addr) {\n case 0:\n case 1:\n case 2:\n return this.inputs[addr];\n case 3:\n return (this.bitshift_register >> (8 - this.bitshift_offset)) & 0xff;\n }\n return 0;\n },\n write: (addr, val) => {\n addr &= 0x7;\n val &= 0xff;\n //console.log('IO write', hex(addr,4), hex(val,2));\n switch (addr) {\n case 2:\n this.bitshift_offset = val & 0x7;\n break;\n case 3:\n case 5:\n // TODO: sound\n break;\n case 4:\n this.bitshift_register = (this.bitshift_register >> 8) | (val << 8);\n break;\n case 6:\n this.watchdog_counter = INITIAL_WATCHDOG;\n break;\n }\n }\n };\n }\n\n startScanline() {\n }\n\n drawScanline() {\n // at end of scanline\n if (this.scanline == 95)\n this.interrupt(0xcf); // RST $8\n else if (this.scanline == 223)\n this.interrupt(0xd7); // RST $10\n }\n \n interrupt(data:number) {\n this.probe.logInterrupt(data);\n this.cpu.interrupt(data);\n }\n\n advanceFrame(trap) : number {\n if (this.watchdog_counter-- <= 0) {\n console.log(\"WATCHDOG FIRED\"); // TODO: alert on video\n this.reset();\n }\n return super.advanceFrame(trap);\n }\n\n loadState(state) {\n super.loadState(state);\n this.bitshift_register = state.bsr;\n this.bitshift_offset = state.bso;\n this.watchdog_counter = state.wdc;\n }\n saveState() {\n var state: any = super.saveState();\n state.bsr = this.bitshift_register;\n state.bso = this.bitshift_offset;\n state.wdc = this.watchdog_counter;\n return state;\n }\n reset() {\n super.reset();\n this.watchdog_counter = INITIAL_WATCHDOG;\n }\n}\n", "\nimport { Midway8080 } from \"../machine/mw8080bw\";\nimport { BaseZ80MachinePlatform } from \"../common/baseplatform\";\nimport { Platform } from \"../common/baseplatform\";\nimport { PLATFORMS } from \"../common/emu\";\n\n// http://www.computerarcheology.com/Arcade/\n\nconst MW8080BW_PRESETS = [\n { id: 'gfxtest.c', name: 'Graphics Test' },\n { id: 'shifter.c', name: 'Sprite w/ Bit Shifter' },\n { id: 'game2.c', name: 'Cosmic Impalas' },\n];\n\nclass Midway8080BWPlatform extends BaseZ80MachinePlatform<Midway8080> implements Platform {\n\n newMachine() { return new Midway8080(); }\n getPresets() { return MW8080BW_PRESETS; }\n getDefaultExtension() { return \".c\"; };\n readAddress(a) { return this.machine.read(a); }\n getMemoryMap = function() { return { main:[\n {name:'Frame Buffer',start:0x2400,size:7168,type:'ram'},\n ] } };\n showHelp() { return \"https://8bitworkshop.com/docs/platforms/arcade/index.html#midway-8080\" }\n}\n\n\nPLATFORMS['mw8080bw'] = Midway8080BWPlatform;\n"],
"mappings": "uJAQA,GAAM,GAAuB,EAAe,CAC1C,CAAC,EAAK,EAAU,EAAG,IACnB,CAAC,EAAK,KAAU,EAAG,IACnB,CAAC,EAAK,MAAU,EAAG,IACnB,CAAC,EAAK,KAAU,EAAG,IACnB,CAAC,EAAK,QAAU,EAAG,IACnB,CAAC,EAAK,SAAU,EAAG,IACnB,CAAC,EAAK,OAAU,EAAG,GACnB,CAAC,EAAK,MAAU,EAAG,GACnB,CAAC,EAAK,SAAU,EAAG,KAGf,EAAmB,IACnB,EAAW,WACX,EAAY,WAEX,eAAyB,EAAqB,CAkBnD,aAAc,CACZ,QAjBF,kBAAe,QACf,iBAAc,IACd,uBAAoB,IACpB,yBAAsB,IACtB,sBAAmB,KAAK,MAAM,QAAW,KAAI,KAC7C,oBAAiB,KACjB,YAAS,IACT,gBAAa,EAEb,qBAAkB,EAClB,uBAAoB,EAGpB,SAAW,GAAI,GACf,SAAM,GAAI,YAAW,MASrB,UAAO,EAAkB,CACnB,CAAC,EAAQ,KAAQ,KAAQ,AAAC,GAAe,KAAK,IAAM,KAAK,IAAI,GAAK,GAClE,CAAC,KAAQ,MAAQ,KAAQ,AAAC,GAAe,KAAK,IAAI,MAExD,WAAQ,EAAkB,CACpB,CAAC,KAAQ,KAAQ,KAAO,CAAC,EAAG,IAAM,CAAE,KAAK,IAAI,GAAK,IAClD,CAAC,KAAQ,MAAQ,KAAQ,CAAC,EAAG,IAAM,CACjC,KAAK,IAAI,GAAK,EAEd,OADI,GAAO,EAAI,MAAU,EAChB,EAAI,EAAG,EAAI,EAAG,IACrB,KAAK,OAAO,EAAM,GAAM,EAAK,GAAK,EAAM,EAAW,MAf3D,KAAK,oBAAoB,MACzB,KAAK,gBAAgB,KAAK,YAC1B,KAAK,QAAU,EAAmB,KAAK,OAAQ,GAmBjD,UAAW,CACT,MAAO,CACL,KAAM,AAAC,GAAS,CAGd,OAFA,GAAQ,EAEA,OACD,OACA,OACA,GACH,MAAO,MAAK,OAAO,OAChB,GACH,MAAQ,MAAK,mBAAsB,EAAI,KAAK,gBAAoB,IAEpE,MAAO,IAET,MAAO,CAAC,EAAM,IAAQ,CAIpB,OAHA,GAAQ,EACR,GAAO,IAEC,OACD,GACH,KAAK,gBAAkB,EAAM,EAC7B,UACG,OACA,GAEH,UACG,GACH,KAAK,kBAAqB,KAAK,mBAAqB,EAAM,GAAO,EACjE,UACG,GACH,KAAK,iBAAmB,EACxB,SAMV,eAAgB,EAGhB,cAAe,CAEb,AAAI,KAAK,UAAY,GACnB,KAAK,UAAU,KACR,KAAK,UAAY,KACxB,KAAK,UAAU,KAGnB,UAAU,EAAa,CACrB,KAAK,MAAM,aAAa,GACxB,KAAK,IAAI,UAAU,GAGrB,aAAa,EAAe,CAC1B,MAAI,MAAK,oBAAsB,GAC7B,SAAQ,IAAI,kBACZ,KAAK,SAEA,MAAM,aAAa,GAG5B,UAAU,EAAO,CACf,MAAM,UAAU,GAChB,KAAK,kBAAoB,EAAM,IAC/B,KAAK,gBAAkB,EAAM,IAC7B,KAAK,iBAAmB,EAAM,IAEhC,WAAY,CACV,GAAI,GAAa,MAAM,YACvB,SAAM,IAAM,KAAK,kBACjB,EAAM,IAAM,KAAK,gBACjB,EAAM,IAAM,KAAK,iBACV,EAET,OAAQ,CACN,MAAM,QACN,KAAK,iBAAmB,ICtI5B,GAAM,GAAmB,CACvB,CAAE,GAAI,YAAa,KAAM,iBACzB,CAAE,GAAI,YAAa,KAAM,yBACzB,CAAE,GAAI,UAAW,KAAM,mBAGzB,eAAmC,EAAuD,CAA1F,aAdA,CAcA,oBAME,kBAAe,UAAW,CAAE,MAAO,CAAE,KAAK,CACtC,CAAC,KAAK,eAAe,MAAM,KAAO,KAAK,KAAK,KAAK,UALrD,YAAsB,CAAE,MAAO,IAAI,GACnC,YAAsB,CAAE,MAAO,GAC/B,qBAAsB,CAAE,MAAO,KAC/B,YAAY,EAAU,CAAE,MAAO,MAAK,QAAQ,KAAK,GAIjD,UAAW,CAAE,MAAO,0EAItB,EAAU,SAAc",
"names": []
}