wok-current rev 24019
syslinux: fix build
author | Pascal Bellard <pascal.bellard@slitaz.org> |
---|---|
date | Sun Feb 28 16:32:57 2021 +0000 (2021-02-28) |
parents | 959269cc91c6 |
children | 42b4b9d947f3 |
files | linld/receipt linld/stuff/src/!COMPILE.BAT linld/stuff/src/A20.ASM linld/stuff/src/COMMON.H linld/stuff/src/CRTL.ASM linld/stuff/src/HIMEM.CPP linld/stuff/src/ISO9660.CPP linld/stuff/src/JUMP.ASM linld/stuff/src/LINLD.CPP linld/stuff/src/LOAD.CPP linld/stuff/src/MEMCPY32.ASM linld/stuff/src/MEMTOP.ASM linld/stuff/src/VCPI.ASM linld/stuff/src/XMM.ASM linld/stuff/src/_BEG.ASM linld/stuff/src/_END.ASM linld/stuff/src/pipehole.awk syslinux/stuff/iso2exe/iso2exe.sh tazlito/receipt |
line diff
1.1 --- a/linld/receipt Sat Feb 27 17:05:52 2021 +0100 1.2 +++ b/linld/receipt Sun Feb 28 16:32:57 2021 +0000 1.3 @@ -27,7 +27,7 @@ 1.4 unzip $SRC/$EXTRA_TOOL > /dev/null 1.5 rm LINLD$SUFFIX/CRTL.CPP LINLD$SUFFIX/INT15_88.ASM 1.6 cp $stuff/src/* LINLD$SUFFIX/ 1.7 - sed -i 's/-3/-DNO386/' LINLD$SUFFIX/BCCOPT.OPT 1.8 + sed -i '/-3/d' LINLD$SUFFIX/BCCOPT.OPT 1.9 cp -a LINLD$SUFFIX TAZBOOT 1.10 unix2dos > MAKE.BAT <<EOT 1.11 d:
2.1 --- a/linld/stuff/src/!COMPILE.BAT Sat Feb 27 17:05:52 2021 +0100 2.2 +++ b/linld/stuff/src/!COMPILE.BAT Sun Feb 28 16:32:57 2021 +0000 2.3 @@ -3,8 +3,7 @@ 2.4 tasm /h > helptasm.log 2.5 bcc > helpbcc.log 2.6 tlink > helptlink.log 2.7 -bcc @bccopt.opt -S -mt -DQUICK_BOOT -DISOHOOK -DMOVE_SETUP *.cpp > cpp.log 2.8 -#bcc @bccopt.opt -S -mt -DWITH_XMM_ALLOC -DQUICK_BOOT -DISOHOOK -DMOVE_SETUP *.cpp > cpp.log 2.9 +bcc @bccopt.opt -S -mt *.cpp > cpp.log 2.10 ren LINLD.ASM LINLD.ASO 2.11 ren LOAD.ASM LOAD.ASO 2.12 ren HIMEM.ASM HIMEM.ASO 2.13 @@ -13,6 +12,6 @@ 2.14 mawk -f pipehole.awk LOAD.ASO > LOAD.ASM 2.15 mawk -f pipehole.awk HIMEM.ASO > HIMEM.ASM 2.16 mawk -f pipehole.awk ISO9660.ASO > ISO9660.ASM 2.17 -tasm /la /m /dQUICK_BOOT /dISOHOOK /dMOVE_SETUP /dNO386 /dLONG_FILENAME *.asm > asm.log 2.18 -#tasm /la /m /dWITH_XMM_ALLOC /dLARGE_ZIMAGE /dQUICK_BOOT /dISOHOOK /dMOVE_SETUP /dNO386 /dLONG_FILENAME *.asm > asm.log 2.19 +mawk "{ if (/ptional/) hide=1; if (!hide) { sub(\"//\",\";\");sub(\"#define \",\"\");print $1 \"\t=\t1\t\t;\" $0} }" COMMON.H > COMMON.INC 2.20 +tasm /la /m *.asm > asm.log 2.21 tlink /m /s /t @link.cmd > lnk.log
3.1 --- a/linld/stuff/src/A20.ASM Sat Feb 27 17:05:52 2021 +0100 3.2 +++ b/linld/stuff/src/A20.ASM Sun Feb 28 16:32:57 2021 +0000 3.3 @@ -8,6 +8,8 @@ 3.4 %nomacs 3.5 p8086 3.6 3.7 + include "common.inc" 3.8 + 3.9 group DGROUP _TEXT,_DATA 3.10 assume cs:DGROUP,ds:DGROUP 3.11 3.12 @@ -155,10 +157,12 @@ 3.13 extrn _topseg:near 3.14 call near _topseg 3.15 mov [word sssp+2],ax 3.16 + ifdef VCPI 3.17 and ch,0 ; vcpi flag 3.18 org $-1 3.19 global _vcpi:byte 3.20 _vcpi db ? 3.21 + endif 3.22 else 3.23 p386 3.24 movzx eax,[word _heap_top] 3.25 @@ -186,14 +190,20 @@ 3.26 sub eax,ecx 3.27 endif 3.28 shr eax,4 3.29 + ifdef VCPI 3.30 mov ch,0 3.31 + endif 3.32 @bzimage: 3.33 xchg ax,dx 3.34 mov ax,9000h 3.35 + ifdef VCPI 3.36 extrn _vcpi:byte 3.37 and ch,[_vcpi] 3.38 endif 3.39 + endif 3.40 + ifdef VCPI 3.41 add dh,ch ; 60k room for malloc_bufv_or_die 3.42 + endif 3.43 cmp ax,dx 3.44 ifdef LARGE_ZIMAGE 3.45 ja @nooverflow0
4.1 --- a/linld/stuff/src/COMMON.H Sat Feb 27 17:05:52 2021 +0100 4.2 +++ b/linld/stuff/src/COMMON.H Sun Feb 28 16:32:57 2021 +0000 4.3 @@ -1,7 +1,45 @@ 4.4 +//#define WITH_XMM_ALLOC add himem.sys driver 4.5 +//#define LARGE_ZIMAGE may load system in high memory temporarily 4.6 +//#define INT15_E820 add int15/eax=E820 driver 4.7 +//#define BASIC_ISO9660 non rockridge support 4.8 +#define ROCKRIDGE iso 9660 posix name support 4.9 +#define ISO9660 iso= support 4.10 +#define QUICK_BOOT /q bypass shutdown hack, /v keeps v86 4.11 +#define ISOHOOK iso image dos boot helper 4.12 +#define MOVE_SETUP spare few Kb in setup location for zImage system 4.13 +#define NO386 8088 support 4.14 +#define CPU64 /64 support 4.15 +#define LONG_FILENAME look for Win95+ long file name too 4.16 +#define SHUTDOWN disable int19 hooked drivers 4.17 +#define VCPI v86 mode support with VCPI 4.0+ 4.18 +#define LINUX001 linux 0.01 support 4.19 +#define ELKS elks support 4.20 +#define IPXE ipxe support 4.21 +/* End of the optional features */ 4.22 + 4.23 +#ifdef ISOHOOK 4.24 +#ifndef ISO9660 4.25 +#define ISO9660 4.26 +#endif 4.27 +#ifndef ROCKRIDGE 4.28 +#define ROCKRIDGE 4.29 +#endif 4.30 +#ifndef CPU64 4.31 +#define CPU64 4.32 +#endif 4.33 +#endif 4.34 + 4.35 // This file is distributed under GPL 4.36 // 4.37 // Common defs not belonging to CRTL 4.38 4.39 +#if defined(__BORLANDC__) && !defined(NO386) 4.40 +#pragma option -3 4.41 + asm{ 4.42 + .386p 4.43 + } 4.44 +#endif 4.45 + 4.46 #define NL "\n" 4.47 #define VERSION_STR "0.97" 4.48
5.1 --- a/linld/stuff/src/CRTL.ASM Sat Feb 27 17:05:52 2021 +0100 5.2 +++ b/linld/stuff/src/CRTL.ASM Sun Feb 28 16:32:57 2021 +0000 5.3 @@ -6,6 +6,9 @@ 5.4 %crefref 5.5 %noincl 5.6 %nomacs 5.7 + 5.8 + include "common.inc" 5.9 + 5.10 ifdef NO386 5.11 p8086 5.12 else 5.13 @@ -19,7 +22,9 @@ 5.14 5.15 loaderr db "Load failure",0 5.16 msg_hang db "Himem broken",0 5.17 + ifdef VCPI 5.18 vcpi_alloc_err db "VCPI" 5.19 + endif 5.20 global overflow:byte 5.21 overflow db "/" 5.22 msg_malloc db "Out of memory" 5.23 @@ -29,10 +34,12 @@ 5.24 5.25 segment _BSS byte public use16 'BSS' 5.26 5.27 + ifdef ISO9660 5.28 include "isostate.inc" 5.29 public _isostate 5.30 _isostate isostate <?> 5.31 org $-7 5.32 + endif 5.33 global buf4k:byte 5.34 label buf4k byte 5.35 _xfer_buf db 4096 dup (?) 5.36 @@ -70,8 +77,24 @@ 5.37 endp @strcatb$qpxzct1 5.38 5.39 5.40 + ifdef NO386 5.41 p8086 5.42 + endif 5.43 5.44 + ifndef ISO9660 5.45 +;*************************************************************** 5.46 +;_fastcall int:C open(bx:const char* name, int flags=O_RDONLY); 5.47 +;_fastcall int:C openargs(bx:const char* name, int flags=O_RDONLY); 5.48 +;*************************************************************** 5.49 + global openargs:near ; openargs(bx) 5.50 +openargs: 5.51 + cmp [byte bx],'@' 5.52 + jne fail 5.53 + inc bx 5.54 + 5.55 + global @open$qpxzc:near 5.56 +@open$qpxzc: 5.57 + endif 5.58 opendos: 5.59 ifdef LONG_FILENAME 5.60 ;xchg ax,cx ; attributes 5.61 @@ -91,6 +114,7 @@ 5.62 endif 5.63 ;mov cl,0 ; attribute mask 5.64 call dos 5.65 + ifdef ISO9660 5.66 jc catret 5.67 openok: 5.68 xchg ax,bx 5.69 @@ -104,12 +128,16 @@ 5.70 ;xor cx,cx 5.71 cwd 5.72 call seeksetpos0 ; filepos = 0 5.73 + else 5.74 +openok: 5.75 + endif 5.76 xchg ax,bx ; fd 5.77 ret 5.78 5.79 + ifdef ISO9660 5.80 ;*************************************************************** 5.81 -;_fastcall int open(bx:const char* name, int flags=O_RDONLY); 5.82 -;_fastcall int openargs(bx:const char* name, int flags=O_RDONLY); 5.83 +;_fastcall int:C open(bx:const char* name, int flags=O_RDONLY); 5.84 +;_fastcall int:C openargs(bx:const char* name, int flags=O_RDONLY); 5.85 ;*************************************************************** 5.86 global openargs:near ; openargs(bx) 5.87 openargs: 5.88 @@ -135,6 +163,7 @@ 5.89 extrn @_isoopen$qv:near 5.90 mov [word _isostate.filename2open],bx 5.91 jmp @_isoopen$qv ; filepos = 0 5.92 + endif 5.93 5.94 5.95 ;*************************************************************** 5.96 @@ -154,8 +183,10 @@ 5.97 global close:near ; close(ax) 5.98 close: 5.99 mov bh,3Eh 5.100 + ifdef ISO9660 5.101 mov cx,[_isostate.fd] 5.102 jcxz dosbx 5.103 + endif 5.104 jmp fail 5.105 5.106 endp @close$qi 5.107 @@ -178,6 +209,7 @@ 5.108 xchg ax,cx ; sz 5.109 global @read$cxdxbx:near 5.110 @read$cxdxbx: 5.111 + ifdef ISO9660 5.112 push bx 5.113 mov bx,offset _isostate.filepos 5.114 push cx 5.115 @@ -198,6 +230,7 @@ 5.116 add [bx],cx 5.117 adc [(word bx)+2],0 5.118 pop bx 5.119 + endif 5.120 readfd: 5.121 mov ah,3Fh 5.122 ;jcxz fail 5.123 @@ -221,8 +254,16 @@ 5.124 proc @rewind$qi near 5.125 5.126 rewind: 5.127 + ifdef ISO9660 5.128 mov bx,offset _isostate.fileofs 5.129 jmp lseek 5.130 + else 5.131 + mov bl,0 5.132 +lseek0: 5.133 + xor cx,cx 5.134 + xor dx,dx 5.135 + jmp lseek 5.136 + endif 5.137 5.138 endp @rewind$qi 5.139 5.140 @@ -261,6 +302,7 @@ 5.141 global @isolseek$qpxul:near 5.142 proc @isolseek$qpxul near 5.143 5.144 + ifdef ISO9660 5.145 isolseek: 5.146 mov ax,[_isostate.fd] 5.147 lseek: 5.148 @@ -270,6 +312,9 @@ 5.149 xor bx,bx 5.150 mov [word _isostate.filepos],bx 5.151 mov [(word _isostate.filepos)+2],bx 5.152 + else 5.153 +lseek: 5.154 + endif 5.155 mov bh,42h ; bx=fd cx:dx=offset al=whence 5.156 dosbx: 5.157 xchg ax,bx 5.158 @@ -277,6 +322,7 @@ 5.159 5.160 endp @isolseek$qpxul 5.161 5.162 + ifdef ISO9660 5.163 ;*************************************************************** 5.164 ;_fastcall int isoreadsector(bx:const unsigned long *offset); 5.165 ;_fastcall int isoreadrootsector(void); 5.166 @@ -294,8 +340,10 @@ 5.167 jmp @read$dxaxbx ; read(fd,buffer,2560+) 5.168 5.169 endp @isoreadsector$qpxul 5.170 + endif 5.171 5.172 5.173 + ifdef ISO9660 5.174 ifdef ISOHOOK 5.175 ;*************************************************************** 5.176 ;_fastcall int strhead(bx:const char* a, ax:const char* b); 5.177 @@ -311,6 +359,9 @@ 5.178 or dl,dl ; clear C 5.179 jz failifc ; return 0 5.180 xor dl,[bx] ; dl -= *a++ 5.181 + ifdef BASIC_ISO9660 5.182 + and dl,0dfh ; upcase 5.183 + endif 5.184 jne fail ; return -1 5.185 inc bx 5.186 jmp @@loop 5.187 @@ -354,6 +405,7 @@ 5.188 5.189 endp @strcmp$qpxzct1 5.190 endif 5.191 + endif 5.192 5.193 ;*************************************************************** 5.194 ;_fastcall const char **argstr(bx:const char *s, ax:const char keywords[], dx:const char **var); 5.195 @@ -466,8 +518,8 @@ 5.196 neg ax 5.197 jne @@end 5.198 inc dx 5.199 + endif 5.200 @@end: 5.201 - endif 5.202 @@setnum: 5.203 xchg ax,si 5.204 mov [di+2],dx 5.205 @@ -692,6 +744,7 @@ 5.206 ifndef NO_CLOSE 5.207 mov [(image_himem si).fd2close],ax 5.208 endif 5.209 + ifdef ISO9660 5.210 ifndef NO386 5.211 mov eax,[_isostate.filesize] 5.212 @@end: 5.213 @@ -703,10 +756,33 @@ 5.214 mov [word (image_himem si).chunk_size],ax 5.215 mov [word ((image_himem si).chunk_size)+2],dx 5.216 endif 5.217 + else 5.218 + mov bl,02h ; SEEK_END 5.219 + call lseek0 5.220 + ifndef NO386 5.221 + push eax 5.222 + mov ax,[(image_himem si).fd] 5.223 + call rewind 5.224 + pop eax 5.225 +@@end: 5.226 + mov [(image_himem si).chunk_size],eax 5.227 + else 5.228 + push ax 5.229 + push dx 5.230 + mov ax,[(image_himem si).fd] 5.231 + call rewind 5.232 + pop dx 5.233 + pop ax 5.234 +@@end: 5.235 + mov [word (image_himem si).chunk_size],ax 5.236 + mov [word ((image_himem si).chunk_size)+2],dx 5.237 + endif 5.238 + endif 5.239 ret 5.240 5.241 endp next_chunk 5.242 5.243 + ifdef VCPI 5.244 ;*************************************************************** 5.245 5.246 struc data_himem ;struct data_himem { 5.247 @@ -801,6 +877,7 @@ 5.248 endif 5.249 5.250 endp @malloc_bufv_or_die$qp11image_himem 5.251 + endif 5.252 5.253 5.254 ;*************************************************************** 5.255 @@ -892,7 +969,7 @@ 5.256 5.257 endp @storepage$qpul 5.258 5.259 - 5.260 + ifdef VCPI 5.261 p386 5.262 ;*************************************************************** 5.263 ;_fastcall void reset_bufv(di:u32 *p); 5.264 @@ -958,6 +1035,7 @@ 5.265 ret 5.266 5.267 endp _prev_bufv 5.268 + endif 5.269 5.270 ifdef NO386 5.271 p8086
6.1 --- a/linld/stuff/src/HIMEM.CPP Sat Feb 27 17:05:52 2021 +0100 6.2 +++ b/linld/stuff/src/HIMEM.CPP Sun Feb 28 16:32:57 2021 +0000 6.3 @@ -11,6 +11,7 @@ 6.4 void load_image(struct image_himem *m) { 6.5 m->remaining = m->size; 6.6 u32* bufv= &himem_buf; 6.7 +#ifdef VCPI 6.8 #ifdef WITH_XMM_ALLOC 6.9 m->buf = m->fallback; // set no_exit btw: die() won't return to DOS 6.10 if(((u16 *)&m->fallback)[1] >= 0x10) { // >= _1m ? 6.11 @@ -30,11 +31,22 @@ 6.12 } 6.13 } 6.14 #endif 6.15 +#else 6.16 + m->buf = m->fallback; // set no_exit btw: die() won't return to DOS 6.17 +#ifdef WITH_XMM_ALLOC 6.18 + if(((u16 *)&m->fallback)[1] >= 0x10) { // >= _1m ? 6.19 + xmm_alloc(m); // update m->buf 6.20 + } 6.21 + himem_buf = m->buf; 6.22 +#endif 6.23 +#endif 6.24 do { 6.25 u16 size; 6.26 if(s16(size = read_image(m)) -1 < 0) break; 6.27 storepage(bufv); 6.28 +#ifdef VCPI 6.29 if (bufv != &himem_buf) next(bufv); 6.30 +#endif 6.31 himem_buf += size; 6.32 } while (*bufv); 6.33 if(m->remaining) loadfailure(); 6.34 @@ -58,19 +70,24 @@ 6.35 pusha 6.36 # endif 6.37 } 6.38 +#ifdef VCPI 6.39 vm2rm(); 6.40 +#endif 6.41 struct image_himem *m = ± 6.42 #define KERNEL 0 6.43 #define INITRD 1 6.44 - u32 *q; 6.45 if(((u16 *)&m[KERNEL].fallback)[1] >= 0x10) // >= _1m ? 6.46 ((u16 *)&m[KERNEL].fallback)[1] = 0x10; 6.47 +#ifdef VCPI 6.48 + u32 *q; 6.49 q = m[KERNEL].bufv; 6.50 if(q==0) { 6.51 +#endif 6.52 // Move kernel 6.53 memcpy_image_kernel(); 6.54 // Move initrd 6.55 memcpy_image_initrd(); 6.56 +#ifdef VCPI 6.57 } else { //vcpi 6.58 #if defined(__BORLANDC__) && defined(NO386) 6.59 #pragma option -3 6.60 @@ -109,6 +126,7 @@ 6.61 } while(q != m[INITRD].bufv); 6.62 } 6.63 } 6.64 +#endif 6.65 asm { 6.66 # ifdef NO386 6.67 pop dx
7.1 --- a/linld/stuff/src/ISO9660.CPP Sat Feb 27 17:05:52 2021 +0100 7.2 +++ b/linld/stuff/src/ISO9660.CPP Sun Feb 28 16:32:57 2021 +0000 7.3 @@ -1,6 +1,8 @@ 7.4 #include "crtl.h" 7.5 +#include "common.h" 7.6 #include "iso9660.h" 7.7 7.8 +#ifdef ISO9660 7.9 #define setdirpage(to,sec) ((to) = *(int*)&(sec)<<(SECTORBITS-8)) 7.10 #define cpytodirpage(to,from) ((to) = *(int*)((char*)&(from)+1)) 7.11 #define cpyfromdirpage(to,from) (*(int*)((char*)&(to)+1) = (from)) 7.12 @@ -13,6 +15,9 @@ 7.13 x->dirsize = filesize2dirsize(* (unsigned long *) (isostate.buffer + 0xA6)); \ 7.14 } 7.15 7.16 +#if !defined(BASIC_ISO9660) && !defined(ROCKRIDGE) 7.17 +#define ROCKRIDGE 7.18 +#endif 7.19 static int isoreaddir(void) 7.20 { 7.21 char *p; 7.22 @@ -37,6 +42,7 @@ 7.23 x->filemod = 0x81ED; if (p[25] & 2) ((char *)&(x->filemod))[1] = 0x41; 7.24 p = x->buffer + 34 + ((p[32] + x->curpos) & -2); 7.25 x->curpos += x->entrysize; 7.26 +#ifdef ROCKRIDGE 7.27 do { 7.28 register len = p[2]; 7.29 if (* (short *) p == 0x4D4E) { 7.30 @@ -46,6 +52,20 @@ 7.31 } 7.32 p += len; 7.33 } while (x->buffer + x->curpos - 3 >= p); 7.34 +#endif 7.35 +#ifdef BASIC_ISO9660 7.36 + char *s; 7.37 + p = x->buffer + 33; p += x->curpos; 7.38 + s = ".."+1-p[0]; 7.39 + p--; 7.40 + if (((* (short *) p) & 0xFEFF) -1 != 0) { 7.41 + s = p + 1; p += *p; 7.42 + if (* (short *) (p-1) != 0x313B) p+=2; // no ;1 to remove 7.43 + if (*p != '.') p++; 7.44 + *p = 0; 7.45 + } 7.46 + x->filename = s; 7.47 +#endif 7.48 found: 7.49 return 0; 7.50 } 7.51 @@ -112,3 +132,4 @@ 7.52 isolseek(&x->fileofs); 7.53 return x->fd; 7.54 } 7.55 +#endif
8.1 --- a/linld/stuff/src/JUMP.ASM Sat Feb 27 17:05:52 2021 +0100 8.2 +++ b/linld/stuff/src/JUMP.ASM Sun Feb 28 16:32:57 2021 +0000 8.3 @@ -6,6 +6,9 @@ 8.4 %crefref 8.5 %noincl 8.6 %nomacs 8.7 + 8.8 + include "common.inc" 8.9 + 8.10 ifdef NO386 8.11 p8086 8.12 else 8.13 @@ -107,11 +110,16 @@ 8.14 pop ss 8.15 mov sp,di 8.16 8.17 + ifdef LINUX001 8.18 mov dx,2000h 8.19 global _csip_hilo:word 8.20 org $-2 8.21 _csip_hilo dw ? 8.22 xchg al,dh ; 9020 / 9000 8.23 + else 8.24 + mov al,20h ; 9020:0 8.25 + xor dx,dx 8.26 + endif 8.27 push ax 8.28 push dx ; 0000 / 0042 8.29 8.30 @@ -120,18 +128,27 @@ 8.31 global _pm_low:byte 8.32 _pm_low db ? 8.33 push cx 8.34 + ifdef IPXE 8.35 mov ax,[word ss:024Ch] 8.36 xor ax,2b30h ; ipxe ? 8.37 loopne @@notipxe 8.38 + else 8.39 + loop @@truebzimage 8.40 + endif 8.41 8.42 ; finish loading 8.43 extrn @last_ditch$qv:near 8.44 push cs 8.45 call @last_ditch$qv 8.46 + ifdef SHUTDOWN 8.47 dos_shutdown ; clear si; ds=0; kill VCPI 8.48 push cs 8.49 pop ds 8.50 + else 8.51 + xor si,si 8.52 + endif 8.53 8.54 +@@truebzimage: 8.55 @@notipxe: 8.56 pop cx 8.57 loop @@isbzimage 8.58 @@ -174,7 +191,16 @@ 8.59 pop es 8.60 push es 8.61 8.62 + ifdef ELKS 8.63 call near @@movsb@jmp ; movsb; pop cs ; ds=es=ss 8.64 + elseifdef MOVE_SETUP 8.65 + call near @@movsb@jmp ; movsb; pop cs ; ds=es=ss 8.66 + else 8.67 + xor di,di 8.68 + rep 8.69 + movsb 8.70 + call near @@isbzimage ; movsb; pop cs ; ds=es=ss 8.71 + endif 8.72 8.73 extrn memcpy32:near 8.74 call memcpy32 8.75 @@ -191,7 +217,7 @@ 8.76 ; movsb 8.77 endif 8.78 8.79 - ifndef noelks 8.80 + ifdef ELKS 8.81 ifdef MOVE_SETUP 8.82 ifndef NO386 8.83 mov eax,[dword si+1E6h] 8.84 @@ -232,7 +258,7 @@ 8.85 rep 8.86 movsb 8.87 else 8.88 - ifndef noelks 8.89 + ifdef ELKS 8.90 xchg ax,si 8.91 mov ch,7Eh ; 0Ah min, 7Eh max 8.92 @@movsb@jmp: 8.93 @@ -257,7 +283,9 @@ 8.94 assume cs:DGROUP 8.95 retf 8.96 8.97 + ifdef SHUTDOWN 8.98 step19code 8.99 + endif 8.100 8.101 endp _boot_kernel 8.102
9.1 --- a/linld/stuff/src/LINLD.CPP Sat Feb 27 17:05:52 2021 +0100 9.2 +++ b/linld/stuff/src/LINLD.CPP Sun Feb 28 16:32:57 2021 +0000 9.3 @@ -16,9 +16,15 @@ 9.4 9.5 inline void syntax() { 9.6 die("Syntax:" NL 9.7 - "LINLD [image=file] [initrd=files] [vga=mode] [root=num] [mem=max] [cl=cmdline] [iso=file] ..." NL 9.8 + "LINLD [image=file] [initrd=files] [vga=mode] [root=num] [mem=max] [cl=cmdline] " 9.9 +#ifdef ISO9660 9.10 + "[iso=file] " 9.11 +#endif 9.12 + "..." NL 9.13 "vga mode: ask,extended,normal or dec/oct/hex number" NL 9.14 +#ifdef CPU64 9.15 "-64 for cpu64 only" NL 9.16 +#endif 9.17 "Defaults:" NL 9.18 "\timage=bzImage" NL 9.19 "\tinitrd,vga,root=(void)" NL 9.20 @@ -50,11 +56,17 @@ 9.21 if (!*++argv) syntax(); 9.22 const char **clp = &cmdline; 9.23 do { 9.24 +#ifdef CPU64 9.25 if ((*(u16 *)*argv|2) == 0x362F) { // -64 /64 9.26 if (cpuhaslm() != 0) continue; 9.27 exit(); 9.28 } 9.29 +#endif 9.30 +#ifdef ISO9660 9.31 if (argstr(*argv,"cl|image|initrd|iso",clp) == (int) clp) continue; 9.32 +#else 9.33 + if (argstr(*argv,"cl|image|initrd",clp) == (int) clp) continue; 9.34 +#endif 9.35 #ifdef QUICK_BOOT 9.36 if (argnum(*argv,"root|vga|mem|-b|-f~-q~-v~",&root_dev) >= (int) &base_himem) continue; 9.37 #else 9.38 @@ -68,7 +80,9 @@ 9.39 strcatb((const char *) buf_cmdline,*argv); 9.40 } while (*++argv); 9.41 puts(*clp); 9.42 +#ifdef ISO9660 9.43 if (isofile) setiso(isofile); 9.44 +#endif 9.45 set_cmdline(*clp); 9.46 load_kernel(); 9.47 load_initrd();
10.1 --- a/linld/stuff/src/LOAD.CPP Sat Feb 27 17:05:52 2021 +0100 10.2 +++ b/linld/stuff/src/LOAD.CPP Sun Feb 28 16:32:57 2021 +0000 10.3 @@ -137,7 +137,7 @@ 10.4 readrm(m, 0x200); 10.5 rewind(m->fd); 10.6 if(kernelparams->setup_sects == 0) { 10.7 -#if 1 10.8 +#ifdef LINUX001 10.9 if(* (int *) &first1k->pad10[0x3F-0x24] == 0x3AE8) { 10.10 extern u16 csip_hilo; 10.11 csip_hilo=0x0042;
11.1 --- a/linld/stuff/src/MEMCPY32.ASM Sat Feb 27 17:05:52 2021 +0100 11.2 +++ b/linld/stuff/src/MEMCPY32.ASM Sun Feb 28 16:32:57 2021 +0000 11.3 @@ -6,6 +6,9 @@ 11.4 %crefref 11.5 %noincl 11.6 %nomacs 11.7 + 11.8 + include "common.inc" 11.9 + 11.10 ifdef NO386 11.11 p8086 11.12 else 11.13 @@ -144,6 +147,7 @@ 11.14 mov ecx,[sz] 11.15 jecxz @@done 11.16 11.17 + ifdef VCPI 11.18 smsw ax 11.19 and al,1 ;MSW_PE 11.20 jz @@real_mode 11.21 @@ -152,6 +156,7 @@ 11.22 extrn vcpi_pm_copy_routine:near 11.23 call near vcpi_pm_copy_routine ; Call pm copy routine via vcpi pm 11.24 jmp @@done 11.25 + endif 11.26 @@real_mode: 11.27 cli 11.28 oldGDTR = (pword srcseg) ; don't need src seg/ofs anymore 11.29 @@ -206,7 +211,19 @@ 11.30 11.31 ;****** Const data ********************************************* 11.32 11.33 + ifdef VCPI 11.34 extrn gdt_memcpy 11.35 + else 11.36 + org $-8 ;save 8 bytes 11.37 +;0000: unused 11.38 +gdt_memcpy dd ?,? 11.39 +;0008: Data seg [0,FFFFFFFF] 11.40 + ; lim_lo base_lo 11.41 + dw 1111111111111111b, 0000000000000000b 11.42 + db 00000000b,10010010b,10001111b,00000000b 11.43 + ; base_med P S D A G ??l_hi base_hi 11.44 + ; Pl E W D 11.45 + endif 11.46 label GDTR pword 11.47 gdt_limit dw 0ffffh 11.48 global gdt_base_memcpy:word
12.1 --- a/linld/stuff/src/MEMTOP.ASM Sat Feb 27 17:05:52 2021 +0100 12.2 +++ b/linld/stuff/src/MEMTOP.ASM Sun Feb 28 16:32:57 2021 +0000 12.3 @@ -6,6 +6,9 @@ 12.4 %crefref 12.5 %noincl 12.6 %nomacs 12.7 + 12.8 + include "common.inc" 12.9 + 12.10 ifdef NO386 12.11 p8086 12.12 else
13.1 --- a/linld/stuff/src/VCPI.ASM Sat Feb 27 17:05:52 2021 +0100 13.2 +++ b/linld/stuff/src/VCPI.ASM Sun Feb 28 16:32:57 2021 +0000 13.3 @@ -28,6 +28,10 @@ 13.4 %crefref 13.5 %noincl 13.6 %nomacs 13.7 + 13.8 + include "common.inc" 13.9 + 13.10 + ifdef VCPI 13.11 p386 13.12 13.13 ;****** Stuff for declaring descriptors 13.14 @@ -383,6 +387,17 @@ 13.15 endp _vm2rm 13.16 13.17 ends _TEXT 13.18 + else 13.19 + 13.20 + group DGROUP _TEXT 13.21 + assume cs:DGROUP,ds:DGROUP 13.22 + 13.23 + segment _TEXT byte public use16 'CODE' 13.24 + global gdt_data:near 13.25 +gdt_data: 13.26 + ends _TEXT 13.27 + 13.28 + endif 13.29 13.30 end 13.31
14.1 --- a/linld/stuff/src/XMM.ASM Sat Feb 27 17:05:52 2021 +0100 14.2 +++ b/linld/stuff/src/XMM.ASM Sun Feb 28 16:32:57 2021 +0000 14.3 @@ -6,6 +6,9 @@ 14.4 %crefref 14.5 %noincl 14.6 %nomacs 14.7 + 14.8 + include "common.inc" 14.9 + 14.10 p8086 14.11 14.12 group DGROUP _TEXT
15.1 --- a/linld/stuff/src/_BEG.ASM Sat Feb 27 17:05:52 2021 +0100 15.2 +++ b/linld/stuff/src/_BEG.ASM Sun Feb 28 16:32:57 2021 +0000 15.3 @@ -6,6 +6,9 @@ 15.4 %crefref 15.5 %noincl 15.6 %nomacs 15.7 + 15.8 + include "common.inc" 15.9 + 15.10 p8086 15.11 15.12 group DGROUP _TEXT,_DATA,_BSS 15.13 @@ -18,10 +21,12 @@ 15.14 ;global _data_start:byte 15.15 label _data_start byte 15.16 ifndef NO386 15.17 -msg_badcpu db "I need 386+ CPU in real mode w/o paging" 15.18 +msg_badcpu db "I need a 386+ in real mode w/o paging" 15.19 + ifdef VCPI 15.20 db " or " 15.21 msg_badmapping db "under VCPI 4.0+ manager with low 640k 1:1 mapping" 15.22 global _vcpi:byte 15.23 + endif 15.24 _vcpi db 0 15.25 endif 15.26 15.27 @@ -36,13 +41,15 @@ 15.28 ;global _bss_start:byte 15.29 label _bss_start byte 15.30 global stktop:byte 15.31 - ifdef NO386 15.32 global _cpu386:byte 15.33 _cpu386 db ? 15.34 + ifdef CPU64 15.35 org $-1 15.36 endif 15.37 + ifdef CPU64 15.38 global _cpu_features:dword 15.39 _cpu_features dd ? 15.40 + endif 15.41 ends _BSS 15.42 15.43 segment _TEXT byte public use16 'CODE' 15.44 @@ -118,6 +125,7 @@ 15.45 ;*************************************************************** 15.46 label check_vcpi near 15.47 p386 15.48 + ifdef VCPI 15.49 ; Check whether it is safe to call 67h 15.50 xor eax,eax 15.51 mov es,ax 15.52 @@ -142,8 +150,10 @@ 15.53 extrn _vcpi:byte 15.54 dec [byte _vcpi] 15.55 endif 15.56 + endif 15.57 no_vcpi: 15.58 endcpu386: 15.59 + ifdef CPU64 15.60 pushfd 15.61 pop dx 15.62 pop ax 15.63 @@ -168,6 +178,9 @@ 15.64 mov [_cpu_features],edx 15.65 @@no_cpuid: 15.66 endif 15.67 + else 15.68 + dec [_cpu386] 15.69 + endif 15.70 endcpu86: 15.71 p8086 15.72 15.73 @@ -266,6 +279,9 @@ 15.74 ret 15.75 15.76 endp _topseg 15.77 + else 15.78 +@ret: 15.79 + ret 15.80 endif 15.81 15.82 ;***************************************************************
16.1 --- a/linld/stuff/src/_END.ASM Sat Feb 27 17:05:52 2021 +0100 16.2 +++ b/linld/stuff/src/_END.ASM Sun Feb 28 16:32:57 2021 +0000 16.3 @@ -5,7 +5,10 @@ 16.4 %crefref 16.5 %noincl 16.6 %nomacs 16.7 - p386 16.8 + 16.9 + include "common.inc" 16.10 + 16.11 + p8086 16.12 16.13 segment _TEXT byte public use16 'CODE' 16.14 ;global _text_end:byte 16.15 @@ -23,7 +26,7 @@ 16.16 16.17 segment _BSS word public use16 'BSS' 16.18 ;STACK_SIZE = 128 16.19 -STACK_SIZE = 512 16.20 +STACK_SIZE = 256 16.21 db STACK_SIZE dup(?) 16.22 global stktop:byte 16.23 label stktop byte
17.1 --- a/linld/stuff/src/pipehole.awk Sat Feb 27 17:05:52 2021 +0100 17.2 +++ b/linld/stuff/src/pipehole.awk Sun Feb 28 16:32:57 2021 +0000 17.3 @@ -1,4 +1,4 @@ 17.4 -BEGIN { hold=0; is386=0; isload=0; isiso=0; istazboot=0; wascall=0; ishimem=0; label="none"; xlabel=""; file="" } 17.5 +BEGIN { hold=0; is386=0; isload=0; isiso=0; istazboot=0; wascall=0; ishimem=0; label="none"; xlabel=""; file=""; retc="returnCz:\n" } 17.6 function isnum(n) { return match(n,/^[0-9+-]/) } 17.7 { 17.8 sub(/segment word public/,"segment byte public") 17.9 @@ -48,7 +48,7 @@ 17.10 } 17.11 } # file == "linld.cpp" 17.12 if (file == "himem.cpp") { 17.13 - if (/sp,bp/ || /pop bp/) next 17.14 + if (/sp,bp/ || /pop bp/ || /enter/ || /leave/) next 17.15 if (/void load_image/) ishimem=1 17.16 if (ishimem == 1 && is386 == 0) { 17.17 if (/si\+8\]$/ || /si\+4\]$/ || /si\+16\]$/) next 17.18 @@ -243,15 +243,30 @@ 17.19 } 17.20 } # file == "load.cpp" 17.21 if (file == "iso9660.cpp") { 17.22 - if (/ptr \[si\+10\],dx/) next 17.23 - if (/ptr \[si\+8\],ax/) next 17.24 - if (/si\+32/) next 17.25 - if (/add word ptr \[si\],ax/) $0=" add word ptr [si],cx" 17.26 + if (/ptr \[si\+8\],/) { si="si"; di="di" } 17.27 + if (/ptr \[di\+8\],/) { si="di"; di="si" } 17.28 + if (/leave/ || /enter/) next 17.29 + if (/ptr \[.i\+10\],dx/) next 17.30 + if (/ptr \[.i\+8\],ax/) next 17.31 + if (/ptr \[.i\+8\],eax/) next 17.32 + if (/cx,word ptr \[.i\+32\]/) next 17.33 + if (/add word ptr \[.i\],ax/) sub(/ax/,"cx") 17.34 if (/ax,word ptr \[si\+24\]/) sub(/mov ax,/,"les ax,d") 17.35 if (/ax,word ptr \[si\+26\]/) next 17.36 if (/word ptr \[si\+29\],ax/) sub(/ax/,"es") 17.37 if (/\[si\],-1/) $0=" not word ptr [si]" 17.38 sub(/di,word ptr DGROUP:_isostate\+2/,"di,word ptr [si+2]") 17.39 + if (/s = p \+ 1;/ && !/ ;/) isiso=20 17.40 + if (isiso == 20) { # ISO9660.LST 17.41 + if (/al,byte ptr/) $0=" ;inc ax" 17.42 + sub(/\[si-1\]/,"[si]") 17.43 + if (/p != .\./) print " inc " di " ; see ;inc ax" 17.44 + if (/i],0/) sub(/,0/,",ah") 17.45 + if (/filename = s;/) { 17.46 + print " stc" 17.47 + isiso=0 17.48 + } 17.49 + } 17.50 if (isiso == 19) { # ISO9660.LST 17.51 if (/short @2@282/) $0=" jc restoreC" 17.52 if (/bp-2/ || /si\+34/ || /ax,dx/ || /cmp ax,-1/) next 17.53 @@ -298,14 +313,12 @@ 17.54 if (/si\+24/) isiso=1 17.55 } 17.56 if (/found:/) isiso=15 17.57 - if (/short @1@394/) sub(/@1@394/,"@1@422") 17.58 if (isiso != 15 && /si,offset DGROUP:_isostate/) $0=";" $0 17.59 if (isiso == 15) { # ISO9660.LST 17.60 if (/xor/) { 17.61 print "returnNotC:" 17.62 print " cmc" 17.63 - print "returnC:" 17.64 - print "@1@422:" 17.65 + print retc "returnC:" 17.66 print " sbb ax,ax" 17.67 print "return:" 17.68 next 17.69 @@ -316,25 +329,26 @@ 17.70 if (/short @1@142/) { isiso=14; next } 17.71 if (isiso == 14) { # ISO9660.LST 17.72 if (/ax,-1/) next 17.73 - if (/jmp @1@422/) sub(/jmp/,"jb") 17.74 + if (/jmp/) $0=" jb returnCz" 17.75 } 17.76 if (/p = x->buffer \+ 34/) isiso=13 17.77 if (isiso == 13) { # ISO9660.LST 17.78 - if (/di,si/) $0=" xchg ax,bx" 17.79 - if (/di,ax/) $0=" lea di,[si+bx+72]" 17.80 - if (/di,72/) { 17.81 - isiso=0 17.82 - next 17.83 - } 17.84 + if (/i,.i/) $0=" xchg ax,bx" 17.85 + if (/i,ax/) $0=" lea " di ",[bx+" si "+72]" 17.86 + if (/i,72/ || /word ptr \[.i\+32\]/) next 17.87 + if (/register len/) isiso=12 17.88 } 17.89 - if (/register len/) isiso=12 17.90 if (isiso == 12) { # ISO9660.LST 17.91 - if (/di\+2/) sub(/al/,"bl") 17.92 + if (/.i\+2/) sub(/al/,"bl") 17.93 if (/cbw/) next 17.94 sub(/dx,ax/,"bh,0") 17.95 if (/bx,dx/) next 17.96 sub(/i,dx/,"i,bx") 17.97 - sub(/bx\+di\],0/,"bx+di],bh") 17.98 + if (/bx\+.i\],0/) sub(/,0/,",bh") 17.99 + if (/jmp/) { 17.100 + $0=retc " jmp returnC" 17.101 + retc="" 17.102 + } 17.103 if (/while/) isiso=0 17.104 } 17.105 if (/curpos >= SECT/) isiso=10 17.106 @@ -370,15 +384,19 @@ 17.107 if (/entrysize =/) isiso=5 17.108 if (isiso == 5) { # ISO9660.LST 17.109 if (/ax,ax/) next 17.110 + if (/word ptr \[.i\+32\],ax/) next 17.111 sub(/ax/,"cx") 17.112 sub(/je/,"jcxz") 17.113 if (/jcxz/) { 17.114 hold=0 17.115 print s 17.116 - sub(/@1@114/,"@1@394") 17.117 + sub(/@1@114/,"returnNotC") 17.118 print 17.119 - print " mov word ptr [si+10],dx" 17.120 - $0=" mov word ptr [si+8],ax" 17.121 + if (is386) $0=" mov dword ptr [" si "+8],eax" 17.122 + else { 17.123 + print " mov word ptr [" si "+10],dx" 17.124 + $0=" mov word ptr [" si "+8],ax" 17.125 + } 17.126 } 17.127 if (/return/) isiso=0 17.128 }
18.1 --- a/syslinux/stuff/iso2exe/iso2exe.sh Sat Feb 27 17:05:52 2021 +0100 18.2 +++ b/syslinux/stuff/iso2exe/iso2exe.sh Sun Feb 28 16:32:57 2021 +0000 18.3 @@ -43,7 +43,7 @@ 18.4 TMP=/tmp/iso2exe$$ 18.5 mkdir -p $TMP/mnt 18.6 mount -o loop,ro $1 $TMP/mnt 18.7 - if grep -qs rootfs $TMP/mnt/boot/isolinux/isolinux.cfg ; then 18.8 + if [ $2 = --array ] || grep -qs rootfs $TMP/mnt/boot/isolinux/isolinux.cfg ; then 18.9 $0 --get rootfs.gz > $TMP/rootfs.gz 18.10 SIZE=$(wc -c < $TMP/rootfs.gz) 18.11 store 24 $SIZE $1 18.12 @@ -338,7 +338,7 @@ 18.13 ddq if=/dev/zero bs=32k count=1 of=$DATA 18.14 add_win32exe $DATA $2 > /dev/null 18.15 HSZ=$OFS 18.16 - add_rootfs $DATA > /dev/null 18.17 + add_rootfs $DATA --array > /dev/null 18.18 add_fdbootstrap $DATA > /dev/null 18.19 name=${3:-bootiso} 18.20 BOOTISOSZ=$((0x8000 - $OFS + $HSZ))
19.1 --- a/tazlito/receipt Sat Feb 27 17:05:52 2021 +0100 19.2 +++ b/tazlito/receipt Sun Feb 28 16:32:57 2021 +0000 19.3 @@ -30,6 +30,7 @@ 19.4 cp -a $install/* $fs 19.5 chown -R root.root $fs 19.6 chmod 755 $fs/usr/bin/tazlito* 19.7 + sed 's|.*boot/grub|#&|' $fs/usr/bin/tazlito* # keep splash.xpm.gz for tazinst 19.8 # Declare /etc/tazlito/distro-packages.list & /etc/tazlito/tazlito.conf 19.9 touch $fs/etc/tazlito/tazlito.conf 19.10 touch $fs/etc/tazlito/distro-packages.list