xref: /freebsd/stand/forth/brand.4th (revision 3630506b9daec9167a89bc4525638ea45a00769e)
1ca987d46SWarner Losh\ Copyright (c) 2006-2015 Devin Teske <dteske@FreeBSD.org>
2ca987d46SWarner Losh\ All rights reserved.
3ca987d46SWarner Losh\
4ca987d46SWarner Losh\ Redistribution and use in source and binary forms, with or without
5ca987d46SWarner Losh\ modification, are permitted provided that the following conditions
6ca987d46SWarner Losh\ are met:
7ca987d46SWarner Losh\ 1. Redistributions of source code must retain the above copyright
8ca987d46SWarner Losh\    notice, this list of conditions and the following disclaimer.
9ca987d46SWarner Losh\ 2. Redistributions in binary form must reproduce the above copyright
10ca987d46SWarner Losh\    notice, this list of conditions and the following disclaimer in the
11ca987d46SWarner Losh\    documentation and/or other materials provided with the distribution.
12ca987d46SWarner Losh\
13ca987d46SWarner Losh\ THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
14ca987d46SWarner Losh\ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15ca987d46SWarner Losh\ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16ca987d46SWarner Losh\ ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
17ca987d46SWarner Losh\ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18ca987d46SWarner Losh\ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
19ca987d46SWarner Losh\ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
20ca987d46SWarner Losh\ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
21ca987d46SWarner Losh\ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
22ca987d46SWarner Losh\ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
23ca987d46SWarner Losh\ SUCH DAMAGE.
24ca987d46SWarner Losh\
25ca987d46SWarner Losh\ $FreeBSD$
26ca987d46SWarner Losh
27ca987d46SWarner Loshmarker task-brand.4th
28ca987d46SWarner Losh
29ca987d46SWarner Loshvariable brandX
30ca987d46SWarner Loshvariable brandY
31ca987d46SWarner Losh
32ca987d46SWarner Losh\ Initialize brand placement to defaults
33ca987d46SWarner Losh2 brandX !
34ca987d46SWarner Losh1 brandY !
35ca987d46SWarner Losh
36ca987d46SWarner Losh\ This function draws any number of company brands at (loader_brand_x,
37ca987d46SWarner Losh\ loader_brand_y) if defined, or (2,1) (top-left). To choose your brand, set
38ca987d46SWarner Losh\ the variable `loader_brand' to the respective brand name.
39ca987d46SWarner Losh\
40ca987d46SWarner Losh\ NOTE: Each is defined as a brand function in /boot/brand-${loader_brand}.4th
41ca987d46SWarner Losh\ NOTE: If `/boot/brand-${loader_brand}.4th' does not exist or does not define
42ca987d46SWarner Losh\       a `brand' function, no brand is drawn.
43ca987d46SWarner Losh\
44ca987d46SWarner Losh: draw-brand ( -- ) \ at (loader_brand_x,loader_brand_y), else (2,1)
45ca987d46SWarner Losh
46ca987d46SWarner Losh	s" loader_brand_x" getenv dup -1 <> if
47ca987d46SWarner Losh		?number 1 = if brandX ! then
48ca987d46SWarner Losh	else drop then
49ca987d46SWarner Losh 	s" loader_brand_y" getenv dup -1 <> if
50ca987d46SWarner Losh 		?number 1 = if brandY ! then
51ca987d46SWarner Losh 	else drop then
52ca987d46SWarner Losh
53ca987d46SWarner Losh	\ If `brand' is defined, execute it
54ca987d46SWarner Losh	s" brand" sfind ( -- xt|0 bool ) if
55ca987d46SWarner Losh		brandX @ brandY @ rot execute
56ca987d46SWarner Losh	else
57ca987d46SWarner Losh		\ Not defined; try-include desired brand file
58ca987d46SWarner Losh		drop ( xt = 0 ) \ cruft
59ca987d46SWarner Losh		s" loader_brand" getenv dup -1 = over 0= or if
60ca987d46SWarner Losh			dup 0= if 2drop else drop then \ getenv result unused
61ca987d46SWarner Losh			s" try-include /boot/brand-fbsd.4th"
62ca987d46SWarner Losh		else
63ca987d46SWarner Losh			2drop ( c-addr/u -- ) \ getenv result unused
64ca987d46SWarner Losh			s" try-include /boot/brand-${loader_brand}.4th"
65ca987d46SWarner Losh		then
66ca987d46SWarner Losh		evaluate
67ca987d46SWarner Losh		1 spaces
68ca987d46SWarner Losh
69ca987d46SWarner Losh		\ Execute `brand' if defined now
70ca987d46SWarner Losh		s" brand" sfind if
71ca987d46SWarner Losh			brandX @ brandY @ rot execute
72ca987d46SWarner Losh		else drop then
73ca987d46SWarner Losh	then
74ca987d46SWarner Losh;
75*3630506bSToomas Soome
76*3630506bSToomas Soome: draw-brand
77*3630506bSToomas Soome	['] draw-brand console-iterate
78*3630506bSToomas Soome;
79