wok view BootProg/stuff/bootprog.sh @ rev 25454

oldrunner: add apple2 keys mapping
author Pascal Bellard <pascal.bellard@slitaz.org>
date Thu Sep 22 07:58:57 2022 +0000 (19 months ago)
parents 810e3d0a38f7
children d4a851cd7f09
line source
1 #!/bin/sh
3 [ ! -e "$1" ] && cat<<S && exit 2
4 Usage: [FAT=<FAT12|FAT16|FAT32|EXFAT>] $0 device [file]
5 Example: $0 /dev/fd0 STARTUP.BIN
6 S
7 r="dd if=$1 count"
8 w="dd of=$1 bs=1 conv=notrunc seek"
9 while read c o b f
10 do [ "${FAT:-$($r=5 bs=1 skip=$c)}" = "$f" ] || continue
11 echo "Install $f bootsector on $1."
12 for a in "$o skip=$((o+b)) count=$((512-o))" "0 skip=$b count=11"
13 do sed '1,/^exit/d' $0 | unlzma | $w=$a; done
14 [ "$2" ] && echo "Set boot file '$2'" && echo -n "$2" | case "$f" in
15 E*) sed 's| |.|;s| ||g' | cat - /dev/zero;;
16 *) tr a-z A-Z | sed 's|\.| |;s|^\(.\{8\}\) *|\1|;s|$| |'
17 esac | $w=499 count=11
18 case "$f" in
19 *32) $w=1536 if=$1 count=512;;
20 E*) $r=11 bs=1b | od -vAn -tu1 -w1 - | LANG=C awk 'BEGIN { a=0;i=-1;m=0xFFFFFFFE }
21 { if (++i!=106 && i!=107 && i!=112) a=or(and(lshift(a,31),m),and(rshift(a,1),m/2))+$1 }
22 END { b=a/256;c=b/256; for (;i>0;i-=44) printf "%c%c%c%c",a%256,b%256,c%256,(c/256)%256 }' | $w=5632
23 esac
24 exit 0
25 done<<S 2>/dev/null
26 54 54 0 FAT12
27 54 54 0 FAT16
28 82 82 512 FAT32
29 3 113 1024 EXFAT
30 S
31 exit 1