Commit Graph

113 Commits

Author SHA1 Message Date
Christophe Bothamy
2ef503ae20 - merged rombios-new-ata.c in rombios.c. New features :
. 4 ata interfaces support
  . devices auto-detection
  . 16bits/32bits device access
  . EDD3.0 support
  . ata/atapi layer rewrite
  . added verious DEBUG_XXX to debug only parts of the bios, because we're running low on data space in debug mode
  . moved ata data at offset 0x121 in EBDA. Previously, data was being overwritten by keyboard.sys
  . added jump to [0x40:0x67] after reset if shutdown status is 0x05. Fixes bug [ 601166 ] CMOS Problem @ "0x0F Index 0x05 data"
  . DMA controller init on POST entry
2002-09-24 21:52:32 +00:00
Volker Ruppert
efbcf33bc7 - real mode PCI BIOS modifies the iret flags on stack if no error is present
- bug in the 'find PCI device' functions fixed
- register for the PCI i/o addresses is always DX
2002-09-20 19:36:05 +00:00
Volker Ruppert
a6d07ad166 - added support for 360k floppy images
* new floppy type 360k can be used in .bochsrc and the config interface
  * media type and geometry can be set for the floppy type
  * BIOS changes to make 360k floppy drives work
  * bximage can create 360k images now
2002-08-01 07:37:56 +00:00
Volker Ruppert
e46d56fad1 - jump to POST entry point must be a far jump (MS-DOS and Win95 reboots now)
- keyboard init: read output buffer and enable keyboard before self test
2002-07-23 18:46:17 +00:00
Volker Ruppert
54a5e86cc6 - real mode PCI BIOS functions rewritten in assembler
- new real mode PCI BIOS functions: find device, read/write byte/dword
- C code for PCI BIOS handles errors and prints messages only
- function setPCIaddr() no longer needed
- functions inw() and outw() no longer used by the PCI BIOS
- BIOS32 checksum calculation rewriten to prevent errors
- labels of protected mode PCI BIOS renamed
2002-06-22 15:23:05 +00:00
Volker Ruppert
aa57c0e171 - most important functions of the protected mode PCI BIOS added.
Linux (kernel 2.2.18) is able to use the new features.
  Here is the list of changes:

  * BIOS32 data structure added
  * BIOS32 and protected mode PCI BIOS functions added. The BIOS32 function
    returns a pointer to the PCI BIOS entry point when the service $PCI is
    requested and the PCI hardware is present.
  * Supported 32 bit functions: installation check, find pci device,
    read configuration byte/word/dword, write configuration byte/word/dword
  * real mode PCI BIOS installation check rewritten in assembler to use 32 bit
    registers for the protected mode entry point and the 'PCI ' signature.

  TODO:

  * add missing functions of the PCI BIOS (if necessary)
  * add missing features of the i440FX PCI bridge
  * implement the other parts of the i440FX chipset (PCI-to-ISA bridge,
    PCI IDE controller, USB controller)
2002-06-04 17:44:02 +00:00
Volker Ruppert
c2941ec36b - added error message: PCI BIOS can only be used with 386+ cpu
- functions inw() and outw() are required for the ATA driver too
- real mode PCI BIOS installation check returns revision level 2.10
- unsupported real mode PCI BIOS functions return the error code 0x81
2002-05-11 13:44:39 +00:00
Christophe Bothamy
45ad28ff24 - adapted rombios for floppy boot signature check flag change
- added ASM_START / ASM_END instead of #asm / #endasm.
  Now we are (tested) able to compile with both gcc2 and gcc3
  compiler (Eventually!) Aren't you happy Jeroen ? ;-)
- fixed [ 549815 ]. I included back int19_relocated at the bios
  space could not hold the new mov ex, ax
- int19 calls int18 if the boot has failed. I hope this is the
  right behavior.
2002-05-04 16:09:38 +00:00
Christophe Bothamy
a5442def86 - fixed bug [ 547603 ]
- added int16 functions AX=09h and AX=0Ah
2002-04-24 13:49:26 +00:00
Christophe Bothamy
6566116a01 - added BX_DEBUG, BX_INFO, BX_PANIC macros
- BX_DEBUG outputs to the INFO port till we can easily choose debug output on a per-device basis
- BX_DEBUG are only generated if DEBUG_ROMBIOS is defined to 1
- do not panic on unsupported function in int13, only output info message
- fixed a bug on boot signature check never done on floppy/harddisk and always on floppy images on cd
- the boot signature check on harddisks is always done
- the boot signature check on cdroms (either direct boot or floppy images) is never done
- the boot signature check on floppies is conditionnal to CMOS reg 0x38 (configuration floppy_bootsig_check)
- moved PIC initialization before calling optional rombios init functions (feature request [ 541908 ])
2002-04-24 07:52:07 +00:00
Jeroen Janssen
b3e6bcb3a9 - reverting ##asm/##endasm patch for preprocessing with gcc3 2002-04-21 13:04:47 +00:00
Jeroen Janssen
cfa340ca76 - make sure the rombios can be preprocessed with latest gcc (from Mandrake 8.2) 2002-04-20 16:46:07 +00:00
Jeroen Janssen
1abec8c874 - moving DEBUG_ROMBIOS more to the top of the file (since it's sort of a configuration option and was 'well hidden' atm) 2002-04-11 20:17:03 +00:00
Christophe Bothamy
c7c233f9ce - fixed Win2k boot from cd
- included provisional code for two ATA interfaced
2002-04-10 23:25:49 +00:00
instinc
c9e242cab0 Fixed the bug 433003 related to function 87h of int 15h 2002-04-10 23:23:00 +00:00
Bryce Denney
45b49fe35f - this patch from William Lee Irwin III <wli@holomorphy.com> makes it easy to
configure and compile a BIOS for 8 CPUs.
2002-04-08 01:41:59 +00:00
instinc
cd4fdfe9f3 Fixes bug report 466292 2002-04-08 01:19:35 +00:00
Christophe Bothamy
f02ef5cd7a - fixed keyboard not working with DOS6.2 keyb.com :
. int16 function 92 :  keyboard capability check for keyb.com (enhanced keyboard) : supported
  . int16 function A2 :  keyboard capability check for keyb.com (122keys keyboard) : not supported
2002-04-06 15:59:29 +00:00
Christophe Bothamy
f9304212e9 - redo the freebsd fix.
I should know better the 16bits segmentation model.
2002-04-05 21:08:22 +00:00
Christophe Bothamy
2ba7527c2a - real fix for freeBSD boot 2002-04-04 16:57:45 +00:00
instinc
c2fcfad89b Khorev Sergey's patch allowing FreeBSD to boot 2002-04-04 03:50:11 +00:00
Bryce Denney
8ceca1a4c5 - change a few keyboard panics into printfs (warnings). I got a bug report
about this, #535432: Emu panics when pressing ">"-key.  The user did not
  report exactly what the exact message was, but these sound like the
  correct ones.  BIOS panics are permanent fatal errors, so I don't
  want them to show up accidently, especially for something as trivial
  as bumping the wrong key.
2002-03-28 07:10:18 +00:00
Bryce Denney
8ef7c284fd - apply Christophe's patch.rombios-no-gpl
- update binary bioses
- remove the patch from patches
2002-03-26 13:17:44 +00:00
Christophe Bothamy
c81c05a9cd - included Peter Tattam's fix for read error when installing win95 2002-03-24 23:04:58 +00:00
Christophe Bothamy
11b6de2502 - fix from gnutchar@hotmail.com. cmp ax, 0x0000 sould be cmp ax, #0x0000 2002-03-20 21:06:12 +00:00
Volker Ruppert
6c4a3581c7 - removed unnecessary delay loop after keyboard reset in POST 2002-03-12 18:44:07 +00:00
Christophe Bothamy
f25dc70678 - fixed a unnecessary check on the bootsegment
- renamed int13_function to int13 harddisk
- the default is now to have the ATA driver and ElTorito boot
2002-03-11 00:17:31 +00:00
Christophe Bothamy
2cedd2d79f - fixed OAK driver problem in win98
- CDs can boot at segment != 0x7c0
- reworked int19 in a C function
- "no emulation" CDs can be booted (Win2k, XP).
  No more 000E failure code. Win2k fails though
- started to implement int13 for cdrom
- started to mutualize string constants
- changed a little bit the Bios Config Table address
  so the new int19 handler fits whithout relocation
2002-03-09 01:50:52 +00:00
Christophe Bothamy
6088452443 - increased speed during cdrom booting 2002-02-06 21:01:18 +00:00
Christophe Bothamy
f775660df4 - Changes for Win98 CD-ROM booting 2002-02-06 08:45:51 +00:00
Christophe Bothamy
ac91aa0d3c . changes to enable El-Torito boot. It is disabled by default in rombios.c 2002-01-30 10:30:52 +00:00
Volker Ruppert
873aa0c127 - keyboard self test reads the status register to clear IRQ line
- PS/2 mouse hack removed - unmask IRQ in PIC setup
- commented keyboard buffer initialisation removed
2002-01-27 09:26:23 +00:00
Volker Ruppert
14679e9413 - floppy hardware interrupt handler issues 'sense interrupt status' if there
are no result bytes to read
2002-01-24 20:32:22 +00:00
Volker Ruppert
f0937a06b9 - INT 13: number of drives is not 0 if there is only a diskd present
- hard_drive_post: DS must point to EBDA segment when initialising
  parameters for diskd
- unmask only necessary IRQs at boot time
2002-01-20 00:25:59 +00:00
Volker Ruppert
ed04aff2ca - romscan routine from plex86 BIOS integrated 2002-01-15 21:22:00 +00:00
Volker Ruppert
7add6391d6 - DMA initialisation complete: unmask cascade channel 2002-01-02 09:59:32 +00:00
Volker Ruppert
17ab2fa85f - INT 13 diskette funktion 5 uses the "format track" function of the FDC
- added initialisation of PIC and DMA in POST - reboot of linux works now
2002-01-01 21:39:28 +00:00
Volker Ruppert
c7b6a1c58b - int 13 floppy function 08 returns always the pointer to the param table in ROM 2001-12-26 14:53:40 +00:00
Volker Ruppert
014687aa97 - extended keyboard funktion waits for a key, too - don't panic 2001-12-05 20:38:32 +00:00
Volker Ruppert
db4401adb8 - serial functions added, MF-II keyboard functions added, parport updates 2001-11-26 07:26:55 +00:00
Bryce Denney
26b2c0254c - this revision is based on a patch from Cliff Hones <cliff@aonix.co.uk>.
Cliff added to bios_printf the ability to print onto the console.  Bryce made
  some further changes.  Now when a panic occurs, the message is reported both
  to the Bochs log file and to the screen, and then it goes into an infinite
  busy loop.  Why an inf loop?  If I do a HLT in BIOS code, current bochs
  versions will panic immediately and the user will never see the real panic
  message.  I have mostly tested the new panic behavior by booting nonbootable
  and nonreadable disks.
2001-11-21 02:33:05 +00:00
Bryce Denney
fad446ef63 - fix bug I created in rev 1.15 which caused all boot problems to be
reported as "not a bootable disk" even if it was "not a readable disk".
2001-11-18 16:40:26 +00:00
Bryce Denney
fea759a204 - apply patch.pci from Volker Ruppert. See
[ #481546 ] pci patch (Volker Ruppert) for any followups.
2001-11-14 01:39:22 +00:00
Bryce Denney
a2efc4c5de - commit patch.parport from Volker Ruppert. I tested it by running
"copy FILE prn" in a freedos image.
2001-11-12 01:33:01 +00:00
Bryce Denney
7986ea67a7 - print "read error" when hard disk cannot read the disk image, or
seeks beyond the end
2001-10-06 08:48:28 +00:00
Bryce Denney
7140fa7090 - don't panic on int 0x13, AH=0x42 through 0x49. These are valid
MS/IBM extensions but they aren't supported.  Return an error code instead.
2001-10-05 23:58:45 +00:00
Bryce Denney
daf2a9fb55 - add RCS Id to header of every file. This makes it easier to know what's
going on when someone sends in a modified file.
2001-10-03 13:10:38 +00:00
Bryce Denney
3bba2f657f - apply patch from patches/patch.lba. This is taken from plex86 cvs
and modified for bochs.  Minimal testing so far...
2001-09-19 15:30:44 +00:00
Bryce Denney
aca0d3fae8 - apply BIOS patch from Barry Allard to check the boot signature
- fiddle with I/O handler for port 0x401 to allow BIOS to write a
  complete panic message
2001-08-15 04:56:00 +00:00
Bryce Denney
7a095b60e4 - now floppy controller returns a proper error response if you try to write
a read-only disk image.  For systems such as DOS that actually use the
  BIOS services, it was also necessary to add code in int13_diskette_function
  to recognize a write-protected error and return the correct error
  status code (AH=3, Carry Set).
2001-06-13 07:06:10 +00:00
Bryce Denney
7f14cc625e - This should fix the bug
[ #430472 ] DOS HIMEM "A20 line" error
  All I've done is moved the call to print_bios_banner later in the
  boot process, and the A20 problem goes away.  I wanted it early so
  that it would get printed before any panic or halt could happen.
  Oh well.
2001-06-07 18:03:29 +00:00
Bryce Denney
08fad0325e - fixed the entry count for 2 and 4 processor MP structure, and the
checksum.
- at the same time, I removed my initials from the OEM id field and changed
  it to "BOCHSCPU"  :)
2001-06-07 13:33:32 +00:00
Bryce Denney
981fb8f55b - fixed bug introduced in 1.6 which caused MP structures to be overwritten
by BCC generated data.  This was pointed out by Tom Lindström
  <tom@debet.shh.fi>, and I took his suggestion of moving the MP structures
  to the end of the file.
2001-06-07 12:29:22 +00:00
Bryce Denney
954e3377b4 - print messages on boot failure 2001-05-31 20:36:05 +00:00
Bryce Denney
b198e58c72 - removed panic that I had used in debugging. Oops. 2001-05-31 15:23:10 +00:00
Bryce Denney
5ac0adc67d - do not HALT if hard drives cannot be found 2001-05-31 15:21:25 +00:00
Bryce Denney
071589ab79 - now I/O writes to 0x400 (panic_port) actually cause a BX_PANIC message
- now the HALT macro in rombios.c writes to panic port but does not actually
  execute a "hlt" instruction.  This allows the .bochsrc to control
  whether the BIOS panic is fatal or not.
2001-05-29 14:28:14 +00:00
Bryce Denney
2d399f2501 - applied Cliff Hones's bios patches <cliff@aonix.co.uk>
His change log says:
  - Makefile simplified - no longer uses tools86, dataseghack or ld86.
    Also enables warnings (-w-) and checks for undefined labels (-u-).
  - Macros used in place of multi-line #defines (so !!! conversion by
    tools86 not needed).
  - HALT() fixed [previously used ';' instead of '!!!'].  Needs port 400 to
    be added to iodev to be useful?
  - isru removed - doesn't seem to be needed now.
  - added UDIV16 (for use by bios_printf).
  - bios_printf %d implemented.
  - set_enable_a20 changed to use PS2 method, since bochs emulates this.
  - Keyboard intercept (int 15h/42h) fixed - should set CF, not assume that
    caller already has.  [The DOS keyb driver for example doesn't!]
  - Memory is scanned from C000 to F4000 for extension ROMs - this
    picks up VGA BIOS as before, and allows others to be included.
  - Comments improved for bios config table, and bit indicating RTC
    present is now set.
  - Int 9 (keyboard) now calls Int 15h/42h for key releases too.
    [Again, this is what the DOS keyb driver does.]
2001-05-24 22:27:44 +00:00
Bryce Denney
e61d00351f - merged BRANCH-smp-bochs into main branch. For details see comments
in BRANCH-smp-bochs revisions.
- The general task was to make multiple CPU's which communicate
  through their APICs.  So instead of BX_CPU and BX_MEM, we now have
  BX_CPU(x) and BX_MEM(y).  For an SMP simulation you have several
  processors in a shared memory space, so there might be processors
  BX_CPU(0..3) but only one memory space BX_MEM(0).  For cosimulation,
  you could have BX_CPU(0) with BX_MEM(0), then BX_CPU(1) with
  BX_MEM(1).  WARNING: Cosimulation is almost certainly broken by the
  SMP changes.
- to simulate multiple CPUs, you have to give each CPU time to execute
  in turn.  This is currently implemented using debugger guards.  The
  cpu loop steps one CPU for a few instructions, then steps the
  next CPU for a few instructions, etc.
- there is some limited support in the debugger for two CPUs, for
  example printing information from each CPU when single stepping.
2001-05-23 08:16:07 +00:00
Bryce Denney
fbde69ffcc - fixed bug in int13 code that returned disk0's geometry for either disk.
This fixes [ #424904 ] rombios bug: both hds claim same geom
2001-05-17 21:47:14 +00:00
Bryce Denney
328412aac8 - This revision makes the BIOS code understand that there can be either
1 or 2 hard disks.
- int13: check how many disks first, and only return an error if DL exceeds
  the number of disks (ignoring bit 7 of course)
- added drive number arg to get_hd_geometry, so that get_hd_geometry can
  retrieve the numbers corresponding to hard drive 0 or 1
- hard_drive_post will now set up the EBDA area for drive 0 if it exists,
  then for drive 1 if it exists.
2001-05-03 21:13:20 +00:00
Bryce Denney
a6fef54678 - update copyright dates to 2001 for all mandrake headers
- for bochs files with other header, replaced with current mandrake header
2001-04-10 02:20:02 +00:00
cvs
beff63eb32 - entered original Bochs snapshot bochs-2000_0325a.tar.gz from
ftp.bochs.com
2001-04-10 01:04:59 +00:00