Display update method changed, now allways write in memory buffer,
then periodically update physical display.
Speed improvements (now > 5 times faster than the old syscons).
History now circular buffer, with changeable size.
History scroll by up/down line, up/down page, home and end.
Backtab proberly implemented.
Now space for 96 function keys, 63 allocated standard, default now
SCO/SYSV compat again as in the old days.
New keyboard definition files ~share/syscons/keymaps/*
Misc fixes for old "hacks" that broke SCO/SYSV compat.
More that I forgot before writing this...
case, software cursor now optional case. Driver must provide
raw things (what hardware do for us, exactly) as default case,
all driver features must be _optional_. Modern VGAs have internal
configuration utilities to set cursor shape/blinking which stored
into cards ROM, and syscons nuke out such features completely
by forcing software cursor. Moreover, software cursor is hard
to distinguish on standouted (or near standouted) fields and
tends to disappearse from the screen.
Set "flags 0x4" to enable software cursor now.
o Cleanup screen savers.
o Don't draw cursor if saver or blinker is active.
o Duplicated code moved to functons.
o Add more checks for blinker in progress, character lost otherwise
when blinker restore old contents.
o Reduce blinking counter to 3, too slow in old variant.
o Fix timeout code in scrn_timer(), old variant can reenter iself,
if action takes too long time.
o Disable visual bell for scroll lock mode, saved screen
becomes overwritted otherwise.
Obtained from:
sio.c and sioreg.c changed to allow autodetecting the RB_SERIAL flag
passed by the boot blocks so that the kernel can switch to 'serial
console' mode automagically. 'options COMCONSOLE' can still be specified
to force the kernel to always use the serial port as a console.
CONUNIT and CONADDR can also be specified in the kernel config file
if the user wants to shift the console to a different port.
Put in the much shorter and cleaner version for the calibrate_cycle_counter
for the Pentium that Bruce suggested. Tested here on my Pentium and
it works okay.
protected drive at open() time has been *totally bogus*! The guy who
submitted it didn't understand all the implications of calling
set_motor(), and the `who' who included the patch into the tree did it
blindly... Pleeeeze, don't commit code to this driver unless you are
really going to understand what it does! This one caused me to pull
out even more hears, and those who know me do know that i ain't got
too many o'them. :-)
No kernel config options anymore besides keyboard language layout.
Virtual consoles are now dynamically allocated, no NCONS anymore.
Software cursor blinking/nonblinking.
Visual bell for laptops (don't beep at meetings :-).
Cursor/bell default type setable via config "flags" instead of as defines.
Cursor/bell type setable via ioctl's.
New video modes 80x30 80x60 for some laptops, and those with multisync monitors.
Scroll-lock history (length currently fixed at 100 lines).
Lots of cleanups, some only commented out for now (will goaway soon).
Support for new features in vidcontrol/kbdcontrol.
Updated manpages.
now marked busy as long as it's being in non-reset state, and the
drives are busy as long as at least one instance is open.
Also reformat everything to fit into 80 columns again.
Changed my mind wrt. error reporting for a write-protected drive and
an open() with write intent; ENXIO has been too weird, now return EIO.
Some portions of the code need to be rewritten to use tprintf()
instead of simple printf()'s, so the messages will also appear on the
session terminal, however.
shifting. Also correct the original code as Garrett noticed it in mail.
Leave the mishandled code in to use it later if future versions of gcc
are correct. The code was part of the calibrate_cyclecounter routine to
get the speed of the pentium chip.
floppy driver (or in the hardware?). It turned out to be caused by
spurious interrupts, right after an FDC reset.
Also major cleanup in the low-level structure, there are now functions
performing error-checks for the FDC I/O.
Submitted by: (mostly) Peter Dufault <dufault@FreeBSD.org>
correct console number for the VT_WAITACTIVE ioctl. Invalid console numbers
caused waiting on an invalid pointer.
Use bcopyw() instead of move_up() and move_down(). bcopyw() handles
overlapped copies and should be faster. Actually use bcopy(). bcopy()
is slightly faster if video memory is 16-bit and about twice as fast if
it is 32-bit. bcopy() is said to fail on someGA's, but syscons already
depends on it working for other accesses to video memory.
- /sys/i386/isa/if_ed.c doesn't quite know how to deal with SMC EtherEZ
ethernet cards. The EtherEZ looks just like the Elite Ultra, except it
has only 8K of shared memory. The only way to have it properly detected
is to zero and test a few bytes of memory just about the first 8K region.
If it clears properly, it's an Elite Ultra, otherwise it's an EtherEZ.
I've also got an EtherEZ patch for netboot (Makefile, ether.c and ether.h).
- /sys/i386/isa/syscons.c wraps at the next to the last column rather than
the last column, like it should. You don't really notice this unless you
use certain programs that write all the way out to, say, the 80th column,
like VMSmail. Along with a one-line fix for this are some changes to
implement a non-blinking cursor. Put 'options "NOBLINK_CURSOR"' in your
config file and give it a try. :)
Submitted by: wpaul
Move definition of `stat_imask' to clock.c.
clock.c:
Rename `rtcmask' to `stat_imask' and export it. Rename `clkmask' to
`clk_imask' for consistency.
Only calculate TIMER_DIV(hz) once.
Merge debugging and "garbage" code to produce debugging code and format the
output better.
Make writertc() static inline and use it everywhere. Now all accesses to
the clock registers go through rtcin() and writertc().
Move rtc initialization to cpu_initclocks().
Merge enablertclock() with cpu_initclocks() and remove enablertclock().
The extra entry point was just a leftover from 1.1.5.
Now floppy tape support is *disabled* unless you specifically
request otherwise. Poul wanted it this way, and I guess I'm not going to argue
though it may seem counter-intuitive. We can always change it back, later.
flags & 0x1. Somebody should build a kernel with this and see if
the floppy-tape damaged people can turn it off properly with userconfig.
I can't reproduce the original problem here.
doesn't have to calculate it every call.
Rename `timer0_prescale' to `timer0_prescaler_count' and maintain it
correctly. Previously we lost a few 8253 cycles for every "prescaled"
clock interrupt, and the lossage grows rapidly at 16 KHz. Now we
only lose a few cycles for every standard clock interrupt.
Rename `*_divisor' to `*_max_count'.
Do the calculation of TIMER_DIV(rate) only once instead of 3 times each
time the rate is changed.
Don't allow preposterously large interrupt rates. Bug fixes elsewhere
should allow the system to survive rates that saturate the system, however.
Clean up declarations.
Include <machine/clock.h> to check our own declarations.
floppies now. I'm not sure why, but things hang when it gets to the
`changing root to fd0c' part. Without your latest commit, everything works
fine. Maybe you can figure out what you broke after ALPHA! :)
errors at a lower ipl. clist starvation problems can cause hundreds of
tty buffer overflows per second and logging them all amplified the
problems. This problem was less serious in 1.1.5.
Avoid a race in the check for starting a new block of output. com_events
was sometimes messed up and siopoll() looped endlessly. This bug was
introduced in 2.0.
Clean up previous 2 commits. Rename sio_registerdev() to sioregisterdev()
to match the (bad) surrounding naming conventions. There should be a
generic_registerdev().
. avoid resetting the FDC every time the last motor is going off;
instead, give it a 60-second period for possible later reactivation.
This prevents us from needing to recalibrate the FDC too often,
but still allows for an ``automagic error recovery', just in case the
controller is absolutely stuck. (Simply wait for 60 seconds, and
try it again.)
. made the floppy head settle time after a seek a constant
that might be overridden by a config option. (Well, actually the
divisor of the settle time). Pepople often reported problems with
their floppies, so i need a simply mechanism that allows them
to play with that value. (I personally cannot find any problem
on *my* drives.)
. implement the FD_DEBUG ioctl command, in case the driver
is compiled with DEBUG turned on.
. removed a bogus parameter from a printf; the remaining warnings
from gcc -Wall seem to be warnings about the %b format gcc cannot
understand
. rearrange Garett's code to fit better in the existing structure
of #define/type/function ordering.
. make everything fit into 79 columns again.
in the far pointers are multiples of 4K (as is normal when the video
BIOS is at seg 0xc000). Disallow mode switching if the pointer is bad.
Use a new pa_to_va() macro for all BIOS and video addresses in syscons.
Changed the fifth parameter to register_intr() from u_int mask into
u_int *maskptr in preparation for new features (shared interrupts and
removable devices, eg. for PCMCIA).
and all SCSI devices (except that it's not done quite the way I want). New
information added includes:
- A text description of the device
- A ``state''---unknown, unconfigured, idle, or busy
- A generic parent device (with support in the m.i. code)
- An interrupt mask type field (which will hopefully go away) so that
. ``doconfig'' can be written
This requires a new version of the `lsdev' program as well (next commit).
so i hope i've finally removed all the occasions where the driver
got stuck when there's no floppy in the drive.
Also attemmpting to omit the error mesage for ``recalib failed''
for the first time, since people tend to be confused about this.
else has been probed. This feature could go away again, if we can curb the
problem another way.
if_ed.c, syscons.c: Set the above flag. ed# because it needs it, syscons
because it looks stupid to "detect" the display you have already filled up
with text :-)
bt742a.c: Check bt_cmd() return-val during probe, thus failing on adaptec's.
Also silenced various printf's during the probe.
isa.c: Probe devices with the above flag set before the rest. Reduce the
number of "conflict" messages per device to one.
***
Please test the GENERIC-kernel now, if nobody can make it fail, GENERICAH
and GENERICBT has a finite and short life-expectancy...
***
Fix endless loop in siopoll() for an event on a tty with no tty struct.
Don't generate unwanted interrupts in the serial console driver. These
bugs probably don't matter unless the tty struct is dynamically allocated.
Support polled mode. To use it, leave out the irq and the vector in
the config file. It only causes extra overhead for open polled ports.
The maximum usable speed is approximately 1000 bps for a 16450 and
15000 bps for a 16550.
Other cosmetic changes.
This is needed for having the fdformat program no longer searching
non-public include paths.
Protect the definitions in fdreg.h against double inclusion.
more work required to grab all fonts
2)Make standard VGA font as default, make HARDFONTS an option
(load iso8859 fonts instead)
3)Check fonts_loaded for all restore (copy_font...palette)
sequences.