diff options
author | Theo de Raadt <deraadt@cvs.openbsd.org> | 1996-01-09 09:14:03 +0000 |
---|---|---|
committer | Theo de Raadt <deraadt@cvs.openbsd.org> | 1996-01-09 09:14:03 +0000 |
commit | c5e97a05603999728235836b1742439de02920fb (patch) | |
tree | d647bc64ff344f9f048183813f01fa2709425a88 /sys/arch/atari | |
parent | 236fa81f1c26d81e3c0dd6e575edbc754296bba0 (diff) |
from leo:
Common library for all tostools. (Waldi Ravens and myself)
Diffstat (limited to 'sys/arch/atari')
-rw-r--r-- | sys/arch/atari/stand/tostools/libtos/Makefile | 12 | ||||
-rw-r--r-- | sys/arch/atari/stand/tostools/libtos/bsdstart.s | 117 | ||||
-rw-r--r-- | sys/arch/atari/stand/tostools/libtos/eprintf.c | 82 | ||||
-rw-r--r-- | sys/arch/atari/stand/tostools/libtos/error.c | 105 | ||||
-rw-r--r-- | sys/arch/atari/stand/tostools/libtos/keywait.c | 68 | ||||
-rw-r--r-- | sys/arch/atari/stand/tostools/libtos/kparamb.h | 74 | ||||
-rw-r--r-- | sys/arch/atari/stand/tostools/libtos/libtos.h | 70 | ||||
-rw-r--r-- | sys/arch/atari/stand/tostools/libtos/xalloc.c | 57 | ||||
-rw-r--r-- | sys/arch/atari/stand/tostools/libtos/xexit.c | 60 |
9 files changed, 645 insertions, 0 deletions
diff --git a/sys/arch/atari/stand/tostools/libtos/Makefile b/sys/arch/atari/stand/tostools/libtos/Makefile new file mode 100644 index 00000000000..f89ac1cd0eb --- /dev/null +++ b/sys/arch/atari/stand/tostools/libtos/Makefile @@ -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 index 00000000000..39722062c83 --- /dev/null +++ b/sys/arch/atari/stand/tostools/libtos/bsdstart.s @@ -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 index 00000000000..60e07c57daf --- /dev/null +++ b/sys/arch/atari/stand/tostools/libtos/eprintf.c @@ -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 index 00000000000..fe5ff6f57d7 --- /dev/null +++ b/sys/arch/atari/stand/tostools/libtos/error.c @@ -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 index 00000000000..b0e73db52ad --- /dev/null +++ b/sys/arch/atari/stand/tostools/libtos/keywait.c @@ -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 index 00000000000..2c32467430a --- /dev/null +++ b/sys/arch/atari/stand/tostools/libtos/kparamb.h @@ -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 index 00000000000..7873d816b8d --- /dev/null +++ b/sys/arch/atari/stand/tostools/libtos/libtos.h @@ -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 index 00000000000..84b2f55cd4d --- /dev/null +++ b/sys/arch/atari/stand/tostools/libtos/xalloc.c @@ -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 index 00000000000..deb46724952 --- /dev/null +++ b/sys/arch/atari/stand/tostools/libtos/xexit.c @@ -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); +} |