Mail Archives: opendos/1997/02/04/23:22:51
Jim Lefavour <jamesl AT mail DOT albany DOT net> wrote:
>I have just set up OD to boot from my first "primary" partition, and
>MSDOG on the 2nd. Both have their own copy of windows, but they
>share DJGPP, and GAMES, etc...
>
>Any ideas on why MSDOG can boot from the 2nd partition, and OD can't?
>I had to do some serious shuffling to get OD on it's own "test"
>partition.
Here's the OpenDOS MBR, according to grub "How It Works" series and NASM.
Hope you can glean some useful information from it.
--
Weiqi Gao
weiqigao AT crl DOT com
==========
00007C00 EB56 jmp short 0x7c58
00007C02 90 nop
00007C03 4E dec si
00007C04 57 push di
00007C05 44 inc sp
00007C06 4F dec di
00007C07 53 push bx
00007C08 37 aaa
00007C09 2E3000 xor [cs:bx+si],al
00007C0C 0210 add dl,[bx+si]
00007C0E 0100 add [bx+si],ax
00007C10 0200 add al,[bx+si]
00007C12 0200 add al,[bx+si]
00007C14 00F8 add al,bh
00007C16 FC cld
00007C17 003F add [bx],bh
00007C19 0010 add [bx+si],dl
00007C1B 003F add [bx],bh
00007C1D 0000 add [bx+si],al
00007C1F 00D1 add cl,dl
00007C21 BB0F00 mov bx,0xf
00007C24 800029 add byte [bx+si],0x29
00007C27 37 aaa
00007C28 0F db 0x0F
00007C29 DE1D ficomp word [di]
00007C2B 4D dec bp
00007C2C 41 inc cx
00007C2D 58 pop ax
00007C2E 54 push sp
00007C2F 4F dec di
00007C30 52 push dx
00007C31 5F pop di
00007C32 3120 xor [bx+si],sp
00007C34 2020 and [bx+si],ah
00007C36 46 inc si
00007C37 41 inc cx
00007C38 54 push sp
00007C39 31362020 xor [0x2020],si
00007C3D 2000 and [bx+si],al
00007C3F 0000 add [bx+si],al
00007C41 007000 add [bx+si+0x0],dh
00007C44 FF db 0xFF
00007C45 FF4942 dec word [bx+di+0x42]
00007C48 4D dec bp
00007C49 42 inc dx
00007C4A 49 dec cx
00007C4B 4F dec di
00007C4C 2020 and [bx+si],ah
00007C4E 43 inc bx
00007C4F 4F dec di
00007C50 4D dec bp
00007C51 005000 add [bx+si+0x0],dl
00007C54 0008 add [bx+si],cl
00007C56 0018 add [bx+si],bl
00007C58 FC cld
00007C59 33C0 xor ax,ax
00007C5B 8EC0 mov es,ax
00007C5D FA cli
00007C5E 8ED0 mov ss,ax
00007C60 BC007C mov sp,0x7c00
00007C63 FB sti
00007C64 33D2 xor dx,dx
00007C66 CD13 int 0x13
00007C68 BD7800 mov bp,0x78
00007C6B 8BFC mov di,sp
00007C6D C57600 lds si,[bp+0x0]
00007C70 897E00 mov [bp+0x0],di
00007C73 8C4602 mov [bp+0x2],es
00007C76 B90B00 mov cx,0xb
00007C79 F3A4 rep movsb
00007C7B 91 xchg ax,cx
00007C7C 8ED8 mov ds,ax
00007C7E 8BEC mov bp,sp
00007C80 C6460424 mov byte [bp+0x4],0x24
00007C84 8A460D mov al,[bp+0xd]
00007C87 89463E mov [bp+0x3e],ax
00007C8A 8A4610 mov al,[bp+0x10]
00007C8D F76616 mul word [bp+0x16]
00007C90 03460E add ax,[bp+0xe]
00007C93 83D200 adc dx,byte +0x0
00007C96 8B4E0B mov cx,[bp+0xb]
00007C99 81F90002 cmp cx,0x200
00007C9D 7411 je 0x7cb0
00007C9F 7254 jb 0x7cf5
00007CA1 D1E9 shr cx,1
00007CA3 03C0 add ax,ax
00007CA5 83D200 adc dx,byte +0x0
00007CA8 D1663E shl word [bp+0x3e],1
00007CAB D16616 shl word [bp+0x16],1
00007CAE EBE9 jmp short 0x7c99
00007CB0 837E160C cmp word [bp+0x16],byte +0xc
00007CB4 7705 ja 0x7cbb
00007CB6 C74644FF0F mov word [bp+0x44],0xfff
00007CBB 03461C add ax,[bp+0x1c]
00007CBE 13561E adc dx,[bp+0x1e]
00007CC1 50 push ax
00007CC2 52 push dx
00007CC3 8B5E11 mov bx,[bp+0x11]
00007CC6 53 push bx
00007CC7 83C30F add bx,byte +0xf
00007CCA B104 mov cl,0x4
00007CCC D3EB shr bx,cl
00007CCE 885E2B mov [bp+0x2b],bl
00007CD1 8E4654 mov es,[bp+0x54]
00007CD4 06 push es
00007CD5 E8AB00 call 0x7d83
00007CD8 07 pop es
00007CD9 89462C mov [bp+0x2c],ax
00007CDC 89562E mov [bp+0x2e],dx
00007CDF 59 pop cx
00007CE0 2BFF sub di,di
00007CE2 51 push cx
00007CE3 57 push di
00007CE4 8D7646 lea si,[bp+0x46]
00007CE7 B90B00 mov cx,0xb
00007CEA F3A6 repe cmpsb
00007CEC 5F pop di
00007CED 59 pop cx
00007CEE 7413 je 0x7d03
00007CF0 83C720 add di,byte +0x20
00007CF3 E2ED loop 0x7ce2
00007CF5 BED57D mov si,0x7dd5
00007CF8 E8D400 call 0x7dcf
00007CFB 98 cbw
00007CFC CD16 int 0x16
00007CFE EA0000FFFF jmp 0xffff:0x0
00007D03 268B4D1A mov cx,[es:di+0x1a]
00007D07 268B451C mov ax,[es:di+0x1c]
00007D0B 05FF01 add ax,0x1ff
00007D0E D1E8 shr ax,1
00007D10 886625 mov [bp+0x25],ah
00007D13 5A pop dx
00007D14 58 pop ax
00007D15 51 push cx
00007D16 8B4E16 mov cx,[bp+0x16]
00007D19 2BC1 sub ax,cx
00007D1B 83DA00 sbb dx,byte +0x0
00007D1E 8E4654 mov es,[bp+0x54]
00007D21 51 push cx
00007D22 C6462B01 mov byte [bp+0x2b],0x1
00007D26 E85A00 call 0x7d83
00007D29 59 pop cx
00007D2A E2F5 loop 0x7d21
00007D2C 5B pop bx
00007D2D 8E4642 mov es,[bp+0x42]
00007D30 8B463E mov ax,[bp+0x3e]
00007D33 88462B mov [bp+0x2b],al
00007D36 284625 sub [bp+0x25],al
00007D39 9C pushf
00007D3A 7306 jae 0x7d42
00007D3C 8A5625 mov dl,[bp+0x25]
00007D3F 00562B add [bp+0x2b],dl
00007D42 53 push bx
00007D43 4B dec bx
00007D44 4B dec bx
00007D45 F7E3 mul bx
00007D47 03462C add ax,[bp+0x2c]
00007D4A 13562E adc dx,[bp+0x2e]
00007D4D E83300 call 0x7d83
00007D50 5B pop bx
00007D51 06 push es
00007D52 8BC3 mov ax,bx
00007D54 D1E3 shl bx,1
00007D56 C47E54 les di,[bp+0x54]
00007D59 7202 jb 0x7d5d
00007D5B 8EC7 mov es,di
00007D5D 817E44FF0F cmp word [bp+0x44],0xfff
00007D62 7512 jne 0x7d76
00007D64 03D8 add bx,ax
00007D66 D1EB shr bx,1
00007D68 268B1F mov bx,[es:bx]
00007D6B 7304 jae 0x7d71
00007D6D B104 mov cl,0x4
00007D6F D3EB shr bx,cl
00007D71 80E70F and bh,0xf
00007D74 EB03 jmp short 0x7d79
00007D76 268B1F mov bx,[es:bx]
00007D79 07 pop es
00007D7A 9D popf
00007D7B 77B3 ja 0x7d30
00007D7D 8A5624 mov dl,[bp+0x24]
00007D80 FF6E40 jmp far [bp+0x40]
00007D83 33DB xor bx,bx
00007D85 50 push ax
00007D86 52 push dx
00007D87 E81500 call 0x7d9f
00007D8A 8CC0 mov ax,es
00007D8C 052000 add ax,0x20
00007D8F 8EC0 mov es,ax
00007D91 5A pop dx
00007D92 58 pop ax
00007D93 050100 add ax,0x1
00007D96 83D200 adc dx,byte +0x0
00007D99 FE4E2B dec byte [bp+0x2b]
00007D9C 75E5 jne 0x7d83
00007D9E C3 ret
00007D9F F77618 div word [bp+0x18]
00007DA2 42 inc dx
00007DA3 8ACA mov cl,dl
00007DA5 33D2 xor dx,dx
00007DA7 F7761A div word [bp+0x1a]
00007DAA 8AF2 mov dh,dl
00007DAC D0CC ror ah,1
00007DAE D0CC ror ah,1
00007DB0 80E4C0 and ah,0xc0
00007DB3 0ACC or cl,ah
00007DB5 8AE8 mov ch,al
00007DB7 8A5624 mov dl,[bp+0x24]
00007DBA B80102 mov ax,0x201
00007DBD CD13 int 0x13
00007DBF 73DD jae 0x7d9e
00007DC1 FE4E26 dec byte [bp+0x26]
00007DC4 75F4 jne 0x7dba
00007DC6 E92CFF jmp 0x7cf5
00007DC9 B40E mov ah,0xe
00007DCB 2BDB sub bx,bx
00007DCD CD10 int 0x10
00007DCF AC lodsb
00007DD0 84C0 test al,al
00007DD2 75F5 jne 0x7dc9
00007DD4 C3 ret
00007DD5 0D0A43 or ax,0x430a
00007DD8 61 popa
00007DD9 6E outsb
00007DDA 6E outsb
00007DDB 6F outsw
00007DDC 7420 je 0x7dfe
00007DDE 6C insb
00007DDF 6F outsw
00007DE0 61 popa
00007DE1 6420444F and [fs:si+0x4f],al
00007DE5 53 push bx
00007DE6 207072 and [bx+si+0x72],dh
00007DE9 657373 gs jae 0x7e5f
00007DEC 206B65 and [bp+di+0x65],ch
00007DEF 7920 jns 0x7e11
00007DF1 746F je 0x7e62
00007DF3 207265 and [bp+si+0x65],dh
00007DF6 7472 je 0x7e6a
00007DF8 790D jns 0x7e07
00007DFA 0A00 or al,[bx+si]
00007DFC 0000 add [bx+si],al
00007DFE 55 push bp
00007DFF AA stosb
- Raw text -