# HG changeset patch # User Pascal Bellard # Date 1606207665 0 # Node ID fc88d0826de41c30229db1b93f9afebd4162b14f # Parent 9e3f3168b1693c5d3d9c541af66b53f53e1d31f4 linld: fix strtol diff -r 9e3f3168b169 -r fc88d0826de4 linld/stuff/src/CRTL.ASM --- a/linld/stuff/src/CRTL.ASM Sat Nov 21 13:13:55 2020 +0000 +++ b/linld/stuff/src/CRTL.ASM Tue Nov 24 08:47:45 2020 +0000 @@ -17,7 +17,7 @@ segment _DATA byte public use16 'DATA' -msg_hang db "High mem corrupted",0 +msg_hang db "Himem broken",0 vcpi_alloc_err db "VCPI" global overflow:byte overflow db "/" @@ -1176,7 +1176,7 @@ xchg ax,cx ;cwd @@goend: - jmp @@popdisiret + jmp @@end @@notvga: mov cl,10 ; radix cmp al,'-' @@ -1228,21 +1228,19 @@ je @@shift mov cl,30 cmp al,'g'-'a'+10 +@@shift: + xchg ax,bx jne @@noshift -@@shift: - rcl bx,1 - shl dx,1 - loop @@shift + extrn N_LXLSH@:near + call N_LXLSH@ @@noshift: popf jne @@end not dx - neg bx + neg ax jne @@end inc dx @@end: - xchg ax,bx -@@popdisiret: ifndef USE_ARGSTR pop si endif @@ -1261,7 +1259,7 @@ proc @set_cmdline$qpxzc near call openargs jc strtol_ret - mov cx,4096 + mov ch,15 ; cx<4096 mov di,[_heap_top] extrn read_cmdline:near jmp near read_cmdline ; read_cmdline(ax,di,cx) diff -r 9e3f3168b169 -r fc88d0826de4 linld/stuff/src/ISOCRTL.ASM --- a/linld/stuff/src/ISOCRTL.ASM Sat Nov 21 13:13:55 2020 +0000 +++ b/linld/stuff/src/ISOCRTL.ASM Tue Nov 24 08:47:45 2020 +0000 @@ -52,11 +52,9 @@ stosw mov al,offset iso_close_hack-0F000h stosw -; mov al,offset iso_cleanup_hack-0F000h -; stosw global @_cpuhaslm$qv:near @_cpuhaslm$qv: - mov ax,[132h+3] + mov ax,[130h+3] and al,20h ret @@ -263,10 +261,6 @@ sbb dx,[(word _isostate.fileofs)+2] ret -;iso_cleanup_hack: -; mov ah,3Eh ; close file -; jmp dosfd - ifdef NO386 global N_LXLSH@ES:near N_LXLSH@ES: diff -r 9e3f3168b169 -r fc88d0826de4 linld/stuff/src/JUMP.ASM --- a/linld/stuff/src/JUMP.ASM Sat Nov 21 13:13:55 2020 +0000 +++ b/linld/stuff/src/JUMP.ASM Tue Nov 24 08:47:45 2020 +0000 @@ -12,16 +12,9 @@ p386 endif - group DGROUP _TEXT,_BSS + group DGROUP _TEXT assume cs:DGROUP,ds:DGROUP - segment _BSS byte public use16 'BSS' - - global _imgs:dword - - ends _BSS - - segment _TEXT byte public use16 'CODE' ;*************************************************************** @@ -85,10 +78,6 @@ global _boot_kernel:near proc _boot_kernel near - ifdef ISOHOOK - extrn iso_cleanup_hack:word - call [iso_cleanup_hack] ; or ret - endif ifdef NO386 p8086 else @@ -145,6 +134,7 @@ push dx ; size hi endif push si ; size lo=up to 512k + extrn _imgs:dword push [dword _imgs+2] ; src ofs = pm.fallback ;in al,70h diff -r 9e3f3168b169 -r fc88d0826de4 linld/stuff/src/MEMTOP.ASM --- a/linld/stuff/src/MEMTOP.ASM Sat Nov 21 13:13:55 2020 +0000 +++ b/linld/stuff/src/MEMTOP.ASM Tue Nov 24 08:47:45 2020 +0000 @@ -12,17 +12,10 @@ p386 endif - group DGROUP _TEXT,_BSS + group DGROUP _TEXT assume cs:DGROUP,ds:DGROUP - segment _BSS byte public use16 'BSS' - -saved15 dd ? - - ends _BSS - - segment _TEXT byte public use16 'CODE' ;*************************************************************** @@ -182,6 +175,7 @@ cmp al,80h ; 80h = XMS driver installed je @@skip endif +saved15: xor bx,bx mov es,bx ifndef NO386 @@ -189,7 +183,7 @@ push offset int15_88 pop eax xchg eax,[es:bx+15*4] - mov [saved15],eax + mov [dword saved15],eax else mov ax,offset int15_88 xchg ax,[es:bx+15*4] @@ -205,10 +199,10 @@ int15_88: cmp ah,88h je @@do88 - jmp [saved15] + jmp [dword saved15] @@do88: pushf - call [saved15] + call [dword saved15] or ax,ax jnz @@iret diff -r 9e3f3168b169 -r fc88d0826de4 linld/stuff/src/_BEG.ASM --- a/linld/stuff/src/_BEG.ASM Sat Nov 21 13:13:55 2020 +0000 +++ b/linld/stuff/src/_BEG.ASM Tue Nov 24 08:47:45 2020 +0000 @@ -115,8 +115,6 @@ iso_lseek_hack dw @ret global iso_close_hack iso_close_hack dw @ret - global iso_cleanup_hack -iso_cleanup_hack dw @ret global _cpu_features:dword _cpu_features dd ? ; default _cpu_features+3=1Fh/8Eh (bit5=0, not 64bits) org $-4