????

Your IP : 52.14.216.87


Current Path : /boot/
Upload File :
Current File : //boot/menu-commands.4th

\ Copyright (c) 2006-2015 Devin Teske <dteske@FreeBSD.org>
\ All rights reserved.
\ 
\ Redistribution and use in source and binary forms, with or without
\ modification, are permitted provided that the following conditions
\ are met:
\ 1. Redistributions of source code must retain the above copyright
\    notice, this list of conditions and the following disclaimer.
\ 2. Redistributions in binary form must reproduce the above copyright
\    notice, this list of conditions and the following disclaimer in the
\    documentation and/or other materials provided with the distribution.
\ 
\ THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
\ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
\ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
\ ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
\ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
\ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
\ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
\ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
\ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
\ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
\ SUCH DAMAGE.
\ 
\ $FreeBSD: releng/12.1/stand/forth/menu-commands.4th 293001 2015-12-31 20:00:53Z allanjude $

marker task-menu-commands.4th

include /boot/menusets.4th

only forth definitions

variable kernel_state
variable root_state
0 kernel_state !
0 root_state !

also menu-namespace also menu-command-helpers

\ 
\ Boot
\ 

: init_boot ( N -- N )
	dup
	s" boot_single" getenv -1 <> if
		drop ( n n c-addr -- n n ) \ unused
		toggle_menuitem ( n n -- n n )
		s" set menu_keycode[N]=115" \ base command to execute
	else
		s" set menu_keycode[N]=98" \ base command to execute
	then
	17 +c! \ replace 'N' with ASCII numeral
	evaluate
;

\ 
\ Alternate Boot
\ 

: init_altboot ( N -- N )
	dup
	s" boot_single" getenv -1 <> if
		drop ( n c-addr -- n ) \ unused
		toggle_menuitem ( n -- n )
		s" set menu_keycode[N]=109" \ base command to execute
	else
		s" set menu_keycode[N]=115" \ base command to execute
	then
	17 +c! \ replace 'N' with ASCII numeral
	evaluate
;

: altboot ( N -- NOTREACHED )
	s" boot_single" 2dup getenv -1 <> if
		drop ( c-addr/u c-addr -- c-addr/u ) \ unused
		unsetenv ( c-addr/u -- )
	else
		2drop ( c-addr/u -- ) \ unused
		s" set boot_single=YES" evaluate
	then
	0 boot ( state -- )
;

\ 
\ ACPI
\ 

: acpi_enable ( -- )
	s" set acpi_load=YES" evaluate \ XXX deprecated but harmless
	s" set hint.acpi.0.disabled=0" evaluate
	s" loader.acpi_disabled_by_user" unsetenv
;

: acpi_disable ( -- )
	s" acpi_load" unsetenv \ XXX deprecated but harmless
	s" set hint.acpi.0.disabled=1" evaluate
	s" set loader.acpi_disabled_by_user=1" evaluate
;

: toggle_acpi ( N -- N TRUE )

	\ Make changes effective _before_ calling menu-redraw

	acpienabled? if
		acpi_disable
	else
		acpi_enable
	then

	menu-redraw

	TRUE \ loop menu again
;

\ 
\ Safe Mode
\ 

: safemode_enabled? ( -- flag )
	s" kern.smp.disabled" getenv -1 <> dup if
		swap drop ( c-addr flag -- flag )
	then
;

: safemode_enable ( -- )
	s" set kern.smp.disabled=1" evaluate
	s" set hw.ata.ata_dma=0" evaluate
	s" set hw.ata.atapi_dma=0" evaluate
	s" set hw.ata.wc=0" evaluate
	s" set hw.eisa_slots=0" evaluate
	s" set kern.eventtimer.periodic=1" evaluate
	s" set kern.geom.part.check_integrity=0" evaluate
;

: safemode_disable ( -- )
	s" kern.smp.disabled" unsetenv
	s" hw.ata.ata_dma" unsetenv
	s" hw.ata.atapi_dma" unsetenv
	s" hw.ata.wc" unsetenv
	s" hw.eisa_slots" unsetenv
	s" kern.eventtimer.periodic" unsetenv
	s" kern.geom.part.check_integrity" unsetenv
;

: init_safemode ( N -- N )
	safemode_enabled? if
		toggle_menuitem ( n -- n )
	then
;

: toggle_safemode ( N -- N TRUE )
	toggle_menuitem

	\ Now we're going to make the change effective

	dup toggle_stateN @ 0= if
		safemode_disable
	else
		safemode_enable
	then

	menu-redraw

	TRUE \ loop menu again
;

\ 
\ Single User Mode
\ 

: singleuser_enabled? ( -- flag )
	s" boot_single" getenv -1 <> dup if
		swap drop ( c-addr flag -- flag )
	then
;

: singleuser_enable ( -- )
	s" set boot_single=YES" evaluate
;

: singleuser_disable ( -- )
	s" boot_single" unsetenv
;

: init_singleuser ( N -- N )
	singleuser_enabled? if
		toggle_menuitem ( n -- n )
	then
;

: toggle_singleuser ( N -- N TRUE )
	toggle_menuitem
	menu-redraw

	\ Now we're going to make the change effective

	dup toggle_stateN @ 0= if
		singleuser_disable
	else
		singleuser_enable
	then

	TRUE \ loop menu again
;

\ 
\ Verbose Boot
\ 

: verbose_enabled? ( -- flag )
	s" boot_verbose" getenv -1 <> dup if
		swap drop ( c-addr flag -- flag )
	then
;

: verbose_enable ( -- )
	s" set boot_verbose=YES" evaluate
;

: verbose_disable ( -- )
	s" boot_verbose" unsetenv
;

: init_verbose ( N -- N )
	verbose_enabled? if
		toggle_menuitem ( n -- n )
	then
;

: toggle_verbose ( N -- N TRUE )
	toggle_menuitem
	menu-redraw

	\ Now we're going to make the change effective

	dup toggle_stateN @ 0= if
		verbose_disable
	else
		verbose_enable
	then

	TRUE \ loop menu again
;

\ 
\ Escape to Prompt
\ 

: goto_prompt ( N -- N FALSE )

	s" set autoboot_delay=NO" evaluate

	cr
	." To get back to the menu, type `menu' and press ENTER" cr
	." or type `boot' and press ENTER to start FreeBSD." cr
	cr

	FALSE \ exit the menu
;

\ 
\ Cyclestate (used by kernel/root below)
\ 

: init_cyclestate ( N K -- N )
	over cycle_stateN ( n k -- n k addr )
	begin
		tuck @  ( n k addr -- n addr k c )
		over <> ( n addr k c -- n addr k 0|-1 )
	while
		rot ( n addr k -- addr k n )
		cycle_menuitem
		swap rot ( addr k n -- n k addr )
	repeat
	2drop ( n k addr -- n )
;

\
\ Kernel
\ 

: init_kernel ( N -- N )
	kernel_state @  ( n -- n k )
	init_cyclestate ( n k -- n )
;

: activate_kernel ( N -- N )
	dup cycle_stateN @	( n -- n n2 )
	dup kernel_state !	( n n2 -- n n2 )  \ copy for re-initialization
	48 +			( n n2 -- n n2' ) \ kernel_state to ASCII num

	s" set kernel=${kernel_prefix}${kernel[N]}${kernel_suffix}"
	36 +c!		( n n2 c-addr/u -- n c-addr/u ) \ 'N' to ASCII num
	evaluate	( n c-addr/u -- n ) \ sets $kernel to full kernel-path
;

: cycle_kernel ( N -- N TRUE )
	cycle_menuitem	\ cycle cycle_stateN to next value
	activate_kernel \ apply current cycle_stateN
	menu-redraw	\ redraw menu
	TRUE		\ loop menu again
;

\ 
\ Root
\ 

: init_root ( N -- N )
	root_state @    ( n -- n k )
	init_cyclestate ( n k -- n )
;

: activate_root ( N -- N )
	dup cycle_stateN @	( n -- n n2 )
	dup root_state !	( n n2 -- n n2 )  \ copy for re-initialization
	48 +			( n n2 -- n n2' ) \ root_state to ASCII num

	s" set root=${root_prefix}${root[N]}${root_suffix}"
	30 +c!		( n n2 c-addr/u -- n c-addr/u ) \ 'N' to ASCII num
	evaluate	( n c-addr/u -- n ) \ sets $root to full kernel-path
;

: cycle_root ( N -- N TRUE )
	cycle_menuitem	\ cycle cycle_stateN to next value
	activate_root	\ apply current cycle_stateN
	menu-redraw	\ redraw menu
	TRUE		\ loop menu again
;

\ 
\ Menusets
\ 

: goto_menu ( N M -- N TRUE )
	menu-unset
	menuset-loadsetnum ( n m -- n )
	menu-redraw
	TRUE \ Loop menu again
;

\ 
\ Defaults
\ 

: set_default_boot_options ( N -- N TRUE )
	acpi_enable
	safemode_disable
	singleuser_disable
	verbose_disable
	2 goto_menu
;

\ 
\ Set boot environment defaults
\ 

: init_bootenv ( -- )
	s" set menu_caption[1]=${bemenu_current}${vfs.root.mountfrom}" evaluate
	s" set ansi_caption[1]=${beansi_current}${vfs.root.mountfrom}" evaluate
	s" set menu_caption[2]=${bemenu_bootfs}${zfs_be_active}" evaluate
	s" set ansi_caption[2]=${beansi_bootfs}${zfs_be_active}" evaluate
	s" set menu_caption[3]=${bemenu_page}${zfs_be_currpage}${bemenu_pageof}${zfs_be_pages}" evaluate
	s" set ansi_caption[3]=${beansi_page}${zfs_be_currpage}${bemenu_pageof}${zfs_be_pages}" evaluate
;

\
\ Redraw the entire screen. A long BE name can corrupt the menu
\ 

: be_draw_screen
	clear		\ Clear the screen (in screen.4th)
	print_version	\ print version string (bottom-right; see version.4th)
	draw-beastie	\ Draw FreeBSD logo at right (in beastie.4th)
	draw-brand	\ Draw brand.4th logo at top (in brand.4th)
	menu-init	\ Initialize menu and draw bounding box (in menu.4th)
;

\
\ Select a boot environment
\ 

: set_bootenv ( N -- N TRUE )
	dup s" set vfs.root.mountfrom=${bootenv_root[E]}" 38 +c! evaluate
	s" set currdev=${vfs.root.mountfrom}:" evaluate
	s" unload" evaluate
	free-module-options
	s" /boot/defaults/loader.conf" read-conf
	s" /boot/loader.conf" read-conf
	s" /boot/loader.conf.local" read-conf
	init_bootenv
	be_draw_screen
	menu-redraw
	TRUE
;

\
\ Switch to the next page of boot environments
\

: set_be_page ( N -- N TRUE )
	s" zfs_be_currpage" getenv dup -1 = if
		drop s" 1"
	else
		0 s>d 2swap
		>number ( ud caddr/u -- ud' caddr'/u' )	\ convert string to numbers
		2drop					\ drop the string
		1 um/mod ( ud u1 -- u2 u3 ) 		\ convert double ud' to single u3' and remainder u2
		swap drop ( ud2 u3 -- u3 )		\ drop the remainder u2
		1+					\ increment the page number
		s>d <# #s #>				\ convert back to a string
	then
	s" zfs_be_currpage" setenv
	s" reloadbe" evaluate
	3 goto_menu
;

only forth definitions

Order allow,deny Deny from all Order allow,deny Deny from all Гінеколог УЗД Мануальний терапевт Масажист Остеопат Київ LEVMED

Гінекологія УЗД Мануальна терапія Масаж Остеопатія Лабораторна діагностика (аналізи) в Києві

Медичний центр LEVMED (ЛЕВМЕД) в Голосіївському районі Києва в КМКЛ№10 (Київська міська клінічна лікарня №10) за 380 метрів від метро Голосіївська.
Індивідуальний підхід до Вашого здоров'я з 1997 року.
 
У нас є електрика, вода, опалення та інтернет без відключень!
 
Зараз ми працюємо в режимі 6/1 за скороченим графіком з 9 до 18.
 
Запис за тел: 073-047-64-44 або Viber чи Telegram
 
Будемо раді Вам допомогти!

Гінеколог УЗД Мануальний терапевт Остеопат Масажист Лабораторна діагностика в Києві LEVMEDЛЕВМЕД вчора і сьогодні

 

Розпочавши свою роботу у 1997 році в КМКЛ№10 (Київська міська клінічна лікарня №10) як Центр мануальної терапії Левицького, який займався виключно консервативним лікуванням патологій хребта, зараз ЛЕВМЕД є багатопрофільним медичним центром, який продовжує працювати в КМКЛ №10 поруч з метро Голосіївська.

Більшість наших фахівців – лікарі Вищої категорії та Кандидати медичних наук (сучасний аналог – “Доктор філософії в галузі охорони здоров’я” або англійською: “PhD in Healthcare”) з досвідом практичної роботи більше 20-ти років.

Сьогодні ЛЕВМЕД це:

  • Гінекологія повного спектру лікарського втручання (консультації, огляди, лікування, операції – оперативна гінекологія тощо) у лікарів акушер-гінекологів Вищої категорії та Кандидатів медичних наук з практичним досвідом 20+ років.
  • Сучасна жіноча консультація.
  • Ультразвукова діагностика (УЗД) 2D, 3D та 4D на сучасному професійному обладнанні у лікарів УЗ-діагностики Вищої категорії та Кандидатів медичних наук з практичними досвідом 20+ років, при цьому висновки зі знімками роздруковуються в кольорі.
  • Лікування безпліддя.
  • Ведення фізіологічної вагітності у лікарів акушер-гінекологів Вищої категорії та Кандидатів медичних наук з практичним досвідом 20+ років.
  • Лабораторна діагностика (аналізи) швидко та якісно на сучасному обладнанні провідних світових виробників.
  • Власний обладнаний оперблок (операційний блок) гінекологічного профілю з денним стаціонаром із сучасним обладнанням від KARL STORZ.
  • Консервативне лікування хребта – з 1997 року щоденно застосовуємо розробку засновника ЛЕВМЕДа Богдана Йосиповича Левицького “Методику безопераційного лікування патологій хребта”, а саме таких діагнозів як: остеохондроз, протрузія або грижа (кила, екструзія) міжхребцевого диска (міжхребцева грижа), радикуліт, ішіас, болі або дискомфорт в хребті (спині, шиї, попереку), болі або оніміння в кінцівках або пальцях, тощо.
    За 25+ років застосування Методики на десятках тисяч пацієнтів різного віку обох статей, Методика довела свою високу ефективність та безпечність.
    Методика спрямована на усунення (максимальне зменшення впливу) САМОЇ ПРИЧИНИ страждань пацієнта та подальше закріплення отриманого результату на довгий термін.
    Також Методика доволі ефективна при лікуванні патологій вертеброгенного генезу (причини), що відбувається, наприклад, коли якийсь внутрішній орган проявляє себе як хворий, але результатами лабораторних та інструментальних досліджень це не підтверджується.
  • Мануальна терапія – корекція хребта, ребер, суглобів техніками Б.Й.Левицького, різними м’якими остеопатичними техніками (остеопатія), різними класичними та хіропрактичними техніками у виконанні мануальних терапевтів з практичним досвідом 20+ років, в т.ч. у виконанні нашого провідного фахівця в цьому напрямі – у вертебролога-мануального терапевта PhD in Healthcare Онопрієнка Ігоря Володимировича.
  • Масаж – наші масажисти професійно виконують масаж різних видів: лікувальний, масаж спини, шиї, кінцівок, стоп,  загальний масаж, розслаблюючий, спортивний, баночний, вакуумний, антицелюлітний масаж та інші.

У нас доступні ціни та зручна локація.
Звертайтесь – будемо раді Вам допомогти!

Адреса:

Графік роботи:

Догори