jsbeeb 1.1.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/.editorconfig +15 -0
- package/.git-blame-ignore-revs +3 -0
- package/.github/copilot-instructions.md +94 -0
- package/.github/workflows/claude-issue-triage.yml +105 -0
- package/.github/workflows/claude.yml +63 -0
- package/.github/workflows/release-please.yml +75 -0
- package/.github/workflows/test-and-deploy.yml +86 -0
- package/.gitmodules +6 -0
- package/.husky/pre-commit +1 -0
- package/.idea/codeStyleSettings.xml +9 -0
- package/.idea/codeStyles/Project.xml +62 -0
- package/.idea/codeStyles/codeStyleConfig.xml +5 -0
- package/.idea/compiler.xml +22 -0
- package/.idea/copyright/profiles_settings.xml +3 -0
- package/.idea/encodings.xml +6 -0
- package/.idea/inspectionProfiles/Project_Default.xml +7 -0
- package/.idea/jsLibraryMappings.xml +6 -0
- package/.idea/jsLinters/jshint.xml +85 -0
- package/.idea/jsLinters/jslint.xml +15 -0
- package/.idea/jsbeeb.iml +11 -0
- package/.idea/misc.xml +6 -0
- package/.idea/modules.xml +8 -0
- package/.idea/prettier.xml +7 -0
- package/.idea/runConfigurations/Debug.xml +5 -0
- package/.idea/scopes/scope_settings.xml +5 -0
- package/.idea/vcs.xml +8 -0
- package/.prettierignore +4 -0
- package/.prettierrc.json +1 -0
- package/.release-please-manifest.json +3 -0
- package/.vscode/launch.json +14 -0
- package/.vscode/settings.json +6 -0
- package/CHANGELOG.md +32 -0
- package/CLAUDE.md +136 -0
- package/COPYING +674 -0
- package/Dockerfile +22 -0
- package/Makefile +30 -0
- package/README.md +259 -0
- package/docker/nginx-default.conf +10 -0
- package/docs/pal-comb-filter-research.md +129 -0
- package/docs/pal-simulation-design.md +368 -0
- package/eslint.config.js +35 -0
- package/index.html +954 -0
- package/jsconfig.json +10 -0
- package/package.json +102 -0
- package/public/discs/README.Irq-Timing +3 -0
- package/public/discs/README.bcdtest +5 -0
- package/public/discs/README.elite +6 -0
- package/public/discs/README.eng_test +3 -0
- package/public/discs/README.protection +7 -0
- package/public/favicon.ico +0 -0
- package/public/images/botbar.png +0 -0
- package/public/images/cub-monitor.png +0 -0
- package/public/images/jsbeeb-example.png +0 -0
- package/public/images/placeholder.png +0 -0
- package/public/images/red-off-16.png +0 -0
- package/public/images/red-on-16.png +0 -0
- package/public/images/sb/CD-left.jpg +0 -0
- package/public/images/sb/CD-right.jpg +0 -0
- package/public/images/sidebar.png +0 -0
- package/public/images/tv.png +0 -0
- package/public/images/yellow-off-16.png +0 -0
- package/public/images/yellow-on-16.png +0 -0
- package/public/jsbeeb-icon.png +0 -0
- package/public/robots.txt +3 -0
- package/public/roms/ADFS1-53.rom +0 -0
- package/public/roms/BASIC.ROM +0 -0
- package/public/roms/README +4 -0
- package/public/roms/a01/BASIC1.rom +0 -0
- package/public/roms/ample.rom +0 -0
- package/public/roms/ats-3.0.rom +0 -0
- package/public/roms/b/DFS-0.9.rom +0 -0
- package/public/roms/b/DFS-1.2.rom +0 -0
- package/public/roms/b1770/dfs1770.rom +0 -0
- package/public/roms/b1770/zADFS.ROM +0 -0
- package/public/roms/bp/dfs.rom +0 -0
- package/public/roms/bp/zADFS.ROM +0 -0
- package/public/roms/bpos.rom +0 -0
- package/public/roms/compact/adfs210.rom +0 -0
- package/public/roms/compact/basic48.rom +0 -0
- package/public/roms/compact/basic486.rom +0 -0
- package/public/roms/compact/os51.rom +0 -0
- package/public/roms/compact/utils.rom +0 -0
- package/public/roms/deos.rom +0 -0
- package/public/roms/master/anfs-4.25.rom +0 -0
- package/public/roms/master/mos.txt +68819 -0
- package/public/roms/master/mos3.20 +0 -0
- package/public/roms/os.rom +0 -0
- package/public/roms/os01.rom +0 -0
- package/public/roms/tube/6502Tube.rom +0 -0
- package/public/roms/tube/ARMeval_100.rom +0 -0
- package/public/roms/tube/BIOS.ROM +0 -0
- package/public/roms/tube/ReCo6502ROM_816 +0 -0
- package/public/roms/tube/Z80_120.rom +0 -0
- package/public/roms/us/USBASIC.rom +0 -0
- package/public/roms/us/USDNFS.rom +0 -0
- package/public/roms/usmos.rom +0 -0
- package/public/sounds/disc525/motor.wav +0 -0
- package/public/sounds/disc525/motoroff.wav +0 -0
- package/public/sounds/disc525/motoron.wav +0 -0
- package/public/sounds/disc525/seek.wav +0 -0
- package/public/sounds/disc525/seek2.wav +0 -0
- package/public/sounds/disc525/seek3.wav +0 -0
- package/public/sounds/disc525/step.wav +0 -0
- package/public/teletext/txt0.dat +0 -0
- package/public/teletext/txt1.dat +0 -0
- package/public/teletext/txt2.dat +0 -0
- package/public/teletext/txt3.dat +0 -0
- package/release-please-config.json +13 -0
- package/run-container.sh +92 -0
- package/src/6502.js +1347 -0
- package/src/6502.opcodes.js +1411 -0
- package/src/acia.js +261 -0
- package/src/adc.js +149 -0
- package/src/analogue-source.js +21 -0
- package/src/app/app.js +175 -0
- package/src/app/electron.js +20 -0
- package/src/app/preload.js +8 -0
- package/src/app-bench.js +33 -0
- package/src/basic/multiline-tetris +9 -0
- package/src/basic-tokenise.js +104 -0
- package/src/canvas.js +177 -0
- package/src/cmos.js +141 -0
- package/src/config.js +165 -0
- package/src/ddnoise.js +138 -0
- package/src/disc-drive.js +371 -0
- package/src/disc-hfe.js +396 -0
- package/src/disc.js +997 -0
- package/src/econet/L3FS.dat +0 -0
- package/src/econet/scsi.dat +0 -0
- package/src/econet.js +714 -0
- package/src/fake6502.js +32 -0
- package/src/fdc.js +248 -0
- package/src/filestore.js +666 -0
- package/src/gamepad-source.js +59 -0
- package/src/gamepads.js +268 -0
- package/src/google-drive.js +160 -0
- package/src/intel-fdc.js +1717 -0
- package/src/jsbeeb.css +363 -0
- package/src/keyboard.js +411 -0
- package/src/lib/README +1 -0
- package/src/lib/webgl-debug.js +911 -0
- package/src/main.js +1759 -0
- package/src/microphone-input.js +149 -0
- package/src/models.js +200 -0
- package/src/mouse-joystick-source.js +107 -0
- package/src/music5000-worklet.js +43 -0
- package/src/music5000.js +207 -0
- package/src/scheduler.js +148 -0
- package/src/serial.js +31 -0
- package/src/soundchip.js +314 -0
- package/src/sth.js +59 -0
- package/src/tapes.js +265 -0
- package/src/teletext.js +348 -0
- package/src/teletext_adaptor.js +172 -0
- package/src/teletext_data.js +1064 -0
- package/src/touchscreen.js +86 -0
- package/src/tube.js +349 -0
- package/src/url-params.js +256 -0
- package/src/utils.js +1090 -0
- package/src/via.js +702 -0
- package/src/video-filters/pal-composite.js +94 -0
- package/src/video-filters/passthrough-filter.js +70 -0
- package/src/video-filters/shaders/pal-composite.frag.glsl +147 -0
- package/src/video-filters/shaders/pal-composite.vert.glsl +8 -0
- package/src/video-filters/shaders/passthrough.frag.glsl +6 -0
- package/src/video-filters/shaders/passthrough.vert.glsl +7 -0
- package/src/video.js +794 -0
- package/src/wd-fdc.js +1344 -0
- package/src/web/audio-handler.js +146 -0
- package/src/web/audio-renderer.js +115 -0
- package/src/web/debug.js +529 -0
- package/tests/integration/RmwX.asm +47 -0
- package/tests/integration/TestInstructionsSource +27 -0
- package/tests/integration/TestTimingsResults +27 -0
- package/tests/integration/TestTimingsSource +61 -0
- package/tests/integration/bcd.js +23 -0
- package/tests/integration/dormann.js +101 -0
- package/tests/integration/dp111timing.js +42 -0
- package/tests/integration/ensure-submodules.js +25 -0
- package/tests/integration/nops.bas +119 -0
- package/tests/integration/nops.js +24 -0
- package/tests/integration/protection.js +26 -0
- package/tests/integration/rmw.js +69 -0
- package/tests/integration/teletext/expected_bug_469.png +0 -0
- package/tests/integration/teletext/expected_flash_0.png +0 -0
- package/tests/integration/teletext/expected_flash_1.png +0 -0
- package/tests/integration/teletext/expected_hoglet_held_char.png +0 -0
- package/tests/integration/teletext/expected_reveal_flash_0.png +0 -0
- package/tests/integration/teletext/expected_reveal_flash_1.png +0 -0
- package/tests/integration/teletext.js +126 -0
- package/tests/integration/timings.js +56 -0
- package/tests/integration/via.js +1125 -0
- package/tests/suite/README.md +7 -0
- package/tests/suite/Test Suite 2.15.txt +373 -0
- package/tests/suite/bin/ start +0 -0
- package/tests/suite/bin/adca +0 -0
- package/tests/suite/bin/adcax +0 -0
- package/tests/suite/bin/adcay +0 -0
- package/tests/suite/bin/adcb +0 -0
- package/tests/suite/bin/adcix +0 -0
- package/tests/suite/bin/adciy +0 -0
- package/tests/suite/bin/adcz +0 -0
- package/tests/suite/bin/adczx +0 -0
- package/tests/suite/bin/alrb +0 -0
- package/tests/suite/bin/ancb +0 -0
- package/tests/suite/bin/anda +0 -0
- package/tests/suite/bin/andax +0 -0
- package/tests/suite/bin/anday +0 -0
- package/tests/suite/bin/andb +0 -0
- package/tests/suite/bin/andix +0 -0
- package/tests/suite/bin/andiy +0 -0
- package/tests/suite/bin/andz +0 -0
- package/tests/suite/bin/andzx +0 -0
- package/tests/suite/bin/aneb +0 -0
- package/tests/suite/bin/arrb +0 -0
- package/tests/suite/bin/asla +0 -0
- package/tests/suite/bin/aslax +0 -0
- package/tests/suite/bin/asln +0 -0
- package/tests/suite/bin/aslz +0 -0
- package/tests/suite/bin/aslzx +0 -0
- package/tests/suite/bin/asoa +0 -0
- package/tests/suite/bin/asoax +0 -0
- package/tests/suite/bin/asoay +0 -0
- package/tests/suite/bin/asoix +0 -0
- package/tests/suite/bin/asoiy +0 -0
- package/tests/suite/bin/asoz +0 -0
- package/tests/suite/bin/asozx +0 -0
- package/tests/suite/bin/axsa +0 -0
- package/tests/suite/bin/axsix +0 -0
- package/tests/suite/bin/axsz +0 -0
- package/tests/suite/bin/axszy +0 -0
- package/tests/suite/bin/bccr +0 -0
- package/tests/suite/bin/bcsr +0 -0
- package/tests/suite/bin/beqr +0 -0
- package/tests/suite/bin/bita +0 -0
- package/tests/suite/bin/bitz +0 -0
- package/tests/suite/bin/bmir +0 -0
- package/tests/suite/bin/bner +0 -0
- package/tests/suite/bin/bplr +0 -0
- package/tests/suite/bin/branchwrap +0 -0
- package/tests/suite/bin/brkn +0 -0
- package/tests/suite/bin/bvcr +0 -0
- package/tests/suite/bin/bvsr +0 -0
- package/tests/suite/bin/cia1pb6 +0 -0
- package/tests/suite/bin/cia1pb7 +0 -0
- package/tests/suite/bin/cia1ta +0 -0
- package/tests/suite/bin/cia1tab +0 -0
- package/tests/suite/bin/cia1tb +0 -0
- package/tests/suite/bin/cia1tb123 +0 -0
- package/tests/suite/bin/cia2pb6 +0 -0
- package/tests/suite/bin/cia2pb7 +0 -0
- package/tests/suite/bin/cia2ta +0 -0
- package/tests/suite/bin/cia2tb +0 -0
- package/tests/suite/bin/cia2tb123 +0 -0
- package/tests/suite/bin/clcn +0 -0
- package/tests/suite/bin/cldn +0 -0
- package/tests/suite/bin/clin +0 -0
- package/tests/suite/bin/clvn +0 -0
- package/tests/suite/bin/cmpa +0 -0
- package/tests/suite/bin/cmpax +0 -0
- package/tests/suite/bin/cmpay +0 -0
- package/tests/suite/bin/cmpb +0 -0
- package/tests/suite/bin/cmpix +0 -0
- package/tests/suite/bin/cmpiy +0 -0
- package/tests/suite/bin/cmpz +0 -0
- package/tests/suite/bin/cmpzx +0 -0
- package/tests/suite/bin/cntdef +0 -0
- package/tests/suite/bin/cnto2 +0 -0
- package/tests/suite/bin/cpuport +0 -0
- package/tests/suite/bin/cputiming +0 -0
- package/tests/suite/bin/cpxa +0 -0
- package/tests/suite/bin/cpxb +0 -0
- package/tests/suite/bin/cpxz +0 -0
- package/tests/suite/bin/cpya +0 -0
- package/tests/suite/bin/cpyb +0 -0
- package/tests/suite/bin/cpyz +0 -0
- package/tests/suite/bin/dcma +0 -0
- package/tests/suite/bin/dcmax +0 -0
- package/tests/suite/bin/dcmay +0 -0
- package/tests/suite/bin/dcmix +0 -0
- package/tests/suite/bin/dcmiy +0 -0
- package/tests/suite/bin/dcmz +0 -0
- package/tests/suite/bin/dcmzx +0 -0
- package/tests/suite/bin/deca +0 -0
- package/tests/suite/bin/decax +0 -0
- package/tests/suite/bin/decz +0 -0
- package/tests/suite/bin/deczx +0 -0
- package/tests/suite/bin/dexn +0 -0
- package/tests/suite/bin/deyn +0 -0
- package/tests/suite/bin/eora +0 -0
- package/tests/suite/bin/eorax +0 -0
- package/tests/suite/bin/eoray +0 -0
- package/tests/suite/bin/eorb +0 -0
- package/tests/suite/bin/eorix +0 -0
- package/tests/suite/bin/eoriy +0 -0
- package/tests/suite/bin/eorz +0 -0
- package/tests/suite/bin/eorzx +0 -0
- package/tests/suite/bin/finish +0 -0
- package/tests/suite/bin/flipos +0 -0
- package/tests/suite/bin/icr01 +0 -0
- package/tests/suite/bin/imr +0 -0
- package/tests/suite/bin/inca +0 -0
- package/tests/suite/bin/incax +0 -0
- package/tests/suite/bin/incz +0 -0
- package/tests/suite/bin/inczx +0 -0
- package/tests/suite/bin/insa +0 -0
- package/tests/suite/bin/insax +0 -0
- package/tests/suite/bin/insay +0 -0
- package/tests/suite/bin/insix +0 -0
- package/tests/suite/bin/insiy +0 -0
- package/tests/suite/bin/insz +0 -0
- package/tests/suite/bin/inszx +0 -0
- package/tests/suite/bin/inxn +0 -0
- package/tests/suite/bin/inyn +0 -0
- package/tests/suite/bin/irq +0 -0
- package/tests/suite/bin/jmpi +0 -0
- package/tests/suite/bin/jmpw +0 -0
- package/tests/suite/bin/jsrw +0 -0
- package/tests/suite/bin/lasay +0 -0
- package/tests/suite/bin/laxa +0 -0
- package/tests/suite/bin/laxay +0 -0
- package/tests/suite/bin/laxix +0 -0
- package/tests/suite/bin/laxiy +0 -0
- package/tests/suite/bin/laxz +0 -0
- package/tests/suite/bin/laxzy +0 -0
- package/tests/suite/bin/ldaa +0 -0
- package/tests/suite/bin/ldaax +0 -0
- package/tests/suite/bin/ldaay +0 -0
- package/tests/suite/bin/ldab +0 -0
- package/tests/suite/bin/ldaix +0 -0
- package/tests/suite/bin/ldaiy +0 -0
- package/tests/suite/bin/ldaz +0 -0
- package/tests/suite/bin/ldazx +0 -0
- package/tests/suite/bin/ldxa +0 -0
- package/tests/suite/bin/ldxay +0 -0
- package/tests/suite/bin/ldxb +0 -0
- package/tests/suite/bin/ldxz +0 -0
- package/tests/suite/bin/ldxzy +0 -0
- package/tests/suite/bin/ldya +0 -0
- package/tests/suite/bin/ldyax +0 -0
- package/tests/suite/bin/ldyb +0 -0
- package/tests/suite/bin/ldyz +0 -0
- package/tests/suite/bin/ldyzx +0 -0
- package/tests/suite/bin/loadth +0 -0
- package/tests/suite/bin/lsea +0 -0
- package/tests/suite/bin/lseax +0 -0
- package/tests/suite/bin/lseay +0 -0
- package/tests/suite/bin/lseix +0 -0
- package/tests/suite/bin/lseiy +0 -0
- package/tests/suite/bin/lsez +0 -0
- package/tests/suite/bin/lsezx +0 -0
- package/tests/suite/bin/lsra +0 -0
- package/tests/suite/bin/lsrax +0 -0
- package/tests/suite/bin/lsrn +0 -0
- package/tests/suite/bin/lsrz +0 -0
- package/tests/suite/bin/lsrzx +0 -0
- package/tests/suite/bin/lxab +0 -0
- package/tests/suite/bin/mmu +0 -0
- package/tests/suite/bin/mmufetch +0 -0
- package/tests/suite/bin/nmi +0 -0
- package/tests/suite/bin/nopa +0 -0
- package/tests/suite/bin/nopax +0 -0
- package/tests/suite/bin/nopb +0 -0
- package/tests/suite/bin/nopn +0 -0
- package/tests/suite/bin/nopz +0 -0
- package/tests/suite/bin/nopzx +0 -0
- package/tests/suite/bin/oneshot +0 -0
- package/tests/suite/bin/oraa +0 -0
- package/tests/suite/bin/oraax +0 -0
- package/tests/suite/bin/oraay +0 -0
- package/tests/suite/bin/orab +0 -0
- package/tests/suite/bin/oraix +0 -0
- package/tests/suite/bin/oraiy +0 -0
- package/tests/suite/bin/oraz +0 -0
- package/tests/suite/bin/orazx +0 -0
- package/tests/suite/bin/phan +0 -0
- package/tests/suite/bin/phpn +0 -0
- package/tests/suite/bin/plan +0 -0
- package/tests/suite/bin/plpn +0 -0
- package/tests/suite/bin/rlaa +0 -0
- package/tests/suite/bin/rlaax +0 -0
- package/tests/suite/bin/rlaay +0 -0
- package/tests/suite/bin/rlaix +0 -0
- package/tests/suite/bin/rlaiy +0 -0
- package/tests/suite/bin/rlaz +0 -0
- package/tests/suite/bin/rlazx +0 -0
- package/tests/suite/bin/rola +0 -0
- package/tests/suite/bin/rolax +0 -0
- package/tests/suite/bin/roln +0 -0
- package/tests/suite/bin/rolz +0 -0
- package/tests/suite/bin/rolzx +0 -0
- package/tests/suite/bin/rora +0 -0
- package/tests/suite/bin/rorax +0 -0
- package/tests/suite/bin/rorn +0 -0
- package/tests/suite/bin/rorz +0 -0
- package/tests/suite/bin/rorzx +0 -0
- package/tests/suite/bin/rraa +0 -0
- package/tests/suite/bin/rraax +0 -0
- package/tests/suite/bin/rraay +0 -0
- package/tests/suite/bin/rraix +0 -0
- package/tests/suite/bin/rraiy +0 -0
- package/tests/suite/bin/rraz +0 -0
- package/tests/suite/bin/rrazx +0 -0
- package/tests/suite/bin/rtin +0 -0
- package/tests/suite/bin/rtsn +0 -0
- package/tests/suite/bin/sbca +0 -0
- package/tests/suite/bin/sbcax +0 -0
- package/tests/suite/bin/sbcay +0 -0
- package/tests/suite/bin/sbcb +0 -0
- package/tests/suite/bin/sbcb(eb) +0 -0
- package/tests/suite/bin/sbcix +0 -0
- package/tests/suite/bin/sbciy +0 -0
- package/tests/suite/bin/sbcz +0 -0
- package/tests/suite/bin/sbczx +0 -0
- package/tests/suite/bin/sbxb +0 -0
- package/tests/suite/bin/secn +0 -0
- package/tests/suite/bin/sedn +0 -0
- package/tests/suite/bin/sein +0 -0
- package/tests/suite/bin/shaay +0 -0
- package/tests/suite/bin/shaiy +0 -0
- package/tests/suite/bin/shsay +0 -0
- package/tests/suite/bin/shxay +0 -0
- package/tests/suite/bin/shyax +0 -0
- package/tests/suite/bin/staa +0 -0
- package/tests/suite/bin/staax +0 -0
- package/tests/suite/bin/staay +0 -0
- package/tests/suite/bin/staix +0 -0
- package/tests/suite/bin/staiy +0 -0
- package/tests/suite/bin/staz +0 -0
- package/tests/suite/bin/stazx +0 -0
- package/tests/suite/bin/stxa +0 -0
- package/tests/suite/bin/stxz +0 -0
- package/tests/suite/bin/stxzy +0 -0
- package/tests/suite/bin/stya +0 -0
- package/tests/suite/bin/styz +0 -0
- package/tests/suite/bin/styzx +0 -0
- package/tests/suite/bin/taxn +0 -0
- package/tests/suite/bin/tayn +0 -0
- package/tests/suite/bin/trap1 +0 -0
- package/tests/suite/bin/trap10 +0 -0
- package/tests/suite/bin/trap11 +0 -0
- package/tests/suite/bin/trap12 +0 -0
- package/tests/suite/bin/trap13 +0 -0
- package/tests/suite/bin/trap14 +0 -0
- package/tests/suite/bin/trap15 +0 -0
- package/tests/suite/bin/trap16 +0 -0
- package/tests/suite/bin/trap17 +0 -0
- package/tests/suite/bin/trap2 +0 -0
- package/tests/suite/bin/trap3 +0 -0
- package/tests/suite/bin/trap4 +0 -0
- package/tests/suite/bin/trap5 +0 -0
- package/tests/suite/bin/trap6 +0 -0
- package/tests/suite/bin/trap7 +0 -0
- package/tests/suite/bin/trap8 +0 -0
- package/tests/suite/bin/trap9 +0 -0
- package/tests/suite/bin/tsxn +0 -0
- package/tests/suite/bin/txan +0 -0
- package/tests/suite/bin/txsn +0 -0
- package/tests/suite/bin/tyan +0 -0
- package/tests/suite/cbm-hackers-post.html +178 -0
- package/tests/suite/cbm-hackers-post.md +78 -0
- package/tests/test-machine.js +288 -0
- package/tests/test-suite.js +147 -0
- package/tests/test.css +7 -0
- package/tests/unit/gzip/test-1 +0 -0
- package/tests/unit/gzip/test-1.gz +0 -0
- package/tests/unit/gzip/test-2 +0 -0
- package/tests/unit/gzip/test-2.gz +0 -0
- package/tests/unit/gzip/test-3 +0 -0
- package/tests/unit/gzip/test-3.gz +0 -0
- package/tests/unit/gzip/test-4 +0 -0
- package/tests/unit/gzip/test-4.gz +0 -0
- package/tests/unit/test-adc.js +307 -0
- package/tests/unit/test-bcd.js +30 -0
- package/tests/unit/test-cmos.js +266 -0
- package/tests/unit/test-disc-drive.js +85 -0
- package/tests/unit/test-disc-hfe.js +347 -0
- package/tests/unit/test-disc.js +232 -0
- package/tests/unit/test-fifo.js +35 -0
- package/tests/unit/test-gamepad-source.js +67 -0
- package/tests/unit/test-gzip.js +22 -0
- package/tests/unit/test-intel-fdc.js +93 -0
- package/tests/unit/test-keyboard.js +410 -0
- package/tests/unit/test-mouse-joystick-source.js +128 -0
- package/tests/unit/test-scheduler.js +190 -0
- package/tests/unit/test-serial.js +154 -0
- package/tests/unit/test-teletext-adaptor.js +359 -0
- package/tests/unit/test-tokenise.js +65 -0
- package/tests/unit/test-url-params.js +398 -0
- package/tests/unit/test-utils.js +276 -0
- package/tests/unit/test-video.js +498 -0
- package/tests/unit/test-zip.js +56 -0
- package/tests/unit/zip/test-mixed.zip +0 -0
- package/tests/unit/zip/test-rom.zip +0 -0
- package/tests/unit/zip/test-ssd.zip +0 -0
- package/tools/fir-generator.js +80 -0
- package/tools/vite-plugin-fir-shader.js +131 -0
- package/vite.config.js +34 -0
package/.editorconfig
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
# jsbeeb - JavaScript BBC Micro Emulator
|
|
2
|
+
|
|
3
|
+
Always reference these instructions first and fallback to search or bash commands only when you encounter unexpected information that does not match the info here.
|
|
4
|
+
|
|
5
|
+
jsbeeb is a JavaScript BBC Micro emulator that runs in modern browsers and as an Electron desktop application. It emulates a 32K BBC B (with sideways RAM) and a 128K BBC Master, along with numerous peripherals. The emulator is deployed to https://bbc.xania.org and includes comprehensive processor and timing accuracy tests.
|
|
6
|
+
|
|
7
|
+
## Development Guidelines
|
|
8
|
+
|
|
9
|
+
**Always reference CLAUDE.md first** for general development practices including:
|
|
10
|
+
|
|
11
|
+
- Build and test commands
|
|
12
|
+
- Code style guidelines
|
|
13
|
+
- Test organization principles
|
|
14
|
+
- Code architecture patterns
|
|
15
|
+
- Git workflow conventions
|
|
16
|
+
|
|
17
|
+
## Working Effectively
|
|
18
|
+
|
|
19
|
+
### Bootstrap and Build Process
|
|
20
|
+
|
|
21
|
+
Run these commands in order for a fresh setup:
|
|
22
|
+
|
|
23
|
+
1. **Install dependencies**: `npm install` -- takes 13 seconds. Node.js 22 required (will show warnings with older versions).
|
|
24
|
+
2. **Initialize submodules**: `git submodule update --init --recursive` -- required for integration tests. Takes 10 seconds.
|
|
25
|
+
3. **Build application**: `npm run build` -- takes 4 seconds. Creates production bundle in `dist/` directory.
|
|
26
|
+
4. **NEVER CANCEL**: Full test suite: `npm run test` -- takes 91 seconds total. Set timeout to 120+ seconds.
|
|
27
|
+
- Unit tests: `npm run test:unit` -- takes 7 seconds
|
|
28
|
+
- Integration tests: `npm run test:integration` -- takes 18 seconds (requires submodules)
|
|
29
|
+
- **NEVER CANCEL**: CPU tests: `npm run test:cpu` -- takes 66 seconds. Critical for emulation accuracy.
|
|
30
|
+
|
|
31
|
+
### Timeout Requirements
|
|
32
|
+
|
|
33
|
+
- **NEVER CANCEL** CPU tests: Use timeout of 120+ seconds minimum
|
|
34
|
+
- Integration tests: Use timeout of 30+ seconds
|
|
35
|
+
- Unit tests: Use timeout of 15+ seconds
|
|
36
|
+
- Build commands: Use timeout of 10+ seconds
|
|
37
|
+
|
|
38
|
+
## Manual Testing Requirements
|
|
39
|
+
|
|
40
|
+
After making changes, ALWAYS validate the emulator functionality:
|
|
41
|
+
|
|
42
|
+
1. **Run development server**: `npm start` (see CLAUDE.md for important restrictions)
|
|
43
|
+
2. **Navigate to**: http://localhost:5173/
|
|
44
|
+
3. **Verify emulator loads**: Should see "Loading OS from roms/os.rom", "Loading ROM from roms/BASIC.ROM", "Loading ROM from roms/b/DFS-1.2.rom", "Loading disc from discs/elite.ssd" in console
|
|
45
|
+
4. **Check emulator runs**: Virtual MHz counter should show ~8.4, play button should be disabled when running
|
|
46
|
+
5. **Verify interface**: BBC Micro screen, navigation menu, disc/cassette controls should be visible
|
|
47
|
+
6. **Test basic functionality**: Emulator should show the classic BBC Micro boot screen and respond to keyboard input
|
|
48
|
+
|
|
49
|
+
### Validation Scenarios
|
|
50
|
+
|
|
51
|
+
Execute these complete scenarios to verify changes work correctly:
|
|
52
|
+
|
|
53
|
+
- **Boot sequence**: Emulator loads all ROMs and shows BBC Micro startup
|
|
54
|
+
- **Disc loading**: Elite disc loads automatically, F12 (Break) should boot the game
|
|
55
|
+
- **Interface interaction**: Menu buttons (Discs, Cassettes, Reset, More) should be functional
|
|
56
|
+
- **Emulation state**: Play/pause controls should work, virtual MHz should be displayed
|
|
57
|
+
|
|
58
|
+
## Repository Knowledge
|
|
59
|
+
|
|
60
|
+
### Key Directories and Files
|
|
61
|
+
|
|
62
|
+
```
|
|
63
|
+
/
|
|
64
|
+
├── src/ # Main application source
|
|
65
|
+
│ ├── main.js # Web application entry point
|
|
66
|
+
│ ├── app/app.js # Electron application entry
|
|
67
|
+
│ ├── 6502.js # CPU emulation core
|
|
68
|
+
│ ├── video.js # Video system emulation
|
|
69
|
+
│ ├── fdc.js # Floppy disc controller
|
|
70
|
+
│ └── ... # Other emulation components
|
|
71
|
+
├── tests/ # Test suites
|
|
72
|
+
│ ├── unit/ # Fast component tests
|
|
73
|
+
│ ├── integration/ # End-to-end tests
|
|
74
|
+
│ └── test-suite.js # CPU accuracy tests
|
|
75
|
+
├── public/ # Static assets (ROMs, discs, tapes)
|
|
76
|
+
├── CLAUDE.md # Development guidelines (reference this file)
|
|
77
|
+
└── package.json # Dependencies and scripts
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### Git Submodule Requirements
|
|
81
|
+
|
|
82
|
+
Integration tests require these submodules:
|
|
83
|
+
|
|
84
|
+
- `tests/6502_65C02_functional_tests` - Klaus Dormann's 6502 test suite
|
|
85
|
+
- `tests/integration/dp111_6502Timing` - Detailed timing tests
|
|
86
|
+
|
|
87
|
+
Initialize with: `git submodule update --init --recursive`
|
|
88
|
+
|
|
89
|
+
### Common Issues
|
|
90
|
+
|
|
91
|
+
- **"Functional tests submodule missing"**: Run `git submodule update --init --recursive`
|
|
92
|
+
- **Node version warnings**: Upgrade to Node.js 22 (required in package.json)
|
|
93
|
+
- **Test timeouts**: Increase timeout values, especially for CPU tests (66+ seconds)
|
|
94
|
+
- **Build warnings about chunk size**: Expected behavior due to large emulation codebase
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
name: Claude Issue Triage
|
|
2
|
+
description: Automatically triage GitHub issues using Claude Code
|
|
3
|
+
|
|
4
|
+
on:
|
|
5
|
+
issues:
|
|
6
|
+
types: [opened]
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
triage-issue:
|
|
10
|
+
runs-on: ubuntu-latest
|
|
11
|
+
timeout-minutes: 10
|
|
12
|
+
permissions:
|
|
13
|
+
contents: read
|
|
14
|
+
issues: write
|
|
15
|
+
|
|
16
|
+
steps:
|
|
17
|
+
- name: Checkout repository
|
|
18
|
+
uses: actions/checkout@v4
|
|
19
|
+
|
|
20
|
+
- name: Create triage prompt
|
|
21
|
+
run: |
|
|
22
|
+
mkdir -p /tmp/claude-prompts
|
|
23
|
+
cat > /tmp/claude-prompts/triage-prompt.txt << 'EOF'
|
|
24
|
+
You're an issue triage assistant for GitHub issues. Your task is to analyze the issue and select appropriate labels from the provided list.
|
|
25
|
+
|
|
26
|
+
IMPORTANT: If there's no ambiguity or error: do not post any comments or messages to the issue. Your only action should be to apply labels.
|
|
27
|
+
|
|
28
|
+
Issue Information:
|
|
29
|
+
- REPO: ${{ github.repository }}
|
|
30
|
+
- ISSUE_NUMBER: ${{ github.event.issue.number }}
|
|
31
|
+
|
|
32
|
+
TASK OVERVIEW:
|
|
33
|
+
|
|
34
|
+
1. First, fetch the list of labels available in this repository by running: `gh label list`. Run exactly this command with nothing else.
|
|
35
|
+
|
|
36
|
+
2. Next, use the GitHub tools to get context about the issue:
|
|
37
|
+
- You have access to these tools:
|
|
38
|
+
- mcp__github__get_issue: Use this to retrieve the current issue's details including title, description, and existing labels
|
|
39
|
+
- mcp__github__get_issue_comments: Use this to read any discussion or additional context provided in the comments
|
|
40
|
+
- mcp__github__update_issue: Use this to apply labels to the issue (do not use this for commenting)
|
|
41
|
+
- mcp__github__search_issues: Use this to find similar issues that might provide context for proper categorization and to identify potential duplicate issues
|
|
42
|
+
- mcp__github__list_issues: Use this to understand patterns in how other issues are labeled
|
|
43
|
+
- Start by using mcp__github__get_issue to get the issue details
|
|
44
|
+
|
|
45
|
+
3. Analyze the issue content, considering:
|
|
46
|
+
- The issue title and description
|
|
47
|
+
- The type of issue (bug report, feature request, question, etc.)
|
|
48
|
+
- Technical areas mentioned
|
|
49
|
+
- Severity or priority indicators
|
|
50
|
+
- User impact
|
|
51
|
+
- Components affected
|
|
52
|
+
|
|
53
|
+
4. Select appropriate labels from the available labels list provided above:
|
|
54
|
+
- Choose labels that accurately reflect the issue's nature
|
|
55
|
+
- Be specific but comprehensive
|
|
56
|
+
- If you find similar issues using mcp__github__search_issues, consider using a "duplicate" label if appropriate. Only do so if the issue is a duplicate of another OPEN issue.
|
|
57
|
+
|
|
58
|
+
5. Apply the selected labels:
|
|
59
|
+
- Use mcp__github__update_issue to apply your selected labels
|
|
60
|
+
- DO NOT post any comments explaining your decision
|
|
61
|
+
- DO NOT communicate directly with users other than @mattgodbolt
|
|
62
|
+
- If no labels are clearly applicable, do not apply any labels
|
|
63
|
+
|
|
64
|
+
IMPORTANT GUIDELINES:
|
|
65
|
+
- Be thorough in your analysis
|
|
66
|
+
- Only select labels from the provided list above
|
|
67
|
+
- DO NOT post any comments to the issue EXCEPT as defined below
|
|
68
|
+
- It's okay to not add any labels if none are clearly applicable
|
|
69
|
+
- If there's an issue understanding these instructions or you encounter an error, post a message and mark it `@mattgodbolt` for attention
|
|
70
|
+
EOF
|
|
71
|
+
|
|
72
|
+
- name: Setup GitHub MCP Server
|
|
73
|
+
run: |
|
|
74
|
+
mkdir -p /tmp/mcp-config
|
|
75
|
+
cat > /tmp/mcp-config/mcp-servers.json << 'EOF'
|
|
76
|
+
{
|
|
77
|
+
"mcpServers": {
|
|
78
|
+
"github": {
|
|
79
|
+
"command": "docker",
|
|
80
|
+
"args": [
|
|
81
|
+
"run",
|
|
82
|
+
"-i",
|
|
83
|
+
"--rm",
|
|
84
|
+
"-e",
|
|
85
|
+
"GITHUB_PERSONAL_ACCESS_TOKEN",
|
|
86
|
+
"ghcr.io/github/github-mcp-server:sha-ff3036d"
|
|
87
|
+
],
|
|
88
|
+
"env": {
|
|
89
|
+
"GITHUB_PERSONAL_ACCESS_TOKEN": "${GH_TOKEN}"
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
EOF
|
|
95
|
+
|
|
96
|
+
- name: Run Claude Code for Issue Triage
|
|
97
|
+
uses: anthropics/claude-code-base-action@beta
|
|
98
|
+
with:
|
|
99
|
+
prompt_file: /tmp/claude-prompts/triage-prompt.txt
|
|
100
|
+
allowed_tools: "Bash(gh label list),mcp__github__get_issue,mcp__github__get_issue_comments,mcp__github__update_issue,mcp__github__search_issues,mcp__github__list_issues"
|
|
101
|
+
timeout_minutes: "5"
|
|
102
|
+
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
|
|
103
|
+
mcp_config: /tmp/mcp-config/mcp-servers.json
|
|
104
|
+
claude_env: |
|
|
105
|
+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
name: Claude Code
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
issue_comment:
|
|
5
|
+
types: [created]
|
|
6
|
+
pull_request_review_comment:
|
|
7
|
+
types: [created]
|
|
8
|
+
issues:
|
|
9
|
+
types: [opened, assigned]
|
|
10
|
+
pull_request_review:
|
|
11
|
+
types: [submitted]
|
|
12
|
+
|
|
13
|
+
jobs:
|
|
14
|
+
claude:
|
|
15
|
+
if: |
|
|
16
|
+
(github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) ||
|
|
17
|
+
(github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude')) ||
|
|
18
|
+
(github.event_name == 'pull_request_review' && contains(github.event.review.body, '@claude')) ||
|
|
19
|
+
(github.event_name == 'issues' && (contains(github.event.issue.body, '@claude') || contains(github.event.issue.title, '@claude')))
|
|
20
|
+
runs-on: ubuntu-latest
|
|
21
|
+
permissions:
|
|
22
|
+
contents: read
|
|
23
|
+
pull-requests: read
|
|
24
|
+
issues: read
|
|
25
|
+
id-token: write
|
|
26
|
+
actions: read # Required for Claude to read CI results on PRs
|
|
27
|
+
steps:
|
|
28
|
+
- name: Checkout repository
|
|
29
|
+
uses: actions/checkout@v4
|
|
30
|
+
with:
|
|
31
|
+
fetch-depth: 1
|
|
32
|
+
|
|
33
|
+
- name: Run Claude Code
|
|
34
|
+
id: claude
|
|
35
|
+
uses: anthropics/claude-code-action@beta
|
|
36
|
+
with:
|
|
37
|
+
claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
|
|
38
|
+
|
|
39
|
+
# This is an optional setting that allows Claude to read CI results on PRs
|
|
40
|
+
additional_permissions: |
|
|
41
|
+
actions: read
|
|
42
|
+
|
|
43
|
+
# Optional: Specify model (defaults to Claude Sonnet 4, uncomment for Claude Opus 4.1)
|
|
44
|
+
# model: "claude-opus-4-1-20250805"
|
|
45
|
+
|
|
46
|
+
# Optional: Customize the trigger phrase (default: @claude)
|
|
47
|
+
# trigger_phrase: "/claude"
|
|
48
|
+
|
|
49
|
+
# Optional: Trigger when specific user is assigned to an issue
|
|
50
|
+
# assignee_trigger: "claude-bot"
|
|
51
|
+
|
|
52
|
+
# Optional: Allow Claude to run specific commands
|
|
53
|
+
# allowed_tools: "Bash(npm install),Bash(npm run build),Bash(npm run test:*),Bash(npm run lint:*)"
|
|
54
|
+
|
|
55
|
+
# Optional: Add custom instructions for Claude to customize its behavior for your project
|
|
56
|
+
# custom_instructions: |
|
|
57
|
+
# Follow our coding standards
|
|
58
|
+
# Ensure all new code has tests
|
|
59
|
+
# Use TypeScript for new files
|
|
60
|
+
|
|
61
|
+
# Optional: Custom environment variables for Claude
|
|
62
|
+
# claude_env: |
|
|
63
|
+
# NODE_ENV: test
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
name: Release Please
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches:
|
|
6
|
+
- main
|
|
7
|
+
|
|
8
|
+
permissions:
|
|
9
|
+
contents: write
|
|
10
|
+
pull-requests: write
|
|
11
|
+
issues: write
|
|
12
|
+
|
|
13
|
+
jobs:
|
|
14
|
+
release-please:
|
|
15
|
+
runs-on: ubuntu-24.04
|
|
16
|
+
outputs:
|
|
17
|
+
release_created: ${{ steps.release.outputs.release_created }}
|
|
18
|
+
tag_name: ${{ steps.release.outputs.tag_name }}
|
|
19
|
+
steps:
|
|
20
|
+
- uses: googleapis/release-please-action@v4
|
|
21
|
+
id: release
|
|
22
|
+
with:
|
|
23
|
+
release-type: node
|
|
24
|
+
|
|
25
|
+
upload-linux-packages:
|
|
26
|
+
needs: release-please
|
|
27
|
+
runs-on: ubuntu-24.04
|
|
28
|
+
if: ${{ needs.release-please.outputs.release_created }}
|
|
29
|
+
steps:
|
|
30
|
+
- uses: actions/checkout@v4
|
|
31
|
+
- name: Use Node.js
|
|
32
|
+
uses: actions/setup-node@v4
|
|
33
|
+
with:
|
|
34
|
+
node-version: 22
|
|
35
|
+
cache: npm
|
|
36
|
+
- name: npm install
|
|
37
|
+
run: npm install
|
|
38
|
+
- name: Build web distribution
|
|
39
|
+
run: npm run build
|
|
40
|
+
- name: Build Electron packages in Docker
|
|
41
|
+
run: |
|
|
42
|
+
docker run --rm \
|
|
43
|
+
-v "$(pwd)":/project \
|
|
44
|
+
electronuserland/builder:latest \
|
|
45
|
+
/bin/bash -c "cd /project && npm run electron:build"
|
|
46
|
+
- name: Upload Linux Release Artifacts
|
|
47
|
+
env:
|
|
48
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
49
|
+
run: |
|
|
50
|
+
gh release upload ${{ needs.release-please.outputs.tag_name }} \
|
|
51
|
+
out/dist/*.deb \
|
|
52
|
+
out/dist/*.rpm
|
|
53
|
+
|
|
54
|
+
upload-windows-packages:
|
|
55
|
+
needs: release-please
|
|
56
|
+
runs-on: windows-latest
|
|
57
|
+
if: ${{ needs.release-please.outputs.release_created }}
|
|
58
|
+
steps:
|
|
59
|
+
- uses: actions/checkout@v4
|
|
60
|
+
- name: Use Node.js
|
|
61
|
+
uses: actions/setup-node@v4
|
|
62
|
+
with:
|
|
63
|
+
node-version: 22
|
|
64
|
+
cache: npm
|
|
65
|
+
- name: npm install
|
|
66
|
+
run: npm install
|
|
67
|
+
- name: Build web distribution
|
|
68
|
+
run: npm run build
|
|
69
|
+
- name: Build Windows Electron package
|
|
70
|
+
run: npm run electron:build -- --publish never
|
|
71
|
+
- name: Upload Windows Release Artifacts
|
|
72
|
+
env:
|
|
73
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
74
|
+
run: |
|
|
75
|
+
gh release upload ${{ needs.release-please.outputs.tag_name }} out/dist/*.exe
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
name: jsbeeb tests
|
|
2
|
+
|
|
3
|
+
on: [push]
|
|
4
|
+
|
|
5
|
+
jobs:
|
|
6
|
+
build-and-test:
|
|
7
|
+
runs-on: ubuntu-24.04
|
|
8
|
+
steps:
|
|
9
|
+
- uses: actions/checkout@v4
|
|
10
|
+
with:
|
|
11
|
+
submodules: recursive
|
|
12
|
+
- name: Use Node.js
|
|
13
|
+
uses: actions/setup-node@v4
|
|
14
|
+
with:
|
|
15
|
+
node-version: 22
|
|
16
|
+
cache: npm
|
|
17
|
+
- name: npm install
|
|
18
|
+
run: npm install
|
|
19
|
+
- name: checks
|
|
20
|
+
run: npm run ci-checks
|
|
21
|
+
- name: Unit tests
|
|
22
|
+
run: npm run test:unit
|
|
23
|
+
- name: Integration tests
|
|
24
|
+
run: npm run test:integration
|
|
25
|
+
|
|
26
|
+
cpu-test:
|
|
27
|
+
runs-on: ubuntu-24.04
|
|
28
|
+
steps:
|
|
29
|
+
- uses: actions/checkout@v4
|
|
30
|
+
with:
|
|
31
|
+
submodules: "recursive"
|
|
32
|
+
- name: Use Node.js
|
|
33
|
+
uses: actions/setup-node@v4
|
|
34
|
+
with:
|
|
35
|
+
node-version: 22
|
|
36
|
+
cache: npm
|
|
37
|
+
- name: npm install
|
|
38
|
+
run: npm install
|
|
39
|
+
- name: CPU tests
|
|
40
|
+
run: npm run test:cpu
|
|
41
|
+
|
|
42
|
+
build-electron-packages:
|
|
43
|
+
runs-on: ubuntu-24.04
|
|
44
|
+
steps:
|
|
45
|
+
- uses: actions/checkout@v4
|
|
46
|
+
- name: Use Node.js
|
|
47
|
+
uses: actions/setup-node@v4
|
|
48
|
+
with:
|
|
49
|
+
node-version: 22
|
|
50
|
+
cache: npm
|
|
51
|
+
- name: npm install
|
|
52
|
+
run: npm install
|
|
53
|
+
- name: Build web distribution
|
|
54
|
+
run: npm run build
|
|
55
|
+
- name: Build Electron packages in Docker
|
|
56
|
+
run: |
|
|
57
|
+
docker run --rm \
|
|
58
|
+
-v "$(pwd)":/project \
|
|
59
|
+
electronuserland/builder:latest \
|
|
60
|
+
/bin/bash -c "cd /project && npm run electron:build"
|
|
61
|
+
- name: Verify packages were created
|
|
62
|
+
run: |
|
|
63
|
+
ls -lh out/dist/*.deb out/dist/*.rpm
|
|
64
|
+
|
|
65
|
+
update-web:
|
|
66
|
+
needs: [build-and-test, cpu-test]
|
|
67
|
+
runs-on: ubuntu-24.04
|
|
68
|
+
steps:
|
|
69
|
+
- uses: actions/checkout@v4
|
|
70
|
+
- name: Use Node.js
|
|
71
|
+
uses: actions/setup-node@v4
|
|
72
|
+
with:
|
|
73
|
+
node-version: 22
|
|
74
|
+
cache: npm
|
|
75
|
+
- name: Build distribution
|
|
76
|
+
run: |
|
|
77
|
+
make dist
|
|
78
|
+
- uses: jakejarvis/s3-sync-action@master
|
|
79
|
+
if: github.ref == 'refs/heads/main'
|
|
80
|
+
with:
|
|
81
|
+
args: --cache-control max-age=30 --metadata-directive REPLACE
|
|
82
|
+
env:
|
|
83
|
+
AWS_S3_BUCKET: bbc.xania.org
|
|
84
|
+
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
|
85
|
+
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
|
86
|
+
SOURCE_DIR: "dist"
|
package/.gitmodules
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
[submodule "tests/6502_65C02_functional_tests"]
|
|
2
|
+
path = tests/6502_65C02_functional_tests
|
|
3
|
+
url = https://github.com/mattgodbolt/6502_65C02_functional_tests.git
|
|
4
|
+
[submodule "tests/integration/dp111_6502Timing"]
|
|
5
|
+
path = tests/integration/dp111_6502Timing
|
|
6
|
+
url = https://github.com/dp111/6502Timing
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
npm run pre-commit
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<project version="4">
|
|
3
|
+
<component name="ProjectCodeStyleSettingsManager">
|
|
4
|
+
<option name="PER_PROJECT_SETTINGS">
|
|
5
|
+
<value />
|
|
6
|
+
</option>
|
|
7
|
+
<option name="PREFERRED_PROJECT_CODE_STYLE" value="Default" />
|
|
8
|
+
</component>
|
|
9
|
+
</project>
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
<component name="ProjectCodeStyleConfiguration">
|
|
2
|
+
<code_scheme name="Project" version="173">
|
|
3
|
+
<HTMLCodeStyleSettings>
|
|
4
|
+
<option name="HTML_SPACE_INSIDE_EMPTY_TAG" value="true" />
|
|
5
|
+
<option name="HTML_ENFORCE_QUOTES" value="true" />
|
|
6
|
+
</HTMLCodeStyleSettings>
|
|
7
|
+
<JSCodeStyleSettings version="0">
|
|
8
|
+
<option name="FORCE_SEMICOLON_STYLE" value="true" />
|
|
9
|
+
<option name="SPACE_BEFORE_FUNCTION_LEFT_PARENTH" value="false" />
|
|
10
|
+
<option name="FORCE_QUOTE_STYlE" value="true" />
|
|
11
|
+
<option name="ENFORCE_TRAILING_COMMA" value="Remove" />
|
|
12
|
+
<option name="SPACES_WITHIN_OBJECT_LITERAL_BRACES" value="true" />
|
|
13
|
+
<option name="SPACES_WITHIN_IMPORTS" value="true" />
|
|
14
|
+
</JSCodeStyleSettings>
|
|
15
|
+
<TypeScriptCodeStyleSettings version="0">
|
|
16
|
+
<option name="FORCE_SEMICOLON_STYLE" value="true" />
|
|
17
|
+
<option name="SPACE_BEFORE_FUNCTION_LEFT_PARENTH" value="false" />
|
|
18
|
+
<option name="FORCE_QUOTE_STYlE" value="true" />
|
|
19
|
+
<option name="ENFORCE_TRAILING_COMMA" value="Remove" />
|
|
20
|
+
<option name="SPACES_WITHIN_OBJECT_LITERAL_BRACES" value="true" />
|
|
21
|
+
<option name="SPACES_WITHIN_IMPORTS" value="true" />
|
|
22
|
+
</TypeScriptCodeStyleSettings>
|
|
23
|
+
<VueCodeStyleSettings>
|
|
24
|
+
<option name="INTERPOLATION_NEW_LINE_AFTER_START_DELIMITER" value="false" />
|
|
25
|
+
<option name="INTERPOLATION_NEW_LINE_BEFORE_END_DELIMITER" value="false" />
|
|
26
|
+
</VueCodeStyleSettings>
|
|
27
|
+
<codeStyleSettings language="HTML">
|
|
28
|
+
<option name="SOFT_MARGINS" value="80" />
|
|
29
|
+
<indentOptions>
|
|
30
|
+
<option name="INDENT_SIZE" value="2" />
|
|
31
|
+
<option name="CONTINUATION_INDENT_SIZE" value="2" />
|
|
32
|
+
<option name="TAB_SIZE" value="2" />
|
|
33
|
+
</indentOptions>
|
|
34
|
+
</codeStyleSettings>
|
|
35
|
+
<codeStyleSettings language="JavaScript">
|
|
36
|
+
<option name="KEEP_SIMPLE_METHODS_IN_ONE_LINE" value="true" />
|
|
37
|
+
<option name="SOFT_MARGINS" value="80" />
|
|
38
|
+
<indentOptions>
|
|
39
|
+
<option name="INDENT_SIZE" value="2" />
|
|
40
|
+
<option name="CONTINUATION_INDENT_SIZE" value="2" />
|
|
41
|
+
<option name="TAB_SIZE" value="2" />
|
|
42
|
+
</indentOptions>
|
|
43
|
+
</codeStyleSettings>
|
|
44
|
+
<codeStyleSettings language="TypeScript">
|
|
45
|
+
<option name="SOFT_MARGINS" value="80" />
|
|
46
|
+
<indentOptions>
|
|
47
|
+
<option name="INDENT_SIZE" value="2" />
|
|
48
|
+
<option name="CONTINUATION_INDENT_SIZE" value="2" />
|
|
49
|
+
<option name="TAB_SIZE" value="2" />
|
|
50
|
+
</indentOptions>
|
|
51
|
+
</codeStyleSettings>
|
|
52
|
+
<codeStyleSettings language="Vue">
|
|
53
|
+
<option name="SOFT_MARGINS" value="80" />
|
|
54
|
+
<indentOptions>
|
|
55
|
+
<option name="CONTINUATION_INDENT_SIZE" value="2" />
|
|
56
|
+
</indentOptions>
|
|
57
|
+
</codeStyleSettings>
|
|
58
|
+
<codeStyleSettings language="yaml">
|
|
59
|
+
<option name="SPACE_WITHIN_BRACKETS" value="false" />
|
|
60
|
+
</codeStyleSettings>
|
|
61
|
+
</code_scheme>
|
|
62
|
+
</component>
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<project version="4">
|
|
3
|
+
<component name="CompilerConfiguration">
|
|
4
|
+
<resourceExtensions />
|
|
5
|
+
<wildcardResourcePatterns>
|
|
6
|
+
<entry name="!?*.java" />
|
|
7
|
+
<entry name="!?*.form" />
|
|
8
|
+
<entry name="!?*.class" />
|
|
9
|
+
<entry name="!?*.groovy" />
|
|
10
|
+
<entry name="!?*.scala" />
|
|
11
|
+
<entry name="!?*.flex" />
|
|
12
|
+
<entry name="!?*.kt" />
|
|
13
|
+
<entry name="!?*.clj" />
|
|
14
|
+
<entry name="!?*.aj" />
|
|
15
|
+
</wildcardResourcePatterns>
|
|
16
|
+
<annotationProcessing>
|
|
17
|
+
<profile default="true" name="Default" enabled="false">
|
|
18
|
+
<processorPath useClasspath="true" />
|
|
19
|
+
</profile>
|
|
20
|
+
</annotationProcessing>
|
|
21
|
+
</component>
|
|
22
|
+
</project>
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<component name="InspectionProjectProfileManager">
|
|
2
|
+
<profile version="1.0" is_locked="false">
|
|
3
|
+
<option name="myName" value="Project Default" />
|
|
4
|
+
<inspection_tool class="Eslint" enabled="true" level="WARNING" enabled_by_default="true" />
|
|
5
|
+
<inspection_tool class="JSBitwiseOperatorUsage" enabled="false" level="WARNING" enabled_by_default="false" />
|
|
6
|
+
</profile>
|
|
7
|
+
</component>
|