wok-6.x rev 24164
linld: fix vcpi case
author | Pascal Bellard <pascal.bellard@slitaz.org> |
---|---|
date | Sun Dec 26 17:19:46 2021 +0000 (2021-12-26) |
parents | 1523c0330556 |
children | 82053bab32c1 |
files | linld/stuff/src/CRTL.ASM linld/stuff/src/VCPI.ASM linld/stuff/src/_BEG.ASM syslinux/stuff/iso2exe/taziso |
line diff
1.1 --- a/linld/stuff/src/CRTL.ASM Sat Dec 25 15:56:57 2021 +0000 1.2 +++ b/linld/stuff/src/CRTL.ASM Sun Dec 26 17:19:46 2021 +0000 1.3 @@ -88,13 +88,17 @@ 1.4 stc 1.5 int 21h 1.6 pop si dx 1.7 + ifdef ISO9660 1.8 jnc @@openok 1.9 + else 1.10 + jnc dosret 1.11 + endif 1.12 else 1.13 mov dx,bx ; open(DS:DX=filename,al=access,cl=attributes) 1.14 endif 1.15 mov ax,3d00h ; read-only+compatibility 1.16 + ifdef ISO9660 1.17 call dos 1.18 - ifdef ISO9660 1.19 jc @@openret 1.20 @@openok: 1.21 xchg ax,bx 1.22 @@ -108,12 +112,12 @@ 1.23 ;xor cx,cx 1.24 cwd 1.25 call seeksetpos0 ; filepos = 0 1.26 - else 1.27 -@@openok: 1.28 - endif 1.29 xchg ax,bx ; fd 1.30 @@openret: 1.31 ret 1.32 + else 1.33 + jmp dos 1.34 + endif 1.35 1.36 ifdef ISO9660 1.37 1.38 @@ -161,7 +165,7 @@ 1.39 1.40 global close:near ; close(ax) 1.41 close: 1.42 - mov bh,3Eh ; close(BX:handle) 1.43 + mov bh,3Eh ; close(AX:handle) 1.44 ifdef ISO9660 1.45 mov cx,[_isostate.fd] 1.46 jcxz dosbx 1.47 @@ -215,12 +219,12 @@ 1.48 ;jcxz fail 1.49 dos: 1.50 int 21h 1.51 - jnc @@doret 1.52 + jnc dosret 1.53 fail: 1.54 stc 1.55 failifc: 1.56 sbb ax,ax ; ax=-1 CF 1.57 -@@doret: 1.58 +dosret: 1.59 ret 1.60 1.61 endp @read$qipvi 1.62 @@ -301,7 +305,9 @@ 1.63 mov bh,42h ; bx=fd cx:dx=offset al=whence 1.64 dosbx: 1.65 xchg ax,bx 1.66 - jmp dos ; bx = fd 1.67 + or bx,bx 1.68 + jne dos ; bx = fd 1.69 + ret 1.70 1.71 endp @isolseek$qpxul 1.72 1.73 @@ -392,6 +398,33 @@ 1.74 endif 1.75 1.76 ;*************************************************************** 1.77 +;_fastcall void puts(bx:const char* s): 1.78 +;*************************************************************** 1.79 + global @puts$qpxzc:near 1.80 + 1.81 +; global puts:near ; puts(bx) 1.82 +@putsz: 1.83 + call @putc 1.84 +@puts$qpxzc: 1.85 +puts: 1.86 + mov dl,[bx] 1.87 + inc bx 1.88 + or dl,dl 1.89 + jne @putsz 1.90 + mov dl,10 1.91 +@putc: 1.92 + cmp dl,10 1.93 + jne @putcz 1.94 + call @putcz2 1.95 +@putcz2: 1.96 + xor dl,7 ; 10^13 1010^1101 1.97 +@putcz: 1.98 + mov ah,2 1.99 +do_int21h: 1.100 + int 21h 1.101 + ret 1.102 + 1.103 +;*************************************************************** 1.104 ;_fastcall char* malloc_or_die(ax:unsigned size); 1.105 ;*************************************************************** 1.106 xchg_heap_top: 1.107 @@ -439,31 +472,33 @@ 1.108 endp @die$qpxzc 1.109 1.110 ;*************************************************************** 1.111 -;_fastcall void puts(bx:const char* s): 1.112 +;_fastcall void open_image(si:struct image_himem *m, ax:const char *name); 1.113 ;*************************************************************** 1.114 - global @puts$qpxzc:near 1.115 1.116 -; global puts:near ; puts(bx) 1.117 -@putsz: 1.118 - call @putc 1.119 -@puts$qpxzc: 1.120 -puts: 1.121 - mov dl,[bx] 1.122 - inc bx 1.123 - or dl,dl 1.124 - jne @putsz 1.125 - mov dl,10 1.126 -@putc: 1.127 - cmp dl,10 1.128 - jne @putcz 1.129 - call @putcz2 1.130 -@putcz2: 1.131 - xor dl,7 ; 10^13 1010^1101 1.132 -@putcz: 1.133 - mov ah,2 1.134 -do_int21h: 1.135 - int 21h 1.136 - ret 1.137 + global @open_image$qp11image_himempxzc:near 1.138 + proc @open_image$qp11image_himempxzc near 1.139 + 1.140 + mov [(image_himem si).state],ax 1.141 + push ax 1.142 +@@next: 1.143 + call next_chunk 1.144 + ifndef NO386 1.145 + add eax,3 1.146 + and al,0FCh 1.147 + add [(image_himem si).size],eax ; m->size += m->chunk_size size zero'd in bss 1.148 + or eax,eax 1.149 + else 1.150 + add ax,3 1.151 + adc dx,0 1.152 + and al,0FCh 1.153 + add [word (image_himem si).size],ax ; m->size += m->chunk_size size zero'd in bss 1.154 + adc [word ((image_himem si).size)+2],dx 1.155 + or ax,dx 1.156 + endif 1.157 + jnz @@next 1.158 + pop [(image_himem si).state] 1.159 + 1.160 + endp @open_image$qp11image_himempxzc 1.161 1.162 ;*************************************************************** 1.163 ;static long next_chunk(struct image_himem *si); 1.164 @@ -647,286 +682,6 @@ 1.165 1.166 ;=============================================================== 1.167 1.168 -;*************************************************************** 1.169 -;_fastcall void open_image(si:struct image_himem *m, ax:const char *name); 1.170 -;*************************************************************** 1.171 - 1.172 - global @open_image$qp11image_himempxzc:near 1.173 - proc @open_image$qp11image_himempxzc near 1.174 - 1.175 - mov [(image_himem si).state],ax 1.176 - push ax 1.177 -@@next: 1.178 - call next_chunk 1.179 - ifndef NO386 1.180 - add eax,3 1.181 - and al,0FCh 1.182 - add [(image_himem si).size],eax ; m->size += m->chunk_size size zero'd in bss 1.183 - or eax,eax 1.184 - else 1.185 - add ax,3 1.186 - adc dx,0 1.187 - and al,0FCh 1.188 - add [word (image_himem si).size],ax ; m->size += m->chunk_size size zero'd in bss 1.189 - adc [word ((image_himem si).size)+2],dx 1.190 - or ax,dx 1.191 - endif 1.192 - jnz @@next 1.193 - pop [(image_himem si).state] 1.194 - 1.195 - endp @open_image$qp11image_himempxzc 1.196 - 1.197 -;=============================================================== 1.198 - 1.199 -;*************************************************************** 1.200 -;_fastcall int read_image(si:struct image_himem *m); 1.201 -;*************************************************************** 1.202 - global @read_image$qp11image_himem:near 1.203 - proc @read_image$qp11image_himem near 1.204 - 1.205 - push di 1.206 - xor di,di 1.207 -@@loop: 1.208 - ifndef NO386 1.209 - xor ecx,ecx 1.210 - mov ch,4096/256 1.211 - sub cx,di 1.212 - mov eax,[(image_himem si).chunk_size] 1.213 - cmp ecx,eax 1.214 - jb @@szok 1.215 - else 1.216 - mov cx,4096 1.217 - sub cx,di 1.218 - mov ax,[word (image_himem si).chunk_size] 1.219 - cmp cx,ax 1.220 - jb @@szok 1.221 - cmp [word ((image_himem si).chunk_size)+2],0 ; hi m->chunk_size 1.222 - jne @@szok 1.223 - endif 1.224 - xchg ax,cx 1.225 -@@szok: 1.226 - jcxz @@image_done 1.227 - lea dx,[di+_buf4k] 1.228 - mov bx,[(image_himem si).fd] 1.229 - call @read$cxdxbx 1.230 - jb @@image_done 1.231 - add di,ax 1.232 - ifndef NO386 1.233 - cwde ; ax < 8000h 1.234 - cdq 1.235 - sub [(image_himem si).chunk_size],eax 1.236 - else 1.237 - cwd ; ax < 8000h 1.238 - sub [word (image_himem si).chunk_size],ax 1.239 - sbb [word ((image_himem si).chunk_size)+2],dx 1.240 - endif 1.241 -@@fill: 1.242 - test al,3 1.243 - je @@filled 1.244 - mov [di+_buf4k],dl 1.245 - inc di 1.246 - inc ax 1.247 - jmp @@fill 1.248 -@@filled: 1.249 - ifndef NO386 1.250 - sub [(image_himem si).remaining],eax 1.251 - or edx,[word (image_himem si).chunk_size] 1.252 - else 1.253 - sub [word (image_himem si).remaining],ax 1.254 - sbb [word ((image_himem si).remaining)+2],dx 1.255 - mov ax,[word (image_himem si).chunk_size] 1.256 - or ax,[word ((image_himem si).chunk_size)+2] 1.257 - endif 1.258 - jnz @@same_chunk 1.259 - call next_chunk 1.260 -@@same_chunk: 1.261 - jmp @@loop 1.262 -@@image_done: 1.263 - xchg ax,di 1.264 - pop di 1.265 - ret 1.266 - 1.267 - endp @read_image$qp11image_himem 1.268 - 1.269 -;=============================================================== 1.270 - 1.271 -;*************************************************************** 1.272 -;_fastcall const char **argstr(bx:const char *s, ax:const char keywords[], dx:const char **var); 1.273 -;_fastcall unsigned long *argnum(bx:char *s, ax:const char keywords[], dx:unsigned long *var); 1.274 -;*************************************************************** 1.275 - global @argstr$qpxzcxt1ppxzc:near 1.276 - proc @argstr$qpxzcxt1ppxzc near 1.277 - 1.278 - mov cl,2 1.279 - db 0a9h ; test ax,# 1.280 - global @argnum$qpzcxpxzcpul:near 1.281 -@argnum$qpzcxpxzcpul: 1.282 - mov cl,4 1.283 - push bx 1.284 - xchg ax,bx ; keywords -> bx 1.285 - xchg ax,cx ; s -> cx 1.286 - cbw ; argstr:0002 argnum:0004 1.287 - xchg ax,dx ; vars -> ax 1.288 - push si di 1.289 - xchg ax,di ; vars => di 1.290 - dec bx 1.291 - sub di,dx 1.292 -@@loop: 1.293 - add di,dx 1.294 - mov si,cx ; s 1.295 -@@match: 1.296 - lodsb ; *s++ 1.297 - or al,20h ; locase 1.298 - cmp al,'/' ; 2f 1.299 - jne @@notopt 1.300 - mov al,'-' 1.301 -@@notopt: 1.302 - inc bx ; keywords++ 1.303 - cmp al,[bx] 1.304 - je @@match 1.305 - cmp [byte bx],dh 1.306 - je @@lastal 1.307 - cmp [byte bx],'|' 1.308 - je @@testal 1.309 - jl @@notsw ; } ~ <del> 1.310 - ;mov dl,1 1.311 - cmp al,20h ; EOS or 20h 1.312 - jne @@loop ; assume [bx] = '|' 1.313 -@@notsw: 1.314 - mov al,-1 1.315 - jne @@notopt 1.316 - jmp @@setnum2 1.317 -@@testal: 1.318 - cmp al,-1 1.319 - jz @@loop 1.320 -@@lastal: 1.321 - cmp al,'=' 1.322 - xchg ax,cx ; return s if failure 1.323 - jne @@nokeyword 1.324 - dec dx 1.325 - dec dx 1.326 - je @@done 1.327 -@strtol$qpxzc: 1.328 - ifndef NO386 1.329 - xor ecx,ecx 1.330 - xor ebx,ebx 1.331 - else 1.332 - xor bx,bx 1.333 - xor cx,cx 1.334 - xor dx,dx 1.335 - endif 1.336 - lodsb 1.337 - or al,20h 1.338 - cmp al,'a' 1.339 - jb @@notvga 1.340 - sub al,'o' 1.341 -@@vgaloop: 1.342 - dec cx 1.343 - add al,6 1.344 - jnb @@vgaloop ; vga=normal,extended,ask 1.345 -@@vga: 1.346 - xchg ax,cx 1.347 - ;cwd 1.348 - jmp @@end 1.349 -@@endstrtol: 1.350 - mov cl,10 1.351 - cmp al,'k'-'a'+10 1.352 - je @@shift 1.353 - mov cl,20 1.354 - cmp al,'m'-'a'+10 1.355 - je @@shift 1.356 - mov cl,30 1.357 - cmp al,'g'-'a'+10 1.358 - ifndef NO386 1.359 - jne @@noshift 1.360 -@@shift: 1.361 - shl ebx,cl 1.362 -@@noshift: 1.363 - popf 1.364 - jnc @@end2 1.365 - neg ebx 1.366 -@@end2: 1.367 - push ebx 1.368 - pop ax 1.369 - pop dx 1.370 - else 1.371 -@@shift: 1.372 - xchg ax,bx 1.373 - jne @@noshift 1.374 - extrn N_LXLSH@:near 1.375 - call N_LXLSH@ 1.376 -@@noshift: 1.377 - popf 1.378 - jne @@end 1.379 - not dx 1.380 - neg ax 1.381 - jne @@end 1.382 - inc dx 1.383 - endif 1.384 -@@end: 1.385 -@@setnum: 1.386 - mov [di+2],dx 1.387 -@@setnum2: 1.388 - xchg ax,si 1.389 -@@done: 1.390 - or [di],si 1.391 - xchg ax,di 1.392 -@@nokeyword: 1.393 - pop di si bx 1.394 - ret 1.395 - 1.396 -@@notvga: 1.397 - mov cl,10 ; radix 1.398 - cmp al,'-' 1.399 - jne @@radixkeep 1.400 - lodsb 1.401 -@@radixkeep: 1.402 - pushf 1.403 - cmp al,'0' 1.404 - jne @@radixok 1.405 - mov cl,8 1.406 - lodsb 1.407 - or al,20h 1.408 - cmp al,'x' 1.409 - jne @@radixok 1.410 - mov cl,16 1.411 -@@strtollp: 1.412 - lodsb 1.413 -@@radixok: 1.414 - or al,20h 1.415 - sub al,'0' 1.416 - jb @@endstrtol 1.417 - cmp al,9 1.418 - jbe @@digitok 1.419 - cmp al,'a'-'0' 1.420 - jb @@endstrtol 1.421 - sub al,'a'-'0'-10 1.422 -@@digitok: 1.423 - cmp al,cl 1.424 - jae @@endstrtol 1.425 - cbw 1.426 - ifndef NO386 1.427 - cwde 1.428 - xchg eax,ebx 1.429 - mul ecx 1.430 - add ebx,eax 1.431 - else 1.432 - push ax 1.433 - xchg ax,dx 1.434 - mul cx 1.435 - xchg ax,bx 1.436 - mul cx 1.437 - add dx,bx 1.438 - pop bx 1.439 - add bx,ax 1.440 - adc dx,0 1.441 - endif 1.442 - jmp @@strtollp 1.443 - 1.444 - endp @argstr$qpxzcxt1ppxzc 1.445 - 1.446 -;=============================================================== 1.447 - 1.448 ifdef VCPI 1.449 p386 1.450 ;*************************************************************** 1.451 @@ -1105,6 +860,256 @@ 1.452 1.453 endp @strcatb$qpxzct1 1.454 1.455 +;*************************************************************** 1.456 +;_fastcall int read_image(si:struct image_himem *m); 1.457 +;*************************************************************** 1.458 + global @read_image$qp11image_himem:near 1.459 + proc @read_image$qp11image_himem near 1.460 + 1.461 + push di 1.462 + xor di,di 1.463 +@@loop: 1.464 + ifndef NO386 1.465 + xor ecx,ecx 1.466 + mov ch,4096/256 1.467 + sub cx,di 1.468 + mov eax,[(image_himem si).chunk_size] 1.469 + cmp ecx,eax 1.470 + jb @@szok 1.471 + else 1.472 + mov cx,4096 1.473 + sub cx,di 1.474 + mov ax,[word (image_himem si).chunk_size] 1.475 + cmp cx,ax 1.476 + jb @@szok 1.477 + cmp [word ((image_himem si).chunk_size)+2],0 ; hi m->chunk_size 1.478 + jne @@szok 1.479 + endif 1.480 + xchg ax,cx 1.481 +@@szok: 1.482 + jcxz @@image_done 1.483 + lea dx,[di+_buf4k] 1.484 + mov bx,[(image_himem si).fd] 1.485 + call @read$cxdxbx 1.486 + jb @@image_done 1.487 + add di,ax 1.488 + ifndef NO386 1.489 + cwde ; ax < 8000h 1.490 + cdq 1.491 + sub [(image_himem si).chunk_size],eax 1.492 + else 1.493 + cwd ; ax < 8000h 1.494 + sub [word (image_himem si).chunk_size],ax 1.495 + sbb [word ((image_himem si).chunk_size)+2],dx 1.496 + endif 1.497 +@@fill: 1.498 + test al,3 1.499 + je @@filled 1.500 + mov [di+_buf4k],dl 1.501 + inc di 1.502 + inc ax 1.503 + jmp @@fill 1.504 +@@filled: 1.505 + ifndef NO386 1.506 + sub [(image_himem si).remaining],eax 1.507 + or edx,[word (image_himem si).chunk_size] 1.508 + else 1.509 + sub [word (image_himem si).remaining],ax 1.510 + sbb [word ((image_himem si).remaining)+2],dx 1.511 + mov ax,[word (image_himem si).chunk_size] 1.512 + or ax,[word ((image_himem si).chunk_size)+2] 1.513 + endif 1.514 + jnz @@same_chunk 1.515 + call next_chunk 1.516 +@@same_chunk: 1.517 + jmp @@loop 1.518 +@@image_done: 1.519 + xchg ax,di 1.520 + pop di 1.521 + ret 1.522 + 1.523 + endp @read_image$qp11image_himem 1.524 + 1.525 +;=============================================================== 1.526 + 1.527 +;*************************************************************** 1.528 +;_fastcall const char **argstr(bx:const char *s, ax:const char keywords[], dx:const char **var); 1.529 +;_fastcall unsigned long *argnum(bx:char *s, ax:const char keywords[], dx:unsigned long *var); 1.530 +;*************************************************************** 1.531 + global @argstr$qpxzcxt1ppxzc:near 1.532 + proc @argstr$qpxzcxt1ppxzc near 1.533 + 1.534 + mov cl,2 1.535 + db 0a9h ; test ax,# 1.536 + global @argnum$qpzcxpxzcpul:near 1.537 +@argnum$qpzcxpxzcpul: 1.538 + mov cl,4 1.539 + push bx 1.540 + xchg ax,bx ; keywords -> bx 1.541 + xchg ax,cx ; s -> cx 1.542 + cbw ; argstr:0002 argnum:0004 1.543 + xchg ax,dx ; vars -> ax 1.544 + push si di 1.545 + xchg ax,di ; vars => di 1.546 + dec bx 1.547 + sub di,dx 1.548 +@@loop: 1.549 + add di,dx 1.550 + mov si,cx ; s 1.551 +@@match: 1.552 + lodsb ; *s++ 1.553 + or al,20h ; locase 1.554 + ;ifdef DOS_SWITCH 1.555 + cmp al,'/' ; 2f 1.556 + jne @@notopt 1.557 + mov al,'-' 1.558 +@@notopt: 1.559 + ;endif 1.560 + inc bx ; keywords++ 1.561 + cmp al,[bx] 1.562 + je @@match 1.563 + cmp [byte bx],dh 1.564 + je @@lastal 1.565 + cmp [byte bx],'|' 1.566 + je @@testal 1.567 + jl @@notsw ; } ~ <del> 1.568 + ;mov dl,1 1.569 + cmp al,20h ; EOS or 20h 1.570 + jne @@loop ; assume [bx] = '|' 1.571 +@@notsw: 1.572 + mov al,-1 1.573 + jne @@notopt 1.574 + jmp @@setnum2 1.575 +@@testal: 1.576 + cmp al,-1 1.577 + jz @@loop 1.578 +@@lastal: 1.579 + cmp al,'=' 1.580 + xchg ax,cx ; return s if failure 1.581 + jne @@nokeyword 1.582 + dec dx 1.583 + dec dx 1.584 + je @@done 1.585 +@strtol$qpxzc: 1.586 + ifndef NO386 1.587 + xor ecx,ecx 1.588 + xor ebx,ebx 1.589 + else 1.590 + xor bx,bx 1.591 + xor cx,cx 1.592 + xor dx,dx 1.593 + endif 1.594 + lodsb 1.595 + or al,20h 1.596 + cmp al,'a' 1.597 + jb @@notvga 1.598 + sub al,'o' 1.599 +@@vgaloop: 1.600 + dec cx 1.601 + add al,6 1.602 + jnb @@vgaloop ; vga=normal,extended,ask 1.603 +@@vga: 1.604 + xchg ax,cx 1.605 + ;cwd 1.606 + jmp @@end 1.607 +@@endstrtol: 1.608 + mov cl,10 1.609 + cmp al,'k'-'a'+10 1.610 + je @@shift 1.611 + mov cl,20 1.612 + cmp al,'m'-'a'+10 1.613 + je @@shift 1.614 + mov cl,30 1.615 + cmp al,'g'-'a'+10 1.616 + ifndef NO386 1.617 + jne @@noshift 1.618 +@@shift: 1.619 + shl ebx,cl 1.620 +@@noshift: 1.621 + popf 1.622 + jnc @@end2 1.623 + neg ebx 1.624 +@@end2: 1.625 + push ebx 1.626 + pop ax 1.627 + pop dx 1.628 + else 1.629 +@@shift: 1.630 + xchg ax,bx 1.631 + jne @@noshift 1.632 + extrn N_LXLSH@:near 1.633 + call N_LXLSH@ 1.634 +@@noshift: 1.635 + popf 1.636 + jne @@end 1.637 + not dx 1.638 + neg ax 1.639 + jne @@end 1.640 + inc dx 1.641 + endif 1.642 +@@end: 1.643 +@@setnum: 1.644 + mov [di+2],dx 1.645 +@@setnum2: 1.646 + xchg ax,si 1.647 +@@done: 1.648 + or [di],si 1.649 + xchg ax,di 1.650 +@@nokeyword: 1.651 + pop di si bx 1.652 + ret 1.653 + 1.654 +@@notvga: 1.655 + mov cl,10 ; radix 1.656 + cmp al,'-' 1.657 + jne @@radixkeep 1.658 + lodsb 1.659 +@@radixkeep: 1.660 + pushf 1.661 + cmp al,'0' 1.662 + jne @@radixok 1.663 + mov cl,8 1.664 + lodsb 1.665 + or al,20h 1.666 + cmp al,'x' 1.667 + jne @@radixok 1.668 + mov cl,16 1.669 +@@strtollp: 1.670 + lodsb 1.671 +@@radixok: 1.672 + or al,20h 1.673 + sub al,'0' 1.674 + jb @@endstrtol 1.675 + cmp al,9 1.676 + jbe @@digitok 1.677 + cmp al,'a'-'0' 1.678 + jb @@endstrtol 1.679 + sub al,'a'-'0'-10 1.680 +@@digitok: 1.681 + cmp al,cl 1.682 + jae @@endstrtol 1.683 + cbw 1.684 + ifndef NO386 1.685 + cwde 1.686 + xchg eax,ebx 1.687 + mul ecx 1.688 + add ebx,eax 1.689 + else 1.690 + push ax 1.691 + xchg ax,dx 1.692 + mul cx 1.693 + xchg ax,bx 1.694 + mul cx 1.695 + add dx,bx 1.696 + pop bx 1.697 + add bx,ax 1.698 + adc dx,0 1.699 + endif 1.700 + jmp @@strtollp 1.701 + 1.702 + endp @argstr$qpxzcxt1ppxzc 1.703 + 1.704 +;=============================================================== 1.705 1.706 ends _TEXT 1.707
2.1 --- a/linld/stuff/src/VCPI.ASM Sat Dec 25 15:56:57 2021 +0000 2.2 +++ b/linld/stuff/src/VCPI.ASM Sun Dec 26 17:19:46 2021 +0000 2.3 @@ -279,8 +279,7 @@ 2.4 test bx,bx 2.5 jnz vm2rm_end 2.6 2.7 - ;lea sp,[bp-8-9*4] 2.8 - lea sp,[bp-9*4] 2.9 + lea sp,[bp-8-9*4] 2.10 2.11 ; Call the routine (bp points to params on stack if any) 2.12 call do_memcpy_vcpi ; set ds=all_addrspace 2.13 @@ -290,9 +289,7 @@ 2.14 cli ; to be safe 2.15 clts ; 2.16 ; Go to vm86 mode. Sregs, esp, eflags (IF) restored from IRET stack 2.17 - call [pword cs:vcpi_pm_entry] 2.18 - ret 2.19 - ;jmp [pword cs:vcpi_pm_entry] 2.20 + jmp [pword cs:vcpi_pm_entry] 2.21 2.22 ;*************************************************************** 2.23
3.1 --- a/linld/stuff/src/_BEG.ASM Sat Dec 25 15:56:57 2021 +0000 3.2 +++ b/linld/stuff/src/_BEG.ASM Sun Dec 26 17:19:46 2021 +0000 3.3 @@ -181,7 +181,7 @@ 3.4 smsw bx ;SMSW cannot be trapped! :-) 3.5 shr bx,1 ;MSW_PE 3.6 ; We're in vm 3.7 - jnc check_vcpi 3.8 + jc check_vcpi 3.9 3.10 check_rm_paging: 3.11 ; It's a 386 in real mode, chk for paging (crazy but possible) 3.12 @@ -205,18 +205,13 @@ 3.13 label check_vcpi near 3.14 p386 3.15 ifdef VCPI 3.16 -; Check whether it is safe to call 67h 3.17 - xor eax,eax 3.18 - mov es,ax 3.19 - cmp [dword es:67h*4],eax 3.20 - je no_vcpi 3.21 mov ah,0DEh ; check for vcpi present 3.22 int 67h 3.23 or ah,ah 3.24 jnz no_vcpi 3.25 is386vcpi: 3.26 extrn prepare_vcpi:near 3.27 - call prepare_vcpi 3.28 + call prepare_vcpi ; assume ES = DS 3.29 ; get_vcpi_interface() || die("VCPI: low 640k: need 1:1 mapping"); 3.30 ;extrn _get_vcpi_interface:near 3.31 ;call _get_vcpi_interface
4.1 --- a/syslinux/stuff/iso2exe/taziso Sat Dec 25 15:56:57 2021 +0000 4.2 +++ b/syslinux/stuff/iso2exe/taziso Sun Dec 26 17:19:46 2021 +0000 4.3 @@ -895,7 +895,9 @@ 4.4 4.5 xfile() 4.6 { 4.7 - [ "$(which $1)" ] && menuitem "$@" 4.8 + for i in $1; do 4.9 + [ "$(which $i)" ] && menuitem "$@" && break 4.10 + done 4.11 } 4.12 4.13 initxfile() 4.14 @@ -1547,8 +1549,8 @@ 4.15 4.16 infoiso() 4.17 { 4.18 - isoinfo -d -i "$ISO" > /tmp/isoinfo$$ 4.19 - if [ -x "$(which iso2exe)" ]; then 4.20 + isoinfo -d -i "$ISO" > /tmp/isoinfo$$ 2> /dev/null 4.21 + if [ "$(which iso2exe)" ]; then 4.22 echo "----" 4.23 blkid "$ISO" | while read args; do 4.24 set -- $args 4.25 @@ -1571,6 +1573,16 @@ 4.26 else 4.27 $DIALOG --clear --title " Info ISO " \ 4.28 --textbox /tmp/isoinfo$$ 0 0 4.29 + files=$(sed '/^custom.*d/!d;s| .*||' /tmp/isoinfo$$) 4.30 + if [ "$files" ]; then 4.31 + $DIALOG --clear --title " Extract custom files " \ 4.32 + --defaultno --yesno \ 4.33 + "Do you want to extract the custom boot files ?\n$files" 7 70 4.34 + [ $? -eq 0 ] && for i in $files ; do 4.35 + echo "Extract $i ..." 4.36 + iso2exe -l "$ISO" $i 4.37 + done 4.38 + fi 4.39 fi 4.40 rm -f /tmp/isoinfo$$ 4.41 } 4.42 @@ -1648,7 +1660,7 @@ 4.43 $(cdfile 'md5sum*' "md5" "Check the ISO files") \ 4.44 $(cdfile 'sha*sum*' "sha" "Check the ISO files") \ 4.45 $(menuitem "filepos" "File start sector") \ 4.46 -$(xfile isoinfo "infoiso" "ISO image info") \ 4.47 +$(xfile 'isoinfo iso2exe' "infoiso" "ISO image info") \ 4.48 $(cdfilex 'bzImage*' "bootiso" "Boot the ISO image") \ 4.49 $(burnable "burniso" "Burn the ISO image") \ 4.50 $(blankable "blankcd" "Blank the CD/DVD") \