--- core/isolinux.asm | 33 +++++++++++++++++++++++++++++++++ core/layout.inc | 7 +++++++ core/parsecmd.inc | 8 ++++++++ 3 files changed, 48 insertions(+) --- a/core/isolinux.asm +++ b/core/isolinux.asm @@ -20,6 +20,9 @@ ; **************************************************************************** %define IS_ISOLINUX 1 + +; %define DEBUG_DISKIO + %include "head.inc" ; @@ -964,10 +967,40 @@ getlinsec_cdrom: ; INT 13h with retry xint13: mov byte [RetryCount],retry_count .try: pushad +%ifdef DEBUG_DISKIO + pushad + mov cx,16 +.zap: + lodsb + call writehex2 + mov al,' ' + call writechr + loop .zap + mov ah,0 + int 16h + popad +%endif ; seen buggy bios that overwrites buffer address on error... push dword [dapa + 4] call int13 pop dword [dapa + 4] +%ifdef DEBUG_DISKIO + pushad + pushf + push ax + mov al,':' + call writechr + mov al,' ' + call writechr + pop ax + sbb al,al + call writehex4 + call crlf + mov ah,0 + int 16h + popf + popad +%endif jc .error .noerror: add sp,byte 8*4 ; Clean up stack --- a/core/layout.inc +++ b/core/layout.inc @@ -56,6 +56,11 @@ RBFG_brainfuck: resb 2048 ; Bigger than section .bss2 write nobits align=16 +%ifdef IS_ISOLINUX + ; Normal bss... + section .bss1 write nobits align=16 +%endif + section .text exec write progbits align=16 section .bcopyxx exec write progbits align=16 section .data write progbits align=16 @@ -68,8 +73,10 @@ RBFG_brainfuck: resb 2048 ; Bigger than ; the spillover from the last fractional sector load. section .uibss write nobits align=16 +%ifndef IS_ISOLINUX ; Normal bss... section .bss1 write nobits align=16 +%endif ; Symbols from linker script %macro SECINFO 1 --- a/core/parsecmd.inc +++ b/core/parsecmd.inc @@ -121,6 +121,14 @@ KbdMap resb 256 ; Keyboard map FKeyName resb MAX_FKEYS*FILENAME_MAX ; File names for F-key help KernelCNameLen resw 1 ; Length of unmangled kernel name InitRDCNameLen resw 1 ; Length of unmangled initrd name + +%if IS_ISOLINUX +%ifdef DEBUG_MESSAGES +; we need to rearrange memory a bit to make isolinux-debug.bin fit + section .bss +%endif +%endif + %if IS_SYSLINUX KernelName resb FILENAME_MAX+1 ; Mangled name for kernel KernelCName resb FILENAME_MAX+2 ; Unmangled kernel name