diff options
author | H. Peter Anvin <hpa@zytor.com> | 2009-05-24 19:04:14 -0700 |
---|---|---|
committer | H. Peter Anvin <hpa@zytor.com> | 2009-05-24 19:04:14 -0700 |
commit | 73ab2bf37fb8ebf91fa55e9ece4031840335382d (patch) | |
tree | 9c013103f5501aabb91dffdfde6e4ad66e67fea5 /doc/comboot.txt | |
parent | 04e7c2784dd3fd45090d1ddb31905dd7a9b921a3 (diff) | |
download | syslinux-73ab2bf37fb8ebf91fa55e9ece4031840335382d.tar.gz |
Document the COM32R format
Diffstat (limited to 'doc/comboot.txt')
-rw-r--r-- | doc/comboot.txt | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/doc/comboot.txt b/doc/comboot.txt index f5fefdaf..1b087a16 100644 --- a/doc/comboot.txt +++ b/doc/comboot.txt @@ -51,25 +51,28 @@ program), or execute INT 20h or INT 21h AH=00h or INT 21h AH=4Ch. If compatiblity with Syslinux 1.xx is desired, use INT 20h. - ++++ COM32 file format ++++ + ++++ COM32R file format ++++ -A COM32 file is a raw binary file containing 32-bit code. It should -be linked to run at address 0x101000, and should not contain any -segment references. It will be run in flat-memory 32-bit protected +A COM32R file is a raw binary file containing 32-bit code. It should +be self-relocating, as it will be loaded by the Syslinux core at any +4K aligned address. It will be run in flat-memory 32-bit protected mode. Under Syslinux, it will be run in CPL 0, however, since it may be possible to create a COM32 execution engine that would run under something like Linux DOSEMU, it is recommended that the code does not assume CPL 0 unless absolutely necessary. -It is highly recommended that every COM32 program begins with the byte -sequence B8 FF 4C CD 21 (mov eax,21cd4cffh) as a magic number. +It is highly recommended that every COM32R program begins with the byte +sequence B8 FE 4C CD 21 (mov eax,21cd4cfeh) as a magic number. -A COM32 file should have extension ".c32". +The COM32R format replaces the earlier COM32 format, which was linked +to a fixed address (0x101000). + +A COM32R file should have extension ".c32". On startup, CS will be set up as a flat 32-bit code segment, and DS == ES == SS will be set up as the equivalent flat 32-bit data segment. FS and GS are reserved for future use and are currently initialized to -zero. A COM32 image should not assume any particular values of +zero. A COM32R image should not assume any particular values of segment selectors. ESP is set up at the end of available memory and also serves as |