59 lines
988 B
NASM
59 lines
988 B
NASM
|
|
||
|
%if 0
|
||
|
|
||
|
FreeDOS kernel executable MZ header shim
|
||
|
by C. Masloch, 2022
|
||
|
|
||
|
Usage of the works is permitted provided that this
|
||
|
instrument is retained with the works, so that any entity
|
||
|
that uses the works is notified of this instrument.
|
||
|
|
||
|
DISCLAIMER: THE WORKS ARE WITHOUT WARRANTY.
|
||
|
|
||
|
%endif
|
||
|
|
||
|
%include "lmacros2.mac"
|
||
|
|
||
|
defaulting
|
||
|
|
||
|
strdef FILE, ""
|
||
|
%ifidn _FILE,""
|
||
|
%fatal Has to specify a file!
|
||
|
%endif
|
||
|
|
||
|
|
||
|
org 0
|
||
|
header:
|
||
|
db "MZ" ; exeSignature
|
||
|
dw (payload.end - $$) % 512 ; exeExtraBytes
|
||
|
dw (payload.end - $$ + 511) / 512 ; exePages
|
||
|
dw 0 ; exeRelocItems
|
||
|
dw (payload -$$+0) >> 4 ; exeHeaderSize
|
||
|
dw 0 ; exeMinAlloc
|
||
|
dw -1 ; exeMaxAlloc
|
||
|
dw 0 ; exeInitSS
|
||
|
dw -2 ; exeInitSP
|
||
|
dw 0 ; exeChecksum
|
||
|
dw 0, 0 ; exeInitCSIP
|
||
|
dw 0 ; exeRelocTable
|
||
|
endarea header
|
||
|
|
||
|
|
||
|
align 16, db 38
|
||
|
payload:
|
||
|
jmp strict short entry
|
||
|
db "CONFIG"
|
||
|
dw 1
|
||
|
db -1
|
||
|
|
||
|
times 32 - ($ - payload) db 0
|
||
|
entry: equ $
|
||
|
jmp entry_common
|
||
|
|
||
|
times 0xC0 - ($ - payload) db 0
|
||
|
entry_common: equ $
|
||
|
|
||
|
incbin _FILE
|
||
|
.actual_end:
|
||
|
.end:
|