[OpenBIOS] [PATCHv2 00/20] Switch to standards-compliant Forth console from C console

Mark Cave-Ayland mark.cave-ayland at ilande.co.uk
Sun May 26 15:02:20 CEST 2013


As mentioned previously on-list, OpenBIOS currently contains two consoles - a 
C based console and a Forth based console. The Forth based console is currently 
broken, but is more feature complete than the C console, whilst also being 
more portable across different architectures.

This patchset performs the following functions:

- Fix various bugs in the Forth console
- Optimise performance using low-level C graphics routines
- Add simple IEEE1275-like initialisers for TCX and VGA graphics
- Switch TCX and VGA drivers over to use the new console using the standard
  is-install word 

Once this patchset is committed, a further patchset will follow to remove all of
the duplicate C console code, remove packages/video.c and unify the console 
input/routines into libopenbios.


Changes since v1:
  - Rebase onto SVN trunk
  - Various minor bugfixes/tidy-ups
  - Fix CSI n;mH and CSI n;mf as reported by Blue Swirl
  - Implementation of remaining missing fb8-* defer words:
        fb8-insert-lines
        fb8-insert-characters
        fb8-delete-characters


Mark Cave-Ayland (20):
  display.fs: Fix up default-font word.
  display.fs: Fix fb8-delete-lines within the inbuilt Forth terminal
    emulator.
  terminal.fs: Fix linefeeds on the bottom line of the Forth console.
  terminal.fs: Fix backspace sequence in Forth terminal.
  video: Create new video_common.c file for shared video primitive
    routines.
  video_common.c: Move primitive graphic operations into
    libopenbios/video_common.c.
  pci: Modify PCI display devices so that open and close words are not
    created     automatically during initialisation.
  video: Create tcx.fs and vga.fs to simulate Fcode video
    initialisation code.
  display.fs: pass the colour depth and line bytes to the Forth
    terminal routines.
  video_common.c: create low-level video_mask_blit() function.
  video_common.c: create low-level video_invert_rect() function.
  display.fs: Fix fb8 routines to work with bit depths > 8.
  video_common.c: create low-level video_fill_rect() function.
  display.fs: optimise scrolling by copying/deleting multiple scanlines
    at once.
  display.fs: Add vertical font-spacing as per the existing C console
    implementation.
  terminal.fs: handle all cursor positioning within the terminal
    package.
  terminal.fs: Fix CSI n;mH and CSI n;mf control sequences.
  display.fs: add implementation of fb8-insert-lines.
  display.fs: add implementation of fb8-insert-characters and
    fb8-delete-characters.
  video: switch VGA and TCX drivers over to Forth console using
    is-install.

 openbios-devel/arch/sparc32/console.c       |   12 -
 openbios-devel/arch/sparc32/openbios.c      |    2 +-
 openbios-devel/drivers/build.xml            |    2 +
 openbios-devel/drivers/pci.c                |   14 +-
 openbios-devel/drivers/pci.h                |    1 +
 openbios-devel/drivers/sbus.c               |    2 +
 openbios-devel/drivers/tcx.fs               |   13 +
 openbios-devel/drivers/vga.fs               |   13 +
 openbios-devel/drivers/vga_vbe.c            |    2 +-
 openbios-devel/forth/device/display.fs      |  228 +++++++-------
 openbios-devel/forth/device/font.fs         |    4 +
 openbios-devel/forth/device/terminal.fs     |   67 +++-
 openbios-devel/include/libopenbios/video.h  |   24 ++
 openbios-devel/include/packages/video.h     |    6 +-
 openbios-devel/libopenbios/build.xml        |    1 +
 openbios-devel/libopenbios/console_common.c |    1 +
 openbios-devel/libopenbios/video_common.c   |  446 +++++++++++++++++++++++++++
 openbios-devel/packages/video.c             |  279 +----------------
 18 files changed, 700 insertions(+), 417 deletions(-)
 create mode 100644 openbios-devel/drivers/tcx.fs
 create mode 100644 openbios-devel/drivers/vga.fs
 create mode 100644 openbios-devel/include/libopenbios/video.h
 create mode 100644 openbios-devel/libopenbios/video_common.c

-- 
1.7.10.4




More information about the OpenBIOS mailing list