Commit graph

3159 commits

Author SHA1 Message Date
Fabian 7f37fcfccb Fix vga virtual screen size handling (#628) 2022-03-10 21:46:57 +01:00
Fabian dec8fa0b59 Fix svga not rendering pixels at bottom of changed buffer (#628) 2022-03-10 21:46:57 +01:00
Fabian 06df7cc265 Fix 2048 MB memory size 2022-03-10 21:46:57 +01:00
Giulio Zausa f42e204ed3
Allow receiving wasm as a function via wasm_fn (#629)
Allow receiving wasm as a function via wasm_fn (for bundlers)
2022-03-10 21:39:49 +01:00
Fabian d1a949d881 Fix consider svga_offset for putImageData 2022-02-24 00:36:58 +01:00
Fabian 4eb1e5035e Optimised putImageData 2022-02-22 00:39:05 +01:00
Fabian e0551fcee4 minor 2022-02-22 00:39:05 +01:00
Fabian 726bccf7da c2rust cleanup (remove wrapping_*) 2022-02-22 00:39:05 +01:00
Fabian be3be4827d c2rust cleanup (remove _0 from field names) 2022-02-22 00:39:05 +01:00
Fabian 52ccc6a03c Port svga rendering to rust 2022-02-22 00:39:05 +01:00
Fabian 4567188324 Only call pcspeaker-update on writes to counter2 (performance) 2022-02-21 00:11:00 +01:00
Fabian 65899d2073 Fix NaN mips 2022-02-21 00:11:00 +01:00
Fabian 97f29af274 Move around paging code 2022-02-21 00:11:00 +01:00
Fabian 654abe97e3 Fix rtc detection in Linux v5.11+ (see 211e5db1 in the kernel repo) 2022-02-17 17:38:01 +01:00
Fabian e90e150733 physical addresses should be u32 2022-02-17 17:38:01 +01:00
Fabian 4cc3f8adc7 vga: pass buffer from emulator to frontend, remove tell-buffer, avoid storing layers in state (call update_layers in set_state instead) 2022-02-17 17:38:00 +01:00
Fabian 087215133b Dead code 2022-02-17 17:37:14 +01:00
Fabian f9bcb08f78 use String.prototype.repeat 2022-02-17 17:37:14 +01:00
proxy-m e7f574f4d8
fix v86_bin_fallback full path: getDirname (2) (#624)
Fix v86_bin_fallback when wasm_path is given
2022-02-17 14:15:58 +01:00
Andy(Pengan) Zhou 5199c3dc87 Only scale display when window big enough (#622) 2022-02-13 14:00:59 -06:00
Fabian 74dca95e23 idle on hlt instruction 2022-01-30 19:02:39 -06:00
Fabian e5adfc93c2 Clean up externs 2022-01-30 19:02:39 -06:00
Fabian 229310e686 Properly load pdptes when cr3 is loaded (fixes Ubuntu 16) 2022-01-17 18:38:43 -06:00
Fabian 700225bb6b Add FreeNOS (#597) 2022-01-17 17:14:53 -06:00
Fabian 9a041fa0ba Properly apply acpi setting from UI or profile (fix #597) 2022-01-17 17:05:40 -06:00
Fabian 0199a44a0e Add SerenityOS 2022-01-14 17:35:28 -06:00
Fabian 18ab3e8a81 Update sectorlisp 2022-01-14 17:35:28 -06:00
Fabian 5871e6a140 Add NodeOS #598 2022-01-14 17:35:28 -06:00
Fabian 4a9170c2b9 Clean up 2022-01-14 16:49:57 -06:00
Fabian 942b16d71d Delete {read,write}_aligned 2022-01-14 16:49:57 -06:00
Fabian 70b98bbe5a inline 2022-01-14 16:49:57 -06:00
Fabian 4e28e51d04 Clean up 2022-01-14 16:49:57 -06:00
Fabian ff22df3f9c Assert on NX bit 2022-01-14 16:49:57 -06:00
Paweł Marczewski f72d0a9ca0
Add support for PAE (#599)
Physical memory is still limited to 32-bit addresses, but systems that enable PAE should work now.
2022-01-14 21:19:54 +01:00
Fabian 6b9d1f74d5 Fix acpi setting not being applied in state image (fix 9front) 2022-01-06 17:52:02 -06:00
Fabian 7117e2880c minor 2021-12-16 16:52:12 -05:00
Fabian 48eb6cb51b Add android 4.4 kitkat 2021-12-16 16:52:12 -05:00
Shizuka0000 42c80ae566
Added url config (#566)
Enable networking, audio, acpi configuration via url parameters
2021-12-16 22:39:13 +01:00
Fabian 53a7904834 Improve mute button 2021-12-16 16:24:33 -05:00
ShuoZheLi 7853d8f191 added logic for sound on/off buttom 2021-12-10 22:51:38 +01:00
ShuoZheLi 46af8ccee1 added is_muted variable 2021-12-10 22:51:38 +01:00
Fabian bbcd3791a2 Replace macros by closures 2021-11-11 17:39:51 -05:00
Fabian e6c725bf54 Don't export ZSTD_ symbols (reduce wasm size) 2021-11-10 23:19:49 -05:00
Fabian 714105a7bc Remove log_segment_null, debug_set_dispatcher_target, check_dispatcher_target, check_page_switch in release mode 2021-11-10 22:52:05 -05:00
Fabian 31b2582d13 Avoid generating memory read for profiling info in release mode 2021-11-10 22:52:05 -05:00
Fabian a19fefbe84 never inline test_privileges_for_io (reduce wasm size) 2021-11-10 21:36:18 -05:00
Fabian 636217e81d never inline switch_seg (reduce wasm size) 2021-11-10 21:32:44 -05:00
Fabian 851e6a1ab4 never inline trigger_* (reduce wasm size) 2021-11-10 21:29:38 -05:00
Fabian 03053f0b0d Allow specifying memory size via url parameter m=… and vram=… (#448, #510) 2021-11-09 15:29:12 -05:00
Fabian 5fd6e9356d Handle page switch in conditional jump when both cases are fallthroughs (occurs when MAX_PAGES=30) 2021-11-09 14:31:02 -05:00
Fabian abe5b972e0 Optimise negated condition if reordered 2021-11-08 23:25:41 -05:00
Fabian e95aed2b22 Remove optimisation (never happens across all tests) 2021-11-08 23:25:34 -05:00
Fabian 577d403d14 fix: panic in conditional branch code generation due to label_for_addr not being valid in fallthroughs, using index_for_addr instead (#547) 2021-11-08 23:25:25 -05:00
Fabian 340f1cce12 far jump/int: fix fetch of esp from 16-bit tss and improve bounds checks, restore previously disabled assertion 2021-11-08 23:25:21 -05:00
Fabian 96735eba68 iret: Implement eip limit check (fix ubuntu 10 #474) 2021-11-08 23:25:16 -05:00
Fabian 9cffa38ca0 Use gen_set_reg16_unmasked for mov r16, imm 2021-11-08 23:25:10 -05:00
Fabian 52a8a1bf56 Add psychdos, haiku-boot and archlinux-boot profiles 2021-11-04 21:00:15 -05:00
Fabian 1218bafae5 Add cdn query parameter for testing 2021-11-04 20:27:52 -05:00
Fabian 5877d36bf5 Add sectorlisp and sectorforth 2021-11-04 20:13:58 -05:00
Fabian 7814f96e1c Dead debug code 2021-11-04 18:51:36 -05:00
Fabian 2418f6c6df Retry 5xx and error'd requests 2021-11-04 18:51:36 -05:00
Fabian 39ab3b6d03 preventDefault in mousedown/mouseup events (fixes text selection in Firefox) 2021-11-04 18:51:36 -05:00
Fabian 30fa3dbaf9 Clean up 2021-11-04 18:51:36 -05:00
Fabian be477084a9 Add assertion 2021-11-04 18:51:36 -05:00
Fabian 36fcfe1b16 jit not8/neg8 2021-11-04 18:51:36 -05:00
Fabian 65a75d4fe3 Additional assertions for the return value of mmap_read8 and mmap_read16 2021-11-04 18:51:36 -05:00
Fabian 23d4f862e6 Avoid local when modrm address is single register without offset 2021-11-04 18:51:36 -05:00
Fabian c5dbd55d53 Fix macros used as expression 2021-10-29 01:18:21 +02:00
Fabian 6def710a62 Clean up code, add missing handle_read, replace imgsplit with gnu split 2021-10-20 19:06:58 +02:00
pixelsuft 271c8a9c53 Add splitting without server side 2021-10-20 19:06:58 +02:00
Andrew Au 2034526624 Include the controller output port concept 2021-10-18 02:21:40 +02:00
Andrew Au e5efc198e5 Supports disabling A20 through PS/2 2021-10-18 02:21:40 +02:00
Aty 447897d91c
Fix UART bug (#486) 2021-06-11 23:22:26 +02:00
Heyang Zhou 8eb8dd9d9d
Use queueMicrotask for fast_next_tick in Web Worker environment. (#477)
Optimize performance in worker.
2021-06-05 18:27:01 +02:00
parkertomatoes 4e5f62bbc1
Mask values written to mmap_write{8,16} (fix #460) 2021-05-24 01:18:50 +02:00
Fabian 3387b9b56c Minor improvement 2021-05-23 00:00:22 -05:00
Fabian b4936b32d4 Dead 2021-05-22 23:59:24 -05:00
Fabian f3e79ae6be Less verbose logging 2021-05-22 23:59:24 -05:00
Fabian 199b1ceb49 Fix 32-bit wrap-around for profiler and opstats 2021-05-22 23:58:23 -05:00
Fabian 1b06e7bd34 Improve code for some sign/zero-extending moves 2021-05-22 23:58:23 -05:00
Fabian d47be4342d set_reg16 unmasked 2021-05-22 23:58:23 -05:00
Fabian c430c1141c Minor optimisation for bt{,s,r,c} with zero offset 2021-05-22 23:58:23 -05:00
Fabian da4470233c fix paste into serial console 2021-05-22 23:58:23 -05:00
Fabian ffe80edece Remove function from non-profiled builds 2021-05-22 23:58:23 -05:00
Fabian 2078d439c6 Remove some hard-coded memory sizes so they can be overwritten 2021-05-22 23:58:23 -05:00
Fabian ffac529747 Rewrite write_leb_i64 (fixes bug with upper bits of constant) 2021-05-22 23:58:23 -05:00
Fabian 2f2fff26a9 tlb_set_has_code_multiple 2021-05-22 23:58:22 -05:00
Fabian 7666805117 Fix tlb invariant check 2021-05-22 23:20:47 -05:00
Fabian fd1626cd87 Fix movs jit 2021-05-22 23:20:47 -05:00
viorelcanja 757d95b6be
Mem fast path optimization (#469)
Remove one addition from the memory access fast path
2021-05-23 06:03:34 +02:00
viorelcanja 0297f48346
resize tlb_data to proper size (#468)
Resize tlb_data to proper size

Reduce initial memory size
2021-05-08 22:49:37 +02:00
Viorel Canja 5b79e47bc9 avoid ending jit_run_interpreted in the middle of a basic block 2021-05-04 20:30:08 +02:00
Simon Kadisch 690354e69e Provide access to CPU memory via V86Starter 2021-04-23 01:07:50 +02:00
Simon Kadisch c8581d9ba6 Restore UART2 and UART3 correctly 2021-04-21 20:12:39 +02:00
Fabian 3137bf4171 Fix movsw jit 2021-04-12 15:17:43 -05:00
Fabian 9e9af6d45b NetBSD, floppy bird 2021-04-10 17:22:28 -05:00
Fabian 74dd588b75 vga: dac color index wrap-around 2021-04-10 17:19:40 -05:00
Fabian b1025783a1 Assertion in CachedStateFlags 2021-04-10 16:50:28 -05:00
Fabian 594caa2a73 Simplify 2021-04-10 16:48:44 -05:00
Fabian 0db7ab6505 Dead code 2021-04-10 16:48:11 -05:00
Fabian 48464a18d7 jit movsb/movsw/movsd 2021-04-10 14:27:14 -05:00
Fabian 6049e0c46c jit stosb/stosw/stosd 2021-04-09 21:52:00 -05:00
Fabian 4de8584cff jit scasw/scasd/lodsw/lodsd 2021-04-09 21:15:25 -05:00
Fabian 7b66ae874d jit scasb 2021-04-09 20:37:55 -05:00
Fabian 2e25308f17 jit lodsb 2021-04-09 19:51:27 -05:00
Fabian b48166280b gen_pushf_popf_check 2021-04-09 18:54:54 -05:00
Fabian d929f4d7fd jit some 8-bit arithmetic 2021-04-09 15:35:22 -05:00
Fabian b684342b2b Revert "jit 8E (mov sreg, reg)".
This optimisation was completely invalid, it's not possible call
switch_seg while in jit mode without saving registers.
2021-04-09 15:32:46 -05:00
Fabian bc1f239c2b jit {,66}0F{14,15} (unpcklps, unpcklpd, unpckhps, unpckhpd) 2021-04-05 01:58:42 -05:00
Fabian f4f3ec0ca1 jit {,66}0F{12,13} (movhlps, movlps, movlpd, movlps, movlpd) 2021-04-05 01:58:42 -05:00
Fabian 1632498c9e elf parser: ignore PT_GNU_PROPERTY 2021-04-05 01:58:42 -05:00
Fabian 209879273f elf parser: improve error message 2021-04-05 01:58:42 -05:00
Fabian aacb6a49d7 Rust: Switch from nightly to stable 2021-04-05 01:58:42 -05:00
Fabian bbeca7a13d jit {F2,F3}0FC2 (cmpsd, cmpss) 2021-04-04 23:36:54 -05:00
Fabian 2a22980cf7 jit {F2,F3}0F2A (cvtsi2ss, cvtsi2sd) 2021-04-04 23:32:06 -05:00
Fabian 2b2d22f6d3 jit {,66}0F2A (cvtpi2ps, cvtsi2ss, cvtpi2pd, cvtsi2sd) 2021-04-04 22:56:50 -05:00
Fabian 9e63bab294 jit {,66}0F{2E,2F} (ucomiss, ucomisd, comiss, comisd) 2021-04-04 22:32:36 -05:00
Fabian a0c4c32352 jit {,66,F2,F3}0F{5A,5B} (cvtps2pd, cvtpd2ps, cvtss2sd, cvtsd2ss, cvtdq2ps, cvtps2dq, cvttps2dq) 2021-04-04 20:58:40 -05:00
Fabian c5ca3ca09e jit 0F{74,75,76} (pcmpeqb, pcmpeqw, pcmpeqd) 2021-04-04 16:27:26 -05:00
Fabian 44c606f5a6 jit 660F{75,76} (pcmpeqw, pcmpeqd) 2021-04-04 16:23:37 -05:00
Fabian 73aa610f72 jit 8E (mov sreg, reg) 2021-04-04 16:02:22 -05:00
Fabian 28369ed790 jit {,66,F2,F3}0F{58,59,5C,5D,5E,5F} ({add,mul,sub,min,div,max}{ps,ss,pd,sd}) 2021-04-04 15:41:54 -05:00
Fabian 12ec5d753d jit {,66}0F{54,55,56,57} ({and,andn,or,xor}{ps,pd}) 2021-04-04 15:35:21 -05:00
Fabian 03566c2067 jit {,F3}0F53 (rcp{ps,ss}) 2021-04-04 15:35:21 -05:00
Fabian 38c484629d jit {,F3}0F52 (rsqrt{ps,ss}) 2021-04-04 15:35:21 -05:00
Fabian 8d4c4cb342 Remove useless _TYPE_INDEX suffix 2021-04-04 15:22:30 -05:00
Fabian 297d649836 jit {,66,F2,F3}0F51 2021-04-04 15:20:51 -05:00
Fabian e2ec0c9442 Move code into sse_read64_xmm_{mem,xmm} 2021-04-04 15:07:36 -05:00
Fabian c18cf46022 jit sbb32 2021-04-03 22:53:51 -05:00
Fabian bf92188faf jit adc32 2021-04-03 22:53:44 -05:00
Fabian b7b3c1b44a Avoid more globals 2021-04-03 22:16:19 -05:00
Fabian 91f9a8a1c8 Avoid globals 2021-04-03 21:13:43 -05:00
Fabian adb17b7ce4 Port cpuid to rust 2021-04-03 21:10:49 -05:00
Fabian 74f747deb1 Dead code 2021-04-03 21:10:49 -05:00
Fabian 30180aba72 Remove executable bit 2021-04-03 21:10:49 -05:00
Fabian 84714d17a4 Don't fail on atapi command 0xBE 2021-04-03 21:10:49 -05:00
Fabian c65fd84d55 capitalise constants 2021-04-03 21:10:49 -05:00
Fabian dcc990ed99 Remove unused imports, constants and no_mangle 2021-04-03 21:10:49 -05:00
Fabian 9ab71cd39a Port reset_cpu to rust 2021-04-03 21:10:49 -05:00
Fabian d7fd55e4f1 Move cpl check to instructions.rs for HLT 2021-03-30 15:03:19 -05:00
Fabian 7e903f09dd Port do_task_switch to rust 2021-03-30 15:03:19 -05:00
Fabian acb4e5f2dd Port lldt to rust 2021-03-30 12:27:28 -05:00
Fabian 827b9f3741 Refactor lookup_segment_selector to accept SegmentSelector instead of raw 2021-03-30 12:21:03 -05:00
Fabian 4344954da3 Port load_tr to rust 2021-03-30 05:24:08 -05:00
Fabian bd50bb8dae Add Windows 3.1 and Snowdrop 2021-03-30 04:36:48 -05:00
Fabian a54d57f60a Always download floppy images entirely 2021-03-21 01:10:10 -05:00
Fabian 5917b81f16 Avoid seg null check for ss/cs 2021-03-17 11:51:52 -05:00
Fabian 1f36d454c2 Remove invalid assertion 2021-01-16 19:34:42 -06:00
Fabian 30d4a56669 Don't send break code on key repeat 2021-01-16 19:31:19 -06:00
Fabian 5b4fbe170d Allow saving state from local files 2021-01-16 17:10:56 -06:00
Fabian 2ef8f4b552 Windows 2000 (#390, #296, #377) 2021-01-16 17:10:56 -06:00
Fabian 6d46ea845d Add obsolete ata command used by win2k 2021-01-16 15:22:16 -06:00
Fabian 9da96e666d Safari fix 2021-01-10 19:03:19 -06:00
Fabian 8ce9c4a988 Allow passing a network adapter directly (#382) 2021-01-10 18:15:50 -06:00
Fabian d19fd26e46 CI 2021-01-03 23:04:40 -06:00
Fabian 3bd6c55721 Remove unused dependency 2021-01-03 22:43:03 -06:00
Fabian 1947657470 Make error fatal 2021-01-03 22:43:03 -06:00
Fabian dbf6b65c6b Mouse: Fix case when no screen container is given 2021-01-03 17:48:10 -06:00
Fabian b1fdd5640b Fix random int in workers 2021-01-03 17:22:44 -06:00
Fabian 69e0a319b6 vga: Mask byte 2021-01-03 03:22:22 -06:00
Fabian 18bbe45814 vga: Implement svga offset 2021-01-03 03:22:22 -06:00
Fabian 497f618cab Merge branch 'wasm' into master 2021-01-03 02:07:20 -06:00
Fabian 8107f26f10 xxx: Add fallback for safari 2021-01-01 21:51:17 -06:00
Fabian 7ba7725dc1 ide: Cancel pending reads on device reset 2021-01-01 20:19:30 -06:00
Fabian 26e512a540 Faster way of zeroing memory 2021-01-01 20:19:30 -06:00
Fabian 1936c6fb5a Use more conservative value for MAX_PAGES 2021-01-01 20:19:30 -06:00
Fabian 10addd4756 Improved design, new profiles 2021-01-01 20:19:30 -06:00
Fabian 51323eaae0 Keyboard: Log more infos if key unknown 2020-12-31 19:14:34 -06:00
Ilya Kreymer 1bebfe68bb Ne2k Driver Fixes to Support Running in Windows! (#378)
ne2k fixes to support network card in Windows (compared to qemu implementation)
- fix clearing of initial buffer (this appears to be the main fix!)
- additional fixes for write logic
2020-12-31 19:14:34 -06:00
Fabian 1b4b12d371 Minor 2020-12-31 19:14:34 -06:00
Fabian ac9d248c85 9p stats: Show file in progress after parallel operation finishes 2020-12-31 19:14:34 -06:00
Fabian 1d2be8a04f Provide option to preserve mac address from state image (for Windows 98) 2020-12-31 19:14:34 -06:00
Fabian b97ec83130 ne2k: Save complete state (via @ikreymer) 2020-12-31 19:14:34 -06:00
Fabian bb3bdb1dde Don't export mem8 2020-12-31 19:14:34 -06:00
Fabian 12fc612d2e Fix the order of functions in instructions_0f.rs 2020-12-31 19:14:34 -06:00
Fabian bd4248dac2 Fix the order of functions in instructions.rs 2020-12-31 19:14:34 -06:00
Fabian 7815b20e71 Dead code 2020-12-31 19:14:34 -06:00
Fabian bc11d7089e jit 0fc2/cmpps 660fc2/cmppd 2020-12-31 19:14:34 -06:00
Fabian 2b7b562a56 jit 0fc6/shufps 2020-12-31 19:14:34 -06:00
Fabian 1dfdc9d19a jit 660fc6/shufpd 2020-12-31 19:14:34 -06:00
Fabian 3a8102811d jit f30f11/movss 2020-12-31 19:14:34 -06:00
Fabian cf4af74d95 jit f30f10/movss 2020-12-31 19:14:34 -06:00
Fabian b27285cb7b Remove some unnecessary no_mangle 2020-12-31 19:14:34 -06:00
Fabian 416b4b4b82 Remove some things from jit imports 2020-12-31 19:14:34 -06:00
Fabian a157fdf059 Fix apic timer 2020-12-31 19:14:34 -06:00
Fabian 0812b61d30 Simplify wasm module loading and instantiating code 2020-12-31 19:14:34 -06:00
Fabian 8440f5af11 Async access to image files using file parts instead of range header (allows compression) 2020-12-31 19:14:34 -06:00
Fabian 6e48dd3674 Abort http range requests if the server responds with a complete file 2020-12-31 19:14:34 -06:00
Fabian 0fee2a567a zstd-compressed state images 2020-12-31 19:14:34 -06:00
Fabian a2bd1e3166 Increase MAX_EXTRA_BASIC_BLOCKS 2020-12-31 19:14:33 -06:00
Fabian 171081f649 Simplify 2020-12-31 19:14:33 -06:00
Fabian d4cb380899 Generate extra code only in profiling mode 2020-12-31 19:14:33 -06:00
Fabian 625d9fcdca Minor 2020-12-31 19:14:33 -06:00
Fabian ffce507e11 minor 2020-12-31 19:14:33 -06:00
Fabian 6643dd14fd Remove remains of old js cpu code 2020-12-31 19:14:33 -06:00
Fabian 4a90ec6256 Allow memory size of 2GB 2020-12-31 19:14:33 -06:00
Fabian e981114dd7 Add missing acpi gpe registers to state 2020-12-31 19:14:33 -06:00
Fabian 6d540da487 Not a todo anymore 2020-12-31 19:14:33 -06:00
Fabian 188e0ce796 Increase loop counter to 100k, from 20k 2020-12-31 19:14:33 -06:00
Fabian a238684de6 Store instruction counter in local, use it for loop limits 2020-12-31 19:14:33 -06:00