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