/* @(#) pf_io.c 96/12/23 1.12 */
/***************************************************************
** I/O subsystem for PForth based on 'C'
** Copyright 1994 3DO, Phil Burk, Larry Polansky, David Rosenboom
** Permission to use, copy, modify, and/or distribute this
** software for any purpose with or without fee is hereby granted.
** THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
** WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
** WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
** THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR
** CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
** FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
** CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
** OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
****************************************************************
** 941004 PLB Extracted IO calls from pforth_main.c
***************************************************************/
/***************************************************************
** Initialize I/O system.
/* System dependant terminal initialization. */
/***************************************************************
** Send single character to output stream.
Result
= sdTerminalOut(c
);
if( Result
< 0 ) EXIT(1);
gCurrentTask
->td_OUT
= 0;
/***************************************************************
** Send an entire string..
void ioType( const char *s
, cell_t n
)
/***************************************************************
** Return single character from input device, always keyboard.
/**************************************************************
** Receive line from keyboard.
** Return number of characters enterred.
cell_t
ioAccept( char *buffer
, cell_t maxChars
)
DBUGX(("ioAccept(0x%x, 0x%x)\n", buffer
, len
));
if( len
> 0 ) /* Don't go beyond beginning of line. */
sdTerminalEcho( (char) c
);
/* NUL terminate line to simplify printing when debugging. */
if( len
< maxChars
) p
[len
] = '\0';
#define UNIMPLEMENTED(name) { MSG(name); MSG("is unimplemented!\n"); }
/***********************************************************************************/
/*********** File I/O **************************************************************/
/***********************************************************************************/
/* Provide stubs for standard file I/O */
cell_t
sdInputChar( FileStream
*stream
)
UNIMPLEMENTED("sdInputChar");
FileStream
*sdOpenFile( const char *FileName
, const char *Mode
)
UNIMPLEMENTED("sdOpenFile");
cell_t
sdFlushFile( FileStream
* Stream
)
cell_t
sdReadFile( void *ptr
, cell_t Size
, int32_t nItems
, FileStream
* Stream
)
UNIMPLEMENTED("sdReadFile");
cell_t
sdWriteFile( void *ptr
, cell_t Size
, int32_t nItems
, FileStream
* Stream
)
UNIMPLEMENTED("sdWriteFile");
cell_t
sdSeekFile( FileStream
* Stream
, file_offset_t Position
, int32_t Mode
)
UNIMPLEMENTED("sdSeekFile");
file_offset_t
sdTellFile( FileStream
* Stream
)
UNIMPLEMENTED("sdTellFile");
cell_t
sdCloseFile( FileStream
* Stream
)
UNIMPLEMENTED("sdCloseFile");
cell_t
sdDeleteFile( const char *FileName
)
UNIMPLEMENTED("sdDeleteFile");
cell_t
sdRenameFile( const char *OldName
, const char *NewName
)
UNIMPLEMENTED("sdRenameFile");
ThrowCode
sdResizeFile( FileStream
* File
, uint64_t NewSize
)
UNIMPLEMENTED("sdResizeFile");
return THROW_RESIZE_FILE
;