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