diff options
Diffstat (limited to 'sys/arch/atari/stand/tostools')
-rw-r--r-- | sys/arch/atari/stand/tostools/aptck/Makefile | 10 | ||||
-rw-r--r-- | sys/arch/atari/stand/tostools/aptck/ahdilbl.h | 116 | ||||
-rw-r--r-- | sys/arch/atari/stand/tostools/aptck/diskio.c | 4 | ||||
-rw-r--r-- | sys/arch/atari/stand/tostools/aptck/disklbl.c (renamed from sys/arch/atari/stand/tostools/aptck/disklabel.c) | 12 | ||||
-rw-r--r-- | sys/arch/atari/stand/tostools/aptck/disklbl.h (renamed from sys/arch/atari/stand/tostools/aptck/disklabel.h) | 117 | ||||
-rw-r--r-- | sys/arch/atari/stand/tostools/aptck/setrev.awk (renamed from sys/arch/atari/stand/tostools/aptck/setversion) | 2 |
6 files changed, 158 insertions, 103 deletions
diff --git a/sys/arch/atari/stand/tostools/aptck/Makefile b/sys/arch/atari/stand/tostools/aptck/Makefile index baf781fa59f..63dac91f7f9 100644 --- a/sys/arch/atari/stand/tostools/aptck/Makefile +++ b/sys/arch/atari/stand/tostools/aptck/Makefile @@ -1,17 +1,17 @@ -# $NetBSD: Makefile,v 1.1.1.1 1996/01/07 21:54:16 leo Exp $ +# $NetBSD: Makefile,v 1.2 1996/01/16 15:14:53 leo Exp $ PROG = aptck.ttp -OBJS = aptck.o biosrw.o diskio.o disklabel.o -HEADERS = aptck.h disklabel.h +OBJS = aptck.o biosrw.o diskio.o disklbl.o +HEADERS = aptck.h ahdilbl.h disklbl.h LIBS = -lxhdi CLEAN = aptck.c include ../Makefile.inc -aptck.c: aptck.in biosrw.s diskio.c disklabel.c - ${AWK} -f ./setversion $^ > aptck.c +aptck.c: aptck.in biosrw.s diskio.c disklbl.c + ${AWK} -f ./setrev.awk $^ > aptck.c ${PROG}: ${OBJS} ${LDADD} ${CC} ${LDFLAGS} -o $@ ${OBJS} ${LDADD} ${LIBS} diff --git a/sys/arch/atari/stand/tostools/aptck/ahdilbl.h b/sys/arch/atari/stand/tostools/aptck/ahdilbl.h new file mode 100644 index 00000000000..dc9c1345209 --- /dev/null +++ b/sys/arch/atari/stand/tostools/aptck/ahdilbl.h @@ -0,0 +1,116 @@ +/* $NetBSD: ahdilbl.h,v 1.1 1996/01/16 15:15:06 leo Exp $ */ + +/* + * Copyright (c) 1995 Leo Weppelman. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by Leo Weppelman. + * 4. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef AHDILABEL_H +#define AHDILABEL_H + +/***** from src/sys/arch/atari/include/disklabel.h *************************/ + +/* + * On a volume, exclusively used by NetBSD, the boot block starts at + * sector 0. To allow shared use of a volume between two or more OS's + * the vendor specific AHDI format is supported. In this case the boot + * block is located at the start of an AHDI partition. In any case the + * size of the boot block must be at least 8KB. + */ +#define BBMINSIZE 8192 /* minimum size of boot block */ +#define LABELSECTOR 0 /* `natural' start of boot block */ +#define LABELOFFSET 512 /* offset of disk label in bytes, + relative to start of boot block */ +#define LABELMAXSIZE 1024 /* maximum size of disk label */ + +#define MAXPARTITIONS 16 /* max. # of NetBSD partitions */ +#define RAW_PART 2 /* xx?c is raw partition */ + +#define NO_BOOT_BLOCK ((u_int)-1) +#define MAXAUXROOTS 29 /* max. # of auxilary root sectors */ + +struct bootblock { + u_int8_t bb_xxboot[LABELOFFSET]; /* first-stage boot loader */ + u_int8_t bb_dlabel[LABELMAXSIZE];/* disk pack label */ + u_int8_t bb_bootxx[BBMINSIZE - (LABELOFFSET + LABELMAXSIZE)]; + /* second-stage boot loader*/ +}; + +#define BBGETLABEL(bb, dl) *(dl) = *((struct disklabel *)(bb)->bb_dlabel) +#define BBSETLABEL(bb, dl) *((struct disklabel *)(bb)->bb_dlabel) = *(dl) + +/***** from src/sys/arch/atari/include/ahdilabel.h *************************/ + +#define AHDI_BSIZE 512 /* AHDI blocksize */ +#define AHDI_BBLOCK 0 /* AHDI bootblock (root sector) */ +#define AHDI_MAXROOTS (MAXAUXROOTS) /* max. # of AHDI rootsectors */ +#define AHDI_MAXPARTS (AHDI_MAXROOTS+3) /* max. # of AHDI partitions */ + +/* + * Various `well known' AHDI partition identifiers. + */ +#define AHDI_MKPID(x,y,z) ( ((u_int32_t)(x) << 16) \ + | ((u_int32_t)(y) << 8) \ + | ((u_int32_t)(z)) \ + ) +#define AHDI_PID_XGM AHDI_MKPID('X','G','M') +#define AHDI_PID_GEM AHDI_MKPID('G','E','M') +#define AHDI_PID_BGM AHDI_MKPID('B','G','M') +#define AHDI_PID_RAW AHDI_MKPID('R','A','W') +#define AHDI_PID_SWP AHDI_MKPID('S','W','P') +#define AHDI_PID_NBD AHDI_MKPID('N','B','D') +#define AHDI_PID_NBR AHDI_MKPID('N','B','R') +#define AHDI_PID_NBS AHDI_MKPID('N','B','S') +#define AHDI_PID_NBU AHDI_MKPID('N','B','U') + +/* + * Format of AHDI boot block. + */ +#define AHDI_MAXRPD 4 /* max. # of partition descriptors */ + /* in the AHDI bootblock (aka root)*/ +#define AHDI_MAXARPD 2 /* max. # of partition descriptors */ + /* in an AHDI auxilary root sector */ + +struct ahdi_part { + u_int8_t ap_flg; /* bit 0 is in-use flag */ + u_int8_t ap_id[3]; /* id: GEM, BGM, XGM, UNX, MIX */ + u_int32_t ap_offs; /* block where partition starts */ + u_int32_t ap_size; /* partition size in blocks */ +#define ap_end ap_size /* in the in-core copy, store end instead of size */ +}; + +struct ahdi_root { + u_int8_t ar_fill[0x1c2];/* filler, can be boot code */ + u_int32_t ar_hdsize; /* size of entire volume in blocks */ + struct ahdi_part ar_parts[AHDI_MAXRPD]; /* root partition table */ + u_int32_t ar_bslst; /* start of bad-sector list */ + u_int32_t ar_bslsize; /* # of blocks in bad-sector list */ + u_int16_t ar_cksum; +}; + +#endif /* AHDILABEL_H */ diff --git a/sys/arch/atari/stand/tostools/aptck/diskio.c b/sys/arch/atari/stand/tostools/aptck/diskio.c index db7397c8825..17038b2b870 100644 --- a/sys/arch/atari/stand/tostools/aptck/diskio.c +++ b/sys/arch/atari/stand/tostools/aptck/diskio.c @@ -1,4 +1,4 @@ -/* $NetBSD: diskio.c,v 1.1.1.1 1996/01/07 21:54:16 leo Exp $ */ +/* $NetBSD: diskio.c,v 1.2 1996/01/16 15:15:16 leo Exp $ */ /* * Copyright (c) 1995 Waldi Ravens. @@ -38,7 +38,7 @@ #include <xhdi.h> #include "libtos.h" #include "aptck.h" -#include "disklabel.h" +#include "ahdilbl.h" #include <osbind.h> struct pun_info { diff --git a/sys/arch/atari/stand/tostools/aptck/disklabel.c b/sys/arch/atari/stand/tostools/aptck/disklbl.c index e30b49b192b..ec88579d258 100644 --- a/sys/arch/atari/stand/tostools/aptck/disklabel.c +++ b/sys/arch/atari/stand/tostools/aptck/disklbl.c @@ -1,4 +1,4 @@ -/* $NetBSD: disklabel.c,v 1.1.1.1 1996/01/07 21:54:16 leo Exp $ */ +/* $NetBSD: disklbl.c,v 1.1 1996/01/16 15:15:48 leo Exp $ */ /* * Copyright (c) 1995 Waldi Ravens. @@ -35,7 +35,8 @@ #include <stdio.h> #include "libtos.h" #include "aptck.h" -#include "disklabel.h" +#include "ahdilbl.h" +#include "disklbl.h" static int dkcksum PROTO((struct disklabel *)); static int bsd_label PROTO((disk_t *, u_int)); @@ -282,9 +283,10 @@ ahdi_display(dd) printf("* Weird # of partitions (zero) *\n"); rv = 1; } if (dd->nparts > AHDI_MAXPARTS) { - printf("* Too many AHDI partitions for NetBSD *\n"); - printf(" Increase MAXAUXROOTS in machine/disklabel.h,\n"); - printf(" then recompile the NetBSD kernel.\n"); + printf("* Too many AHDI partitions for the default NetBSD " + "kernel *\n Increase MAXAUXROOTS in src/sys/arch/" + "atari/include/disklabel.h\n to at least %u, and " + "recompile the NetBSD kernel.\n", dd->nroots); rv = -1; } return(rv); diff --git a/sys/arch/atari/stand/tostools/aptck/disklabel.h b/sys/arch/atari/stand/tostools/aptck/disklbl.h index 6b3c004180e..cfb5c90855b 100644 --- a/sys/arch/atari/stand/tostools/aptck/disklabel.h +++ b/sys/arch/atari/stand/tostools/aptck/disklbl.h @@ -1,8 +1,8 @@ -/* $NetBSD: disklabel.h,v 1.1.1.1 1996/01/07 21:54:16 leo Exp $ */ +/* $NetBSD: disklbl.h,v 1.1 1996/01/16 15:15:52 leo Exp $ */ /* - * Copyright (c) 1995 Leo Weppelman. - * All rights reserved. + * Copyright (c) 1987, 1988, 1993 + * The Regents of the University of California. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -14,94 +14,31 @@ * documentation and/or other materials provided with the distribution. * 3. All advertising materials mentioning features or use of this software * must display the following acknowledgement: - * This product includes software developed by Leo Weppelman. - * 4. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission + * This product includes software developed by the University of + * California, Berkeley and its contributors. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * @(#)disklabel.h 8.2 (Berkeley) 7/10/94 */ #ifndef DISKLABEL_H #define DISKLABEL_H -/* - * On a volume, exclusively used by NetBSD, the boot block starts at - * sector 0. To allow shared use of a volume between two or more OS's - * the vendor specific AHDI format is supported. In this case the boot - * block is located at the start of an AHDI partition. In any case the - * size of the boot block is 8KB, the disk label is at offset 7KB. - */ -#define LABELSECTOR 0 /* `natural' start of boot block */ -#define LABELOFFSET (7 * 1024) /* offset of disk label in bytes, - relative to start of boot block */ -#define BBSIZE (8 * 1024) /* size of boot block in bytes */ -#define MAXPARTITIONS 16 /* max. # of NetBSD partitions */ -#define RAW_PART 2 /* xx?c is raw partition */ - -#define NO_BOOT_BLOCK ((u_int) -1) -#define MAXAUXROOTS 60 /* max. # of auxilary root sectors */ - -/***************************************************************************/ - -#define AHDI_BSIZE 512 /* AHDI blocksize */ -#define AHDI_BBLOCK 0 /* AHDI bootblock (root sector) */ -#define AHDI_MAXROOTS (MAXAUXROOTS) /* max. # of AHDI rootsectors */ -#define AHDI_MAXPARTS (AHDI_MAXROOTS+3) /* max. # of AHDI partitions */ - -/* - * Various `well known' AHDI partition identifiers. - */ -#define AHDI_MKPID(x,y,z) ( ((u_int32_t)(x) << 16) \ - | ((u_int32_t)(y) << 8) \ - | ((u_int32_t)(z)) \ - ) -#define AHDI_PID_XGM AHDI_MKPID('X','G','M') -#define AHDI_PID_GEM AHDI_MKPID('G','E','M') -#define AHDI_PID_BGM AHDI_MKPID('B','G','M') -#define AHDI_PID_RAW AHDI_MKPID('R','A','W') -#define AHDI_PID_SWP AHDI_MKPID('S','W','P') -#define AHDI_PID_NBD AHDI_MKPID('N','B','D') -#define AHDI_PID_NBR AHDI_MKPID('N','B','R') -#define AHDI_PID_NBS AHDI_MKPID('N','B','S') -#define AHDI_PID_NBU AHDI_MKPID('N','B','U') - -/* - * Format of AHDI boot block. - */ -#define AHDI_MAXRPD 4 /* max. # of partition descriptors */ - /* in the AHDI bootblock (aka root)*/ -#define AHDI_MAXARPD 2 /* max. # of partition descriptors */ - /* in an AHDI auxilary root sector */ - -struct ahdi_part { - u_int8_t ap_flg; /* bit 0 is in-use flag */ - u_int8_t ap_id[3]; /* id: GEM, BGM, XGM, UNX, MIX */ - u_int32_t ap_offs; /* block where partition starts */ - u_int32_t ap_size; /* partition size in blocks */ -#define ap_end ap_size /* in the in-core copy, store end instead of size */ -}; - -struct ahdi_root { - u_int8_t ar_fill[0x1c2];/* filler, can be boot code */ - u_int32_t ar_hdsize; /* size of entire volume in blocks */ - struct ahdi_part ar_parts[AHDI_MAXRPD]; /* root partition table */ - u_int32_t ar_bslst; /* start of bad-sector list */ - u_int32_t ar_bslsize; /* # of blocks in bad-sector list */ - u_int16_t ar_cksum; -}; - -/***************************************************************************/ - -#define DISKMAGIC ((u_int32_t)0x82564557) /* The disk magic number */ +#define DISKMAGIC ((u_int32_t)0x82564557) /* The disk magic number */ struct disklabel { u_int32_t d_magic; /* the magic number */ @@ -124,9 +61,9 @@ struct disklabel { char *un_d_boot1; /* secondary bootstrap name */ } un_b; } d_un; -#define d_packname d_un.un_d_packname -#define d_boot0 d_un.un_b.un_d_boot0 -#define d_boot1 d_un.un_b.un_d_boot1 +#define d_packname d_un.un_d_packname +#define d_boot0 d_un.un_b.un_d_boot0 +#define d_boot1 d_un.un_b.un_d_boot1 /* disk geometry: */ u_int32_t d_secsize; /* # of bytes per sector */ @@ -174,9 +111,9 @@ struct disklabel { u_int32_t d_headswitch; /* head switch time, usec */ u_int32_t d_trkseek; /* track-to-track seek, usec */ u_int32_t d_flags; /* generic flags */ -#define NDDATA 5 +#define NDDATA 5 u_int32_t d_drivedata[NDDATA]; /* drive-type specific information */ -#define NSPARE 5 +#define NSPARE 5 u_int32_t d_spare[NSPARE]; /* reserved for future use */ u_int32_t d_magic2; /* the magic number (again) */ u_int16_t d_checksum; /* xor of data incl. partitions */ diff --git a/sys/arch/atari/stand/tostools/aptck/setversion b/sys/arch/atari/stand/tostools/aptck/setrev.awk index acfcc8c082c..0e545c24df0 100644 --- a/sys/arch/atari/stand/tostools/aptck/setversion +++ b/sys/arch/atari/stand/tostools/aptck/setrev.awk @@ -1,6 +1,6 @@ #!/usr/bin/awk -f # -# $NetBSD: setversion,v 1.1.1.1 1996/01/07 21:54:17 leo Exp $ +# $NetBSD: setrev.awk,v 1.1 1996/01/16 15:15:55 leo Exp $ # function revcmp(r1, r2, n1, n2, a1, a2, n, i) { n1 = split(r1, a1, "\.") |