Utility Scripts

Installing the pfxbrick python package also installs a collection of useful utility scripts into your python environment path. These command line scripts can be launched directly from your system’s terminal shell / command prompt.

File System Utilities

pfxdir

Show file system directory on PFx Brick.

$ pfxdir -h
usage: pfxdir [-h] [-s SERIALNO] [-c]

PFx Brick file directory listing

optional arguments:
-h, --help            show this help message and exit
-s SERIALNO, --serialno SERIALNO
                        Specify PFx Brick with serial number (if more than one
                        connected)
-c, --colour          Print directory listing in colour
$ pfxdir
ID Name                       Size    Attr    User1    User2    CRC32 Start Ext Attr
  1 ShortRelease1.wav          89.4 kB 0000 00015D2E 0000002C 9C182DB0  00AB 01
  0 chirp11k16.wav             66.2 kB 0001 00010266 0000002C E62906FE  09FC 00
240 Decel21.wav                66.1 kB 0060 00010238 0000002C AF9852B0  0270 F0 Decel 2-1
241 Decel32.wav                66.1 kB 0064 00010238 0000002C AF9852B0  01DC F1 Decel 3-2
242 Decel43.wav                66.1 kB 0068 00010238 0000002C AF9852B0  0180 F2 Decel 4-3
224 Notch1Loop.wav            209.0 kB 0020 00033030 0000002C AAAC5DE9  012F E0 Loop 1
225 Notch2Loop.wav            205.7 kB 0024 00032370 0000002C 7121B4E2  0FB0 E1 Loop 2
226 Notch3Loop.wav             66.1 kB 0028 00010238 0000002C AF9852B0  0ECA E2 Loop 3
227 Notch4Loop.wav             66.1 kB 002C 00010238 0000002C E80E4426  0EDB E3 Loop 4
232 Accel12.wav               341.2 kB 0040 000534D0 0000002C 0B2165F0  0E65 E8 Accel 1-2
233 Accel23.wav                66.1 kB 0044 00010238 0000002C AF9852B0  0C06 E9 Accel 2-3
234 Accel34.wav                66.1 kB 0048 00010238 0000002C AF9852B0  0C17 EA Accel 3-4
250 DirChange.wav              44.8 kB 0000 0000AF04 0000002C 2655F9DF  0C28 FA Dir Change
251 SetOff.wav                180.3 kB 0000 0002C00C 0000002C 78B0598B  0BD9 FB Set Off
254 Brake.wav                 165.9 kB 0000 000287B6 0000002C 8D664E41  0AA2 FE Brake
208 L1Chuff11.wav              66.1 kB 0000 00010238 0000002C 6533518C  09DC D0 Gated Loop 11
212 L2Chuff21.wav              66.1 kB 0000 00010238 0000002C 6533518C  09C5 D4 Gated Loop 21
216 L3Chuff31.wav              37.1 kB 0000 000090DE 0000002C F87F4D22  0966 D8 Gated Loop 31
220 L4Chuff41.wav              24.9 kB 0000 00006126 0000002C 1C0194A5  0941 DC Gated Loop 41
209 L1Chuff12.wav              66.1 kB 0000 00010238 0000002C 0C1867FE  0914 D1 Gated Loop 12
213 L2Chuff22.wav              66.1 kB 0000 00010238 0000002C 0C1867FE  08A0 D5 Gated Loop 22
217 L3Chuff32.wav              37.1 kB 0000 000090DE 0000002C 48A7A5E5  083C D9 Gated Loop 32
221 L4Chuff42.wav              25.0 kB 0000 00006154 0000002C 84356417  081D DD Gated Loop 42
210 L1Chuff13.wav              66.1 kB 0000 0001020C 0000002C 6761445C  07EF D2 Gated Loop 13
214 L2Chuff23.wav              66.1 kB 0000 0001020C 0000002C 6761445C  0763 D6 Gated Loop 23
218 L3Chuff33.wav              37.1 kB 0000 000090DE 0000002C E5FDE1F2  0709 DA Gated Loop 33
222 L4Chuff43.wav              25.0 kB 0000 00006154 0000002C F89C7790  06E6 DE Gated Loop 43
211 L1Chuff14.wav              66.1 kB 0000 0001020C 0000002C 73E1E871  06B4 D3 Gated Loop 14
215 L2Chuff24.wav              66.1 kB 0000 0001020C 0000002C 73E1E871  0636 D7 Gated Loop 24
219 L3Chuff34.wav              37.1 kB 0000 000090DE 0000002C C17B64C0  05D8 DB Gated Loop 34
223 L4Chuff44.wav              24.9 kB 0000 00006126 0000002C 68782357  05B6 DF Gated Loop 44
  2 ShortRelease2.wav         110.7 kB 0000 0001B036 0000002C 6B93834B  02E5 02
  3 ShortRelease3.wav         138.1 kB 0000 00021B5C 0000002C 5B6ECDAA  0163 03
  4 Whistle1.wav              153.0 kB 0000 00025596 0000002C 5DAC6F9B  0F46 04
  5 Whistle2.wav               67.4 kB 0000 0001070C 0000002C 77DA7986  0CA5 05
  6 SlowBell.wav               54.9 kB 0000 0000D61E 0000002C D0C95492  0AFA 06
  7 FastBell.wav               68.7 kB 0000 00010C0A 0000002C 6C331841  092D 07
  8 Coupler1.wav               35.7 kB 0002 00008B46 0000002C 7DC4A0F9  077A 08
  9 Coupler2.wav              175.6 kB 0000 0002ADC8 0000002C 4CE8022A  0595 09
 16 startup.pfx                 2.7 kB 3080 00000000 00000000 4B121299  043C 10
40 files, 3473.4 kB used, 13287.4 kB remaining

pfxcat

Dump the contents of a file to the console. Similar to the unix cat or Windows type command.

$ pfxcat -h
usage: pfxcat [-h] [-s SERIALNO] file

PFx Brick print file contents

positional arguments:
file                  file name or file ID to show contents

optional arguments:
-h, --help            show this help message and exit
-s SERIALNO, --serialno SERIALNO
                        Specify PFx Brick with serial number (if more than one
                        connected)
$ pfxcat my_script.txt
#
# Looping test
#
set $A = 0.1
set $B = 0.1
set $C = 0.5

light all off
repeat 8 {
    light [1] on fade $A
    wait $B
    light [1] off fade $A
    wait $C
}
light all off
$

pfxrm

Removes a file from the PFx Brick file system.

$ pfxrm -h
usage: pfxrm [-h] [-s SERIALNO] file

remove a file from the PFx Brick

positional arguments:
file                  file name or file ID to remove

optional arguments:
-h, --help            show this help message and exit
-s SERIALNO, --serialno SERIALNO
                        Specify PFx Brick with serial number (if more than one
                        connected)

pfxget

Gets a file from the PFx Brick and copies it to your local file system.

$ pfxget -h
usage: pfxget [-h] [-s SERIALNO] file [dest]

copy a file from the PFx Brick to host computer

positional arguments:
file                  is file ID or filename to copy
dest                  is optional local file path override for copied file

optional arguments:
-h, --help            show this help message and exit
-s SERIALNO, --serialno SERIALNO
                        Specify PFx Brick with serial number (if more than one
                        connected)
$ pfxget GMDLoop1.wav
Copying file GMDLoop1.wav as GMDLoop1.wav from brick...
GMDLoop1.wav ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100.0% • 33.3/33.3 KB • 28.4 kB/s • 0:00:00
$ pfxget GMDLoop1.wav ~/tmp/loop1.wav
Copying file GMDLoop1.wav as /Users/fxbricks/tmp/loop1.wav from brick...
/Users/fxbricks/tmp/loop1.wav ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100.0% • 33.3/33.3 KB • 28.3 kB/s • 0:00:00

pfxput

Copies a file from your local file system to the PFx Brick.

$ pfxput -h
usage: pfxput [-h] [-s SERIALNO] file [dest]

copy a file to the PFx Brick from host computer

positional arguments:
file                  is the local filename to copy
dest                  is optional file ID instead of next available ID

optional arguments:
-h, --help            show this help message and exit
-s SERIALNO, --serialno SERIALNO
                        Specify PFx Brick with serial number (if more than one
                        connected)
$ pfxput ~/tmp/loop1.wav
Copying file loop1.wav to PFx Brick...
loop1.wav ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100.0% • 33.3/33.3 KB • 15.6 kB/s • 0:00:00
$ pfxput ~/tmp/loop1.wav 10
Copying file loop1.wav as 10 to PFx Brick...
loop1.wav ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100.0% • 33.3/33.3 KB • 15.6 kB/s • 0:00:00

Copying a file with the same filename as a file that is on the PFx Brick will replace it.

$ pfxput ~/tmp/loop1.wav
Replacing file loop1.wav on PFx Brick...
loop1.wav ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100.0% • 33.3/33.3 KB • 23.1 kB/s • 0:00:00

pfxrename

Renames a file on the PFx Brick file system.

$ pfxrename -h
usage: pfxrename [-h] [-s SERIALNO] file newname

Rename a file on the PFx Brick

positional arguments:
file                  file name or file ID to rename
newname               new name to assign to file

optional arguments:
-h, --help            show this help message and exit
-s SERIALNO, --serialno SERIALNO
                        Specify PFx Brick with serial number (if more than one
                        connected)
$ pfxrename GMDLoop1.wav NotchLoop1.wav
Renamed file GMDLoop1.wav to NotchLoop1.wav

General Purpose Utilities

pfxinfo

Retrieves basic information from any connected PFx Bricks.

$ pfxinfo -h
usage: pfxinfo [-h] [-c]

Show information for all attached PFx Bricks

optional arguments:
-h, --help    show this help message and exit
-c, --config  Show configuration details
_images/pfxinfo.png _images/pfxinfoconfig.png

pfxscan

Peforms a scan for any available PFx Bricks advertising on Bluetooth. For each PFx Brick device it finds, it connects and retrieves its identity and operating status.

$ pfxscan -h
usage: pfxscan [-h] [-s SCANTIME] [-t TIMEOUT]

Scan for PFx Bricks advertising on Bluetooth

optional arguments:
-h, --help            show this help message and exit
-s SCANTIME, --scantime SCANTIME
                        Time interval (seconds) to scan for advertising PFx Bricks, default=10
-t TIMEOUT, --timeout TIMEOUT
                        Timeout interval (seconds) to wait while connecting to a PFx Brick, default=15

pfxevents

Shows the event/action look up table on the PFx Brick. The utility can also be used to clear the contents of the table.

$ pfxevents -h
usage: pfxevents [-h] [-cs] [-cj] [-cu] [-ca] [-r] [-i] [-s SERIALNO]

PFx Brick print event/action table

optional arguments:
-h, --help            show this help message and exit
-cs, --clear-speed    Clear actions for speed remote
-cj, --clear-joystick
                        Clear actions for joystick remote
-cu, --clear-startup  Clear startup actions
-ca, --clear-all      Clear all actions
-r, --raw             Show event/action table in raw numeric format
-i, --ir              Show event/action table grouped by IR channel
-s SERIALNO, --serialno SERIALNO
                        Specify PFx Brick with serial number (if more than one
                        connected)
$ pfxevents
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ IR Speed Remote                                                          ┃
└──────────────────────────────────────────────────────────────────────────┘
Add   Evt               Ch    Action
0x00: L + R Button     Ch 1 : Motor Ch A B Emcy Stop
0x01: L + R Button     Ch 2 : Motor Ch A B Emcy Stop
0x02: L + R Button     Ch 3 : Motor Ch A B Emcy Stop
0x03: L + R Button     Ch 4 : ---
0x04: L Button         Ch 1 : Motor Ch A Stop
0x05: L Button         Ch 2 : Motor Ch A Stop
0x06: L Button         Ch 3 : Motor Ch A Stop
0x07: L Button         Ch 4 : ---
0x08: R Button         Ch 1 : Motor Ch A Change Dir
0x09: R Button         Ch 2 : Motor Ch B Stop
0x0A: R Button         Ch 3 : Motor Ch B Stop
0x0B: R Button         Ch 4 : ---
0x0C: L Wheel Inc      Ch 1 : Motor Ch A Inc Speed
0x0D: L Wheel Inc      Ch 2 : Motor Ch A Inc Speed (bi-dir)
0x0E: L Wheel Inc      Ch 3 : Motor Ch A Inc Speed (bi-dir)
0x0F: L Wheel Inc      Ch 4 : Light Ch 1 2 3 4 5 6 7 8 Inc Bright
0x10: L Wheel Dec      Ch 1 : Motor Ch A Dec Speed
0x11: L Wheel Dec      Ch 2 : Motor Ch A Dec Speed (bi-dir)
0x12: L Wheel Dec      Ch 3 : Motor Ch A Dec Speed (bi-dir)
0x13: L Wheel Dec      Ch 4 : Light Ch 1 2 3 4 5 6 7 8 Dec Bright
0x14: R Wheel Inc      Ch 1 : Motor Ch B Inc Speed (bi-dir)
0x15: R Wheel Inc      Ch 2 : Motor Ch B Inc Speed (bi-dir)
0x16: R Wheel Inc      Ch 3 : Motor Ch B Inc Speed (bi-dir)
0x17: R Wheel Inc      Ch 4 : Sound Inc Volume
0x18: R Wheel Dec      Ch 1 : Motor Ch B Dec Speed (bi-dir)
0x19: R Wheel Dec      Ch 2 : Motor Ch B Dec Speed (bi-dir)
0x1A: R Wheel Dec      Ch 3 : Motor Ch B Dec Speed (bi-dir)
0x1B: R Wheel Dec      Ch 4 : Sound Dec Volume
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Dual Joystick Remote                                                     ┃
└──────────────────────────────────────────────────────────────────────────┘
Add   Evt               Ch    Action
0x1C: L Joy Fwd        Ch 1 : Sound Play Once "Whistle1.wav" (4)
0x1D: L Joy Fwd        Ch 2 : Sound Play Once "Coupler1.wav" (8)
0x1E: L Joy Fwd        Ch 3 : ---
0x1F: L Joy Fwd        Ch 4 : Light Ch 1 2 3 4 5 6 7 8 Inc Bright
0x20: L Joy Rev        Ch 1 : Sound Play Once "Whistle2.wav" (5)
0x21: L Joy Rev        Ch 2 : Sound Play Once "Coupler2.wav" (9)
0x22: L Joy Rev        Ch 3 : Motor Ch A Set Speed
0x23: L Joy Rev        Ch 4 : Light Ch 1 2 3 4 5 6 7 8 Dec Bright
0x24: R Joy Fwd        Ch 1 : Sound Play Repeat "SlowBell.wav" (6)
0x25: R Joy Fwd        Ch 2 : ---
0x26: R Joy Fwd        Ch 3 : ---
0x27: R Joy Fwd        Ch 4 : Sound Inc Volume
0x28: R Joy Rev        Ch 1 : Sound Play Repeat "FastBell.wav" (7)
0x29: R Joy Rev        Ch 2 : ---
0x2A: R Joy Rev        Ch 3 : Motor Ch B Set Speed
0x2B: R Joy Rev        Ch 4 : Sound Dec Volume
0x2C: L Joy Ctr        Ch 1 : Motor Ch A Stop
0x2D: L Joy Ctr        Ch 2 : Motor Ch A Stop
0x2E: L Joy Ctr        Ch 3 : Motor Ch A Stop
0x2F: L Joy Ctr        Ch 4 : ---
0x30: R Joy Ctr        Ch 1 : Motor Ch B Stop
0x31: R Joy Ctr        Ch 2 : Motor Ch B Stop
0x32: R Joy Ctr        Ch 3 : Motor Ch B Stop
0x33: R Joy Ctr        Ch 4 : ---
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ EV3 Remote                                                               ┃
└──────────────────────────────────────────────────────────────────────────┘
Add   Evt               Ch    Action
0x34: EV3 Beacon       Ch 1 : ---
0x35: EV3 Beacon       Ch 2 : ---
0x36: EV3 Beacon       Ch 3 : ---
0x37: EV3 Beacon       Ch 4 : ---
0x38: Test Evt         Ch 1 : Motor Ch A Change Dir
0x39: Test Evt         Ch 2 : ---
0x3A: Test Evt         Ch 3 : ---
0x3B: Test Evt         Ch 4 : ---
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Startup Events                                                           ┃
└──────────────────────────────────────────────────────────────────────────┘
Add   Evt               Ch    Action
0x3C: Startup Evt 1    Ch 1 : ---
0x3D: Startup Evt 2    Ch 2 : ---
0x3E: Startup Evt 3    Ch 3 : ---
0x3F: Startup Evt 4    Ch 4 : ---
0x40: Startup Evt 5    Ch 1 : ---
0x41: Startup Evt 6    Ch 2 : ---
0x42: Startup Evt 7    Ch 3 : ---
0x43: Startup Evt 8    Ch 4 : ---
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Other Events                                                             ┃
└──────────────────────────────────────────────────────────────────────────┘
Add   Evt               Ch    Action
0x44: Button           Ch 1 : ---
0x45: Long Button      Ch 2 : ---
0x46: Button Down      Ch 3 : ---
0x47: Button Up        Ch 4 : ---
0x48: BLE Connect      Ch 1 : ---
0x49: BLE Disconnect   Ch 2 : ---
0x4A: USB Connect      Ch 3 : ---
0x4B: USB Disconnect   Ch 4 : ---

pfxrun

Runs or stops a script file on the PFx Brick.

$ pfxrun -h
usage: pfxrun [-h] [-e] [-s SERIALNO] file

Run a script file on the PFx Brick

positional arguments:
file                  file name or file ID of script

optional arguments:
-h, --help            show this help message and exit
-e, --end             end script execution
-s SERIALNO, --serialno SERIALNO
                        Specify PFx Brick with serial number (if more than one
                        connected)
$ pfxrun 0
Running script file 0
$ pfxrun -e
Script execution stopped

pfxplay

Plays an audio file on the PFx Brick.

$ pfxplay -h
usage: pfxplay [-h] [-l] [-e] [-s SERIALNO] file

Play an audio file on the PFx Brick

positional arguments:
file                  file name or file ID to play

optional arguments:
-h, --help            show this help message and exit
-l, --loop            loop playback repeatedly
-e, --end             end playback
-s SERIALNO, --serialno SERIALNO
                        Specify PFx Brick with serial number (if more than one
                        connected)

pfxrestart

Restarts the PFx Brick or halts all activity without restarting.

$ pfxrestart -h
usage: pfxrestart [-h] [-s SERIALNO] [-x]

Restarts the PFx Brick

optional arguments:
-h, --help            show this help message and exit
-s SERIALNO, --serialno SERIALNO
                        Specify PFx Brick with serial number (if more than one
                        connected)
-x, --halt            Halt all activity on PFx Brick without restarting

pfxmonitor

Shows real time internal state information of a PFx Brick.

$ pfxmonitor -h
usage: pfxmonitor [-h] [-s SERIALNO]

PFx Brick real time monitoring utility. Press <Ctrl>-C to exit monitor.

optional arguments:
-h, --help            show this help message and exit
-s SERIALNO, --serialno SERIALNO
                        Perform monitoring on PFx Brick with specified serial
                        number
$ pfxmonitor
_images/pfxmonitor.png

pfxtest

Performs self-test diagnostics of various functions of the PFx Brick.

$ pfxtest -h
usage: pfxtest [-h] [-c] [+b] [-l] [-lc] [-m] [-f] [+fl] [-a] [+sc] [-t]
            [-s SERIALNO] [-k] [-v]

PFx Brick self test. Most tests are run by default but individual tests can be
omitted using command line arguments.

optional arguments:
-h, --help            show this help message and exit
-c, --config          Omit config flash test
+b, --button          Include button press test
-l, --lights          Omit light channel test
-lc, --combo          Omit combo light effects test
-m, --motors          Omit motor channel test
-f, --files           Omit file transfer test
+fl, --long           Perform long file transfer test
-a, --audio           Omit audio playback test
+sc, --scripts        Include script execution test
-t, --time            Dwell time for each combo light effect test
-s SERIALNO, --serialno SERIALNO
                        Perform test on PFx Brick with specified serial number
-k, --keep            Keep test files on PFx Brick after tests are completed
-v, --verbose         Show verbose details of PFx Brick
$ pfxtest.py
_images/pfxtest.png

Low-Level Utilities

pfxdump

Dumps the contents of the PFx Brick flash memory.

$ pfxdump -h
usage: pfxdump [-h] [-s SERIALNO] address bytes

PFx Brick dump flash memory contents

positional arguments:
address               base address to start showing contents
bytes                 number of bytes to show

optional arguments:
-h, --help            show this help message and exit
-s SERIALNO, --serialno SERIALNO
                        Specify PFx Brick with serial number (if more than one
                        connected)
$ pfxdump ffe000 256
FFE000  88 FF 00 80 FF FF 00 00  00 00 00 00 00 00 00 00   ˆÿ.€ÿÿ..........
FFE010  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ................
FFE020  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ................
FFE030  00 00 00 00 00 00 00 00  01 00 00 00 AB 00 5A 5D   ............«.Z]
FFE040  01 00 53 68 6F 72 74 52  65 6C 65 61 73 65 31 2E   ..ShortRelease1.
FFE050  77 61 76 00 00 00 00 00  00 00 00 00 00 00 00 00   wav.............
FFE060  00 00 00 00 2E 5D 01 00  2C 00 00 00 B0 2D 18 9C   .....]..,...°-.œ
FFE070  FF FF 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ÿÿ..............
FFE080  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ................
FFE090  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ................
FFE0A0  00 00 00 00 00 00 00 00  FF FF 00 00 00 00 00 00   ........ÿÿ......
FFE0B0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ................
FFE0C0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ................
FFE0D0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ................
FFE0E0  FF FF 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ÿÿ..............
FFE0F0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ................

pfxfat

Shows the raw contents of the PFx Brick File Allocation Table (FAT).

$ pfxfat -h
usage: pfxfat [-h] [-s SERIALNO]

Dumps the contents of the PFx Brick file allocation table (FAT)

optional arguments:
-h, --help            show this help message and exit
-s SERIALNO, --serialno SERIALNO
                        Specify PFx Brick with serial number (if more than one
                        connected)
$ pfxfat
000000  FFF3 FFF3 FFF3 FFF3 FFF3 FFF3 FFF3 FFF3  FFF3 FFF3 FFF3 FFF3 FFF3 FFF3 FFF3 FFF3
000010  FFF3 FFF3 FFF3 FFF3 FFF3 FFF3 FFF3 FFF3  FFF3 FFF3 FFF3 FFF3 FFF3 FFF3 FFF3 FFF3
000020  FFF3 FFF3 FFF3 FFF3 FFF3 FFF3 FFF3 FFF3  FFF3 FFF3 FFF3 FFF3 FFF3 FFF3 FFF3 FFF3
000030  FFF3 FFF3 FFF3 FFF3 FFF3 FFF3 FFF3 FFF3  FFF3 FFF3 FFF3 FFF3 FFF3 FFF3 FFF3 FFF3
000040  FFF3 FFF3 FFF3 FFF3 FFF3 FFF3 FFF3 FFF3  FFF3 FFF3 FFF3 FFF3 FFF3 FFF3 FFF3 FFF3
000050  FFF3 FFF3 FFF3 FFF3 FFF3 FFF3 FFF3 FFF3  FFF3 FFF3 FFF3 FFF3 FFF3 FFF3 FFF3 FFF3
000060  FFF3 FFF3 FFF3 FFF3 FFF3 FFF3 FFF3 FFF3  FFF3 FFF3 FFF3 FFF3 FFF3 FFF3 FFF3 FFF3
000070  FFF3 FFF3 FFF3 FFF3 FFF3 FFF3 FFF3 FFF3  FFF3 FFF3 FFF3 FFF3 FFF3 FFF3 FFF3 FFF3
000080  FFF3 FFF3 FFF3 FFF3 FFF3 FFF3 FFF3 FFF3  FFF3 FFF3 FFF3 FFF3 FFF3 FFF3 FFF3 FFF3
...
000F80  FFF3 FFF3 FFF3 FFF3 FFF3 FFF3 FFF3 FFF3  FFF3 FFF3 FFF3 FFF3 FFF3 FFF3 FFF3 FFF3
000F90  FFF3 FFF3 FFF3 FFF3 FFF3 FFF3 FFF3 FFF3  FFF3 FFF3 FFF3 FFF3 FFF3 FFF3 FFF3 FFF3
000FA0  FFF3 FFF3 FFF3 FFF3 FFF3 FFF3 FFF3 FFF3  FFF3 FFF3 FFF3 FFF3 FFF3 FFF3 FFF3 FFF3
000FB0  0FB1 0FB2 0FB3 0FB4 0FB5 0FB6 0FB7 0FB8  0FB9 0FBA 0FBB 0FBC 0FBD 0FBE 0FBF 0FC0
000FC0  0FC1 0FC2 0FC3 0FC4 0FC5 0FC6 0FC7 0FC8  0FC9 0FCA 0FCB 0FCC 0FCD 0FCE 0FCF 0FD0
000FD0  0FD1 0FD2 0FD3 0FD4 0FD5 0FD6 0FD7 0FD8  0FD9 0FDA 0FDB 0FDC 0FDD 0FDE 0FDF 0FE0
000FE0  0FE1 0FE2 FFFF FFF3 FFF3 FFF3 FFF3 FFF3  FFF3 FFF3 FFF3 FFF3 FFF3 FFF3 FFF3 FFF3
000FF0  FFF3 FFF3 FFF3 FFF3 FFF3 FFF3 FFF3 FFF3  FFF3 FFF3 FFF3 FFF3 FFFF FFFF FFFF FFFF