Re: Penguins

Pavel Machek (pavel@Elf.mj.gts.cz)
Sun, 21 Sep 1997 20:33:50 +0200


Hi!

> Was I dreaming or was there a patch around to put up a penguin on the boot
> screen? I can't find any reference to penguins on boot in the archives,
> though.
>
> It sounds pretty mad, really... :-)

I've made some enhancements to the penguin bootlogo patch - and it
became _usefull_ as it prints _much_ of config at the boot time. Here
it goes: (I would really like to see this in official tree. Diff is
against 2.1.56.)

Pavel

--- /usr/src/clean/arch/i386/boot/video.S Fri May 16 01:48:01 1997
+++ /usr/src/linux/arch/i386/boot/video.S Sun Sep 7 21:07:56 1997
@@ -1,10 +1,13 @@
-!
+
! Display adapter & video mode setup, version 2.11 (03-May-97)
!
! Copyright (C) 1995 -- 1997 Martin Mares <mj@k332.feld.cvut.cz>
! Based on the original setup.S code (C) Linus Torvalds and Mats Anderson
!

+! Do you want to see penguin?
+#define CONFIG_PENGUIN
+
! Enable autodetection of SVGA adapters and modes. If you really need this
! feature, drop me a mail as I think of removing it some day...
#undef CONFIG_VIDEO_SVGA
@@ -114,6 +117,9 @@
call restore_screen ! Restore screen contents
#endif /* CONFIG_VIDEO_RETAIN */
#endif /* CONFIG_VIDEO_SELECT */
+#ifdef CONFIG_PENGUIN
+ call penguin ! display logo
+#endif
call mode_params ! Store mode parameters
pop ds ! Restore original DS
ret
@@ -192,6 +198,73 @@
movb [PARAM_VIDEO_LINES],al
ret

+#ifdef CONFIG_PENGUIN
+!
+! nice penguin for intel boxes too :-)
+!
+
+penguin:
+ incb [PARAM_HAVE_VGA] ! make sure we have a vga...
+ decb [PARAM_HAVE_VGA]
+ jz logo_skip
+
+ seg gs ! ... and a video mode with
+ mov ax,[0x485] ! 16-line fonts
+ cmp ax,#16
+ jnz logo_skip
+
+ push gs ! clean all bad characters from the screen
+ mov bx,#0xb800
+ mov gs,bx
+ mov bx,#0
+clean_out:
+ seg gs
+ cmpb (bx),#0xb3
+ jb noclean
+ seg gs
+ cmpb (bx),#0xdf
+ ja noclean
+ seg gs
+ mov (bx),#0x20
+noclean:
+ inc bx
+ cmp bx,#0xffff
+ jne clean_out
+ pop gs
+
+ mov ax,#0x1100 ! load the font piece using bios functions
+ mov bx,#0x1000
+ mov cx,#32
+ mov dx,#0x00c0
+ lea bp,logofont
+ int 0x10
+
+ lea si,penguin_msg ! print the string with the logo
+ call prtstr
+
+ push gs ! inverse video on penguin
+ mov bx,#0xb800
+ mov gs,bx
+ mov bx,#0
+inverse:
+ seg gs
+ cmpb (bx),#0xb3
+ jb noinverse
+ seg gs
+ cmpb (bx),#0xdf
+ ja noinverse
+ seg gs
+ xor (bx+1),#0x77
+noinverse:
+ inc bx
+ cmp bx,#0xffff
+ jne inverse
+ pop gs
+
+logo_skip:
+ ret
+#endif
+
#ifdef CONFIG_VIDEO_SELECT

!
@@ -1838,3 +1911,455 @@
adapter: .byte 0 ! Video adapter: 0=CGA/MDA/HGA,1=EGA,2=VGA
video_segment: .word 0xb800 ! Video memory segment
force_size: .word 0 ! Use this size instead of the one in BIOS vars
+
+#ifdef CONFIG_PENGUIN
+#include <linux/autoconf.h>
+#include <linux/version.h>
+ penguin_msg:
+ .ascii "ÇÀÁÂÃÄÅÆÇÇ Linux "
+ .ascii UTS_RELEASE
+ .ascii " for "
+#ifdef CONFIG_M386
+ .ascii "386"
+#endif
+#ifdef CONFIG_M486
+ .ascii "486"
+#endif
+#ifdef CONFIG_M586
+ .ascii "Pentium"
+#endif
+#ifdef CONFIG_M686
+ .ascii "PPro"
+#endif
+#ifdef CONFIG_SMP
+ .ascii "/SMP"
+#endif
+ .ascii " with "
+#ifdef CONFIG_MATH_EMULATION
+ .ascii "soft387 "
+#endif
+#ifndef CONFIG_NET
+ .ascii "no_network "
+#endif
+#ifndef CONFIG_BINFMT_AOUT
+ .ascii "no_aout "
+#endif
+#ifndef CONFIG_BINFMT_ELF
+ .ascii "no_elf "
+#endif
+#ifdef CONFIG_BLK_DEV_IDE
+ .ascii "ide "
+#endif
+#ifdef CONFIG_SCSI
+ .ascii "scsi "
+#endif
+#ifdef CONFIG_PPP
+ .ascii "ppp "
+#endif
+#ifdef CONFIG_ISDN
+ .ascii "isdn "
+#endif
+#ifdef CONFIG_SLIP
+ .ascii "slip "
+#endif
+#ifndef CONFIG_VT_CONSOLE
+ .ascii "no_vt "
+#endif
+#ifndef CONFIG_SERIAL
+ .ascii "no_serial "
+#endif
+#ifdef CONFIG_CD_NO_IDESCSI
+ .ascii "?cdrom "
+#endif
+#ifdef CONFIG_MCA
+ .ascii "mca "
+#endif
+#ifdef CONFIG_PNP
+ .ascii "pnp "
+#endif
+#ifdef CONFIG_MODULES
+# ifdef CONFIG_KERNELD
+ .ascii "mod/k "
+# else
+ .ascii "mod "
+# endif
+#endif
+#ifdef CONFIG_MAGIC_SYSRQ
+ .ascii "magic "
+#endif
+
+
+ db 0x0d,0x0a
+ .ascii "ÇÈÉÊËÌÍÎÏÇ fs: "
+#ifdef CONFIG_MINIX_FS
+ .ascii "minix "
+#endif
+#ifdef CONFIG_EXT2_FS
+ .ascii "ext2 "
+#endif
+#ifdef CONFIG_MSDOS_FS
+ .ascii "msdos "
+#endif
+#ifdef CONFIG_VFAT_FS
+ .ascii "vfat "
+#endif
+#ifdef CONFIG_UMSDOS_FS
+ .ascii "umsdos "
+#endif
+#ifdef CONFIG_PROC_FS
+ .ascii "proc "
+#endif
+#ifdef CONFIG_NFS_FS
+# ifdef CONFIG_ROOT_NFS
+ .ascii "nfsroot "
+# else
+ .ascii "nfs "
+# endif
+#endif
+#ifdef CONFIG_NFSD
+ .ascii "nfsserver "
+#endif
+#ifdef CONFIG_SMB_FS
+ .ascii "samba "
+#endif
+#ifdef CONFIG_ISO9660_FS
+ .ascii "iso9660 "
+#endif
+#ifdef CONFIG_HPFS_FS
+ .ascii "hpfs "
+#endif
+#ifdef CONFIG_SYSV_FS
+ .ascii "sysv "
+#endif
+#ifdef CONFIG_AFFS_FS
+ .ascii "affs "
+#endif
+#ifdef CONFIG_ROMFS_FS
+ .ascii "rom "
+#endif
+#ifdef CONFIG_AUTOFS_FS
+ .ascii "auto "
+#endif
+#ifdef CONFIG_UFS_FS
+ .ascii "ufs "
+#endif
+
+ db 0x0d,0x0a
+ .ascii "ÇÐÑÒÓÔÕÖ×Ç hw: "
+/* Network cards */
+#ifdef CONFIG_EL1
+ .ascii "3c501 "
+#endif
+#ifdef CONFIG_EL2
+ .ascii "3c503 "
+#endif
+#ifdef CONFIG_ELPLUS
+ .ascii "3c505 "
+#endif
+#ifdef CONFIG_EL16
+ .ascii "3c507 "
+#endif
+#ifdef CONFIG_ELMC
+ .ascii "3c523 "
+#endif
+#ifdef CONFIG_EL3
+ .ascii "3c5?9 "
+#endif
+#ifdef CONFIG_VORTEX
+ .ascii "vortex "
+#endif
+#ifdef CONFIG_WD80x3
+ .ascii "wd80x3 "
+#endif
+#ifdef CONFIG_ULTRA
+ .ascii "smc_ultra "
+#endif
+#ifdef CONFIG_SMC9194
+ .ascii "smc9194 "
+#endif
+#ifdef CONFIG_AT1700
+ .ascii "at1700 "
+#endif
+#ifdef CONFIG_E2100
+ .ascii "e2100 "
+#endif
+#ifdef CONFIG_DECPA
+ .ascii "decpa "
+#endif
+#ifdef CONFIG_EWRK3
+ .ascii "EWorks3 "
+#endif
+#ifdef CONFIG_EEXPRESS
+ .ascii "EExpress "
+#endif
+#ifdef CONFIG_EEXPRESS_PRO
+ .ascii "EExpressPro "
+#endif
+#ifdef CONFIG_FMV18X
+ .ascii "fmv18x "
+#endif
+#ifdef CONFIG_HPLAN_PLUS
+ .ascii "hplan+ "
+#endif
+#ifdef CONFIG_HPLAN
+ .ascii "hplan "
+#endif
+#ifdef CONFIG_HP100
+ .ascii "hp100 "
+#endif
+#ifdef CONFIG_ETH16I
+ .ascii "eth16i "
+#endif
+#ifdef CONFIG_NE2000
+ .ascii "ne2000 "
+#endif
+#ifdef CONFIG_NI52
+ .ascii "ni52 "
+#endif
+#ifdef CONFIG_NI65
+ .ascii "ni65 "
+#endif
+#ifdef CONFIG_SEEQ8005
+ .ascii "seeq8005 "
+#endif
+#ifdef CONFIG_SK_G16
+ .ascii "sk_g16 "
+#endif
+#ifdef CONFIG_PCNET32
+ .ascii "pcnet32 "
+#endif
+#ifdef CONFIG_AC3200
+ .ascii "ac3200 "
+#endif
+#ifdef CONFIG_APRICOT
+ .ascii "apricot "
+#endif
+#ifdef CONFIG_CS89x0
+ .ascii "cs89x0 "
+#endif
+#ifdef CONFIG_DE4X5
+ .ascii "de4x5 "
+#endif
+#ifdef CONFIG_DEC_ELCP
+ .ascii "dc21x4x "
+#endif
+#ifdef CONFIG_DGRS
+ .ascii "dgrs "
+#endif
+#ifdef CONFIG_EEXPRESS_PRO100
+ .ascii "EExpressPro100 "
+#endif
+#ifdef CONFIG_ES3210
+ .ascii "es3210 "
+#endif
+#ifdef CONFIG_ZNET
+ .ascii "znet "
+#endif
+#ifdef CONFIG_ATP
+ .ascii "atp "
+#endif
+#ifdef CONFIG_DE600
+ .ascii "de600 "
+#endif
+#ifdef CONFIG_DE620
+ .ascii "de620 "
+#endif
+
+/* CDROMs */
+#ifdef CONFIG_AZTCD
+ .ascii "aztcd "
+#endif
+#ifdef CONFIG_GSCD
+ .ascii "gscd "
+#endif
+#ifdef CONFIG_HYCD
+ .ascii "hycd "
+#endif
+#ifdef CONFIG_SBPCD
+ .ascii "sbpcd "
+#endif
+#ifdef CONFIG_BPCD
+ .ascii "bpcd "
+#endif
+#ifdef CONFIG_MCD
+ .ascii "mcd "
+#endif
+#ifdef CONFIG_MCDX
+ .ascii "mcdx "
+#endif
+#ifdef CONFIG_OPTCD
+ .ascii "optcd "
+#endif
+#ifdef CONFIG_CM206
+ .ascii "cm206 "
+#endif
+#ifdef CONFIG_SJCD
+ .ascii "sjcd "
+#endif
+#ifdef CONFIG_CDU31A
+ .ascii "cdu31a "
+#endif
+#ifdef CONFIG_CDU535
+ .ascii "cdu535 "
+#endif
+
+ .ascii " net: "
+#ifdef CONFIG_NETLINK
+ .ascii "netlink "
+#endif
+#ifdef CONFIG_FIREWALL
+ .ascii "firewall "
+#endif
+#ifdef CONFIG_INET
+ .ascii "ipv4 "
+#endif
+#ifdef CONFIG_IP_MASQUERADE
+ .ascii "masq "
+#endif
+#ifdef CONFIG_NET_IPIP
+ .ascii "ipip "
+#endif
+#ifdef CONFIG_IP_MULTICAST
+ .ascii "mcast "
+#endif
+#ifndef CONFIG_IP_NOSR
+ .ascii "sr "
+#endif
+#ifdef CONFIG_SKB_LARGE
+ .ascii "largew "
+#endif
+#ifdef CONFIG_IPV6
+ .ascii "ipv6 "
+#endif
+#ifdef CONFIG_IPX
+ .ascii "ipx "
+#endif
+#ifdef CONFIG_ATALK
+ .ascii "atalk "
+#endif
+#ifdef CONFIG_AX25
+ .ascii "ax.25 "
+#endif
+#ifdef CONFIG_WAN_ROUTER
+ .ascii "wanr "
+#endif
+#ifdef CONFIG_SCSI_7000FASST
+ .ascii "7000fasst "
+#endif
+#ifdef CONFIG_SCSI_AHA152X
+ .ascii "aha152x "
+#endif
+#ifdef CONFIG_SCSI_AHA1542
+ .ascii "aha1542 "
+#endif
+#ifdef CONFIG_SCSI_AHA1740
+ .ascii "aha1740 "
+#endif
+#ifdef CONFIG_SCSI_AIC7XXX
+ .ascii "aic7xxx "
+#endif
+#ifdef CONFIG_SCSI_ADVANSYS
+ .ascii "advansys "
+#endif
+#ifdef CONFIG_SCSI_IN2000
+ .ascii "in2000 "
+#endif
+#ifdef CONFIG_SCSI_AM53C974
+ .ascii "am53c974 "
+#endif
+#ifdef CONFIG_SCSI_BUSLOGIC
+ .ascii "buslogic "
+#endif
+#ifdef CONFIG_SCSI_DT3280
+ .ascii "dt3280 "
+#endif
+#ifdef CONFIG_SCSI_EATA_DMA
+ .ascii "eata-dma "
+#endif
+#ifdef CONFIG_SCSI_FUTURE_DOMAIN
+ .ascii "fdomain "
+#endif
+#ifdef CONFIG_SCSI_GENERIC_NCR5380
+ .ascii "ncr5380 "
+#endif
+#ifdef CONFIG_SCSI_NCR53C406A
+ .ascii "ncr53c406a "
+#endif
+#ifdef CONFIG_SCSI_NCR53C7xx
+ .ascii "ncr53c7xx "
+#endif
+#ifdef CONFIG_SCSI_IBMMCA
+ .ascii "ibmmca "
+#endif
+#ifdef CONFIG_SCSI_PPA
+ .ascii "iomega "
+#endif
+#ifdef CONFIG_SCSI_PAS16
+ .ascii "pas16 "
+#endif
+#ifdef CONFIG_SCSI_QLOGIC_FAS
+ .ascii "qlogic/fas "
+#endif
+#ifdef CONFIG_SCSI_QLOGIC_ISP
+ .ascii "qlogic/isp "
+#endif
+#ifdef CONFIG_SCSI_SEAGATE
+ .ascii "st-02 "
+#endif
+#ifdef CONFIG_SCSI_DC390D
+ .ascii "dc390t "
+#endif
+#ifdef CONFIG_SCSI_T128
+ .ascii "t128 "
+#endif
+#ifdef CONFIG_SCSI_U14_34F
+ .ascii "u14f "
+#endif
+#ifdef CONFIG_SCSI_ULTRASTOR
+ .ascii "ultrastor "
+#endif
+#ifndef CONFIG_COMMENT
+#define CONFIG_COMMENT ""
+#endif
+ db 0x0d,0x0a
+ .ascii "ÇØÙÚÛÜÝÞßÇ "
+ .ascii CONFIG_COMMENT
+ .ascii " patches: "
+#include "patches.S"
+ db 0x0d,0x0a,0
+
+! logo font data
+logofont:
+ db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
+ db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
+ db 0x00,0x00,0x00,0x01,0x01,0x03,0x03,0x03,0x07,0x07,0x07,0x07,0x06,0x02,0x02,0x03
+ db 0x03,0x1f,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x4f,0xef,0xef,0xe1,0x40
+ db 0xc0,0xf8,0xfe,0xff,0xf3,0xf1,0xff,0xff,0xff,0xff,0x03,0x33,0x79,0x79,0x79,0x39
+ db 0x00,0x00,0x00,0x80,0xc0,0xc0,0xe0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf8
+ db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
+ db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
+ db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
+ db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01
+ db 0x03,0x03,0x02,0x03,0x03,0x03,0x03,0x06,0x0e,0x1c,0x3c,0x38,0x78,0xf8,0xf8,0x70
+ db 0x80,0x00,0x00,0x80,0xc1,0xde,0x61,0x7f,0x3e,0x00,0x00,0x00,0x00,0x00,0x00,0x00
+ db 0x0f,0x01,0x09,0x31,0xc3,0x33,0xc1,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
+ db 0xf8,0xf8,0xf8,0xf8,0x9c,0xce,0xfe,0xff,0xff,0x7f,0x7f,0x3f,0x3f,0x3f,0x1f,0x0f
+ db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0x7c
+ db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
+ db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
+ db 0x03,0x03,0x07,0x07,0x0f,0x0f,0x1b,0x1b,0x3b,0x7b,0x7f,0x7d,0x6e,0x03,0x81,0x80
+ db 0xf0,0xe0,0xc0,0xc0,0xc0,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0xc0,0xe0
+ db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
+ db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
+ db 0x07,0x07,0x07,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x01,0x01,0x03,0x0f,0x1b,0x11
+ db 0xfe,0xbf,0xbf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0x1f,0xe7,0xff,0xff,0xff,0xfe
+ db 0x00,0x00,0x00,0x00,0x80,0x80,0x80,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0x80,0x00,0x00
+ db 0x01,0x3f,0x40,0x40,0x40,0x40,0x40,0x60,0x60,0x40,0xc0,0x60,0x1f,0x01,0x00,0x00
+ db 0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x0f,0x01
+ db 0x78,0x7c,0x3e,0x1f,0x0f,0x0f,0x07,0x02,0x01,0x01,0x00,0x00,0x01,0x01,0x87,0xfe
+ db 0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x60,0xb0,0xbf,0xff,0xff,0xf8,0x80,0x00
+ db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x07,0x3f,0xff,0xff,0xff,0x00,0x00,0x00
+ db 0x10,0x10,0x10,0x10,0x10,0x10,0x58,0xd8,0xd0,0xd0,0xf0,0xb0,0xf8,0xf8,0x3c,0x1f
+ db 0xfc,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x07,0x0c,0x78,0xf0
+ db 0x20,0x20,0x20,0x30,0x1c,0x06,0x01,0x01,0x03,0x0c,0x70,0xc0,0x00,0x00,0x00,0x00
+#endif
\ No newline at end of file

-- 
I'm really pavel@atrey.karlin.mff.cuni.cz. 	   Pavel
Look at http://atrey.karlin.mff.cuni.cz/~pavel/ ;-).