GithubHelp home page GithubHelp logo

jeffpar / pcjs Goto Github PK

View Code? Open in Web Editor NEW
744.0 23.0 113.0 430.53 MB

The original IBM PC and other machine emulations in JavaScript

Home Page: https://www.pcjs.org

License: Other

Ruby 0.01% HTML 0.61% CSS 0.13% JavaScript 73.20% Shell 0.01% C 0.13% Assembly 22.25% XSLT 0.86% Makefile 0.03% Batchfile 0.01% C++ 0.08% SCSS 0.04% BASIC 0.45% Java 2.19% Dockerfile 0.01%
ibm-pc javascript emulator 6502 8080 8088 x86 dos windows vt100

pcjs's Introduction

PCjs Machines

PCjs is the home of PCx86, the original IBM PC emulator that runs in your browser.

PCjs is also my homage to a small number of machines that I grew up with. Those machines include:

along with some hand-selected software, including some from my own personal collection, used here for archival/demonstration purposes only.

To learn more about what you can do with the repository, see the PCjs Wiki, which covers topics such as:

Topics covered in the repository itself include:

License

The PCjs Project is an open-source project on GitHub released under the terms of an MIT License.

You are required to include the following links and copyright notice:

PCjs © 2012-2024 Jeff Parsons

in every copy or modified version of this work, and to display that notice on every web page or computer that it runs on.

Copyright

All PCjs content (including source code, blog posts, and website design) © 2012-2024 Jeff Parsons

pcjs's People

Contributors

bitslasher avatar brainrecall avatar dependabot[bot] avatar jeffpar avatar smuehlst avatar soulthunk avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pcjs's Issues

PCjs Debugger doesn't support Carriage Returns across serial I/O to reset current line to first column

I figured out that my debugger application can connect to the PCjs Debugger window via serial I/O on the COM1 port. Details in https://pushbx.org/ecm/dokuwiki/doku.php?id=blog:pushbx:2022:1111_lcdebug_image_for_use_with_pcjs.org#comment_51a19d7eaf2539aa96ba0d557229eb0f

However, the application's line input handler uses lone CRs (without subsequent LFs) to reset the current line to the first column, ready to be overwritten by new content. This is not supported by the PCjs Debugger window which seems to interpret every CR as a complete linebreak, beyond only returning the carriage.

Windows 95 Debugger configuration halts unexpectedly

Windows 95 Machine CPU @ 32.00 Mhz:
PCx86 v2.07
Copyright © 2012-2022 Jeff Parsons [email protected]
License: MIT https://www.pcjs.org/LICENSE.txt
Loading /machines/pcx86/compaq/deskpro386/rom/1988-01-28/1988-01-28.json.......
Loading /machines/pcx86/ibm/video/vga/1986-10-27/IBM-VGA.json.......
Loading /configs/pcx86/diskettes.json.......
HDC: Type 4 "68Mb Hard Disk" is fixed disk 0
Loading /harddisks/pcx86/68mb/WIN95.json...................
Loading state.json.......
BusX86: 32Kb ROM at 0xF8000
BusX86: 24Kb ROM at 0xC0000
HDC: Mounted disk "68Mb Hard Disk" in drive C
BusX86: 640Kb RAM at 0x0
RAMx86: ROM BIOS memory test has been disabled
BusX86: 384Kb RAM at 0xFA0000
BusX86: 4 bytes H/W at 0x80C00000
RAMx86: COMPAQ memory at 0xFA0000
BusX86: 3072Kb RAM at 0x100000
RAMx86: Extended memory at 0x100000
BusX86: 32Kb VIDEO at 0xB8000
Type ? for help with PCx86 Debugger commands
EAX=0000F8BC EBX=00007C00 ECX=00000003 EDX=00000080
ESP=00000100 EBP=00000000 ESI=0000EFC7 EDI=0000007C
SS=0030 DS=0000 ES=0000 FS=0000 GS=0304 PS=00000202 V0 D0 I1 T0 S0 Z0 A0 P0 C0
&0000:7C00 FA CLI
target speed: 32.00Mhz
running
stopped (145257775 cycles, 9662 ms, 15033924 hz)
EAX=C0245081 EBX=00001409 ECX=00000030 EDX=000002A9
ESP=000066D2 EBP=00000006 ESI=00050000 EDI=00001077
SS=134A DS=20DA ES=134A FS=0000 GS=0304 PS=00000286 V0 D0 I1 T0 S1 Z0 A0 P1 C0
&0654:344E 6661 POPAD
CPU: TypeError: Cannot read properties of undefined (reading '1')
at KC (https://www.pcjs.org/machines/pcx86/releases/2.07/pcx86.js:874:358)
at LC (https://www.pcjs.org/machines/pcx86/releases/2.07/pcx86.js:856:302)
at m.ao (https://www.pcjs.org/machines/pcx86/releases/2.07/pcx86.js:861:192)
at ef.ff (https://www.pcjs.org/machines/pcx86/releases/2.07/pcx86.js:420:121)
at m.fh (https://www.pcjs.org/machines/pcx86/releases/2.07/pcx86.js:217:385)
at m.vp (https://www.pcjs.org/machines/pcx86/releases/2.07/pcx86.js:176:113)

Apple

This isn't an issue, just a suggestion. I was thinking that it would be cool if there were early Apple PC simulations (Apple II, Macintosh), like how there is for Windows and MS/PC-DOS. It's just an idea. Thank you for considering!

Need machine with 8088 processor and Borland Turbo C ...

Hi, I need an emulated machine (by PCjs) with:

8088 processor
and 640kB RAM
and MS-DOS 3.20 operating system
and host keyboard,
And available Borland Turbo C disk images to loading at it.

Is there anyone can help me?!

PCjs is good, But it is very hard to config manually for individual purposes.

Qemu is easily configurable by entering its arguments in single command line to choosing available CPU model, RAM size, hard drive and so on. But PCjs is not configurable easily to choosing these.
Also PCem and 86Box is easily configurable but consume high system resources.

PCjs doesn't need hight system resources, But it is not configurable easily to choosing CPU model, RAM size, hard drive and so on.

Failure to run on Windows.

I am trying to follow the "running locally" guide on Windows 10 machine. Everything worked fine until step 5, which produces the following output:

>bundle exec jekyll serve
Configuration file: C:/Users/zzz/source/repos/pcjs/_config.yml
            Source: C:/Users/zzz/source/repos/pcjs
       Destination: C:/Users/zzz/source/repos/pcjs/_site
 Incremental build: disabled. Enable with --incremental
      Generating...
       Jekyll Feed: Generating feed for posts
  Liquid Exception: Liquid syntax error (line 3): 'raw' tag was never closed in documents/books/mspl13/msdos/encyclopedia/appendix-d/index.md
jekyll 3.9.0 | Error:  Liquid syntax error (line 3): 'raw' tag was never closed
Traceback (most recent call last):
        33: from C:/Ruby27-x64/bin/jekyll:23:in `<main>'
        32: from C:/Ruby27-x64/bin/jekyll:23:in `load'
        31: from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/jekyll-3.9.0/exe/jekyll:15:in `<top (required)>'
        30: from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/mercenary-0.3.6/lib/mercenary.rb:19:in `program'
        29: from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/mercenary-0.3.6/lib/mercenary/program.rb:42:in `go'
        28: from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/mercenary-0.3.6/lib/mercenary/command.rb:220:in `execute'
        27: from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/mercenary-0.3.6/lib/mercenary/command.rb:220:in `each'
        26: from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/mercenary-0.3.6/lib/mercenary/command.rb:220:in `block in execute'
        25: from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/jekyll-3.9.0/lib/jekyll/commands/serve.rb:75:in `block (2 levels) in init_with_program'
        24: from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/jekyll-3.9.0/lib/jekyll/commands/serve.rb:93:in `start'
        23: from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/jekyll-3.9.0/lib/jekyll/commands/serve.rb:93:in `each'
        22: from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/jekyll-3.9.0/lib/jekyll/commands/serve.rb:93:in `block in start'
        21: from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/jekyll-3.9.0/lib/jekyll/commands/build.rb:36:in `process'
        20: from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/jekyll-3.9.0/lib/jekyll/commands/build.rb:65:in `build'
        19: from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/jekyll-3.9.0/lib/jekyll/command.rb:28:in `process_site'
        18: from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/jekyll-3.9.0/lib/jekyll/site.rb:71:in `process'
        17: from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/jekyll-3.9.0/lib/jekyll/site.rb:192:in `render'
        16: from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/jekyll-3.9.0/lib/jekyll/site.rb:471:in `render_pages'
        15: from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/jekyll-3.9.0/lib/jekyll/site.rb:471:in `each'
        14: from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/jekyll-3.9.0/lib/jekyll/site.rb:472:in `block in render_pages'
        13: from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/jekyll-3.9.0/lib/jekyll/site.rb:479:in `render_regenerated'
        12: from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/jekyll-3.9.0/lib/jekyll/renderer.rb:62:in `run'
        11: from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/jekyll-3.9.0/lib/jekyll/renderer.rb:79:in `render_document'
        10: from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/jekyll-3.9.0/lib/jekyll/renderer.rb:121:in `render_liquid'
         9: from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/jekyll-3.9.0/lib/jekyll/liquid_renderer/file.rb:12:in `parse'
         8: from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/jekyll-3.9.0/lib/jekyll/liquid_renderer/file.rb:49:in `measure_time'
         7: from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/jekyll-3.9.0/lib/jekyll/liquid_renderer/file.rb:13:in `block in parse'
         6: from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/liquid-4.0.3/lib/liquid/template.rb:116:in `parse'
         5: from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/liquid-4.0.3/lib/liquid/template.rb:132:in `parse'
         4: from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/liquid-4.0.3/lib/liquid/document.rb:5:in `parse'
         3: from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/liquid-4.0.3/lib/liquid/document.rb:10:in `parse'
         2: from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/liquid-4.0.3/lib/liquid/block_body.rb:34:in `parse'
         1: from C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/liquid-4.0.3/lib/liquid/tag.rb:10:in `parse'
C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/liquid-4.0.3/lib/liquid/tags/raw.rb:22:in `parse': Liquid syntax error (line 3): 'raw' tag was never closed (Liquid::SyntaxError)

Any idea what might be causing it? From what I can see the file referenced in the error does have the {% endraw %} tag. Does it interpret one of the characters in the file as EOF?

Save machine

I do not know if this is a current issue or not, but I am having a bit of trouble saving a machine and getting a state.json file. I found a blog post on the pcjs.org webpage https://www.pcjs.org/blog/2016/02/17/ that said I should get a file that contained a big chunk of Javascript code containing things like the state, machine.xml, ext. but when I click on it and input the file into <script src="pcx86.js"></script> and open the html file, the place where the screen would show up displays nothing but black. It might just be me and I do not yet understand how to use the save machine function but if someone could help me that would be great! Thanks!

MSWindows 95: Trying to start a DPMI program crashes the DOS window

Running https://www.pcjs.org/software/pcx86/sys/windows/win95/4.00.950/

We get an error as shown below, when a simple test program tries to enter DPMI protected mode. It reads:

MS-DOS Prompt

This program has performed an illegal operation and will be terminated. Quit all programs, and then restart your computer.

If the program consistently encounters problems, click the Start button, then select Help, Troubleshooting, and 'If you have trouble running MS-DOS programs'.

[OK] [Details>>]

The program encountered an invalid page exception.

Fault location: 0028:C0236811
Faulting component: DOSMGR(0E) + 00000ED5
Interrupts in service: None

Screenshot showing the error:

Screenshot at 2023-08-13 21-46-51

The dpmimini program is included in the disk image https://pushbx.org/ecm/test/20230813/bcdebugx.img which is unlocked on the server for use as a remote disk for PCjs. The source of the program is in https://hg.pushbx.org/ecm/dpmitest/file/845e876b561e/dpmimini.asm

If I run my debugger, lcdebugx.com dpmimini.com then on the first trace step (T command) it informs me that "DPMI entry cannot be hooked!" which is expected on MSWindows 4. However, tracing into the DPMI entrypoint (call far [bp + 00] instruction at offset 0143h) I get an address of FCB8:2F97 with the instruction bytes 63, 38 that disassemble as arpl [bx + si], di. If I try to trace this, the machine crashes in the same way as for running only dpmimini. The error message is exactly the same.

can't use while in school

hi it's me again i can access the website because of my school can you make a unblocked version of the website plz that will be much appreciated.

The content in the Microsoft Programmer's Library CD-ROM (1988) cannot be read normally on the emulator of windows 3.1

In fact, Jeff, this problem occurred on theMicrosoft Programmer's Library CD-ROM (1988)page in PCjs.org.

The following is the problem log:

The site where the problem occurred:
"Microsoft Programmer's Library CD-ROM (1988)"

Prerequisite:
I want to view the contents of the Microsoft Programmer's Library CD-ROM as described on the site. I installed the Microsoft Programmer's Library CD-ROM to C:\mslib.

Unsolvable difficulties:
After running C:\mslib\msl.exe, it displays
6

At this point, no matter I press any key on the keyboard, the program cannot continue to run unless I exit the program with Ctrl+C.

My OS:
windows 10

My Browser:
Chrome

Problem reproduction process:

  1. Enter the The site where the problem occurred - Microsoft Programmer's Library CD-ROM (1988).
  2. In the emulator, under win 3.1, load Programmer’s Library 1.0 (1988) on the CD-ROM displayed as Disk D.
  3. Open the simulator, run D:\setup.exe, install Microsoft Programmer's Library to C:\mslib step-by-step following the D:\setup.exe shows
  4. After installation, Run C:\mslib\msl.exe <---(Microsoft Programmer's Library installed above)
  5. After running C:\mslib\msl.exe, it displays
    6

The screenshot of the installation process is in the attachment, and the file name of the attachment represents its order

1
2
3
press “H”
4
press “Y”
5

After I encountered this problem, I installed win 3.1 via dosbox on my pc, but I couldn't install Microsoft Programmer's Library because it was not compatible with my CD-ROM. Few people on other computer forums know about pcjs.org and they cannot answer questions. At first I suspected that there was a problem with my keyboard, but when I pressed the button, the corresponding button in the "Keys" in the simulator also turned black, so it should not be a keyboard problem......

I just want to read the contents of each reference in the Microsoft Programmer's Library CD-ROM (1988) under windows 3.1, but I completely have no idea about what exactly should I do when the desktop turns this.
5

I’m sorry Jeff because I'm not sure if this can be called an issue, but I have tried various methods for nearly a month and no one worked.
I sincerely await your reply, thank you for your reading Jeff.

Can’t load a local disk file.

Using Chrome for iOS:
Microsoft Windows 95 First Retail Release  PCjs…
IBM PC AT (Model 5170) with ATAPI CD-ROM  PCjs M…

There is no load option for any IBM PC and DeskPro 386 computer when I need to boot ELKS floppy disks and test them (it works 8086 and up.) -Luna

How to get Windows 95 to work

Guide to getting Windows.Build 499 beta to work

  1. Boot Windows 95 rtm machine
  2. Load Windows 95 build 499 disk 01 floppy into drive a:
  3. Load SETUP.EXE
  4. Choose your options (hit OK to load Disk 2) **PLEASE LOAD THE FLOPPY IN THE DRIVE FIRST!!
  5. Works!!1 (takes a few hours and recovery reboots (fatal exception OE at IDK)
  6. Done! Install stuff with control panel

Windows 98 & 2000 needs to be added, and those machines with a 512Mb hard disk and 512Mb of RAM, XP with built-in Internet access.

Pls fix the Windows 95 PCx86 glitch of not rebooting to Windows 95 and not booting from Floppy disk.
And add PCx80 commands with PCx86, and Windows 98/2000/ME/XP demo on your site if you could send me the URL of the thing, I have the following disk images that can be booted for your Windows 1 & 2 machines and a Notepad/1.1 Machine
And add a 486 for Windows 98/2000 and add a Pentium IIII @ 733Mhz CPU for ME & XP. THANKS!!!

Support keyboard.lock API

The navigator.keyboard.lock API allows locking the keyboard so that more keypresses go into the page instead of interpreted by the OS etc.

It's not supported by Firefox yet (and I don't know if it will be), so that might be a reason not to implement it. It would be convenient though, for e.g. the OS/2 1.0 Program Switcher needing Ctrl + Esc.

[Feature request] Add support for more formats and sizes of disks for mounting

I would like to run old programs I have archived here, and the mount feature is too limited. It doesn't support the .json5 format made by their own tool and only ingests .img files with very specific sizes. It would be great to have a cd-rom mount option that support disk images other than stick to the floppy disks sizes, as well as accept other image formats, like .dmg, .iso or even .zip files.

Using a german keyboard layout on Debian Linux / Firefox does not work well for some special keys

For example, I'm loading the default system (COMPAQ Personal Computer MS-DOS version 3.31) from https://www.pcjs.org/configs/pcx86/machine/compaq/deskpro386/vga/2048kb/machine.xml

I have a PS/2 keyboard connected to a Debian Linux 11-ish box, running Firefox "78.11.0esr (64-bit)" within a MATE Desktop Environment session. The keyboard has a german DIN T1 layout printed on its keycaps. (No Euro sign on the E key, but other than that standard.) In Debian I am using the "German German (no dead keys)" layout.

Some of the special keys do not work (on the DOS command line) as expected.

The first row (^ then 1 to 9 then 0 then ß and ´) unshifted works for ^ and the digits, but does not produce any output for ß and ´.

The first row with Shift produces nothing (° on the ^ key), !", nothing (§ on the 3 key), $%&?()+?~. This is wrong for Shift+7 which does ? but is supposed to be a forward slash / on the DIN T1, and Shift+0 which does + but is supposed to be a =, and Shift+´ is supposed to be a backtick not tilde ~.

The Ü key (next to O) and the Ö and Ä keys (next to L) do not produce any input, either without or with Shift, or with AltGr, except for AltGr+Ä which produces ^.

The + key (next to Ü) produces + without Shift, * with Shift, and tilde ~ with AltGr. All as it should be.

The # key (next to Ä) produces # without Shift, and double quote " with Shift (should be apostrophe/single quote ').

The punctuation keys ,.- next to M produce ,.- without Shift, ::_ with Shift (first key with Shift should give semicolon ; not colon).

The < key produces < without Shift, > with Shift, and | with AltGr. All as it should be.

AltGr+Q produces @, as it should.

Z and Y are correctly entered according to the layout. That is, the key between T and U produces Z, and the key next to X produces Y.

Entering the command keyb gr (from this COMPAQ DOS disk, or from the MS-DOS 6.22 first install disk) changes a lot of the special keys, but most are messed up too. Do you want me to map those out one by one too?

sound

why does windows 95 don't have sound?

Easier way to load ROM on x86?

I'll be writing some BIOS extension ROM code and I'd like to use pcjs for debugging.
Is there an easier way to add a ROM to a 5160 machine other than what I'm doing now?

I have pcjs running locally. As a test I duplicated the BASIC ROM line in the corresponding machine.xml file - seemingly it also needed a different filename to be loaded - but that works:

So now I have:

<rom id="romBASIC" addr="0xf6000" size="0x8000" file="/machines/pcx86/ibm/5160/rom/basic/BASIC110.json5"/> <rom id="romBASIC2" addr="0xd0000" size="0x8000" file="/machines/pcx86/ibm/5160/rom/basic/BASIC110-2.json5"/>

I don't know if there's a market for it but I'd love a feature for loading ROM from URL/upload like there is for loading floppies.
Could I go about this in an easier way? Maybe without selfhosting?

Emulator

its not really a issue but how do i apply the emulator to my page i used this but it still wont work .-. i even added the extra command but it still doesnt work :(

(function(){var resources={"machine.xml":"\n\n<machine id="deskpro386" type="pcx86" border="1" pos="center" background="default" debugger="available">\n\t<name pos="center">COMPAQ DeskPro 386, 2Mb RAM, IBM VGA\n\t<computer id="deskpro386-vga-2048k" name="COMPAQ DeskPro 386" buswidth="32"/>\n\t<cpu id="cpu386" model="80386"/>\n\t<ram id="ramLow" addr="0x00000" test="false" size="0xa0000" comment="ROM BIOS memory test has been disabled"/>\n\t<ram id="ramCPQ" addr="0xfa0000" size="0x60000" comment="COMPAQ memory at 0xFA0000"/>\n\t<ram id="ramExt" addr="0x100000" size="0x100000" comment="Extended memory at 0x100000"/>\n\t<rom id="romBIOS" addr="0xf8000" size="0x8000" alias="[0xf0000,0xffff0000,0xffff8000]" file="/machines/pcx86/compaq/deskpro386/rom/1988-01-28/1988-01-28.json"/>\n\t<video id="videoVGA" model="vga" screenWidth="1280" screenHeight="960" touchScreen="mouse" autoLock="true" pos="center" padding="8px">\n\t

\n\t\t<title>VGA Color Display</title>\n\t\t<control type="container" pos="right">\n\t\t\t<control type="led" label="Caps" binding="caps-lock" padLeft="8px"/>\n\t\t\t<control type="led" label="Num" binding="num-lock" padLeft="8px"/>\n\t\t\t<control type="led" label="Scroll" binding="scroll-lock" padLeft="8px"/>\n\t\t\t<control type="button" binding="fullScreen" padLeft="8px;line-height:1em">Full Screen\n\t\t\n\t\n\t<rom id="romVGA" addr="0xc0000" size="0x6000" file="/machines/pcx86/ibm/video/vga/1986-10-27/IBM-VGA.json" notify="videoVGA[0x378d,0x3f8d,0x4eba]"/>\n\n\n\t<fdc id="fdcNEC" autoMount='{A: {name: "COMPAQ MS-DOS 3.31 (Disk 2)"}, B: {name: "COMPAQ MS-DOS 3.31 (Disk 3)"}}' diskettes="/configs/pcx86/diskettes.json,/configs/pcx86/private.json" server="/diskettes" sortBy="name" pos="left" padLeft="8px" padBottom="8px">\n\t<control type="list" binding="listDrives"/>\n\t<control type="list" binding="listDisks">\n\t\n\t<control type="button" binding="loadDisk">Load\n\t<control type="button" binding="saveDisk" padRight="8px">Save\n\t<control type="description" binding="descDisk" padRight="8px"/>\n\t<control type="file" binding="mountDisk"/>\n\n\n\t<hdc id="hdcAT" type="ATAPI1" drives='[{name:"47Mb Hard Disk",type:5}]'>\n\t<control type="button" binding="saveHD0" padLeft="8px" padBottom="8px" padRight="8px">Save HD\n\t<control type="list" binding="listDisks" style="display:none">\n\t\n\n\n\t<keyboard id="keyboard" model="us84" style="pointer-events:none;">\n\t<control type="container" style="pointer-events:auto;">\n\t\t<control type="button" binding="ctrl-alt-del" padLeft="8px" padBottom="8px">Ctrl-Alt-Del\n\t\t<control type="button" binding="keyboard" padLeft="8px" padBottom="8px">Keys\n\t\n\t<control class="soft-keyboard" type="container" height="210px" pos="center" style="max-width:900px;display:none;pointer-events:auto;" padding="8px">\n\t\t<control type="key" binding="f1" top="0" left="0" width="3.78%">F1\n\t\t<control type="key" binding="f2" top="0" left="4.67%" width="3.78%">F2\n\t\t<control type="key" binding="f3" top="42px" left="0" width="3.78%">F3\n\t\t<control type="key" binding="f4" top="42px" left="4.67%" width="3.78%">F4\n\t\t<control type="key" binding="f5" top="84px" left="0" width="3.78%">F5\n\t\t<control type="key" binding="f6" top="84px" left="4.67%" width="3.78%">F6\n\t\t<control type="key" binding="f7" top="126px" left="0" width="3.78%">F7\n\t\t<control type="key" binding="f8" top="126px" left="4.67%" width="3.78%">F8\n\t\t<control type="key" binding="f9" top="168px" left="0" width="3.78%">F9\n\t\t<control type="key" binding="f10" top="168px" left="4.67%" width="3.78%">F10\n\t\t<control type="key" binding="\" top=\"0\" left=\"10.67%\" width=\"3.78%\"> ~\n\t\t<control type="key" binding="1" top="0" left="15.33%" width="3.78%">1 !\n\t\t<control type="key" binding="2" top="0" left="20.00%" width="3.78%">2 @\n\t\t<control type="key" binding="3" top="0" left="24.67%" width="3.78%">3

Windows 95 Build 499 Doesn't work/install

Hi,

I tried to install Windows 95 build 499 on this page https://www.pcjs.org/software/pcx86/sys/windows/win95/4.00.499/ and the installed complains about a lack of space. The first issue is that it boots DOS 3.x which can only create and format a 32MB partition for C:. Then using the 6.22 install/boot disk to run fdisk and format the disk is still slightly too small for the installer. Can you make the disk bigger and make it boot from a newer DOS floppy?

Also is there and easy way to customize the machines on the webpage? Like if I want a bigger disk or more RAM. So far it seems the Windows 95 system is the biggest and I can't get it to reboot to a floppy for some reason.

How to compile PCjs in Raspberry Pi / Debian

Can you give me a guide on how to compile PCjs on Raspberry Pi? I have hosted emulators using the server... and I want the instruction for the compile instructions. And can you give me instructions on how to run the web server in /var/www and then run the PCjs webserver?

Disk images are pulled from internet when running locally

The "Running locally" guide mentions that when doing so local disk images are used, but I don't see it to be the case:
image

From what I managed to understand, the following code is responsible for this:

image

Unfortunately, the actual web page uses its "compiled" version, where this check is thrown away which forces it not to even consider trying fetching the disk locally:

image

image

Now, looking at https://github.com/jeffpar/pcjs/tree/master/machines/pcx86/releases, it seems there are many different versions of that pcx86.js file and it seems different images use different versions and some of them even reference "uncompiled" versions of it. How does it happen?

How do I fix this?

Ultimately, I want my custom diskette image loaded. I added it to /configs/pcx86/diskettes.json and I see it appear in the drop down box, but when I actually try to load it, the request is sent to diskettes.pcjs.org where it obviously does not exist.

The internet

How to connect to the internet and install web browsers in Windows 95?

Looks like all the emulators are operating below their set maximum speed.

Not sure when this started. Just trying the Windows 95 RTM virtual machine and I have noticed that it's operating at a snails pace. Started the debugger and the emulated clock speed is way below the 16MHz setting and the clock speed can't be changed.

Screen shot:
image

Slow on Microsoft Edge too, but not as slow as is within Firefox.

I shall continue testing. My machine is essentially gaming laptop and with the emulator running and everything else, about 30% CPU usage.

Can Windows 95 be connected to the Internet?

I am aware of the perils of connecting an unpatched Windows installation to the Internet - but I thought it might be fun to try out old versions of Internet Explorer.

Is that possible - or just a very silly idea?

Thanks for the brilliant website.

IBM PC AT Diagnostics 2.07(Adv)

I am using 86Box and I tried to boot from this disk, and it asked me if a ran this program after the battery has been connected, I typed N and few seconds later it displayed "System Board Error". What should I do? Could you please help me?

hosting sever without going to the main page.

I was wondering if it is possible to host this server without connecting to the main blog page to retrieve disks? I have been able to compile everything fine, but I am running a offline intranet page which does not connect to the internet. I can host the machines fine and manually upload disks into them but it is a bit clunky. PS love this webpage!

The VGA machine COMPAQ VGA with 47Mb Hard Disk and 2Mb RAM.

PCx86 v2.00
Copyright © 2012-2020 Jeff Parsons [email protected]
License: MIT https://www.pcjs.org/LICENSE.txt
Loading /machines/pcx86/compaq/deskpro386/rom/1988-01-28/1988-01-28.json.......
Loading /machines/pcx86/compaq/video/vga/109360-001/COMPAQ-VGA-1987-10-27.json.......
Loading /configs/pcx86/diskettes.json.......
HDC: Type 5 "47Mb Hard Disk" is fixed disk 0
BusX86: 32Kb ROM at 0xF8000
Loading /diskettes/pcx86/sys/dos/compaq/3.31/COMPAQ-DOS331-DISK2.json............................
Loading /diskettes/pcx86/sys/dos/compaq/3.31/COMPAQ-DOS331-DISK3.json.............................................
BusX86: 32Kb ROM at 0xC0000
FDC: Mounted diskette "COMPAQ MS-DOS 3.31 (Disk 2)" in drive A
FDC: Mounted diskette "COMPAQ MS-DOS 3.31 (Disk 3)" in drive B
BusX86: 640Kb RAM at 0x0
RAMx86: ROM BIOS memory test has NOT been disabled
BusX86: 384Kb RAM at 0xFA0000
BusX86: 4 bytes H/W at 0x80C00000
RAMx86: COMPAQ memory at 0xFA0000
BusX86: 1024Kb RAM at 0x100000
RAMx86: Extended memory at 0x100000
BusX86: 32Kb VIDEO at 0xB8000
Type ? for help with PCx86 Debugger commands
EAX=00000000 EBX=00000000 ECX=00000000 EDX=00000300
ESP=00000000 EBP=00000000 ESI=00000000 EDI=00000000
SS=0000 DS=0000 ES=0000 FS=0000 GS=0000 PS=00000002 V0 D0 I0 T0 S0 Z0 A0 P0 C0
&F000:FFF0 EA05F900F0 JMP &F000:F905
running
stopped (208740744 cycles, 1615298327965 ms, 0 hz)
EAX=0000E9FC EBX=FFFFF256 ECX=000005E7 EDX=0000C780
ESP=000000F4 EBP=FFFF0000 ESI=000003BA EDI=000003C8
SS=0030 DS=0040 ES=B800 FS=0000 GS=0300 PS=00000287 V0 D0 I1 T0 S1 Z0 A0 P1 C1
&F000:C65C 9C PUSHF
Loading /diskettes/pcx86/sys/dos/ibm/1.10/PCDOS110.json.......
FDC: Mounted diskette "PC DOS 1.10" in drive A
running
CPU: Undefined opcode 0xFF at 0x000E120A
stopped (120645220 cycles, 1615298353897 ms, 0 hz)
EAX=01000E43 EBX=00000007 ECX=00000000 EDX=00000E57
ESP=00001724 EBP=000000BF ESI=00000E58 EDI=0000009A
SS=00BF DS=9EF4 ES=9EF4 FS=0000 GS=0300 PS=00000046 V0 D0 I0 T0 S0 Z1 A0 P1 C0
&E000:120A FFFF INVALID
CPU: Undefined opcode 0xFF at 0x000E120A
stopped (120645220 cycles, 1615298353897 ms, 0 hz)
EAX=01000E43 EBX=00000007 ECX=00000000 EDX=00000E57
ESP=00001724 EBP=000000BF ESI=00000E58 EDI=0000009A
SS=00BF DS=9EF4 ES=9EF4 FS=0000 GS=0300 PS=00000046 V0 D0 I0 T0 S0 Z1 A0 P1 C0
&E000:120A FFFF INVALID

d &e000:120a
&E000:120A FF FF FF FF FF FF FF FF-FF FF FF FF FF FF FF FF ................
&E000:121A FF FF FF FF FF FF FF FF-FF FF FF FF FF FF FF FF ................
&E000:122A FF FF FF FF FF FF FF FF-FF FF FF FF FF FF FF FF ................
&E000:123A FF FF FF FF FF FF FF FF-FF FF FF FF FF FF FF FF ................
&E000:124A FF FF FF FF FF FF FF FF-FF FF FF FF FF FF FF FF ................
&E000:125A FF FF FF FF FF FF FF FF-FF FF FF FF FF FF FF FF ................
&E000:126A FF FF FF FF FF FF FF FF-FF FF FF FF FF FF FF FF ................
&E000:127A FF FF FF FF FF FF FF FF-FF FF FF FF FF FF FF FF ................

RAM

is there a way to change the RAM?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.