ac6502 1.3.0 → 1.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +139 -32
- package/dist/components/IO/ACIA.d.ts +76 -0
- package/dist/components/IO/ACIA.js +282 -0
- package/dist/components/IO/ACIA.js.map +1 -0
- package/dist/components/IO/Attachments/Attachment.d.ts +112 -0
- package/dist/components/IO/Attachments/Attachment.js +71 -0
- package/dist/components/IO/Attachments/Attachment.js.map +1 -0
- package/dist/components/IO/Attachments/JoystickAttachment.d.ts +53 -0
- package/dist/components/IO/Attachments/JoystickAttachment.js +90 -0
- package/dist/components/IO/Attachments/JoystickAttachment.js.map +1 -0
- package/dist/components/IO/Attachments/KeyboardEncoderAttachment.d.ts +63 -0
- package/dist/components/IO/Attachments/KeyboardEncoderAttachment.js +489 -0
- package/dist/components/IO/Attachments/KeyboardEncoderAttachment.js.map +1 -0
- package/dist/components/IO/Attachments/KeyboardMatrixAttachment.d.ts +44 -0
- package/dist/components/IO/Attachments/KeyboardMatrixAttachment.js +274 -0
- package/dist/components/IO/Attachments/KeyboardMatrixAttachment.js.map +1 -0
- package/dist/components/IO/Attachments/KeypadAttachment.d.ts +47 -0
- package/dist/components/IO/Attachments/KeypadAttachment.js +141 -0
- package/dist/components/IO/Attachments/KeypadAttachment.js.map +1 -0
- package/dist/components/IO/Attachments/LCDAttachment.d.ts +110 -0
- package/dist/components/IO/Attachments/LCDAttachment.js +716 -0
- package/dist/components/IO/Attachments/LCDAttachment.js.map +1 -0
- package/dist/components/IO/Attachments/SNESAttachment.d.ts +85 -0
- package/dist/components/IO/Attachments/SNESAttachment.js +184 -0
- package/dist/components/IO/Attachments/SNESAttachment.js.map +1 -0
- package/dist/components/IO/Empty.d.ts +9 -0
- package/dist/components/IO/Empty.js +5 -7
- package/dist/components/IO/Empty.js.map +1 -1
- package/dist/components/IO/GPIOCard.d.ts +5 -5
- package/dist/components/IO/GPIOCard.js.map +1 -1
- package/dist/components/IO/RAMBank.d.ts +37 -0
- package/dist/components/IO/RAMBank.js +63 -0
- package/dist/components/IO/RAMBank.js.map +1 -0
- package/dist/components/IO/RTC.d.ts +107 -0
- package/dist/components/IO/RTC.js +483 -0
- package/dist/components/IO/RTC.js.map +1 -0
- package/dist/components/IO/Sound.d.ts +120 -0
- package/dist/components/IO/Sound.js +622 -0
- package/dist/components/IO/Sound.js.map +1 -0
- package/dist/components/IO/Storage.d.ts +74 -0
- package/dist/components/IO/Storage.js +409 -0
- package/dist/components/IO/Storage.js.map +1 -0
- package/dist/components/IO/Terminal.d.ts +19 -0
- package/dist/components/IO/Terminal.js +33 -0
- package/dist/components/IO/Terminal.js.map +1 -0
- package/dist/components/IO/VIA.d.ts +105 -0
- package/dist/components/IO/VIA.js +597 -0
- package/dist/components/IO/VIA.js.map +1 -0
- package/dist/components/IO/Video.d.ts +141 -0
- package/dist/components/IO/Video.js +630 -0
- package/dist/components/IO/Video.js.map +1 -0
- package/dist/components/Machine.d.ts +20 -24
- package/dist/components/Machine.js +249 -166
- package/dist/components/Machine.js.map +1 -1
- package/dist/index.js +28 -14
- package/dist/index.js.map +1 -1
- package/dist/lib.d.ts +16 -16
- package/dist/lib.js +32 -32
- package/dist/lib.js.map +1 -1
- package/dist/tests/IO/ACIA.test.d.ts +1 -0
- package/dist/tests/IO/ACIA.test.js +423 -0
- package/dist/tests/IO/ACIA.test.js.map +1 -0
- package/dist/tests/IO/Attachments/Attachment.test.d.ts +1 -0
- package/dist/tests/IO/Attachments/Attachment.test.js +339 -0
- package/dist/tests/IO/Attachments/Attachment.test.js.map +1 -0
- package/dist/tests/IO/Attachments/JoystickAttachment.test.d.ts +1 -0
- package/dist/tests/IO/Attachments/JoystickAttachment.test.js +126 -0
- package/dist/tests/IO/Attachments/JoystickAttachment.test.js.map +1 -0
- package/dist/tests/IO/Attachments/KeyboardEncoderAttachment.test.d.ts +1 -0
- package/dist/tests/IO/Attachments/KeyboardEncoderAttachment.test.js +779 -0
- package/dist/tests/IO/Attachments/KeyboardEncoderAttachment.test.js.map +1 -0
- package/dist/tests/IO/Attachments/KeyboardMatrixAttachment.test.d.ts +1 -0
- package/dist/tests/IO/Attachments/KeyboardMatrixAttachment.test.js +355 -0
- package/dist/tests/IO/Attachments/KeyboardMatrixAttachment.test.js.map +1 -0
- package/dist/tests/IO/Attachments/KeypadAttachment.test.d.ts +1 -0
- package/dist/tests/IO/Attachments/KeypadAttachment.test.js +323 -0
- package/dist/tests/IO/Attachments/KeypadAttachment.test.js.map +1 -0
- package/dist/tests/IO/Attachments/LCDAttachment.test.d.ts +1 -0
- package/dist/tests/IO/Attachments/LCDAttachment.test.js +627 -0
- package/dist/tests/IO/Attachments/LCDAttachment.test.js.map +1 -0
- package/dist/tests/IO/Attachments/SNESAttachment.test.d.ts +1 -0
- package/dist/tests/IO/Attachments/SNESAttachment.test.js +331 -0
- package/dist/tests/IO/Attachments/SNESAttachment.test.js.map +1 -0
- package/dist/tests/IO/Empty.test.d.ts +1 -0
- package/dist/tests/IO/Empty.test.js +121 -0
- package/dist/tests/IO/Empty.test.js.map +1 -0
- package/dist/tests/IO/GPIOCard.test.js.map +1 -1
- package/dist/tests/IO/RAMBank.test.d.ts +1 -0
- package/dist/tests/IO/RAMBank.test.js +229 -0
- package/dist/tests/IO/RAMBank.test.js.map +1 -0
- package/dist/tests/IO/RTC.test.d.ts +1 -0
- package/dist/tests/IO/RTC.test.js +177 -0
- package/dist/tests/IO/RTC.test.js.map +1 -0
- package/dist/tests/IO/Sound.test.d.ts +1 -0
- package/dist/tests/IO/Sound.test.js +528 -0
- package/dist/tests/IO/Sound.test.js.map +1 -0
- package/dist/tests/IO/Storage.test.d.ts +1 -0
- package/dist/tests/IO/Storage.test.js +656 -0
- package/dist/tests/IO/Storage.test.js.map +1 -0
- package/dist/tests/IO/VIA.test.d.ts +1 -0
- package/dist/tests/IO/VIA.test.js +503 -0
- package/dist/tests/IO/VIA.test.js.map +1 -0
- package/dist/tests/IO/Video.test.d.ts +1 -0
- package/dist/tests/IO/Video.test.js +549 -0
- package/dist/tests/IO/Video.test.js.map +1 -0
- package/dist/tests/Machine.test.js +27 -42
- package/dist/tests/Machine.test.js.map +1 -1
- package/package.json +1 -1
- package/src/components/IO/{SerialCard.ts → ACIA.ts} +2 -2
- package/src/components/IO/{GPIOAttachments/GPIOAttachment.ts → Attachments/Attachment.ts} +2 -2
- package/src/components/IO/{GPIOAttachments/GPIOJoystickAttachment.ts → Attachments/JoystickAttachment.ts} +3 -3
- package/src/components/IO/{GPIOAttachments/GPIOKeyboardEncoderAttachment.ts → Attachments/KeyboardEncoderAttachment.ts} +3 -3
- package/src/components/IO/{GPIOAttachments/GPIOKeyboardMatrixAttachment.ts → Attachments/KeyboardMatrixAttachment.ts} +5 -5
- package/src/components/IO/{GPIOAttachments/GPIOKeypadAttachment.ts → Attachments/KeypadAttachment.ts} +3 -3
- package/src/components/IO/{GPIOAttachments/GPIOLCDAttachment.ts → Attachments/LCDAttachment.ts} +7 -7
- package/src/components/IO/{EmptyCard.ts → Empty.ts} +1 -1
- package/src/components/IO/{RAMCard.ts → RAMBank.ts} +8 -8
- package/src/components/IO/{RTCCard.ts → RTC.ts} +1 -1
- package/src/components/IO/{SoundCard.ts → Sound.ts} +2 -2
- package/src/components/IO/{StorageCard.ts → Storage.ts} +70 -73
- package/src/components/IO/{DevOutputBoard.ts → Terminal.ts} +2 -2
- package/src/components/IO/{GPIOCard.ts → VIA.ts} +64 -64
- package/src/components/IO/{VideoCard.ts → Video.ts} +1 -1
- package/src/components/Machine.ts +276 -176
- package/src/index.ts +34 -21
- package/src/lib.ts +16 -16
- package/src/tests/IO/{SerialCard.test.ts → ACIA.test.ts} +5 -5
- package/src/tests/IO/{GPIOAttachments/GPIOAttachment.test.ts → Attachments/Attachment.test.ts} +12 -12
- package/src/tests/IO/{GPIOAttachments/GPIOJoystickAttachment.test.ts → Attachments/JoystickAttachment.test.ts} +23 -23
- package/src/tests/IO/{GPIOAttachments/GPIOKeyboardEncoderAttachment.test.ts → Attachments/KeyboardEncoderAttachment.test.ts} +4 -4
- package/src/tests/IO/{GPIOAttachments/GPIOKeyboardMatrixAttachment.test.ts → Attachments/KeyboardMatrixAttachment.test.ts} +5 -5
- package/src/tests/IO/{GPIOAttachments/GPIOKeypadAttachment.test.ts → Attachments/KeypadAttachment.test.ts} +38 -38
- package/src/tests/IO/{GPIOAttachments/GPIOLCDAttachment.test.ts → Attachments/LCDAttachment.test.ts} +12 -12
- package/src/tests/IO/Empty.test.ts +143 -0
- package/src/tests/IO/{RAMCard.test.ts → RAMBank.test.ts} +33 -33
- package/src/tests/IO/{RTCCard.test.ts → RTC.test.ts} +6 -6
- package/src/tests/IO/{SoundCard.test.ts → Sound.test.ts} +6 -6
- package/src/tests/IO/{StorageCard.test.ts → Storage.test.ts} +34 -25
- package/src/tests/IO/{GPIOCard.test.ts → VIA.test.ts} +7 -7
- package/src/tests/IO/{VideoCard.test.ts → Video.test.ts} +13 -13
- package/src/tests/Machine.test.ts +31 -38
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LCDAttachment.js","sourceRoot":"","sources":["../../../../src/components/IO/Attachments/LCDAttachment.ts"],"names":[],"mappings":";;;AAAA,6CAA6C;AAE7C;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,sEAAsE;AAEzD,QAAA,aAAa,GAAoB,IAAI,CAAA;AACrC,QAAA,YAAY,GAAqB,IAAI,CAAA;AACrC,QAAA,kBAAkB,GAAe,IAAI,CAAA;AACrC,QAAA,4BAA4B,GAAK,IAAI,CAAA;AACrC,QAAA,wBAAwB,GAAS,IAAI,CAAA;AACrC,QAAA,eAAe,GAAkB,IAAI,CAAA;AACrC,QAAA,kBAAkB,GAAe,IAAI,CAAA;AACrC,QAAA,sBAAsB,GAAW,IAAI,CAAA;AACrC,QAAA,4BAA4B,GAAK,IAAI,CAAA;AACrC,QAAA,aAAa,GAAoB,IAAI,CAAA;AACrC,QAAA,qBAAqB,GAAY,IAAI,CAAA;AACrC,QAAA,mBAAmB,GAAc,IAAI,CAAA;AACrC,QAAA,gBAAgB,GAAiB,IAAI,CAAA;AACrC,QAAA,0BAA0B,GAAO,IAAI,CAAA;AACrC,QAAA,sBAAsB,GAAW,IAAI,CAAA;AACrC,QAAA,qBAAqB,GAAY,IAAI,CAAA;AAElD,sEAAsE;AAEtE,MAAM,aAAa,GAAI,CAAC,CAAA;AACxB,MAAM,cAAc,GAAG,CAAC,CAAA;AAExB,MAAM,UAAU,GAAgB,GAAG,CAAA;AACnC,MAAM,mBAAmB,GAAO,EAAE,CAAA;AAClC,MAAM,cAAc,GAAY,GAAG,GAAG,mBAAmB,CAAA;AACzD,MAAM,kBAAkB,GAAQ,IAAI,CAAA;AAEpC,MAAM,qBAAqB,GAAG,EAAE,CAAA;AAChC,MAAM,qBAAqB,GAAG,EAAE,CAAA;AAEhC,MAAM,WAAW,GAAG,oCAA4B,GAAG,8BAAsB,CAAA;AAEzE,mDAAmD;AACnD,MAAM,WAAW,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;AAE5C,sEAAsE;AAEtE,MAAM,MAAM,GAAG,IAAI,CAAA,CAAE,QAAQ;AAC7B,MAAM,MAAM,GAAG,IAAI,CAAA,CAAE,QAAQ;AAC7B,MAAM,KAAK,GAAI,IAAI,CAAA,CAAE,QAAQ;AAE7B,sEAAsE;AACtE,oEAAoE;AACpE,yDAAyD;AAEzD,MAAM,QAAQ,GAAqE;IACjF,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,gBAAgB;IAC5C,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,YAAY;IACxC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,UAAU;IACtC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,WAAW;IACvC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,WAAW;IACvC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EA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"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { AttachmentBase } from './Attachment';
|
|
2
|
+
/**
|
|
3
|
+
* SNESAttachment - Emulates two Super Nintendo controllers attached to a VIA GPIO port.
|
|
4
|
+
*
|
|
5
|
+
* Pin mapping (on the attached port):
|
|
6
|
+
* Bit 0 (0x01) — CLK : clock signal driven by the 6502 (output)
|
|
7
|
+
* Bit 1 (0x02) — LATCH : latch signal driven by the 6502 (output)
|
|
8
|
+
* Bit 2 (0x04) — DATA1 : serial data from controller 1 to the 6502 (input)
|
|
9
|
+
* Bit 3 (0x08) — DATA2 : serial data from controller 2 to the 6502 (input)
|
|
10
|
+
*
|
|
11
|
+
* Protocol (SNES / NES shift-register protocol):
|
|
12
|
+
* 1. CPU pulses LATCH high then low — controllers sample their button states
|
|
13
|
+
* and the first bit (bit 0) appears on the DATA lines.
|
|
14
|
+
* 2. Each subsequent falling edge on CLK shifts to the next bit.
|
|
15
|
+
* 3. A total of 16 bits are transmitted per controller (SNES).
|
|
16
|
+
*
|
|
17
|
+
* SNES bit order (bit 0 first):
|
|
18
|
+
* 0=B 1=Y 2=SEL 3=STA 4=UP 5=DN 6=LT 7=RT
|
|
19
|
+
* 8=A 9=X 10=L 11=R 12-15=1 (always high)
|
|
20
|
+
*
|
|
21
|
+
* All data bits are active-low (0 = button pressed, 1 = not pressed).
|
|
22
|
+
*
|
|
23
|
+
* Button state format matches the constants used in index.ts / JoystickAttachment:
|
|
24
|
+
* BUTTON_UP=0x01 BUTTON_DOWN=0x02 BUTTON_LEFT=0x04 BUTTON_RIGHT=0x08
|
|
25
|
+
* BUTTON_A=0x10 BUTTON_B=0x20 BUTTON_SELECT=0x40 BUTTON_START=0x80
|
|
26
|
+
*/
|
|
27
|
+
export declare class SNESAttachment extends AttachmentBase {
|
|
28
|
+
static readonly BUTTON_UP = 1;
|
|
29
|
+
static readonly BUTTON_DOWN = 2;
|
|
30
|
+
static readonly BUTTON_LEFT = 4;
|
|
31
|
+
static readonly BUTTON_RIGHT = 8;
|
|
32
|
+
static readonly BUTTON_A = 16;
|
|
33
|
+
static readonly BUTTON_B = 32;
|
|
34
|
+
static readonly BUTTON_SELECT = 64;
|
|
35
|
+
static readonly BUTTON_START = 128;
|
|
36
|
+
private static readonly PIN_CLK;
|
|
37
|
+
private static readonly PIN_LATCH;
|
|
38
|
+
private static readonly PIN_DATA1;
|
|
39
|
+
private static readonly PIN_DATA2;
|
|
40
|
+
private static readonly SNES_BITS;
|
|
41
|
+
private readonly attachedToPortA;
|
|
42
|
+
private buttonState1;
|
|
43
|
+
private buttonState2;
|
|
44
|
+
private shiftReg1;
|
|
45
|
+
private shiftReg2;
|
|
46
|
+
private bitIndex;
|
|
47
|
+
private prevLatch;
|
|
48
|
+
private prevClk;
|
|
49
|
+
/**
|
|
50
|
+
* @param attachToPortA - true to respond on Port A, false for Port B
|
|
51
|
+
* @param priority - attachment priority (lower = higher priority)
|
|
52
|
+
*/
|
|
53
|
+
constructor(attachToPortA?: boolean, priority?: number);
|
|
54
|
+
reset(): void;
|
|
55
|
+
readPortA(ddr: number, or: number): number;
|
|
56
|
+
readPortB(ddr: number, or: number): number;
|
|
57
|
+
writePortA(value: number, ddr: number): void;
|
|
58
|
+
writePortB(value: number, ddr: number): void;
|
|
59
|
+
/**
|
|
60
|
+
* Update the button state for controller 1 (DATA1 line).
|
|
61
|
+
* @param buttons - Button state byte using BUTTON_x bit masks (1 = pressed)
|
|
62
|
+
*/
|
|
63
|
+
updateController1(buttons: number): void;
|
|
64
|
+
/**
|
|
65
|
+
* Update the button state for controller 2 (DATA2 line).
|
|
66
|
+
* @param buttons - Button state byte using BUTTON_x bit masks (1 = pressed)
|
|
67
|
+
*/
|
|
68
|
+
updateController2(buttons: number): void;
|
|
69
|
+
/**
|
|
70
|
+
* Build a 16-bit SNES shift register from a button-state byte.
|
|
71
|
+
* Bits are active-low (0 = pressed, 1 = not pressed).
|
|
72
|
+
* Bits 12-15 are always 1 (used by the protocol to identify controller type).
|
|
73
|
+
* Y (bit 1), X (bit 9), L (bit 10), R (bit 11) have no mapping and stay 1.
|
|
74
|
+
*/
|
|
75
|
+
private buildShiftRegister;
|
|
76
|
+
/**
|
|
77
|
+
* Detect LATCH / CLK signal transitions and update internal state accordingly.
|
|
78
|
+
*/
|
|
79
|
+
private handleSignals;
|
|
80
|
+
/**
|
|
81
|
+
* Return the port byte with DATA1 and DATA2 reflecting the current shift-register bit.
|
|
82
|
+
* All other bits (CLK, LATCH, and unused bits 4-7) are returned as 1.
|
|
83
|
+
*/
|
|
84
|
+
private currentDataBits;
|
|
85
|
+
}
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SNESAttachment = void 0;
|
|
4
|
+
const Attachment_1 = require("./Attachment");
|
|
5
|
+
/**
|
|
6
|
+
* SNESAttachment - Emulates two Super Nintendo controllers attached to a VIA GPIO port.
|
|
7
|
+
*
|
|
8
|
+
* Pin mapping (on the attached port):
|
|
9
|
+
* Bit 0 (0x01) — CLK : clock signal driven by the 6502 (output)
|
|
10
|
+
* Bit 1 (0x02) — LATCH : latch signal driven by the 6502 (output)
|
|
11
|
+
* Bit 2 (0x04) — DATA1 : serial data from controller 1 to the 6502 (input)
|
|
12
|
+
* Bit 3 (0x08) — DATA2 : serial data from controller 2 to the 6502 (input)
|
|
13
|
+
*
|
|
14
|
+
* Protocol (SNES / NES shift-register protocol):
|
|
15
|
+
* 1. CPU pulses LATCH high then low — controllers sample their button states
|
|
16
|
+
* and the first bit (bit 0) appears on the DATA lines.
|
|
17
|
+
* 2. Each subsequent falling edge on CLK shifts to the next bit.
|
|
18
|
+
* 3. A total of 16 bits are transmitted per controller (SNES).
|
|
19
|
+
*
|
|
20
|
+
* SNES bit order (bit 0 first):
|
|
21
|
+
* 0=B 1=Y 2=SEL 3=STA 4=UP 5=DN 6=LT 7=RT
|
|
22
|
+
* 8=A 9=X 10=L 11=R 12-15=1 (always high)
|
|
23
|
+
*
|
|
24
|
+
* All data bits are active-low (0 = button pressed, 1 = not pressed).
|
|
25
|
+
*
|
|
26
|
+
* Button state format matches the constants used in index.ts / JoystickAttachment:
|
|
27
|
+
* BUTTON_UP=0x01 BUTTON_DOWN=0x02 BUTTON_LEFT=0x04 BUTTON_RIGHT=0x08
|
|
28
|
+
* BUTTON_A=0x10 BUTTON_B=0x20 BUTTON_SELECT=0x40 BUTTON_START=0x80
|
|
29
|
+
*/
|
|
30
|
+
class SNESAttachment extends Attachment_1.AttachmentBase {
|
|
31
|
+
/**
|
|
32
|
+
* @param attachToPortA - true to respond on Port A, false for Port B
|
|
33
|
+
* @param priority - attachment priority (lower = higher priority)
|
|
34
|
+
*/
|
|
35
|
+
constructor(attachToPortA = true, priority = 0) {
|
|
36
|
+
super(priority, false, false, false, false);
|
|
37
|
+
// Raw button states (1-bit-per-button, BUTTON_x masks, as received from the host)
|
|
38
|
+
this.buttonState1 = 0x00;
|
|
39
|
+
this.buttonState2 = 0x00;
|
|
40
|
+
// 16-bit SNES shift registers (active-low: 0=pressed, 1=not pressed)
|
|
41
|
+
this.shiftReg1 = 0xFFFF;
|
|
42
|
+
this.shiftReg2 = 0xFFFF;
|
|
43
|
+
// Index of the bit currently presented on DATA (0..15)
|
|
44
|
+
this.bitIndex = 0;
|
|
45
|
+
// Previous signal levels used to detect rising/falling edges
|
|
46
|
+
this.prevLatch = false;
|
|
47
|
+
this.prevClk = false;
|
|
48
|
+
this.attachedToPortA = attachToPortA;
|
|
49
|
+
}
|
|
50
|
+
reset() {
|
|
51
|
+
super.reset();
|
|
52
|
+
this.buttonState1 = 0x00;
|
|
53
|
+
this.buttonState2 = 0x00;
|
|
54
|
+
this.shiftReg1 = 0xFFFF;
|
|
55
|
+
this.shiftReg2 = 0xFFFF;
|
|
56
|
+
this.bitIndex = 0;
|
|
57
|
+
this.prevLatch = false;
|
|
58
|
+
this.prevClk = false;
|
|
59
|
+
}
|
|
60
|
+
// ---------------------------------------------------------------------------
|
|
61
|
+
// Port reads — supply DATA1 / DATA2 bits to the VIA for the CPU to read
|
|
62
|
+
// ---------------------------------------------------------------------------
|
|
63
|
+
readPortA(ddr, or) {
|
|
64
|
+
return this.attachedToPortA ? this.currentDataBits() : 0xFF;
|
|
65
|
+
}
|
|
66
|
+
readPortB(ddr, or) {
|
|
67
|
+
return this.attachedToPortA ? 0xFF : this.currentDataBits();
|
|
68
|
+
}
|
|
69
|
+
// ---------------------------------------------------------------------------
|
|
70
|
+
// Port writes — monitor CLK and LATCH transitions driven by the CPU
|
|
71
|
+
// ---------------------------------------------------------------------------
|
|
72
|
+
writePortA(value, ddr) {
|
|
73
|
+
if (this.attachedToPortA) {
|
|
74
|
+
this.handleSignals(value);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
writePortB(value, ddr) {
|
|
78
|
+
if (!this.attachedToPortA) {
|
|
79
|
+
this.handleSignals(value);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
// ---------------------------------------------------------------------------
|
|
83
|
+
// Controller state update API
|
|
84
|
+
// ---------------------------------------------------------------------------
|
|
85
|
+
/**
|
|
86
|
+
* Update the button state for controller 1 (DATA1 line).
|
|
87
|
+
* @param buttons - Button state byte using BUTTON_x bit masks (1 = pressed)
|
|
88
|
+
*/
|
|
89
|
+
updateController1(buttons) {
|
|
90
|
+
this.buttonState1 = buttons & 0xFF;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Update the button state for controller 2 (DATA2 line).
|
|
94
|
+
* @param buttons - Button state byte using BUTTON_x bit masks (1 = pressed)
|
|
95
|
+
*/
|
|
96
|
+
updateController2(buttons) {
|
|
97
|
+
this.buttonState2 = buttons & 0xFF;
|
|
98
|
+
}
|
|
99
|
+
// ---------------------------------------------------------------------------
|
|
100
|
+
// Private helpers
|
|
101
|
+
// ---------------------------------------------------------------------------
|
|
102
|
+
/**
|
|
103
|
+
* Build a 16-bit SNES shift register from a button-state byte.
|
|
104
|
+
* Bits are active-low (0 = pressed, 1 = not pressed).
|
|
105
|
+
* Bits 12-15 are always 1 (used by the protocol to identify controller type).
|
|
106
|
+
* Y (bit 1), X (bit 9), L (bit 10), R (bit 11) have no mapping and stay 1.
|
|
107
|
+
*/
|
|
108
|
+
buildShiftRegister(buttons) {
|
|
109
|
+
let data = 0xFFFF; // start with all 1s (no buttons pressed)
|
|
110
|
+
if (buttons & SNESAttachment.BUTTON_B)
|
|
111
|
+
data &= ~(1 << 0); // B
|
|
112
|
+
// bit 1 = Y — unmapped, stays 1
|
|
113
|
+
if (buttons & SNESAttachment.BUTTON_SELECT)
|
|
114
|
+
data &= ~(1 << 2); // SELECT
|
|
115
|
+
if (buttons & SNESAttachment.BUTTON_START)
|
|
116
|
+
data &= ~(1 << 3); // START
|
|
117
|
+
if (buttons & SNESAttachment.BUTTON_UP)
|
|
118
|
+
data &= ~(1 << 4); // UP
|
|
119
|
+
if (buttons & SNESAttachment.BUTTON_DOWN)
|
|
120
|
+
data &= ~(1 << 5); // DOWN
|
|
121
|
+
if (buttons & SNESAttachment.BUTTON_LEFT)
|
|
122
|
+
data &= ~(1 << 6); // LEFT
|
|
123
|
+
if (buttons & SNESAttachment.BUTTON_RIGHT)
|
|
124
|
+
data &= ~(1 << 7); // RIGHT
|
|
125
|
+
if (buttons & SNESAttachment.BUTTON_A)
|
|
126
|
+
data &= ~(1 << 8); // A
|
|
127
|
+
// bits 9=X, 10=L, 11=R — unmapped, stay 1
|
|
128
|
+
// bits 12-15 — always 1 (controller present / protocol identification)
|
|
129
|
+
return data & 0xFFFF;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Detect LATCH / CLK signal transitions and update internal state accordingly.
|
|
133
|
+
*/
|
|
134
|
+
handleSignals(value) {
|
|
135
|
+
const latch = (value & SNESAttachment.PIN_LATCH) !== 0;
|
|
136
|
+
const clk = (value & SNESAttachment.PIN_CLK) !== 0;
|
|
137
|
+
// LATCH rising edge: capture current button states and reset the bit counter
|
|
138
|
+
if (latch && !this.prevLatch) {
|
|
139
|
+
this.shiftReg1 = this.buildShiftRegister(this.buttonState1);
|
|
140
|
+
this.shiftReg2 = this.buildShiftRegister(this.buttonState2);
|
|
141
|
+
this.bitIndex = 0;
|
|
142
|
+
}
|
|
143
|
+
// CLK falling edge: advance to the next bit
|
|
144
|
+
if (!clk && this.prevClk) {
|
|
145
|
+
if (this.bitIndex < SNESAttachment.SNES_BITS - 1) {
|
|
146
|
+
this.bitIndex++;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
this.prevLatch = latch;
|
|
150
|
+
this.prevClk = clk;
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Return the port byte with DATA1 and DATA2 reflecting the current shift-register bit.
|
|
154
|
+
* All other bits (CLK, LATCH, and unused bits 4-7) are returned as 1.
|
|
155
|
+
*/
|
|
156
|
+
currentDataBits() {
|
|
157
|
+
const bit1 = (this.shiftReg1 >> this.bitIndex) & 1;
|
|
158
|
+
const bit2 = (this.shiftReg2 >> this.bitIndex) & 1;
|
|
159
|
+
let result = 0xFF;
|
|
160
|
+
if (bit1 === 0)
|
|
161
|
+
result &= ~SNESAttachment.PIN_DATA1;
|
|
162
|
+
if (bit2 === 0)
|
|
163
|
+
result &= ~SNESAttachment.PIN_DATA2;
|
|
164
|
+
return result;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
exports.SNESAttachment = SNESAttachment;
|
|
168
|
+
// Button bit masks — identical to the constants in index.ts
|
|
169
|
+
SNESAttachment.BUTTON_UP = 0x01;
|
|
170
|
+
SNESAttachment.BUTTON_DOWN = 0x02;
|
|
171
|
+
SNESAttachment.BUTTON_LEFT = 0x04;
|
|
172
|
+
SNESAttachment.BUTTON_RIGHT = 0x08;
|
|
173
|
+
SNESAttachment.BUTTON_A = 0x10;
|
|
174
|
+
SNESAttachment.BUTTON_B = 0x20;
|
|
175
|
+
SNESAttachment.BUTTON_SELECT = 0x40;
|
|
176
|
+
SNESAttachment.BUTTON_START = 0x80;
|
|
177
|
+
// Pin masks within the VIA port
|
|
178
|
+
SNESAttachment.PIN_CLK = 0x01; // bit 0 — driven by CPU
|
|
179
|
+
SNESAttachment.PIN_LATCH = 0x02; // bit 1 — driven by CPU
|
|
180
|
+
SNESAttachment.PIN_DATA1 = 0x04; // bit 2 — read by CPU (controller 1)
|
|
181
|
+
SNESAttachment.PIN_DATA2 = 0x08; // bit 3 — read by CPU (controller 2)
|
|
182
|
+
// Total number of bits shifted out per SNES controller read cycle
|
|
183
|
+
SNESAttachment.SNES_BITS = 16;
|
|
184
|
+
//# sourceMappingURL=SNESAttachment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SNESAttachment.js","sourceRoot":"","sources":["../../../../src/components/IO/Attachments/SNESAttachment.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { IO } from '../IO';
|
|
2
|
+
export declare class Empty implements IO {
|
|
3
|
+
raiseIRQ: () => void;
|
|
4
|
+
raiseNMI: () => void;
|
|
5
|
+
read(address: number): number;
|
|
6
|
+
write(address: number, data: number): void;
|
|
7
|
+
tick(frequency: number): void;
|
|
8
|
+
reset(coldStart: boolean): void;
|
|
9
|
+
}
|
|
@@ -6,14 +6,12 @@ class Empty {
|
|
|
6
6
|
this.raiseIRQ = () => { };
|
|
7
7
|
this.raiseNMI = () => { };
|
|
8
8
|
}
|
|
9
|
-
read(address) {
|
|
10
|
-
|
|
11
|
-
tick() { }
|
|
12
|
-
reset() { }
|
|
13
|
-
description() {
|
|
14
|
-
return Empty.DESCRIPTION;
|
|
9
|
+
read(address) {
|
|
10
|
+
return 0;
|
|
15
11
|
}
|
|
12
|
+
write(address, data) { }
|
|
13
|
+
tick(frequency) { }
|
|
14
|
+
reset(coldStart) { }
|
|
16
15
|
}
|
|
17
16
|
exports.Empty = Empty;
|
|
18
|
-
Empty.DESCRIPTION = { className: 'Empty', title: 'Empty' };
|
|
19
17
|
//# sourceMappingURL=Empty.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Empty.js","sourceRoot":"","sources":["../../../src/components/IO/Empty.ts"],"names":[],"mappings":";;;AAEA,MAAa,KAAK;IAAlB;
|
|
1
|
+
{"version":3,"file":"Empty.js","sourceRoot":"","sources":["../../../src/components/IO/Empty.ts"],"names":[],"mappings":";;;AAEA,MAAa,KAAK;IAAlB;QAEE,aAAQ,GAAG,GAAG,EAAE,GAAE,CAAC,CAAA;QACnB,aAAQ,GAAG,GAAG,EAAE,GAAE,CAAC,CAAA;IAUrB,CAAC;IARC,IAAI,CAAC,OAAe;QAClB,OAAO,CAAC,CAAA;IACV,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,IAAY,IAAS,CAAC;IAC7C,IAAI,CAAC,SAAiB,IAAS,CAAC;IAChC,KAAK,CAAC,SAAkB,IAAS,CAAC;CAEnC;AAbD,sBAaC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { IO } from '../IO';
|
|
2
|
-
import {
|
|
2
|
+
import { Attachment } from './Attachments/Attachment';
|
|
3
3
|
/**
|
|
4
4
|
* GPIOCard - Emulates the 65C22 VIA (Versatile Interface Adapter)
|
|
5
5
|
*
|
|
@@ -84,22 +84,22 @@ export declare class GPIOCard implements IO {
|
|
|
84
84
|
* Attach a GPIO device to Port A
|
|
85
85
|
* @param attachment - The attachment to add
|
|
86
86
|
*/
|
|
87
|
-
attachToPortA(attachment:
|
|
87
|
+
attachToPortA(attachment: Attachment): void;
|
|
88
88
|
/**
|
|
89
89
|
* Attach a GPIO device to Port B
|
|
90
90
|
* @param attachment - The attachment to add
|
|
91
91
|
*/
|
|
92
|
-
attachToPortB(attachment:
|
|
92
|
+
attachToPortB(attachment: Attachment): void;
|
|
93
93
|
/**
|
|
94
94
|
* Get a Port A attachment by index
|
|
95
95
|
* @param index - The attachment index
|
|
96
96
|
* @returns The attachment or null if not found
|
|
97
97
|
*/
|
|
98
|
-
getPortAAttachment(index: number):
|
|
98
|
+
getPortAAttachment(index: number): Attachment | null;
|
|
99
99
|
/**
|
|
100
100
|
* Get a Port B attachment by index
|
|
101
101
|
* @param index - The attachment index
|
|
102
102
|
* @returns The attachment or null if not found
|
|
103
103
|
*/
|
|
104
|
-
getPortBAttachment(index: number):
|
|
104
|
+
getPortBAttachment(index: number): Attachment | null;
|
|
105
105
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GPIOCard.js","sourceRoot":"","sources":["../../../src/components/IO/GPIOCard.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"GPIOCard.js","sourceRoot":"","sources":["../../../src/components/IO/GPIOCard.ts"],"names":[],"mappings":";;;AAGA;;;;;;;;GAQG;AACH,MAAa,QAAQ;IAuEnB;QAxCA,gBAAgB;QACR,WAAM,GAAW,IAAI,CAAA;QACrB,WAAM,GAAW,IAAI,CAAA;QACrB,YAAO,GAAW,IAAI,CAAA;QACtB,YAAO,GAAW,IAAI,CAAA;QACtB,WAAM,GAAW,MAAM,CAAA;QACvB,WAAM,GAAW,MAAM,CAAA;QACvB,WAAM,GAAW,MAAM,CAAA;QACvB,WAAM,GAAW,IAAI,CAAA;QACrB,UAAK,GAAW,IAAI,CAAA;QACpB,WAAM,GAAW,IAAI,CAAA;QACrB,WAAM,GAAW,IAAI,CAAA;QACrB,WAAM,GAAW,IAAI,CAAA;QACrB,WAAM,GAAW,IAAI,CAAA;QAE7B,gBAAgB;QACR,QAAG,GAAY,KAAK,CAAA;QACpB,QAAG,GAAY,KAAK,CAAA;QACpB,QAAG,GAAY,KAAK,CAAA;QACpB,QAAG,GAAY,KAAK,CAAA;QAE5B,eAAe;QACP,eAAU,GAAY,KAAK,CAAA;QAC3B,eAAU,GAAY,KAAK,CAAA;QAC3B,mBAAc,GAAY,KAAK,CAAA;QAC/B,mBAAc,GAAY,KAAK,CAAA;QAEvC,SAAS;QACD,gBAAW,GAAW,CAAC,CAAA;QACvB,wBAAmB,GAAW,CAAC,CAAA;QAEvC,cAAc;QACN,sBAAiB,GAA0B,EAAE,CAAA;QAC7C,sBAAiB,GAA0B,EAAE,CAAA;QAC7C,0BAAqB,GAAW,CAAC,CAAA;QACjC,0BAAqB,GAAW,CAAC,CAAA;QAEzC,aAAQ,GAAG,GAAG,EAAE,GAAE,CAAC,CAAA;QACnB,aAAQ,GAAG,GAAG,EAAE,GAAE,CAAC,CAAA;QAGjB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAClB,CAAC;IAED,KAAK,CAAC,SAAkB;QACtB,0BAA0B;QAC1B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;QAClB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;QAClB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;QACnB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;QACnB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;QAClB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;QACjB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;QAClB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;QAClB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;QAClB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;QAElB,sBAAsB;QACtB,IAAI,CAAC,GAAG,GAAG,KAAK,CAAA;QAChB,IAAI,CAAC,GAAG,GAAG,KAAK,CAAA;QAChB,IAAI,CAAC,GAAG,GAAG,KAAK,CAAA;QAChB,IAAI,CAAC,GAAG,GAAG,KAAK,CAAA;QAEhB,qBAAqB;QACrB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAA;QACvB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAA;QACvB,IAAI,CAAC,cAAc,GAAG,KAAK,CAAA;QAC3B,IAAI,CAAC,cAAc,GAAG,KAAK,CAAA;QAE3B,+BAA+B;QAC/B,IAAI,CAAC,qBAAqB,GAAG,CAAC,CAAA;QAC9B,IAAI,CAAC,qBAAqB,GAAG,CAAC,CAAA;QAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,wBAAwB,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3D,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA;YAChC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA;QAClC,CAAC;QAED,wBAAwB;QACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC,EAAE,EAAE,CAAC;YACpD,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBACvC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAE,CAAC,KAAK,EAAE,CAAA;YACpC,CAAC;QACH,CAAC;QACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC,EAAE,EAAE,CAAC;YACpD,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBACvC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAE,CAAC,KAAK,EAAE,CAAA;YACpC,CAAC;QACH,CAAC;QAED,eAAe;QACf,IAAI,CAAC,WAAW,GAAG,CAAC,CAAA;QACpB,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAA;IAC9B,CAAC;IAED,IAAI,CAAC,OAAe;QAClB,MAAM,GAAG,GAAG,OAAO,GAAG,IAAI,CAAA;QAC1B,IAAI,KAAK,GAAG,IAAI,CAAA;QAEhB,QAAQ,GAAG,EAAE,CAAC;YACZ,KAAK,QAAQ,CAAC,OAAO;gBACnB,iDAAiD;gBACjD,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAA;gBACtD,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,CAAA;gBACxB,kDAAkD;gBAClD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC,EAAE,EAAE,CAAC;oBACpD,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;wBACvC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAE,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;oBACtE,CAAC;gBACH,CAAC;gBACD,MAAK;YAEP,KAAK,QAAQ,CAAC,OAAO;gBACnB,iDAAiD;gBACjD,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAA;gBACtD,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,CAAA;gBACxB,kDAAkD;gBAClD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC,EAAE,EAAE,CAAC;oBACpD,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;wBACvC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAE,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;oBACtE,CAAC;gBACH,CAAC;gBACD,MAAK;YAEP,KAAK,QAAQ,CAAC,QAAQ;gBACpB,KAAK,GAAG,IAAI,CAAC,OAAO,CAAA;gBACpB,MAAK;YAEP,KAAK,QAAQ,CAAC,QAAQ;gBACpB,KAAK,GAAG,IAAI,CAAC,OAAO,CAAA;gBACpB,MAAK;YAEP,KAAK,QAAQ,CAAC,QAAQ;gBACpB,wCAAwC;gBACxC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;gBAClC,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;gBAC1B,MAAK;YAEP,KAAK,QAAQ,CAAC,QAAQ;gBACpB,KAAK,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,IAAI,CAAA;gBACjC,MAAK;YAEP,KAAK,QAAQ,CAAC,QAAQ;gBACpB,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;gBAC1B,MAAK;YAEP,KAAK,QAAQ,CAAC,QAAQ;gBACpB,KAAK,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,IAAI,CAAA;gBACjC,MAAK;YAEP,KAAK,QAAQ,CAAC,QAAQ;gBACpB,wCAAwC;gBACxC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;gBAClC,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;gBAC1B,MAAK;YAEP,KAAK,QAAQ,CAAC,QAAQ;gBACpB,KAAK,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,IAAI,CAAA;gBACjC,MAAK;YAEP,KAAK,QAAQ,CAAC,MAAM;gBAClB,sCAAsC;gBACtC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;gBAClC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;gBAClB,MAAK;YAEP,KAAK,QAAQ,CAAC,OAAO;gBACnB,KAAK,GAAG,IAAI,CAAC,MAAM,CAAA;gBACnB,MAAK;YAEP,KAAK,QAAQ,CAAC,OAAO;gBACnB,KAAK,GAAG,IAAI,CAAC,MAAM,CAAA;gBACnB,MAAK;YAEP,KAAK,QAAQ,CAAC,OAAO;gBACnB,KAAK,GAAG,IAAI,CAAC,MAAM,CAAA;gBACnB,kDAAkD;gBAClD,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC;oBACrC,KAAK,IAAI,QAAQ,CAAC,OAAO,CAAA;gBAC3B,CAAC;gBACD,MAAK;YAEP,KAAK,QAAQ,CAAC,OAAO;gBACnB,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA,CAAE,0BAA0B;gBACtD,MAAK;YAEP,KAAK,QAAQ,CAAC,UAAU;gBACtB,6DAA6D;gBAC7D,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,CAAA;gBACxB,MAAK;QACT,CAAC;QAED,OAAO,KAAK,GAAG,IAAI,CAAA;IACrB,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,IAAY;QACjC,MAAM,GAAG,GAAG,OAAO,GAAG,IAAI,CAAA;QAC1B,MAAM,KAAK,GAAG,IAAI,GAAG,IAAI,CAAA;QAEzB,QAAQ,GAAG,EAAE,CAAC;YACZ,KAAK,QAAQ,CAAC,OAAO;gBACnB,iDAAiD;gBACjD,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAA;gBACtD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;gBACnB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;gBACtB,MAAK;YAEP,KAAK,QAAQ,CAAC,OAAO;gBACnB,iDAAiD;gBACjD,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAA;gBACtD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;gBACnB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;gBACtB,MAAK;YAEP,KAAK,QAAQ,CAAC,QAAQ;gBACpB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;gBACpB,MAAK;YAEP,KAAK,QAAQ,CAAC,QAAQ;gBACpB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;gBACpB,MAAK;YAEP,KAAK,QAAQ,CAAC,QAAQ,CAAC;YACvB,KAAK,QAAQ,CAAC,QAAQ;gBACpB,wBAAwB;gBACxB,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,KAAK,CAAA;gBAC5C,MAAK;YAEP,KAAK,QAAQ,CAAC,QAAQ;gBACpB,uEAAuE;gBACvE,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,CAAA;gBACnD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;gBACzB,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;gBAClC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAA;gBACtB,MAAK;YAEP,KAAK,QAAQ,CAAC,QAAQ;gBACpB,yBAAyB;gBACzB,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,CAAA;gBACnD,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;gBAClC,MAAK;YAEP,KAAK,QAAQ,CAAC,QAAQ;gBACpB,wBAAwB;gBACxB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;gBACnB,MAAK;YAEP,KAAK,QAAQ,CAAC,QAAQ;gBACpB,uEAAuE;gBACvE,IAAI,CAAC,MAAM,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAA;gBACxC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;gBAClC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAA;gBACtB,MAAK;YAEP,KAAK,QAAQ,CAAC,MAAM;gBAClB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;gBAClB,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;gBAClC,MAAK;YAEP,KAAK,QAAQ,CAAC,OAAO;gBACnB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;gBACnB,yDAAyD;gBACzD,MAAK;YAEP,KAAK,QAAQ,CAAC,OAAO;gBACnB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;gBACnB,2CAA2C;gBAC3C,IAAI,CAAC,SAAS,EAAE,CAAA;gBAChB,IAAI,CAAC,SAAS,EAAE,CAAA;gBAChB,MAAK;YAEP,KAAK,QAAQ,CAAC,OAAO;gBACnB,0DAA0D;gBAC1D,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,CAAA;gBAC9B,IAAI,CAAC,SAAS,EAAE,CAAA;gBAChB,MAAK;YAEP,KAAK,QAAQ,CAAC,OAAO;gBACnB,wCAAwC;gBACxC,IAAI,KAAK,GAAG,IAAI,EAAE,CAAC;oBACjB,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAA;gBAC/B,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,CAAA;gBAChC,CAAC;gBACD,IAAI,CAAC,SAAS,EAAE,CAAA;gBAChB,MAAK;YAEP,KAAK,QAAQ,CAAC,UAAU;gBACtB,6DAA6D;gBAC7D,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;gBACnB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;gBACtB,MAAK;QACT,CAAC;IACH,CAAC;IAED,IAAI,CAAC,SAAiB;QACpB,IAAI,CAAC,WAAW,EAAE,CAAA;QAElB,iBAAiB;QACjB,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvC,IAAI,CAAC,MAAM,EAAE,CAAA;YACb,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACtB,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;gBAEhC,iDAAiD;gBACjD,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC;oBACvB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA,CAAE,oBAAoB;gBACjD,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,UAAU,GAAG,KAAK,CAAA;gBACzB,CAAC;gBAED,oCAAoC;gBACpC,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC;oBACvB,IAAI,CAAC,MAAM,IAAI,IAAI,CAAA;gBACrB,CAAC;YACH,CAAC;QACH,CAAC;QAED,iBAAiB;QACjB,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvC,IAAI,CAAC,MAAM,EAAE,CAAA;YACb,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACtB,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;gBAChC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAA;YACzB,CAAC;QACH,CAAC;QAED,uBAAuB;QACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC,EAAE,EAAE,CAAC;YACpD,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBACvC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YAC5C,CAAC;QACH,CAAC;QACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC,EAAE,EAAE,CAAC;YACpD,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBACvC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YAC5C,CAAC;QACH,CAAC;QAED,kCAAkC;QAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC,EAAE,EAAE,CAAC;YACpD,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBACvC,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAE,CAAC,eAAe,EAAE,EAAE,CAAC;oBACjD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;gBACnC,CAAC;gBACD,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAE,CAAC,eAAe,EAAE,EAAE,CAAC;oBACjD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;gBACnC,CAAC;YACH,CAAC;QACH,CAAC;QACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC,EAAE,EAAE,CAAC;YACpD,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBACvC,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAE,CAAC,eAAe,EAAE,EAAE,CAAC;oBACjD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;gBACnC,CAAC;gBACD,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAE,CAAC,eAAe,EAAE,EAAE,CAAC;oBACjD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;gBACnC,CAAC;YACH,CAAC;QACH,CAAC;QAED,+CAA+C;QAC/C,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC;YACrC,IAAI,CAAC,QAAQ,EAAE,CAAA;QACjB,CAAC;IACH,CAAC;IAEO,SAAS;QACf,kDAAkD;QAClD,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC;YACrC,IAAI,CAAC,MAAM,IAAI,QAAQ,CAAC,OAAO,CAAA;QACjC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAA;QAClC,CAAC;IACH,CAAC;IAEO,UAAU,CAAC,IAAY;QAC7B,IAAI,CAAC,MAAM,IAAI,IAAI,CAAA;QACnB,IAAI,CAAC,SAAS,EAAE,CAAA;IAClB,CAAC;IAEO,YAAY,CAAC,IAAY;QAC/B,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAA;QACpB,IAAI,CAAC,SAAS,EAAE,CAAA;IAClB,CAAC;IAEO,SAAS;QACf,IAAI,KAAK,GAAG,IAAI,CAAA;QAEhB,yEAAyE;QACzE,IAAI,aAAa,GAAG,IAAI,CAAA;QAExB,iDAAiD;QACjD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC,EAAE,EAAE,CAAC;YACpD,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAE,CAAC,SAAS,EAAE,EAAE,CAAC;gBACjF,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;gBACtF,iFAAiF;gBACjF,aAAa,IAAI,cAAc,CAAA;YACjC,CAAC;QACH,CAAC;QAED,0EAA0E;QAC1E,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC;YACjC,IAAI,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;gBAC9B,mCAAmC;gBACnC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;oBAC7B,KAAK,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAA;gBACrB,CAAC;qBAAM,CAAC;oBACN,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAA;gBACtB,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,yCAAyC;gBACzC,IAAI,aAAa,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;oBAC/B,KAAK,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAA;gBACrB,CAAC;qBAAM,CAAC;oBACN,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAA;gBACtB,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,KAAK,GAAG,IAAI,CAAA;IACrB,CAAC;IAEO,SAAS;QACf,IAAI,KAAK,GAAG,IAAI,CAAA;QAEhB,yEAAyE;QACzE,IAAI,aAAa,GAAG,IAAI,CAAA;QAExB,iDAAiD;QACjD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC,EAAE,EAAE,CAAC;YACpD,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAE,CAAC,SAAS,EAAE,EAAE,CAAC;gBACjF,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;gBACtF,iFAAiF;gBACjF,aAAa,IAAI,cAAc,CAAA;YACjC,CAAC;QACH,CAAC;QAED,0EAA0E;QAC1E,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC;YACjC,IAAI,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;gBAC9B,mCAAmC;gBACnC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;oBAC7B,KAAK,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAA;gBACrB,CAAC;qBAAM,CAAC;oBACN,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAA;gBACtB,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,yCAAyC;gBACzC,IAAI,aAAa,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;oBAC/B,KAAK,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAA;gBACrB,CAAC;qBAAM,CAAC;oBACN,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAA;gBACtB,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,KAAK,GAAG,IAAI,CAAA;IACrB,CAAC;IAEO,UAAU,CAAC,KAAa;QAC9B,6CAA6C;QAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC,EAAE,EAAE,CAAC;YACpD,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBACvC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAE,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;YAC5D,CAAC;QACH,CAAC;IACH,CAAC;IAEO,UAAU,CAAC,KAAa;QAC9B,6CAA6C;QAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC,EAAE,EAAE,CAAC;YACpD,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBACvC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAE,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;YAC5D,CAAC;QACH,CAAC;IACH,CAAC;IAEO,SAAS;QACf,oCAAoC;QACpC,MAAM,WAAW,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,IAAI,CAAA;QAE7C,QAAQ,WAAW,EAAE,CAAC;YACpB,KAAK,IAAI,CAAC,CAAE,6BAA6B;YACzC,KAAK,IAAI,CAAC,CAAE,8CAA8C;YAC1D,KAAK,IAAI,CAAC,CAAE,6BAA6B;YACzC,KAAK,IAAI,EAAG,8CAA8C;gBACxD,cAAc;gBACd,MAAK;YAEP,KAAK,IAAI,CAAC,CAAE,mBAAmB;YAC/B,KAAK,IAAI,EAAG,eAAe;gBACzB,eAAe;gBACf,MAAK;YAEP,KAAK,IAAI,EAAG,oBAAoB;gBAC9B,IAAI,CAAC,GAAG,GAAG,KAAK,CAAA;gBAChB,MAAK;YAEP,KAAK,IAAI,EAAG,qBAAqB;gBAC/B,IAAI,CAAC,GAAG,GAAG,IAAI,CAAA;gBACf,MAAK;QACT,CAAC;QAED,iDAAiD;QACjD,IAAI,CAAC,6BAA6B,EAAE,CAAA;IACtC,CAAC;IAEO,SAAS;QACf,oCAAoC;QACpC,MAAM,WAAW,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,IAAI,CAAA;QAE7C,QAAQ,WAAW,EAAE,CAAC;YACpB,KAAK,IAAI,CAAC,CAAE,6BAA6B;YACzC,KAAK,IAAI,CAAC,CAAE,8CAA8C;YAC1D,KAAK,IAAI,CAAC,CAAE,6BAA6B;YACzC,KAAK,IAAI,EAAG,8CAA8C;gBACxD,cAAc;gBACd,MAAK;YAEP,KAAK,IAAI,CAAC,CAAE,mBAAmB;YAC/B,KAAK,IAAI,EAAG,eAAe;gBACzB,eAAe;gBACf,MAAK;YAEP,KAAK,IAAI,EAAG,oBAAoB;gBAC9B,IAAI,CAAC,GAAG,GAAG,KAAK,CAAA;gBAChB,MAAK;YAEP,KAAK,IAAI,EAAG,qBAAqB;gBAC/B,IAAI,CAAC,GAAG,GAAG,IAAI,CAAA;gBACf,MAAK;QACT,CAAC;QAED,iDAAiD;QACjD,IAAI,CAAC,6BAA6B,EAAE,CAAA;IACtC,CAAC;IAEO,6BAA6B;QACnC,uDAAuD;QACvD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC,EAAE,EAAE,CAAC;YACpD,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBACvC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAA;YACvF,CAAC;QACH,CAAC;QACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC,EAAE,EAAE,CAAC;YACpD,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBACvC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAA;YACvF,CAAC;QACH,CAAC;IACH,CAAC;IAEO,yBAAyB;QAC/B,kFAAkF;QAClF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,qBAAqB,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACxD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,qBAAqB,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC5D,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;oBACjF,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAE,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC,WAAW,EAAE,EAAE,CAAC;wBAC5F,OAAO;wBACP,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAA;wBACtC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;wBACzD,IAAI,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAA;oBACtC,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,wDAAwD;QACxD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,qBAAqB,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACxD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,qBAAqB,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC5D,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;oBACjF,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAE,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC,WAAW,EAAE,EAAE,CAAC;wBAC5F,OAAO;wBACP,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAA;wBACtC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;wBACzD,IAAI,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAA;oBACtC,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,aAAa,CAAC,UAAsB;QAClC,IAAI,UAAU,KAAK,IAAI,IAAI,IAAI,CAAC,qBAAqB,GAAG,QAAQ,CAAC,wBAAwB,EAAE,CAAC;YAC1F,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,GAAG,UAAU,CAAA;YACjE,IAAI,CAAC,yBAAyB,EAAE,CAAA;YAChC,uDAAuD;YACvD,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAA;QACvE,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,aAAa,CAAC,UAAsB;QAClC,IAAI,UAAU,KAAK,IAAI,IAAI,IAAI,CAAC,qBAAqB,GAAG,QAAQ,CAAC,wBAAwB,EAAE,CAAC;YAC1F,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,GAAG,UAAU,CAAA;YACjE,IAAI,CAAC,yBAAyB,EAAE,CAAA;YAChC,uDAAuD;YACvD,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAA;QACvE,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,kBAAkB,CAAC,KAAa;QAC9B,IAAI,KAAK,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;YACvC,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAA;QACtC,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;;OAIG;IACH,kBAAkB,CAAC,KAAa;QAC9B,IAAI,KAAK,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;YACvC,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAA;QACtC,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;;AAvpBH,4BAwpBC;AAvpBC,oDAAoD;AAC5B,gBAAO,GAAG,IAAI,AAAP,CAAO,CAAM,oBAAoB;AACxC,gBAAO,GAAG,IAAI,AAAP,CAAO,CAAM,oBAAoB;AACxC,iBAAQ,GAAG,IAAI,AAAP,CAAO,CAAK,4BAA4B;AAChD,iBAAQ,GAAG,IAAI,AAAP,CAAO,CAAK,4BAA4B;AAChD,iBAAQ,GAAG,IAAI,AAAP,CAAO,CAAK,sBAAsB;AAC1C,iBAAQ,GAAG,IAAI,AAAP,CAAO,CAAK,uBAAuB;AAC3C,iBAAQ,GAAG,IAAI,AAAP,CAAO,CAAK,oBAAoB;AACxC,iBAAQ,GAAG,IAAI,AAAP,CAAO,CAAK,qBAAqB;AACzC,iBAAQ,GAAG,IAAI,AAAP,CAAO,CAAK,sBAAsB;AAC1C,iBAAQ,GAAG,IAAI,AAAP,CAAO,CAAK,uBAAuB;AAC3C,eAAM,GAAG,IAAI,AAAP,CAAO,CAAO,iBAAiB;AACrC,gBAAO,GAAG,IAAI,AAAP,CAAO,CAAM,6BAA6B;AACjD,gBAAO,GAAG,IAAI,AAAP,CAAO,CAAM,8BAA8B;AAClD,gBAAO,GAAG,IAAI,AAAP,CAAO,CAAM,0BAA0B;AAC9C,gBAAO,GAAG,IAAI,AAAP,CAAO,CAAM,4BAA4B;AAChD,mBAAU,GAAG,IAAI,AAAP,CAAO,CAAG,mCAAmC;AAE/E,kBAAkB;AACM,gBAAO,GAAG,IAAI,AAAP,CAAO;AACd,gBAAO,GAAG,IAAI,AAAP,CAAO;AACd,eAAM,GAAG,IAAI,AAAP,CAAO;AACb,gBAAO,GAAG,IAAI,AAAP,CAAO;AACd,gBAAO,GAAG,IAAI,AAAP,CAAO;AACd,eAAM,GAAG,IAAI,AAAP,CAAO;AACb,eAAM,GAAG,IAAI,AAAP,CAAO;AACb,gBAAO,GAAG,IAAI,AAAP,CAAO,CAAM,kBAAkB;AAEtC,iCAAwB,GAAG,CAAC,AAAJ,CAAI"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { IO } from '../IO';
|
|
2
|
+
/**
|
|
3
|
+
* RAMBank - Emulates banked RAM with 256KB total capacity
|
|
4
|
+
*
|
|
5
|
+
* Provides 256KB of banked RAM divided into 256 banks of 1KB each.
|
|
6
|
+
* A bank control register at address 0x3FF selects which bank is currently visible.
|
|
7
|
+
*
|
|
8
|
+
* Address Map:
|
|
9
|
+
* $000-$3FE: Bank data (1K window into selected bank)
|
|
10
|
+
* $3FF: Bank control register (read/write)
|
|
11
|
+
*/
|
|
12
|
+
export declare class RAMBank implements IO {
|
|
13
|
+
static TOTAL_SIZE: number;
|
|
14
|
+
static BANK_SIZE: number;
|
|
15
|
+
static NUM_BANKS: number;
|
|
16
|
+
static BANK_CONTROL_REGISTER: number;
|
|
17
|
+
data: number[];
|
|
18
|
+
currentBank: number;
|
|
19
|
+
raiseIRQ: () => void;
|
|
20
|
+
raiseNMI: () => void;
|
|
21
|
+
/**
|
|
22
|
+
* Read from RAM or bank control register
|
|
23
|
+
*/
|
|
24
|
+
read(address: number): number;
|
|
25
|
+
/**
|
|
26
|
+
* Write to RAM or bank control register
|
|
27
|
+
*/
|
|
28
|
+
write(address: number, data: number): void;
|
|
29
|
+
/**
|
|
30
|
+
* Tick - no timing behavior for RAM
|
|
31
|
+
*/
|
|
32
|
+
tick(frequency: number): void;
|
|
33
|
+
/**
|
|
34
|
+
* Reset the RAM card
|
|
35
|
+
*/
|
|
36
|
+
reset(coldStart: boolean): void;
|
|
37
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RAMBank = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* RAMBank - Emulates banked RAM with 256KB total capacity
|
|
6
|
+
*
|
|
7
|
+
* Provides 256KB of banked RAM divided into 256 banks of 1KB each.
|
|
8
|
+
* A bank control register at address 0x3FF selects which bank is currently visible.
|
|
9
|
+
*
|
|
10
|
+
* Address Map:
|
|
11
|
+
* $000-$3FE: Bank data (1K window into selected bank)
|
|
12
|
+
* $3FF: Bank control register (read/write)
|
|
13
|
+
*/
|
|
14
|
+
class RAMBank {
|
|
15
|
+
constructor() {
|
|
16
|
+
this.data = [...Array(RAMBank.TOTAL_SIZE)].fill(0x00);
|
|
17
|
+
this.currentBank = 0;
|
|
18
|
+
this.raiseIRQ = () => { };
|
|
19
|
+
this.raiseNMI = () => { };
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Read from RAM or bank control register
|
|
23
|
+
*/
|
|
24
|
+
read(address) {
|
|
25
|
+
// Reading from bank control register returns current bank number
|
|
26
|
+
if (address === RAMBank.BANK_CONTROL_REGISTER) {
|
|
27
|
+
return this.currentBank;
|
|
28
|
+
}
|
|
29
|
+
// Calculate actual address in RAM: bank * bank_size + offset and return data
|
|
30
|
+
return this.data[this.currentBank * RAMBank.BANK_SIZE + address];
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Write to RAM or bank control register
|
|
34
|
+
*/
|
|
35
|
+
write(address, data) {
|
|
36
|
+
// Writing to bank control register switches banks
|
|
37
|
+
if (address === RAMBank.BANK_CONTROL_REGISTER) {
|
|
38
|
+
this.currentBank = data & 0xFF; // Ensure 0-255 range
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
// Calculate actual address in RAM: bank * bank_size + offset and store data
|
|
42
|
+
this.data[this.currentBank * RAMBank.BANK_SIZE + address] = data & 0xFF;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Tick - no timing behavior for RAM
|
|
46
|
+
*/
|
|
47
|
+
tick(frequency) { }
|
|
48
|
+
/**
|
|
49
|
+
* Reset the RAM card
|
|
50
|
+
*/
|
|
51
|
+
reset(coldStart) {
|
|
52
|
+
if (coldStart) {
|
|
53
|
+
this.currentBank = 0;
|
|
54
|
+
this.data.fill(0x00);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
exports.RAMBank = RAMBank;
|
|
59
|
+
RAMBank.TOTAL_SIZE = 256 * 1024; // 256k bytes
|
|
60
|
+
RAMBank.BANK_SIZE = 1024; // 1k per bank
|
|
61
|
+
RAMBank.NUM_BANKS = RAMBank.TOTAL_SIZE / RAMBank.BANK_SIZE; // 256 banks
|
|
62
|
+
RAMBank.BANK_CONTROL_REGISTER = 0x3FF; // Last byte in 1k window
|
|
63
|
+
//# sourceMappingURL=RAMBank.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RAMBank.js","sourceRoot":"","sources":["../../../src/components/IO/RAMBank.ts"],"names":[],"mappings":";;;AAEA;;;;;;;;;GASG;AACH,MAAa,OAAO;IAApB;QAOE,SAAI,GAAa,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC1D,gBAAW,GAAW,CAAC,CAAA;QAEvB,aAAQ,GAAG,GAAG,EAAE,GAAE,CAAC,CAAA;QACnB,aAAQ,GAAG,GAAG,EAAE,GAAE,CAAC,CAAA;IA4CrB,CAAC;IA1CC;;OAEG;IACH,IAAI,CAAC,OAAe;QAClB,iEAAiE;QACjE,IAAI,OAAO,KAAK,OAAO,CAAC,qBAAqB,EAAE,CAAC;YAC9C,OAAO,IAAI,CAAC,WAAW,CAAA;QACzB,CAAC;QAED,6EAA6E;QAC7E,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,CAAA;IAClE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAe,EAAE,IAAY;QACjC,kDAAkD;QAClD,IAAI,OAAO,KAAK,OAAO,CAAC,qBAAqB,EAAE,CAAC;YAC9C,IAAI,CAAC,WAAW,GAAG,IAAI,GAAG,IAAI,CAAA,CAAC,qBAAqB;YACpD,OAAM;QACR,CAAC;QAED,4EAA4E;QAC5E,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,GAAG,IAAI,GAAG,IAAI,CAAA;IACzE,CAAC;IAED;;OAEG;IACH,IAAI,CAAC,SAAiB,IAAS,CAAC;IAEhC;;OAEG;IACH,KAAK,CAAC,SAAkB;QACtB,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,CAAC,WAAW,GAAG,CAAC,CAAA;YACpB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACtB,CAAC;IACH,CAAC;;AArDH,0BAuDC;AArDQ,kBAAU,GAAW,GAAG,GAAG,IAAI,AAArB,CAAqB,CAAC,aAAa;AAC7C,iBAAS,GAAW,IAAI,AAAf,CAAe,CAAC,cAAc;AACvC,iBAAS,GAAW,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,SAAS,AAAjD,CAAiD,CAAC,YAAY;AACvE,6BAAqB,GAAW,KAAK,AAAhB,CAAgB,CAAC,yBAAyB"}
|