2006-01-31 Leif Ekblad <leif@rdos.net>

* configure.host: RDOS support added
        * libc/include/sys/config.h: Ditto.
        * libc/sys/rdos/Makefile.am, libc/sys/rdos/Makefile.in: New files.
        * libc/sys/rdos/aclocal.m4, libc/sys/rdos/chown.c: Ditto.
        * libc/sys/rdos/close.c, libc/sys/rdos/config.h: Ditto.
        * libc/sys/rdos/configure, libc/sys/rdos/configure.in: Ditto.
        * libc/sys/rdos/crt0.S, libc/sys/rdos/execve.c: Ditto.
        * libc/sys/rdos/fork.c, libc/sys/rdos/fstat.c: Ditto.
        * libc/sys/rdos/getenv.c, libc/sys/rdos/getpid.c: Ditto.
        * libc/sys/rdos/gettod.c, libc/sys/rdos/isatty.c: Ditto.
        * libc/sys/rdos/kill.c, libc/sys/rdos/link.c: Ditto.
        * libc/sys/rdos/lseek.c, libc/sys/rdos/open.c: Ditto.
        * libc/sys/rdos/rdos.S, libc/sys/rdos/rdos.h: Ditto.
        * libc/sys/rdos/rdoshelp.c, libc/sys/rdos/read.c: Ditto.
        * libc/sys/rdos/readlink.c, libc/sys/rdos/sbrk.c: Ditto.
        * libc/sys/rdos/stat.c, libc/sys/rdos/symlink.c: Ditto.
        * libc/sys/rdos/times.c, libc/sys/rdos/unlink.c: Ditto.
        * libc/sys/rdos/user.def, libc/sys/rdos/wait.c: Ditto.
        * libc/sys/rdos/write.c: Ditto.
This commit is contained in:
Jeff Johnston 2006-01-31 19:33:56 +00:00
parent 63a149a18f
commit d968b3c86f
36 changed files with 12877 additions and 1 deletions

View File

@ -1,3 +1,25 @@
2006-01-31 Leif Ekblad <leif@rdos.net>
* configure.host: RDOS support added
* libc/include/sys/config.h: Ditto.
* libc/sys/rdos/Makefile.am, libc/sys/rdos/Makefile.in: New files.
* libc/sys/rdos/aclocal.m4, libc/sys/rdos/chown.c: Ditto.
* libc/sys/rdos/close.c, libc/sys/rdos/config.h: Ditto.
* libc/sys/rdos/configure, libc/sys/rdos/configure.in: Ditto.
* libc/sys/rdos/crt0.S, libc/sys/rdos/execve.c: Ditto.
* libc/sys/rdos/fork.c, libc/sys/rdos/fstat.c: Ditto.
* libc/sys/rdos/getenv.c, libc/sys/rdos/getpid.c: Ditto.
* libc/sys/rdos/gettod.c, libc/sys/rdos/isatty.c: Ditto.
* libc/sys/rdos/kill.c, libc/sys/rdos/link.c: Ditto.
* libc/sys/rdos/lseek.c, libc/sys/rdos/open.c: Ditto.
* libc/sys/rdos/rdos.S, libc/sys/rdos/rdos.h: Ditto.
* libc/sys/rdos/rdoshelp.c, libc/sys/rdos/read.c: Ditto.
* libc/sys/rdos/readlink.c, libc/sys/rdos/sbrk.c: Ditto.
* libc/sys/rdos/stat.c, libc/sys/rdos/symlink.c: Ditto.
* libc/sys/rdos/times.c, libc/sys/rdos/unlink.c: Ditto.
* libc/sys/rdos/user.def, libc/sys/rdos/wait.c: Ditto.
* libc/sys/rdos/write.c: Ditto.
2006-01-24 Jeff Johnston <jjohnstn@redhat.com>
* acinclude.m4: Add nodefine to AM_INIT_AUTOMAKE macro invocation

View File

@ -362,6 +362,10 @@ case "${host}" in
h8500-*-elf*)
sys_dir=h8500hms
;;
i[34567]86-*-rdos*)
sys_dir=rdos
newlib_cflags="${newlib_cflags} -DMISSING_SYSCALL_NAMES"
;;
i[34567]86-*-sco*)
sys_dir=sysvi386
unix_dir=unix

View File

@ -59,7 +59,7 @@
/* in other words, go32 */
#define _FLOAT_RET double
#endif
#ifdef __linux__
#if defined(__linux__) || defined(__RDOS__)
/* we want the reentrancy structure to be returned by a function */
#define __DYNAMIC_REENT__
#define HAVE_GETDATE

View File

@ -0,0 +1,17 @@
## Process this file with automake to generate Makefile.in
AUTOMAKE_OPTIONS = cygnus
INCLUDES = $(NEWLIB_CFLAGS) $(CROSS_CFLAGS) $(TARGET_CFLAGS)
noinst_LIBRARIES = lib.a
lib_a_SOURCES = chown.c close.c execve.c fork.c fstat.c getenv.c \
getpid.c gettod.c isatty.c kill.c link.c lseek.c open.c rdoshelp.c \
rdos.S read.c readlink.c sbrk.c stat.c symlink.c times.c unlink.c \
wait.c write.c
all: crt0.o
ACLOCAL_AMFLAGS = -I ../../..
CONFIG_STATUS_DEPENDENCIES = $(newlib_basedir)/configure.host

View File

@ -0,0 +1,376 @@
# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am
# Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
SHELL = @SHELL@
srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
prefix = @prefix@
exec_prefix = @exec_prefix@
bindir = @bindir@
sbindir = @sbindir@
libexecdir = @libexecdir@
datadir = @datadir@
sysconfdir = @sysconfdir@
sharedstatedir = @sharedstatedir@
localstatedir = @localstatedir@
libdir = @libdir@
infodir = @infodir@
mandir = @mandir@
includedir = @includedir@
oldincludedir = /usr/include
DESTDIR =
pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
top_builddir = .
ACLOCAL = @ACLOCAL@
AUTOCONF = @AUTOCONF@
AUTOMAKE = @AUTOMAKE@
AUTOHEADER = @AUTOHEADER@
INSTALL = @INSTALL@
INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS)
INSTALL_DATA = @INSTALL_DATA@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
transform = @program_transform_name@
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_alias = @build_alias@
build_triplet = @build@
host_alias = @host_alias@
host_triplet = @host@
target_alias = @target_alias@
target_triplet = @target@
AR = @AR@
AS = @AS@
CC = @CC@
CPP = @CPP@
CXX = @CXX@
CXXCPP = @CXXCPP@
DLLTOOL = @DLLTOOL@
EXEEXT = @EXEEXT@
GCJ = @GCJ@
GCJFLAGS = @GCJFLAGS@
LDFLAGS = @LDFLAGS@
LIBTOOL = @LIBTOOL@
LN_S = @LN_S@
MAINT = @MAINT@
MAKEINFO = @MAKEINFO@
NEWLIB_CFLAGS = @NEWLIB_CFLAGS@
OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
RANLIB = @RANLIB@
STRIP = @STRIP@
VERSION = @VERSION@
aext = @aext@
libm_machine_dir = @libm_machine_dir@
machine_dir = @machine_dir@
newlib_basedir = @newlib_basedir@
oext = @oext@
sys_dir = @sys_dir@
AUTOMAKE_OPTIONS = cygnus
INCLUDES = $(NEWLIB_CFLAGS) $(CROSS_CFLAGS) $(TARGET_CFLAGS)
noinst_LIBRARIES = lib.a
lib_a_SOURCES = chown.c close.c execve.c fork.c fstat.c getenv.c getpid.c gettod.c isatty.c kill.c link.c lseek.c open.c rdoshelp.c rdos.S read.c readlink.c sbrk.c stat.c symlink.c times.c unlink.c wait.c write.c
ACLOCAL_AMFLAGS = -I ../../..
CONFIG_STATUS_DEPENDENCIES = $(newlib_basedir)/configure.host
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
mkinstalldirs = $(SHELL) $(top_srcdir)/../../../../mkinstalldirs
CONFIG_CLEAN_FILES =
LIBRARIES = $(noinst_LIBRARIES)
DEFS = @DEFS@ -I. -I$(srcdir)
CPPFLAGS = @CPPFLAGS@
LIBS = @LIBS@
lib_a_LIBADD =
lib_a_OBJECTS = chown.$(OBJEXT) close.$(OBJEXT) execve.$(OBJEXT) \
fork.$(OBJEXT) fstat.$(OBJEXT) getenv.$(OBJEXT) getpid.$(OBJEXT) \
gettod.$(OBJEXT) isatty.$(OBJEXT) kill.$(OBJEXT) link.$(OBJEXT) \
lseek.$(OBJEXT) open.$(OBJEXT) rdoshelp.$(OBJEXT) rdos.$(OBJEXT) \
read.$(OBJEXT) readlink.$(OBJEXT) sbrk.$(OBJEXT) stat.$(OBJEXT) \
symlink.$(OBJEXT) times.$(OBJEXT) unlink.$(OBJEXT) wait.$(OBJEXT) \
write.$(OBJEXT)
CFLAGS = @CFLAGS@
COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
CCLD = $(CC)
LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@
DIST_COMMON = Makefile.am Makefile.in aclocal.m4 configure configure.in
DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
TAR = tar
GZIP_ENV = --best
SOURCES = $(lib_a_SOURCES)
OBJECTS = $(lib_a_OBJECTS)
all: all-redirect
.SUFFIXES:
.SUFFIXES: .S .c .lo .o .obj .s
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
cd $(top_srcdir) && $(AUTOMAKE) --cygnus Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
cd $(top_builddir) \
&& CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ configure.in \
../../../acinclude.m4 ../../../aclocal.m4 \
../../../libtool.m4
cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
$(SHELL) ./config.status --recheck
$(srcdir)/configure: @MAINTAINER_MODE_TRUE@$(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES)
cd $(srcdir) && $(AUTOCONF)
mostlyclean-noinstLIBRARIES:
clean-noinstLIBRARIES:
-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
distclean-noinstLIBRARIES:
maintainer-clean-noinstLIBRARIES:
.c.o:
$(COMPILE) -c $<
# FIXME: We should only use cygpath when building on Windows,
# and only if it is available.
.c.obj:
$(COMPILE) -c `cygpath -w $<`
.s.o:
$(COMPILE) -c $<
.S.o:
$(COMPILE) -c $<
mostlyclean-compile:
-rm -f *.o core *.core
-rm -f *.$(OBJEXT)
clean-compile:
distclean-compile:
-rm -f *.tab.c
maintainer-clean-compile:
.c.lo:
$(LIBTOOL) --mode=compile $(COMPILE) -c $<
.s.lo:
$(LIBTOOL) --mode=compile $(COMPILE) -c $<
.S.lo:
$(LIBTOOL) --mode=compile $(COMPILE) -c $<
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
distclean-libtool:
maintainer-clean-libtool:
lib.a: $(lib_a_OBJECTS) $(lib_a_DEPENDENCIES)
-rm -f lib.a
$(AR) cru lib.a $(lib_a_OBJECTS) $(lib_a_LIBADD)
$(RANLIB) lib.a
tags: TAGS
ID: $(HEADERS) $(SOURCES) $(LISP)
list='$(SOURCES) $(HEADERS)'; \
unique=`for i in $$list; do echo $$i; done | \
awk ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
here=`pwd` && cd $(srcdir) \
&& mkid -f$$here/ID $$unique $(LISP)
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP)
tags=; \
here=`pwd`; \
list='$(SOURCES) $(HEADERS)'; \
unique=`for i in $$list; do echo $$i; done | \
awk ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \
|| (cd $(srcdir) && etags -o $$here/TAGS $(ETAGS_ARGS) $$tags $$unique $(LISP))
mostlyclean-tags:
clean-tags:
distclean-tags:
-rm -f TAGS ID
maintainer-clean-tags:
distdir = $(PACKAGE)-$(VERSION)
top_distdir = $(distdir)
# This target untars the dist file and tries a VPATH configuration. Then
# it guarantees that the distribution is self-contained by making another
# tarfile.
distcheck: dist
-rm -rf $(distdir)
GZIP=$(GZIP_ENV) $(TAR) zxf $(distdir).tar.gz
mkdir $(distdir)/=build
mkdir $(distdir)/=inst
dc_install_base=`cd $(distdir)/=inst && pwd`; \
cd $(distdir)/=build \
&& ../configure --srcdir=.. --prefix=$$dc_install_base \
&& $(MAKE) $(AM_MAKEFLAGS) \
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
&& $(MAKE) $(AM_MAKEFLAGS) check \
&& $(MAKE) $(AM_MAKEFLAGS) install \
&& $(MAKE) $(AM_MAKEFLAGS) installcheck \
&& $(MAKE) $(AM_MAKEFLAGS) dist
-rm -rf $(distdir)
@banner="$(distdir).tar.gz is ready for distribution"; \
dashes=`echo "$$banner" | sed s/./=/g`; \
echo "$$dashes"; \
echo "$$banner"; \
echo "$$dashes"
dist: distdir
-chmod -R a+r $(distdir)
GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir)
-rm -rf $(distdir)
dist-all: distdir
-chmod -R a+r $(distdir)
GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir)
-rm -rf $(distdir)
distdir: $(DISTFILES)
-rm -rf $(distdir)
mkdir $(distdir)
-chmod 777 $(distdir)
@for file in $(DISTFILES); do \
if test -f $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
cp -pr $$d/$$file $(distdir)/$$file; \
else \
test -f $(distdir)/$$file \
|| ln $$d/$$file $(distdir)/$$file 2> /dev/null \
|| cp -p $$d/$$file $(distdir)/$$file || :; \
fi; \
done
info-am:
info: info-am
dvi-am:
dvi: dvi-am
check-am:
check: check-am
installcheck-am:
installcheck: installcheck-am
install-info-am:
install-info: install-info-am
install-exec-am:
install-exec: install-exec-am
install-data-am:
install-data: install-data-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
install: install-am
uninstall-am:
uninstall: uninstall-am
all-am: Makefile $(LIBRARIES)
all-redirect: all-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
installdirs:
mostlyclean-generic:
clean-generic:
distclean-generic:
-rm -f Makefile $(CONFIG_CLEAN_FILES)
-rm -f config.cache config.log stamp-h stamp-h[0-9]*
maintainer-clean-generic:
mostlyclean-am: mostlyclean-noinstLIBRARIES mostlyclean-compile \
mostlyclean-libtool mostlyclean-tags \
mostlyclean-generic
mostlyclean: mostlyclean-am
clean-am: clean-noinstLIBRARIES clean-compile clean-libtool clean-tags \
clean-generic mostlyclean-am
clean: clean-am
distclean-am: distclean-noinstLIBRARIES distclean-compile \
distclean-libtool distclean-tags distclean-generic \
clean-am
-rm -f libtool
distclean: distclean-am
-rm -f config.status
maintainer-clean-am: maintainer-clean-noinstLIBRARIES \
maintainer-clean-compile maintainer-clean-libtool \
maintainer-clean-tags maintainer-clean-generic \
distclean-am
@echo "This command is intended for maintainers to use;"
@echo "it deletes files that may require special tools to rebuild."
maintainer-clean: maintainer-clean-am
-rm -f config.status
.PHONY: mostlyclean-noinstLIBRARIES distclean-noinstLIBRARIES \
clean-noinstLIBRARIES maintainer-clean-noinstLIBRARIES \
mostlyclean-compile distclean-compile clean-compile \
maintainer-clean-compile mostlyclean-libtool distclean-libtool \
clean-libtool maintainer-clean-libtool tags mostlyclean-tags \
distclean-tags clean-tags maintainer-clean-tags distdir info-am info \
dvi-am dvi check check-am installcheck-am installcheck install-info-am \
install-info install-exec-am install-exec install-data-am install-data \
install-am install uninstall-am uninstall all-redirect all-am all \
installdirs mostlyclean-generic distclean-generic clean-generic \
maintainer-clean-generic clean mostlyclean distclean maintainer-clean
all: crt0.o
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

1226
newlib/libc/sys/rdos/aclocal.m4 vendored Normal file

File diff suppressed because it is too large Load Diff

11
newlib/libc/sys/rdos/chown.c Executable file
View File

@ -0,0 +1,11 @@
#include "config.h"
#include <_ansi.h>
#include <_syslist.h>
#include <errno.h>
#include <sys/types.h>
int chown(const char *path, uid_t owner, gid_t group)
{
errno = ENOSYS;
return -1;
}

View File

@ -0,0 +1,36 @@
/*#######################################################################
# RDOS operating system
# Copyright (C) 1988-2006, Leif Ekblad
#
# This library is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published
# by the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# The author of this program may be contacted at leif@rdos.net
#
# close.c
# close function implementation
#
##########################################################################*/
#include "config.h"
#include <_ansi.h>
#include <_syslist.h>
#include <errno.h>
#include "rdos.h"
int close(int fildes)
{
RdosCloseFile(fildes);
return 0;
}

View File

@ -0,0 +1 @@
/* Place holder for future configuration information. */

1876
newlib/libc/sys/rdos/configure vendored Executable file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,12 @@
dnl This is the newlib/libc/sys/rdos configure.in file.
dnl Process this file with autoconf to produce a configure script.
AC_PREREQ(2.5)
AC_INIT(close.c)
dnl Can't be done in NEWLIB_CONFIGURE because that confuses automake.
AC_CONFIG_AUX_DIR(../../../..)
NEWLIB_CONFIGURE(../../..)
AC_OUTPUT(Makefile)

406
newlib/libc/sys/rdos/crt0.S Normal file
View File

@ -0,0 +1,406 @@
/*#######################################################################
# RDOS operating system
# Copyright (C) 1988-2006, Leif Ekblad
#
# This library is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published
# by the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# The author of this program may be contacted at leif@rdos.net
#
# crt0.S
# GCC startupcode for RDOS
#
##########################################################################*/
#include "user.def"
KEY_ENTRIES = 256
.macro UserGate nr
.byte 0x9A
.long \nr
.word 2
.endm
.data
.align 8
_key_section:
.word 0
_key_ref_arr:
.long 0
_key_dtor_arr:
.long 0
.text
.align 4
/*##########################################################################
#
# Name : _start
#
# Purpose....: GCC startup-code
#
##########################################################################*/
.global _start
_start:
call get_impure_data_size
movl %eax,%ecx
UserGate allocate_app_mem_nr
xorl %eax,%eax
.byte 0x64
movl %edx,(%eax)
movl %edx,%edi
rep
stosb
pushl %edx
movl $(4 * KEY_ENTRIES),%eax
movl %eax,%ecx
UserGate allocate_app_mem_nr
movl $4,%eax
.byte 0x64
movl %edx,(%eax)
movl %edx,%edi
xorl %eax,%eax
rep
stosb
movl $(4 * KEY_ENTRIES),%eax
movl %eax,%ecx
UserGate allocate_app_mem_nr
movl %edx,_key_ref_arr
movl %edx,%edi
xorl %eax,%eax
rep
stosb
movl $(4 * KEY_ENTRIES),%eax
movl %eax,%ecx
UserGate allocate_app_mem_nr
movl %edx,_key_dtor_arr
movl %edx,%edi
xorl %eax,%eax
rep
stosb
UserGate create_user_section_nr
movw %bx,_key_section
call __init_rdos
add $4, %esp
movl $0x1000,%eax
UserGate allocate_app_mem_nr
pushl %edx
UserGate get_cmd_line_nr
xorl %ecx,%ecx
xorb %ah,%ah
arg_loop:
movl %edi,(%edx)
addl $4,%edx
movb (%edi),%al
orb %al,%al
je arg_done
arg_scan:
movb (%edi),%al
orb %al,%al
je next_arg
cmpb $0x22,%al
jne arg_no_quote
xorb $1,%ah
jmp arg_scan_next
arg_no_quote:
orb %ah,%ah
jnz arg_scan_next
cmpb $0x20,%al
je next_arg
cmpb $0x8,%al
je next_arg
arg_scan_next:
incl %edi
jmp arg_scan
next_arg:
incl %ecx
to_next_arg:
orb %al,%al
je arg_done
xorb %al,%al
movb %al,(%edi)
incl %edi
movb (%edi),%al
cmpb $0x20,%al
je to_next_arg
cmpb $0x8,%al
je to_next_arg
jmp arg_loop
arg_done:
int $3
pushl %ecx
call main
add $8, %esp
pushl %eax
call exit
/*##########################################################################
#
# Name : _exit
#
# Purpose....: GCC exit-code
#
##########################################################################*/
.global _exit
_exit:
pushl %ebp
movl %esp,%ebp
movl 8(%ebp),%eax
UserGate unload_exe_nr
/*##########################################################################
#
# Name : __getreent
#
# Purpose....: ?
#
##########################################################################*/
.global __getreent
__getreent:
xorl %eax,%eax
.byte 0x64
movl (%eax),%eax
ret
/*##########################################################################
#
# Name : __rdos_thread_key_create
#
# Purpose....: Emulate GCC pthread_key_create
#
# Parameters.: dtor
#
# Returns....: Key index
#
##########################################################################*/
.global __rdos_thread_key_create
__rdos_thread_key_create:
int $3
pushl %ebp
movl %esp,%ebp
pushl %ebx
pushl %ecx
mov _key_section,%bx
UserGate enter_user_section_nr
movl _key_ref_arr,%ebx
movl KEY_ENTRIES,%ecx
rtkc_scan_loop:
movl (%ebx), %eax
orl %eax, %eax
jz rtkc_entry_found
add $4, %ebx
loop rtkc_scan_loop
movl $-1, %eax
jmp rtkc_leave
rtkc_entry_found:
movb $255,3(%ebx)
subl _key_ref_arr,%ebx
addl _key_dtor_arr,%ebx
movl 8(%ebp),%eax
movl %eax,(%ebx)
subl _key_dtor_arr,%ebx
movl %ebx,%eax
rtkc_leave:
mov _key_section, %bx
UserGate leave_user_section_nr
popl %ecx
popl %ebx
leave
ret
/*##########################################################################
#
# Name : __rdos_thread_key_delete
#
# Purpose....: Emulate GCC pthread_key_delete
#
# Parameters.: index
#
# Returns....: result
#
##########################################################################*/
.global __rdos_thread_key_delete
__rdos_thread_key_delete:
int $3
pushl %ebp
movl %esp,%ebp
pushl %ebx
mov _key_section,%bx
UserGate enter_user_section_nr
movl 8(%ebp),%ebx
testb $3,%bl
jnz rtkd_fail
cmpl $(4 * KEY_ENTRIES),%ebx
jae rtkd_fail
addl _key_ref_arr,%ebx
movb $0,3(%ebx)
mov (%ebx),%eax
orl %eax,%eax
jz rtkd_ok
subl _key_ref_arr,%ebx
movl $0,(%ebx)
jmp rtkd_ok
rtkd_fail:
movl $1,%eax
jmp rtkd_leave
rtkd_ok:
xorl %eax,%eax
rtkd_leave:
mov _key_section, %bx
UserGate leave_user_section_nr
popl %ebx
leave
ret
/*##########################################################################
#
# Name : __rdos_thread_getspecific
#
# Purpose....: Emulate GCC pthread_getspecific
#
# Parameters.: index
#
# Returns....: value
#
##########################################################################*/
.global __rdos_thread_getspecific
__rdos_thread_getspecific:
int $3
pushl %ebp
movl %esp,%ebp
pushl %ebx
movl 8(%ebp),%ebx
testb $3,%bl
jnz rtg_fail
cmpl $(4 * KEY_ENTRIES),%ebx
jae rtg_fail
movl $4,%eax
.byte 0x64
movl (%eax),%eax
addl %eax,%ebx
movl (%ebx),%eax
jmp rtg_done
rtg_fail:
xorl %eax,%eax
rtg_done:
popl %ebx
leave
ret
/*##########################################################################
#
# Name : __rdos_thread_setspecific
#
# Purpose....: Emulate GCC pthread_setspecific
#
# Parameters.: index
# value
#
##########################################################################*/
.global __rdos_thread_setspecific
__rdos_thread_setspecific:
int $3
pushl %ebp
movl %esp,%ebp
pushl %ebx
pushl %ecx
movl 8(%ebp),%ebx
testb $3,%bl
jnz rts_fail
cmpl $(4 * KEY_ENTRIES),%ebx
jae rts_fail
movl $4,%eax
.byte 0x64
movl (%eax),%eax
addl %eax,%ebx
movl 12(%ebp),%eax
movl %eax,(%ebx)
xorl %eax,%eax
jmp rts_done
rts_fail:
movl $1,%eax
rts_done:
popl %ebx
leave
ret

View File

@ -0,0 +1,10 @@
#include "config.h"
#include <_ansi.h>
#include <_syslist.h>
#include <errno.h>
int execve( char *name, char **argv, char **env)
{
errno = ENOSYS;
return -1;
}

10
newlib/libc/sys/rdos/fork.c Executable file
View File

@ -0,0 +1,10 @@
#include "config.h"
#include <_ansi.h>
#include <_syslist.h>
#include <errno.h>
int fork()
{
errno = ENOSYS;
return -1;
}

45
newlib/libc/sys/rdos/fstat.c Executable file
View File

@ -0,0 +1,45 @@
/*#######################################################################
# RDOS operating system
# Copyright (C) 1988-2006, Leif Ekblad
#
# This library is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published
# by the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# The author of this program may be contacted at leif@rdos.net
#
# fstat.c
# fstat function implementation
#
##########################################################################*/
#include "config.h"
#include <_ansi.h>
#include <_syslist.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <errno.h>
int fstat(int fd, struct stat *st)
{
if (fd < 3)
{
st->st_mode = S_IFCHR;
st->st_blksize = 0;
return 0;
}
else
{
return -1;
}
}

View File

@ -0,0 +1,83 @@
/*#######################################################################
# RDOS operating system
# Copyright (C) 1988-2006, Leif Ekblad
#
# This library is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published
# by the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# The author of this program may be contacted at leif@rdos.net
#
# getenv.c
# getenv function implementation
#
##########################################################################*/
/*
FUNCTION
<<getenv>>---look up environment variable
INDEX
getenv
INDEX
environ
ANSI_SYNOPSIS
#include <stdlib.h>
char *getenv(const char *<[name]>);
TRAD_SYNOPSIS
#include <stdlib.h>
char *getenv(<[name]>)
char *<[name]>;
DESCRIPTION
<<getenv>> searches the list of environment variable names and values
(using the global pointer ``<<char **environ>>'') for a variable whose
name matches the string at <[name]>. If a variable name matches,
<<getenv>> returns a pointer to the associated value.
RETURNS
A pointer to the (string) value of the environment variable, or
<<NULL>> if there is no such environment variable.
PORTABILITY
<<getenv>> is ANSI, but the rules for properly forming names of environment
variables vary from one system to another.
This function is not thread-safe, but does it need to be??
There is an reentrant class that should be used if reentrance is required
*/
#include <stdlib.h>
#include <stddef.h>
#include <string.h>
#include <rdos.h>
static char envbuf[256];
char *getenv(const char *name)
{
int handle;
char *ptr = 0;
handle = RdosOpenSysEnv();
if (handle)
{
if (RdosFindEnvVar(handle, name, envbuf))
ptr = envbuf;
}
RdosCloseEnv(handle);
return ptr;
}

View File

@ -0,0 +1,10 @@
#include "config.h"
#include <_ansi.h>
#include <_syslist.h>
#include <errno.h>
int getpid()
{
errno = ENOSYS;
return -1;
}

View File

@ -0,0 +1,15 @@
#include "config.h"
#include <_ansi.h>
#include <_syslist.h>
#include <sys/time.h>
#include <sys/times.h>
#include <errno.h>
struct timeval;
struct timezone;
int gettimeofday(struct timeval *ptimeval, struct timezone *ptimezone)
{
errno = ENOSYS;
return -1;
}

View File

@ -0,0 +1,9 @@
#include "config.h"
#include <_ansi.h>
#include <_syslist.h>
#include <errno.h>
int isatty(int file)
{
return 0;
}

View File

@ -0,0 +1,10 @@
#include "config.h"
#include <_ansi.h>
#include <_syslist.h>
#include <errno.h>
int kill(int pid, int sig)
{
errno = ENOSYS;
return -1;
}

View File

@ -0,0 +1,10 @@
#include "config.h"
#include <_ansi.h>
#include <_syslist.h>
#include <errno.h>
int link(char *existing, char *new)
{
errno = ENOSYS;
return -1;
}

59
newlib/libc/sys/rdos/lseek.c Executable file
View File

@ -0,0 +1,59 @@
/*#######################################################################
# RDOS operating system
# Copyright (C) 1988-2006, Leif Ekblad
#
# This library is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published
# by the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# The author of this program may be contacted at leif@rdos.net
#
# lseek.c
# lseek function implementation
#
##########################################################################*/
#include "config.h"
#include <_ansi.h>
#include <_syslist.h>
#include <unistd.h>
#include <errno.h>
#include <rdos.h>
off_t lseek(int file, off_t pos, int whence)
{
off_t temp;
switch (whence)
{
case SEEK_CUR:
temp = RdosGetFilePos(file);
temp += pos;
RdosSetFilePos(file, temp);
return temp;
case SEEK_SET:
RdosSetFilePos(file, pos);
return pos;
case SEEK_END:
temp = RdosGetFilePos(file);
temp += pos;
RdosSetFilePos(file, temp);
return temp;
default:
errno = EINVAL;
return - 1;
}
}

59
newlib/libc/sys/rdos/open.c Executable file
View File

@ -0,0 +1,59 @@
/*#######################################################################
# RDOS operating system
# Copyright (C) 1988-2006, Leif Ekblad
#
# This library is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published
# by the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# The author of this program may be contacted at leif@rdos.net
#
# open.c
# open function implementation
#
##########################################################################*/
#include "config.h"
#include <_ansi.h>
#include <_syslist.h>
#include <fcntl.h>
#include <errno.h>
#include "rdos.h"
#include <stdarg.h>
int open(const char *file, int flags, ...)
{
int handle;
int pos;
if (flags & O_CREAT)
handle = RdosCreateFile(file, flags);
else
handle = RdosOpenFile(file, flags);
if (handle >= 0)
{
if (flags & O_APPEND)
{
pos = RdosGetFileSize(handle);
RdosSetFilePos(handle, pos);
}
if (flags & O_TRUNC)
RdosSetFileSize(handle, 0);
return handle;
}
else
return -1;
}

7528
newlib/libc/sys/rdos/rdos.S Normal file

File diff suppressed because it is too large Load Diff

344
newlib/libc/sys/rdos/rdos.h Executable file
View File

@ -0,0 +1,344 @@
#ifndef _RDOS_H
#define _RDOS_H
#ifdef __cplusplus
extern "C" {
#endif
//#undef WIN32
#define FILE_ATTRIBUTE_READONLY 0x1
#define FILE_ATTRIBUTE_HIDDEN 0x2
#define FILE_ATTRIBUTE_SYSTEM 0x4
#define FILE_ATTRIBUTE_DIRECTORY 0x10
#define FILE_ATTRIBUTE_ARCHIVE 0x20
#define FILE_ATTRIBUTE_NORMAL 0x80
#define LGOP_NULL 0
#define LGOP_NONE 1
#define LGOP_OR 2
#define LGOP_AND 3
#define LGOP_XOR 4
#define LGOP_INVERT 5
#define LGOP_INVERT_OR 6
#define LGOP_INVERT_AND 7
#define LGOP_INVERT_XOR 8
#define LGOP_ADD 9
#define LGOP_SUBTRACT 10
#define LGOP_MULTIPLY 11
#define getred(pgc) (((pgc)>>16)&0xFF)
#define getgreen(pgc) (((pgc)>>8)&0xFF)
#define getblue(pgc) ((pgc)&0xFF)
#define mkcolor(r,g,b) (((r)<<16)|((g)<<8)|(b))
typedef struct ThreadState
{
short int ID;
char Name[32];
unsigned long MsbTime;
unsigned long LsbTime;
char List[32];
long Offset;
short int Sel;
} ThreadState;
#ifdef __GNUC__
#define __stdcall
#else
#if (sizeof(int) == 2)
#define __stdcall
#endif
#endif
short int __stdcall RdosSwapShort(short int val);
long __stdcall RdosSwapLong(long val);
void __stdcall RdosSetTextMode();
int __stdcall RdosSetVideoMode(int *BitsPerPixel, int *xres, int *yres, int *linesize, void **buffer);
void __stdcall RdosSetClipRect(int handle, int xmin, int ymin, int xmax, int ymax);
void __stdcall RdosClearClipRect(int handle);
void __stdcall RdosSetDrawColor(int handle, int color);
void __stdcall RdosSetLGOP(int handle, int lgop);
void __stdcall RdosSetHollowStyle(int handle);
void __stdcall RdosSetFilledStyle(int handle);
int __stdcall RdosOpenFont(int height);
void __stdcall RdosCloseFont(int font);
void __stdcall RdosGetStringMetrics(int font, const char *str, int *width, int *height);
void __stdcall RdosSetFont(int handle, int font);
int __stdcall RdosGetPixel(int handle, int x, int y);
void __stdcall RdosSetPixel(int handle, int x, int y);
void __stdcall RdosBlit(int SrcHandle, int DestHandle, int width, int height,
int SrcX, int SrcY, int DestX, int DestY);
void __stdcall RdosDrawMask(int handle, void *mask, int RowSize, int width, int height,
int SrcX, int SrcY, int DestX, int DestY);
void __stdcall RdosDrawLine(int handle, int x1, int y1, int x2, int y2);
void __stdcall RdosDrawString(int handle, int x, int y, const char *str);
void __stdcall RdosDrawRect(int handle, int x, int y, int width, int height);
void __stdcall RdosDrawEllipse(int handle, int x, int y, int width, int height);
int __stdcall RdosCreateBitmap(int BitsPerPixel, int width, int height);
int __stdcall RdosDuplicateBitmapHandle(int handle);
void __stdcall RdosCloseBitmap(int handle);
int __stdcall RdosCreateStringBitmap(int font, const char *str);
void __stdcall RdosGetBitmapInfo(int handle, int *BitPerPixel, int *width, int *height,
int *linesize, void **buffer);
int __stdcall RdosCreateSprite(int DestHandle, int BitmapHandle, int MaskHandle, int lgop);
void __stdcall RdosCloseSprite(int handle);
void __stdcall RdosShowSprite(int handle);
void __stdcall RdosHideSprite(int handle);
void __stdcall RdosMoveSprite(int handle, int x, int y);
void __stdcall RdosSetForeColor(int color);
void __stdcall RdosSetBackColor(int color);
int __stdcall RdosGetMemSize(void *ptr);
void *__stdcall RdosAllocateMem(int Size);
void __stdcall RdosFreeMem(void *ptr);
int __stdcall RdosAppDebug();
int __stdcall RdosOpenCom(int ID, long BaudRate, char Parity, char DataBits, char StopBits, int SendBufSize, int RecBufSize);
void __stdcall RdosCloseCom(int Handle);
void __stdcall RdosFlushCom(int Handle);
char __stdcall RdosReadCom(int Handle);
int __stdcall RdosWriteCom(int Handle, char Val);
void __stdcall RdosEnableCts(int Handle);
void __stdcall RdosDisableCts(int Handle);
void __stdcall RdosEnableAutoRts(int Handle);
void __stdcall RdosDisableAutoRts(int Handle);
void __stdcall RdosSetDtr(int Handle);
void __stdcall RdosResetDtr(int Handle);
void __stdcall RdosSetRts(int Handle);
void __stdcall RdosResetRts(int Handle);
int __stdcall RdosGetReceiveBufferSpace(int Handle);
int __stdcall RdosGetSendBufferSpace(int Handle);
void __stdcall RdosWaitForSendCompletedCom(int Handle);
int __stdcall RdosOpenFile(const char *FileName, char Access);
int __stdcall RdosCreateFile(const char *FileName, int Attrib);
void __stdcall RdosCloseFile(int Handle);
int __stdcall RdosIsDevice(int Handle);
int __stdcall RdosDuplFile(int Handle);
long __stdcall RdosGetFileSize(int Handle);
void __stdcall RdosSetFileSize(int Handle, long Size);
long __stdcall RdosGetFilePos(int Handle);
void __stdcall RdosSetFilePos(int Handle, long Pos);
int __stdcall RdosReadFile(int Handle, void *Buf, int Size);
int __stdcall RdosWriteFile(int Handle, const void *Buf, int Size);
void __stdcall RdosGetFileTime(int Handle, unsigned long *MsbTime, unsigned long *LsbTime);
void __stdcall RdosSetFileTime(int Handle, unsigned long MsbTime, unsigned long LsbTime);
int __stdcall RdosCreateMapping(int Size);
int __stdcall RdosCreateNamedMapping(const char *Name, int Size);
int __stdcall RdosCreateNamedFileMapping(const char *Name, int Size, int FileHandle);
int __stdcall RdosOpenNamedMapping(const char *Name);
void __stdcall RdosSyncMapping(int Handle);
void __stdcall RdosCloseMapping(int Handle);
void __stdcall RdosMapView(int Handle, int Offset, void *Base, int Size);
void __stdcall RdosUnmapView(int Handle);
int __stdcall RdosSetCurDrive(int Drive);
int __stdcall RdosGetCurDrive();
int __stdcall RdosSetCurDir(const char *PathName);
int __stdcall RdosGetCurDir(int Drive, char *PathName);
int __stdcall RdosMakeDir(const char *PathName);
int __stdcall RdosRemoveDir(const char *PathName);
int __stdcall RdosRenameFile(const char *ToName, const char *FromName);
int __stdcall RdosDeleteFile(const char *PathName);
int __stdcall RdosGetFileAttribute(const char *PathName, int *Attribute);
int __stdcall RdosSetFileAttribute(const char *PathName, int Attribute);
int __stdcall RdosOpenDir(const char *PathName);
void __stdcall RdosCloseDir(int Handle);
int __stdcall RdosReadDir(int Handle, int EntryNr, int MaxNameSize, char *PathName, long *FileSize, int *Attribute, unsigned long *MsbTime, unsigned long *LsbTime);
int __stdcall RdosGetThreadState(int ThreadNr, ThreadState *State);
int __stdcall RdosSuspendThread(int ThreadNr);
void __stdcall RdosCpuReset();
void __stdcall RdosGetVersion(int *Major, int *Minor, int *Release);
void __stdcall RdosCreateThread(void (*Start)(void *Param), const char *Name, void *Param, int StackSize);
void __stdcall RdosTerminateThread();
int __stdcall RdosGetThreadHandle();
int __stdcall RdosExec(const char *prog, const char *param);
int __stdcall RdosSpawn(const char *prog, const char *param, const char *startdir);
void __stdcall RdosWaitMilli(int ms);
void __stdcall RdosGetTics(unsigned long *msb, unsigned long *lsb);
void __stdcall RdosTicsToRecord(unsigned long msb, unsigned long lsb, int *year, int *month, int *day, int *hour, int *min, int *sec, int *milli);
void __stdcall RdosRecordToTics(unsigned long *msb, unsigned long *lsb, int year, int month, int day, int hour, int min, int sec, int milli);
int __stdcall RdosDayOfWeek(int year, int month, int day);
void __stdcall RdosGetSysTime(int *year, int *month, int *day, int *hour, int *min, int *sec, int *milli);
void __stdcall RdosGetTime(int *year, int *month, int *day, int *hour, int *min, int *sec, int *milli);
void __stdcall RdosSetTime(int year, int month, int day, int hour, int min, int sec, int milli);
void __stdcall RdosAddTics(unsigned long *msb, unsigned long *lsb, long tics);
void __stdcall RdosAddMilli(unsigned long *msb, unsigned long *lsb, long ms);
void __stdcall RdosAddSec(unsigned long *msb, unsigned long *lsb, long sec);
void __stdcall RdosAddMin(unsigned long *msb, unsigned long *lsb, long min);
void __stdcall RdosAddHour(unsigned long *msb, unsigned long *lsb, long hour);
void __stdcall RdosAddDay(unsigned long *msb, unsigned long *lsb, long day);
int __stdcall RdosSyncTime(long IP);
void __stdcall RdosDecodeMsbTics(unsigned long msb, int *days, int *hours);
void __stdcall RdosDecodeLsbTics(unsigned long lsb, int *min, int *sec, int *milli, int *micro);
int __stdcall RdosCreateSection();
void __stdcall RdosDeleteSection(int Handle);
void __stdcall RdosEnterSection(int Handle);
void __stdcall RdosLeaveSection(int Handle);
int __stdcall RdosCreateWait();
void __stdcall RdosCloseWait(int Handle);
void * __stdcall RdosCheckWait(int Handle);
void * __stdcall RdosWaitForever(int Handle);
void * __stdcall RdosWaitTimeout(int Handle, int MillSec);
void __stdcall RdosStopWait(int Handle);
void __stdcall RdosRemoveWait(int Handle, void *ID);
void __stdcall RdosAddWaitForKeyboard(int Handle, void *ID);
void __stdcall RdosAddWaitForMouse(int Handle, void *ID);
void __stdcall RdosAddWaitForCom(int Handle, int ComHandle, void *ID);
void __stdcall RdosAddWaitForAdc(int Handle, int AdcHandle, void *ID);
int __stdcall RdosCreateSignal();
void __stdcall RdosResetSignal(int Handle);
int __stdcall RdosIsSignalled(int Handle);
void __stdcall RdosSetSignal(int Handle);
void __stdcall RdosFreeSignal(int Handle);
void __stdcall RdosAddWaitForSignal(int Handle, int SignalHandle, void *ID);
long __stdcall RdosGetIp();
int __stdcall RdosNameToIp(const char *HostName);
int __stdcall RdosIpToName(int Ip, char *HostName, int MaxSize);
int __stdcall RdosCreateTcpListen(int Port, int MaxConnections, int BufferSize);
int __stdcall RdosGetTcpListen(int Handle);
void __stdcall RdosCloseTcpListen(int Handle);
void __stdcall RdosAddWaitForTcpListen(int Handle, int ConHandle, void *ID);
int __stdcall RdosOpenTcpConnection(int RemoteIp, int LocalPort, int RemotePort, int Timeout, int BufferSize);
int __stdcall RdosWaitForTcpConnection(int Handle, long Timeout);
void __stdcall RdosAddWaitForTcpConnection(int Handle, int ConHandle, void *ID);
void __stdcall RdosCloseTcpConnection(int Handle);
void __stdcall RdosDeleteTcpConnection(int Handle);
void __stdcall RdosAbortTcpConnection(int Handle);
void __stdcall RdosPushTcpConnection(int Handle);
int __stdcall RdosIsTcpConnectionClosed(int Handle);
long __stdcall RdosGetRemoteTcpConnectionIP(int Handle);
int __stdcall RdosGetRemoteTcpConnectionPort(int Handle);
int __stdcall RdosGetLocalTcpConnectionPort(int Handle);
int __stdcall RdosReadTcpConnection(int Handle, void *Buf, int Size);
int __stdcall RdosWriteTcpConnection(int Handle, const void *Buf, int Size);
int __stdcall RdosPollTcpConnection(int Handle);
int __stdcall RdosGetLocalMailslot(const char *Name);
int __stdcall RdosGetRemoteMailslot(long Ip, const char *Name);
void __stdcall RdosFreeMailslot(int Handle);
int __stdcall RdosSendMailslot(int Handle, const void *Msg, int Size, void *ReplyBuf, int MaxReplySize);
void __stdcall RdosDefineMailslot(const char *Name, int MaxSize);
int __stdcall RdosReceiveMailslot(void *Msg);
void __stdcall RdosReplyMailslot(const void *Msg, int Size);
void __stdcall RdosSetFocus(char FocusKey);
char __stdcall RdosGetFocus();
void __stdcall RdosClearKeyboard();
int __stdcall RdosPollKeyboard();
int __stdcall RdosReadKeyboard();
int __stdcall RdosGetKeyboardState();
int __stdcall RdosPutKeyboard(int KeyCode, int VirtualKey, int ScanCode);
int __stdcall RdosPeekKeyEvent(int *ExtKey, int *KeyState, int *VirtualKey, int *ScanCode);
int __stdcall RdosReadKeyEvent(int *ExtKey, int *KeyState, int *VirtualKey, int *ScanCode);
void __stdcall RdosHideMouse();
void __stdcall RdosShowMouse();
void __stdcall RdosGetMousePosition(int *x, int *y);
void __stdcall RdosSetMousePosition(int x, int y);
void __stdcall RdosSetMouseWindow(int StartX, int StartY, int EndX, int EndY);
void __stdcall RdosSetMouseMickey(int x, int y);
int __stdcall RdosGetLeftButton();
int __stdcall RdosGetRightButton();
void __stdcall RdosGetLeftButtonPressPosition(int *x, int *y);
void __stdcall RdosGetRightButtonPressPosition(int *x, int *y);
void __stdcall RdosGetLeftButtonReleasePosition(int *x, int *y);
void __stdcall RdosGetRightButtonReleasePosition(int *x, int *y);
void __stdcall RdosGetCursorPosition(int *Row, int *Col);
void __stdcall RdosSetCursorPosition(int Row, int Col);
void __stdcall RdosWriteChar(char ch);
void __stdcall RdosWriteSizeString(const char *Buf, int Size);
void __stdcall RdosWriteString(const char *Buf);
int __stdcall RdosReadLine(char *Buf, int MaxSize);
int __stdcall RdosPing(long Node, long Timeout);
int __stdcall RdosGetIdeDisc(int UnitNr);
int __stdcall RdosGetFloppyDisc(int UnitNr);
int __stdcall RdosSetDiscInfo(int DiscNr, int SectorSize, long Sectors, int BiosSectorsPerCyl, int BiosHeads);
int __stdcall RdosGetDiscInfo(int DiscNr, int *SectorSize, long *Sectors, int *BiosSectorsPerCyl, int *BiosHeads);
int __stdcall RdosReadDisc(int DiscNr, long Sector, char *Buf, int Size);
int __stdcall RdosWriteDisc(int DiscNr, long Sector, const char *Buf, int Size);
void __stdcall RdosGetRdfsInfo(void *CryptTab, void *KeyTab, void *ExtentSizeTab);
void __stdcall RdosDemandLoadDrive(int DriveNr);
int __stdcall RdosFormatDrive(int DiscNr, long StartSector, int Size, const char *FsName);
int __stdcall RdosAllocateFixedDrive(int DriveNr);
int __stdcall RdosAllocateStaticDrive();
int __stdcall RdosAllocateDynamicDrive();
int __stdcall RdosGetDriveInfo(int DriveNr, long *FreeUnits, int *BytesPerUnit, long *TotalUnits);
int __stdcall RdosGetDriveDiscParam(int DriveNr, int *DiscNr, long *StartSector, long *TotalSectors);
int __stdcall RdosCreateFileDrive(int Drive, long Size, const char *FsName, const char *FileName);
int __stdcall RdosOpenFileDrive(int Drive, const char *FileName);
int __stdcall RdosGetModuleHandle();
const char * __stdcall RdosGetExeName();
int __stdcall RdosLoadDll(const char *Name);
void __stdcall RdosFreeDll(int handle);
int __stdcall RdosReadResource(int handle, int ID, char *Buf, int Size);
int __stdcall RdosReadBinaryResource(int handle, int ID, char *Buf, int Size);
int __stdcall RdosOpenAdc(int channel);
void __stdcall RdosCloseAdc(int handle);
void __stdcall RdosDefineAdcTime(int handle, unsigned long msg, unsigned long lsb);
long __stdcall RdosReadAdc(int handle);
int __stdcall RdosReadSerialLines(int device, int *val);
int __stdcall RdosToggleSerialLine(int device, int line);
int __stdcall RdosReadSerialVal(int device, int line, int *val);
int __stdcall RdosWriteSerialVal(int device, int line, int val);
int __stdcall RdosReadSerialRaw(int device, int line, int *val);
int __stdcall RdosWriteSerialRaw(int device, int line, int val);
int __stdcall RdosOpenSysEnv();
int __stdcall RdosOpenProcessEnv();
void __stdcall RdosCloseEnv(int handle);
void __stdcall RdosAddEnvVar(int handle, const char *var, const char *value);
void __stdcall RdosDeleteEnvVar(int handle, const char *var);
int __stdcall RdosFindEnvVar(int handle, const char *var, char *value);
void __stdcall RdosGetEnvData(int handle, char *buf);
void __stdcall RdosSetEnvData(int handle, const char *buf);
int __stdcall RdosOpenSysIni();
void __stdcall RdosCloseIni(int handle);
int __stdcall RdosGotoIniSection(int handle, const char *name);
int __stdcall RdosRemoveIniSection(int handle);
int __stdcall RdosReadIni(int handle, const char *var, char *str, int maxsize);
int __stdcall RdosWriteIni(int handle, const char *var, const char *str);
int __stdcall RdosDeleteIni(int handle, const char *var);
void __stdcall RdosEnableStatusLED();
void __stdcall RdosDisableStatusLED();
void __stdcall RdosStartWatchdog(int timeout);
void __stdcall RdosKickWatchdog();
#ifdef __cplusplus
}
#endif
#endif

View File

@ -0,0 +1,162 @@
/*#######################################################################
# RDOS operating system
# Copyright (C) 1988-2006, Leif Ekblad
#
# This library is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published
# by the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# The author of this program may be contacted at leif@rdos.net
#
# rdoshelp.c
# implementation of various structures and helpers
#
##########################################################################*/
#include <reent.h>
#include <rdos.h>
#include <stdio.h>
char *__env[1] = { 0 };
char **environ = __env;
static int once_section;
static int key_section;
/*##########################################################################
#
# Name : _get_impure_data_size
#
# Purpose....: Get size of _reent structure
#
# In params..: *
# Out params.: *
# Returns....: size
#
##########################################################################*/
int get_impure_data_size()
{
return sizeof(struct _reent);
}
/*##########################################################################
#
# Name : __rdos_thread_once
#
# Purpose....: Emulate GCC pthread_once
#
# In params..: Handle initially 0
# : function to initially call
# Out params.: *
# Returns....: result
#
##########################################################################*/
int __rdos_thread_once (int *handle, void (*func) (void))
{
if (handle == 0 || func == 0)
return 0;
RdosEnterSection(once_section);
if (*handle == 0)
(*func)();
else
*handle = 1;
RdosLeaveSection(once_section);
return 0;
}
/*##########################################################################
#
# Name : __rdos_thread_mutex_init
#
# Purpose....: Emulate GCC pthread_thread_mutex_init
#
# In params..: *
# Out params.: *
# Returns....: handle
#
##########################################################################*/
int __rdos_thread_mutex_init (void)
{
return RdosCreateSection();
}
/*##########################################################################
#
# Name : __rdos_thread_mutex_lock
#
# Purpose....: Emulate GCC pthread_thread_mutex_lock
#
# In params..: handle
# Out params.: *
# Returns....: *
#
##########################################################################*/
int __rdos_thread_mutex_lock (int handle)
{
RdosEnterSection(handle);
return 0;
}
/*##########################################################################
#
# Name : __rdos_thread_mutex_trylock
#
# Purpose....: Emulate GCC pthread_thread_mutex_trylock
# Try is not yet implemented, and lock is used.
#
# In params..: handle
# Out params.: *
# Returns....: *
#
##########################################################################*/
int __rdos_thread_mutex_trylock (int handle)
{
RdosEnterSection(handle);
return 0;
}
/*##########################################################################
#
# Name : __rdos_thread_mutex_unlock
#
# Purpose....: Emulate GCC pthread_thread_mutex_unlock
#
# In params..: handle
# Out params.: *
# Returns....: *
#
##########################################################################*/
int __rdos_thread_mutex_unlock (int handle)
{
RdosLeaveSection(handle);
return 0;
}
/*##########################################################################
#
# Name : __init_rdos
#
# Purpose....: Init RDOS specific data
#
# In params..: reent structure
# Out params.: *
# Returns....: *
#
##########################################################################*/
void __init_rdos(struct _reent *reent)
{
once_section = RdosCreateSection();
_REENT_INIT_PTR(reent);
__sinit(reent);
}

View File

@ -0,0 +1,35 @@
/*#######################################################################
# RDOS operating system
# Copyright (C) 1988-2006, Leif Ekblad
#
# This library is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published
# by the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# The author of this program may be contacted at leif@rdos.net
#
# read.c
# read function implementation
#
##########################################################################*/
#include "config.h"
#include <_ansi.h>
#include <_syslist.h>
#include <errno.h>
#include "rdos.h"
int read(int file, char *ptr, int len)
{
return RdosReadFile(file, ptr, len);
}

11
newlib/libc/sys/rdos/readlink.c Executable file
View File

@ -0,0 +1,11 @@
#include "config.h"
#include <_ansi.h>
#include <_syslist.h>
#include <errno.h>
#include <sys/types.h>
int readlink(const char *path, char *buf, size_t bufsize)
{
errno = ENOSYS;
return -1;
}

View File

@ -0,0 +1,33 @@
/*#######################################################################
# RDOS operating system
# Copyright (C) 1988-2006, Leif Ekblad
#
# This library is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published
# by the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# The author of this program may be contacted at leif@rdos.net
#
# sbrk.c
# sbrk function implementation
#
##########################################################################*/
#include "config.h"
#include <_syslist.h>
#include "rdos.h"
void *sbrk (int incr)
{
return RdosAllocateMem(incr);
}

12
newlib/libc/sys/rdos/stat.c Executable file
View File

@ -0,0 +1,12 @@
#include "config.h"
#include <_ansi.h>
#include <_syslist.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <errno.h>
int stat(const char *file, struct stat *st)
{
errno = ENOSYS;
return -1;
}

10
newlib/libc/sys/rdos/symlink.c Executable file
View File

@ -0,0 +1,10 @@
#include "config.h"
#include <_ansi.h>
#include <_syslist.h>
#include <errno.h>
int symlink(const char *path1, const char *path2)
{
errno = ENOSYS;
return -1;
}

View File

@ -0,0 +1,11 @@
#include "config.h"
#include <_ansi.h>
#include <_syslist.h>
#include <sys/times.h>
#include <errno.h>
clock_t times(struct tms *buf)
{
errno = ENOSYS;
return -1;
}

View File

@ -0,0 +1,10 @@
#include "config.h"
#include <_ansi.h>
#include <_syslist.h>
#include <errno.h>
int unlink(char *name)
{
errno = ENOSYS;
return -1;
}

View File

@ -0,0 +1,368 @@
allocate_dos_mem_nr = 0
allocate_local_mem_nr = 1
free_mem_nr = 2
available_local_linear_nr = 3
used_local_linear_nr = 4
available_vm_linear_nr = 5
used_vm_linear_nr = 6
reserve_pe_mem_nr = 7
set_flat_linear_valid_nr = 8
set_flat_linear_invalid_nr = 9
set_flat_linear_read_nr = 10
set_flat_linear_readwrite_nr = 11
get_raw_switch_ads_nr = 12
raw_switch_nr = 13
get_exception_nr = 14
set_exception_nr = 15
get_pm_int_nr = 16
set_pm_int_nr = 17
get_vm_int_nr = 18
set_vm_int_nr = 19
dpmi_int_nr = 20
dpmi_call_int_nr = 21
dpmi_call_nr = 22
allocate_vm_callback_nr = 23
free_vm_callback_nr = 24
wait_milli_nr = 25
wait_micro_nr = 26
wait_until_nr = 27
create_thread_nr = 28
terminate_thread_nr = 29
get_thread_nr = 30
swap_nr = 31
create_user_section_nr = 32
create_blocked_user_section_nr = 33
delete_user_section_nr = 34
enter_user_section_nr = 35
leave_user_section_nr = 36
get_local_mailslot_nr = 37
get_remote_mailslot_nr = 38
free_mailslot_nr = 39
send_mailslot_nr = 40
define_mailslot_nr = 41
receive_mailslot_nr = 42
reply_mailslot_nr = 43
load_exe_nr = 44
spawn_exe_nr = 45
unload_exe_nr = 46
get_exit_code_nr = 47
get_exe_name_nr = 48
get_cmd_line_nr = 49
get_env_nr = 50
load_dll_nr = 51
free_dll_nr = 52
get_dll_proc_nr = 53
get_dll_resource_nr = 54
get_dll_name_nr = 55
get_dll_nr = 56
allocate_app_mem_nr = 57
free_app_mem_nr = 58
get_psp_sel_nr = 59
get_debug_tss_nr = 60
get_debug_thread_nr = 61
debug_trace_nr = 62
debug_pace_nr = 63
debug_go_nr = 64
debug_next_nr = 65
wait_for_pe_debug_nr = 68
continue_pe_debug_nr = 69
notify_pe_exception_nr = 70
read_thread_mem_nr = 71
write_thread_mem_nr = 72
get_thread_tss_nr = 73
set_thread_tss_nr = 74
get_cpu_time_nr = 75
get_system_time_nr = 76
get_time_nr = 77
time_to_system_time_nr = 78
system_time_to_time_nr = 79
days_in_month_nr = 80
adjust_time_nr = 81
passed_days_nr = 82
time_to_binary_nr = 83
binary_to_time_nr = 84
sync_time_nr = 85
set_focus_nr = 86
enable_focus_nr = 87
get_dns_nr = 88
get_ppp_dns_nr = 89
open_tcp_connection_nr = 90
wait_for_tcp_connection_nr = 92
close_tcp_connection_nr = 93
delete_tcp_connection_nr = 94
is_tcp_connection_closed_nr = 95
abort_tcp_connection_nr = 96
read_tcp_connection_nr = 97
write_tcp_connection_nr = 98
push_tcp_connection_nr = 99
get_ip_address_nr = 100
name_to_ip_nr = 101
ip_to_name_nr = 102
ping_nr = 103
get_disc_info_nr = 104
format_drive_nr = 105
get_rdfs_info_nr = 106
read_disc_nr = 107
write_disc_nr = 108
get_drive_info_nr = 109
set_cur_drive_nr = 110
get_cur_drive_nr = 111
set_cur_dir_nr = 112
get_cur_dir_nr = 113
make_dir_nr = 114
remove_dir_nr = 115
rename_file_nr = 116
delete_file_nr = 117
get_file_attribute_nr = 118
set_file_attribute_nr = 119
open_dir_nr = 120
close_dir_nr = 121
read_dir_nr = 122
open_file_nr = 123
create_file_nr = 124
close_file_nr = 125
dupl_file_nr = 126
get_ioctl_data_nr = 127
get_file_size_nr = 128
set_file_size_nr = 129
get_file_pos_nr = 130
set_file_pos_nr = 131
get_file_time_nr = 132
set_file_time_nr = 133
read_file_nr = 134
write_file_nr = 135
read_con_nr = 136
create_mapping_nr = 137
create_named_mapping_nr = 138
create_file_mapping_nr = 139
create_named_file_mapping_nr = 140
open_named_mapping_nr = 141
sync_mapping_nr = 142
close_mapping_nr = 143
map_view_nr = 144
unmap_view_nr = 145
read_keyboard_nr = 146
poll_keyboard_nr = 147
flush_keyboard_nr = 148
get_keyboard_state_nr = 151
show_mouse_nr = 152
hide_mouse_nr = 153
get_mouse_position_nr = 154
set_mouse_position_nr = 155
set_mouse_window_nr = 156
set_mouse_mickey_nr = 157
get_left_button_nr = 158
get_right_button_nr = 159
get_left_button_press_position_nr = 160
get_right_button_press_position_nr = 161
get_left_button_release_position_nr = 162
get_right_button_release_position_nr = 163
hook_mouse_nr = 164
unhook_mouse_nr = 165
lock_cd_nr = 166
unlock_cd_nr = 167
eject_cd_nr = 168
insert_cd_nr = 169
open_com_nr = 170
close_com_nr = 171
flush_com_nr = 172
add_wait_for_com_nr = 174
read_com_nr = 175
write_com_nr = 176
set_dtr_nr = 177
reset_dtr_nr = 178
init_printer_nr = 179
check_printer_nr = 180
write_printer_nr = 181
set_cursor_position_nr = 182
get_cursor_position_nr = 183
write_char_nr = 184
write_asciiz_nr = 185
write_size_string_nr = 186
set_video_mode_nr = 187
set_vga_mode_nr = 188
set_forecolor_nr = 189
set_backcolor_nr = 190
get_string_metrics_nr = 193
set_font_nr = 194
get_video_mode_nr = 195
draw_string_nr = 197
xms_handler_nr = 198
ems_handler_nr = 199
test_nr = 200
resize_flat_linear_nr = 201
set_drawcolor_nr = 202
set_lgop_nr = 203
set_hollow_style_nr = 204
set_filled_style_nr = 205
get_pixel_nr = 206
set_pixel_nr = 207
draw_line_nr = 208
draw_rect_nr = 209
draw_ellipse_nr = 210
create_bitmap_nr = 211
close_bitmap_nr = 212
blit_nr = 213
open_font_nr = 215
close_font_nr = 216
create_string_bitmap_nr = 217
get_bitmap_info_nr = 218
draw_mask_nr = 219
create_sprite_nr = 220
close_sprite_nr = 221
show_sprite_nr = 222
hide_sprite_nr = 223
move_sprite_nr = 224
dup_bitmap_handle_nr = 225
set_clip_rect_nr = 226
clear_clip_rect_nr = 227
set_rts_nr = 228
reset_rts_nr = 229
get_com_receive_space_nr = 230
get_com_send_space_nr = 231
get_char_attrib_nr = 232
create_wait_nr = 233
close_wait_nr = 234
is_wait_idle_nr = 235
wait_no_timeout_nr = 236
wait_timeout_nr = 237
stop_wait_nr = 238
add_wait_for_keyboard_nr = 239
peek_key_event_nr = 240
read_key_event_nr = 241
add_wait_for_mouse_nr = 242
remove_wait_nr = 243
add_wait_for_adc_nr = 244
open_adc_nr = 245
close_adc_nr = 246
define_adc_time_nr = 247
read_adc_nr = 248
free_v86_nr = 249
read_serial_lines_nr = 250
toggle_serial_line_nr = 251
read_serial_val_nr = 252
write_serial_val_nr = 253
create_file_drive_nr = 254
open_file_drive_nr = 255
dos_ext_exec_nr = 256
open_sys_env_nr = 257
open_proc_env_nr = 258
close_env_nr = 259
add_env_var_nr = 260
delete_env_var_nr = 261
find_env_var_nr = 262
get_env_data_nr = 263
set_env_data_nr = 264
open_sys_ini_nr = 265
close_ini_nr = 266
goto_ini_section_nr = 267
remove_ini_section_nr = 268
read_ini_nr = 269
write_ini_nr = 270
delete_ini_nr = 271
app_debug_nr = 272
get_version_nr = 273
enable_status_led_nr = 274
disable_status_led_nr = 275
start_watchdog_nr = 276
kick_watchdog_nr = 277
erase_disc_sectors_nr = 278
cpu_reset_nr = 279
enable_cts_nr = 280
disable_cts_nr = 281
wait_for_send_completed_com_nr = 282
add_wait_for_tcp_connection_nr = 283
get_remote_tcp_connection_ip_nr = 284
get_remote_tcp_connection_port_nr = 285
get_local_tcp_connection_port_nr = 286
enable_auto_rts_nr = 287
disable_auto_rts_nr = 288
put_keyboard_code_nr = 289
poll_tcp_connection_nr = 290
create_signal_nr = 291
free_signal_nr = 292
add_wait_for_signal_nr = 293
set_signal_nr = 294
reset_signal_nr = 295
is_signalled_nr = 296
get_drive_disc_param_nr = 297
get_ide_disc_nr = 298
get_floppy_disc_nr = 299
demand_load_drive_nr = 300
set_disc_info_nr = 301
get_thread_state_nr = 302
suspend_thread_nr = 303
resume_thread_nr = 304
update_time_nr = 305
allocate_static_drive_nr = 306
allocate_fixed_drive_nr = 307
allocate_dynamic_drive_nr = 308
get_focus_nr = 309
add_wait_for_tcp_listen_nr = 310
create_tcp_listen_nr = 311
get_tcp_listen_nr = 312
close_tcp_listen_nr = 313
usergate_entries = 340

View File

@ -0,0 +1,10 @@
#include "config.h"
#include <_ansi.h>
#include <_syslist.h>
#include <errno.h>
int wait(int *status)
{
errno = ENOSYS;
return -1;
}

View File

@ -0,0 +1,35 @@
/*#######################################################################
# RDOS operating system
# Copyright (C) 1988-2006, Leif Ekblad
#
# This library is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published
# by the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# The author of this program may be contacted at leif@rdos.net
#
# write.c
# write function implementation
#
##########################################################################*/
#include "config.h"
#include <_ansi.h>
#include <_syslist.h>
#include <errno.h>
#include "rdos.h"
int write(int file, char *ptr, int len)
{
return RdosWriteFile(file, ptr, len);
}