Skip to content

Commit

Permalink
Added MiniScript version of 06_Banner.
Browse files Browse the repository at this point in the history
  • Loading branch information
JoeStrout committed Jul 11, 2023
1 parent d9b3d47 commit 5bca164
Show file tree
Hide file tree
Showing 3 changed files with 109 additions and 0 deletions.
16 changes: 16 additions & 0 deletions 00_Alternate_Languages/06_Banner/MiniScript/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
Original source downloaded from [Vintage Basic](http://www.vintage-basic.net/games.html).

Conversion to [MiniScript](https://miniscript.org).

Ways to play:

1. Command-Line MiniScript:
Download for your system from https://miniscript.org/cmdline/, install, and then run the program with a command such as:

miniscript banner.ms

2. Mini Micro:
Download Mini Micro from https://miniscript.org/MiniMicro/, launch, and then click the top disk slot and chose "Mount Folder..." Select the folder containing the BASIC program. Then, at the Mini Micro command prompt, enter:

load "banner"
run
89 changes: 89 additions & 0 deletions 00_Alternate_Languages/06_Banner/MiniScript/banner.ms
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
blockWidth = input("Horizontal? ").val
if blockWidth <= 1 then blockWidth = 3

blockHeight = input("Vertical? ").val
if blockHeight <= 1 then blockHeight = 5

inp = input("Centered? ").upper
centered = inp and inp[0] > "P"

printChar = input("Character (type 'all' if you want character being printed)? ")

statement = input("Statement: ").upper

//input("Set page") // <-- opportunity to set your pin-feed printer before proceeding!

// Define the character data. For each character, we have 7 numbers
// which are the 9-bit binary representation of each row, plus one.
data = {}
data[" "] = [0,0,0,0,0,0,0]
data["!"] = [1,1,1,384,1,1,1]
data["?"] = [5,3,2,354,18,11,5]
data["."] = [1,1,129,449,129,1,1]
data["*"] = [69,41,17,512,17,41,69]
data["="] = [41,41,41,41,41,41,41]
data["0"] = [57,69,131,258,131,69,57]
data["1"] = [0,0,261,259,512,257,257]
data["2"] = [261,387,322,290,274,267,261]
data["3"] = [66,130,258,274,266,150,100]
data["4"] = [33,49,41,37,35,512,33]
data["5"] = [160,274,274,274,274,274,226]
data["6"] = [194,291,293,297,305,289,193]
data["7"] = [258,130,66,34,18,10,8]
data["8"] = [69,171,274,274,274,171,69]
data["9"] = [263,138,74,42,26,10,7]
data["A"] = [505,37,35,34,35,37,505]
data["B"] = [512,274,274,274,274,274,239]
data["C"] = [125,131,258,258,258,131,69]
data["D"] = [512,258,258,258,258,131,125]
data["E"] = [512,274,274,274,274,258,258]
data["F"] = [512,18,18,18,18,2,2]
data["G"] = [125,131,258,258,290,163,101]
data["H"] = [512,17,17,17,17,17,512]
data["I"] = [258,258,258,512,258,258,258]
data["J"] = [65,129,257,257,257,129,128]
data["K"] = [512,17,17,41,69,131,258]
data["L"] = [512,257,257,257,257,257,257]
data["M"] = [512,7,13,25,13,7,512]
data["N"] = [512,7,9,17,33,193,512]
data["O"] = [125,131,258,258,258,131,125]
data["P"] = [512,18,18,18,18,18,15]
data["Q"] = [125,131,258,258,322,131,381]
data["R"] = [512,18,18,50,82,146,271]
data["S"] = [69,139,274,274,274,163,69]
data["T"] = [2,2,2,512,2,2,2]
data["U"] = [128,129,257,257,257,129,128]
data["V"] = [64,65,129,257,129,65,64]
data["W"] = [256,257,129,65,129,257,256]
data["X"] = [388,69,41,17,41,69,388]
data["Y"] = [8,9,17,481,17,9,8]
data["Z"] = [386,322,290,274,266,262,260]

for c in statement
if not data.hasIndex(c) then continue

// Print character c in giant sideways banner-style!
for datum in data[c]
if datum then datum -= 1 // remove spurious +1
if printChar.upper != "ALL" then c = printChar

for lineRepeat in range(blockWidth-1)
if centered then print " " * (34 - 4.5*blockHeight), ""

for bitPos in range(9,0)
if bitAnd(datum, 2^bitPos) then charToPrint=c else charToPrint=" "
print charToPrint * blockHeight, ""
end for // next bitPos

print
wait 0.01 // put in a small pause so it's not too fast to see!
end for // next lineRepeat (repeating line according to entered Y value)
end for // next datum (row of this character)
// Add a little space after each character
for i in range(1, 2 * blockWidth)
print
wait 0.01
end for
end for // next character in the message
4 changes: 4 additions & 0 deletions 06_Banner/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,5 +15,9 @@ http://www.vintage-basic.net/games.html

#### Porting Notes

- The "SET PAGE" input, stored in `O$`, has no effect. It was probably meant as an opportunity for the user to set their pin-feed printer to the top of the page before proceeding.

- The data values for each character are the bit representation of each horizontal row of the printout (vertical column of a character), plus one. Perhaps because of this +1, the original code (and some of the ports here) are much more complicated than they need to be.

(please note any difficulties or challenges in porting here)

0 comments on commit 5bca164

Please sign in to comment.