; pseudo.S - Produce a pseudo kernel header ; ; Useful for booting arbitrary ; binary images at 0x1000:0000 ; ; Copyright 2002-2005 John Coffman ; Copyright 2009-2011 Joachim Wiedorn ; All rights reserved. ; ; Licensed under the terms contained in the file 'COPYING' ; in the source directory. ; #define DEBUG 0 #define DELL_DIRTY_HACK SYSSEG = 0x1000 ; DEF_SYSSEG SETUPSEG = 0x9020 ; DEF_SETUPSEG CL_MAGIC_ADDR = 0x20 ! command line magic number CL_MAGIC = 0xa33f ! very unusual command sequence CL_OFFSET = 0x22 ! command line offset CL_LENGTH = 256 ! maximum length .text #if 0 .globl _main _main: #endif .globl zero zero: ; we want this to look like a bootable kernel image ; so we include the following header ; jmp begin .ascii "HdrS" ; looks like a real kernel .word 0x0200 ; header format version number .word 0,0 ; realmode switch, SETUPSEG .word SYSSEG ; SYSSEG -- load at 1000:0000 .word id_string .byte 0 ; type of loader .byte 0 ; flags 0=load low .word 2*512 ; move size: 2 sectors dd 0x10000 ; load us here dd 0 ; ramdisk image dd 0 ; ramdisk size .word bs_helper,SETUPSEG ; kludge??? ;; .word modelist+1024 ; heap end pointer ;----------end of header------------ begin: xor di,di cmp word ptr [CL_MAGIC_ADDR],#CL_MAGIC jne gotoit mov di,[CL_OFFSET] gotoit: jmpi 0000,SYSSEG ; jmp to 0x1000:0000 bs_helper: int 0x19 ;label here for kludge id_string: .ascii "pseudo.b" .byte 0 .blkb zero+512-* modelist: theend: