:: examples.btm
:: 21-Feb-2003
::
:: Copyright 2003, JP Software Inc., All Rights Reserved.
:: Published by JP Software Inc., P.O. Box 328, Chestertown, MD  21620,
:: USA, or http://jpsoft.com/
::
:: This sample batch file is distributed with 4DOS, 4NT, and Take Command.
:: To see how it works simply run EXAMPLES from your command processor's
:: prompt.
::
:: You are free to extract items from this batch file for your own use with
:: our products.  However, this file can not be modified and then
:: redistributed; it is distributed only by JP Software Inc.
::
*@echo off
*setlocal
*unalias *
*unset *
on break goto done
on error rem
window max
cls
set _obg=%_bg
set _ofg=%_fg
echo %=n     JP Software presents "%_batchname"
echo %=n     executed in "%_cwds" by
ver /r
echo ``
set t=5
echo Press %=<ESC%=> to cancel, or any other key to proceed...
do until "%i" ne "" .or. %t lt 0
  beep %@eval[110*%t]
  inkey /c /x /p /w1 `     `Time Remaining %@format[02,%t] %%i
  screen -1 0
  set t=%@dec[%t]
enddo
if "%@ascii[%i]" eq "27" goto done
do forever
  cls
  text

  This batch file contains a few basic examples of how the
  various variable functions can be used in your own code.
  Not all functions are available in all environments.
  Use the "L" (LIST) option from most screens to view a
  specific source section. Consult the help files for details.

  Please press a number [0-9] corresponding to one of the categories
  below to see some sample output, or any other key to exit.

      0. LIST this batch file
      1. System Status
      2. Drives and Devices
      3. Files
      4. File names
      5. Strings and characters
      6. Numbers and arithmetic
      7. Dates and times
      8. Utility
      9. View current SETDOS settings

  endtext
  inkey /c /p /w60 /x Which? %%s
  cls
  iff islabel _%s then
    gosub _%s
    echo ``
    echo ``
    iff "%s" ne "0" then
      screen %@eval[%_rows - 2] 5 ``
      echos   Press "L" to LIST this section,
      echos  any other key to return to the menu
      inkey /c /p /x %%i
      if "%i" eq "L" list /t":_%s" %_batchname
    endiff
  else
    leave
  endiff
enddo
:done
cls %_ofg on %_obg
window rest
quit
::
:_0
list %_batchname
return
::
:_1
echo    1.FUNCTIONS: System status
echo ``
setdos /x-5
echo %%@DOSMEM[[b|k|K|m|M]c]    Largest free block:     %@dosmem[bc] bytes
echo %%@EMS[[b|k|K|m|M]c]       Free EMS memory:        %@ems[bc] bytes
echo %%@XMS[[b|k|K|m|M]c]       Free XMS memory:        %@xms[bc] bytes
echo %%@EXTENDED[[b|k|K|m|M]c]  Free extended memory:   %@extended[bc] bytes
echo ``
echo %%@WININFO[n]              Current system info:    (%@wininfo[1])
echo                                   e.g. page size: %@wininfo[7] bytes
echo %%@WINMEMORY[n]            Windows memory info:    (load %@winmemory[0]%%)
echo                       e.g. total physical memory: %@winmemory[1] bytes
echo %%@WINMETRICS[n]           Windows system metrics: %@winmetrics[0]Wx%@winmetrics[1]H screen
setdos /x5
echo ``
set jp=foo
set /m jp=bar
if "%@master[jp]" ne "" echos %%@MASTER[varname]
iff "%@master[jp]" eq "%jp" then
   echo          String "%%JP" expands to "%@master[jp]" in a single master/local environment.
else
   echo          String "%%JP" expands to "%jp" locally (shell #%_shell), but to "%@master[jp]" in the master environment.
endiff
unset /m jp
echo ``
echo %%@READSCR[row,col,len]    The six characters starting with the ninth
echo                           column of the top row of the screen are
echo                           "%@readscr[0,8,6]"
return
::
:_2
echo    2.FUNCTIONS: Drives and devices
echo ``
set i=%_disk
echo  (using current drive "%i:")
echo ``
echo %%@DISKTOTAL[d:,M]     Total disk space: %@format[12,%@disktotal[%i,M]] MB
echo %%@DISKUSED[d:,K]      Used disk space:  %@format[12,%@diskused[%i,K]] KB
echo %%@DISKFREE[d:,b]      Free disk space:  %@format[12,%@diskfree[%i,b]] bytes
echo %%@LABEL[d:]           Volume label:     %@format[13,"%@label[%i]"]
echo %%@CDROM[d:]           Drive is %@if[%@cdrom[%i] eq 0,NOT ,]a CD-ROM
echo %%@READY[d:]           Drive is %@if[%@ready[%i] eq 0,NOT ,]ready
echo %%@REMOTE[d:]          Drive is %@if[%@remote[%i] eq 0,NOT ,]remote
echo %%@REMOVABLE[d:]       Drive is %@if[%@removable[%i] eq 0,NOT ,]removable
echo %%@FSTYPE[d:]          The file system is %@FSTYPE[%i]
echo ``
echo %%@DEVICE[name]
for %i in (NUL: CON: COM1: COM5: CLIP:) (
  echo                       Device %i %@if[%@device[%i] eq 0,NOT ,]found
)
echo %%@LPT[n]              Printer port LPT2 is %@if[%@lpt[2] eq 0,NOT ,]ready
return
:_3
echo    3.FUNCTIONS: Files %@if[%_rows lt 26,(screen 1),]
echo ``
set i=%_batchname
echo  (using this batch file as "filename")
echo ``
if x%@descript[%i] eq x describe "%i" "Batch language examples"
echo %%@DESCRIPT[filename]             %@descript[%i]
echo %%@TRUENAME[filename]             %@truename["%i"]
echo %%@ALTNAME[filename]              %@altname["%i"]
echos %%@ATTRIB[filename,[nrhsda]]      File is %@if[%@attrib["%i",r,p] eq 0,NOT ,]readonly
echo  (%@attrib["%i"])
echo %%@FILEAGE[filename]              %@fileage["%i"]
echo %%@FILEDATE[filename]             %@filedate["%i"]
echo %%@FILETIME[filename]             %@filetime["%i"]
echo %%@LINES[filename]                This file contains %@lines["%i"] lines
echo %%@LINE[filename,n]               Its sixth line is "%@line["%i",5]"
echo                                  and its last line is "%@line["%i",%@lines["%i"]]"
echo ``
echos %%@FILEOPEN[filename,mode]
set jp=%@fileopen[%i,read,b]
echo         Open file for READ in BINARY mode as handle #%jp
echos %%@FILESEEK[n,offset,start]       Move pointer 8 bytes from beginning
echo  (result=%@fileseek[%jp,8,0])
echos                                  Move another 10 bytes
echo  (result=%@fileseek[%jp,10,1])
echo %%@FILEREAD[n [,length]]          Read next 5 bytes: "%@fileread[%jp,5]"
echo %%@FILECLOSE[n]                   Close handle #%jp: result=%@fileclose[%jp]
echo ``
if %_rows lt 26 (
  pause Presss any key for more ...
  cls
  echo    3.FUNCTIONS: Files (screen 2)
  echo ``
)
set i=*.txt
set j=%@filesize[%i,b]
if %j eq -1 set j=0
echo %%@FILESIZE[%i,b]              "%i" files occupy %j bytes
echo %%FILES[%i]                    with %@files[%i] matching file(s)
echo                                  in this "%_cwd\" directory.
echo ``
set i=\*
echo %%@FINDFIRST[filename[,-nrhsda]]  First directory in the root: "%@findfirst[%i,d]"
echo %%@FINDNEXT[filename[,-nrhsda]]   Next directory in the root: "%@findnext[%i,d]"
echo                                  Next directory in the root: "%@findnext[%i,d]"
echo                                  etc.
echo %%@FINDCLOSE[filename]            Close search handle for "%i" (result=%@findclose[%i])
echo ``
set i=%@unique[.]
echo %%@UNIQUE[d:\path]                Create file with unique name: %@filename["%i"]
del /qe %i
return
::
:_4
echo    4.FUNCTIONS: File names
echo ``
set i=%_batchname
echo  (using this batch file as "filename")
echo ``
echo %%@EXT[filename]       Extension only:      %@ext["%i"]
echo %%@FULL[filename]      Name with path:      %@full["%i"]
echo %%@FILENAME[filename]  Name and extension:  %@filename["%i"]
echo %%@NAME[filename]      Name only:           %@name["%i"]
echo %%@PATH[filename]      Path only:           %@path["%i"]
echo %%@LFN[filename]       Long Name:           %@lfn[%i]
echo %%@SFN[filename]       Short Name:          %@sfn[%i]
echo %%@ALTNAME[filename]   Alternate Name:      %@altname[%i]
echo ``
echo %%@EXPAND[filename,[nrhsda]]     The *.TXT files in this directory are:
echo    %@EXPAND[*.txt,-d]
return
::
:_5
echo    5.FUNCTIONS: Strings and characters %@if[%_rows lt 26,(screen 1),]
echo ``
set i=%_dow
echo %%@ASCII[c]                      Numeric ASCII value: "%i" is:
echos                                 ASCII %@ascii[%@instr[0,1,%i]] +
echos  ASCII %@ascii[%@instr[1,1,%i]] +
echo  ASCII %@ascii[%@instr[2,1,%i]]
echos %%@SUBSTR[string,start,length]   The middle character of "%i" is
echo  "%@substr[%i,1,1]"
echos %%@REPEAT[c,n]                   Repeat a character:
echo       %@repeat[-,3] %@repeat[ ,5]-
set i=   %i %_day`   `
echo %%@TRIM[string]                  Remove blanks from "%i": "%@trim[%i]"
set i=Windows
echo %%@INSERT[n,string1,string2]     "%i" becomes "%@insert[4,s of sorr,%i]"
set i=%@random[65,90]
echo %%@CHAR[n]                       ASCII %i is character "%@char[%i]"
echo %%@FORMAT[[-][x][.y],string]     `|`                  `|`
echo               adjust right:     %@format[20,%_date]
echo                                 %@format[20,%@eval[355/113]]
echo                                 %@format[20.5,%@eval[355/113]]
echo                adjust left:     %@format[-20,%_date]
echo                                 %@format[-20,%@eval[355/113]]
echo                                 %@format[-20.5,%@eval[355/113]]
set i=*o[sw]*
echos %%@WILD[str1,str2]               Wildcard "%i" DOES
echo  %@if[%@WILD[%_cwd,%i] eq 0,NOT ,]appear in
echo                                 "%_cwd".
echo ``
if %_rows lt 26 (
  pause Presss any key for more ...
  cls
  echo    5.FUNCTIONS: Strings and characters (screen 2)
  echo ``
)
set i=The bug which you would fright me with, I seek.
echo  (using string "%i",
echo   from William Shakespeare, The Winter's Tale, III,2)
echo ``
echo %%@LEN[string]                 The test string contains %@len[%i] characters.
echo %%@LOWER[string]               "%@lower[%i]"
echo %%@UPPER[string]               "%@upper[%i]"
echo %%@WORDS[["sep",]string]       Number of words: %@words[%i]
echo %%@WORD[["sep",]n,string]      Third word: "%@word[2,%i]"
echos %%@INDEX[string1,string2]      The first "u" is character #
echo %@index["%i",u]
echos %%@INSTR[start,length,string]  The "f" is followed by:
echo  "%@INSTR[%@index["%i",f],15,%i]..."
echo %%@LEFT[n,string]              The leftmost 7 characters are "%@left[7,%i]"
echo %%@RIGHT[n,string]             The rightmost 7 characters are "%@right[7,%i]"
echo %%@REPLACE[str1,str2,str3]     "%@replace[ which you would,s you,%i]"
echo %%@STRIP[chars,string]         No vowels: "%@strip[aeiuo,%i]"
return
::
:_6
echo    6.FUNCTIONS: Numbers and arithmetic
echo ``
set i=%@eval[1234567890 / 100000]
echo  (using an arbitrary number of %i)
echo %%@COMMA[n]          Inserts thousands separators in a number: %@comma[%i]
echo %%@DEC[%%var]         Decremented value of a variable: %@dec[%i]
echo %%@INC[%%var]         Incremented value of a variable: %@inc[%i]
echo ``
echo %%@EVAL[expression]  Arithmetic calculations: 355 / 113 = %@eval[355 / 113=.5] (rounded)
set n=%i
echos %%@INT[n]            Integer part of a number - enter a number:
input /c /x /e /l10 /w30 `` %%n
screen %_row, %@eval[%_column - %@len[%n] - 26]
iff %@numeric[%n] eq 0 then
  beep
  set n=%i
endiff
echo number %n is %@int[%n] `              `
set i=%_4ver
echos %%@NUMERIC[string]   Test if a string is numeric - enter string:
input /c /x /e /l10 /w30 `` %%i
screen %_row, %@eval[%_column - %@len[%i] - 35]
echo string "%i" is numeric: %@numeric[%i] (0=No, 1=Yes)
echos %%@RANDOM[min,max]   Generate a random integer:
do 8 times
  echos  %@random[0,7],
enddo
echo  etc.
echo %%@CONVERT[in,out,value]       Base conversion:
echo                                  decimal (10): %n
echo                                  hexadecimal (16): %@convert[10,16,%n]
echo                                  octal (8): %@convert[10,8,%n]
echo                                  binary (2): %@convert[10,2,%n]
return
::
:_7
echo    7.FUNCTIONS: Dates and times
echo ``
echo  (using the current system date of %_date and time of %_time)
echo %%@DATE[mm-dd-yy]          Convert date to number of days: %@date[%_date]
echo %%@MAKEAGE[date[,time]]    Convert date/time to file date/time: %@makeage[%_date[,%_time]]
echo %%@TIME[hh:mm:ss]          Convert time to number of seconds: %@time[%_time]
echo %%@DAY[mm-dd-yy]           Day of the month: %@day[%_date]
echo %%@DOW[mm-dd-yy]           Day of the week: %@dow[%_date]
echo %%@DOWF[mm-dd-yy]          String day of the week: %@dowf[%_date]
echo %%@DOWI[mm-dd-yy]          Numeric day of the week: %@dowi[%_date]

echo %%@DOY[mm-dd-yy]           Numeric day of the year: %@doy[%_date]
echo %%@MONTH[mm-dd-yy]         Month of the year: %@month[%_date]
echo %%@YEAR[mm-dd-yy]          Year number (2 digits): %@year[%_date]
echo ``
echo  (using an arbitrary number of 1234 days)
echo %%@MAKEDATE[n]           Convert number of days to date: %@makedate[1234]
echo ``
echo  (using an arbitrary number of 1234 seconds)
echo %%@MAKETIME[n]           Convert number of seconds to time: %@maketime[1234]
echo ``
echo  (combining date/time functions)
echo In thirty minutes, the time will be %@maketime[%@eval[%@time[%_time]+1800]]
echo In one week, the date will be %@makedate[%@eval[%@date[%_date]+7]]
return
::
:_8
echo    8.FUNCTIONS: Utility
timer on /3 > nul
echo ``
echo  (using a temporary alias for FORMAT)
alias format=`beep%+echo Too dangerous!`
echo %%@ALIAS[name]    Value of an alias: FORMAT is "%@alias[format]"
unalias format
echo ``
echos %%@IF[condition,true,false]   Evaluates a test condition:
echo  Good %@if[%_hour lt 12,morning,afternoon]!
echo ``
echo  (using this file as input - select a line from the box below)
set i=%_batchname
echos %%@SELECT[file,t,l,b,r,title]  Menu selection:
echo  You selected "%@word[0,%@select[%i,12,2,17,25, This is a test ]]..."
echo ``
echo  (a TIMER was started when you displayed this page)
echo %%@TIMER[n]                    Elapsed time of specified timer: %@timer[3]
echo %%@CLIP[n]                     The first line of your Windows clipboard is:
echo "%@clip[0]"
echo ``
echo * Bonus 1: press "C" in the next 5 seconds to test color rendition
if .%_cmdproc eq .4dos (
  echo * Bonus 2: press "S" in the next 5 seconds to test sound rendition
)
inkey /c /x /p /w5 %%i
screen -1 0 ``%@repeat[ ,66]``
screen -1 0 ``%@repeat[ ,66]``
if .%i eq .C gosub _4color
if %i.%_cmdproc eq s.4dos gosub _montage
return
:_9
echo      SETDOS:
echo ``
SETDOS
return
:_4color
set s=4color
: from 4COLOR.BTM version 1.2 - Oct-10-94
if .%_ansi != .1 (
  echo Display may be incorrect without an ANSI driver
  pause
)
cls whi on bla
text

  This batch file is meant to test the way specific color combinations
  appear on your particular video adapter / monitor configuration.
  The 3-letter abbreviations are those used in color-related commands,
  functions, and directives.  See your documentation or online HELP
  screens for further details.

endtext
set r=9
set c=1
set l=0   1   2   3   4   5   6   7
screen %@eval[%r-2] 6 %l
set l=8   9  10  11  12  13  14  15
screen %@eval[%r-2] 42 %l
set l=bla blu gre red mag cya yel whi
screen %@eval[%r-1] 5 %@upper[%l]
screen %@eval[%r-1] 41 %@upper[%l]
for %%f in ( %l ) (
  set c=5
  set r=%@eval[%r+1]
  for %%b in ( %l ) (
    scrput %r %c %f on %b %f` `
    set c=%@eval[%c+4]
  )
  set c=%@eval[%c+4]
  for %%b in ( %l ) (
    scrput %r %c bri %f on %b %f` `
    set c=%@eval[%c+4]
  )
  set c=%@eval[%c+8]
)
screen %@eval[%r+2] 13 fg ON bg
screen %@eval[%r+2] 49 BRI fg ON bg
screen %@eval[%r+3] 0
return
:_montage
set s=montage
:: adapted from Klaus Meinhard, 12-Dec-94
on break goto mdone
set _mbg=%_bg
set _mfg=%_fg
unset /q _i
cls 0 on 0
alias b=`gosub play %+ beep`
goto toccata
:play
screen 0 0
set ur=%@random[0,%@eval[%_rows-5]]
set uc=%@random[0,%@eval[%_columns-9]]
set lr=%@random[%@eval[%ur+4],%@dec[%_rows]]
set lc=%@random[%@eval[%uc+8],%@dec[%_columns]]
set _col=%@random[1,15]
drawbox %ur %uc %lr %lc 0 0 on 0 fill 0
drawbox %@inc[%ur] %@eval[%uc+2] %@dec[%lr] %@eval[%lc-2] 0 %_col on %_col fill %_col
if %@random[0,15] eq 0 scrput %ur %uc 11 on 0 %@word[",",%@random[0,5],http://jpsoft.com/,JPSOFT,4DOS,4NT,Take Command,4OS2]
return
:toccata
b 880 4 %+b 0 1 %+b 784 1 %+b 698 1 %+b 659 1 %+b 587 1 %+b 554 1 %+b 587 1 %+b 0 2
b 440 2 %+b 0 1 %+b 330 1 %+b 349 1 %+b 277 1 %+b 294 1 %+b 0 2
b 220 4 %+b 0 1 %+b 196 1 %+b 175 1 %+b 165 1 %+b 147 1 %+b 139 1 %+b 147 1 %+b 0 2
b 139 2 %+b 165 2 %+b 196 2 %+b 233 2 %+b 277 2 %+b 330 2 %+b 392 2 %+b 466 2 %+b 554 2
b 659 4 %+b 587 4 %+b 0 4 %+b 277 2
b 294 2 %+b 330 2 %+b 277 2 %+b 294 2 %+b 330 2 %+b 277 2 %+b 294 2 %+b 330 2 %+b 277 2 %+b 294 2 %+b 330 2
b 349 2 %+b 392 2 %+b 330 2 %+b 349 2 %+b 392 2 %+b 330 2 %+b 349 2 %+b 392 2 %+b 330 2 %+b 349 2 %+b 392 2
b 440 2 %+b 466 2 %+b 392 2 %+b 440 2 %+b 466 2 %+b 392 2 %+b 440 2 %+b 0 4 %+b 554 2
b 587 2 %+b 659 2 %+b 554 2 %+b 587 2 %+b 659 2 %+b 554 2 %+b 587 2 %+b 659 2 %+b 554 2 %+b 587 2 %+b 659 2
b 698 2 %+b 784 2 %+b 659 2 %+b 698 2 %+b 784 2 %+b 659 2 %+b 698 2 %+b 784 2 %+b 659 2 %+b 698 2 %+b 784 2
b 880 2 %+b 932 2 %+b 784 2 %+b 880 2 %+b 932 2 %+b 784 2 %+b 880 2 %+b 932 2 %+b 784 2 %+b 880 2 %+b 0 2 %+b 880 2
b 784 2 %+b 932 2 %+b 659 2 %+b 784 2 %+b 932 2 %+b 659 2 %+b 698 2 %+b 880 2 %+b 587 2 %+b 698 2 %+b 880 2 %+b 587 2
b 659 2 %+b 784 2 %+b 523 2 %+b 659 2 %+b 784 2 %+b 523 2 %+b 587 2 %+b 698 2 %+b 466 2 %+b 587 2 %+b 698 2 %+b 466 2
b 523 2 %+b 659 2 %+b 440 2 %+b 523 2 %+b 659 2 %+b 440 2 %+b 466 2 %+b 587 2 %+b 392 2 %+b 466 2 %+b 587 2 %+b 392 2
b 440 2 %+b 523 2 %+b 349 2 %+b 440 2 %+b 523 2 %+b 349 2 %+b 392 2 %+b 466 2 %+b 330 2 %+b 392 2 %+b 466 2 %+b 330 2
b 349 2 %+b 440 2 %+b 294 2 %+b 349 2 %+b 440 2 294 2 %+b 330 2 %+b 392 2 %+b 277 2 %+b 330 2 %+b 392 2 %+b 277 2
b 0 2 %+b 139 2 %+b 165 2 %+b 196 2 %+b 233 2 %+b 277 2 %+b 466 2 %+b 554 2 %+b 659 2 %+b 784 2 %+b 932 2
b 932 4 %+b 466 4 %+b 440 1 %+b 392 1 %+b 349 1 %+b 330 1 %+b 294 1 %+b 277 1 %+b 248 1
b 277 2 %+b 220 2 %+b 277 2 %+b 330 1 %+b 392 1 %+b 349 2 %+b 0 1 %+b 330 2 %+b 349 8 %+b 0 4
b 440 2 %+b 587 2 %+b 659 2 %+b 698 2 %+b 587 2 %+b 659 2 %+b 698 2 %+b 784 2 %+b 659 2
b 698 2 %+b 784 2 %+b 880 2 %+b 698 2 %+b 784 2 %+b 880 2 %+b 988 2 %+b 784 2 %+b 880 2 %+b 698 2 %+b 784 2 %+b 659 2
b 698 2 %+b 587 2 %+b 659 2 %+b 554 2
b 587 2 %+b 440 2 %+b 466 2 %+b 392 2 %+b 440 2 %+b 349 2 %+b 392 2 %+b 330 2
b 349 2 %+b 294 2 %+b 392 2 %+b 330 2 %+b 349 2 %+b 294 2 %+b 330 2 %+b 277 2
b 294 2 %+b 220 2 %+b 233 2 %+b 196 2 %+b 224 2 %+b 175 2 %+b 196 2 %+b 165 2
b 175 2 %+b 147 2 %+b 196 2 %+b 165 2 %+b 175 2 %+b 147 2 %+b 165 2 %+b 139 2
b 147 4 %+b 349 1 %+b 466 1 %+b 349 1
b 330 1 %+b 440 1 %+b 330 1 %+b 294 1 %+b 392 1 %+b 294 1
b 330 1 %+b 440 1 %+b 466 2 %+b 440 2 %+b 392 2
b 440 8 %+b 349 1 %+b 466 1 %+b 349 1
b 330 1 %+b 440 1 %+b 330 1 %+b 294 1 %+b 392 1 %+b 294 1
b 330 1 %+b 440 1 %+b 466 2 %+b 440 2 %+b 233 2 %+b 392 2
b 440 8 %+b 440 1 %+b 392 1 %+b 349 1 %+b 330 1 %+b 294 1 %+b 277 1 %+b 248 1 %+b 294 1
b 220 1 %+b 248 1 %+b 277 1 %+b 294 1 %+b 330 1 %+b 349 1 %+b 392 1 %+b 440 1
b 392 1 %+b 349 1 %+b 330 1 %+b 349 1 %+b 294 1 %+b 349 1 %+b 440 1 %+b 554 1
b 587 1 %+b 440 1 %+b 494 1 %+b 554 1 %+b 587 1 %+b 659 1 %+b 698 1 %+b 784 1 %+b 880 1 %+b 932 4
b 932 2 %+b 880 2 %+b 784 2 %+b 880 4 %+b 698 1 %+b 932 1 %+b 698 1
b 659 1 %+b 880 1 %+b 659 1 %+b 587 1 %+b 784 1 %+b 587 1 %+b 659 1 %+b 880 1
b 932 2 %+b 880 2 %+b 784 2 %+b 880 4 %+b 587 4
b 554 5 %+b 988 3 %+b 440 2 %+b 523 2 %+b 659 1 %+b 784 1 %+b 932 4 %+b 0 2
b 880 1 %+b 784 1 %+b 698 1 %+b 659 1 %+b 698 1 %+b 659 1 %+b 587 1 %+b 554 1
b 587 1 %+b 523 1 %+b 466 1 %+b 440 1 %+b 392 1 %+b 349 1 %+b 330 1 %+b 294 1 %+b 659 16
b 523 2 %+b 659 2 %+b 523 2 %+b 466 2 %+b 523 2 %+b 466 2
b 523 2 %+b 659 2 %+b 523 2 %+b 466 2 %+b 523 2 %+b 466 2
b 554 2 %+b 659 2 %+b 554 2 %+b 466 2 %+b 554 2 %+b 466 2
b 554 2 %+b 659 2 %+b 554 2 %+b 466 2 %+b 554 2 %+b 466 2
b 392 2 %+b 466 2 %+b 392 2 %+b 330 2 %+b 392 2 %+b 330 2
b 392 2 %+b 466 2 %+b 392 2 %+b 330 2 %+b 392 2 %+b 330 2
b 392 2 %+b 466 2 %+b 392 2 %+b 330 2 %+b 392 2 %+b 330 2
b 392 2 %+b 466 2 %+b 392 2 %+b 330 2 %+b 392 2 %+b 330 2
b 277 2 %+b 330 2 %+b 277 2 %+b 233 2 %+b 277 2 %+b 233 2
b 277 2 %+b 330 2 %+b 277 2 %+b 233 2 %+b 277 2 %+b 233 2
b 277 2 %+b 392 2 %+b 277 2 %+b 233 2 %+b 277 2 %+b 233 2
b 277 2 %+b 330 2 %+b 277 2 %+b 233 2 %+b 277 2 %+b 233 2
b 277 2 %+b 330 2 %+b 277 2 %+b 330 2 %+b 392 2 %+b 330 2
b 277 2 %+b 330 2 %+b 277 2 %+b 330 2 %+b 392 2 %+b 330 2
b 277 2 %+b 330 2 %+b 277 2 %+b 330 2 %+b 392 2 %+b 330 2
b 277 2 %+b 330 2 %+b 277 2 %+b 330 2 %+b 392 2 %+b 330 2
b 392 2 %+b 466 2 %+b 392 2 %+b 466 2 %+b 392 2 %+b 466 2
b 392 2 %+b 466 2 %+b 392 2 %+b 466 2 %+b 392 2 %+b 466 2
b 554 2 %+b 466 2 %+b 554 2 %+b 659 2 %+b 554 2 %+b 659 2
b 554 2 %+b 659 2 %+b 554 2 %+b 659 2 %+b 554 2 %+b 659 2 %+b 880 4 %+b 0 2 %+b 880 8
b 784 8 %+b 0 4 %+b 784 4 %+b 0 8
b 587 4 %+b 349 4 %+b 330 8 %+b 294 20 %+b 0 16
:mdone
on break goto done
cls %_mfg on %_mbg
:: examples.btm
