#!/usr/bin/perl
#
#Originally written in C 1992 - dcronin
#Converted to PERL 2001.Nov.03 converted to PERL - dcronin
#Revised to include Hortizonal, Vertical, and Size 2009.Jan.17 - dcronin
#
# Font table extract from BIOS
# From dos debug-command...
# c>debug
# -a 100
# xxxx:0100 MOV AX,1130
# xxxx:0103 MOV BH,2
# xxxx:0105 INT 10
# xxxx:0107 NOP
# xxxx:0108 INT 20
# xxxx:010A
# -G=100 107
#
# AX=1130  BX=0200  CX=0008  DX=0031  SP=FFEE  BP=D7D2  SI=0000  DI=0000
# DS=0B55  ES=C000  SS=0B55  CS=0B55  IP=0107   NV UP EI PL NZ NA PO NC
# 0B55:0107 90            NOP
#
# ES:BP is beginning of ROM BIOS font table.  However, I begin from chr(1) rather than chr(0).
#
# -D C000:D7D2
# C000:D7D0        00 00 00 00 00 00-00 00 00 00 00 00 00 00     ..............
# C000:D7E0  00 00 00 00 7E 81 A5 81-81 A5 99 81 81 7E 00 00   ....~........~..
# C000:D7F0  00 00 00 00 7E FF DB FF-FF DB E7 FF FF 7E 00 00   ....~........~..


@matrix=(0x7E,0x81,0xA5,0x81,0xBD,0x99,0x81,0x7E, 0x7E,0xFF,0xDB,0xFF,0xC3,0xE7,0xFF,0x7E, 0x6C,0xFE,0xFE,0xFE,0x7C,0x38,0x10,0x00,
         0x10,0x38,0x7C,0xFE,0x7C,0x38,0x10,0x00, 0x38,0x7C,0x38,0xFE,0xFE,0x7C,0x38,0x7C, 0x10,0x10,0x38,0x7C,0xFE,0x7C,0x38,0x7C,
         0x00,0x00,0x18,0x3C,0x3C,0x18,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x3C,0x66,0x42,0x42,0x66,0x3C,0x00,
         0xFF,0xC3,0x99,0xBD,0xBD,0x99,0xC3,0xFF, 0x0F,0x07,0x0F,0x7D,0xCC,0xCC,0xCC,0x78, 0x3C,0x66,0x66,0x66,0x3C,0x18,0x7E,0x18,
         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x7F,0x63,0x7F,0x63,0x63,0x67,0xE6,0xC0, 0x99,0x5A,0x3C,0xE7,0xE7,0x3C,0x5A,0x99,
         0x80,0xE0,0xF8,0xFE,0xF8,0xE0,0x80,0x00, 0x02,0x0E,0x3E,0xFE,0x3E,0x0E,0x02,0x00, 0x18,0x3C,0x7E,0x18,0x18,0x7E,0x3C,0x18,
         0x66,0x66,0x66,0x66,0x66,0x00,0x66,0x00, 0x7F,0xDB,0xDB,0x7B,0x1B,0x1B,0x1B,0x00, 0x3E,0x63,0x38,0x6C,0x6C,0x38,0xCC,0x78,
         0x00,0x00,0x00,0x00,0x7E,0x7E,0x7E,0x00, 0x18,0x3C,0x7E,0x18,0x7E,0x3C,0x18,0xFF, 0x18,0x3C,0x7E,0x18,0x18,0x18,0x18,0x00,
         0x18,0x18,0x18,0x18,0x7E,0x3C,0x18,0x00, 0x00,0x18,0x0C,0xFE,0x0C,0x18,0x00,0x00, 0x00,0x30,0x60,0xFE,0x60,0x30,0x00,0x00,
         0x00,0x00,0xC0,0xC0,0xC0,0xFE,0x00,0x00, 0x00,0x24,0x66,0xFF,0x66,0x24,0x00,0x00, 0x00,0x18,0x3C,0x7E,0xFF,0xFF,0x00,0x00,
         0x00,0xFF,0xFF,0x7E,0x3C,0x18,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x30,0x78,0x78,0x30,0x30,0x00,0x30,0x00,
         0x6C,0x6C,0x6C,0x00,0x00,0x00,0x00,0x00, 0x6C,0x6C,0xFE,0x6C,0xFE,0x6C,0x6C,0x00, 0x30,0x7C,0xC0,0x78,0x0C,0xF8,0x30,0x00,
         0x00,0xC6,0xCC,0x18,0x30,0x66,0xC6,0x00, 0x38,0x6C,0x38,0x76,0xDC,0xCC,0x76,0x00, 0x60,0x60,0xC0,0x00,0x00,0x00,0x00,0x00,
         0x18,0x30,0x60,0x60,0x60,0x30,0x18,0x00, 0x60,0x30,0x18,0x18,0x18,0x30,0x60,0x00, 0x00,0x66,0x3C,0xFF,0x3C,0x66,0x00,0x00,
         0x00,0x30,0x30,0xFC,0x30,0x30,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x60, 0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x00,
         0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00, 0x06,0x0C,0x18,0x30,0x60,0xC0,0x80,0x00, 0x7C,0xC6,0xCE,0xDE,0xF6,0xE6,0x7C,0x00,
         0x30,0x70,0x30,0x30,0x30,0x30,0xFC,0x00, 0x78,0xCC,0x0C,0x38,0x60,0xCC,0xFC,0x00, 0x78,0xCC,0x0C,0x38,0x0C,0xCC,0x78,0x00,
         0x1C,0x3C,0x6C,0xCC,0xFE,0x0C,0x1E,0x00, 0xFC,0xC0,0xF8,0x0C,0x0C,0xCC,0x78,0x00, 0x38,0x60,0xC0,0xF8,0xCC,0xCC,0x78,0x00,
         0xFC,0xCC,0x0C,0x18,0x30,0x30,0x30,0x00, 0x78,0xCC,0xCC,0x78,0xCC,0xCC,0x78,0x00, 0x78,0xCC,0xCC,0x7C,0x0C,0x18,0x70,0x00,
         0x00,0x30,0x30,0x00,0x00,0x30,0x30,0x00, 0x00,0x30,0x30,0x00,0x00,0x30,0x30,0x60, 0x18,0x30,0x60,0xC0,0x60,0x30,0x18,0x00,
         0x00,0x00,0xFC,0x00,0x00,0xFC,0x00,0x00, 0x60,0x30,0x18,0x0C,0x18,0x30,0x60,0x00, 0x78,0xCC,0x0C,0x18,0x30,0x00,0x30,0x00,
         0x7C,0xC6,0xDE,0xDE,0xDE,0xC0,0x78,0x00, 0x30,0x78,0xCC,0xCC,0xFC,0xCC,0xCC,0x00, 0xFC,0x66,0x66,0x7C,0x66,0x66,0xFC,0x00,
         0x3C,0x66,0xC0,0xC0,0xC0,0x66,0x3C,0x00, 0xF8,0x6C,0x66,0x66,0x66,0x6C,0xF8,0x00, 0xFE,0x62,0x68,0x78,0x68,0x62,0xFE,0x00,
         0xFE,0x62,0x68,0x78,0x68,0x60,0xF0,0x00, 0x3C,0x66,0xC0,0xC0,0xCE,0x66,0x3E,0x00, 0xCC,0xCC,0xCC,0xFC,0xCC,0xCC,0xCC,0x00,
         0x78,0x30,0x30,0x30,0x30,0x30,0x78,0x00, 0x1E,0x0C,0x0C,0x0C,0xCC,0xCC,0x78,0x00, 0xE6,0x66,0x6C,0x78,0x6C,0x66,0xE6,0x00,
         0xF0,0x60,0x60,0x60,0x62,0x66,0xFE,0x00, 0xC6,0xEE,0xFE,0xFE,0xD6,0xC6,0xC6,0x00, 0xC6,0xE6,0xF6,0xDE,0xCE,0xC6,0xC6,0x00,
         0x38,0x6C,0xC6,0xC6,0xC6,0x6C,0x38,0x00, 0xFC,0x66,0x66,0x7C,0x60,0x60,0xF0,0x00, 0x78,0xCC,0xCC,0xCC,0xDC,0x78,0x1C,0x00,
         0xFC,0x66,0x66,0x7C,0x6C,0x66,0xE6,0x00, 0x78,0xCC,0xE0,0x70,0x1C,0xCC,0x78,0x00, 0xFC,0xB4,0x30,0x30,0x30,0x30,0x78,0x00,
         0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0xFC,0x00, 0xCC,0xCC,0xCC,0xCC,0xCC,0x78,0x30,0x00, 0xC6,0xC6,0xC6,0xD6,0xFE,0xEE,0xC6,0x00,
         0xC6,0xC6,0x6C,0x38,0x38,0x6C,0xC6,0x00, 0xCC,0xCC,0xCC,0x78,0x30,0x30,0x78,0x00, 0xFE,0xC6,0x8C,0x18,0x32,0x66,0xFE,0x00,
         0x78,0x60,0x60,0x60,0x60,0x60,0x78,0x00, 0xC0,0x60,0x30,0x18,0x0C,0x06,0x02,0x00, 0x78,0x18,0x18,0x18,0x18,0x18,0x78,0x00,
         0x10,0x38,0x6C,0xC6,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF, 0x30,0x30,0x18,0x00,0x00,0x00,0x00,0x00,
         0x00,0x00,0x78,0x0C,0x7C,0xCC,0x76,0x00, 0xE0,0x60,0x60,0x7C,0x66,0x66,0xDC,0x00, 0x00,0x00,0x78,0xCC,0xC0,0xCC,0x78,0x00,
         0x1C,0x0C,0x0C,0x7C,0xCC,0xCC,0x76,0x00, 0x00,0x00,0x78,0xCC,0xFC,0xC0,0x78,0x00, 0x38,0x6C,0x60,0xF0,0x60,0x60,0xF0,0x00,
         0x00,0x00,0x76,0xCC,0xCC,0x7C,0x0C,0xF8, 0xE0,0x60,0x6C,0x76,0x66,0x66,0xE6,0x00, 0x30,0x00,0x70,0x30,0x30,0x30,0x78,0x00,
         0x0C,0x00,0x0C,0x0C,0x0C,0xCC,0xCC,0x78, 0xE0,0x60,0x66,0x6C,0x78,0x6C,0xE6,0x00, 0x70,0x30,0x30,0x30,0x30,0x30,0x78,0x00,
         0x00,0x00,0xCC,0xFE,0xFE,0xD6,0xC6,0x00, 0x00,0x00,0xF8,0xCC,0xCC,0xCC,0xCC,0x00, 0x00,0x00,0x78,0xCC,0xCC,0xCC,0x78,0x00,
         0x00,0x00,0xDC,0x66,0x66,0x7C,0x60,0xF0, 0x00,0x00,0x76,0xCC,0xCC,0x7C,0x0C,0x1E, 0x00,0x00,0xDC,0x76,0x66,0x60,0xF0,0x00,
         0x00,0x00,0x7C,0xC0,0x78,0x0C,0xF8,0x00, 0x10,0x30,0x7C,0x30,0x30,0x34,0x18,0x00, 0x00,0x00,0xCC,0xCC,0xCC,0xCC,0x76,0x00,
         0x00,0x00,0xCC,0xCC,0xCC,0x78,0x30,0x00, 0x00,0x00,0xC6,0xD6,0xFE,0xFE,0x6C,0x00, 0x00,0x00,0xC6,0x6C,0x38,0x6C,0xC6,0x00,
         0x00,0x00,0xCC,0xCC,0xCC,0x7C,0x0C,0xF8, 0x00,0x00,0xFC,0x98,0x30,0x64,0xFC,0x00, 0x1C,0x30,0x30,0xE0,0x30,0x30,0x1C,0x00,
         0x18,0x18,0x18,0x00,0x18,0x18,0x18,0x00, 0xE0,0x30,0x30,0x1C,0x30,0x30,0xE0,0x00, 0x76,0xDC,0x00,0x00,0x00,0x00,0x00,0x00,
         0x00,0x10,0x38,0x6C,0xC6,0xC6,0xFE,0x00, 0x3C,0x66,0x60,0x66,0x3C,0x18,0x0C,0x38, 0x00,0x66,0x00,0x66,0x66,0x66,0x3F,0x00,
         0x0E,0x00,0x3C,0x66,0x7E,0x60,0x3C,0x00, 0x7E,0xC3,0x3C,0x06,0x3E,0x66,0x3F,0x00, 0x66,0x00,0x3C,0x06,0x3E,0x66,0x3F,0x00,
         0x70,0x00,0x3C,0x06,0x3E,0x66,0x3F,0x00, 0x18,0x18,0x3C,0x06,0x3E,0x66,0x3F,0x00, 0x00,0x00,0x3C,0x60,0x60,0x3C,0x18,0x38,
         0x7E,0xC3,0x3C,0x66,0x7E,0x60,0x3C,0x00, 0x66,0x00,0x3C,0x66,0x7E,0x60,0x3C,0x00, 0x70,0x00,0x3C,0x66,0x7E,0x60,0x3C,0x00,
         0x66,0x00,0x38,0x18,0x18,0x18,0x3C,0x00, 0x3E,0x63,0x1C,0x0C,0x0C,0x0C,0x1E,0x00, 0x70,0x00,0x38,0x18,0x18,0x18,0x3C,0x00,
         0x63,0x1C,0x36,0x63,0x7F,0x63,0x63,0x00, 0x18,0x18,0x00,0x3C,0x66,0x7E,0x66,0x00, 0x0E,0x00,0x7E,0x30,0x3C,0x30,0x7E,0x00,
         0x00,0x00,0x7F,0x0C,0x7F,0xCC,0x7F,0x00, 0x3F,0x6C,0xCC,0xFF,0xCC,0xCC,0xCF,0x00, 0x3C,0x66,0x00,0x3C,0x66,0x66,0x3C,0x00,
         0x00,0x66,0x00,0x3C,0x66,0x66,0x3C,0x00, 0x00,0x70,0x00,0x3C,0x66,0x66,0x3C,0x00, 0x3C,0x66,0x00,0x66,0x66,0x66,0x3F,0x00,
         0x00,0x70,0x00,0x66,0x66,0x66,0x3F,0x00, 0x00,0x66,0x00,0x66,0x66,0x3E,0x06,0x7C, 0xC3,0x18,0x3C,0x66,0x66,0x3C,0x18,0x00,
         0x66,0x00,0x66,0x66,0x66,0x66,0x3C,0x00, 0x0C,0x0C,0x3F,0x60,0x60,0x3F,0x0C,0x0C, 0x1C,0x36,0x32,0x78,0x30,0x73,0x7E,0x00,
         0x66,0x66,0x3C,0x7E,0x18,0x7E,0x18,0x18, 0xF8,0xCC,0xCC,0xFA,0xC6,0xCF,0xC6,0xC7, 0x0E,0x1B,0x18,0x3C,0x18,0x18,0x18,0x70,
         0x0E,0x00,0x3C,0x06,0x3E,0x66,0x3F,0x00, 0x1C,0x00,0x38,0x18,0x18,0x18,0x3C,0x00, 0x00,0x0E,0x00,0x3C,0x66,0x66,0x3C,0x00,
         0x00,0x0E,0x00,0x66,0x66,0x66,0x3F,0x00, 0x3B,0x6E,0x00,0x3E,0x33,0x33,0x33,0x00, 0x3B,0x6E,0x33,0x3B,0x3F,0x37,0x33,0x00,
         0x3C,0x6C,0x6C,0x3E,0x00,0x7E,0x00,0x00, 0x38,0x6C,0x6C,0x38,0x00,0x7C,0x00,0x00, 0x18,0x00,0x18,0x30,0x60,0x66,0x3C,0x00,
         0x00,0x00,0x00,0x7E,0x60,0x60,0x00,0x00, 0x00,0x00,0x00,0x7E,0x06,0x06,0x00,0x00, 0xC3,0xC6,0xCC,0xDE,0x33,0x66,0xCC,0x0F,
         0xC3,0xC6,0xCC,0xDB,0x37,0x6F,0xCF,0x03, 0x18,0x00,0x18,0x18,0x3C,0x3C,0x18,0x00, 0x00,0x33,0x66,0xCC,0x66,0x33,0x00,0x00,
         0x00,0xCC,0x66,0x33,0x66,0xCC,0x00,0x00, 0x88,0x22,0x88,0x22,0x88,0x22,0x88,0x22, 0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,
         0xBB,0xEE,0xBB,0xEE,0xBB,0xEE,0xBB,0xEE, 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, 0x18,0x18,0x18,0x18,0xF8,0x18,0x18,0x18,
         0x18,0x18,0xF8,0x18,0xF8,0x18,0x18,0x18, 0x36,0x36,0x36,0x36,0xF6,0x36,0x36,0x36, 0x00,0x00,0x00,0x00,0xFE,0x36,0x36,0x36,
         0x00,0x00,0xF8,0x18,0xF8,0x18,0x18,0x18, 0x36,0x36,0xF6,0x06,0xF6,0x36,0x36,0x36, 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
         0x00,0x00,0xFE,0x06,0xF6,0x36,0x36,0x36, 0x36,0x36,0xF6,0x06,0xFE,0x00,0x00,0x00, 0x36,0x36,0x36,0x36,0xFE,0x00,0x00,0x00,
         0x18,0x18,0xF8,0x18,0xF8,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xF8,0x18,0x18,0x18, 0x18,0x18,0x18,0x18,0x1F,0x00,0x00,0x00,
         0x18,0x18,0x18,0x18,0xFF,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xFF,0x18,0x18,0x18, 0x18,0x18,0x18,0x18,0x1F,0x18,0x18,0x18,
         0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, 0x18,0x18,0x18,0x18,0xFF,0x18,0x18,0x18, 0x18,0x18,0x1F,0x18,0x1F,0x18,0x18,0x18,
         0x36,0x36,0x36,0x36,0x37,0x36,0x36,0x36, 0x36,0x36,0x37,0x30,0x3F,0x00,0x00,0x00, 0x00,0x00,0x3F,0x30,0x37,0x36,0x36,0x36,
         0x36,0x36,0xF7,0x00,0xFF,0x00,0x00,0x00, 0x00,0x00,0xFF,0x00,0xF7,0x36,0x36,0x36, 0x36,0x36,0x37,0x30,0x37,0x36,0x36,0x36,
         0x00,0x00,0xFF,0x00,0xFF,0x00,0x00,0x00, 0x36,0x36,0xF7,0x00,0xF7,0x36,0x36,0x36, 0x18,0x18,0xFF,0x00,0xFF,0x00,0x00,0x00,
         0x36,0x36,0x36,0x36,0xFF,0x00,0x00,0x00, 0x00,0x00,0xFF,0x00,0xFF,0x18,0x18,0x18, 0x00,0x00,0x00,0x00,0xFF,0x36,0x36,0x36,
         0x36,0x36,0x36,0x36,0x3F,0x00,0x00,0x00, 0x18,0x18,0x1F,0x18,0x1F,0x00,0x00,0x00, 0x00,0x00,0x1F,0x18,0x1F,0x18,0x18,0x18,
         0x00,0x00,0x00,0x00,0x3F,0x36,0x36,0x36, 0x36,0x36,0x36,0x36,0xFF,0x36,0x36,0x36, 0x18,0x18,0xFF,0x18,0xFF,0x18,0x18,0x18,
         0x18,0x18,0x18,0x18,0xF8,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x1F,0x18,0x18,0x18, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
         0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF, 0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0, 0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,
         0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00, 0x00,0x00,0x3B,0x6E,0x6C,0x6E,0x3B,0x00, 0x3C,0x66,0x66,0x6C,0x66,0x66,0x7C,0x60,
         0x00,0x7E,0x66,0x60,0x60,0x60,0x60,0x00, 0x00,0x00,0x7F,0x36,0x36,0x36,0x36,0x00, 0x7F,0x31,0x18,0x0C,0x18,0x31,0x7F,0x00,
         0x00,0x00,0x3F,0x66,0x66,0x66,0x3C,0x00, 0x00,0x00,0x33,0x33,0x33,0x33,0x3E,0x60, 0x00,0x3B,0x6E,0x0C,0x18,0x18,0x18,0x00,
         0x7E,0x18,0x3C,0x66,0x66,0x3C,0x18,0x7E, 0x1C,0x36,0x63,0x7F,0x63,0x36,0x1C,0x00, 0x1C,0x36,0x63,0x63,0x36,0x36,0x77,0x00,
         0x1C,0x30,0x18,0x3C,0x66,0x66,0x3C,0x00, 0x00,0x00,0x7E,0xDB,0xDB,0x7E,0x00,0x00, 0x06,0x0C,0x7E,0xDB,0xDB,0x7E,0x60,0xC0,
         0x1C,0x30,0x60,0x7C,0x60,0x30,0x1C,0x00, 0x1C,0x36,0x63,0x63,0x63,0x63,0x63,0x00, 0x00,0x7E,0x00,0x7E,0x00,0x7E,0x00,0x00,
         0x18,0x18,0x7E,0x18,0x18,0x00,0x7E,0x00, 0x30,0x18,0x0C,0x18,0x30,0x00,0x7E,0x00, 0x0C,0x18,0x30,0x18,0x0C,0x00,0x7E,0x00,
         0x00,0x0E,0x1B,0x1B,0x18,0x18,0x18,0x18, 0x18,0x18,0x18,0x18,0xD8,0xD8,0x70,0x00, 0x18,0x18,0x00,0x7E,0x00,0x18,0x18,0x00,
         0x00,0x70,0xDB,0x0E,0x70,0xDB,0x0E,0x00, 0x3C,0x66,0x66,0x3C,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,
         0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00, 0x0F,0x0C,0x0C,0x0C,0xCC,0x6C,0x3C,0x1C, 0x78,0x6C,0x6C,0x6C,0x6C,0x00,0x00,0x00,
         0x38,0x6C,0x18,0x30,0x7C,0x00,0x00,0x00, 0x00,0x00,0x3C,0x3C,0x3C,0x3C,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00);

if ( $#ARGV < 1 ) { 
 print "\nbanner 2009.01.17\n";
 print "Syntax: banner FILL SIZE H/V Text goes here\n\n";
 print " where...\n\n";
 print "\tFILL is a 3-digit ASCII code for the banner draw.\n";
 print "\t\t(000 to 255 for valid ascii codes, > 255 character itself.\n";
 print "\tSIZE magnification factor\n";
 print "\tH/V  print banner (H)ortizonal or (V)ertical\n\n";
 print " example:\tbanner 065 1 H Test\n\tor\tbanner 999 1 H Test\n";
 print "\nFor text with spaces enclose with double-quotes.\n";
 exit(0);
}

$cENV=$ARGV[0];
$size=$ARGV[1];
$HVSV=$ARGV[2];
if ($HVSV =~ /[Hh]/) {
 for ($nPARM=3; $nPARM <= $#ARGV; $nPARM++) {
  $cBANNER = $ARGV[$nPARM];
  for ($nROW=0;$nROW<=7;$nROW++) {
   for ($nBIG=1;$nBIG<=$size;$nBIG++) {
    for ($nPOS=0;$nPOS<length($cBANNER);$nPOS++) {
     $nPTR = ord(substr($cBANNER,$nPOS,1));
     $nBIT = 128;
     for ($nBITR=7;$nBITR>=0;$nBITR--) {
      if ($cENV >= 0 && $cENV <= 255) {$nVAR=chr($ARGV[0]); } else {$nVAR=chr($nPTR); }
      if ($matrix[($nPTR-1) * 8 + $nROW] & $nBIT) {print "$nVAR" x $size; } else { print " " x $size; }
      $nBIT = $nBIT >> 1;
     }
    }
   print "\n";
   }
  }
 }
} elsif ($HVSV =~ /[Vv]/) {
 undef @aTEXT;
 $nMaxLen=0;
 for ($nPARM=3; $nPARM <= $#ARGV; $nPARM++) {
  $hold=$ARGV[$nPARM]; push (@aTEXT,$hold);
  $nMaxLen=length($hold) if length($hold) > $nMaxLen;
 }
 for ($nHelm=0;$nHelm<=$#aTEXT;$nHelm++){
  $aTEXT[$nHelm] = $aTEXT[$nHelm] . " " x ($nMaxLen - length($aTEXT[$nHelm]));
 }
 for ($nLine=0;$nLine<$nMaxLen;$nLine++){
  $cBANNER="";
  for ($hold=$#aTEXT;$hold>=0;$hold--){
   $cBANNER = $cBANNER . substr($aTEXT[$hold],$nLine,1);
  }
  undef @aa;
  for ($nPOS=0;$nPOS<length($cBANNER);$nPOS++) {
   $nPTR = ord(substr($cBANNER,$nPOS,1));
   for($BITROW=7;$BITROW>=0;$BITROW--) {
    $nBIT=2**$BITROW;
    for($nBFF=0;$nBFF<8;$nBFF++){
     for ($nBIG=0;$nBIG<$size;$nBIG++){
      $hold=($nPTR-1)*8+7-$nBFF;
      $byte = $matrix[$hold];
      if ($cENV >= 0 && $cENV <= 255) {$nVAR=chr($ARGV[0]); } else {$nVAR=chr($nPTR); }
      if ($byte & $nBIT) {
       $aa[$BITROW][$nPOS] = $aa[$BITROW][$nPOS] . "$nVAR" x $size;
      } else {
       $aa[$BITROW][$nPOS] = $aa[$BITROW][$nPOS] . " " x $size;
      }
     }
    }
   }
  }
  for($BITROW=7;$BITROW>=0;$BITROW--) {
   for ($nBIG=0;$nBIG<$size;$nBIG++){
    for ($nPOS=0;$nPOS<length($cBANNER);$nPOS++) {
     print $aa[$BITROW][$nPOS];
    }
    print "\n";
   }
  }
 }
} else { print "Expected H or V\n"; }
exit 0;
