1 /* 2 * Copyright (c) 2018 The NetBSD Foundation, Inc. All rights reserved. 3 * 4 * This code is derived from software contributed to The NetBSD Foundation 5 * by Maxime Villard. 6 * 7 * Redistribution and use in source and binary forms, with or without 8 * modification, are permitted provided that the following conditions 9 * are met: 10 * 1. Redistributions of source code must retain the above copyright 11 * notice, this list of conditions and the following disclaimer. 12 * 2. Redistributions in binary form must reproduce the above copyright 13 * notice, this list of conditions and the following disclaimer in the 14 * documentation and/or other materials provided with the distribution. 15 * 16 * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 17 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 18 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 19 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 20 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 21 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 22 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 23 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 24 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 25 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 26 * POSSIBILITY OF SUCH DAMAGE. 27 */ 28 29 #include "smallkern.h" 30 31 void print_ext(int color __unused, char *buf) 32 { 33 size_t i; 34 35 for (i = 0; buf[i] != '\0'; i++) { 36 outsb(123, &buf[i], 1); 37 } 38 } 39 40 void print(char *buf) 41 { 42 print_ext(WHITE_ON_BLACK, buf); 43 } 44 45 void print_state(bool ok, char *buf) 46 { 47 print("["); 48 if (ok) 49 print_ext(GREEN_ON_BLACK, "+"); 50 else 51 print_ext(RED_ON_BLACK, "!"); 52 print("] "); 53 print(buf); 54 print("\n"); 55 } 56 57 void print_banner() 58 { 59 char *banner = 60 " _________ __ __ __ \n" 61 " / _____/ _____ _____ | | | | | | __ ___________ ____ \n" 62 " \\_____ \\ / \\\\__ \\ | | | | | |/ // __ \\_ __ \\/ \\ \n" 63 " / \\ Y Y \\/ __ \\| |_| |_| <\\ ___/| | \\/ | \\\n" 64 "/_______ /__|_| (____ /____/____/__|_ \\\\___ >__| |___| /\n" 65 " \\/ \\/ \\/ \\/ \\/ \\/ \n" 66 ; 67 print(banner); 68 } 69