Hot answers tagged

101

In the late '70s and very early 80s it was not unusual to make BIOS source code available. Apple did indeed do so; the full source listing starts at page 76 of the Apple II Reference Manual. Atari did the same in their Operating System Source Listing section of their Atari 400/800 Technical Reference Notes.¹ For CP/M machines, having the BIOS source was near ...


70

When other manufacturers attempted to copy the BIOS from the source listings, IBM sued them for copyright violation and won. Besides, even without the listings, anyone would have been able to dump and disassemble the BIOS. Publishing the source code made it harder to argue that the engineers hadn’t seen or used it. What took IBM by surprise was the ...


49

Given your computer’s vintage, I’m going to guess that the reason there’s a single PS/2 port, intended for use with a mouse, is that its keyboard port is a 5-pin DIN connector as used in the IBM PC AT and its descendants. This was quite a common setup in the mid- to late nineties — most socket 7 motherboards were AT boards and included these two ports (I ...


36

The architecture of the original IBM PC (and its clones) let the BIOS access the video memory directly. So making nice text layouts did not require positioning the cursor or making a sequence of calls like you would do with curses: It was sufficient to set the text mode at startup and write at the right place in memory the character (1 byte) and its ...


35

The BIOS originated as part of the CP/M operating system. It was the "layer" that interfaced directly with the hardware and as such, was usually machine specific. The idea is that, if you separate out the hardware interactions into one module and provide a standardised interface that the rest of the OS uses (and user programs), then the only thing ...


33

Harry Potter and the Half-Blood Prince is another work whose source code is entirely available for public view, yet it's definitely under copyright and you will get in big trouble for commercially copying it. Making it public and releasing it from copyright are two separate things. In order to clone the IBM BIOS, they had to write totally new software ...


30

TUI-drawing code can be pretty compact when you're working in assembly and relying on the IBM video BIOS to do the heavy lifting. For example: INT 10h/AH=06h and INT 10h/AH=07h can be used either to scroll a rectangular region of the screen or to clear the screen to a specified foreground/background colour combination. INT 10h/AH=09h can be used to tile a ...


30

Just because they released the source code didn't mean that copyright no longer applied. They didn't "open source it". Having access to the source was as effective documentation on interoperating with the machine as anything was. Back in the day, we had a stack of microfiche (I'd guess 100+ pages of fiche film) with (apparently) the source code to DECs VMS ...


25

By their contents. When Windows boots, the I/O Supervisor VxD (IOS) uses BIOS interrupt 0x13 services to read sector 0 (the Master Boot Record) of each drive. It then looks at two bytes at offset 0x0DA. If they are zeroes, IOS checks the following four bytes: if they are also zeroes (like in the standard MBR code written by Microsoft’s FDISK), IOS overwrites ...


21

TL;DR: It all boils down to the question if you want to build a fully IBM like system with ROM BIOS independent of DOS, with all the bells and whistles attached, or if your goal can be reached with a running DOS with a minimum in BIOS compatibility, just enough to serve whatever application need to run on top of DOS. Unlike often assumed, MS-DOS does neither ...


21

No reason to expect it works at all. So if the CPU can even start executing the code, the moment where it goes wrong is when there are instructions for a newer CPU, or some chipset-specific initializations are done. The BIOS is tailored for the specific motherboard, which will have a certain chipset for a certain CPU class, and therefore it also expects ...


20

How interchangeable was PC BIOS? Usually not interchangeable at all. Keep in mind, there is no single PC-BIOS, but a machine BIOS. Different CPUs, chips sets and additional hardware need specific initialisation. And, at least for generic DOS, specific drivers. To start with, plug-in-compatible bios was only a thing for 100% hardware clones, something only ...


16

CP/M was hardware independent - there was no notion of a reference machine (as the IBM PC was for MS-DOS), so CP/M could not provide drivers. The hardware producer had to develop the drivers and deliver them with CP/M, and the driver package was simply called BIOS ("Basic Input/Output System"). This worked quite well over the lifetime of CP/M. MS-DOS ...


16

When configured to use upper memory (DOS=UMB) or high memory (DOS=HIGH) or both, the DOS “kernel” doesn’t find that memory itself; it relies on the services of a memory manager such as HIMEM.SYS, and the (XMS) APIs it provides. The memory manager determines what memory is available using a variety of techniques. However, what you’re trying to do doesn’t ...


16

Just a disclaimer: Most of this is based on observation and assumptions from experience and should be taken with a grain of salt. From what I've seen with this glitch, the audio being played is actually just a very stretched out version of the chimes that play over the second logo which you see when a disc is loaded, rather than a separate sample. Judging ...


16

In a 100% compatible PC, NMI is used only to communicate unrecoverable errors — normally a RAM parity failure, but possibly something else, which should reveal itself via one of the system control ports, specifically you should check: Port A: b4: watchdog timer status; Port B: b6: channel check failure (i.e. a bus failure, likely a peripheral device); b7:...


15

The reference for this is DEW Associates’ pages on the topic. Multiple barriers have existed in the history of hard drives on PC compatibles. The main ones are the barriers at 528 MB (504 MiB) barrier, 2.1 GB, 4.2 GB and 8.4 GB. They stem from various limitations in the interfaces used to talk to hard drives. Originally, these interfaces were based on an ...


15

The tables were built using the parameters for various real hard drives. For example, type 1 is used for the original Shugart drives used in the PC XT (ST506). So the intention was for the drive types to be useful, and at least some of them were; in the linked page, scroll down to the list of Award-486 drive types to see more examples. Each BIOS ...


13

Even just restricting discussion to the first season, before the same people apparently not only clone the PC but also create (facsimiles of) Sierra Online, McAffee, Netscape and Yahoo, she's not based on anybody real. In real life the source code for the IBM BIOS was printed in the back of the manual. There was no Gordon inexplicably hand transcribing the ...


12

The simple answer is that they just didn't need them! Why reinvent the wheel, when the required interface is already provided by the ROM BIOS? This allows the operating system to be more portable and to support a wider variety of machines and hardware from different vendors, because the vendor provides and is responsible for the ROM BIOS routines. Size of ...


12

As indicated by e.g. this description of the Phoenix BIOS, possible NMI sources are Memory parity errors x87 Coprocessor errors I/O card NMI (for whatever reason the I/O card decides to invoke it) DMA bus time-out errors (AT only) Additionally, the Programmable Interrupt Timer (PIT; 8253 or 8254) could generate an NMI using a watchdog and possibly also on ...


11

Phoenix Technologies developed its ROM BIOS from IBM's using a cleanroom approach: To develop its ROM BIOS software, Phoenix claims in its press release that it used a process that would assure that none of IBM's original code was wittingly duplicated. One group at Phoenix examined the BIOS software documented in IBM's Technical Reference Manual, ...


11

Was it easier than I'm imagining? Yes, I believe it was. Did these early programmers just use a library similar to ncurses but for BIOS programming? How were these text interfaces engineered? To understand this, it's important to keep in mind two things. The IBM PC of the time was a very simple architecture by today's standards. You can do a lot of ...


10

The FreeDOS kernel doesn’t support USB drives on its own. When you boot from a USB drive, the CSM makes it available through the BIOS 13h services, so it appears to DOS as a “standard” drive and everything works fine. When you boot from your SATA drive, the CSM doesn’t set anything up for your USB drive (although in some cases it can be induced to do so) ...


10

In all the BIOS setups I was dealing with that have similarly 47 drives to chose from the first or the last one was editable directly in BIOS SETUP for manual settings. Sometimes the manual settings was done in different menu entry (near formatting utility ... but beware do not accidentally format IDE !!!). IIRC DOS uses BIOS routines for HDD access so if ...


10

On the IBM PCJr, the NMI was used by the keyboard device to signal the CPU. (Source: “The Peter Norton Programmer’s Guide to the IBM PC”, chapter 3, under “Changing Interrupt Vectors” while discussing CLI)


10

When IBM published this source code, it was to make it easier for other companies to make peripherals. They wanted there to be a lot of cards to could be slotted into the PC and just work. Having all these cards available would increase the marked for the PC itself.


10

Although it was possible to customize MS-DOS to use machine-specific services, the actually shipping generic versions did need an IBM-compatible BIOS so you will need to provide it if you want to run unmodified DOS distributions. In addition, various programs running on top of DOS did use additional BIOS services (when they didn’t access hardware directly). ...


9

It wasn't anything to do with drive letters, or the Windows NT disc signature in the MBR. DOS-Windows 9x, in particular the infamous wdctrl virtual device driver (often known colloquially and misleadingly as "32-bit disk access"), after determining that it was reasonable for it to supplant the real-mode firmware in the first place, issued three INT 13h ...


Only top voted, non community-wiki answers of a minimum length are eligible