Commit Graph

298 Commits

Author SHA1 Message Date
Volker Ruppert
5be03ffb09 - int 0x16 function 0x0A implemented (GET KEYBOARD ID)
- int 0x16 functions 0x10/0x11 fixed (don't change the ascii code to 0xE0)
2003-10-16 19:31:33 +00:00
Daniel Gimpelevich
296dbe928a Fix ATA/Serial ioport conflict 2003-10-07 00:21:10 +00:00
Christophe Bothamy
109805f5b8 - remove the comment about 8x8 font.
Volker confirmed that the whole 8x8 font should be present in the vgabios.
2003-08-17 21:48:15 +00:00
Christophe Bothamy
f75ef317e5 - add 128 first 8x8 chars at 0xfa6e (fixes bug #787138 No ROM BIOS character map) 2003-08-16 20:11:28 +00:00
Christophe Bothamy
8fba74e1d1 - fix sf bug #764473 Freesco Linux crashes on boot
Syslinux 1.48 that is used to boot freesco, did not like the latest
  int15 function e801 returning AX=0 and BX=0, although my real
  system does, and Ralph Brown list allow it.

  Interestingly enough, the symptoms were floppy accesses with a track
  number > 100. Funny.

  Now int15 function e801 returns both extended and configured memory.
2003-08-07 00:02:24 +00:00
Christophe Bothamy
d112043348 - fix int15 function e801 (get memory size) 2003-04-25 22:13:24 +00:00
Christophe Bothamy
479fbe2a25 - apply patch "[ 682539 ] Fix CapsLock and NumLock behavior" from rock at gimp.org 2003-03-08 22:59:17 +00:00
Christophe Bothamy
579f3c0539 - apply Ben Lunt's 160k, 180k, 320k floppy patch 2003-02-06 23:16:56 +00:00
Christophe Bothamy
5e509b80c9 - add int15 function 86 support 2003-01-18 19:20:52 +00:00
Christophe Bothamy
152900c758 - move the extended key check in int09, now int15/4f is empty.
I did not see any bug, but maybe some code hooking int15/4f could be
  disoriented when receiving extented E0 scancode.
2003-01-14 18:03:31 +00:00
Christophe Bothamy
e42eee68e5 - add support for ElTorito Harddisk emulation. Darwin iso boots now.
The Harddisk emulation still needs some polish though.
2003-01-14 17:59:52 +00:00
Christophe Bothamy
04809a2258 - fix NetBSD not booting from cdrom. AH was not set to 0 after a
successful read through int13/AH=2 when emulation floppy from cdrom.
2003-01-13 12:51:17 +00:00
Christophe Bothamy
fd02f4ac05 - create two new asm functions to send eoi to the master pic and to both pics
- add int75_handler, for msdos compatbility fpu exception
  This handler calls int 2 (nmi). The NMI handler should really be aware
  of this and should iret in case of FPU exception (to be implemented)
2003-01-06 02:02:46 +00:00
Christophe Bothamy
b64fb6aba6 - refix [ 642031 ] FATAL: Keyboard RESET error:993
With Bryce we identified that this code will successfully
  flush the keyboard input buffer as long as ips <= 15000000.
2002-12-13 16:26:17 +00:00
Bryce Denney
3c450d5262 - apply 8CPU bios patch from Zwane Mwaikambo, who writes:
> This simplifies things for operating systems which don't do
  > paranoia/sanity checks. This BIOS image has been tested on Linux-2.4.19
2002-12-09 13:23:05 +00:00
Christophe Bothamy
8d41bca5f5 - fix [ 642031 ] FATAL: Keyboard RESET error:993 again: rewrote keyboard
buffer cleanup
- add BX_DEBUG_INT1A macro
- change two "mov ax, #0000" to "xor ax, ax", so int70_handler does not overlap int08_handler
2002-11-26 11:04:41 +00:00
Christophe Bothamy
b37dc11e70 - fix [ 629810 ] int 16/ah=01 broken?
added sti at start of int16_handler
- add some notes about int09 / int15/4f
2002-11-25 21:30:51 +00:00
Christophe Bothamy
f0c3eb675a - fix [ 642031 ] FATAL: Keyboard RESET error:993
Clear the incoming keys before reseting the keyboard.
2002-11-22 14:40:09 +00:00
Bryce Denney
7fde35e253 - fix a bug reported on ML by Scott Duplichan. Unimplemented int15 calls
should return AH=0x86 and CF set.  The new AH=E8 calls did not return
  0x86 in some cases where the call was not implemented.
2002-11-21 19:09:36 +00:00
Bryce Denney
58bcf51ad8 - no longer create biosconfig.h with one line extracted from config.h.
Instead, just build all 4 bioses for 1,2,4,8 processors all the time.
  Now they should all stay in sync without any special effort.

Modified Files:
  rombios.c Makefile.in
2002-11-14 20:04:38 +00:00
Christophe Bothamy
5d7b0701df - clean up in and out keyboard buffer before self test 2002-11-07 21:57:27 +00:00
Christophe Bothamy
70b7d13763 - remove patch.keyboard-biosinit-asulmicki
- add new keyboard init code from Adam Sulmicki
- changed last cli() to #asm cli #endasm
- remove unused cli() function
- don't panic on shutdown status 0x09. just do the normal post
2002-11-04 23:56:56 +00:00
Christophe Bothamy
55fa06db79 - fix type of the counter used when waiting for signals in ata_reset. It may be > 0xff 2002-10-30 22:42:42 +00:00
Christophe Bothamy
ae220149ea - add wait states during disks reset, so the BIOS can reliably detect them.
patch from Adam Sulmicki.
2002-10-30 21:47:11 +00:00
Christophe Bothamy
d5443fcba3 - change offset of the answer to the identify device query where current disk geometry is read.
Thanks to Adam Sulmicki
2002-10-27 23:04:59 +00:00
Christophe Bothamy
bd04f51748 - remove tabs from source code
- implement "large" "r-echs" "lba" disk translations
- fix if ( (sc==0x01) && (sn=0x01) ) bug
- fix option field in int13 function 0x48 for harddisks
- fix option field in int13 function 0x48 for cdrom
- add "%u" in printf to handle unsigned values
- remove UDIV
- asm helper asm function ldivul idiv_ and idiv_u
2002-10-27 21:17:03 +00:00
Bryce Denney
cec9135e9f - Apply patch.replace-Boolean rev 1.3. Every "Boolean" is now changed to a
"bx_bool" which is always defined as Bit32u on all platforms.  In Carbon
  specific code, Boolean is still used because the Carbon header files
  define it to unsigned char.
- this fixes bug [ 623152 ] MacOSX: Triple Exception Booting win95.
  The bug was that some code in Bochs depends on Boolean to be a
  32 bit value.  (This should be fixed, but I don't know all the places
  where it needs to be fixed yet.)  Because Carbon defined Boolean as
  an unsigned char, Bochs just followed along and used the unsigned char
  definition to avoid compile problems.  This exposed the dependency
  on 32 bit Boolean on MacOS X only and led to major simulation problems,
  that could only be reproduced and debugged on that platform.
- On the mailing list we debated whether to make all Booleans into "bool" or
  our own type.  I chose bx_bool for several reasons.
  1. Unlike C++'s bool, we can guarantee that bx_bool is the same size on all
     platforms, which makes it much less likely to have more platform-specific
     simulation differences in the future.  (I spent hours on a borrowed
     MacOSX machine chasing bug 618388 before discovering that different sized
     Booleans were the problem, and I don't want to repeat that.)
  2. We still have at least one dependency on 32 bit Booleans which must be
     fixed some time, but I don't want to risk introducing new bugs into the
     simulation just before the 2.0 release.

Modified Files:
    bochs.h config.h.in gdbstub.cc logio.cc main.cc pc_system.cc
    pc_system.h plugin.cc plugin.h bios/rombios.c cpu/apic.cc
    cpu/arith16.cc cpu/arith32.cc cpu/arith64.cc cpu/arith8.cc
    cpu/cpu.cc cpu/cpu.h cpu/ctrl_xfer16.cc cpu/ctrl_xfer32.cc
    cpu/ctrl_xfer64.cc cpu/data_xfer16.cc cpu/data_xfer32.cc
    cpu/data_xfer64.cc cpu/debugstuff.cc cpu/exception.cc
    cpu/fetchdecode.cc cpu/flag_ctrl_pro.cc cpu/init.cc
    cpu/io_pro.cc cpu/lazy_flags.cc cpu/lazy_flags.h cpu/mult16.cc
    cpu/mult32.cc cpu/mult64.cc cpu/mult8.cc cpu/paging.cc
    cpu/proc_ctrl.cc cpu/segment_ctrl_pro.cc cpu/stack_pro.cc
    cpu/tasking.cc debug/dbg_main.cc debug/debug.h debug/sim2.cc
    disasm/dis_decode.cc disasm/disasm.h doc/docbook/Makefile
    docs-html/cosimulation.html fpu/wmFPUemu_glue.cc
    gui/amigaos.cc gui/beos.cc gui/carbon.cc gui/gui.cc gui/gui.h
    gui/keymap.cc gui/keymap.h gui/macintosh.cc gui/nogui.cc
    gui/rfb.cc gui/sdl.cc gui/siminterface.cc gui/siminterface.h
    gui/term.cc gui/win32.cc gui/wx.cc gui/wxmain.cc gui/wxmain.h
    gui/x.cc instrument/example0/instrument.cc
    instrument/example0/instrument.h
    instrument/example1/instrument.cc
    instrument/example1/instrument.h
    instrument/stubs/instrument.cc instrument/stubs/instrument.h
    iodev/cdrom.cc iodev/cdrom.h iodev/cdrom_osx.cc iodev/cmos.cc
    iodev/devices.cc iodev/dma.cc iodev/dma.h iodev/eth_arpback.cc
    iodev/eth_packetmaker.cc iodev/eth_packetmaker.h
    iodev/floppy.cc iodev/floppy.h iodev/guest2host.h
    iodev/harddrv.cc iodev/harddrv.h iodev/ioapic.cc
    iodev/ioapic.h iodev/iodebug.cc iodev/iodev.h
    iodev/keyboard.cc iodev/keyboard.h iodev/ne2k.h
    iodev/parallel.h iodev/pci.cc iodev/pci.h iodev/pic.h
    iodev/pit.cc iodev/pit.h iodev/pit_wrap.cc iodev/pit_wrap.h
    iodev/sb16.cc iodev/sb16.h iodev/serial.cc iodev/serial.h
    iodev/vga.cc iodev/vga.h memory/memory.h memory/misc_mem.cc
2002-10-25 11:44:41 +00:00
Bryce Denney
5e520261db Add plugin support to Bochs by merging all the changes from the
BRANCH_PLUGINS branch!

Authors:
  Bryce Denney
  Christophe Bothamy
  Kevin Lawton (we grabbed a lot of plugin code from plex86)
Testing help from:
  Volker Ruppert
  Don Becker (Psyon)
  Jeremy Parsons (Br'fin)

The change log is too long to paste in here.  To read the change log, do
  cvs log patches/patch.final-from-BRANCH_PLUGINS.gz

All the changes and a detailed description are contained in a patch
called patch.final-from-BRANCH_PLUGINS.gz.  To look at the complete
patch, do
  cvs upd -r1.1 patches/patch.final-from-BRANCH_PLUGINS.gz

Then you will have a local copy of the patch, which you can gunzip and
play with however you want.

Modified Files:
    .bochsrc Makefile.in aclocal.m4 bochs.h config.h.in configure
    configure.in gdbstub.cc logio.cc main.cc pc_system.cc
    pc_system.h state_file.h bios/Makefile.in bios/rombios.c
    cpu/Makefile.in cpu/access.cc cpu/apic.cc cpu/arith16.cc
    cpu/arith32.cc cpu/arith8.cc cpu/cpu.cc cpu/cpu.h
    cpu/ctrl_xfer32.cc cpu/exception.cc cpu/fetchdecode.cc
    cpu/fetchdecode64.cc cpu/flag_ctrl.cc cpu/flag_ctrl_pro.cc
    cpu/init.cc cpu/io.cc cpu/logical16.cc cpu/logical32.cc
    cpu/logical8.cc cpu/paging.cc cpu/proc_ctrl.cc
    cpu/protect_ctrl.cc cpu/segment_ctrl_pro.cc cpu/shift16.cc
    cpu/shift32.cc cpu/stack64.cc cpu/string.cc cpu/tasking.cc
    debug/Makefile.in debug/dbg_main.cc disasm/Makefile.in
    doc/docbook/user/user.dbk dynamic/Makefile.in fpu/Makefile.in
    gui/Makefile.in gui/amigaos.cc gui/beos.cc gui/carbon.cc
    gui/control.cc gui/control.h gui/gui.cc gui/gui.h
    gui/keymap.cc gui/keymap.h gui/macintosh.cc gui/nogui.cc
    gui/rfb.cc gui/sdl.cc gui/sdlkeys.h gui/siminterface.cc
    gui/siminterface.h gui/term.cc gui/win32.cc gui/wx.cc
    gui/wxdialog.cc gui/wxdialog.h gui/wxmain.cc gui/wxmain.h
    gui/x.cc gui/keymaps/sdl-pc-de.map gui/keymaps/sdl-pc-us.map
    gui/keymaps/x11-pc-de.map instrument/example0/instrument.h
    instrument/example1/instrument.h
    instrument/stubs/instrument.cc instrument/stubs/instrument.h
    iodev/Makefile.in iodev/biosdev.cc iodev/biosdev.h
    iodev/cdrom.cc iodev/cmos.cc iodev/cmos.h iodev/devices.cc
    iodev/dma.cc iodev/dma.h iodev/eth_fbsd.cc iodev/eth_linux.cc
    iodev/eth_null.cc iodev/eth_tap.cc iodev/floppy.cc
    iodev/floppy.h iodev/guest2host.cc iodev/guest2host.h
    iodev/harddrv.cc iodev/harddrv.h iodev/iodebug.cc
    iodev/iodebug.h iodev/iodev.h iodev/keyboard.cc
    iodev/keyboard.h iodev/ne2k.cc iodev/ne2k.h iodev/parallel.cc
    iodev/parallel.h iodev/pci.cc iodev/pci.h iodev/pci2isa.cc
    iodev/pci2isa.h iodev/pic.cc iodev/pic.h iodev/pit.cc
    iodev/pit.h iodev/pit_wrap.cc iodev/pit_wrap.h iodev/sb16.cc
    iodev/sb16.h iodev/scancodes.cc iodev/scancodes.h
    iodev/serial.cc iodev/serial.h iodev/slowdown_timer.cc
    iodev/slowdown_timer.h iodev/unmapped.cc iodev/unmapped.h
    iodev/vga.cc iodev/vga.h memory/Makefile.in memory/memory.cc
    memory/memory.h memory/misc_mem.cc misc/bximage.c
    misc/niclist.c
Added Files:
    README-plugins extplugin.h ltdl.c ltdl.h ltdlconf.h.in
    ltmain.sh plugin.cc plugin.h
2002-10-24 21:07:56 +00:00
Christophe Bothamy
17faa94c65 - add a pushad_regs_t structure, similar to pusha_regs_t
- change int 15 function to get a pushad_regs_t parameter
  instead of the registers enumeration
- change in int 15 references to 32bits,16bits and 8 bits
  registers to their pushad_regs_t counterpart
2002-10-19 17:08:17 +00:00
Christophe Bothamy
ec595a7d9b - limit the logical chs heads count for disks > 8GiB to 256
- limit the logical chs cylinders count for disks > 8GiB to 1024
- fix a missing parameter in a BX_INFO
2002-10-16 14:04:41 +00:00
Christophe Bothamy
fcc1cd5195 - add int15 function 0xe820 (from osmaker)
- add int15 function 0xe801 (from Hartmut Birr)
- add amount of extended memory in 64KiB block to cmos regs 0x34 and 0x35
2002-10-16 07:38:37 +00:00
Volker Ruppert
d460ec396a - harddisk controller interrupt must be enabled after a reset and the
completion of a read or write operation
- int13_harddisk function 0x00 calls ata_reset()
2002-10-07 16:16:04 +00:00
Christophe Bothamy
7c35cfb980 - fixed size mismatch 2002-10-04 16:47:29 +00:00
Volker Ruppert
4158c1e862 - serial port detection for two ports added to the POST code
- parallel port detection fixed:
  * write the value of AX to 0x0410, not BX
  * the timeout value is a byte and now stored in CL
  * the offset of the port address list is 2 bytes
2002-09-28 15:03:32 +00:00
Volker Ruppert
b98975c832 - parallel port detection for two ports added to the POST code 2002-09-28 12:27:56 +00:00
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