86Box
MS-DOS
DISCONTINUED
Our great sponsors
86Box | MS-DOS | |
---|---|---|
32 | 47 | |
2,270 | 15,623 | |
5.9% | - | |
9.9 | 0.0 | |
4 days ago | over 4 years ago | |
C | Assembly | |
GNU General Public License v3.0 only | GNU General Public License v3.0 or later |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
86Box
-
Virtual Machine for old childhood Rom games
For emulation, you can look into PCem/86Box
-
Fake recruiter Lazarus lured aerospace employee with trojanized coding challenge
Unsurprising, of the 300 staffing agencies in our area only 23 are actually licensed to legally operate as a service. Trying to authenticate which are "fake" or "real" is a thread most companies/applicants rather not pull.
There is also the fake-hire scam: where staff are lured away with a lucrative compensation packages, data-mined by the competitor, and finally jettisoned before the evaluation period expires (typically 6 to 10 months).
A few infected PDFs from various bad actors are also floating around out there with exaggerated promises.
Keep safe, and note 86box supports read-only backing images and sessions Like Bochs/kvm:
https://github.com/86Box/86Box/releases
(works on Apple M1 laptops, but is slow)
- Port of 86BoxManager to Linux
-
Any way I could get Beach Life (2002) running on a Mac?
https://86box.net/#downloads | https://github.com/86Box/86Box/releases
-
Where does PCem store the Hard disk you create? I want to move it to a different location and can't find it.
Features are implemented much, much faster, especially if you use nightly builds. Always adding hardware. You can look at the changelog: https://github.com/86Box/86Box/releases
-
Getting vintage (old world) Linux distro’s installed on modern virtualization software impossible?
You want 86Box, a full PC emulator as opposed to a virtual machine.
-
Harry Potter 1 & 2 for the PC
There's also 86Box, which you might want to look into if PCem doesn't work for you.
-
Good morning everyone I saw that the Packard bell 8810 motherboard was added to 86box yesterday does anyone know how to get that to show on 86 box I got all the files but does it need the rom files for that to show? And what motherboard would it show up as?
Like someone else said, grab a "updated" copy from here: https://github.com/86Box/86Box/actions/runs/3359207906 and then the romset from here: https://github.com/86Box/roms
-
8088 MPH: We Break All Your Emulators
Apparently 86Box can run it: https://scalibq.wordpress.com/2019/01/19/an-emulator-that-8088-mph-doesnt-break/#comment-33824
MS-DOS
-
ST-DOS
I recently stumbled across the MS-DOS 1.25 and 2.0 source code [1].
-
MS-DOS is now open-sourced
Asynchronous I/O figures in prominently in Windows NT. I was really surprised to see[0]:
Each driver in the chain defines two entry points; the strategy routine and the interrupt routine. The 2.0 DOS does not really make use of two entry points (it simply calls strategy, then immediately calls interrupt). This dual entry point scheme is designed to facilitate future multi-tasking versions of MS-DOS. In multi-tasking environments I/O must be asynchronous, to accomplish this the strategy routine will be called to queue (internally) a request and return quickly. It is then the responsibility of the interrupt routine to perform the actual I/O at interrupt time by picking requests off the internal queue (set up by the strategy routine), and process them. When a request is complete, it is flagged as "done" by the interrupt routine. The DOS periodically scans the list of requests looking for ones flagged as done, and "wakes up" the process waiting for the completion of the request.
I didn't realize that kind of forwarding-looking perspective was going into the design of MS-DOS.
[0] https://github.com/microsoft/MS-DOS/blob/master/v2.0/source/...
-
Exploring the Internals of Linux v0.01
>Any others I'm missing?
I would suggest MS-DOS: https://github.com/microsoft/MS-DOS
-
Cmon guys, help the guy out
White a clone of MSDOS (see github.com/microsoft/ms-dos) in C and try to push that into the market. In the meantime write a GUI for that system and release a newer version of your OS combining the two components. Support your efforts with Diet Coke and pizza. For legal reasons you might need a new name for the system, call it "Doors 10" or something - the name should not be too IT-specific for marketing reasons.
-
Historical Source Code That Every Developer Should See
MS-DOS is a good one too
- A 28-byte “hello, world” program assembled with DEBUG.EXE in MS-DOS
-
CP/M is open-source now
Note that the OEM README[1] for MS-DOS 2 (the first version with a hierarchical filesystem) suggests that it was at IBM’s insistence that MS-DOS used backslash for directories and slash for options, rather than slash for directories and hyphen-minus for options. The documentation and examples for CONFIG.SYS[2] also bear an evident Unix influence, note in particular AVAILDEV and SWITCHAR. (The DOS system calls for files always accepted either separator, but the option parsers would retrieve SWITCHAR[3] and give it precedence.)
[1] https://github.com/microsoft/MS-DOS/blob/master/v2.0/source/...
[2] https://github.com/microsoft/MS-DOS/blob/master/v2.0/source/...
- Microsoft's Growing Control of Linux
-
The Unix-HATERS Handbook (1994) [pdf]
> For people who don't know DOS: DOS didn't really have multiple processes.
Well, compared to CP/M, it did. CP/M only supported a single program being loaded into memory at a time [0]–because every program was loaded into memory at the same absolute memory address (0x100). By contrast, DOS could have multiple processes in memory simultaneously, even though only one of them at a time could be the active foreground process. DOS processes can launch child processes; the parent will be suspended (while remaining in memory) while the child process executes, but will then resume execution once the child process finishes. Under CP/M, that was impossible, there was no API to do that, the architecture didn't support the existence of one.
Indeed, while the main execution of the parent process would be suspended while the child process ran, any interrupt handlers installed by the parent would still be invoked, so some of the parent's code could still run while the child was executing. A parent process can even expose an API to its children – which is exactly what COMMAND.COM does (such as INT 2E which I mentioned)
That's what makes TSRs possible. A TSR is essentially just an ordinary program, the only difference is that when it exits, it tells the OS to leave the process in memory rather than unloading it. By contrast, the CP/M equivalent to TSRs, RSXs (Resident System Extensions), are completely different from ordinary CP/M programs. They are loaded at a variable address near the top of memory, instead of a fixed address at the bottom.
> COMMAND.COM made part of it resident (TSR), which is how it "survived" invoking other applications.
COMMAND.COM isn't a TSR. COMMAND.COM's "residence" is essentially the same as any other program which spawns a child program under DOS, the parent always remains in memory while the child runs. Unlike a TSR, when a COMMAND.COM instance terminates (the initial COMMAND.COM instance won't, but inferior instances will), it doesn't stay in memory, it is unloaded.
What makes COMMAND.COM somewhat unusual, is that it splits itself into two portions, a "resident" portion and a "transient" portion. The resident porition is loaded at the bottom of memory, the transient portion is loaded at the top of free memory, without being officially allocated. Since DOS normally allocates memory in a bottom-up manner, if the child program doesn't use much memory, the transient portion will not be overwritten. When the chlid program returns, COMMAND.COM tests the integrity of the transient portion – if it finds it has been overwritten (because the child program needed that much memory), it reloads it from disk before continuing. That's quite unusual behaviour, but still rather different from how TSRs behave.
> At any given point, there was exactly one process running, and all the state you'd typically associate with a process was "system-wide".
That's not true. When you spawn a child process, you can either let it inherit your environment variables, or you can provide it with a new environment segment – thus each process in the system can potentially have different environment variables. Similarly, file handles are per-process. Similar to Unix – indeed, the DOS 2.x file handle design was copied from Unix – every handle has an "inherit" flag, which determines whether child processses inherit that handle from their parent. DOS keeps track of which processes have which files open, so when the last process with that file open terminates, the file is closed. Likewise, allocated memory blocks are per-process, so when a process is unloaded, DOS frees its memory blocks, but not those of ancestor processes or TSRs.
If DOS has per-process environment variables, file handles and memory allocations – why not current directories as well? I don't know, but I can speculate: DOS 2.0 copied the idea of a current directory from Unix, so like Unix they probably would have initially planned to make it per-process. However, requirements for backward compatiblity with DOS 1.x programs pushed them towards having a separate current directory per each drive. Keeping a separate current directory per-process might have been feasible if it was just a single current directory, but having to do so separately for each drive would have made it a lot more complex and wasteful of memory. I think that is why they made it system-wide instead of per-process.
Microsoft always planned to make MS-DOS a multi-tasking operating system, and much of its internal architecture was designed to support gradual evolution towards multi-tasking [1] – which makes its architecture somewhat closer to a multi-tasking operating system than that of a true single-tasking OS such as CP/M. In fact, they even developed a multi-tasking version of MS-DOS (the so-called "European MS-DOS 4.0" [2]) but it was largely unsuccessful. Eventually Microsoft gave up on the idea of making MS-DOS multitasking, but much of the ideas and experience they developed in trying to do so ended up going into OS/2 and Windows instead.
[0] CP/M later evolved into MP/M, which was a true multi-tasking operating system, but I'm not talking about that here
[1] See for example this design document in the MS-DOS 2.11 source code: https://github.com/microsoft/MS-DOS/blob/master/v2.0/bin/DEV...
[2] https://www.pcjs.org/software/pcx86/sys/dos/microsoft/4.0M/
What are some alternatives?
pcem - PCem
qemu-3dfx - MESA GL/3Dfx Glide pass-through for QEMU
dosbox-x - DOSBox-X fork of the DOSBox project
PCem-ROMs - This is a collection of requiered ROMs files for PCem emulator. RIP PCem 2021
em-dosbox - An Emscripten port of DOSBox
box86 - Box86 - Linux Userspace x86 Emulator with a twist, targeted at ARM Linux devices
rpi-clone - A shell script to clone a booted disk.
wrp - Web Rendering Proxy: Use vintage, historical, legacy browsers on modern web
darkreader - Dark Reader Chrome and Firefox extension
glrage - OpenGL wrapper for the ATI 3D C Interface and DirectDraw 2
ao486 - The ao486 is an x86 compatible Verilog core implementing all features of a 486 SX.