xref: /titanic_52/usr/src/boot/sys/boot/forth/version.4th (revision 4a5d661a82b942b6538acd26209d959ce98b593a)
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\
25\ $FreeBSD$
26
27marker task-version.4th
28
29vocabulary version-processing
30only forth also version-processing definitions
31
32variable versionX
33variable versionY
34
35\ Default $loader_version value if not overridden or using tribute screen
36: str_loader_version ( -- C-ADDR/U|-1 ) -1 ;
37
38\ Initialize text placement to defaults
3980 versionX !	\ NOTE: this is the ending column (text is right-justified)
4024 versionY !
41
42only forth definitions also version-processing
43
44: print_version ( -- )
45
46	\ Get the text placement position (if set)
47	s" loader_version_x" getenv dup -1 <> if
48		?number drop versionX ! -1
49	then drop
50	s" loader_version_y" getenv dup -1 <> if
51		?number drop versionY ! -1
52	then drop
53
54	\ Default version if none was set
55	s" loader_version" getenv dup -1 = if
56		drop
57		\ Use above default if no logo is requested
58		s" loader_logo" getenv dup -1 = if
59			drop str_loader_version
60		else
61			\ For tributes, do nothing (defer to logo-*.4th)
62			2dup s" tribute" compare-insensitive 0= if
63				2drop
64				s" logo" sfind if
65					drop exit \ see logo-tribute.4th
66				else
67					drop str_loader_version
68				then
69			else 2dup s" tributebw" compare-insensitive 0= if
70				2drop
71				s" logo" sfind if
72					drop exit \ see logo-tributebw.4th
73				else
74					drop str_loader_version
75				then
76			else
77				2drop str_loader_version
78			then then
79		then
80	then dup -1 = if
81		drop exit \ default version (above) is disabled
82	then
83
84	\ Right justify the text
85	dup versionX @ swap - versionY @ at-xy
86
87	\ Print the version (optionally in cyan)
88	loader_color? dup ( c-addr/u -- c-addr/u bool bool )
89	if 6 fg then
90	-rot type
91	if me then
92
93	0 25 at-xy
94;
95
96only forth definitions
97