aboutsummaryrefslogtreecommitdiff
path: root/libgloss/hp74x/io.c
diff options
context:
space:
mode:
Diffstat (limited to 'libgloss/hp74x/io.c')
-rw-r--r--libgloss/hp74x/io.c338
1 files changed, 0 insertions, 338 deletions
diff --git a/libgloss/hp74x/io.c b/libgloss/hp74x/io.c
deleted file mode 100644
index 054d90c..0000000
--- a/libgloss/hp74x/io.c
+++ /dev/null
@@ -1,338 +0,0 @@
-/*
- * io.c -- all the code to make GCC and the libraries run on
- * a bare target board.
- */
-
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <errno.h>
-
-#include "hppa-defs.h"
-
-extern char *_end; /* _end is set in the linker command file */
-
-/* just in case, most boards have at least some memory */
-#ifndef RAMSIZE
-# define RAMSIZE (char *)0x100000
-#endif
-
-int
-print(ptr)
-char *ptr;
-{
- while (*ptr)
- outbyte (*ptr++);
-}
-
-int
-putnum (Num)
-unsigned int Num;
-{
- char Buffer[9];
- int Count;
- char *BufPtr = Buffer;
- int Digit;
-
- for (Count = 7 ; Count >= 0 ; Count--) {
- Digit = (Num >> (Count * 4)) & 0xf;
-
- if (Digit <= 9)
- *BufPtr++ = (char) ('0' + Digit);
- else
- *BufPtr++ = (char) ('a' - 10 + Digit);
- }
-
- *BufPtr = (char) 0;
- print (Buffer);
- return;
-}
-
-int
-delay (x)
- int x;
-{
- int y = 17;
- while (x-- !=0)
- y = y^2;
-}
-
-/*
- * strobe -- do a zylons thing, toggling each led in sequence forever...
- */
-int
-zylons()
-{
- while (1) {
- strobe();
- }
-}
-
-/*
- * strobe -- toggle each led in sequence up and back once.
- */
-int
-strobe()
-{
- static unsigned char curled = 1;
- static unsigned char dir = 0;
-
- curled = 1;
- dir = 0;
- while (curled != 0) {
- led_putnum (curled);
- delay (70000);
- if (dir)
- curled >>= 1;
- else
- curled <<= 1;
-
- if (curled == 128) {
- dir = ~dir;
- }
- }
- curled = 1;
- dir = 0;
-}
-
-/*
- * iodc_io_call -- this makes a call into the IODC routine
- */
-int
-iodc_io_call(ep_address,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11)
-int ep_address, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11;
-{
- int (*iodc_entry_point)();
-
- iodc_entry_point = (int (*)())ep_address;
-
- return ((*iodc_entry_point)(arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11));
-}
-
-/*
- * pdc_call -- this makes a call into the PDC routine
- */
-int
-pdc_call(arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11)
- int arg0, arg1, arg2, arg3, arg4, arg5;
- int arg6, arg7, arg9, arg10, arg11;
-{
- return ( CALL_PDC(arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11));
-}
-
-/*
- * put_led -- put a bit pattern on the LED's.
- */
-int
-led_putnum (byte)
- unsigned short byte;
-{
- return (pdc_call(OPT_PDC_CHASSIS,0,byte));
-}
-
-
-/*
- * outbyte -- shove a byte out the serial port
- */
-int
-outbyte(byte)
- unsigned char byte;
-{
- int status;
- int R_addr[32];
- struct _dev *console = (struct _dev *)PGZ_CONSOLE_STRUCT;
-
- status = iodc_io_call(console->iodc_io, console->hpa, IO_CONSOLE_OUTPUT, console->spa,
- console->layer[0], R_addr, 0, &byte, 1, 0);
-
- switch(status)
- {
- case 0: return(1);
- default: return (-1);
- }
-}
-
-/*
- * inbyte -- get a byte from the serial port
- */
-unsigned char
-inbyte()
-{
- int status;
- int R_addr[32];
- char inbuf;
- struct _dev *console = (struct _dev *)PGZ_CONSOLE_STRUCT;
-
- while (status == 0) {
- status = iodc_io_call(console->iodc_io, console->hpa, IO_CONSOLE_INPUT, console->spa,
- console->layer[0], R_addr, 0, &inbuf, 1, 0);
-
- switch (status) {
- case 0:
- case 2: /* recoverable error */
- if (R_addr[0] != 0) { /* found a character */
- return(inbuf);
- }
- else
- break; /* error, no character */
- default: /* error, no character */
- return(0);
- }
- }
-}
-
-/*
- * read -- read bytes from the serial port. Ignore fd, since
- * we only have stdin.
- */
-int
-read(fd, buf, nbytes)
- int fd;
- char *buf;
- int nbytes;
-{
- int i = 0;
-
- for (i = 0; i < nbytes; i++) {
- *(buf + i) = inbyte();
- if ((*(buf + i) == '\n') || (*(buf + i) == '\r')) {
- (*(buf + i)) = 0;
- break;
- }
- }
- return (i);
-}
-
-/*
- * write -- write bytes to the serial port. Ignore fd, since
- * stdout and stderr are the same. Since we have no filesystem,
- * open will only return an error.
- */
-int
-write(fd, buf, nbytes)
- int fd;
- char *buf;
- int nbytes;
-{
- int i;
-
- for (i = 0; i < nbytes; i++) {
- if (*(buf + i) == '\n') {
- outbyte ('\r');
- }
- outbyte (*(buf + i));
- }
- return (nbytes);
-}
-
-/*
- * open -- open a file descriptor. We don't have a filesystem, so
- * we return an error.
- */
-int
-open(buf, flags, mode)
- char *buf;
- int flags;
- int mode;
-{
- errno = EIO;
- return (-1);
-}
-
-/*
- * close -- close a file descriptor. We don't need
- * to do anything, but pretend we did.
- */
-int
-close(fd)
- int fd;
-{
- return (0);
-}
-
-/*
- * sbrk -- changes heap size size. Get nbytes more
- * RAM. We just increment a pointer in what's
- * left of memory on the board.
- */
-char *
-sbrk(nbytes)
- int nbytes;
-{
- static char * heap_ptr = NULL;
- char * base;
-
- if (heap_ptr == NULL) {
- heap_ptr = (char *)&_end;
- }
-
- if ((RAMSIZE - heap_ptr) >= 0) {
- base = heap_ptr;
- heap_ptr += nbytes;
- return (heap_ptr);
- } else {
- errno = ENOMEM;
- return ((char *)-1);
- }
-}
-
-/*
- * isatty -- returns 1 if connected to a terminal device,
- * returns 0 if not. Since we're hooked up to a
- * serial port, we'll say yes return a 1.
- */
-int
-isatty(fd)
- int fd;
-{
- return (1);
-}
-
-/*
- * lseek -- move read/write pointer. Since a serial port
- * is non-seekable, we return an error.
- */
-off_t
-lseek(fd, offset, whence)
- int fd;
- off_t offset;
- int whence;
-{
- errno = ESPIPE;
- return ((off_t)-1);
-}
-
-/*
- * fstat -- get status of a file. Since we have no file
- * system, we just return an error.
- */
-int
-fstat(fd, buf)
- int fd;
- struct stat *buf;
-{
- errno = EIO;
- return (-1);
-}
-
-/*
- * getpid -- only one process, so just return 1.
- */
-#define __MYPID 1
-int
-getpid()
-{
- return __MYPID;
-}
-
-/*
- * kill -- assume mvme.S, and go out via exit...
- */
-int
-kill(pid, sig)
- int pid;
- int sig;
-{
- if(pid == __MYPID)
- _exit(sig);
- return 0;
-}