from leo:
authorderaadt <deraadt@openbsd.org>
Tue, 9 Jan 1996 09:13:45 +0000 (09:13 +0000)
committerderaadt <deraadt@openbsd.org>
Tue, 9 Jan 1996 09:13:45 +0000 (09:13 +0000)
Common library for all tostools. (Waldi Ravens and myself)

sys/arch/atari/stand/tostools/libtos/Makefile [new file with mode: 0644]
sys/arch/atari/stand/tostools/libtos/bsdstart.s [new file with mode: 0644]
sys/arch/atari/stand/tostools/libtos/eprintf.c [new file with mode: 0644]
sys/arch/atari/stand/tostools/libtos/error.c [new file with mode: 0644]
sys/arch/atari/stand/tostools/libtos/keywait.c [new file with mode: 0644]
sys/arch/atari/stand/tostools/libtos/kparamb.h [new file with mode: 0644]
sys/arch/atari/stand/tostools/libtos/libtos.h [new file with mode: 0644]
sys/arch/atari/stand/tostools/libtos/xalloc.c [new file with mode: 0644]
sys/arch/atari/stand/tostools/libtos/xexit.c [new file with mode: 0644]

diff --git a/sys/arch/atari/stand/tostools/libtos/Makefile b/sys/arch/atari/stand/tostools/libtos/Makefile
new file mode 100644 (file)
index 0000000..f89ac1c
--- /dev/null
@@ -0,0 +1,12 @@
+#      $NetBSD: Makefile,v 1.1.1.1 1996/01/07 21:50:50 leo Exp $
+#
+LIB    = libtos.a
+
+OBJS   = bsdstart.o eprintf.o error.o xalloc.o xexit.o keywait.o
+HEADERS        = kparamb.h libtos.h
+
+include ../Makefile.inc
+
+${LIB}: ${OBJS}
+       @${RM} ${LIB}
+       ${AR} ${LIB} ${OBJS}
diff --git a/sys/arch/atari/stand/tostools/libtos/bsdstart.s b/sys/arch/atari/stand/tostools/libtos/bsdstart.s
new file mode 100644 (file)
index 0000000..3972206
--- /dev/null
@@ -0,0 +1,117 @@
+/*     $NetBSD: bsdstart.s,v 1.1.1.1 1996/01/07 21:50:49 leo Exp $     */
+
+/*
+ * Copyright (c) 1995 L. 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.
+ */
+
+/*
+ * This function sets up the registers according to the kernel parameter block,
+ * disables the MMU and jumps to the kernel.
+ *
+ * bsd_startup(struct kparamb *)
+ */
+       .text
+       .even
+       .globl  _bsd_startup
+
+_bsd_startup:
+       movw    #0x2700,sr
+
+       | the BSD kernel wants values into the following registers:
+       | d0:  ttmem-size
+       | d1:  stmem-size
+       | d2:  cputype
+       | d3:  boothowto
+       | d4:  length of loaded kernel
+       | d5:  start of fastram
+       | a0:  start of loaded kernel
+       | a1:  end of symbols (esym)
+       | All other registers zeroed for possible future requirements.
+
+       movl    sp@(4), a3              | a3 points to parameter block
+#ifndef        STANDALONE
+       lea     _bsd_startup,sp         | make sure we have a good stack ***
+#endif
+       movl    a3@,a0                  | loaded kernel
+       movl    a3@(8),d0               | kernel entry point
+       addl    a0,d0                   | added makes our absolute entry point
+       movl    d0,sp@-                 | push entry point              ***
+       movl    a3@(12),d1              | stmem-size
+       movl    a3@(16),d0              | ttmem-size
+       movl    a3@(20),d2              | bootflags
+       movl    a3@(24),d3              | boothowto
+       movl    a3@(4),d4               | length of loaded kernel
+       movl    a3@(28),d5              | start of fastram
+       movl    a3@(32),a1              | end of symbols
+       subl    a5,a5                   | target, load to 0
+       btst    #4, d2                  | Is this an 68040?
+       beq     not040
+
+       | Turn off 68040 MMU
+       .word 0x4e7b,0xd003             | movec a5,tc
+       .word 0x4e7b,0xd806             | movec a5,urp
+       .word 0x4e7b,0xd807             | movec a5,srp
+       .word 0x4e7b,0xd004             | movec a5,itt0
+       .word 0x4e7b,0xd005             | movec a5,itt1
+       .word 0x4e7b,0xd006             | movec a5,dtt0
+       .word 0x4e7b,0xd007             | movec a5,dtt1
+       bra     nott
+
+not040:
+       lea     pc@(zero),a3
+       pmove   a3@,tc                  | Turn off MMU
+       pmove   a3@(-4),crp             | crp = nullrp
+       pmove   a3@(-4),srp             | srp = nullrp
+
+       | Turn off 68030 TT registers
+       btst    #3, d2                  | Is this an 68030?
+       jeqs    nott
+       .word   0xf013,0x0800           | pmove a3@,tt0
+       .word   0xf013,0x0c00           | pmove a3@,tt1
+
+nott:
+       movq    #0,d6                   |  would have known contents)
+       movl    d6,d7
+       movl    d6,a2
+       movl    d6,a3
+       movl    d6,a4
+       movl    d6,a5
+       movl    d6,a6
+       rts                             | enter kernel at address on stack ***
+
+
+| A do-nothing MMU root pointer (includes the following long as well)
+| Note that the above code makes assumptions about the order of the following
+| items.
+
+nullrp:        .long   0x80000202
+zero:  .long   0
+#ifndef        STANDALONE
+svsp:  .long   0
+#endif
diff --git a/sys/arch/atari/stand/tostools/libtos/eprintf.c b/sys/arch/atari/stand/tostools/libtos/eprintf.c
new file mode 100644 (file)
index 0000000..60e07c5
--- /dev/null
@@ -0,0 +1,82 @@
+/*     $NetBSD: eprintf.c,v 1.1.1.1 1996/01/07 21:50:49 leo Exp $      */
+
+/*
+ * Copyright (c) 1995 Waldi Ravens.
+ * 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 Waldi Ravens.
+ * 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.
+ */
+
+#include <fcntl.h>
+#include <errno.h>
+#include <stdio.h>
+#include <stdarg.h>
+#include <unistd.h>
+#include "libtos.h"
+
+static int     output_redirected = 0;
+
+void
+redirect_output(fn)
+       char    *fn;
+{
+       int     fd;
+
+       fd = creat(fn, 0666);
+       if (fd < 0 || dup2(fd, STDOUT_FILENO) < 0)
+               fatal(errno, "%s", fn);
+       output_redirected = 1;
+}
+
+/*
+ * Print output to stderr. When output is redirected,
+ * also write it to stdout.
+ */
+int
+eprintf(frm)
+       char    *frm;
+{
+       va_list args;
+       int     rv;
+
+       va_start(args, frm);
+       rv = veprintf(frm, args);
+       va_end(args);
+       return(rv);
+}
+
+int
+veprintf(frm, args)
+       char    *frm;
+       va_list args;
+{
+       int     rv;
+
+       rv = vfprintf(stderr, frm, args);
+       if (output_redirected)
+               vfprintf(stdout, frm, args);
+       return(rv);
+}
diff --git a/sys/arch/atari/stand/tostools/libtos/error.c b/sys/arch/atari/stand/tostools/libtos/error.c
new file mode 100644 (file)
index 0000000..fe5ff6f
--- /dev/null
@@ -0,0 +1,105 @@
+/*     $NetBSD: error.c,v 1.1.1.1 1996/01/07 21:50:49 leo Exp $        */
+
+/*
+ * Copyright (c) 1995 Waldi Ravens.
+ * 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 Waldi Ravens.
+ * 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.
+ */
+
+#include <stdio.h>
+#include <osbind.h>
+#include <stdarg.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include "libtos.h"
+
+static void    errmsg PROTO((int, char *, va_list));
+
+const char     *program_name;
+
+void
+init_toslib(arg0)
+       char    *arg0;
+{
+       char    *p;
+
+       if (isatty(STDERR_FILENO) && (!*arg0 || !getenv("STDERR")))
+               Fforce(STDERR_FILENO, -1);
+
+       if (!(p = strrchr(arg0, '/')))
+               p = strrchr(arg0, '\\');
+       program_name = p ? ++p : arg0;
+}
+
+void
+error(err, frm)
+       int     err;
+       char    *frm;
+{
+       va_list         args;
+
+       va_start(args, frm);
+       errmsg(err, frm, args);
+       va_end(args);
+}
+
+void
+fatal(err, frm)
+       int     err;
+       char    *frm;
+{
+       va_list         args;
+
+       va_start(args, frm);
+       errmsg(err, frm, args);
+       va_end(args);
+
+       xexit(EXIT_FAILURE);
+}
+
+static void
+errmsg(err, frm, args)
+       int     err;
+       char    *frm;
+       va_list args;
+{
+       extern const char *program_name;
+
+       eprintf("%s: ", program_name);
+       veprintf(frm, args);
+
+       if (err != -1) {
+               char    *es = strerror(err);
+               if (es)
+                       eprintf(": %s", es);
+               else
+                       eprintf(": unknown error %d", err);
+       }
+
+       eprintf("\n");
+}
diff --git a/sys/arch/atari/stand/tostools/libtos/keywait.c b/sys/arch/atari/stand/tostools/libtos/keywait.c
new file mode 100644 (file)
index 0000000..b0e73db
--- /dev/null
@@ -0,0 +1,68 @@
+/*     $NetBSD: keywait.c,v 1.1.1.1 1996/01/07 21:50:50 leo Exp $      */
+
+/*
+ * Copyright (c) 1995 Waldi Ravens.
+ * 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 Waldi Ravens.
+ * 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.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <termios.h>
+#include "libtos.h"
+
+int
+key_wait(text)
+       char    *text;
+{
+       struct termios  term_attr;
+       tcflag_t        lfl_orig;
+       int             any_key;
+       char            c;
+
+       any_key = (text == NULL);
+       if (any_key)
+               text = "Press any key...";
+
+       fprintf(stderr, text);
+       fflush(stderr);
+
+       tcgetattr(STDERR_FILENO, &term_attr);
+       lfl_orig = term_attr.c_lflag;
+       if (any_key)
+               term_attr.c_lflag &= ~ECHO;
+       term_attr.c_lflag &= ~ICANON;
+       tcsetattr(STDERR_FILENO, TCSAFLUSH, &term_attr);
+       read(STDERR_FILENO, &c, 1);
+       term_attr.c_lflag = lfl_orig;
+       tcsetattr(STDERR_FILENO, TCSAFLUSH, &term_attr);
+
+       fprintf(stderr, (any_key ? "\r" : "\r\n"));
+       fflush(stderr);
+       return(c);
+}
diff --git a/sys/arch/atari/stand/tostools/libtos/kparamb.h b/sys/arch/atari/stand/tostools/libtos/kparamb.h
new file mode 100644 (file)
index 0000000..2c32467
--- /dev/null
@@ -0,0 +1,74 @@
+/*     $NetBSD: kparamb.h,v 1.1.1.1 1996/01/07 21:50:49 leo Exp $      */
+
+/*
+ * Copyright (c) 1995 L. 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.
+ */
+
+/*
+ * Structure passed to bsd_startup().
+ */
+struct kparamb {
+       u_char  *kp;            /* 00: Kernel load address              */
+       long    ksize;          /* 04: Size of loaded kernel            */
+       u_long  entry;          /* 08: Kernel entry point               */
+       long    stmem_size;     /* 12: Size of st-ram                   */
+       long    ttmem_size;     /* 16: Size of tt-ram                   */
+       long    bootflags;      /* 20: Various boot flags               */
+       long    boothowto;      /* 24: How to boot                      */
+       long    ttmem_start;    /* 28: Start of tt-ram                  */
+       long    esym_loc;       /* 32: End of symbol table              */
+};
+
+#ifndef        STANDALONE
+/*
+ * Values for 'bootflags'.
+ * Note: These should match with the values NetBSD uses!
+ */
+#define        ATARI_68000     1               /* 68000 CPU                    */
+#define        ATARI_68010     (1<<1)          /* 68010 CPU                    */
+#define        ATARI_68020     (1<<2)          /* 68020 CPU                    */
+#define        ATARI_68030     (1<<3)          /* 68030 CPU                    */
+#define        ATARI_68040     (1<<4)          /* 68040 CPU                    */
+#define        ATARI_TT        (1L<<11)        /* This is a TT030              */
+#define        ATARI_FALCON    (1L<<12)        /* This is a Falcon             */
+
+#define        ATARI_CLKBROKEN (1<<16)         /* GEMDOS has faulty year base  */
+
+#define        ATARI_ANYCPU    (0x1f)
+
+/*
+ * Definitions for boothowto
+ * Note: These should match with the values NetBSD uses!
+ */
+#define        RB_AUTOBOOT     0x00
+#define        RB_ASKNAME      0x01
+#define        RB_SINGLE       0x02
+#define        RB_KDB          0x40
+
+#endif /* STANDALONE */
diff --git a/sys/arch/atari/stand/tostools/libtos/libtos.h b/sys/arch/atari/stand/tostools/libtos/libtos.h
new file mode 100644 (file)
index 0000000..7873d81
--- /dev/null
@@ -0,0 +1,70 @@
+/*     $NetBSD: libtos.h,v 1.1.1.1 1996/01/07 21:50:49 leo Exp $       */
+
+/*
+ * Copyright (c) 1995 Waldi Ravens.
+ * 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 Waldi Ravens.
+ * 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 LIBTOS_H
+#define LIBTOS_H
+
+#ifdef __STDC__
+#define        PROTO(x)        x
+#define EXTERN
+#else
+#define        PROTO(x)        ()
+#define        EXTERN          extern
+#endif
+
+#ifdef __GNUC__
+#if (__GNUC__ > 2) || ((__GNUC__ == 2) && (__GNUC_MINOR__ >= 5))
+#define NORETURN       __attribute__((noreturn))
+#else
+#define        NORETURN
+#endif
+#endif
+
+#include <sys/types.h>
+#include <stdarg.h>
+#include "kparamb.h"
+
+EXTERN void    bsd_startup      PROTO((struct kparamb *)) NORETURN;
+EXTERN void    init_toslib      PROTO((char *));
+EXTERN void    redirect_output  PROTO((char *));
+EXTERN int     eprintf          PROTO((char *, ...));
+EXTERN int     veprintf         PROTO((char *, va_list));
+EXTERN void    set_wait_for_key PROTO((void));
+EXTERN void    press_any_key    PROTO((void));
+EXTERN int     key_wait         PROTO((char *));
+EXTERN void    xexit            PROTO((int)) NORETURN;
+EXTERN void    error            PROTO((int, char *, ...));
+EXTERN void    fatal            PROTO((int, char *, ...)) NORETURN;
+EXTERN void *  xmalloc          PROTO((size_t));
+EXTERN void *  xrealloc         PROTO((void *, size_t));
+
+#endif /* LIBTOS_H */
diff --git a/sys/arch/atari/stand/tostools/libtos/xalloc.c b/sys/arch/atari/stand/tostools/libtos/xalloc.c
new file mode 100644 (file)
index 0000000..84b2f55
--- /dev/null
@@ -0,0 +1,57 @@
+/*     $NetBSD: xalloc.c,v 1.1.1.1 1996/01/07 21:50:49 leo Exp $       */
+
+/*
+ * Copyright (c) 1995 Waldi Ravens.
+ * 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 Waldi Ravens.
+ * 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.
+ */
+
+#include <stdlib.h>
+#include "libtos.h"
+
+void *
+xmalloc(size)
+       size_t  size;
+{
+       void *  p = malloc(size);
+
+       if (p || !size)
+               return(p);
+       fatal(-1, "Virtual memory exhausted");
+}
+
+void *
+xrealloc(ptr, size)
+       void    *ptr;
+       size_t  size;
+{
+       void *  p = realloc(ptr, size);
+
+       if (p || !size)
+               return(p);
+       fatal(-1, "Virtual memory exhausted");
+}
diff --git a/sys/arch/atari/stand/tostools/libtos/xexit.c b/sys/arch/atari/stand/tostools/libtos/xexit.c
new file mode 100644 (file)
index 0000000..deb4672
--- /dev/null
@@ -0,0 +1,60 @@
+/*     $NetBSD: xexit.c,v 1.1.1.1 1996/01/07 21:50:50 leo Exp $        */
+
+/*
+ * Copyright (c) 1995 Waldi Ravens.
+ * 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 Waldi Ravens.
+ * 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.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include "libtos.h"
+
+static int     wait_for_key = 0;
+
+void
+set_wait_for_key()
+{
+       if (isatty(STDERR_FILENO))
+               wait_for_key = 1;
+}
+
+void
+press_any_key()
+{
+       if (wait_for_key)
+               (void)key_wait(NULL);
+}
+
+void
+xexit(status)
+       int     status;
+{
+       press_any_key();
+       exit(status);
+}