diff -ruN ./elks-stuff/elks/arch/i86/Makefile ./elks/elks/arch/i86/Makefile --- ./elks-stuff/elks/arch/i86/Makefile 2004-05-28 16:01:49.000000000 -0400 +++ ./elks/elks/arch/i86/Makefile 2004-04-18 14:45:26.000000000 -0400 @@ -105,9 +105,10 @@ boot/system: $(AARCHIVES) $(ADRIVERS) boot/crt1.o boot/crt0.o (cd $(BASEDIR) ; $(LD) $(LDFLAGS) $(ARCH_LD) \ + -t -M -o $(ARCH_DIR)/boot/system \ $(ARCH_DIR)/boot/crt0.o $(ARCH_DIR)/boot/crt1.o \ init/main.o $(ARCHIVES) $(DRIVERS) \ - -t -M -o $(ARCH_DIR)/boot/system > System.tmp ; \ + > System.tmp ; \ sort -k4 System.tmp > System.map ; rm -f System.tmp ) #PC image build diff -ruN ./elks-stuff/elks/arch/i86/boot/setup.S ./elks/elks/arch/i86/boot/setup.S --- ./elks-stuff/elks/arch/i86/boot/setup.S 2004-05-28 16:01:49.000000000 -0400 +++ ./elks/elks/arch/i86/boot/setup.S 2004-04-18 14:42:59.000000000 -0400 @@ -585,7 +585,7 @@ or al,al jnz is486 #endif -#ifdef(CONFIG_CPU_80386) +#ifdef CONFIG_CPU_80386 mov cl,#7 lea si,p80386 br getfpu diff -ruN ./elks-stuff/elks/init/main.c ./elks/elks/init/main.c --- ./elks-stuff/elks/init/main.c 2004-05-28 16:01:50.000000000 -0400 +++ ./elks/elks/init/main.c 2004-05-09 11:05:45.000000000 -0400 @@ -106,7 +106,7 @@ #ifdef CONFIG_CONSOLE_SERIAL num = sys_open("/dev/ttyS0", 2, 0); #else - num = sys_open("/dev/tty1", 2, 0); + num = sys_open("/dev/tty0", 2, 0); #endif if (num < 0) diff -ruN ./elks-stuff/elks/kernel/printk.c ./elks/elks/kernel/printk.c --- ./elks-stuff/elks/kernel/printk.c 2004-05-28 16:01:50.000000000 -0400 +++ ./elks/elks/kernel/printk.c 2004-04-18 14:38:48.000000000 -0400 @@ -136,7 +136,7 @@ continue; } - width = zero = '0'; + width = zero = 0; if (c == '0') zero++; while (c >= '0' && c <= '9') { diff -ruN ./elks-stuff/elkscmd/MAKEDEV ./elks/elkscmd/MAKEDEV --- ./elks-stuff/elkscmd/MAKEDEV 1969-12-31 19:00:00.000000000 -0500 +++ ./elks/elkscmd/MAKEDEV 2004-05-28 15:31:49.000000000 -0400 @@ -0,0 +1,266 @@ +#!/bin/sh + +# Devices are generated by this script in the same order that they are listed +# in the Documentation/devices.txt file in the Linux 2.4.18 and5.21 kernel +# sources. This includes devices that are not currently relevant to ELKS, to +# encourage the use of common node numbers when these devices are eventually +# implemented. +# +# Where different node numbers are currently used by ELKS, the current ELKS +# node numbers are generated by lines labelled "Currently" and the relevant +# Linux node numbers are generated by lines labelled "Ought to be". +# +# Refer to the MAKESET command, also in this directory, for usage details. + +LINK=ln +MKDEV=mknod +MKSET=./MAKESET +TARGET_MNT=/mnt/test +DEVDIR=./$TARGET_MNT/dev + +############################################################################## +# Ensure required auxilliary script is present. + +if ! test -f "$MKSET" +then + echo ERROR: \"$MKSET\" script missing, unable to continue. + exit 1 +fi + +############################################################################## +# Create memory devices. + + $MKDEV $DEVDIR/mem c 1 1 + $MKDEV $DEVDIR/kmem c 1 2 + $MKDEV $DEVDIR/null c 1 3 +# $MKDEV $DEVDIR/port c 1 4 + $MKDEV $DEVDIR/zero c 1 5 +# $MKDEV $DEVDIR/core c 1 6 + $MKDEV $DEVDIR/full c 1 7 +# $MKDEV $DEVDIR/random c 1 8 +# $MKDEV $DEVDIR/urandom c 1 9 +# $MKDEV $DEVDIR/aio c 1 10 + +############################################################################## +# RAM disks. + + $MKSET 0 7 $MKDEV $DEVDIR/ram b 1 + + $LINK $DEVDIR/ram1 $DEVDIR/ramdisk + +############################################################################## +# Pseudo-TTY master devices. These are not yet supported by the ELKS kernel. + +# $MKSET 0 15 $MKDEV $DEVDIR/ptyp x 2 +# $MKSET 16 15 $MKDEV $DEVDIR/ptyq x 2 +# $MKSET 32 15 $MKDEV $DEVDIR/ptyr x 2 +# $MKSET 48 15 $MKDEV $DEVDIR/ptys x 2 +# $MKSET 64 15 $MKDEV $DEVDIR/ptyt x 2 +# $MKSET 80 15 $MKDEV $DEVDIR/ptyu x 2 +# $MKSET 96 15 $MKDEV $DEVDIR/ptyv x 2 +# $MKSET 112 15 $MKDEV $DEVDIR/ptyw x 2 +# $MKSET 128 15 $MKDEV $DEVDIR/ptyx x 2 +# $MKSET 144 15 $MKDEV $DEVDIR/ptyy x 2 +# $MKSET 160 15 $MKDEV $DEVDIR/ptyz x 2 +# $MKSET 176 15 $MKDEV $DEVDIR/ptya x 2 +# $MKSET 192 15 $MKDEV $DEVDIR/ptyb x 2 +# $MKSET 208 15 $MKDEV $DEVDIR/ptyc x 2 +# $MKSET 224 15 $MKDEV $DEVDIR/ptyd x 2 +# $MKSET 240 15 $MKDEV $DEVDIR/ptye x 2 + +############################################################################## +# Floppy diskettes. Only the auto-detect nodes are listed. + + $MKDEV $DEVDIR/fd0 b 3 128 # Currently. + $MKDEV $DEVDIR/fd1 b 3 192 # Currently. + +# $MKSET 0 3 $MKDEV $DEVDIR/fd b 2 # Ought to be. + +############################################################################## +# Pseudo-TTY master devices. These are not yet supported by the ELKS kernel. + +# $MKSET 0 15 $MKDEV $DEVDIR/ttyp x 3 +# $MKSET 16 15 $MKDEV $DEVDIR/ttyq x 3 +# $MKSET 32 15 $MKDEV $DEVDIR/ttyr x 3 +# $MKSET 48 15 $MKDEV $DEVDIR/ttys x 3 +# $MKSET 64 15 $MKDEV $DEVDIR/ttyt x 3 +# $MKSET 80 15 $MKDEV $DEVDIR/ttyu x 3 +# $MKSET 96 15 $MKDEV $DEVDIR/ttyv x 3 +# $MKSET 112 15 $MKDEV $DEVDIR/ttyw x 3 +# $MKSET 128 15 $MKDEV $DEVDIR/ttyx x 3 +# $MKSET 144 15 $MKDEV $DEVDIR/ttyy x 3 +# $MKSET 160 15 $MKDEV $DEVDIR/ttyz x 3 +# $MKSET 176 15 $MKDEV $DEVDIR/ttya x 3 +# $MKSET 192 15 $MKDEV $DEVDIR/ttyb x 3 +# $MKSET 208 15 $MKDEV $DEVDIR/ttyc x 3 +# $MKSET 224 15 $MKDEV $DEVDIR/ttyd x 3 +# $MKSET 240 15 $MKDEV $DEVDIR/ttye x 3 + +############################################################################## +# Direct IDE disks, Primary channel. + + $MKSET 0 7 $MKDEV $DEVDIR/hda b 5 # Currently. + $MKSET 8 7 $MKDEV $DEVDIR/hdb b 5 # Currently. + +# $MKSET 0 7 $MKDEV $DEVDIR/hda b 3 # Ought to be. +# $MKSET 8 7 $MKDEV $DEVDIR/hdb b 3 # Ought to be. + +############################################################################## +# Virtual consoles. Note that tty4 through tty7 can't be enabled at this +# time because of the possible conflict with ttyS0 through ttyS3 which +# used to use the node numbers these now use. However, it is expected that +# this restriction can be removed in the near future. + + $MKSET 0 3 $MKDEV $DEVDIR/tty c 4 # Currently +# $MKSET 0 15 $MKDEV $DEVDIR/tty c 4 # Soon to be + +# Serial ports, as detected by the ROM BIOS. + + $MKSET 64 3 $MKDEV $DEVDIR/ttyS c 4 + +############################################################################## +# Alternate TTY devices. These are not yet supported. + +# $MKDEV $DEVDIR/tty c 5 0 +# $MKDEV $DEVDIR/console c 5 1 +# $MKDEV $DEVDIR/ptmx c 5 2 + +############################################################################## +# Parallel devices, as detected by the ROM BIOS. + + $MKSET 0 3 $MKDEV $DEVDIR/lp c 6 + +############################################################################## +# Loopback devices. These are not yet supported. + +# $MKSET 0 15 $MKDEV $DEVDIR/loop c 7 + +############################################################################## +# SCSI disks. These are not yet supported. + +# $MKSET 0 7 $MKDEV $DEVDIR/sda b 8 +# $MKSET 8 7 $MKDEV $DEVDIR/sdb b 8 +# $MKSET 16 7 $MKDEV $DEVDIR/sdc b 8 +# $MKSET 24 7 $MKDEV $DEVDIR/sdd b 8 +# $MKSET 32 7 $MKDEV $DEVDIR/sde b 8 +# $MKSET 40 7 $MKDEV $DEVDIR/sdf b 8 +# $MKSET 48 7 $MKDEV $DEVDIR/sdg b 8 +# $MKSET 56 7 $MKDEV $DEVDIR/sdh b 8 +# $MKSET 64 7 $MKDEV $DEVDIR/sdi b 8 +# $MKSET 72 7 $MKDEV $DEVDIR/sdj b 8 +# $MKSET 80 7 $MKDEV $DEVDIR/sdk b 8 +# $MKSET 88 7 $MKDEV $DEVDIR/sdl b 8 +# $MKSET 96 7 $MKDEV $DEVDIR/sdm b 8 +# $MKSET 104 7 $MKDEV $DEVDIR/sdn b 8 +# $MKSET 112 7 $MKDEV $DEVDIR/sdo b 8 +# $MKSET 120 7 $MKDEV $DEVDIR/sdp b 8 + +############################################################################## +# SCSI tapes. These are not yet supported. + +# $MKSET 0 31 $MKDEV $DEVDIR/st c 9 +# $MKSET 32 31 $MKDEV $DEVDIR/st c 9 l +# $MKSET 64 31 $MKDEV $DEVDIR/st c 9 m +# $MKSET 96 31 $MKDEV $DEVDIR/st c 9 a +# $MKSET 128 31 $MKDEV $DEVDIR/nst c 9 +# $MKSET 160 31 $MKDEV $DEVDIR/nst c 9 l +# $MKSET 192 31 $MKDEV $DEVDIR/nst c 9 m +# $MKSET 224 31 $MKDEV $DEVDIR/nst c 9 a + +############################################################################## +# Metadisk (RAID) devices. These are not yet supported. + +# $MKSET 0 15 $MKDEV $DEVDIR/md b 9 + +############################################################################## +# SCSI CD-ROM devices. These are not yet supported. + +# $MKDEV $DEVDIR/scd b 11 + +############################################################################## +# MSCDEX CD-ROM devices. These are not yet supported. + +# $MKDEV $DEVDIR/doscd b 12 + +############################################################################## +# 8-bit MFM/RLL controllers. These are not yet supported. + +# $MKSET 0 7 $MKDEV $DEVDIR/xda b 13 +# $MKSET 8 7 $MKDEV $DEVDIR/xdb b 13 + +############################################################################## +# BIOS hard disks. + + $MKSET 0 7 $MKDEV $DEVDIR/bda b 3 # Currently + $MKSET 8 7 $MKDEV $DEVDIR/bdb b 3 # Currently + $MKSET 16 7 $MKDEV $DEVDIR/bdc b 3 # Currently + $MKSET 24 7 $MKDEV $DEVDIR/bdd b 3 # Currently + +# $MKSET 0 7 $MKDEV $DEVDIR/bda b 14 # Ought to be +# $MKSET 8 7 $MKDEV $DEVDIR/bdb b 14 # Ought to be +# $MKSET 16 7 $MKDEV $DEVDIR/bdc b 14 # Ought to be +# $MKSET 24 7 $MKDEV $DEVDIR/bdd b 14 # Ought to be + +############################################################################## +# Joysticks. These are not yet supported. + +# $MKDEV $DEVDIR/js c 15 +# $MKDEV $DEVDIR/djs c 15 + +############################################################################## +# Generic SCSI devices. These are not yet supported. + +# $MKSET 0 15 $MKDEV $DEVDIR/sg c 21 + +############################################################################## +# Direct IDE disks, Secondary channel. These are not yet supported. + +# $MKSET 0 7 $MKDEV $DEVDIR/hdc b 22 +# $MKSET 8 7 $MKDEV $DEVDIR/hdd b 22 + +############################################################################## +# Direct IDE disks, Tertiary channel. These are not yet supported. + +# $MKSET 0 7 $MKDEV $DEVDIR/hde b 33 +# $MKSET 8 7 $MKDEV $DEVDIR/hdf b 33 + +############################################################################## +# Z80-SIO devices. These are not yet supported. + +# $MKSET 0 7 $MKDEV $DEVDIR/scc c 34 + +############################################################################## +# Direct IDE disks, Quaternary channel. These are not yet supported. + +# $MKSET 0 7 $MKDEV $DEVDIR/hde b 34 +# $MKSET 8 7 $MKDEV $DEVDIR/hdf b 34 + +############################################################################## +# Direct IDE disks, Quinternary channel. These are not yet supported. + +# $MKSET 0 7 $MKDEV $DEVDIR/hdg b 56 +# $MKSET 8 7 $MKDEV $DEVDIR/hdh b 56 + +############################################################################## +# Direct IDE disks, Septernary channel. These are not yet supported. + +# $MKSET 0 7 $MKDEV $DEVDIR/hdi b 57 +# $MKSET 8 7 $MKDEV $DEVDIR/hdj b 57 + +############################################################################## +# SCSI Media Changer. These are not yet supported. + +# $MKSET 0 15 $MKDEV $DEVDIR/sch c 86 + +############################################################################## +# I2C bus drivers. These are not yet supported. + +# $MKSET 0 7 $MKDEV $DEVDIR/i2c c 89 + +############################################################################## +# Conrad Electronic Parallel Port Radio Clocks. These are not yet supported. + +# $MKSET 0 1 $MKDEV $DEVDIR/pcfclock c 181 + +############################################################################## +# EOF. diff -ruN ./elks-stuff/elkscmd/MAKESET ./elks/elkscmd/MAKESET --- ./elks-stuff/elkscmd/MAKESET 1969-12-31 19:00:00.000000000 -0500 +++ ./elks/elkscmd/MAKESET 2004-04-18 14:54:13.000000000 -0400 @@ -0,0 +1,48 @@ +#!/bin/sh + +if [ $# -lt 6 -o $# -gt 7 ]; then + echo + echo "Usage: makeset min count cmd prefix type major [suffix]" + echo + echo "where min is the minor of the first node to make," + echo " count is the number of the last node to make," + echo " cmd is the command to make a node," + echo " prefix is the node name prefix," + echo " type is the type selector for the node," + echo " major is the major number for the node," + echo " and suffix is a suffix to append to the node names." + echo + echo "The following type selectors are supported:" + echo + echo " b Block device, all nodes have numeric suffix." + echo " d Block device, first node is raw device without numeric suffix." + echo + echo " c Character device with decimal numeric suffix." + echo " x Character device with hexadecimal numeric suffix." + echo +else + N=0 + while [ $N -le $2 ]; do + P=`expr $N + $1` + case ".$5" in + .b) eval $3 $4$N$7 $5 $6 $P + ;; + .c) eval $3 $4$N$7 $5 $6 $P + ;; + .d) if [ $N -gt 0 ]; then + eval $3 $4$N$7 $5 $6 $P + else + eval $3 $4$7 $5 $6 $P + fi + ;; + .x) if [ $N -gt 9 ]; then + R=`echo 123456789abcdef | cut -b $N` + eval $3 $4$R$7 c $6 $P + else + eval $3 $4$N$7 c $6 $P + fi + ;; + esac + N=`expr $N + 1` + done +fi diff -ruN ./elks-stuff/elkscmd/Make.defs ./elks/elkscmd/Make.defs --- ./elks-stuff/elkscmd/Make.defs 2004-05-28 16:02:01.000000000 -0400 +++ ./elks/elkscmd/Make.defs 2004-04-18 15:02:51.000000000 -0400 @@ -147,7 +147,7 @@ MKFS=/sbin/mkfs.minix MKFS_OPTS=-n14 -MINIX_BOOT=$(DEV86_DIR)/bootblocks +MINIX_BOOT=./bootblocks ############################################################################## # @@ -159,7 +159,7 @@ endif ifeq ($(TARGET_MODE),LOOP) -TARGET_MNT=/mnt/elks +TARGET_MNT=/mnt/test LOOP=-o loop endif diff -ruN ./elks-stuff/elkscmd/Makefile ./elks/elkscmd/Makefile --- ./elks-stuff/elkscmd/Makefile 2004-05-28 16:02:01.000000000 -0400 +++ ./elks/elkscmd/Makefile 2004-05-28 15:30:59.000000000 -0400 @@ -46,9 +46,10 @@ $(FULL3_TARGET_FS) $(FULL5_TARGET_FS) || true rm -f $(COMB_TARGET_FS) $(ROOT_TARGET_FS) $(ROOT_NET_TARGET_FS) \ $(FULL3_TARGET_FS) $(FULL5_TARGET_FS) boot images.zip core - rm -rf rootfs_template $(ROOTDIR) + rm -rf ./rootfs_template $(ROOTDIR) + rm -rf ./bootblocks/*s ./bootblocks/*bin ./bootblocks/*v @for i in $(DIRS); do make -C $$i clean ; done - tar xf rootfs_template.tar + tar xzf rootfs_template.tar.gz ############################################################################### # @@ -119,10 +120,13 @@ # Create relevant parts of other packages. $(FD_BSECT): - make -C $(MINIX_BOOT) bin + bcc -Mf -O -DTRY_FLOPPY -DDOTS -o ./bootblocks/minix.s -S ./bootblocks/minix.c + as86 -w- -0 -b ./bootblocks/minix.bin -s ./bootblocks/minix.sym ./bootblocks/minix.s $(KHELPER): - make -C $(MINIX_BOOT) + as86_encap ./bootblocks/minix.s ./bootblocks/minix.v minix_ -0 -w + bcc -Mf -O -DDOTS -o ./bootblocks/minix_elks.s -S ./bootblocks/minix_elks.c + as86 -w- -0 -b ./bootblocks/minix_elks.bin -s ./bootblocks/minix_elks.sym ./bootblocks/minix_elks.s ############################################################################### # @@ -146,8 +150,8 @@ $(SIBO_TARGET_FS): dd if=/dev/zero of=$(SIBO_TARGET_FS) bs=1024 count=$(SIBO_TARGET_BLKS) -$(ELKSCMD_DIR)/rootfs_template/etc/passwd: rootfs_template.tar - tar xpf rootfs_template.tar +$(ELKSCMD_DIR)/rootfs_template/etc/passwd: rootfs_template.tar.gz + tar xzpf rootfs_template.tar.gz $(ELKSCMD_DIR)/rootfs_template/etc/issue: $(ELKSCMD_DIR)/rootfs_template/etc/passwd $(ELKS_DIR)/Makefile $(ELKSCMD_DIR)/tools/ver.pl $(ELKS_DIR)/Makefile > $(ELKSCMD_DIR)/rootfs_template/etc/issue @@ -155,37 +159,37 @@ mount_combfs: $(COMB_TARGET_FS) $(ELKSCMD_DIR)/rootfs_template/etc/issue $(MKFS) $(MKFS_OPTS) $(COMB_TARGET_FS) $(COMB_TARGET_BLKS) mount $(COMB_TARGET_FS) $(TARGET_MNT) $(LOOP) - (cd $(ELKSCMD_DIR)/rootfs_template ; tar cf - --exclude CVS *) | \ - (cd $(TARGET_MNT) ; tar xpvf -) - (cd $(TARGET_MNT)/dev ; ./MAKEDEV) + cd $(ELKSCMD_DIR)/rootfs_template; tar cf test.tar ./; cp ./test.tar $(TARGET_MNT) + cd $(TARGET_MNT); tar -xpf ./test.tar; rm -rf test.tar; cd $(ELKSCMD_DIR) + rm -rf ./rootfs_template/test.tar; ./MAKEDEV mount_full3fs: $(FULL3_TARGET_FS) $(ELKSCMD_DIR)/rootfs_template/etc/issue $(MKFS) $(MKFS_OPTS) $(FULL3_TARGET_FS) $(FULL3_TARGET_BLKS) mount $(FULL3_TARGET_FS) $(TARGET_MNT) $(LOOP) - (cd $(ELKSCMD_DIR)/rootfs_template ; tar cf - --exclude CVS *) | \ - (cd $(TARGET_MNT) ; tar xpvf -) - (cd $(TARGET_MNT)/dev ; ./MAKEDEV) + cd $(ELKSCMD_DIR)/rootfs_template; tar cf test.tar ./; cp ./test.tar $(TARGET_MNT) + cd $(TARGET_MNT); tar -xpf ./test.tar; rm -rf test.tar; cd $(ELKSCMD_DIR) + rm -rf ./rootfs_template/test.tar; ./MAKEDEV mount_full5fs: $(FULL5_TARGET_FS) $(ELKSCMD_DIR)/rootfs_template/etc/issue $(MKFS) $(MKFS_OPTS) $(FULL5_TARGET_FS) $(FULL5_TARGET_BLKS) mount $(FULL5_TARGET_FS) $(TARGET_MNT) $(LOOP) - (cd $(ELKSCMD_DIR)/rootfs_template ; tar cf - --exclude CVS *) | \ - (cd $(TARGET_MNT) ; tar xpvf -) - (cd $(TARGET_MNT)/dev ; ./MAKEDEV) + cd $(ELKSCMD_DIR)/rootfs_template; tar cf test.tar ./; cp ./test.tar $(TARGET_MNT) + cd $(TARGET_MNT); tar -xpf ./test.tar; rm -rf test.tar; cd $(ELKSCMD_DIR) + rm -rf ./rootfs_template/test.tar; ./MAKEDEV mount_rootfs: $(ROOT_TARGET_FS) $(ELKSCMD_DIR)/rootfs_template/etc/issue - $(MKFS) $(MKFS_OPTS) $(ROOT_TARGET_FS) $(ROOT_TARGET_BLKS) + $(MKFS) -i 200 $(MKFS_OPTS) $(ROOT_TARGET_FS) $(ROOT_TARGET_BLKS) mount $(ROOT_TARGET_FS) $(TARGET_MNT) $(LOOP) - (cd $(ELKSCMD_DIR)/rootfs_template ; tar cf - --exclude CVS *) | \ - (cd $(TARGET_MNT) ; tar xpvf -) - (cd $(TARGET_MNT)/dev ; ./MAKEDEV) + cd $(ELKSCMD_DIR)/rootfs_template; tar cf test.tar ./; cp ./test.tar $(TARGET_MNT) + cd $(TARGET_MNT); tar -xpf ./test.tar; rm -rf test.tar; cd $(ELKSCMD_DIR) + rm -rf ./rootfs_template/test.tar; ./MAKEDEV mount_rootnetfs: $(ROOT_NET_TARGET_FS) $(ELKSCMD_DIR)/rootfs_template/etc/issue $(MKFS) $(MKFS_OPTS) $(ROOT_NET_TARGET_FS) $(ROOT_NET_TARGET_BLKS) mount $(ROOT_NET_TARGET_FS) $(TARGET_MNT) $(LOOP) - (cd $(ELKSCMD_DIR)/rootfs_template ; tar cf - --exclude CVS *) | \ - (cd $(TARGET_MNT) ; tar xpvf -) - (cd $(TARGET_MNT)/dev ; ./MAKEDEV) + cd $(ELKSCMD_DIR)/rootfs_template; tar cf test.tar ./; cp ./test.tar $(TARGET_MNT) + cd $(TARGET_MNT); tar -xpf ./test.tar; rm -rf test.tar; cd $(ELKSCMD_DIR) + rm -rf ./rootfs_template/test.tar; ./MAKEDEV mount_sibofs: $(SIBO_TARGET_FS) $(ELKSCMD_DIR)/rootfs_template/etc/issue $(MKFS) $(MKFS_OPTS) $(SIBO_TARGET_FS) $(SIBO_TARGET_BLKS) @@ -210,35 +214,42 @@ comb: mount_combfs $(ELKS_DIR)/arch/i86/boot/Image $(FD_BSECT) $(KHELPER) + dd if=/dev/zero of=./flagfile bs=1k count=0 @for i in $(DIRS); do make -C $$i min_rfs ; done + mkdir $(TARGET_MNT)/boot cp $(ELKS_DIR)/arch/i86/boot/Image $(TARGET_MNT)/boot/linux cp $(KHELPER) $(TARGET_MNT)/boot/boot umount $(COMB_TARGET_FS) dd if=$(FD_BSECT) of=$(COMB_TARGET_FS) bs=512 count=2 conv=notrunc full3: mount_full3fs $(ELKS_DIR)/arch/i86/boot/Image $(FD_BSECT) $(KHELPER) + mkdir $(TARGET_MNT)/bin; cp -p -f $(ELKSNET_DIR)/ktcp/ktcp $(TARGET_MNT)/bin @for i in $(DIRS); do make -C $$i rfs ; done + mkdir $(TARGET_MNT)/boot cp $(ELKS_DIR)/arch/i86/boot/Image $(TARGET_MNT)/boot/linux cp $(KHELPER) $(TARGET_MNT)/boot/boot umount $(FULL3_TARGET_FS) dd if=$(FD_BSECT) of=$(FULL3_TARGET_FS) bs=512 count=2 conv=notrunc -full5: mount_full3fs $(ELKS_DIR)/arch/i86/boot/Image $(FD_BSECT) $(KHELPER) +full5: mount_full5fs $(ELKS_DIR)/arch/i86/boot/Image $(FD_BSECT) $(KHELPER) @for i in $(DIRS); do make -C $$i rfs ; done + mkdir $(TARGET_MNT)/boot cp $(ELKS_DIR)/arch/i86/boot/Image $(TARGET_MNT)/boot/linux cp $(KHELPER) $(TARGET_MNT)/boot/boot - umount $(FULL3_TARGET_FS) - dd if=$(FD_BSECT) of=$(FULL3_TARGET_FS) bs=512 count=2 conv=notrunc + umount $(FULL5_TARGET_FS) + dd if=$(FD_BSECT) of=$(FULL5_TARGET_FS) bs=512 count=2 conv=notrunc root: mount_rootfs + rm -rf ./flagfile @for i in $(DIRS); do make -C $$i min_rfs ; done umount $(ROOT_TARGET_FS) comb_net: mount_rootnetfs $(ELKS_DIR)/arch/i86/boot/Image $(FD_BSECT) $(KHELPER) cd $(ELKSNET_DIR)/ktcp ; \ make ; \ - cp -p -f ktcp $(TARGET_MNT)/bin + mkdir $(TARGET_MNT)/bin; cp -p -f ktcp $(TARGET_MNT)/bin @for i in $(DIRS); do make -C $$i net_rfs ; done + mkdir $(TARGET_MNT)/boot cp $(ELKS_DIR)/arch/i86/boot/Image $(TARGET_MNT)/boot/linux cp $(KHELPER) $(TARGET_MNT)/boot/boot umount $(ROOT_NET_TARGET_FS) diff -ruN ./elks-stuff/elkscmd/ash/Makefile ./elks/elkscmd/ash/Makefile --- ./elks-stuff/elkscmd/ash/Makefile 2004-05-28 16:02:01.000000000 -0400 +++ ./elks/elkscmd/ash/Makefile 2004-04-21 17:14:03.000000000 -0400 @@ -1,6 +1,6 @@ # Makefile for ash. # -# 19980209 Claudio Matsuoka +# 19980209 Claudio Matsuoka # Modified for ELKS and bcc BASEDIR=.. @@ -70,13 +70,13 @@ rfs: install -min_rfs: install +min_rfs: net_rfs: install smin_rfs: -install: ash +install: ash cp -p ash $(TARGET_MNT)/bin/ash rm -f $(TARGET_MNT)/bin/sh ln $(TARGET_MNT)/bin/ash $(TARGET_MNT)/bin/sh diff -ruN ./elks-stuff/elkscmd/ash/README.elks ./elks/elkscmd/ash/README.elks --- ./elks-stuff/elkscmd/ash/README.elks 2004-05-28 16:02:01.000000000 -0400 +++ ./elks/elkscmd/ash/README.elks 1999-02-16 13:22:59.000000000 -0500 @@ -13,7 +13,7 @@ Change log: -------------------------------------------------------------- -19980209 Claudio Matsuoka +19980209 Claudio Matsuoka (*) Initial port (quite trivial). Adjusted makefiles for bcc, defined sig_t as int, kicked out some @@ -59,7 +59,7 @@ Very important for some powerful but easy to use IPC. -------------------------------------------------------------- -19980218 Claudio Matsuoka +19980218 Claudio Matsuoka (*) Workaround for bcc miscompilation in bltin/expr.c. bcc complained about "invalid indirect to indirect" and "invalid label" diff -ruN ./elks-stuff/elkscmd/ash/bltin/expr.c ./elks/elkscmd/ash/bltin/expr.c --- ./elks-stuff/elkscmd/ash/bltin/expr.c 2004-05-28 16:02:01.000000000 -0400 +++ ./elks/elkscmd/ash/bltin/expr.c 1999-02-16 13:22:59.000000000 -0500 @@ -173,7 +173,7 @@ binary = opsp->op; for (;;) { /* - * 19980218 Claudio Matsuoka + * 19980218 Claudio Matsuoka * Oh my, this is a nasty one! Once again, bcc * complains about invalid indirect to indirect * (mov byte ptr -9[bp],#_op_argflag[bx]). @@ -280,7 +280,7 @@ */ /* - * 19980218 Claudio Matsuoka + * 19980218 Claudio Matsuoka * So, here's one more workaround for a bcc problem. This time bcc * complains about an illegal label when using `goto filetype'. */ diff -ruN ./elks-stuff/elkscmd/ash/bltin/regexp.c ./elks/elkscmd/ash/bltin/regexp.c --- ./elks-stuff/elkscmd/ash/bltin/regexp.c 2004-05-28 16:02:01.000000000 -0400 +++ ./elks/elkscmd/ash/bltin/regexp.c 1999-02-16 13:22:59.000000000 -0500 @@ -260,7 +260,7 @@ break; case RE_MATCHED: /* - * 19980218 Claudio Matsuoka + * 19980218 Claudio Matsuoka * Workaround for bcc compilation problem */ @@ -310,7 +310,7 @@ len = 1; if (*curpat == RE_MATCHED) { /* - * 19980218 Claudio Matsuoka + * 19980218 Claudio Matsuoka * Yet another workaround for a bcc problem. */ #if 0 diff -ruN ./elks-stuff/elkscmd/ash/expand.c ./elks/elkscmd/ash/expand.c --- ./elks-stuff/elkscmd/ash/expand.c 2004-05-28 16:02:01.000000000 -0400 +++ ./elks/elkscmd/ash/expand.c 1999-02-16 13:22:59.000000000 -0500 @@ -491,7 +491,7 @@ break; #if 0 /* - * 19980209 Claudio Matsuoka + * 19980209 Claudio Matsuoka * FIXME: Commented out due to problems with bcc (illegal * indirect to indirect: mov byte ptr -1[si],#_optchar[bx]). */ diff -ruN ./elks-stuff/elkscmd/ash/parser.c ./elks/elkscmd/ash/parser.c --- ./elks-stuff/elkscmd/ash/parser.c 2004-05-28 16:02:01.000000000 -0400 +++ ./elks/elkscmd/ash/parser.c 2002-01-13 19:19:04.000000000 -0500 @@ -692,7 +692,7 @@ */ /* - * 19980209 Claudio Matsuoka + * 19980209 Claudio Matsuoka * bcc fails with `return lasttoken = token', returning an invalid value. */ #define RETURN(token) { lasttoken = token; return token; } diff -ruN ./elks-stuff/elkscmd/bc/Makefile ./elks/elkscmd/bc/Makefile --- ./elks-stuff/elkscmd/bc/Makefile 2004-05-28 16:02:01.000000000 -0400 +++ ./elks/elkscmd/bc/Makefile 2004-04-21 17:43:20.000000000 -0400 @@ -90,7 +90,7 @@ install -c -o bin $? $@ rfs: all - cp -p bc $(TARGET_MNT)/bin + cp -p fbc $(TARGET_MNT)/bin min_rfs: all diff -ruN ./elks-stuff/elkscmd/bootblocks/minix.c ./elks/elkscmd/bootblocks/minix.c --- ./elks-stuff/elkscmd/bootblocks/minix.c 1969-12-31 19:00:00.000000000 -0500 +++ ./elks/elkscmd/bootblocks/minix.c 2004-04-18 15:00:49.000000000 -0400 @@ -0,0 +1,943 @@ +/* + * This bootblock loads the linux-8086 executable in the file 'boot' + * from the root directory of a minix filesystem. + * + * Copyright (C) 1990-1998 Robert de Bath, distributed under the GPL Version 2 + * Based on minix filesystem definitions. + * + * TODO: + * Alter nogood() to do a mov sp,... so the helper program can override + * the panic message. + */ + +#include +#include "minix.h" + +/* #define DOTS /* define to have dots printed */ +/* #define HARDDISK /* Define for hard disk version */ +/* #define TRY_FLOPPY /* To do trial reads to find floppy size */ + +/* #define MIN_SPACE */ + +#define zone_shift 0 /* for any < 32M (!= 0 not supported yet, if ever) */ +#define seg_at(k) ((k)*64) +#define seg_of(p) ((unsigned int)p >>4) +#define BOOTSEG (0x07c0) +#define LOADSEG (0x1000) +#define ORGADDR (0x0500) + +#ifdef HARDDISK +#define get_now() +#endif + +#ifdef zone_shift +#if zone_shift == 0 +#define load_zone load_block +#endif +#else +static short zone_shift; +#endif + +#asm +BOOTADDR = 0x7c00 + +.text +! Apparently on startup the only things we can assume are that we start at +! `start` (ABS addr $07C00) and the boot sector is in the segment. + +! So first set CS=DS=ES=SS=0 +! The we move this to $0500 and put the stack at the top of the first 64k. +! The directory 'file' is loaded $1500 and scanned there. +! The final executable will be loaded in the 2nd 64k chunk. +! +org ORGADDR ! The lowest available address. +start: +#ifndef MIN_SPACE + include sysboot.s + +org start ! The lowest available address, again. + j skip_vars + +org dos_sysid + .ascii "MINIXFS BOOT (C) 1990-1999, Robert de Bath" + + org codestart +#endif + +! A few variables we need to know the positions of for patching, so export +! them and as86_encaps will make some variables. Put them here at the start +! so they're in the same place for both Floppy and harddisk versions as they +! will be used by helper programs. + +export inode ! Inode to search +inode: +_inode: .word 1 ! ROOT_INODE + +#ifndef MIN_SPACE +export dinode ! Inode of directory file was found in. +dinode: +_dinode: .word 1 ! ROOT_INODE +#endif + +export bootfile ! File to boot, make this whatever you like, +bootfile: ! 'boot' is good, 'linux' too. +_bootfile: + .ascii "boot" + .byte 0,0,0,0,0,0,0,0,0,0 + +skip_vars: +#ifdef HARDDISK + mov bx,[si+8] ! Fetch the linear address of part from DS:SI + mov dh,[si+10] ! DL is drive number +#endif + + xor ax,ax ! All segments are zero, first 64k of mem. + mov ds,ax + mov es,ax + mov ss,ax + mov sp,ax + +#ifndef HARDDISK +loopy: + mov ax,#$0203 ! Read 3 sectors, code + superblock. + mov bx,#start ! Where this _should_ be + mov cx,#$0001 ! From sector 1 + xor dx,dx ! Of the floppy drive head zero + int $13 + jc loopy +#else + + mov cx,#$100 ! Move 256 words + mov si,#BOOTADDR ! From default BB + mov di,#ORGADDR ! To the correct address. + rep + movsw + + xchg dl,dh + mov [bootpart],bx ! Save the partition sector offset (and drive) + mov [bootpart+2],dx + + ! Read next 2 sectors of hd. + xor dx,dx + mov cx,#1 + mov bx,#ORGADDR+$200 + mov al,#2 + + call load_sect +#endif + + jmpi code,#0 + +#endasm + +/* /* */ +/****************************************************************************/ +/* Section cdef */ +/****************************************************************************/ + +/* The name of the file and inode to start */ +extern char bootfile[]; +extern inode_nr inode; +extern inode_nr dinode; + +/* For multi-sector reads */ +extern sect_nr lastsect; +extern sect_nr firstsect; +extern unsigned loadaddr; +extern unsigned loadcount; + +/* Keep track of zones to load */ +extern zone_nr * next_zone; +extern zone_nr * end_zone; +extern zone_nr indirect; + +/* Where to load zones */ +extern unsigned ldaddr; + +/* Directory reading */ +extern dir_struct * dirptr; +extern unsigned flength; +extern unsigned dir_32; + +#ifndef HARDDISK +/* The 'shape' of the floppy - intuit from superblock or try to read max */ +extern unsigned n_sectors; +#endif + +extern struct super_block b_super; +extern d_inode b_inode[INODES_PER_BLOCK]; +extern zone_nr b_zone[NR_INDIRECTS]; +extern dir_struct directory[]; + +/* /* */ +/****************************************************************************/ +/* Section adef */ +/****************************************************************************/ + +#asm +.text + +#ifdef HARDDISK +bootpart: .long 0 +#else +_loadcount: .word 0 +_firstsect: .word 0 +_loadaddr: .word 0 +_lastsect: .word 0 +#endif + + block start+0x400 +_b_super: .blkb 512 + +#ifndef MIN_SPACE +export helper +helper: .blkb 1024 +export helper_end +helper_end: +#endif + +_b_inode: .blkb 1024 +_b_zone: .blkb 1024 + +#ifdef MIN_SPACE +temp_space: .blkb 512 +#endif +probe_buf: +_directory: .blkb 32768 + endb + +#endasm + +/* /* */ +/****************************************************************************/ +/* Section nogood */ +/****************************************************************************/ +/* #if defined(HARDDISK) && !defined(SKIPBOOT) */ +#ifndef SKIPBOOT +static +nogood() +{ +#asm + mov si,#fail_fs +min_nextc: + lodsb + cmp al,#0 + jz min_eos + mov bx,#7 + mov ah,#$E ! Can't use $13 cause that's AT+ only! + int $10 + jmp min_nextc +min_eos: ! Wait for a key then reboot + xor ax,ax + int $16 + jmpi $0,$FFFF ! Reboot. + +fail_fs: + .byte 13,10 +#if defined(HARDDISK) + .asciz "Initial boot failed, press return to reboot\r\n" +#else + .asciz "Boot failed:" +#endif +#endasm +} + +#else + +static +nogood() +{ +/* This didn't work, chain the boot sector of the HD */ +#asm + push cs + pop es +hcode: + mov ax,#$0201 ! Read 1 sector + mov bx,#BOOTADDR ! In the boot area + mov cx,#$0001 ! From sector 1 + mov dx,#$0080 ! Of the hard drive head zero + int $13 + jc hcode ! Keep trying forever! + jmpi BOOTADDR,0 +#endasm +} +#endif + +/* /* */ +/****************************************************************************/ +/* Section hd_sect */ +/****************************************************************************/ +#ifdef HARDDISK +#asm +! +! Load AL sectors from linear sector DX:CX into location ES:BX +! Linear sector zero is at [bootpart] +! This loads one sector at a time, but that's OK cause even in the _very_ +! worst case it'll take no more that 5 seconds to load a 16 bit executable. +! +load_sect: + add cx,[bootpart] + adc dx,[bootpart+2] +moresect: + cmp al,#0 + jnz onesect + clc + ret + +! Load one sector... +onesect: + push ax ! Save lots + push di + push si + push cx ! Drive and sector. + push dx + + push es ! Load location + push bx + + push cx ! Drive and sector again. + push dx + + ! Fetch drive 'shape' + mov ah,#8 + mov dl,dh + int $13 ! DX:CX = drive specification + jc _nogood + + and cx,#$3F ! Get sector count => DI + mov di,cx + + xor dl,dl ! Get head count => SI + xchg dl,dh + inc dx + mov si,dx + + pop dx ! Get back drive and sector + pop ax + + mov bl,dh ! Save drive + xor dh,dh + + div di ! DX=sector, AX=track number + mov cx,dx + inc cl ! CL=sector number + + xor dx,dx + div si ! DX=head, AX=cylinder + + mov dh,dl + mov dl,bl ! DX for int 1302 + + xchg al,ah + ror al,#1 + ror al,#1 + or cx,ax ! CX for int 1302 + + pop bx ! ES:BX for int 1302 + pop es + + mov di,#5 ! Lots of retries for a hd +retry: + mov ax,#$0201 + int $13 + jnc got_hd_sect + + xor ax,ax ! Reset between each try. + int $13 + + dec di + jnz retry + br _nogood + +got_hd_sect: + pop dx + pop cx + pop si + pop di + pop ax + + dec al + add cx,#1 + adc dh,#0 + add bh,#2 + jmp moresect +#endasm +#endif + +/****************************************************************************/ +/* This is the end of the parts that MUST be in the first sector */ +/* From here down the functions can safely be in any order. */ +/****************************************************************************/ + +/* /* */ +/****************************************************************************/ +/* Section fd_block */ +/****************************************************************************/ +#ifndef HARDDISK +static +load_block(address, blkno) +unsigned address, blkno; +{ + register sect_nr sectno; + if(blkno == 0) { zero_block(address); return; } +#ifdef DOTS + prt_dot(); +#endif + + sectno = (sect_nr)blkno * 2; + load_sect(address, sectno); + load_sect(address+32, sectno+1); +} +#endif + +/****************************************************************************/ +/* Section fd_bpb */ +/****************************************************************************/ +#ifndef HARDDISK +#asm +_set_bpb: +#ifdef MIN_SPACE +bios_tabl=temp_space ! Temp space. +bios_disk=temp_space+4 ! +#else +bios_tabl=dosfs_stat ! Temp space. +bios_disk=dosfs_stat+4 ! +#endif + +#ifndef __CALLER_SAVES__ + push si + push di +#endif + + mov di,#bios_disk + mov bx,#0x78 +! 0:bx is parameter table address + + push ds + push di + + mov si,[bx] + mov ax,[bx+2] + mov [bios_tabl],si + mov [bios_tabl+2],ax + push ax + + pop ds +! ds:si is source + +! copy 12 bytes + mov cl,#6 + cld + rep + movsw + + pop di + pop ds + mov ax,[_n_sectors] + movb 4[di],al ! patch sector count + + mov [bx],di + mov 2[bx],es + +#ifndef __CALLER_SAVES__ + pop si + pop di +#endif + ret + +_unset_bpb: +! 0:0x78 is parameter table address + + mov ax,[bios_tabl] + mov [0x78],ax + mov ax,[bios_tabl+2] + mov [0x78+2],ax + ret + +#endasm +#endif + +/****************************************************************************/ +/* Section fd_get_now */ +/****************************************************************************/ +#ifndef HARDDISK +static +get_now() +{ +#asm + mov si,#5 +retry_get: + xor dx,dx + mov cx,[_firstsect] + shr ch,#1 + adc dh,#0 + mov es,[_loadaddr] + xor bx,bx + mov ax,[_loadcount] + test ax,ax + jz no_load + mov ah,#2 + int $13 ! Try fetch + jnc no_load + xor ax,ax ! Bad, retry. + int $13 + dec si + jnz retry_get + br _nogood +no_load: + xor ax,ax + mov [_loadcount],ax +#endasm +} +#endif + +/****************************************************************************/ +/* Section fd_probe */ +/****************************************************************************/ +#ifndef HARDDISK +#ifdef TRY_FLOPPY +#asm +!-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- +! +! These are the number of sectors per track that will be scanned for. +! For 3.5 inch floppies 36 is 2.88 Mb, 18 is 1.44Mb, 21 is 1.68Mb on +! a 1.44Mb floppy drive. 15 and 9 are for 5.25 inch floppies. + +disksizes: .byte 36,21,18,15,9 + +! It seems that there is no BIOS call to get the number of sectors. Guess +! 36 sectors if sector 36 can be read, 18 sectors if sector 18 can be read, +! 15 if sector 15 can be read. Otherwise guess 9. + +_probe_sectors: + mov si,#disksizes ! table of sizes to try + +probe_loop: + lodsb + cbw ! extend to word + mov _n_sectors, ax + cmp al,#9 + je got_sectors ! if all else fails, try 9 + xchg ax, cx ! cx = track and sector + xor dx, dx ! drive 0, head 0 + mov bx,#probe_buf ! address after setup (es = cs) + mov ax,#0x0201 ! service 2, 1 sector + int 0x13 + jc probe_loop ! try next value +got_sectors: + + ret +#endasm +#else +probe_sectors() +{ + /* Guess the number of sectors based on the size of the file system */ + if( (n_sectors = b_super.s_nzones / 40) > 11 ) n_sectors /= 2; +} +#endif +#endif + +/****************************************************************************/ +/* Section fd_sect */ +/****************************************************************************/ +#ifndef HARDDISK +static +load_sect(address, sectno) +unsigned address; +sect_nr sectno; +{ + register sect_nr nsect; + + nsect = sectno%n_sectors +1; + sectno /= n_sectors; + nsect |= (sectno<<8); + + if( loadcount ) + { + lastsect++; + if( ( address & 4095 ) && nsect == lastsect ) + { + loadcount++; + return; + } + get_now(); + } + + lastsect = firstsect = nsect; + loadaddr = address; + loadcount = 1; +} +#endif + +/****************************************************************************/ +/* Section fd_zeroblk */ +/****************************************************************************/ +#ifndef HARDDISK +static +zero_block(address) +{ +#asm +#if __FIRST_ARG_IN_AX__ + mov es,ax +#else + mov bx,sp + mov es,[bx+2] +#endif + push di + mov cx,#512 + xor ax,ax + mov di,ax + rep + stosw + pop di +#endasm +} +#endif + +/****************************************************************************/ +/* Section hd_block */ +/****************************************************************************/ +#ifdef HARDDISK +/*----------------------------------*/ +/* Hard disk block driver */ +/*----------------------------------*/ + +#asm +_load_block: + push bp + mov bp,sp +#if __FIRST_ARG_IN_AX__ + ! Fetch load location + mov es,ax + + ! Test for block zero + mov ax,4[bp] +#else + ! Fetch load location + mov ax,[bp+4] + mov es,ax + + ! Test for block zero + mov ax,6[bp] +#endif + test ax,ax + jne real_block + + ! Iff block zero, zap memory + push di + mov cx,#512 + xor ax,ax + mov di,ax + rep + stosw + pop di + +func_exit: + mov sp,bp + pop bp + ret + +real_block: +#ifdef DOTS + push ax + call _prt_dot + pop ax +#endif + +! Load a real block. + mov cx,ax + xor dx,dx + shl cx,#1 + rcl dx,#1 + + xor bx,bx + mov al,#2 + call load_sect + + j func_exit +#endasm +#endif + +/****************************************************************************/ +/* Section main */ +/****************************************************************************/ +#asm +code: + call _loadprog + call _runprog + br _nogood + +#endasm + +/****************************************************************************/ +/* Section prt_dots */ +/****************************************************************************/ +#ifdef DOTS +#asm +_prt_crlf: + mov al,#13 + call outch + mov al,#10 + j outch +_prt_dot: + mov al,#'. +outch: + mov ah,#$0E + mov bx,#7 + int $10 + ret +#endasm +#endif + +/****************************************************************************/ +/* Section end_1 */ +/****************************************************************************/ +#if defined(HARDDISK) || !defined(MIN_SPACE) +#asm +end_of_part1: +#ifdef HARDDISK + if *>start+0x1FE ! Leave space for magic +#else + if *>start+0x200 +#endif + fail! Part 1 too large! + endif + .blkb 0x200+start-* +#endasm +#endif + +/****************************************************************************/ +/* Section prog_load */ +/****************************************************************************/ + +loadprog() +{ +#ifdef DOTS + prt_dot(); +#endif + if( b_super.s_magic == SUPER_MAGIC2 ) + dir_32 = 1; + else if( b_super.s_magic == SUPER_MAGIC ) + dir_32 = 0; + else + nogood(); + +#ifdef zone_shift + if( zone_shift != b_super.s_log_zone_size) nogood(); +#else + zone_shift = b_super.s_log_zone_size; +#endif + +#ifndef HARDDISK + probe_sectors(); + + /* if( (n_sectors = b_super.s_nzones / 40) > 11 ) n_sectors /= 2; */ + + set_bpb(); +#endif + +try_again:; + inode--; + load_block(seg_of(b_inode), inode/INODES_PER_BLOCK + + b_super.s_imap_blocks + + b_super.s_zmap_blocks + + 2); + get_now(); + + ldaddr = LOADSEG; /* Load at 64k mark */ + + { + register d_inode * i_ptr; + i_ptr = b_inode + inode%INODES_PER_BLOCK; + next_zone = i_ptr->i_zone; + flength = i_ptr->i_size; + if( (i_ptr->i_mode & I_TYPE) == I_DIRECTORY ) + { + ldaddr = seg_of(directory); +#ifndef MIN_SPACE + dinode = inode+1; /* Remember current directory */ +#endif + inode = 0; /* Mark - we've no _file_ inode yet */ + } + } + + end_zone = next_zone+NR_DZONE_NUM; + load_zone(seg_of(b_zone), (indirect = next_zone[NR_DZONE_NUM])); + get_now(); + + for(;;) + { + if( next_zone >= end_zone ) + { + if( indirect != 0 ) + { + next_zone = b_zone; + end_zone = next_zone + NR_INDIRECTS; + indirect = 0; + continue; + } + break; + } + load_zone(ldaddr, *next_zone); + next_zone++; + ldaddr += (seg_at(1) << zone_shift); + } + get_now(); + +#ifdef DOTS + prt_crlf(); +#endif + if(!inode) + { + dirptr = directory; + while(flength > 0) + { +register char * s = bootfile; +register char * p = dirptr->d_name; + + if( dirptr->d_inum ) + { + for(;;) + { + if( *s == '\0') + { + if(*p == '\0') + { + inode = dirptr->d_inum; + goto try_again; + } + break; + } + if( *s++ != *p++ ) break; + } + } + flength -= 16; + dirptr++; + if( dir_32 ) + { + flength -= 16; + dirptr++; + } + } + nogood(); + } +#ifndef HARDDISK + unset_bpb(); +#endif +} + +/****************************************************************************/ +/* Section prog_run */ +/****************************************************************************/ +static +runprog() +{ +/* It all worked, run the loaded executable */ +#asm +#ifdef HARDDISK + mov dx,[bootpart+2] + xchg dh,dl ! DX => hard drive + push [bootpart] ! CX => partition offset + xor si,si +#else + xor dx,dx ! DX=0 => floppy drive + push dx ! CX=0 => partition offset = 0 + mov si,[_n_sectors] ! Save for monitor.out +#endif + + mov bx,#LOADSEG + mov ds,bx ! DS = loadaddress + xor di,di ! Zero + mov ax,[di] + cmp ax,#0x0301 ! Right magic ? + jnz binfile ! Yuk ... assume .SYS + inc bx + inc bx ! bx = initial CS + mov ax,[di+2] + and ax,#$20 ! Is it split I/D ? + jz impure ! No ... + mov cl,#4 + mov ax,[di+8] + shr ax,cl +impure: + pop cx + add ax,bx + mov ss,ax + mov sp,[di+24] ! Chmem value + mov ds,ax +binfile: + + push bx + push di ! jmpi 0,#LOADSEG+2 + retf +#endasm +} + +/****************************************************************************/ +/* Section sys_libs */ +/****************************************************************************/ +#asm +! These functions are pulled from the C library. +libstuff: +imodu: + xor dx,dx + div bx + mov ax,dx ! instruction queue full so xchg slower + ret +idiv_u: + xor dx,dx + div bx + ret +#ifndef zone_shift +isl: +islu: + mov cl,bl + shl ax,cl + ret +#endif +libend: +#endasm + +/****************************************************************************/ +/* Section sys_vars */ +/****************************************************************************/ +#asm +#ifdef MIN_SPACE + block temp_space+64 +#endif +vars: +#ifndef HARDDISK +_n_sectors: .blkw 1 +#endif +_next_zone: .blkw 1 +_end_zone: .blkw 1 +_indirect: .blkw 1 +_ldaddr: .blkw 1 +_dirptr: .blkw 1 +_flength: .blkw 1 +_dir_32: .blkw 1 +varend: +#ifdef MIN_SPACE + endb +#endif +#endasm + +/****************************************************************************/ +/* Section end_2 */ +/****************************************************************************/ +#asm +end_of_prog: + if *>start+0x400 + fail! Part 2 too large! + endif + + if end_of_prog #include "../httpd/mylib.h" -#define assert(a) +/* #define assert(a)- Huh? */ #else #include #include #include #endif -#include +/* #include And where is this file supposed to come from? */ #include "ttn.h" diff -ruN ./elks-stuff/elkscmd/levee/editcor.c ./elks/elkscmd/levee/editcor.c --- ./elks-stuff/elkscmd/levee/editcor.c 2004-05-28 16:02:01.000000000 -0400 +++ ./elks/elkscmd/levee/editcor.c 2004-04-18 19:03:09.000000000 -0400 @@ -444,14 +444,16 @@ strcat(gcb,"c$"); break; case 'Y': /* yank ... */ strcat(gcb,"y$"); break; +/* case '': /* scroll up one page */ - strcpy(gcb,"22"); break; +/* strcpy(gcb,"22"); break; case '': /* ... down one page */ - strcpy(gcb,"22"); break; +/* strcpy(gcb,"22"); break; case '': /* scroll up one line */ - strcpy(gcb,"1"); break; +/* strcpy(gcb,"1"); break; case '': /* ... down one line */ - strcpy(gcb,"1"); break; +/* strcpy(gcb,"1"); break; +*/ default: error(); return 0; diff -ruN ./elks-stuff/elkscmd/levee/insert.c ./elks/elkscmd/levee/insert.c --- ./elks-stuff/elkscmd/levee/insert.c 2004-05-28 16:02:01.000000000 -0400 +++ ./elks/elkscmd/levee/insert.c 2004-04-18 19:06:38.000000000 -0400 @@ -85,8 +85,8 @@ Dflag = (cp==0 || core[cp-1]==EOL); do { if (Dflag) - while ((cmd=peekc()) == '' || cmd == '') { - if (readchar() == '') + while ((cmd=peekc()) == 'b' /* This needs fixing*/ || cmd == 'b'/* This needs fixing */) { + if (readchar() == 'h'/*This need sfixing*/) currDLE = min(COLS,currDLE+shiftwidth); else currDLE = max(0,currDLE-shiftwidth); diff -ruN ./elks-stuff/elkscmd/levee/misc.c ./elks/elkscmd/levee/misc.c --- ./elks-stuff/elkscmd/levee/misc.c 2004-05-28 16:02:01.000000000 -0400 +++ ./elks/elkscmd/levee/misc.c 2004-04-18 19:09:13.000000000 -0400 @@ -392,10 +392,10 @@ *size = (ip-start); return (c==ESC) ? ESC : EOL; } - else if ((!beautify) || c == TAB || c == '' + else if ((!beautify) || c == TAB || c == 'h' /*This needs fixing*/ || (c >= ' ' && c <= '~')) { if (ip < endd) { - if (c == '') + if (c == 'f'/*This needs fixing*/) c = readchar(); switch (cclass(c)) { case 0 : ixp++; break; diff -ruN ./elks-stuff/elkscmd/rootfs_template/dev/MAKEDEV ./elks/elkscmd/rootfs_template/dev/MAKEDEV --- ./elks-stuff/elkscmd/rootfs_template/dev/MAKEDEV 2004-05-28 16:02:01.000000000 -0400 +++ ./elks/elkscmd/rootfs_template/dev/MAKEDEV 1969-12-31 19:00:00.000000000 -0500 @@ -1,264 +0,0 @@ -#!/bin/sh - -# Devices are generated by this script in the same order that they are listed -# in the Documentation/devices.txt file in the Linux 2.4.18 and5.21 kernel -# sources. This includes devices that are not currently relevant to ELKS, to -# encourage the use of common node numbers when these devices are eventually -# implemented. -# -# Where different node numbers are currently used by ELKS, the current ELKS -# node numbers are generated by lines labelled "Currently" and the relevant -# Linux node numbers are generated by lines labelled "Ought to be". -# -# Refer to the MAKESET command, also in this directory, for usage details. - -LINK=/bin/ln -MKDEV=/bin/mknod -MKSET=/dev/MAKESET - -############################################################################## -# Ensure required auxilliary script is present. - -if ! /bin/test -f "$MKSET" -then - echo ERROR: \"$MKSET\" script missing, unable to continue. - exit 1 -fi - -############################################################################## -# Create memory devices. - - $MKDEV mem c 1 1 - $MKDEV kmem c 1 2 - $MKDEV null c 1 3 -# $MKDEV port c 1 4 - $MKDEV zero c 1 5 -# $MKDEV core c 1 6 - $MKDEV full c 1 7 -# $MKDEV random c 1 8 -# $MKDEV urandom c 1 9 -# $MKDEV aio c 1 10 - -############################################################################## -# RAM disks. - - $MKSET 0 7 $MKDEV ram b 1 - - $LINK ram1 ramdisk - -############################################################################## -# Pseudo-TTY master devices. These are not yet supported by the ELKS kernel. - -# $MKSET 0 15 $MKDEV ptyp x 2 -# $MKSET 16 15 $MKDEV ptyq x 2 -# $MKSET 32 15 $MKDEV ptyr x 2 -# $MKSET 48 15 $MKDEV ptys x 2 -# $MKSET 64 15 $MKDEV ptyt x 2 -# $MKSET 80 15 $MKDEV ptyu x 2 -# $MKSET 96 15 $MKDEV ptyv x 2 -# $MKSET 112 15 $MKDEV ptyw x 2 -# $MKSET 128 15 $MKDEV ptyx x 2 -# $MKSET 144 15 $MKDEV ptyy x 2 -# $MKSET 160 15 $MKDEV ptyz x 2 -# $MKSET 176 15 $MKDEV ptya x 2 -# $MKSET 192 15 $MKDEV ptyb x 2 -# $MKSET 208 15 $MKDEV ptyc x 2 -# $MKSET 224 15 $MKDEV ptyd x 2 -# $MKSET 240 15 $MKDEV ptye x 2 - -############################################################################## -# Floppy diskettes. Only the auto-detect nodes are listed. - - $MKDEV fd0 b 3 128 # Currently. - $MKDEV fd1 b 3 192 # Currently. - -# $MKSET 0 3 $MKDEV fd b 2 # Ought to be. - -############################################################################## -# Pseudo-TTY master devices. These are not yet supported by the ELKS kernel. - -# $MKSET 0 15 $MKDEV ttyp x 3 -# $MKSET 16 15 $MKDEV ttyq x 3 -# $MKSET 32 15 $MKDEV ttyr x 3 -# $MKSET 48 15 $MKDEV ttys x 3 -# $MKSET 64 15 $MKDEV ttyt x 3 -# $MKSET 80 15 $MKDEV ttyu x 3 -# $MKSET 96 15 $MKDEV ttyv x 3 -# $MKSET 112 15 $MKDEV ttyw x 3 -# $MKSET 128 15 $MKDEV ttyx x 3 -# $MKSET 144 15 $MKDEV ttyy x 3 -# $MKSET 160 15 $MKDEV ttyz x 3 -# $MKSET 176 15 $MKDEV ttya x 3 -# $MKSET 192 15 $MKDEV ttyb x 3 -# $MKSET 208 15 $MKDEV ttyc x 3 -# $MKSET 224 15 $MKDEV ttyd x 3 -# $MKSET 240 15 $MKDEV ttye x 3 - -############################################################################## -# Direct IDE disks, Primary channel. - - $MKSET 0 63 $MKDEV hda d 5 # Currently. - $MKSET 64 63 $MKDEV hdb d 5 # Currently. - -# $MKSET 0 63 $MKDEV hda d 3 # Ought to be. -# $MKSET 64 63 $MKDEV hdb d 3 # Ought to be. - -############################################################################## -# Virtual consoles. Note that tty4 through tty7 can't be enabled at this -# time because of the possible conflict with ttyS0 through ttyS3 which -# used to use the node numbers these now use. However, it is expected that -# this restriction can be removed in the near future. - - $MKSET 0 3 $MKDEV tty c 4 # Currently -# $MKSET 0 15 $MKDEV tty c 4 # Soon to be - -# Serial ports, as detected by the ROM BIOS. - - $MKSET 64 3 $MKDEV ttyS c 4 - -############################################################################## -# Alternate TTY devices. These are not yet supported. - -# $MKDEV tty c 5 0 -# $MKDEV console c 5 1 -# $MKDEV ptmx c 5 2 - -############################################################################## -# Parallel devices, as detected by the ROM BIOS. - - $MKSET 0 3 $MKDEV lp c 6 - -############################################################################## -# Loopback devices. These are not yet supported. - -# $MKSET 0 15 $MKDEV loop c 7 - -############################################################################## -# SCSI disks. These are not yet supported. - -# $MKSET 0 15 $MKDEV sda d 8 -# $MKSET 16 15 $MKDEV sdb d 8 -# $MKSET 32 15 $MKDEV sdc d 8 -# $MKSET 48 15 $MKDEV sdd d 8 -# $MKSET 64 15 $MKDEV sde d 8 -# $MKSET 80 15 $MKDEV sdf d 8 -# $MKSET 96 15 $MKDEV sdg d 8 -# $MKSET 112 15 $MKDEV sdh d 8 -# $MKSET 128 15 $MKDEV sdi d 8 -# $MKSET 144 15 $MKDEV sdj d 8 -# $MKSET 160 15 $MKDEV sdk d 8 -# $MKSET 176 15 $MKDEV sdl d 8 -# $MKSET 192 15 $MKDEV sdm d 8 -# $MKSET 208 15 $MKDEV sdn d 8 -# $MKSET 224 15 $MKDEV sdo d 8 -# $MKSET 240 15 $MKDEV sdp d 8 - -############################################################################## -# SCSI tapes. These are not yet supported. - -# $MKSET 0 31 $MKDEV st c 9 -# $MKSET 32 31 $MKDEV st c 9 l -# $MKSET 64 31 $MKDEV st c 9 m -# $MKSET 96 31 $MKDEV st c 9 a -# $MKSET 128 31 $MKDEV nst c 9 -# $MKSET 160 31 $MKDEV nst c 9 l -# $MKSET 192 31 $MKDEV nst c 9 m -# $MKSET 224 31 $MKDEV nst c 9 a - -############################################################################## -# Metadisk (RAID) devices. These are not yet supported. - -# $MKSET 0 15 $MKDEV md b 9 - -############################################################################## -# SCSI CD-ROM devices. These are not yet supported. - -# $MKSET 0 15 $MKDEV scd b 11 - -############################################################################## -# MSCDEX CD-ROM devices. These are not yet supported. - -# $MKSET 0 15 $MKDEV doscd b 12 - -############################################################################## -# 8-bit MFM/RLL controllers. These are not yet supported. - -# $MKSET 0 63 $MKDEV xda b 13 -# $MKSET 64 63 $MKDEV xdb b 13 - -############################################################################## -# BIOS hard disks. - - $MKSET 0 63 $MKDEV bda d 3 # Currently - $MKSET 64 63 $MKDEV bdb d 3 # Currently - $MKSET 128 63 $MKDEV bdc d 3 # Currently - $MKSET 192 63 $MKDEV bdd d 3 # Currently - -# $MKSET 0 63 $MKDEV bda d 14 # Ought to be -# $MKSET 64 63 $MKDEV bdb d 14 # Ought to be -# $MKSET 128 63 $MKDEV bdc d 14 # Ought to be -# $MKSET 192 63 $MKDEV bdd d 14 # Ought to be - -############################################################################## -# Joysticks. These are not yet supported. - -# $MKSET 0 15 $MKDEV js c 15 -# $MKSET 128 15 $MKDEV djs c 15 - -############################################################################## -# Generic SCSI devics. These are not yet supported. - -# $MKSET 0 15 $MKDEV sg c 21 - -############################################################################## -# Direct IDE disks, Secondary channel. These are not yet supported. - -# $MKSET 0 63 $MKDEV hdc d 22 -# $MKSET 64 63 $MKDEV hdd d 22 - -############################################################################## -# Direct IDE disks, Tertiary channel. These are not yet supported. - -# $MKSET 0 63 $MKDEV hde d 33 -# $MKSET 64 63 $MKDEV hdf d 33 - -############################################################################## -# Z80-SIO devices. These are not yet supported. - -# $MKSET 0 7 $MKDEV scc c 34 - -############################################################################## -# Direct IDE disks, Quaternary channel. These are not yet supported. - -# $MKSET 0 63 $MKDEV hde d 34 -# $MKSET 64 63 $MKDEV hdf d 34 - -############################################################################## -# Direct IDE disks, Quinternary channel. These are not yet supported. - -# $MKSET 0 63 $MKDEV hdg d 56 -# $MKSET 64 63 $MKDEV hdh d 56 - -############################################################################## -# Direct IDE disks, Quaternary channel. These are not yet supported. - -# $MKSET 0 63 $MKDEV hdi d 57 -# $MKSET 64 63 $MKDEV hdj d 57 - -############################################################################## -# SCSI Media Changer. These are not yet supported. - -# $MKSET 0 15 $MKDEV sch c 86 - -############################################################################## -# I2C bus drivers. These are not yet supported. - -# $MKSET 0 7 $MKDEV i2c c 89 - -############################################################################## -# Conrad Electronic Parallel Port Radio Clocks. These are not yet supported. - -# $MKSET 0 1 $MKDEV pcfclock c 181 - -############################################################################## -# EOF. diff -ruN ./elks-stuff/elkscmd/rootfs_template/dev/MAKESET ./elks/elkscmd/rootfs_template/dev/MAKESET --- ./elks-stuff/elkscmd/rootfs_template/dev/MAKESET 2004-05-28 16:02:01.000000000 -0400 +++ ./elks/elkscmd/rootfs_template/dev/MAKESET 1969-12-31 19:00:00.000000000 -0500 @@ -1,48 +0,0 @@ -#!/bin/sh - -if [ $# -lt 6 -o $# -gt 7 ]; then - echo - echo "Usage: makeset min count cmd prefix type major [suffix]" - echo - echo "where min is the minor of the first node to make," - echo " count is the number of the last node to make," - echo " cmd is the command to make a node," - echo " prefix is the node name prefix," - echo " type is the type selector for the node," - echo " major is the major number for the node," - echo " and suffix is a suffix to append to the node names." - echo - echo "The following type selectors are supported:" - echo - echo " b Block device, all nodes have numeric suffix." - echo " d Block device, first node is raw device without numeric suffix." - echo - echo " c Character device with decimal numeric suffix." - echo " x Character device with hexadecimal numeric suffix." - echo -else - N=0 - while [ $N -le $2 ]; do - P=`expr $N + $1` - case ".$5" in - .b) eval $3 $4$N$7 $5 $6 $P - ;; - .c) eval $3 $4$N$7 $5 $6 $P - ;; - .d) if [ $N -gt 0 ]; then - eval $3 $4$N$7 $5 $6 $P - else - eval $3 $4$7 $5 $6 $P - fi - ;; - .x) if [ $N -gt 9 ]; then - R=`echo 123456789abcdef | cut -b $N` - eval $3 $4$R$7 c $6 $P - else - eval $3 $4$N$7 c $6 $P - fi - ;; - esac - N=`expr $N + 1` - done -fi diff -ruN ./elks-stuff/elkscmd/rootfs_template/etc/rc.d/rc.sysinit ./elks/elkscmd/rootfs_template/etc/rc.d/rc.sysinit --- ./elks-stuff/elkscmd/rootfs_template/etc/rc.d/rc.sysinit 2004-05-28 16:02:01.000000000 -0400 +++ ./elks/elkscmd/rootfs_template/etc/rc.d/rc.sysinit 2002-07-15 01:39:30.000000000 -0400 @@ -18,19 +18,20 @@ stty $ttybaud < $sliptty echo -n ' stty' ktcp $localip $sliptty & - echo ' ktcp' + echo -n ' ktcp' + + echo '' echo -n "Starting network daemons: " for daemon in ftpd httpd do if test -f /bin/$daemon then - echo -n " $daemon" $daemon & + echo -n " $daemon" fi done - echo . - + echo '' fi # Binary files ./elks-stuff/elkscmd/rootfs_template.tar and ./elks/elkscmd/rootfs_template.tar differ Binary files ./elks-stuff/elkscmd/rootfs_template.tar.gz and ./elks/elkscmd/rootfs_template.tar.gz differ diff -ruN ./elks-stuff/elkscmd/sys_utils/Makefile ./elks/elkscmd/sys_utils/Makefile --- ./elks-stuff/elkscmd/sys_utils/Makefile 2004-05-28 16:02:01.000000000 -0400 +++ ./elks/elkscmd/sys_utils/Makefile 2004-04-21 17:38:24.000000000 -0400 @@ -6,7 +6,7 @@ # # Include standard packaging commands. -MIN_BIN = getty init kill login mount passwd ps swapon meminfo reboot umount +MIN_BIN = getty init kill login mount passwd ps meminfo reboot umount MIN_LIB = MIN_SBIN = clock exitemu getty init reboot MIN_USR_BIN = meminfo passwd @@ -36,26 +36,29 @@ ############################################################################### PRGS = getty kill man mount reboot umount clock exitemu who ps \ - init login passwd knl + init login passwd knl meminfo -NETPRGS=init getty login kill mount umount passwd reboot ps swapon meminfo who +NETPRGS=init getty login kill mount umount passwd reboot ps meminfo who -MIN_PRGS=init getty login kill mount reboot umount clock exitemu ps swapon meminfo +MIN_PRGS=init getty login kill mount reboot umount clock exitemu ps meminfo SMIN_PRGS = init mount umount all: $(PRGS) rfs: all + mkdir $(TARGET_MNT)/bin cp -p $(PRGS) $(TARGET_MNT)/bin net_rfs: all cp -p $(NETPRGS) $(TARGET_MNT)/bin min_rfs: all + mkdir $(TARGET_MNT)/bin cp -p $(MIN_PRGS) $(TARGET_MNT)/bin smin_rfs: all + mkdir $(TARGET_MNT)/bin cp -p $(SMIN_PRGS) $(TARGET_MNT)/bin clean: @@ -80,9 +83,6 @@ meminfo: meminfo.c $(CC) $(CFLAGS) $(LDFLAGS) meminfo.c -o meminfo -H 100 -swapon: swapon.c - $(CC) $(CFLAGS) $(LDFLAGS) swapon.c -o swapon -H 100 - new_init: init.c utent.o $(CC) $(CFLAGS) $(LDFLAGS) init.c utent.o -o init diff -ruN ./elks-stuff/elkscmd/sys_utils/qsort.c ./elks/elkscmd/sys_utils/qsort.c --- ./elks-stuff/elkscmd/sys_utils/qsort.c 2004-05-28 16:02:01.000000000 -0400 +++ ./elks/elkscmd/sys_utils/qsort.c 1999-02-16 13:23:00.000000000 -0500 @@ -9,7 +9,7 @@ */ /* - * Sun Feb 8 21:02:15 EST 1998 claudio@conectiva.com (Claudio Matsuoka) + * Sun Feb 8 21:02:15 EST 1998 claudio@pos.inf.ufpr.br (Claudio Matsuoka) * Changed sort direction */ diff -ruN ./elks-stuff/elkscmd/sysboot.s ./elks/elkscmd/sysboot.s --- ./elks-stuff/elkscmd/sysboot.s 1969-12-31 19:00:00.000000000 -0500 +++ ./elks/elkscmd/sysboot.s 2004-04-19 21:56:00.000000000 -0400 @@ -0,0 +1,82 @@ + +! The master boot sector will have setup a stack, +! this is normally at 0:7c00 down. +! DS, SS, CS and ES will all have value 0 so the execution address is 0:7c00 +! On entry the register SI will be pointer to the partition entry that +! this sector was loaded from, DL is the drive. + +! Also if it's a standard Master boot DH will be the head, CX will be the +! sector and cylinder, BX=7C00, AX=1, DI=7DFE, BP=SI. There's a reasonable +! chance that this isn't true though. + +! The Master boot itself will have been loaded and run at $07c00 +! The BIOS must have setup a stack because interrupts are enabled +! Little else can be assumed because DOS doesn`t assume anything either + +sysboot_start: +j codestart +nop ! DOS appears to _require_ this to identify an MSDOS disk!! + +.blkb sysboot_start+3-* +public dosfs_stat +dos_sysid: .ascii "LINUX" ! System ID + .byte 0,0,0 +dosfs_stat: +dos_sect: .blkw 1 ! Sector size +dos_clust: .blkb 1 ! Cluster size +dos_resv: .blkw 1 ! Res-sector +dos_nfat: .blkb 1 ! FAT count +dos_nroot: .blkw 1 ! Root dir entries +dos_maxsect: .blkw 1 ! Sector count (=0 if large FS) +dos_media: .blkb 1 ! Media code +dos_fatlen: .blkw 1 ! FAT length +dos_spt: .blkw 1 ! Sect/Track +dos_heads: .blkw 1 ! Heads +dos_hidden: .blkw 2 ! Hidden sectors + +! Here down is DOS 4+ and probably not needed for floppy boots. + +dos4_maxsect: .blkw 2 ! Large FS sector count +dos4_phy_drive: .blkb 1 ! Phys drive +.blkb 1 ! Reserved +.blkb 1 ! DOS 4 + +floppy_temp: +dos4_serial: .blkw 2 ! Serial number +dos4_label: .blkb 11 ! Disk Label (DOS 4+) +dos4_fattype: .blkb 8 ! FAT type + +! +! This is where the code will be overlaid, the default is a hang +.blkb sysboot_start+0x3E-* +public codestart +codestart: + j codestart + +! Partition table +public bootblock_magic + +.blkb sysboot_start+0x1BE-* +partition_1: +.blkb 8 ! IN,SH,SS,ST,OS,EH,ES,ET +.blkw 2 ! Linear position (0 based) +.blkw 2 ! Linear length +.blkb sysboot_start+0x1CE-* +partition_2: +.blkb 8 ! IN,SH,SS,ST,OS,EH,ES,ET +.blkw 2 ! Linear position (0 based) +.blkw 2 ! Linear length +.blkb sysboot_start+0x1DE-* +partition_3: +.blkb 8 ! IN,SH,SS,ST,OS,EH,ES,ET +.blkw 2 ! Linear position (0 based) +.blkw 2 ! Linear length +.blkb sysboot_start+0x1EE-* +partition_4: +.blkb 8 ! IN,SH,SS,ST,OS,EH,ES,ET +.blkw 2 ! Linear position (0 based) +.blkw 2 ! Linear length + +.blkb sysboot_start+0x1FE-* +bootblock_magic: +.word 0xAA55 diff -ruN ./elks-stuff/elksnet/ktcp/vjhc.c ./elks/elksnet/ktcp/vjhc.c --- ./elks-stuff/elksnet/ktcp/vjhc.c 2004-05-28 16:01:54.000000000 -0400 +++ ./elks/elksnet/ktcp/vjhc.c 2004-04-20 22:08:26.000000000 -0400 @@ -113,10 +113,7 @@ } } -DEFUN -(int ip_vjhc_compress, (pkt), - pkt_ut *pkt -) +int ip_vjhc_compress(pkt_ut *pkt) { iphdr_t *ip_hdr, *oip_hdr; tcphdr_t *tcp_hdr, *otcp_hdr; @@ -127,107 +124,112 @@ __u32 delta, deltaA, deltaS; __u16 cksum; - if (pkt->p_size < IP_MIN_HDR_SIZE + TCP_MIN_HDR_SIZE) + if(pkt->p_size < IP_MIN_HDR_SIZE + TCP_MIN_HDR_SIZE) { #ifdef DEBUG - if (opt_d) fprintf(stderr,"ip_vjhc_compress: packet too small %d\n", - pkt->p_size); + if(opt_d) + { + fprintf(stderr,"ip_vjhc_compress: packet too small %d\n", pkt->p_size); + } #endif return PPP_TYPE_IP; } - ip_hdr= (iphdr_t *)(pkt->p_data + pkt->p_offset); - if ((ntohs(ip_hdr->frag_off) & - (IH_MORE_FRAGS | IH_FRAGOFF_MASK)) != 0) + ip_hdr = (iphdr_t *)(pkt->p_data + pkt->p_offset); + if((ntohs(ip_hdr->frag_off) & (IH_MORE_FRAGS | IH_FRAGOFF_MASK)) != 0) { #ifdef DEBUG - if (opt_d) fprintf(stderr,"ip_vjhc_compress: fragmented packet\n"); + if(opt_d) + { + fprintf(stderr,"ip_vjhc_compress: fragmented packet\n"); + } #endif return PPP_TYPE_IP; } ip_hdr_len= (ip_hdr->version_ihl & IH_IHL_MASK) * 4; tcp_hdr= (tcphdr_t *)(pkt->p_data + pkt->p_offset + ip_hdr_len); - if ((tcp_hdr->flags & (TF_SYN | TF_FIN | TF_RST | TF_ACK)) != - TF_ACK) + if((tcp_hdr->flags & (TF_SYN | TF_FIN | TF_RST | TF_ACK)) != TF_ACK) { #ifdef DEBUG - if (opt_d) fprintf(stderr,"ip_vjhc_compress: wrong flags in TCP header\n"); + if(opt_d) + { + fprintf(stderr,"ip_vjhc_compress: wrong flags in TCP header\n"); + } #endif return PPP_TYPE_IP; } tcp_hdr_len= TCP_DATAOFF(tcp_hdr); /* !!! */ tot_len= ip_hdr_len + tcp_hdr_len; #ifdef DEBUG - if (opt_d) { - fprintf(stderr,"ip_vjhc_compress: packet with size %d\n\t", - pkt->p_size); - for (cp= (__u8 *)pkt->p_data+pkt->p_offset; cp < (__u8 *)pkt->p_data + - pkt->p_offset + ip_hdr_len; cp++) - { - fprintf(stderr,"%x ", *cp); - } - fprintf(stderr,"\n\t"); - for (; cp < (__u8 *)pkt->p_data + pkt->p_offset + tot_len; cp++) - { - fprintf(stderr, "%x ", *cp); - } - fprintf(stderr, "\n\t"); - for (; cp < (__u8 *)pkt->p_data + pkt->p_offset + pkt->p_size; cp++) - { - fprintf(stderr, "%x ", *cp); - } - fprintf(stderr, "\n"); - } + if(opt_d) + { + fprintf(stderr,"ip_vjhc_compress: packet with size %d\n\t", pkt->p_size); + for (cp= (__u8 *)pkt->p_data+pkt->p_offset; cp < (__u8 *)pkt->p_data +pkt->p_offset + ip_hdr_len; cp++) + { + fprintf(stderr,"%x ", *cp); + } + fprintf(stderr,"\n\t"); + for (; cp < (__u8 *)pkt->p_data + pkt->p_offset + tot_len; cp++) + { + fprintf(stderr, "%x ", *cp); + } + fprintf(stderr, "\n\t"); + for(; cp < (__u8 *)pkt->p_data + pkt->p_offset + pkt->p_size; cp++) + { + fprintf(stderr, "%x ", *cp); + } + fprintf(stderr, "\n"); + } #endif for (prev= NULL, state= xmit_head;; ) { - if (ip_hdr->saddr == state->s_src_ip && - ip_hdr->daddr == state->s_dst_ip && - *(__u32 *)&tcp_hdr->sport == - state->s_srcdst_port) + if((ip_hdr->saddr == state->s_src_ip) && (ip_hdr->daddr == state->s_dst_ip) && (*(__u32 *)&tcp_hdr->sport == state->s_srcdst_port)) { #ifdef DEBUG - if (opt_d) fprintf(stderr, "ip_vjhc_compress: found entry\n"); + if(opt_d) + { + fprintf(stderr, "ip_vjhc_compress: found entry\n"); + } #endif - if (prev != NULL) + if(prev != NULL) { #ifdef DEBUG - if (opt_d) fprintf(stderr, "ip_vjhc_compress: moving entry to front\n"); + if(opt_d) fprintf(stderr, "ip_vjhc_compress: moving entry to front\n"); #endif - prev->s_next= state->s_next; - state->s_next= xmit_head; - xmit_head= state; + prev->s_next = state->s_next; + state->s_next = xmit_head; + xmit_head = state; } break; } - next= state->s_next; - if (next != NULL) + next = state->s_next; + if(next != NULL) { - prev= state; - state= next; + prev = state; + state = next; continue; } - /* Not found */ - if (prev != NULL) + if(prev != NULL) + { + prev->s_next = state->s_next; + state->s_next = xmit_head; + xmit_head = state; + } + state->s_src_ip = ip_hdr->saddr; + state->s_dst_ip = ip_hdr->daddr; + state->s_srcdst_port = *(__u32 *)&tcp_hdr->sport; +#ifdef DEBUG + if(opt_d) { - prev->s_next= state->s_next; - state->s_next= xmit_head; - xmit_head= state; - } - state->s_src_ip= ip_hdr->saddr; - state->s_dst_ip= ip_hdr->daddr; - state->s_srcdst_port= *(__u32 *)&tcp_hdr->sport; -#ifdef DEBUG - if (opt_d) fprintf(stderr,"ip_vjhc_compress: new entry: %x, %x, %x\n", - state->s_src_ip, state->s_dst_ip, - state->s_srcdst_port ); + fprintf(stderr,"ip_vjhc_compress: new entry: %x, %x, %x\n", state->s_src_ip, state->s_dst_ip, state->s_srcdst_port); + } #endif memcpy(state->s_data, ip_hdr, tot_len); - xmit_last= ip_hdr->protocol= state->s_indx; + xmit_last = ip_hdr->protocol = state->s_indx; return PPP_TYPE_VJHC_UNCOMPR; - } - oip_hdr= (iphdr_t *)(state->s_data); - otcp_hdr= (tcphdr_t *)(state->s_data + ip_hdr_len); + } + oip_hdr = (iphdr_t *)(state->s_data); + otcp_hdr = (tcphdr_t *)(state->s_data + ip_hdr_len); if (*(__u16 *)&ip_hdr->version_ihl != *(__u16 *)&oip_hdr->version_ihl || @@ -388,10 +390,8 @@ return PPP_TYPE_VJHC_COMPR; } -DEFUN -(void ip_vjhc_arr_uncompr, (pkt), - pkt_ut *pkt -) + +void ip_vjhc_arr_uncompr(pkt_ut *pkt) { rcv_state_ut *state; iphdr_t *ip_hdr; @@ -430,10 +430,7 @@ } -DEFUN -(void ip_vjhc_arr_compr, (pkt), - pkt_ut *pkt -) +void ip_vjhc_arr_compr(pkt_ut *pkt) { iphdr_t *ip_hdr; tcphdr_t *tcp_hdr; diff -ruN ./elks-stuff/elksnet/screen/screen.h ./elks/elksnet/screen/screen.h --- ./elks-stuff/elksnet/screen/screen.h 2004-05-28 16:01:55.000000000 -0400 +++ ./elks/elksnet/screen/screen.h 2004-04-20 22:11:50.000000000 -0400 @@ -28,10 +28,9 @@ PM, /* Privacy message */ }; -#define MAXSTR 128 -#define MAXARGS 64 - -#define IOSIZE 80 +#define MAXSTR 128 +#define MAXARGS 64 +#define IOSIZE 80 struct win { int wpid;