GithubHelp home page GithubHelp logo

rvalles / optromloader Goto Github PK

View Code? Open in Web Editor NEW
49.0 5.0 4.0 156 KB

IBM PC/Clone 8086+ floppy-loading of option roms.

License: MIT License

Makefile 18.14% Assembly 81.86%
8086-programs 8086 ibm-pc bios floppy bootloader assembly fasm rom bootrom

optromloader's Introduction

optromloader: IBM PC/Clone 8086+ floppy-loading of option roms.

Booted from a floppy, it will load an Option ROM image into the top of conventional memory.

PCem Amstrad PC1512 screenshot

Use cases (non-exhaustive)

  • Test boot ROMs before burning them.
  • Netboot with etherboot/gpxe/ipxe.
  • IDE support (including LBA!) with XTIDE Universal BIOS.

Highlights

  • Flat assembler syntax.
  • Pure 8086 code.
  • Single stage. (Fits in a floppy bootblock)
  • Verifies ROM image checksum after loading.
  • Supports all Option ROM sizes. Spec goes up to 127.5KB, but full 128KB ROMs are supported.
    • An extra block is read when length=255 (127.5KB/128KB case).
  • Reserves memory from top of conventional memory.
    • Alternatively allows specifying target segment (upper area possible).
  • Works on PC/XT/AT and clones.
    • Also works on newer hardware, such as the 486 with AMI BIOS I wrote it for.
  • Trivial to use.
  • Makefile will prepare 5.25" 360K/1.2M and 3.5" 720K/1.44M floppy images.
  • MIT License. See LICENSE file.

Usage

  • Ensure fasm (flat assembler) is installed.
  • Copy your ROM image as the optrom.bin file.
    • Ensure the ROM image is signed (has correct checksum).
      • optromloader will loudly refuse to run the ROM image if not signed.
      • Test with make emulaterom. Qemu's BIOS won't see the ROM if it's not signed.
      • Qemu provides a python tool to sign ROMs:
      • For XTIDE Universal BIOS ROMs, use its XTIDECFG tool to configure and sign ROM images.
  • Optionally review Makefile for advanced usage.
    • If boot floppy drive won't be A:, set bios_drive value appropriately.
    • If specifying target segment in upper memory, ensure it is visible as memory in BIOS settings.
      • into-486 works on my AMI BIOS 486.
  • Run make.
  • Floppy images will be created (fd*.img).
  • Optionally test 1.44M image with qemu: make emulate.
  • Alternatively, use a binary release. Concatenate:
    • optromloader9/15/18, according to sectors per track in your floppy format:
      • 9 for 5.25" 360K and 3.5" 720K.
      • 15 for 5.25" 1.2M.
      • 18 for 3.5" 1.44M.
    • the ROM image.
    • pad to floppy size.

Caveats

  • Option ROMs that make assumptions about their base address may not work if loaded into a different address.

Author

Roc Vallès Domènech

optromloader's People

Contributors

rvalles 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

Watchers

 avatar  avatar  avatar  avatar  avatar

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.