Patch title: Release 96 bulk changes
Abstract:
File: /pliant/graphic/console/framebuffer_configure.pli
Key:
    Removed line
    Added line
   
module "/pliant/fullpliant/this_computer.pli"
module "/pliant/language/os.pli"
module "/pliant/linux/kernel/module.pli"
module "/pliant/linux/kernel/device.pli"
module "/pliant/graphic/console/framebuffer_common.pli"
module "/pliant/admin/execute.pli"
module "/pliant/language/ui/ansi_terminal.pli"


function framebuffer_configure -> dm
  arg Str dm
  log "configuration begin at "+string:datetime+"[lf]"
  var Array:Str drivers
  var Str all := this_computer:env:"hardware":"video":"drive
  if all=""
    all := "nvidiafb rivafb radeonfb aty128fb atyfb savagefb
  while all<>""
    if not (all parse any:(var Str d) _ any:(var Str remain)
      d := all ; remain := ""
    drivers += d
    all := remain
  var Array:FramebufferMode modes
  var Str all := this_computer:env:"hardware":"video":"modes
  if all=""
    all := "3840x2400x32 3840x2400x24 3200x2400x32 3200x2400
  while (all parse (var FramebufferMode m):size_x "x" m:size
    modes += m
    all := remain
  console character:27+"c"
  console "FullPliant will now try to auto configure your gr
module "/pliant/fullpliant/this_computer.pli"
module "/pliant/language/os.pli"
module "/pliant/linux/kernel/module.pli"
module "/pliant/linux/kernel/device.pli"
module "/pliant/graphic/console/framebuffer_common.pli"
module "/pliant/admin/execute.pli"
module "/pliant/language/ui/ansi_terminal.pli"


function framebuffer_configure -> dm
  arg Str dm
  log "configuration begin at "+string:datetime+"[lf]"
  var Array:Str drivers
  var Str all := this_computer:env:"hardware":"video":"drive
  if all=""
    all := "nvidiafb rivafb radeonfb aty128fb atyfb savagefb
  while all<>""
    if not (all parse any:(var Str d) _ any:(var Str remain)
      d := all ; remain := ""
    drivers += d
    all := remain
  var Array:FramebufferMode modes
  var Str all := this_computer:env:"hardware":"video":"modes
  if all=""
    all := "3840x2400x32 3840x2400x24 3200x2400x32 3200x2400
  while (all parse (var FramebufferMode m):size_x "x" m:size
    modes += m
    all := remain
  console character:27+"c"
  console "FullPliant will now try to auto configure your gr
  console "Depending on your hardware, you may end up with e
  console "an incorrect resolution,  a failed configuration,
  console "If you think you have such hardware, press the sp
  console "to manually select the configuration you want." e
  console "Depending on your hardware, you may end up with either a slow refresh" eol
  console "frequency, an incorrect resolution, a failed configuration, a frozen system," eol
  console "or even worse." eol
  console "If you think you have such hardware, press the space bar now,  and you will be" eol
  console "prompted to manually select the configuration you want." eol
  console eol
  console eol
  console "Another alternative, is to restrict the autoconfi
  console "below (be warned that current keyboard mapping is
  console "Press 'a' for automatic configuration: just ignor
  console "Another alternative, is to restrict the autoconfiguration by selecting one of" eol
  console "the options below (be warned that current keyboard mapping is QWERTY):" eol
  console "Press 'a' automatic configuration: ignore configuration selected on last boot" eol
  console "      'u' for VESA driver, low resolution (1024x7
  console "      'v' for VESA driver, auto configure resolut
  console "      'l' to auto-select your driver, low resolut
  console "      'm' to auto-select your driver, medium reso
  console "      'h' to auto select your driver, high resolu
  console eol
  console "When the graphic mode is set, the screen may rema
  console "It does not mean the computer is frozen; it's jus
  console "applications. Please be patient." eol
  console eol
  var CBool console := true
  var CBool registers := true
  part read_kbd
    var Int c := keyboard_raw_readchar 60
    if c="s":number
      log "info from scratch[lf]"
      console "[cr]info from scratch" eol
      info_from_scratch := true
      restart read_kbd
    eif c="f":number
      log "force mode switch[lf]"
      console "[cr]force mode switch" eol
      force_mode_switch := true
      restart read_kbd
    eif c="c":number
      log "no console[lf]"
      console "[cr]no console" eol
      console := false
      restart read_kbd
    eif c="r":number
      log "no registers dump[lf]"
      console "[cr]no registers dump" eol
      registers := false
      restart read_kbd
  if c=" ":number
    console "[cr]Manual configuration." eol
    part choose
      console "Please first select the video driver you want
      console "Use space bar to change travel the drivers li
      var Int i := 0
      while { console drivers:i (repeat 30 " ") "[cr]" ; var
        if c=" ":number
          i := (i+1)%drivers:size
      console "[lf]"
      console "Please now select the video mode you want to 
      var Int j := 0
      while { console modes:j:size_x "x" modes:j:size_y "x" 
        if c=" ":number
          j := (j+1)%modes:size
      console character:27+"c"
      (var Array:Str driver1) size := 1 ; driver1 0 := drive
      (var Array:FramebufferMode mode1) size := 1 ; mode1 0 
      dm := framebuffer_configure driver1 mode1 true
      if dm=""
        console "You selected video mode " modes:j:size_x "x
        console "Sorry, it does not work." eol eol
        restart choose    
  eif c="u":number
    console "[cr]VESA driver, low resolution (1024x768)" eol
    (var Array:Str driver1) size := 1 ; driver1 0 := "vesafb
    (var Array:FramebufferMode mode1) size := 2
    mode1:0 size_x := 1024 ; mode1:0 size_y := 768 ; mode1:0
    mode1:1 size_x := 1024 ; mode1:1 size_y := 768 ; mode1:1
    dm := framebuffer_configure driver1 mode1 true
  eif c="v":number
    console "[cr]VESA driver, auto configure resolution" eol
    (var Array:Str driver1) size := 1 ; driver1 0 := "vesafb
    dm := framebuffer_configure driver1 modes true
  eif c="l":number
    console "[cr]auto select driver, low resolution (1024x76
    (var Array:FramebufferMode mode1) size := 2
    mode1:0 size_x := 1024 ; mode1:0 size_y := 768 ; mode1:0
    mode1:1 size_x := 1024 ; mode1:1 size_y := 768 ; mode1:1
    dm := framebuffer_configure drivers mode1 true
    framebuffer_switch dm true
  eif c="m":number
    console "[cr]auto select driver, medium resolution (1280
    (var Array:FramebufferMode mode1) size := 2
    mode1:0 size_x := 1280 ; mode1:0 size_y := 1024 ; mode1:
    mode1:1 size_x := 1280 ; mode1:1 size_y := 1024 ; mode1:
    dm := framebuffer_configure drivers mode1 true
    framebuffer_switch dm true
  eif c="h":number
    console "[cr]auto select driver, high resolution (1600x1
    (var Array:FramebufferMode mode1) size := 2
    mode1:0 size_x := 1600 ; mode1:0 size_y := 1200 ; mode1:
    mode1:1 size_x := 1600 ; mode1:1 size_y := 1200 ; mode1:
    dm := framebuffer_configure drivers mode1 true
    framebuffer_switch dm true
  else
    part auto_configure
      if c<>"a":number
        if { var Str driver := this_computer:env:"hardware":
          if (this_computer:env:"hardware":"screen":"horizon
            if (this_computer:env:"hardware":"screen":"verti
              if (this_computer:env:"hardware":"video":"bpp"
                console "[cr]Recall existing configuration" 
                if not (driver parse any:(var Str first_driv
                  first_driver := driver ; second_driver := 
                (var Array:Str driver1) size := 1 ; driver1 
                (var Array:FramebufferMode mode1) size := 1
                mode1:0 size_x := size_x ; mode1:0 size_y :=
                dm := framebuffer_configure driver1 mode1 fa
                if dm<>""
                  if second_driver<>""
                    framebuffer_switch dm false
                  leave auto_configure
      console "[cr]Fully automatic configuration" eol ; slee
      dm := framebuffer_configure drivers modes true
      framebuffer_switch dm true
  if dm<>""
    if console
      kernel_load_module "fbcon"
  else
    console character:27+"c"
    console "Could not find any working configuration for yo
  console "      'u' for VESA driver, low resolution (1024x7
  console "      'v' for VESA driver, auto configure resolut
  console "      'l' to auto-select your driver, low resolut
  console "      'm' to auto-select your driver, medium reso
  console "      'h' to auto select your driver, high resolu
  console eol
  console "When the graphic mode is set, the screen may rema
  console "It does not mean the computer is frozen; it's jus
  console "applications. Please be patient." eol
  console eol
  var CBool console := true
  var CBool registers := true
  part read_kbd
    var Int c := keyboard_raw_readchar 60
    if c="s":number
      log "info from scratch[lf]"
      console "[cr]info from scratch" eol
      info_from_scratch := true
      restart read_kbd
    eif c="f":number
      log "force mode switch[lf]"
      console "[cr]force mode switch" eol
      force_mode_switch := true
      restart read_kbd
    eif c="c":number
      log "no console[lf]"
      console "[cr]no console" eol
      console := false
      restart read_kbd
    eif c="r":number
      log "no registers dump[lf]"
      console "[cr]no registers dump" eol
      registers := false
      restart read_kbd
  if c=" ":number
    console "[cr]Manual configuration." eol
    part choose
      console "Please first select the video driver you want
      console "Use space bar to change travel the drivers li
      var Int i := 0
      while { console drivers:i (repeat 30 " ") "[cr]" ; var
        if c=" ":number
          i := (i+1)%drivers:size
      console "[lf]"
      console "Please now select the video mode you want to 
      var Int j := 0
      while { console modes:j:size_x "x" modes:j:size_y "x" 
        if c=" ":number
          j := (j+1)%modes:size
      console character:27+"c"
      (var Array:Str driver1) size := 1 ; driver1 0 := drive
      (var Array:FramebufferMode mode1) size := 1 ; mode1 0 
      dm := framebuffer_configure driver1 mode1 true
      if dm=""
        console "You selected video mode " modes:j:size_x "x
        console "Sorry, it does not work." eol eol
        restart choose    
  eif c="u":number
    console "[cr]VESA driver, low resolution (1024x768)" eol
    (var Array:Str driver1) size := 1 ; driver1 0 := "vesafb
    (var Array:FramebufferMode mode1) size := 2
    mode1:0 size_x := 1024 ; mode1:0 size_y := 768 ; mode1:0
    mode1:1 size_x := 1024 ; mode1:1 size_y := 768 ; mode1:1
    dm := framebuffer_configure driver1 mode1 true
  eif c="v":number
    console "[cr]VESA driver, auto configure resolution" eol
    (var Array:Str driver1) size := 1 ; driver1 0 := "vesafb
    dm := framebuffer_configure driver1 modes true
  eif c="l":number
    console "[cr]auto select driver, low resolution (1024x76
    (var Array:FramebufferMode mode1) size := 2
    mode1:0 size_x := 1024 ; mode1:0 size_y := 768 ; mode1:0
    mode1:1 size_x := 1024 ; mode1:1 size_y := 768 ; mode1:1
    dm := framebuffer_configure drivers mode1 true
    framebuffer_switch dm true
  eif c="m":number
    console "[cr]auto select driver, medium resolution (1280
    (var Array:FramebufferMode mode1) size := 2
    mode1:0 size_x := 1280 ; mode1:0 size_y := 1024 ; mode1:
    mode1:1 size_x := 1280 ; mode1:1 size_y := 1024 ; mode1:
    dm := framebuffer_configure drivers mode1 true
    framebuffer_switch dm true
  eif c="h":number
    console "[cr]auto select driver, high resolution (1600x1
    (var Array:FramebufferMode mode1) size := 2
    mode1:0 size_x := 1600 ; mode1:0 size_y := 1200 ; mode1:
    mode1:1 size_x := 1600 ; mode1:1 size_y := 1200 ; mode1:
    dm := framebuffer_configure drivers mode1 true
    framebuffer_switch dm true
  else
    part auto_configure
      if c<>"a":number
        if { var Str driver := this_computer:env:"hardware":
          if (this_computer:env:"hardware":"screen":"horizon
            if (this_computer:env:"hardware":"screen":"verti
              if (this_computer:env:"hardware":"video":"bpp"
                console "[cr]Recall existing configuration" 
                if not (driver parse any:(var Str first_driv
                  first_driver := driver ; second_driver := 
                (var Array:Str driver1) size := 1 ; driver1 
                (var Array:FramebufferMode mode1) size := 1
                mode1:0 size_x := size_x ; mode1:0 size_y :=
                dm := framebuffer_configure driver1 mode1 fa
                if dm<>""
                  if second_driver<>""
                    framebuffer_switch dm false
                  leave auto_configure
      console "[cr]Fully automatic configuration" eol ; slee
      dm := framebuffer_configure drivers modes true
      framebuffer_switch dm true
  if dm<>""
    if console
      kernel_load_module "fbcon"
  else
    console character:27+"c"
    console "Could not find any working configuration for yo
    console "The Pliant browser will not be usable. Sorry ab
    console "The Pliant ui will not be usable. Sorry about that." eol
    console eol
  log "configuration end at "+string:datetime+" "+dm+"[lf]"

export framebuffer_configure
    console eol
  log "configuration end at "+string:datetime+" "+dm+"[lf]"

export framebuffer_configure