xref: /illumos-gate/usr/src/boot/forth/version.4th (revision 1a2d662a91cee3bf82f41cd47c7ae6f3825d9db2)
1\ Copyright (c) 2006-2015 Devin Teske <dteske@FreeBSD.org>
2\ Copyright 2019 OmniOS Community Edition (OmniOSce) Association.
3\ All rights reserved.
4\
5\ Redistribution and use in source and binary forms, with or without
6\ modification, are permitted provided that the following conditions
7\ are met:
8\ 1. Redistributions of source code must retain the above copyright
9\    notice, this list of conditions and the following disclaimer.
10\ 2. Redistributions in binary form must reproduce the above copyright
11\    notice, this list of conditions and the following disclaimer in the
12\    documentation and/or other materials provided with the distribution.
13\
14\ THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
15\ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16\ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17\ ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
18\ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19\ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20\ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21\ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22\ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23\ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24\ SUCH DAMAGE.
25
26marker task-version.4th
27
28vocabulary version-processing
29only forth also version-processing definitions
30
31variable versionX
32variable versionY
33
34\ Default $loader_version value if not overridden or using tribute screen
35: str_loader_version ( -- C-ADDR/U|-1 ) -1 ;
36
37\ Initialize text placement to defaults
3880 versionX !	\ NOTE: this is the ending column (text is right-justified)
3924 versionY !
40
41only forth definitions also version-processing
42
43: print_version ( -- )
44
45	\ Get the text placement position (if set)
46	s" loader_version_x" getenv dup -1 <> if
47		?number drop versionX ! -1
48	then drop
49	s" loader_version_y" getenv dup -1 <> if
50		?number drop versionY ! -1
51	then drop
52
53	\ Default version if none was set
54	s" loader_version" getenv dup -1 = if
55		drop
56		\ Use above default if no logo is requested
57		s" loader_logo" getenv dup -1 = if
58			drop str_loader_version
59		else
60			\ For tributes, do nothing (defer to logo-*.4th)
61			2dup s" tribute" compare-insensitive 0= if
62				2drop
63				s" logo" sfind if
64					drop exit \ see logo-tribute.4th
65				else
66					drop str_loader_version
67				then
68			else 2dup s" tributebw" compare-insensitive 0= if
69				2drop
70				s" logo" sfind if
71					drop exit \ see logo-tributebw.4th
72				else
73					drop str_loader_version
74				then
75			else
76				2drop str_loader_version
77			then then
78		then
79	then dup -1 = if
80		drop exit \ default version (above) is disabled
81	then
82
83	\ Right justify the text
84	dup versionX @ swap - versionY @ at-xy
85
86	\ Print the version (optionally in cyan)
87	loader_color? dup ( c-addr/u -- c-addr/u bool bool )
88	if 6 fg then
89	-rot type
90	if me then
91
92	at-bl
93;
94
95only forth definitions
96