# HG changeset patch # User Pascal Bellard # Date 1434743840 -7200 # Node ID 0a22c10d35b27843589509d99bc6fdad8d370fe2 # Parent d2af45554821430676f71f8a803bc6174fcd792d syslinux/taziso/floppyset: add ifmem diff -r d2af45554821 -r 0a22c10d35b2 syslinux/stuff/iso2exe/Makefile --- a/syslinux/stuff/iso2exe/Makefile Fri Jun 19 19:56:46 2015 +0200 +++ b/syslinux/stuff/iso2exe/Makefile Fri Jun 19 21:57:20 2015 +0200 @@ -4,7 +4,7 @@ all: isohybrid.exe iso2exe meminfo.exe tazboot.exe taziso.built -taziso.built: bootloader.bin +taziso.built: bootloader.bin ifmem.bin ./taziso --build touch taziso.built @@ -61,7 +61,7 @@ $(BCC) $(BCCFLAGS) -A-l -A$*.lst -c -o $@ $< %.bin: %.S - $(GCC) -D__ASSEMBLY__ -Wa,-acghlnm=$*.lst -c -o $*.o $< + $(GCC) -D__ASSEMBLY__ -DMULTI_INITRD -Wa,-acghlnm=$*.lst -c -o $*.o $< objcopy -O binary $*.o $@ chmod +x $@ diff -r d2af45554821 -r 0a22c10d35b2 syslinux/stuff/iso2exe/bootloader.S --- a/syslinux/stuff/iso2exe/bootloader.S Fri Jun 19 19:56:46 2015 +0200 +++ b/syslinux/stuff/iso2exe/bootloader.S Fri Jun 19 21:57:20 2015 +0200 @@ -19,7 +19,6 @@ /* some extra features */ #define CMDLINE kernel >= 2.4 #define OLDCMDLINE kernel < 2.4 -#define HELP display version for ? argument #define MORETHAN16M up to 4Gb RAM, not 16Mb #define KEYBOARDLESS_SUPPORT scan floppy swap each 5 seconds @@ -28,7 +27,10 @@ #define MOVE_CMDLINE #define INITRD_SUPPORT #define INITRD_AUTOADDR -#define MULTI_INITRD many in one support +#ifndef MULTI_INITRD +#define README_SUPPORT +#define COUNTER +#endif .code16 .org 0 @@ -118,6 +120,18 @@ popw %ax # limits = 0 incw %cx # cylinder 0, sector 1, clear Z call read_first_sectors # read setup +#ifdef README_SUPPORT + xorw %si, %si + orw readme, %si + jz readmeend +readmeloop: + call puts + jz readmeend + call wait4key + cmpb $27, %al + jne readmeloop +readmeend: +#endif loadsys: movw $0x200,%si type_of_loader = 0x10 @@ -348,6 +362,18 @@ #define FLOPPY_CYLINDERS 80 #define FLOPPY_HEADS 2 +.macro putsmsg +#ifdef COUNTER + movw $msgdigit+1-msg, %bx +nextdigit: + decw %bx + incb (%bx,%si) + cmpb $'9', (%bx,%si) + ja nextdigit +#endif + call puts +.endm + check_limits: popw %dx cmpb %al, %cl # max sector known ? @@ -407,7 +433,7 @@ dpy_swap_floppy: #ifdef KEYBOARDLESS_SUPPORT pushw %bx - call puts + putsmsg popw %bx movw %si, %bp waitfloppy: @@ -434,7 +460,7 @@ jne waitfloppy waitfloppydone: #else - call puts + putsmsg cbw # %ah = 0, get keyboard character int $0x16 #endif @@ -495,7 +521,14 @@ .ascii "B or " #endif swap_floppy: +#ifdef COUNTER +msg: + .ascii "Insert floppy disk 00" +msgdigit: + .ascii "1." +#else .ascii "Next!" +#endif .byte 7,13,0 # swap detection needs 13, 0 #ifdef MULTI_INITRD max_timeouts: @@ -506,4 +539,9 @@ .word table .byte table+4-256 #endif +#ifdef README_SUPPORT + .org 0x1EF +readme: + .word 0 +#endif .org 0x1F1 diff -r d2af45554821 -r 0a22c10d35b2 syslinux/stuff/iso2exe/ifmem.S --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/syslinux/stuff/iso2exe/ifmem.S Fri Jun 19 21:57:20 2015 +0200 @@ -0,0 +1,55 @@ + .code16 + .org 0 +type_of_loader = 0x10 + + orw $0x8020, type_of_loader(%si) # loader type = 0x20 = bootsect-loader + pushal + + movw $10+16, %cx +fillbuf: + pushw $0 + loop fillbuf + popal // clear regiters +maploop: + movw %sp, %di // %es = %ss + movb $20, %cl + movw $0xE820, %ax + movl $0x534d4150, %edx + int $0x15 + sbbl %eax, %edx + jne mapdone + decw 16(%di) + jne notram + addw 8+2(%di), %bp +notram: + orw %bx, %bx + jnz maploop +mapdone: + addw $20, %sp + shrw $20-16,%bp + jnz mapdone2 + movb $0x88, %ah + int $0x15 + xchgw %ax, %bp + shrw $10, %bp +mapdone2: + incw %bp +// %bp : nb Mb + call here +here: + popw %di + movw $0x1EE, %si + lodsw +sizeloop: + scasw // %di += 2 + addw $4, %ax + cmpb %al, (%si) + jbe sizedone + cmpw %bp, sizes-here(%di) + jbe sizeloop + movb %al, (%si) +sizedone: + popal + lret // need %si +sizes: + diff -r d2af45554821 -r 0a22c10d35b2 syslinux/stuff/iso2exe/taziso --- a/syslinux/stuff/iso2exe/taziso Fri Jun 19 19:56:46 2015 +0200 +++ b/syslinux/stuff/iso2exe/taziso Fri Jun 19 21:57:20 2015 +0200 @@ -1050,6 +1050,8 @@ } if [ "$1" == "--build" ]; then #install-begin + uuencode -m - < ifmem.bin | sed -e '/^ifmemcode$/r/dev/stdin' \ + -e '/^ifmemcode$/d' -i $0 uuencode -m - < bootloader.bin | sed -e '/^bootloader$/r/dev/stdin' \ -e '/^bootloader$/d' -e '/install-begin$/,/install-end$/d' -i $0 exit @@ -1103,6 +1105,13 @@ echo "$1" | tr [A-Z] [a-z] } +ifmemcode() +{ + uudecode <> 16)) | ddq conv=notrunc \