Fix bug in cons-closure-entry by which branch-expanded LDOs were
causing problems: the ADDIL was being executed immediately after the
BLE, the LDO on return, and thus the address stored in the closure was
bogus.
Update to version match 68k compiler version 4.74.
Multi closures.
Bit-wise fixnum operations.
Add out-of-line multiply and divide (quotient and remainder) routines
that use the floating-point co-processor.
Fix trap_handler so that the saved_* parameters are set up correctly
before invoking trap_recover. This fixes the bug by which all traps
were reported as "User microcode reset".
Add find_signal_code_name to generate a string for the signal code
using DECLARE_UX_SIGNAL_CODES defined in uxtrap.h .
Modify setup_trap_frame to use find_signal_code_name .
Fix find_block_address_in_area to not run into an infinite loop (it
was not incrementing the area pointer on most objects).
Fix consistency test after the second phase of purify. It no longer
depends on FLOATING_ALIGNMENT and only on whether constant space was
not overrun by the purification.
Change find_constant_space_block to return the address of the first
word of the block where the object is found, rather than the address
of the last word of the previous block.
Change impurify to never impurify flonums.
Remove extraneous conditionalization on FLOATING_ALIGNMENT.
Change the definition of PLAUSIBLE_CC_BLOCK_P to handle two cases:
expression blocks, and single procedure blocks generated when the
compiler compiles by procedures.
Better reporting of hardware traps.
compiled-entry/block is the identity on compiled code blocks.
Fixnum operations can now be constant folded by the syntaxer.
Change gpio-read-string and gpio-write-string to take position and
count parameters, rather than just count parameters. This speeds up
output when it is divided into chunks.
Chris Hanson [Thu, 21 Jun 1990 22:11:52 +0000 (22:11 +0000)]
Change console-input-port so that it always buffers the input.
Because of this change there is no need to use the special terminal
input primitives -- these should be flushed from the microcode.
All buffered input channels now support the `interval' argument of the
`char-ready?' operation.
Chris Hanson [Thu, 21 Jun 1990 20:02:06 +0000 (20:02 +0000)]
Change `OS_channel_read' and `OS_channel_write' to be interruptable,
so that any I/O can be interrupted by the user typing ^G. Fix minor
thinko in `OS_channel_close' that caused the console I/O channels to
be marked as closed even though they were still open.
Chris Hanson [Wed, 20 Jun 1990 21:13:44 +0000 (21:13 +0000)]
* Complete redesign of the operating-system interface. I/O is more
uniform and is able to take advantage of things like sockets, pipes,
ptys, etc. All I/O buffering is moved into the runtime system for
better performance with Scheme compiler code. Strong knowledge of
POSIX.1 should make porting to VMS easy once VMS supports POSIX.1.
* Change operating system conditionalizations to standard form
suggested by POSIX.1.
* Add FSF macros to support ANSI declarations.
* Add dynamic-stack package and obstacks.
* Provide higher-level utilities for parsing command line options.
* Instead of `Back_To_Eval', there is now a procedure
`abort_to_interpreter' which knows about everything that needs to be
cleaned up.
* Sun assembler can't handle a constant used in "cmpaux-mc68k.m4", so
provide an option to rewrite that instruction as two instructions.
* Some compilers won't cast a function to an integer, so kludge around
it by mis-declaring the external function as an integer, taking it the
integer's address, and casting THAT to an integer.
* Move critical section code and termination code to their own files.
Chris Hanson [Wed, 20 Jun 1990 20:37:44 +0000 (20:37 +0000)]
* Changes to operating system interface to match those introduced in
microcode version 11.33, which is required for this runtime system
version.
* The low-level channel abstraction has been changed -- it now
contains only a microcode channel descriptor and the channel type.
The microcode no longer knows the format of channels.
* Subprocess support has been temporarily removed. New subprocess
support is being designed to accompany changes in the microcode.
* The file-copy primitive is now written in Scheme using lower-level
file system and I/O operations.
* Use `input-port/immediate-mode' and `input-port/normal-mode' to
switch terminal mode. The operations `read-char-immediate' and
`peek-char-immediate' are now obsolete. REP loops force the input
port into normal mode, while the debugger forces it into immediate
mode.
* I/O buffering for input files, output files, and the console output
is now done in Scheme. The microcode provides no buffering.
These ports understand `buffer-size' and `set-buffer-size' operations
to control the amount of buffering. A buffer size of 0 disables
buffering entirely.
* `read-start!' and `read-finish!' are now optional operations on
input ports.
* An input or output port will now report the set of operations that
it responds to.
Chris Hanson [Wed, 20 Jun 1990 20:30:31 +0000 (20:30 +0000)]
* Changes to operating system interface to match those introduced in
microcode version 11.33, which is required for this runtime system
version.
* The low-level channel abstraction has been changed -- it now
contains only a microcode channel descriptor and the channel type.
The microcode no longer knows the format of channels.
* Subprocess support has been temporarily removed. New subprocess
support is being designed to accompany changes in the microcode.
* The file-copy primitive is now written in Scheme using lower-level
file system and I/O operations.
* Use `input-port/immediate-mode' and `input-port/normal-mode' to
switch terminal mode. The operations `read-char-immediate' and
`peek-char-immediate' are now obsolete. REP loops force the input
port into normal mode, while the debugger forces it into immediate
mode.
* I/O buffering for input files, output files, and the console output
is now done in Scheme. The microcode provides no buffering.
These ports understand `buffer-size' and `set-buffer-size' operations
to control the amount of buffering. A buffer size of 0 disables
buffering entirely.
* `read-start!' and `read-finish!' are now optional operations on
input ports.
* An input or output port will now report the set of operations that
it responds to.
Chris Hanson [Wed, 20 Jun 1990 20:00:58 +0000 (20:00 +0000)]
* Complete redesign of the operating-system interface. I/O is more
uniform and is able to take advantage of things like sockets, pipes,
ptys, etc. All I/O buffering is moved into the runtime system for
better performance with Scheme compiler code. Strong knowledge of
POSIX.1 should make porting to VMS easy once VMS supports POSIX.1.
* Change operating system conditionalizations to standard form
suggested by POSIX.1.
* Add FSF macros to support ANSI declarations.
* Add dynamic-stack package and obstacks.
* Provide higher-level utilities for parsing command line options.
* Instead of `Back_To_Eval', there is now a procedure
`abort_to_interpreter' which knows about everything that needs to be
cleaned up.
* Sun assembler can't handle a constant used in "cmpaux-mc68k.m4", so
provide an option to rewrite that instruction as two instructions.
* Some compilers won't cast a function to an integer, so kludge around
it by mis-declaring the external function as an integer, taking it the
integer's address, and casting THAT to an integer.
* Move critical section code and termination code to their own files.