wok diff syslinux/stuff/iso2exe/bootiso.S @ rev 19828
syslinux/iso2exe: follow boot flag (again)
author | Pascal Bellard <pascal.bellard@slitaz.org> |
---|---|
date | Thu Mar 09 09:54:22 2017 +0100 (2017-03-09) |
parents | e619bff66a02 |
children | 658ada1dde7e |
line diff
1.1 --- a/syslinux/stuff/iso2exe/bootiso.S Wed Mar 08 15:32:40 2017 +0100 1.2 +++ b/syslinux/stuff/iso2exe/bootiso.S Thu Mar 09 09:54:22 2017 +0100 1.3 @@ -1,5 +1,6 @@ 1.4 .text 1.5 .code16 1.6 + .arch i8086 1.7 .org 0 1.8 1.9 CODESZ = 0x8000 // 16 sectors = 32Kb 1.10 @@ -121,7 +122,7 @@ 1.11 .org 0x01B8 1.12 1.13 ////////////////////////// partition boot code //////////////////////////////// 1.14 -// assume CS=DS=SS=0 BX=7C00 DL=<drive> SI=7DBE 1.15 +// assume CS=DS=SS=0 AH=00 BX=7C00 CX=0100 DL=<drive> SI=7DBE 1.16 1.17 .org 0x7C00 1.18 jmp bootpartition 1.19 @@ -134,28 +135,31 @@ 1.20 popw %di 1.21 movw $table,%si 1.22 call movepartition 1.23 + movw $patch-16,%di 1.24 movb $4,%cl 1.25 - movw $table-16,%di 1.26 + movb $16,%al 1.27 next: 1.28 - addw $16,%di 1.29 + addw %ax,%di 1.30 cmpb %ch,(%di) // boot flag ? 1.31 loope next 1.32 pushw %ds 1.33 pushw %ds 1.34 - pushl 8(%di) 1.35 + pushw 10(%di) 1.36 + pushw 8(%di) 1.37 pushw %ds 1.38 pushw %bx 1.39 - pushw $1 1.40 - pushw $0x10 1.41 + movb $1,%cl 1.42 + pushw %cx 1.43 + pushw %ax 1.44 movw %sp,%si // assume %ds = %ss 1.45 + pushw %bx 1.46 + cmpw %ax,2(%di) // empty or isolinux partition ? 1.47 + jbe default 1.48 movb $0x42,%ah 1.49 - pushw %bx 1.50 - cmpw $63,2(%di) // empty or isolinux partition ? 1.51 - jbe default 1.52 int $0x13 1.53 default: 1.54 ret 1.55 - .org 0x7DEF 1.56 + .org 0x7DF0 1.57 bootpartition: 1.58 pushw %ds 1.59 popw %es 1.60 @@ -163,12 +167,12 @@ 1.61 movw %bx,%di 1.62 movsw 1.63 movsb 1.64 - movw $partcode+0x100,%di 1.65 + movw $0x7E00,%di 1.66 pushw %di 1.67 movepartition: 1.68 - movw $66/2,%cx 1.69 + movb $66,%cl // 0142 and 0042 1.70 rep 1.71 - movsw 1.72 + movsb 1.73 ret 1.74 .org 0x7E00 1.75 1.76 @@ -207,6 +211,7 @@ 1.77 popfw // restore flags (IOPL) 1.78 addb %ah, %bh // test F0 and 00 cases 1.79 js is86 // NS=386+, NC=286 1.80 + .arch i486 1.81 is386: 1.82 smsww %ax // not privileged 1.83 andb $1, %al 1.84 @@ -220,6 +225,7 @@ 1.85 //movb $EXESTR(realmodemsg), %al 1.86 realmode: 1.87 call *%bp 1.88 + .arch i8086 1.89 is86: 1.90 movw comstart-end_header(%di), %si // .com address 1.91 pushw %di 1.92 @@ -228,6 +234,7 @@ 1.93 movsw 1.94 ret 1.95 1.96 + .arch i486 1.97 CallVCPI: 1.98 int $0x67 1.99 testb %ah, %ah