Welcome, Guest
You have to register before you can post on our site.

Username/Email:
  

Password
  





Search Forums

(Advanced Search)

Forum Statistics
» Members: 492
» Latest member: Feederumn
» Forum threads: 2,829
» Forum posts: 26,529

Full Statistics

Latest Threads
which day of the week
Forum: Programs
Last Post: Stuart
2 minutes ago
» Replies: 26
» Views: 593
Playing sound files in QB...
Forum: Programs
Last Post: ahenry3068
3 hours ago
» Replies: 9
» Views: 1,152
Aloha from Maui guys.
Forum: General Discussion
Last Post: mrbcx
6 hours ago
» Replies: 6
» Views: 98
another variation of "10 ...
Forum: Programs
Last Post: Jack002
8 hours ago
» Replies: 1
» Views: 83
Rock Jockey 2.0 is ready ...
Forum: Games
Last Post: NakedApe
11 hours ago
» Replies: 20
» Views: 574
Button rack or hotkey fun...
Forum: Utilities
Last Post: Jack002
Yesterday, 08:20 PM
» Replies: 6
» Views: 389
ANSIPrint
Forum: a740g
Last Post: bplus
Yesterday, 05:36 PM
» Replies: 11
» Views: 203
Audio Spectrum Analyser
Forum: Programs
Last Post: Jack002
Yesterday, 01:56 AM
» Replies: 7
» Views: 160
_mem
Forum: Help Me!
Last Post: hsiangch_ong
Yesterday, 01:50 AM
» Replies: 13
» Views: 302
pan around a large image ...
Forum: Programs
Last Post: hsiangch_ong
Yesterday, 01:32 AM
» Replies: 0
» Views: 27

 
  Lesson 22: Hardware Acceleration finished
Posted by: TerryRitchie - 09-20-2023, 06:24 PM - Forum: Announcements - Replies (25)

Lesson22: Hardware Acceleration has been added to the tutorial.

You'll need to update your tutorial folder to get the new programs and assets included with lesson 22.

I've attached the updated tutorial.zip asset file below. Simply move the tutorial folder found in the ZIP file to your QB64 folder. If you already have the tutorial folder allow the files to be overwritten.



Attached Files
.zip   tutorial.zip (Size: 34.91 MB / Downloads: 58)
Print this item

  QBJS Console
Posted by: dbox - 09-20-2023, 05:44 PM - Forum: QBJS, BAM, and Other BASICs - Replies (4)

One feature that was added in the last release (that I haven't done a very good job of publicizing yet) that can help with troubleshooting is the Console library.  This lets you write logging messages to the QBJS console window based on a log level.  You can click the message in the log and it will take you to the corresponding line of code.  

If you just want to print text to the console window and you don't really care about line numbers, you can use the Console.Echo method.

Print this item

  QB64 V3.9.0 Pondering what might be there?
Posted by: doppler - 09-20-2023, 11:53 AM - Forum: Announcements - Replies (27)

It's been 3 months since the excellent V3.8 was released.  All the nice things that were included.  Pondering what might be next in V3.9 ?

So what might be planned, and not being pushy "Is there a window of opportunity for V3.9" ? Big Grin

Print this item

  No Sounds in QB64 Programs
Posted by: NakedApe - 09-20-2023, 01:12 AM - Forum: Help Me! - Replies (26)

Jeez, I go away for a few days and poof, what happened? I tried running a program that worked fine last week and got compilation errors, so I rebooted. Then I tried running a game I've been working on and none of the sounds worked. I tried others, nothin. I tried just a BEEP program, nothin. All sounds outside of QB64 work as usual. 

So I tried installing the latest version of QB64pe and still no sounds! What gives? 

--Frustrated Naked Ape

P.S. I'm on a Mac.

Print this item

  QBJS Starscape
Posted by: vince - 09-19-2023, 12:55 AM - Forum: QBJS, BAM, and Other BASICs - Replies (5)

Print this item

  Why is it so? (again)
Posted by: PhilOfPerth - 09-18-2023, 11:57 PM - Forum: Help Me! - Replies (2)

Sorry to be a pain (again), but
I'm trying to come to grips with "Fonty" stuff, and am a bit (a lot) puzzled by the results of this code:

Code: (Select All)
Screen _NewImage(1024, 820, 32) '                                                                  Screen Width is 1024 pixels
SetFont: f& = _LoadFont("C:\WINDOWS\fonts\courbd.ttf", 24, "monospace")
_Font f&
'                                                                                                  width of "X" on current screen
CpL = _DesktopWidth \ _PrintWidth("X") '                                                           chars per line on current screen
Print "Width of X is"; _PrintWidth("X"); ", and Chars per Line is"; CpL
Locate 10, 10

Print String$(CpL, "X");
Sleep
I would expect it to print a single, full line of X's. But it doesn't. I think it's to do with the font I've selected,
but I thought _PrintWidth considered that. Does it?

Print this item

  Why does this crash?
Posted by: TerryRitchie - 09-18-2023, 09:43 PM - Forum: Help Me! - Replies (21)

Can anyone explain why the code below crashes?

Sometimes the Y value gets as high as a few hundred, other times just barely past 10.

I would have chalked this up as running out of memory but the random crash points has me confused. The picture I'm using is attached below.

Code: (Select All)
OPTION _EXPLICIT

TYPE TYPE_PIXEL
    hard AS LONG ' hardware image
    soft AS LONG ' software image
    ox AS INTEGER
    oy AS INTEGER
    x AS INTEGER
    y AS INTEGER
    xdir AS SINGLE
    ydir AS SINGLE

END TYPE

DIM Pixel(1280, 720) AS TYPE_PIXEL
DIM Picture AS LONG
DIM x AS INTEGER
DIM y AS INTEGER

SCREEN _NEWIMAGE(1280, 720, 32)
Picture = _LOADIMAGE("picture.png", 32)

_SOURCE Picture
FOR y = 0 TO 719
    FOR x = 0 TO 1279
        Pixel(x, y).soft = _NEWIMAGE(1, 1, 32)
        _DEST Pixel(x, y).soft
        PSET (0, 0), POINT(x, y)
        Pixel(x, y).hard = _COPYIMAGE(Pixel(x, y).soft, 33)
        Pixel(x, y).ox = x
        Pixel(x, y).oy = y

        _DEST 0 '                                        temporarily print values to figure
        PRINT x, y, Pixel(x, y).soft, Pixel(x, y).hard '  out why this crashes

    NEXT x
NEXT y



Attached Files Thumbnail(s)
   
Print this item

  Hocus Pocus Hardware Version
Posted by: TerryRitchie - 09-18-2023, 04:32 PM - Forum: Programs - Replies (3)

I modified my Hocus Pocus particle fountain to use a hardware surface and hardware images only. I also made a few optimizations to the code to make it faster. I originally wrote this back in 2014 and have learned a few tricks since then. I'll be including this in Lesson 22 of the tutorial as an example program.

The background music file is included below in a ZIP file. You really need the music to make the program pop.

Simply move the mouse around and watch the magic happen. ESC to exit.

Ugh - never fails - had a bug - it's fixed in the code below.

Code: (Select All)
'*
'* Hocus Pocus V2.3 by Terry Ritchie 09/17/23
'* Original 01/24/14
'* Updated  08/18/22 to reflect the new tutorial
'* Updated  09/17/23 to use hardware images for Lesson 22
'* Open source code - freely share and modify
'*
'* Use the mouse to create magic. Press ESC to leave this magical place.
'*

OPTION _EXPLICIT '         declare those variables son!

'--------------------------------
'- Variable Declaration Section -
'--------------------------------

CONST FALSE = 0 '          truth detector
CONST TRUE = NOT FALSE '   truth detector
CONST SWIDTH = 640 '       screen width
CONST SHEIGHT = 480 '      screen height
CONST BLOOMAMOUNT = 5 '    number of blooms per mouse movement (don't go too high!)
CONST MAXSIZE = 64 '       maximum size of blooms (don't go too high!)
CONST MAXLIFE = 32 '       maximum life time on screen
CONST MAXXSPEED = 6 '      maximum horizontal speed at bloom creation
CONST MAXYSPEED = 10 '     maximum vertical speed at bloom creation
CONST BOUNCE = FALSE '     set to TRUE to have blooms bounce off bottom of screen
CONST FLUFFY = FALSE '     set to TRUE to have blooms fluffier in appearance

TYPE CADABRA '             image properties
    lifespan AS INTEGER '  life span of bloom on screen
    x AS SINGLE '          x location of bloom
    y AS SINGLE '          y location of bloom
    size AS SINGLE '       size of bloom
    xdir AS SINGLE '       horizontal direction of bloom
    ydir AS SINGLE '       vertical direction of bloom
    xspeed AS SINGLE '     horizontal speed of bloom
    yspeed AS SINGLE '     vertical speed of bloom
    image AS LONG '        bloom hardware image handle
END TYPE

REDIM Abra(0) AS CADABRA ' dynamic array to hold properties
DIM x AS INTEGER '         current x position of mouse
DIM y AS INTEGER '         current y position of mouse
DIM Oldx AS INTEGER '      previous x position of mouse
DIM Oldy AS INTEGER '      previous y position of mouse
DIM Blooms AS INTEGER '    bloom counter
DIM sa AS LONG '           Sorcerer's Apprentice sound file

'----------------------------
'- Main Program Begins Here -
'----------------------------

_DISPLAYORDER _HARDWARE
SCREEN _NEWIMAGE(SWIDTH, SHEIGHT, 32) '              create 32 bit graphics screen
_SCREENMOVE _MIDDLE '                                move window to center of desktop
sa = _SNDOPEN("apprentice.ogg") '                    load sound file into RAM
_SNDLOOP sa '                                        play music in continuous loop
_MOUSEHIDE '                                         hide the mouse pointer
_MOUSEMOVE SWIDTH * .5, SHEIGHT * .5 '               move mouse pointer to middle of screen
WHILE _MOUSEINPUT: WEND '                            get latest mouse information
Oldx = _MOUSEX '                                     remember mouse x position
Oldy = _MOUSEY '                                     remember mouse y position
RANDOMIZE TIMER '                                    seed random number generator
DO '                                                 begin main loop
    _LIMIT 60 '                                      60 frames per second
    WHILE _MOUSEINPUT: WEND '                        get latest mouse information
    x = _MOUSEX '                                    get current mouse x position
    y = _MOUSEY '                                    get current mouse y position
    IF (Oldx <> x) OR (Oldy <> y) THEN '             has mouse moved since last loop?
        Blooms = BLOOMAMOUNT '                       yes, get number of blooms to make
        WHILE Blooms > 0 '                           begin bloom creation loop
            HOCUS x, y '                             create bloom at current mouse location
            Blooms = Blooms - 1 '                    decrement bloom counter
        WEND
        Oldx = x '                                   remember mouse x position
        Oldy = y '                                   remember mouse y position
    END IF
    POCUS '                                          draw active blooms
    _DISPLAY '                                       update screen with changes
LOOP UNTIL _KEYDOWN(27) '                            leave when ESC pressed
_SNDSTOP sa '                                        stop background music
_SNDCLOSE sa '                                       remove music from RAM
SYSTEM '                                             return to operating system

'----------------------------------------------------------------------------------------------------------------------

SUB HOCUS (hx AS INTEGER, hy AS INTEGER)

    '*
    '* Maintains the bloom array by creating bloom properties for a new bloom.
    '* If no array indexes are free a new one is added to the end of the array to
    '* hold the new bloom. If an unused index is available the new bloom will occupy
    '* that free index position.
    '*
    '* hx - x location of new bloom
    '* hy - y location of new bloom
    '*

    SHARED Abra() AS CADABRA ' need access to bloom array
    DIM Radius AS INTEGER '    radius value when drawing blooms
    DIM Index AS INTEGER '     array index to create new bloom in
    DIM Red AS INTEGER '       red color component of bloom
    DIM Green AS INTEGER '     green color component of bloom
    DIM Blue AS INTEGER '      blue color component of bloom
    DIM RedStep AS INTEGER '   red fade amount
    DIM GreenStep AS INTEGER ' green fade amount
    DIM BlueStep AS INTEGER '  blue fade amount
    DIM AlphaStep AS INTEGER ' alpha fade amount
    DIM Alpha AS INTEGER '     alpha amount at current radius
    DIM TempImage AS LONG '    temporary software image

    Index = 0 '                                                             reset index counter
    DO '                                                                    begin free index search
        IF Abra(Index).lifespan = 0 THEN EXIT DO '                          leave loop if index is free
        Index = Index + 1 '                                                 increment index counter
    LOOP UNTIL Index > UBOUND(Abra) '                                       leave loop when all indexes checked
    IF Index > UBOUND(Abra) THEN REDIM _PRESERVE Abra(Index) AS CADABRA '   increase array size by 1 if no index free
    Abra(Index).lifespan = RND * MAXLIFE + 16 '                             length of time to live (frames)
    Abra(Index).x = hx '                                                    bloom x location
    Abra(Index).y = hy '                                                    bloom y location
    Abra(Index).size = RND * MAXSIZE + 5 '                                  size of bloom
    Abra(Index).xdir = (RND - RND) * 3 '                                    horizontal direction of bloom
    Abra(Index).ydir = -RND '                                               vertical direction of bloom (up)
    Abra(Index).xspeed = RND * MAXXSPEED '                                  horizontal speed of bloom
    Abra(Index).yspeed = RND * MAXYSPEED '                                  vertical speed of bloom
    Red = RND * 256 '                                                       red component value
    Green = RND * 256 '                                                     green compoenent value
    Blue = RND * 256 '                                                      blue component value
    RedStep = (255 - Red) \ Abra(Index).size '                              fade of red component
    GreenStep = (255 - Green) \ Abra(Index).size '                          fade of green component
    BlueStep = (255 - Blue) \ Abra(Index).size '                            fade of blue component
    AlphaStep = 255 \ Abra(Index).size '                                    fade of alpha channel
    Alpha = 0 '                                                             start alpha channel transparent
    TempImage = _NEWIMAGE(Abra(Index).size * 2, Abra(Index).size * 2, 32) ' create temporary software image
    _DEST TempImage '                                                       draw on temporary image
    Radius = Abra(Index).size '                                             start from outside of bloom working in
    DO WHILE Radius > 0 '                                                   start bloom drawing loop
        CIRCLE (Abra(Index).size, Abra(Index).size), Radius, _RGB32(Red, Green, Blue)
        IF FLUFFY THEN PAINT (Abra(Index).size, Abra(Index).size), _RGB32(Red, Green, Blue), _RGB32(Red, Green, Blue)
        _SETALPHA Alpha, _RGB32(Red, Green, Blue) '                         set transparency level of current color
        Red = Red + RedStep '                                               increase red component
        Green = Green + GreenStep '                                         increase green component
        Blue = Blue + BlueStep '                                            increase blue component
        Alpha = Alpha + AlphaStep '                                         increase opacity level of alpha channel
        Radius = Radius - 1 '                                               decrease size of circle
    LOOP '                                                                  leave loop when smallest circle drawn
    Abra(Index).image = _COPYIMAGE(TempImage, 33) '                         create a hardware image
    _DEST 0 '                                                               leave temp image so it can be freed
    _FREEIMAGE TempImage '                                                  temporary software image no longer needed

END SUB

'----------------------------------------------------------------------------------------------------------------------

SUB POCUS ()

    '*
    '* places active blooms onto the hardware screen and updates their
    '* position, size and speed
    '*

    SHARED Abra() AS CADABRA ' need access to bloom array
    DIM Index AS INTEGER '     array index counter

    Index = UBOUND(Abra) '                                                          start at top of array
    WHILE Index > -1 '                                                              is index > -1?
        IF Abra(Index).lifespan THEN '                                              yes, is this bloom active?
            Abra(Index).lifespan = Abra(Index).lifespan - 1 '                       yes, decrement lifespan of bloom
            Abra(Index).size = Abra(Index).size * .98 '                             decrease size of bloom slightly
            Abra(Index).x = Abra(Index).x + Abra(Index).xdir * Abra(Index).xspeed ' update x position of bloom
            Abra(Index).y = Abra(Index).y + Abra(Index).ydir * Abra(Index).yspeed ' update y position of bloom
            Abra(Index).xspeed = Abra(Index).xspeed * .9 '                          decrease x velocity slightly
            Abra(Index).yspeed = Abra(Index).yspeed - .5 '                          decrease y velocity (gravity)
            IF Abra(Index).y > SHEIGHT THEN '                                       has bloom left bottom of screen?
                IF BOUNCE THEN '                                                    yes, should bloom bounce?
                    Abra(Index).yspeed = -Abra(Index).yspeed '                      yes, reverse y velocity
                ELSE '                                                              no
                    Abra(Index).lifespan = 0 '                                      bloom is no longer needed
                END IF
            END IF
            _PUTIMAGE (Abra(Index).x - Abra(Index).size, Abra(Index).y - Abra(Index).size)-_
                      (Abra(Index).x + Abra(Index).size, Abra(Index).y + Abra(Index).size), Abra(Index).image
            IF Abra(Index).lifespan = 0 THEN _FREEIMAGE Abra(Index).image '         free image if life of bloom has ended
        END IF
        Index = Index - 1 '                                                         decrement array index counter
    WEND

END SUB



Attached Files
.zip   apprentice.zip (Size: 2.12 MB / Downloads: 40)
Print this item

  Element 0 in arrays
Posted by: PhilOfPerth - 09-18-2023, 06:35 AM - Forum: Help Me! - Replies (8)

Should it be (or is it already) mentioned in the Wiki,  that Dim var(num of elements) allows element 0, as well as the number of elements dimmed ?
So Dim var(10) actually allocates 11 element positions, not 10. (Or does it)?

This may become significant for memory usage with multi-dimensional arrays:
Dim var(10, 1000) would occupy space for about 11 * 1001 units (11011), not 10000 as I would expect.

Print this item

  Modified Qbasic game THEWOODS.BAS by Kurt Kuzba
Posted by: Dav - 09-18-2023, 12:38 AM - Forum: Works in Progress - Replies (3)

One of the Qbasic gurus in the '90's that I learned the most from was Kurt Kuzba. I saved everything he shared.  Kurt was a great programmer and generous with his Qbasic knowledge.  Back in 1997 he posted a text game on the FidoNet QUIK_BAS Echo called THEWOODS.BAS.   It's a bare-bones text adventure that is great for learning and expanding on.  I thought I'd update it to QB64 and see where it could go.  More monsters and side adventures walking the woods would be a good addition, and another goal than reaching 2000 experience points, like defeating a dragon, would be better ending.

Here's where it is so far.  It includes a built-in font with it so the text can easy to read on any desktop size.

- Dav

Code: (Select All)
'=====================
'THEWOODS-MODIFIED.BAS
'=====================
'A modified version of THEWOODS.BAS by Kurt Kuzba that he
'placed in public domain and encouraged others to build on.
'It's a text adventure game in the classic BBS game style.
'Kurt posted it on the FidoNet QUIK_BAS Echo back in 1997.
'You can find the original THEWOODS.BAS in the ABC packets.
'Kurt, thanks for the game - If you're still out there,
'Come back to the BASIC scene!  You'll love QB64!

'Modified by Dav for QB64-PE 3.8, SEP/2023

Dim Shared q$: q$ = Chr$(34)
Dim Shared PlayerName$, PlayerHits&, PlayerMagic&, PlayerStrength&
Dim Shared PlayerGold&, PlayerWeapon%, PlayerExperience&
Dim Shared EnemyName$, EnemyHits&, EnemyMagic&, EnemyStrength&
Dim Shared EnemyGold&, EnemyWeapon%, EnemyExperience&

Randomize Timer

dh = Int(_DesktopHeight * .80)
Screen _NewImage(dh * 1.25, dh, 32)
BIGFONT Int(_Height / 21)
Width 52, 21

'======
Restart:
'======

Cls , _RGB(32, 32, 128) 'background color

Color _RGB(255, 255, 255), _RGB(32, 32, 128) 'Standard Text color

Color _RGB(255, 255, 0)
Print
Print "             -= Welcome to THE WOODS =-"
Print
Color _RGB(255, 255, 255)

Print "  Terrible beasts are roaming the nearby woods."
Print "  People in town live in constant fear of what "
Print "  lurks beyond the town gate.  Those who decide"
Print "  to venture out seldom return.  Something must"
Print "  be done.  Someone must save the town."
Print
Print "  You have decided to be the brave hero and to"
Print "  eliminate the evil inhabiting the woods.  It"
Print "  will NOT be easy however.  You will face many"
Print "  malevolent forces, many dark and evil beasts."
Print
Print "  Go into the woods, hunt down the beasts until"
Print "  you reach 2,000 experience points to win."
Print
Color _RGB(255, 255, 0)
Input "  Your name? ", plyr$

If plyr$ > "" Then

    PlayerName$ = plyr$
    PlayerHits& = 30
    PlayerMagic& = 0
    PlayerStrength& = 0
    PlayerGold& = 100
    PlayerWeapon% = 0
    PlayerExperience& = 0

    menu% = 1 'show full menu

    YourStats 'Show you stats at the beginning of the game

    'the main game play loop

    Do
        If PlayerHits& > 0 Then
            Print
            If menu% > 0 Then
                Color _RGB(255, 255, 255)
                Print " You're in the middle of town.  What now?"
                Print
                Print " (W)oods  - Enter the woods."
                Print " (H)ealer - Heal your wounds."
                Print " (A)rmory - Buy/Sell a weapon."
                Print " (S)tats  - See your stats."
                Print " (Q)uit   - Quit game."
            End If
            Print
            Print " [W/H/A/S/Q/?]";

            Select Case WaitKey%(" WHASQ?")
                Case 2: Woods
                Case 3: Healer
                Case 4: Armory
                Case 5: YourStats
                Case 6: Print: Print
                    Print " Quit this quest? (YN)? ";
                    If WaitKey%(" YN") = 2 Then Exit Do
                Case 7: Print: menu% = 1
            End Select
        Else
            Color _RGB(255, 200, 200)
            If PlayerExperience& < 2000 Then
                Print
                Print " Sorry... You have perished in battle."
                For t% = 200 To 150 Step -1: Sound t%, .1: Next
            Else
                Print
                Print " You have defeated all enemies! You WIN!!"
                For t% = 100 To 999 Step 10: Sound t%, .03: Next
                For t% = 1000 To 500 Step -10: Sound t%, .03: Next
            End If
            Print " You had"; PlayerExperience&; "points."
            Exit Do
        End If
    Loop

    Color _RGB(255, 255, 0)
    Print: Print " Would you like to play again (YN)? ";

    If WaitKey%(" YN") = 2 Then GoTo Restart

End If

Print: Print " Goodbye, then..."
Sleep 2
System


Sub Armory
    Dim price(1 To 8) As Integer
    price(1) = 75
    price(2) = 200
    price(3) = 400
    price(4) = 600
    price(5) = 900
    price(6) = 1500
    price(7) = 2500
    price(8) = 4000
    Do
        Cls
        Print
        Print "---------------------------------------------------"
        Print "          -==**[ Jake's Weapon Shop ]**==-         "
        Print "---------------------------------------------------"
        Print
        Print " Welcome to Jake's.  We only sell the finest."
        Print " Jake looks you over suspiciously and asks..."
        Print " Do you want to (B)uy or (S)ell?"
        Print
        Print " [B/S or ENTER to leave] "

        Print
        Select Case WaitKey%(" SBQ" + Chr$(13))
            Case 2
                money% = PlayerWeapon% * 30
                If money% = 0 Then
                    Color _RGB(255, 255, 0)
                    Print
                    Print "---------------------------------------------------"
                    Print " Sell what? You're not carrying anything!"
                    Print " Come back when you have something valuable."
                    Print "---------------------------------------------------"
                    Color _RGB(255, 255, 255)
                    Exit Sub
                Else
                    Color _RGB(255, 255, 0)
                    Print
                    Print "---------------------------------------------------"
                    Print " Hmm...I'll give you"; money%; "gold for ";
                    Print RTrim$(Weapon$(PlayerWeapon%)); "."
                    Print " Is it a deal (Y/N)? ";
                    Print "---------------------------------------------------"
                    Print
                    Color _RGB(255, 255, 255)

                    k% = WaitKey%(" YN")

                    Print
                    If k% = 2 Then
                        Color _RGB(255, 255, 0)
                        Print
                        Print "---------------------------------------------------"
                        Print " Great!  Here's your money.  Now go away."
                        Print "---------------------------------------------------"
                        Color _RGB(255, 255, 255)
                        PlayerGold& = PlayerGold& + money%
                        PlayerWeapon% = 0
                        Exit Sub
                    End If

                End If

            Case 3
                Print "--------------==**[  PRICES  ]**==-----------------"
                Print
                For t% = 1 To 8: Print Str$(t%); "->";
                    Print " "; Left$(Str$(price(t%)) + "    ", 6);
                    Print " "; Weapon$(t%)
                Next
                Print
                Print " You have"; PlayerGold&; "gold.  Which one you want (1-8)?"
                Print " (Hit ENTER to buy nothing)"

                k% = WaitKey%(" 12345678" + Chr$(13))

                k% = k% - 1
                If k% < 9 Then
                    money% = k% * 90
                    If money% > PlayerGold& Then
                        Color _RGB(255, 255, 0)
                        Print
                        Print "---------------------------------------------------"
                        Print " You can't afford "; RTrim$(Weapon$(k%)); "."
                        Print " Come back when you have more gold."
                        Print "---------------------------------------------------"
                        Color _RGB(255, 255, 255)

                        Exit Sub
                    Else
                        Color _RGB(255, 255, 0)
                        Print
                        Print "---------------------------------------------------"
                        Print " Sold! Good luck with "; RTrim$(Weapon$(k%)); "."
                        Print " Close the door on your way out."
                        Print "---------------------------------------------------"
                        Color _RGB(255, 255, 255)

                        PlayerGold& = PlayerGold& - money%
                        PlayerWeapon% = k%
                        Exit Sub
                    End If
                End If

            Case 4, 5:
                Color _RGB(255, 255, 0)
                Print
                Print "---------------------------------------------------"
                Print " Ok, maybe next time, says Jake with a grumble."
                Print "---------------------------------------------------"
                Color _RGB(255, 255, 255)
                Exit Sub
        End Select
Loop: End Sub

Sub FightMonster
    level% = GetLevel%(PlayerExperience&)
    MakeEnemy level%
    EnemyName$ = RTrim$(EnemyName$)
    Color _RGB(255, 255, 0)
    Print
    Print "---------------------------------------------------"
    Print " You came upon a "; RTrim$(EnemyName$); "!"
    Print "---------------------------------------------------"

    menu% = 1
    While (PlayerHits& > 0) And (EnemyHits& > 0)
        If menu% > 0 Then
            Print
            Print " (F)ight!            (Y)our Stats "
            Print " (R)un Away          (V)iew Enemy "
            Print " (S)urrender"
        End If
        Print
        Color _RGB(255, 200, 200)
        Print PlayerHits&;
        Print PlayerName$
        Print EnemyHits&;
        Print EnemyName$
        Print
        Color _RGB(255, 255, 255)
        Print " [F/R/S/Y/V/?] "

        level% = GetLevel%(PlayerExperience&)

        k% = WaitKey%(" FRSYV?")

        Select Case k%
            Case 2
                PlayerAtt! = 1 + PlayerWeapon%
                PlayerAtt! = PlayerAtt! * (1 + (PlayerStrength& / 10))
                PlayerAtt! = 5 + (Rnd * PlayerAtt! * 5 * level%)
                PlayerDef! = 1 + (PlayerStrength& / 100)
                EnemyAtt! = EnemyWeapon% * (1 + (EnemyStrength& / 10))
                EnemyDef! = 1 + (EnemyStrength& / 100)

                If Rnd > .5 Then
                    Color _RGB(255, 255, 0)
                    Print
                    Print "---------------------------------------------------"
                    Print " You move fast and hit first."
                    hits% = PlayerAtt! / EnemyDef!
                    If hits% > EnemyHits& Then hits% = EnemyHits&
                    EnemyHits& = EnemyHits& - hits%
                    Print " You hit for"; hits%; "points."
                    PlayerExperience& = PlayerExperience& + hits%
                    If EnemyHits& > 0 Then
                        hits% = EnemyAtt! / PlayerDef!
                        If hits% > PlayerHits& Then hits% = PlayerHits&
                        PlayerHits& = PlayerHits& - hits%
                        Print " You are hit for"; hits%; "points."
                    End If
                    Print "---------------------------------------------------"
                Else
                    Color _RGB(255, 255, 0)
                    Print
                    Print "---------------------------------------------------"
                    Print " You move slow and get hit first."
                    hits% = EnemyAtt! / PlayerDef!
                    If hits% > PlayerHits& Then hits% = PlayerHits&
                    PlayerHits& = PlayerHits& - hits%
                    Print " You are hit for"; hits%; "points."
                    If PlayerHits& > 0 Then
                        hits% = PlayerAtt! / EnemyDef!
                        If hits% > EnemyHits& Then hits% = EnemyHits&
                        EnemyHits& = EnemyHits& - hits%
                        PlayerExperience& = PlayerExperience& + hits%
                        Print " You hit for"; hits%; "points."
                    End If
                    Print "---------------------------------------------------"
                End If

                If EnemyHits& = 0 Then
                    Color _RGB(255, 255, 0)
                    Print
                    Print "---------------------------------------------------"
                    Print " You have defeated the "; RTrim$(EnemyName$)
                    Print "---------------------------------------------------"
                    PlayerMagic& = PlayerMagic& + EnemyMagic& \ 10
                    PlayerGold& = PlayerGold& + EnemyGold&
                    menu% = 1
                End If

                If PlayerHits& = 0 Then
                    Color _RGB(255, 255, 0)
                    Print
                    Print "---------------------------------------------------"
                    Print " You were defeated by "; RTrim$(EnemyName$)
                    Print "---------------------------------------------------"
                End If

            Case 3
                Color _RGB(255, 255, 0)
                Print
                Print "---------------------------------------------------"
                Print " You manage to escape, but all your strength"
                Print " and magic are lost, and some experience points."
                Print "---------------------------------------------------"
                PlayerMagic& = 0
                PlayerStrength& = 0
                PlayerExperience& = PlayerExperience& * .9
                menu% = 1
                Color _RGB(255, 255, 255)
                Exit Sub
            Case 4
                Color _RGB(255, 255, 0)
                Print
                Print "---------------------------------------------------"
                Print " You give all your gold to "; RTrim$(EnemyName$);
                Print " Being broke is better than dying I suppose..."
                Print "---------------------------------------------------"
                Color _RGB(255, 255, 255)
                menu% = 1
                PlayerGold& = 0: Exit Sub
            Case 5: YourStats
            Case 6: EnemyStats
            Case 7: menu% = 1
        End Select
    Wend
End Sub


Function GetLevel% (e&)
    Select Case e&
        Case Is < 100: level% = 1
        Case 101 To 500: level% = 2
        Case Else: level% = 3
    End Select
    GetLevel% = level%
End Function

Sub Healer
    Totalhits% = PlayerExperience& \ 10 + 30
    ToHeal% = Totalhits% - PlayerHits&
    Cls
    Color _RGB(255, 200, 200)
    Print
    Print "---------==**[  HARRY THE HEALER  ]**==------------"
    Print
    Print " Welcome friend.  Let me heal your wounds and soul."
    If ToHeal% <= 0 Then
        Print
        Print " Harry looks you over completely and says,"
        Print " You don't require healing, friend.  Goodbye..."
    Else
        Print
        Print " Each hit point costs 3 gold to heal."
        Print " You can afford to heal"; PlayerGold& \ 3; "hit points."
        Print " To max out, You need to heal"; RTrim$(Str$(ToHeal%)); "."
        Print
        Input " How many would you heal? (ENTER for max) ", heal%
        If heal% = 0 Then heal% = ToHeal%
        If heal% > ToHeal% Then heal% = ToHeal%
        If heal% > (PlayerGold& \ 3) Then heal% = PlayerGold& \ 3
        PlayerHits& = PlayerHits& + heal%
        PlayerGold& = PlayerGold& - (heal% * 3)
        Print
        Print " I have healed you for"; heal%; "hit points."
        Print " Go in peace my son..."
        Print
    End If
    Print "---------------------------------------------------"
    Color _RGB(200, 200, 255)

End Sub

Sub MakeEnemy (l%)

    ReDim EN(1 To 3) As String
    ReDim EP(1 To 3) As String

    EP(1) = "Ferocious "
    EP(2) = "Snarling "
    EP(3) = "Evil "

    Select Case l%
        Case 1
            EN(1) = "Squirrel"
            EN(2) = "Bunny"
            EN(3) = "Hedgehog"
        Case 2
            EN(1) = "Bear"
            EN(2) = "Boar"
            EN(3) = "Troll"
        Case 3
            EN(1) = "Demon"
            EN(2) = "Dragon"
            EN(3) = "Wizard"
    End Select

    EnemyName$ = EP(l%) + EN(Rnd * 2 + 1)
    EnemyHits& = ((Rnd * 10 + 20) * l%)
    EnemyMagic& = ((Rnd * 10 + 10) * l%)
    EnemyStrength& = ((Rnd * 10 + 10) * l%)
    EnemyGold& = ((Rnd * 100 + 100) * l%)
    EnemyWeapon% = (Rnd * 2 + l% * 2)
    EnemyExperience& = ((Rnd * 10 + 10) * l%)

End Sub

Sub YourStats ()
    Cls
    Color _RGB(255, 255, 0)
    Print "------------==**[  YOUR STATS  ]**==---------------"
    Print " Name       : "; PlayerName$
    Print " Hits       :"; PlayerHits&
    Print " Magic      :"; PlayerMagic&
    Print " Strength   :"; PlayerStrength&
    Print " Gold       :"; PlayerGold&
    Print " Weapon     : "; Weapon$(PlayerWeapon%)
    Print " Experience :"; PlayerExperience&
    Print "---------------------------------------------------"
    Color _RGB(255, 255, 255)
End Sub

Sub EnemyStats ()
    Cls
    Color _RGB(255, 255, 0)
    Print "------------==**[  ENEMY STATS  ]**==--------------"
    Print " Name       : "; EnemyName$
    Print " Hits       :"; EnemyHits&
    Print " Magic      :"; EnemyMagic&
    Print " Strength   :"; EnemyStrength&
    Print " Gold       :"; EnemyGold&
    Print " Weapon     : "; Weapon$(EnemyWeapon%)
    Print " Experience :"; EnemyExperience&
    Print "---------------------------------------------------"
    Color _RGB(255, 255, 255)
End Sub

Sub UseMagic
    Print
    Print
    Do
        Color _RGB(255, 255, 100)
        Print
        Print "------------==**[  CAST A SPELL  ]**==-------------"
        Print
        Print " (H)ealing Spell   (requires 4 magic points)"
        Print " (S)trength Spell  (requires 9 magic points)"
        Print " (Q)uit this menu"
        Print
        Print " You have"; PlayerMagic&; "magic points."
        Print "---------------------------------------------------"
        Print
        Print " [H/S/Q]"

        k% = WaitKey%(" HSQ" + Chr$(13))

        Print
        Select Case k%
            Case 2
                If PlayerMagic& < 4 Then
                    Print "---------------------------------------------------"
                    Print " You don't have enough magic points for that!"
                    Print "---------------------------------------------------"
                Else
                    m% = 1 + Rnd * 9
                    PlayerMagic& = PlayerMagic& - 4
                    PlayerHits& = PlayerHits& + m%
                    Print "---------------------------------------------------"
                    Print " Your spell yields"; m%; "hits."
                    Print "---------------------------------------------------"
                End If
            Case 3
                If PlayerMagic& < 9 Then
                    Print "---------------------------------------------------"
                    Print " You don't have enough magic points for that!"
                    Print "---------------------------------------------------"
                Else
                    m% = 1 + Rnd * 9
                    PlayerMagic& = PlayerMagic& - 9
                    PlayerStrength& = PlayerStrength& + m%
                    Print "---------------------------------------------------"
                    Print " Your spell yields"; m%; "strength."
                    Print "---------------------------------------------------"
                End If
            Case 4, 5: Color _RGB(255, 255, 255): Exit Sub
        End Select
    Loop
End Sub

Sub WalkInWoods
    Select Case (Rnd * 99)
        Case 0 To 9
            rndgold = Int(Rnd * 15) + 2
            PlayerGold& = PlayerGold& + rndgold
            Color _RGB(255, 255, 0)
            Print: Print " Lucky you! You found"; rndgold; "pieces of gold!"
            Color _RGB(255, 255, 255)
        Case 10 To 19
            PlayerMagic& = PlayerMagic& + 1
            Color _RGB(100, 255, 100)
            Print: Print " A nice faerie gives you one magic point!"
            Color _RGB(255, 255, 255)
        Case 20 To 29: m% = 1 + Rnd * 9
            PlayerHits& = PlayerHits& + m%
            Color _RGB(100, 200, 255)
            Print: Print " A friendly Elf heals you"; m%; "hit point";
            If m% = 1 Then Print "!": Else Print "s!"
            Color _RGB(255, 255, 255)
        Case 30 To 89
            Print: Print " The path continues before you. Now what?"
        Case Else: FightMonster
    End Select
End Sub

Function Weapon$ (w%)
    Select Case w%
        Case 0: Weapon$ = "Your Bare Hands"
        Case 1: Weapon$ = "A Stick"
        Case 2: Weapon$ = "A Quarterstaff"
        Case 3: Weapon$ = "A Small Knife"
        Case 4: Weapon$ = "A Big Knife"
        Case 5: Weapon$ = "A Machete"
        Case 6: Weapon$ = "A Shortsword"
        Case 7: Weapon$ = "A Longsword"
        Case 8: Weapon$ = "A Two-Handed Sword"
    End Select
End Function

Sub Woods
    menu% = 1
    Do
        level% = GetLevel%(PlayerExperience&)
        If PlayerExperience& > 2000 Then PlayerHits& = 0

        Print
        If PlayerHits& = 0 Then Exit Sub
        If menu% <> 0 Then
            Color _RGB(255, 255, 255)
            Print
            Print " You're in the woods, alone.  Now what?"
            Print
            Print " (C)ontinue .....Walk the path."
            Print " (T)own .........Go Back to town."
            Print " (S)pell.........Cast a Spell."
            Print " (Y)our Stats....Show your stats."
            Print
        End If
        menu% = 0
        Print " [C/S/T/Y/?] "

        k% = WaitKey%(" CTSY?")

        Select Case k%

            Case 2 'Pressed Continue walking...

                Select Case (Rnd * 99)
                    Case 0 To 9 'found gold
                        rndgold = Int(Rnd * 15) + 2
                        PlayerGold& = PlayerGold& + rndgold
                        Color _RGB(255, 255, 0)
                        Print: Print " Lucky you! You found"; rndgold; "pieces of gold!"
                        Color _RGB(255, 255, 255)
                    Case 10 To 19 'faerie magic
                        PlayerMagic& = PlayerMagic& + 1
                        Color _RGB(100, 255, 100)
                        Print: Print " A nice faerie gives you one magic point!"
                        Color _RGB(255, 255, 255)
                    Case 20 To 29 'elf heals you
                        m% = 1 + Rnd * 9
                        PlayerHits& = PlayerHits& + m%
                        Color _RGB(100, 200, 255)
                        Print: Print " A friendly Elf heals you"; m%; "hit point";
                        If m% = 1 Then Print "!": Else Print "s!"
                        Color _RGB(255, 255, 255)
                    Case 30 To 89 'nothing, you just continue
                        Print: Print " The path continues before you. Now what?"
                    Case Else 'Monster fight!
                        FightMonster: menu% = 1
                End Select

            Case 3: Exit Sub 'back to town

            Case 4: UseMagic: menu% = 1 'you use your magic
            Case 5: YourStats 'show your stats
            Case 6: menu% = 1 'Pressed ? for help

        End Select

    Loop
End Sub

Function WaitKey% (keys$)
    Do
        k% = InStr(keys$, UCase$(InKey$))
    Loop While k% < 2
    WaitKey% = k%
End Function

Sub BIGFONT (size)
    'loads a custom size CP437 font (like QB64's built-in one)'
    'You can make/use any size now.
    A$ = ""
    A$ = A$ + "haIgm]0MLEMMXkS^ST\\T]lHiaboe<Nl8c71HYa3f0VPiWa9H07n5a_0bn:K"
    A$ = A$ + ";#FB8;c773hBD8T42E_#C:=QBC39PSQB=DB2UhdhVBB^9=_D2EQ#Ala?JFmi"
    A$ = A$ + "ejeGKNiYTV4\UNkOWcmL791Y0Iefg<NdmNWiLfWmIoO_?WkeP10H6`NP0HS["
    A$ = A$ + "KMGj5l9Nf7lH0HC;3of5MAGb9ef>>V6V60Vfa[_^=_m>j[Y]NOC7PDY`?kKc"
    A$ = A$ + "gd0IQB1o20VfnaO?eFkH7m=nh8TP=]8ljY]e^_e]DhRj<;0CoG1`5>lfj\S`"
    A$ = A$ + "IOn5Z6o]G6oLbK3oRZONcW6QoL`[Gfffn0gBQ5]P_=NmC3#5__^kMcMlg=[o"
    A$ = A$ + "a=RPjY`[?W]ga]dWICVEPonZafW]W>fNWObWOGk3P[h7POg7[_Nga07oM<8f"
    A$ = A$ + "f[2agZnF0=g`?kjkmmOT[]nel;PVZJ]hg0?OKcLadaGiKoLOB06[_P\Y8lOJ"
    A$ = A$ + "#5Pl2kCZm?FO04TU^4o[1Bn:5m=VLhOH8jj9mj4UF4Te<4D9R7[U6eP\fS#H"
    A$ = A$ + "5]c]X6G?2l1mUORGl9Rl3CcgPP3Yf?27leNXQi017VViP9PXlI5<D`Bg[8lC"
    A$ = A$ + "8OFXkk2MW7jMNL?lKIT21l_VF:3>F2D;LOV8TRaP9n:<aIA^f=aF7iJaK2<#"
    A$ = A$ + "L8<Ak3Q9<_mJcKe[TDPTc\936fA:ngRlXaf?Q:5<^GQ:NaoU>Jo437Vj6iV1"
    A$ = A$ + "CjiCm;DJYL^oDO^mEPnIARTN`G4_b`GW:h^aS?8:nE5\4h>P72nB`S0?6lT`"
    A$ = A$ + "G3n6`g4n^`g3nA`;PJd_>l_2S2oK`APa=OZPk;hn3NXP7>h;7l41OUP36l\1"
    A$ = A$ + "OW\;=kJbN7IOTLOjLkMY;HY=]dSMY[OYM\d>cGAnIU?G1X#55Z[`\:<W2c[`"
    A$ = A$ + "R:\\2]DHU5FCQ^;\W23Fh^;L?5^_2On2?FQW\`cDh05Nf2o]5n7JN==_fV?["
    A$ = A$ + "V_^VgLcKYiK0]l#_nl<n]?Ho`G1N64oNF7nmJ`?5no0oBhG?1lkY#lk_a3o6"
    A$ = A$ + "2a_i_dUXhG8SOIW2lKS>lKXb`_G\iCeQOMfleChgho?6o#SoJSo:SoBSoRSo"
    A$ = A$ + "2SoS7o7=nc=ngKl_mh7LloZao6SOPaojSo<SodSglAKnX;mXckXcmXciXchX"
    A$ = A$ + "eNDcA6o8SMX7j#Ol3]n3Uke>UGKi_jGkEOZGmAOe?i[^cGM7_b?iEnn_bGOT"
    A$ = A$ + "GITGNTonAN^An_?bgOT_k87LTobANbANdA^oAn8SLWSL7S\kA^eAfn8KJT[I"
    A$ = A$ + "T;OT;KT;LTe?bJNYGnUn7NYGlUnj_dOi;md_dG1if?hKUTeoQnbPBTY#kYE1"
    A$ = A$ + "ESFZ[1V>D;D7jiJVX]gjQI1YQI3=0c1b0c5J4V7<OH1`2Aig5SB]=QF<c1;5"
    A$ = A$ + "b3;3:0=3;7>6hHQS3>NX5h4#keW4\2XEX=X8\BX4Lb`ZPE3W2LZ`Y1[1>Mhm"
    A$ = A$ + "0W1JUo<Qc2>KhLPc5F7LN`jQg;lnPc7f0L1`52G4\Ahm3G<L9`U2G6Li`70J"
    A$ = A$ + "7^2h:Q[2^JhJP?8L]`e1M0K2f<Zke9\5H[`fP^P[7^1XKHk#?#_#O`=2m3k0"
    A$ = A$ + "60f9LC`=3g2L[`^P?4\KhfPK7ejf3B0Z2o4TZbZZNJe<mJ[K6c\RjWEjIg`L"
    A$ = A$ + "b<g6WglG`2GdRGBCIc]dl;[#c;oH>fSkhKi4>aCJ5]fFaEFjTGeZ?UCmdFcY"
    A$ = A$ + "oN>SeNVWeIO>Wkj>_eoNOOWo6^P;lRfhkoR_T;mb^l?#kGaENEGmel1_f[[S"
    A$ = A$ + "=]i`>gbFgFGGo=dmfkYgn^anga0klV^iKiFge7Jggf]O7kiCoI^ooX?kWk1n"
    A$ = A$ + "CN`?oO:l5nR?lGjAfknnb?jSmWmWohko9PWj_h[lEQ?n7N`kjKO_oa2;k?4N"
    A$ = A$ + "n?a?i5o8X?Fh_6nX3m=N8h?h>oHoXWn73gmo=hgcSeBVBdGon_Ub1Ll68O[5"
    A$ = A$ + "Tn_7d>d?4niViJ>Ec5J^NcmJN6coD5c\REDAgEL?ElHEllElc2VE`E7\]P?E"
    A$ = A$ + "`S5lM2NmD#ZIUJUYf#Z#lmNBMoYNfDoZ:?V:_^:k_bQZlaZliZlWFi_\Z:ZJ"
    A$ = A$ + "VEeFEQE][ZfKE?GEoZZWGe[Yj[^jk^j7_j3Fm;<]:VfLWfI=]]<]kJJ?nd6N"
    A$ = A$ + "JSECfJFG=K[Vk_VmGcgYV3=mY=mU>me>m?hdgedo\Co_Jj_N]cZfFZm\Z=\f"
    A$ = A$ + "k\f7_fOH]7Y^IFg:[KMe]Ujj_^1[K_emm[k`cX^I\RILYcHgch1VaGM63?SO"
    A$ = A$ + "c<Wi<?^I^^I^YINGcLOc<JVobjWKm]Eo6Zoj[ocDoG]nG]naVe\Ve9>[e?[^"
    A$ = A$ + "aggm\NlIm2YQdK8MgYO`d?NjXd_n\[JfIWmJWm5>knVmGHf_D3;ZQef`0=lH"
    A$ = A$ + "=llcYZidfLfdL^WilhcIh<EUIeIj9c3TIhi2cmHVkE>g?nL?hLoI=>k6GISG"
    A$ = A$ + "ISkZamfhcghAVga=_;MNM?_?cl>hlnGVoLWoI=o]=oM=om=oGL1YF`:F#k;h"
    A$ = A$ + ">G`3_P3\PGL1S^`U^`CNQGj2kKQ?h2?`2OQ5ncGDM;J5;jbGdNFdm^Xm]XO`"
    A$ = A$ + "RNi5mcGlBFlZGLhR_g5oT;nK]hGLao;;ng\TY]Ti]TSI9WjBf`B^^U<`B^[U"
    A$ = A$ + "lIGbC]TXUlB;iWeDE=U]YEfdjKjjJjVJjNJjQKj0=ml=m?W=Ef5UmmTmbcfG"
    A$ = A$ + "fk=k3Wm0IOi\obLc<g9VKSij;g3TKOiNjLOWL3WkeGj3^\Y]\WJIO[Um3Gfo"
    A$ = A$ + "DQZ:\T2_W2KZ`]GHO5>DceeljK^_VOPV?HcodUGeb?^U_nUOmXESBXnd[Vjh"
    A$ = A$ + "#k:E3WhCHPCJ=?IeYPog]m4EEi;_VW<X2lDh92X_^Bj[ObZ[bLTelT6jk;V>"
    A$ = A$ + "Gj2iBW[Ti;?fmH>San[CML_a;D:hPP69H#F<>]JAkB#YRUX6W;Mn<i<I:F:4"
    A$ = A$ + "SnK\n27KHc#AAQELPa6nXk=<H`#fYLe^n6`m^1dBf2A[G#Yd5Cg#YLIbW9OY"
    A$ = A$ + "PB5cT;OYR=T?MAC^<iBSOOHXIX`8l_]4B7>jiDAk7M_EdNH#fSL8jkTO1oNj"
    A$ = A$ + ";TQ;U7N:S3=:8\:BXJY6bD4afRU:D\Dn:;U?3RfHog;1N4mYQ31NH82=nLNH"
    A$ = A$ + "i917o06WJF4V`l=8<b`O#Xb_;A_aFc]WA<Yo4DE#``8TQ1REY9BH966lk4`a"
    A$ = A$ + "oU0WhGalR1AJY5K4h#<Td1jE4b4=f`AdTPR9S>1I#]<f`S=L8bUdHR8h<5h3"
    A$ = A$ + "bA`_QaW8QHPCW8T5;H2?KIhPa_EAkHloe2#1J28P9_ID^1J39lFc:9PTQV_9"
    A$ = A$ + "GJS`>`nT9O#FTA49SBE[mGO`:>0gIJn6Bd]:>02OLn^ZHniYkgOQDAH8?Rj5"
    A$ = A$ + ":CTWZ96o5ZH0=7CWWT2CgPRg4KP`678laZf]SS:EZl3>76[D]B;AXVVA]<5E"
    A$ = A$ + "i_CcT>O2^:Q^Af[6[_8ETQc=RVg2LIiHBc#Whi]H9=8[2oV85RAd;jPIdHT?"
    A$ = A$ + ":D08RWSo0\^1Y32\6<2UdjARBPTIJVRb7\43ZG]KFDnXWCH`QYiJE>IV0E;>"
    A$ = A$ + "?6g1#<RUc65`g2bQBRi;QOG63nQd^[4IE4f55ZoQ\E4=FMAR#29HBcND2U^d"
    A$ = A$ + "Z>jYkPdRDKPT0J=]E:eCc1O;<KFj<e6BXbT\o>IM6S5M>jMDLG<S:7OSWBPP"
    A$ = A$ + "AT1IN<\:R`W>_Wn2B4EmGNfa2<j7a#5=a\cUD>n:ISV]W^:\kXNLj6eS2STN"
    A$ = A$ + "IJYR3PDOmXWMhIPa62iHb<=58I3\SXL[P1H[AcJ13NTMSC5478iE#U1Hj#A<"
    A$ = A$ + "n?XEbZ[Kn[ZBUHa\<iiojK=P>R>7\:LT=6QII9IATTSNiHeIWiFM`9LQdi8?"
    A$ = A$ + "n3:V6#lgLYYc7[?V^;dZVNcXkRUZTdnS^g9BnEI1;<A:O39PFndZfN4ImQNQ"
    A$ = A$ + ">M>#imIEZL^eRMXXd5BNn#NU_<K4KgZ1BVSXcNB\hX:NgHkcN6i;_O2nQDn<"
    A$ = A$ + "2GQ\7CmP]dUXSNSIkD=J8o[i#NdXXZ6>oCRCaflcD<1NYc9oGZ]5WnU__\jI"
    A$ = A$ + "]o4n>L\IA782:[mY5On>oMFJM5]K=OQbYH_ZXMKl6=TFmfVVD?bTGlXPLYf9"
    A$ = A$ + "n;iA3=OdG4KcTVMXlMUTgX6HeK3KcT=b#n^B]1TdaVKR]M?XHknd=ZlUBCDi"
    A$ = A$ + ";VVD`:MXl<AfWn3Qd\?EbD>2GIn>nZAlHoF[SX4:6HEndNBK\o1[1MQVCc2;"
    A$ = A$ + "UV2VBXgReMNTHCS3[^=0]6KJ<5T]H`gdF9OSST9IbJLa<iC`KYiADTcU^SA`"
    A$ = A$ + "TC?OK5`L;EOK>;4TVG9U:EB=3aF84KaR^WXB:aN8RBjg8fhKQ?#SX8O6BJn8"
    A$ = A$ + "o3SJd`Z9HlPTNB45H6K3chT=J#R6#WXY]DE;la>A^[U8l\j7Nm=fnOa<fHiR"
    A$ = A$ + "B#6\MFdK2b6[gTGUA4Ga5EI4a6ThQ;:JBRMS\S4YabDN\Bj;=f\XaO0d9N;4"
    A$ = A$ + "M8W#6BCB_ZWBEGf<4B]6UT28M:RbAh:Gk]AaI:nm5`n:`f;6f5nV;WDVlAR3"
    A$ = A$ + "NbL4=DTiHN#>7=T\dMJDJ15U`OJ0AO[dPe>\85hcN4j]8fiI_M6<ObJe7iaF"
    A$ = A$ + "?[LOahCLc[3ChB[YSWF<Mc9Y:_Ao4Rm9:bH[GND3`9[6;kh5gQhgWdS9]HB["
    A$ = A$ + "EQ<>OU8kR8^2ma2eaZ;dZf6JeI3mdWbT8ZKNV9J?5C_lRUD^P6?HTed53FR4"
    A$ = A$ + "bfNBPO=h`_dDjCil`[j`4bZSS7D`941W8n#I;ihT<UBQ#A4H<9:D11KjD\IK"
    A$ = A$ + "CK:9N8aCb^CUY62#^mA2M?h`D_`8B6RW8#IbD^\fR3h=6C:aHC<=fBf]TJMR"
    A$ = A$ + "aGU`nE3fLUbiTB9J]>oHhaad[n64?;RgLl<2HE#eMg<:Zo#a]AJ_\HYXMaVA"
    A$ = A$ + "1a_5gVZI=l<R2>g^Q4S2BhiAabh3Bb]=<1EAG\G9R?e575ORE0>QAV:Xjccf"
    A$ = A$ + "HHlTb`f#IC;I?c6QKaJ;b=n[bUcR6;h4S_f5OLBLXlQ_LJNjHM#EP8GV68_#"
    A$ = A$ + "<b;ncXh]TT\h`oY\2RU]7TcF9>[?j<B6_431DNRlDRR2T869A<D4afBR7;dc"
    A$ = A$ + "b#6eJOjLH2PfL7UiShS:<>h?:<;>=f4bXB=<XXWi<7]BX5Hi1:3?a^6RJ43W"
    A$ = A$ + "LLEVHYWnBCnf?c;XCJ9]fRZ]DK0Haf3Hh7I=M69fU[`3ola>ENOiZmH[DS`l"
    A$ = A$ + "8TC=0S0=Ym>52B6BYe^[Zd2AbI_413IFRVVb<5MA53[6WBHUa3>C4:ncYi3i"
    A$ = A$ + "V2:5CSZ<_0N?J5IDHD^#0UA_TX>Z;9OXFF21=MaB6YiXR6KHbDUIXS<?cXff"
    A$ = A$ + "77G:DXHLa38KZ^DF9RZ?\[GR5gFW1f^LT]L5Te6KAWVLj_TG][>2<UcEE\Hj"
    A$ = A$ + "_6D[Z4A;bJIhPER8V7ZIPH7NGL5afbeL]U8UBcaYVF\QAmk`dhOTi9EAKZjK"
    A$ = A$ + "66kE>ObnJJ19]3YM^2?NAm9[KWc6]emS5SY59fG^_QTJU8];CPCSTT]BX?BF"
    A$ = A$ + "3ULRGM\NClhFTmALJ6>e3[?RQU8HLh#TVhg4\kEVe1JnCYfK]>4iQ;A\_#d?"
    A$ = A$ + "=S?9RWAlY7WQNIIVKmac\A_<`AjDT4CCTV76?k;;ggdiLa\C#B#<>Ll3`DIb"
    A$ = A$ + ">:ZNF^NB9[NR<fAdXAEJPnT#6Flh:FcBW\FYNnbdBL4WlLHIbAR^SlfV=VdO"
    A$ = A$ + "jM`PXIJbSm1`AgEGC;m;^X6IR=ZV?faJ6_8]LJCf8am>9A<Y=`ITJa7;m[TU"
    A$ = A$ + "#cic`N>XTdEc2`KJLZIbK3Jb6U:[OZ\=eOTee]Omb47XNfUZF\;AaLQN29L8"
    A$ = A$ + "REflmWbend_6JnE1[\LoU86\HR`MPb6?f:5Vgg#Al<65Z?blHn0Ua4V3LSCB"
    A$ = A$ + "mUER_ec[eETGL4L>d1I7o18?_I#Z4EK;nkS26d<:2G:7A1DfL4?LHRhfAeB["
    A$ = A$ + "6=m>CAKVZ<?C2NTC8=RmF8QZGWUhV`Vd<dZhTfYgUF[^#;R27ak36DLPe7Y?"
    A$ = A$ + "L8V[kS;aaaTAXHR7NEaEeTlBO`GFNnaEFVm98c3Ej;D[4AXjfSWCTbXjFb>?"
    A$ = A$ + "#L8=ViQ3;RaQ6#b3gjj\XA;RoC6PQZ8\R?];hSHQ[HJ??bJF<FYEE1O8[c:["
    A$ = A$ + "KM2>T6[T?M6>GjLJlnD1YUZ:8n9UdMdBOd774Th9Pn;kd\<O7=hiiTZZ_Fi8"
    A$ = A$ + "5SHC6\gBbN;ijQfhBaeKZVh<>Yn;EKR3HHh8NTYEfj`B]A2YiP]F\D6_B<8D"
    A$ = A$ + "09LMFhj1a>VYBMCZ58;9enSPYd?OiVWV<ole9G`5M:Y^H=naTHS8Y5YKnbQY"
    A$ = A$ + "iJ\JG1;m=;o#S1K]iXk53iQ<PEWW\CeBekTNYN9C79NJR\4C;9e[O_enceca"
    A$ = A$ + "Snb6X^;CCe#8\MW4L5:P;S?^j#R81ijcZg53WBU9K9E<V]1H5]2MhQEb:Z<m"
    A$ = A$ + "g<>In<>INENgYoIS^VC=f[_FOiUVBOiIVJOiClE2ObILfG5m?KV3YSdj7B9\"
    A$ = A$ + "g^LDP6AW;S_bNIY8NTJKcJNT]P8>aa#m_an1anE?Go]d>Okne2WRHVnT`O^c"
    A$ = A$ + "6hKRol:JW\1QSmXJIkB#3K=I=kV#]o\nDBh?ggHD\G\HiS6lSYA[<#9=fV#^"
    A$ = A$ + "d9L`RTL=9FTTnSmOaNeC;?cBCF`YLR4Qc=>VPJDH<bilIi7OQJG=?7m8;gTV"
    A$ = A$ + "5bRc\9Ai>0Yn4D]7TeERFK8^4:Bm9Xf?DIS1;_`e]Em<Ba065:EffEdIWAKe"
    A$ = A$ + "O^4kXVE_EB;S8n[A577W09SI[kOSN[=Z6eA1M1B]l6M=SlFMDYD5U_N0NBMU"
    A$ = A$ + "Bk]N0l2M;QX7<XG<KYfP^^M9[oNJGmF\aSJ3kSeoL:OAnaDP`RigC^[?QPh;"
    A$ = A$ + "bQPiXk=:Y?`j2C4;NC4o>^Rb^J:cI=8eK?:d?PDFF:bFfN]Z5Jl:oWbeg;PZ"
    A$ = A$ + "L6SG1RgB^ZD5IG\82RiHUG<``i1aag>Z4mb`\f197IGC\Uk_ZHan:;<A_WUL"
    A$ = A$ + "f0\cSX9^Q:LB[jJD9[M65YGndELP89V8MmhYO5W3bJBI;[U5o]:;BlflDg]N"
    A$ = A$ + "]IUml#[L]hdBnShH#FdBP`751^89f0cXHl]K`_2ai;[Ff5ejH7ib8P;CU7?P"
    A$ = A$ + "SOn1\[iFVBaFL9cCQjRFAa6X6ZSlfK9_MGOI3Y0BKn0:VMS\f3lRBhT1JWU1"
    A$ = A$ + "ZG\a9b09XR<Z4C9EaP#=7\bT3TEN<^NU4UYQ9\>[5;i4:M[NW_0[_P<SWbJg"
    A$ = A$ + "]1N=e>N_egLBF\TPd5W_aE3obbMBCV\\U#QH^SEWhL3]<DfhEl]LlX8J;U?N"
    A$ = A$ + "5hh8I:KLUUWTLEDGi[PSo`kVcCjj08NFMI8`[LHT\D0Lm5dUTT3<F]gVbIST"
    A$ = A$ + "PCC9bd=^^[dND:CJ]f[N[89]MU4lVR:C:R:7::ER\3cD;FJ8NLf?kGQg3:]j"
    A$ = A$ + "_:DNef=M\RC^Ea[<9K8fJdDUeRL[fWTDH2359Y?c?N\\ikT;]DKW<^Z[Z4U\"
    A$ = A$ + "QFoW4AWcUf^f`8\>Fk^gJb[mKA=F4[]<oZ0[aU`NldjXKmEIAj:Ld8JMjR[n"
    A$ = A$ + "G9N_4`^Z<abGdNhk0AlbHAeOG67>XAIa]UJmiA;HhVOb[bG#IA7hZjGDLL23"
    A$ = A$ + "bdNdn1Ao[c2NkNhSUQ\kF`4i>8b>YcI\[Q0Q\bb0akm#IEK8`OTMCeabOmUL"
    A$ = A$ + "`<A=\88FPRR`:Ic#RfDQl6;D#eb[=[GE2Uh#dXBY<=E97aD3eK]ZfJ5L>b^M"
    A$ = A$ + "d`=`B_CI5:J`I:S\<V\J5ZT#i5]##F?Mjgba`G6HB7S9<4I;g^1?6;o]J<:J"
    A$ = A$ + "cHJRSCXHJNZ6YbFoUhm?jT>J1JTDU?:B0RCf8h9OXFCVjIRcMEYL8cObZQT]"
    A$ = A$ + "DBC1[9In#iWPG<iXFoIRNE<ShGAc\B8HF_:AARi;ISiPaDZnlG\=NgL9Re=f"
    A$ = A$ + "VRHQ;bFcBIg\hfdZ2`mX;DMSb=EE>:M2idb[RT:XVXFBNk]_O;73e[8;Y>aa"
    A$ = A$ + "`Vd\g#X62;3n5Vbi`4TAW`HX2Y9W8^P7PHoOX<:=FcWcDH2SVjm;WQUAm65["
    A$ = A$ + "I<oQP;\QGN#T1H96d<D<Xa1kfP[VEan8`NYk4bS<?]fE^LY#HD313_JMi5_A"
    A$ = A$ + "TK[iX4FZ\GnjmflZZQl7F6<lXR>hHC#CPdPN4]0_m3YVK0_SAE8BD;19JA]V"
    A$ = A$ + "BK:E7Hl];D=7cQ[2E;_<_#EZ[3S^;J4o#\>P]ZEN15bUbZ<o6;LREaZL9o9A"
    A$ = A$ + "XGZ[E\0oK=<CHA^LHj1bF:gfX2cVV:HVDjNb4\C2I6fabd_inSEYi988CPDF"
    A$ = A$ + "[<1`J^0JM12dM:1B7;P`Lij>ZH\nhM3X61]gl[JIel]E[bg3I3NE^BMM55Go"
    A$ = A$ + ":EVk87bF8[Y6VNdOc4PYO=a\J4>Pj3c6]gS3Z?Y4LPThZ[d3^R]M0WLhiHag"
    A$ = A$ + "DNbiejh3>?NF8BWkLgU4E]XY\nd1Bm_B\WKV#=`hk;SBLU0RRgQ<lE9;8Vj8"
    A$ = A$ + "5L[KSToJ6AGd_D9YMefgV3AX=GDDUci2b]_k\cINO1Cf4`hDiEVOh8<BZHmo"
    A$ = A$ + "1I^hKjnA[T6>MVlU]Odd\1RlGl5e7[gjV5_o:U#bciE4UbZf77=]]FSnEl;f"
    A$ = A$ + "4CD\MDkn?eFQ:Y4RFlWi0lFCUe6DcDl6Lf5ACLQ=em8YU^ISl?AfATg8MciU"
    A$ = A$ + "FFWaTk>?c#f[i<Gd=IKMne<foN[YDRJ`J_?7R[iRj\LDOlTZ0Mllo`R_bEIW"
    A$ = A$ + "nB>Ki\Y<RI^9cNf?`#jB`kO_CHIKlNA;D[EHSfm7ZM7]Uc]OA2e]d6KFUn8Y"
    A$ = A$ + "oIaE_jmQfX#kCid2Q#ilaaFPJXd2F;iK<i[eAnhki3RW5C5\[dQoHT>I=EiA"
    A$ = A$ + ";S[4Jai2;[7OPFWV1In#>Y^hLdNfL7ejl#5h]AnZ#G#A^K;4k^NTa<nFgRf4"
    A$ = A$ + "KofNoll>lnH#[5DReDJEj2BYkRF^>JfEeQ9HafGYeY[9MM\8Nkl95liKR_k0"
    A$ = A$ + "TMU\^5a\ZLHd#Ad=<fQSRT<?E>^UGlfOOgofiN:h]km7`kTk5QgYkkogm^?H"
    A$ = A$ + "nMbmfQFoaAm[ohXNe_Wm;E_^BndVT#:3E9J?N>T\Fc3Q0<H#:RIIMI8I>I_O"
    A$ = A$ + "[e>8NGT:Jgl^jaNW4Zih[i1Zk?eO[^_<4o0ejEK1dOWFfMak=E>2oJPF_N?;"
    A$ = A$ + "T8:gb[mR;Bg8_c\<HohlXiIRHb>MS\cA=lN;WTJ5kM^=Rb4lOe#nb:JYGn91"
    A$ = A$ + "8D\5OeNXRf;K7\bKFQ9c_X_KgTk<e:]`e1IJgkVXFhl_l^fJAUHM2:akfJJ3"
    A$ = A$ + "F;ke2A6T^?3Um:UA;M0aBhJWC#13=hgl?GiL\aF`kUUJSGGD=f8Y>2S=LZ=#"
    A$ = A$ + "g5Jjnm?8KlnmWNF\8kgOJCZbgGSPQF9oASB]oOm1[J]>L1kCUTn0OoQV5]7R"
    A$ = A$ + "h::>=8_6Xmaj;^el#ZHoAf=olGQdW6R_W9YnccE:LPaZ;enYk9`\Z\;]WbM]"
    A$ = A$ + "Y4e6RlUJoH`Q\Y>;NXkI76>i58=L43ZSL82M]hS]MiEXaE[UVCXNPefY>_ZF"
    A$ = A$ + "X5ac\Q4=57mbK<;9H?Mg3c3J2H9l0;^IK[\mRKAaAk`cn_6R]94HaP2<7QJS"
    A$ = A$ + "N?^8]SbTi0<_Qg]BY?n:TUT5=TY<9UfP`Z6;?RliXl9JQ`aAVBSWae8MNGSB"
    A$ = A$ + "OH?<XY;ZD]VQ8VZ>mUaVQKURT81f:SK?_Y3aV`E8PU6LdO1GB;E0SgK84J`d"
    A$ = A$ + "f`ghYTWL#dlB`3A^9_\NIQFY76;Z#JW57TF^L1V3akjK]eA4L?\WlF=:_8SC"
    A$ = A$ + "VKHA^S3>Gh_AN]]X6D;ALi5:#U#aP=4JQC>^FK[[V38TJ?G70\CN#gG^^6E^"
    A$ = A$ + "^D\\]8D`9oXkI5jNaaQ;i4gb8\Y5h;De4\hR]]FL11K1i>lQJ?=0T`Q2LN_a"
    A$ = A$ + "6[oD[?M9O<UIH;bcJB:_WUm]cglFI?9aHOe>Djdfn:U8i<\LB1VTBi0SBnbJ"
    A$ = A$ + "3PhVJl#fZ6_aCAgFd#2MgJMj^UldOmdQIRV:K`j62>Vg8kCddL50#R#TCWW>"
    A$ = A$ + "0jm`]SfEO\45e?Johakd:i^;FU[8:H5]SXXNoWckgUJS]J8j]\N^XjB2^JNO"
    A$ = A$ + "Z^VfJk>URX5Q>3=\LNP3f9`[22ETlQ:JXSE7?64V9jLQ^m9QcFE]NF[XNZF\"
    A$ = A$ + "8dCHaVA]kEL]?>9JWD7]aTEE0WLGP[m1XDJmF[FDG4n<=GRhHBR4CHbF`Qhb"
    A$ = A$ + "#2kT=4KKXX_\XDd7W09K^#g3#Z=YbPQKO0iX]AjCE0ZcfH>R9cD=#lTCC;k\"
    A$ = A$ + "DO:Ml\aAaSWBnTm9<gXkJ7a7:mL1Phk:Q;F>8P_gVba?o96U[mPakI:Pf?ii"
    A$ = A$ + "4PCOHXhOSbM`nKdifnQLKlgLoJF8dmKEWh9V1]b47?LB#AHE`Y1W1Lf`i1W?"
    A$ = A$ + "LA`U0O0hZP[5f<\Eh6PNQM0g<lQPk#^oSJDo#aV]HSL\4NmZ`?E:EJ=CedWR"
    A$ = A$ + "bM8JejgAgknfn`mgoSnm5ljS]O1Nm?iFjES_[l0cN;KPl?nACP;QHj57QNHX"
    A$ = A$ + "Dk9M1KShUoCkAkj=9`QSkW\]n:oGI_e[eSGn>S^oQQ?:l9POOhnPo#hc1o9`"
    A$ = A$ + "31?2lX`O>lG0O=h[3OCh_1n^`O;lg1om`?161N=hO4nO2o_PoEho;l_1_1<^"
    A$ = A$ + "\C1W<JZUGIn]Q_RlVFYfhM<]geFNISJZFffH:[?]ZS1E9_Zc[Ka#mjPbPK1M"
    A$ = A$ + "LcHg0CNbEdgKd[]YginXO?Un>G7iT_R[6jD9UDf[4K=Y9ie4gBUC\7bjBk9o"
    A$ = A$ + "i;=YBJkm=AhLg>8Ie2hB_b[c]]DHNXQ01FjU;BQVhQ;cO5N2\dkLBkm;1fGY"
    A$ = A$ + "KB[aaQXHTM]ijTY?1XEX4L:`Y3W9L^`k5^0hm3G6L5`e0M0M2M1K7^AHW`]2"
    A$ = A$ + "g6m#\RbYd^cclnTAc\TbIV[RVl;[ba_adX`OYAmH3hAZZ<E[O2`V_HSL\4N]"
    A$ = A$ + "A_Vo=lcbmJC<Q9b]94]g_3_9l]hK_h9me_nP9^L24c9b<A>N<kgm]JM#JGll"
    A$ = A$ + "_:=?mHo5`To\\hOo?c4\[9mKgWi9okiI^`kdWA:_KmLji]kc9XOGmlmioOhi"
    A$ = A$ + "GeoAmLkig1?3SLk1Wg=OF;m^ec2[gEOfLmObNNSmfiIofk6?cY0HV`S3fWEa"
    A$ = A$ + "E2eYWK`cGRNN5XFj:ec3`_MGjidcFc_TNNUHF?OCmlZ`[nadC3fDdc[hYcmR"
    A$ = A$ + ">gPW?Kml:`aMIji1`J`gbiY`fl7YWG9fj7E?_:lkoNH\QK4a4:BAh\gh:;B7"
    A$ = A$ + "V`gLaX7g]RNKk6mmf?NIWKMWMg1Nbj`H8k16P?f?fR>aL1>ElC<4T[K3mTCn"
    A$ = A$ + "cK5oKK`:`?]RM^gN6HMmfoFk<kYVU77lHKU>QFKm4JK5]ejTQ6G>>0dSWc^h"
    A$ = A$ + "Q=;n6^l>kO7MeK?Ic>I]70kC4jaG=h^38lOIbQOZ`4HBIZdDUYJcd<eHV^YF"
    A$ = A$ + "CMVIHVYYNc\<Y=cfdPI>V<ViJJd<?cl=;`\#cR<;f\4CCV\84VZW8ZoGRW7Z"
    A$ = A$ + "VUJbSak?8lAP?3LG`O<lUQ_8V?`mIF6V;`MSAnoP`nPO1<:l5hWLZ3im\CmS"
    A$ = A$ + "1G?b:XWNZm0ONTULS#O<kIWX4QldCMGHlIdC?eW6cahfQmPAZm<`3K:HJf\L"
    A$ = A$ + "caH>FcaI>NC;`WcL2VCdLB`7e\2C[Vf<5=[dDbLbVEIF]iD<W:Z?lY<WVI=`"
    A$ = A$ + "SH>Mh?0ndVgSi<<[eLVVcbLfVcaL^VeI>?cj=_GckcLnV=H^0c5J^8c6=_Oc"
    A$ = A$ + "5K^4cUJ^<cUKn0Vf=GQi:=GUiZ=GSi3J^FceIj`\9cV=QV>=Ka\Ecf<MI^Nc"
    A$ = A$ + "=Hjf\MC?VN=mI^ACoVMH6`\Cc=I^Ic]H^Ec^<O8c^=gVif=gQI?VO?cMJn`V"
    A$ = A$ + "1=OTZgI?M]2lUNlLdS]Z7KC?FD?^BmH9mh9[7GUNLejaCA?NVjacB?NfjacE"
    A$ = A$ + "?^>iH[jhgZ>^]ZSK[jhfZ>^]ZSK[jhfZ>^]ZSK[jhfZ>^]ZSK[jhfZ>oJE7o"
    A$ = A$ + "FeaOEjacDaScZ]:?_>fnfkXb;MKM>#7EN9M]e]gA`6gFGl_Fl<?U:kXknfF7"
    A$ = A$ + "E6fIg3dAeMfg>jZkNkYbM`]JP>fI#OK[[JjlFfLgM\m`=e=eWf`AXZnjL78`"
    A$ = A$ + "ZYSnk_gK^k>gb0EcW]cnV>O\o^fjf6#na`N_iNTcfD_3\]JdV5fCM^cfd>jT"
    A$ = A$ + "1KK]N:C_gn7HKm^eNkYS^[[[N60]XdiV70=ZDKWgh>kjVjXk>kIcMFifjMWk"
    A$ = A$ + "XcIdOWgDgm^e^fL7MgC_3<MZaK]o>jNPnLW^Y1VfU\^F9aQE#WdZNb:LWDdN"
    A$ = A$ + "BKfCFYmTEK?iD\WLbfCFUmTBj9[d2Wf\M_TM8:IQLA;LJcn=]IKCKFhDbRZ["
    A$ = A$ + "dfhRFdX=g9fA_=;nDdMRmWFYM8Je=XF8gV5EGY[aF8_B;n\Bglb2iEJkN9g4"
    A$ = A$ + "d1WE:ZKm]Y^kMcg#e8_T>FYLEgKA>fo0je3\S]eAHWEbo]j`KP?FcFjZk^k<"
    A$ = A$ + "LCmN;CG>[OTSGm0mgE7KMWm97kG_>\7iHgKYZ=gEoK^k>[Y[N^Y=]C\C3#WY"
    A$ = A$ + "Og>fNGXlH7K^CD0jVLG4\SMfCEKYc]SR#YXoDi>j37lDK^kM^Y:gFWMP3AHG"
    A$ = A$ + "M\mNk9\f]_cMX2EM>C_cAIOa=ehScNbHoGSl3nVg6Mdooo4noEAM%%h1"
    btemp$ = ""
    For i& = 1 To Len(A$) Step 4: B$ = Mid$(A$, i&, 4)
        If InStr(1, B$, "%") Then
            For C% = 1 To Len(B$): F$ = Mid$(B$, C%, 1)
                If F$ <> "%" Then C$ = C$ + F$
            Next: B$ = C$: End If: For j = 1 To Len(B$)
            If Mid$(B$, j, 1) = "#" Then
        Mid$(B$, j) = "@": End If: Next
        For t% = Len(B$) To 1 Step -1
            B& = B& * 64 + Asc(Mid$(B$, t%)) - 48
            Next: X$ = "": For t% = 1 To Len(B$) - 1
            X$ = X$ + Chr$(B& And 255): B& = B& \ 256
    Next: btemp$ = btemp$ + X$: Next
    BASFILE$ = _Inflate$(btemp$, 25152): btemp$ = ""
    _Font _LoadFont(BASFILE$, size, "memory, monospace")
End Sub

Print this item