User:Johnburger/Demo/Pad/ISO/Catalog
< User:Johnburger | Demo
Jump to navigation
Jump to search
This Sector is where the "magic" happens. It defines the very first Sector on the CD as the default Boot Sector, and for the BIOS to treat the CD as a Floppy Disk.
It is only because ISO 9660 treats the first 16 (2 kiB) Sectors as "reserved" that this trick works: since the BIOS looks for the Primary and Boot Volumes from the 17th Sector, we can put whatever we like before it:
- This Demonstrator;
- A complete OS;
- A loader for the rest of the CD, perhaps with an ISO driver;
- Anything! Over to you...
Demo/Pad/ISO/Catalog.inc
;
; Pad/ISO/Catalog.inc
;
; This file defines the Boot Catalog Sector for the ISO image. This basically
; points to the first sector, which is where the standard boot sector is anyway.
;
; Note that ISO.Boot.Default.Media has been set to Floppy.1440. This option
; works for VMware, VirtualPC and VirtualBox. Other options work for VMware only
%define ISO.Catalog.ID Version.Author
ISO.Sector.Catalog EQU ISO.Sectors
%assign ISO.Sectors ISO.Sectors + 1
ISO.Boot.Catalog:
; Add Validation entry, and calculate Checksum for us
ISO.Boot.Validation ISO.Validation ISO.Catalog.ID, ISO.Boot.Platform.x86
ISO.Boot.Default:
.Bootable DB 88h
.Media DB ISO.Boot.Media.Floppy.1440 ; HardDisk ; NoEmulation
.Load DW 0000h ; This could be 7C00h. 0000h defaults it
.System DB 00h
DB 0
.Count DW 1 ; You can use this to load MORE!
.LBA DD 0 ; Start sector to load
.Reserved TIMES (1Fh-0Ch+1) DB 00h
ISO.Boot.Catalog.Padding EQU ISO.Sector.Size - ($ - ISO.Boot.Catalog)
TIMES ISO.Boot.Catalog.Padding DB 00h