Classic Computer Magazine Archive COMPUTE! ISSUE 144 / SEPTEMBER 1992 / PAGE G35

XLogic. (debugger)
by Richard Penn

Merge and renumbering utilities all have their place, but a good debugger is a tool that no programmer should be without. Although it's not absolutely necessary for short programs, using one can save you a great deal of time when you're writing lengthy code.

XLogic is a BASIC debugging tool that's simple enough to be used by novices, yet powerful enough to meet the needs of even the most demanding programmer. It has no gimmicks, only the bare essentials--the bare essentials to locate and blow any bug off the silicon landscape, that is.

First, it enhances the LIST command to display in color the paths of all GOTO statements, IF/THEN statements, and other branches. This lets you follow a program's logic at a glance, even if you're viewing someone else's program for the first time. A description doesn't do justice to its power. After using it, you'll feel half-blind looking at a conventional listing.

If you need a closer look at program flow, the trace routine shows each line and highlights every statement as it executes. Up to four variables (including array variables) can be displayed inside the trace window. The window can be placed at the top or at the bottom of your screen so that it won't overwrite something important. Finally, the speed of the trace can be varied, and the code can be single-stepped. You can also dump all the variables and functions, color-coded by type, into memory.

Typing It In

XLogic is written entirely in machine language. To enter it, you'll need to use MLX, our machine language entry program; see "Typing Aids" elsewhere in this section. When MLX prompts you, respond with the values given below.

Starting address: C000 Ending address: CBF7

When you've finished typing, be sure to save a copy of the program before exiting MLX.

Four Commands

To use XLogic, just follow these simple steps. Load the program with a command of the following form: LOAD "XLOGIC",8,1. Of course, you should replace XLOGIC with whatever name you used when you saved the XLogic data. Type NEW. Activate the program with SYS 49152.

XLogic's features are easily accessed with four new commands that work only in direct mode. You're limited to one XLogic command per line, which can be abbreviated by typing the left arrow ([arrow left]) and the first letter (or as many characters after these initial two as you like).

Both [arrow left]) LIST and [arrow left]) TRACE activate debugging modes, as opposed to most commands that perform an immediate function. You can program normally in either mode. Apart from the enhanced features, you won't even know one of these features is on unless you list or run a program,

Only one mode can be used at a time, so activating a new mode will replace the current one. Run/Stop-Restore won't disable a mode. To turn off either mode, use the [arrow left]) OFF command.

The command [arrow left] VAR is always available and is unaffected by OFF. XLogic itself will remain active until you shut off the computer.

The command [arrow left] LIST turns on branch mapping. A branch is any point where a BASIC program jumps to another line and is done with the GOTO, GOSUB, IF/THEN, ON/GOTO, or ON/GOSUB commands.

Most cross-reference utilities print a line-number list, which is not very useful. XLogic highlights branches in color within the listing so that you can see where each branch goes and continue programming normally at the same time. In this mode, the LIST command changes the screen color to black and lists everything in light blue, but it prints all branches and the lines they reference in matching colors.

For example, let's look at this simple program. 10 PRINT "XLOGIC" 20 PRINT 30 FOR T = 1 TO 10 : NEXT : GOTO 10 With LIST, GOTO 10, all of line 10 would be listed in white. The rest of the program would be light blue.

The key to reading a colored listing is the line number, which is always light blue unless some other line branches to it. Whenever you see a line number (and the rest of the line, since lines match their line-number color) that isn't light blue, you know that there's at least one command somewhere in the program that jumps to this line. It's then a simple matter of matching up all the branch commands of the same color with the line that's that color. If all this sounds confusing, don't worry; it will become obvious when you see it on the screen

The 64 has 16 colors, so there's a limit to how many branches can be mapped. Since light blue is the neutral color and characters are invisible if they're the same color as the screen, that leaves 14 free. However, [arrow left] LIST also uses reverse video, so a total of 28 different branches can be displayed. if there are more than 28 branches, the surplus branches are all highlighted in light blue reverse video. So although they're still shown, you can't tell different jumps apart. This isn't a serious problem, because [arrow left] LIST only cross-references the lines you list.

If you type LIST alone, the entire program is cross-referenced. But if you type a command such as LIST 100-200, only the lines 100-200 are cross-referenced.

Since [arrow left] LIST cross-references branches on a first-come-first-served basis, don't be surprised if the colors change when you're listing different groups of lines. Although the colors may be different, the program listing is still accurate.

There are two error messages that you can get with [arrow left] LIST The first is an UNDEFINED BRANCH error message with the offending line printed beneath. This happens when there's a branch command with a syntax error somewhere in the program, such as GOTO with a missing line number. Simply cursor up to the line, correct it, and list again.

It's rare that anyone will see the second error, which occurs when there are too many branches. This shouldn't be confused with the 28-branch color limit. Although [arrow left] LIST is able to display only 28 different branches, it can handle over 1300 internally. Few p the 64 need this many branches, but

LIST will inform you if you ever exceed this limit! Should that occur, simply list smaller groups of lines.

The command [arrow left] TRACE turns on the execution trace. This mode displays a trace window whenever you run a program. Use it to see exactly what a program is doing as it runs and to find out when and why variables are changing.

Also, if you get a syntax error but can't tell what's wrong with the line in question, [arrow left] TRACE will show you exactly where the program stopped.

The command [arrow left] TRACE prompts you for several settings. If you change your mind during this procedure, press Run/Stop-Restore to cancel. First, it asks you if you want the trace window to be at the top or at the bottom of the screen. This lets you put it where it won't overwrite anything important. Next, you're prompted to select the execution speed. You have the choice of running the program at the fastest possible speed (normal), slower (delay), or slowest, (single step) through the code.

When single-stepping, hit any key on the keyboard (hold it down for continuous execution) to execute the next command. If you single-step a program that waits for a keypress with the GET command, remember to hold down the key the program expects when the trace reaches the GET (It's better to avoid single-stepping programs with many GET commands.)

Regardless of which speed you select, keep in mind that a traced program runs slower than normal, so hold down all keys including Run/Stop until they catch.

You also have the option of displaying up to four variables during the trace. To enter the variables, type them in the order that you want them to appear and separate them with a slash (/). An entry such as A/B/C/ BOX(A,B,C) is legal and still counts as only four variables, since BOX(A,B,C) prints only one value.

If you accidentally enter an illegal variable and run the program, the trace will stop and display an error beside the variable it doesn't understand. If this happens, use the [arrow left] TRACE command again to enter the correct variables. Also, strings must be less than 36 characters in length, or they won't fit inside the window.

To try out the various trace options, enter and run this short program. 10 A=1: B=2: C=3: D=4: E=5: F=6: G=7: H=8: GOTO 10

The command -TRACE uses light blue to display the current line and variables and highlights commands in white as they're executed. If these colors conflict with your program's screen color, change it temporarily while you debug your program. Also note that the LIST command won't work properly with [arrow left] TRACE on.

The command [arrow left] VAR dumps all non-array variables and functions in memory, color-coded by variable type, to the screen. Functions are followed by the notation FN.

The command [arrow left] OFF disables all XLogic commands except for [arrow left] VAR.

Debugging BASIC with ML

XLogic is a BASIC debugging tool. If your program uses any machine language routines, there might be a memory conflict.

Note that XLogic resides from 49152 to 52208, downloads and modifies BASIC ROM, and changes several vectors. It also uses all of the RAM underneath Kernal ROM and part of the cassette buffer as work areas. ML is safe to use with XLogic, provided that it isn't located in any of these potential trouble spots.

XLOGIC

C000:4C B8 CA 08 8D 34 03 8E 81 C008:35 03 8C 36 03 AD 4B 03 42 C010:D0 46 A2 FF B5 00 9D F1 BA C018:CB CA E0 02 D0 F6 A9 01 25 C020:8D 4B 03 A5 5F 85 FD A5 A8 C028:60 85 FE A5 15 8D 40 03 D7 C030:C9 FF D0 08 A9 FE 8D 3F D4 C038:03 4C 41 C0 A5 14 8D 3F 5A C040:03 20 A2 C1 A2 FF BD F1 3E C048:CB 95 00 CA E0 02 D0 F6 69 C050:A9 00 85 FD A9 F0 85 FE 52 C058:A9 00 8D 3A 03 8D 21 D0 65 C060:A9 0E 8D 86 02 A9 00 85 90 C068:FB A9 E0 85 FC A0 00 C8 F9 C070:20 DE C0 C9 FF D0 05 A9 65 C078:0E 4C BF C0 88 20 DE C0 5B C080:CD 35 03 D0 09 C8 20 DE 2E C088:C0 CD 34 03 F0 0E A2 03 9C C090:E6 FB D0 02 E6 FC CA D0 50 C098:F7 4C 6D C0 C8 20 DE C0 28 C0A0:C9 00 D0 0C A9 0E 8D 86 09 C0A8:02 A9 12 85 C7 4C C2 C0 E5 C0B0:C9 0F 90 07 38 E9 0E A2 85 C0B8:12 86 C7 AA BD 03 CB 8D A7 C0C0:86 02 AD 86 02 8D 4D 03 08 C0C8:A5 C7 8D 4C 03 AD 34 03 BF C0D0:AE 35 03 AC 36 03 28 85 B5 C0DB:62 86 63 4C D1 BD 78 A2 77 C0E0:34 86 01 B1 FB A2 36 86 B6 C0E8:01 58 60 08 8D 37 03 8E 6B C0F0:38 03 8C 39 03 A6 D4 D0 A1 C0F8:61 AE 3A 03 E0 01 90 25 9F C100:C9 3A D0 13 A9 00 8D 3A E4 C108:03 AD 4C 03 85 C7 AD 4D 26 C110:03 8D 86 02 4C 5A C1 E0 99 C118:02 D0 3F C9 2C D0 03 20 20 C120:67 C1 4C 5A C1 4C 57 C4 A9 C128:29 C9 8D F0 25 C9 A7 D0 E3 C130:12 C8 B1 5F C9 20 F0 F9 C5 C138:C9 30 90 1E C9 3A B0 1A 53 C140:4C 52 C1 C9 91 D0 13 A9 F2 C148:02 8D 3A 03 20 67 C1 4C 16 C150:5A C1 A9 01 8D 3A 03 20 32 C158:67 C1 AD 37 03 AE 38 03 6F C160:AC 39 03 28 4C 1A A7 A9 2F C168:00 85 C7 A0 00 78 A2 34 AB C170:86 01 B1 FD A2 36 86 01 89 C178:58 C9 00 D0 0C A9 0E 8D 58 C180:86 02 A9 12 85 C7 4C 9B 9D C188:C1 C9 0F 90 07 38 E9 0E 45 C190:A2 12 86 C7 AA BD 03 CB 55 C198:8D 86 02 E6 FD D0 02 E6 51 C1A0:FE 60 A9 FF 8D 00 E0 8D AC C1A8:01 E0 A9 01 8D 3B 03 A9 33 C1B0:00 8D 3C 03 8D 4A 03 A9 94 C1B8:00 85 FB A9 F0 85 FC EE 3E C1C0:3F 03 D0 03 EE 40 03 A0 0E C1C8:00 B1 FD 8D 41 03 C8 B1 AA C1D0:FD 8D 42 03 C8 C8 B1 FD F9 C1D8:CD 40 03 90 0C 88 B1 FD A0 C1E0:CD 3F 03 90 03 4C 64 C2 59 C1E8:C8 C8 B1 FD C9 22 D0 08 99 C1F0:AD 4A 03 49 01 8D 4A 03 A8 C1F8:AD 4A 03 D0 40 4C 3B C4 C1 C200:89 D0 06 20 65 C2 4C 3D 4D C208:C2 C9 8D D0 06 20 65 C2 5E C210:4C 3D C2 C9 A7 D0 1D 8C 47 C218:43 03 C8 B1 FD C9 20 F0 7C C220:F9 C9 30 90 0A C9 3A B0 C0 C228:06 20 73 C2 4C 3D C2 AC DC C230:43 03 B1 FD C9 91 D0 05 69 C238:A9 01 8D 3C 03 B1 FD F0 14 C240:03 4C E9 C1 A9 00 20 65 A6 C248:C4 8D 3C 03 AD 41 03 85 49 C250:FD AD 42 03 85 FE A0 00 22 C258:B1 FD D0 05 C8 B1 FD F0 9A C260:03 4C C7 C1 60 C8 B1 FD 17 C268:C9 20 F0 F9 AD 3C 03 C9 C6 C270:01 F0 3D A2 00 B1 FD C9 11 C278:30 90 32 C9 3A B0 2E 9D AB C280:84 03 C8 E8 B1 FD C9 3A 04 C288:F0 0B C9 00 F0 07 C9 20 D9 C290:F0 03 4C 77 C2 A9 2C 9D 03 C298:84 03 E8 A9 30 9D 84 03 DC C2A0:E8 A9 00 9D 84 03 20 A7 F6 C2A8:C3 20 FF C2 60 4C 0C C4 55 C2B0:A2 00 B1 FD C9 30 90 41 0F C2B8:C9 3A B0 3D 9D 84 03 C8 69 C2C0:E8 B1 FD C9 2C F0 0F C9 90 C2C8:3A F0 0B C9 00 F0 07 C9 41 C2D0:20 F0 03 4C B2 C2 A9 2C E7 C2D8:9D 84 03 E8 A9 30 9D 84 0B C2E0:03 E8 A9 00 9D 84 03 20 7C C2E8:A7 C3 20 FF C2 B1 FD C9 D9 C2F0:2C F0 09 A9 00 8D 3C 03 36 C2F8:60 4C 0C C4 4C 65 C2 8C 99 C300:48 13 A9 00 85 9B A9 E0 70 C308:85 9C 78 A2 35 86 01 A0 19 C310:00 B1 9B CD 44 03 D0 1F 43 C318:C8 B1 9B CD 45 03 D0 16 AE C320:C8 B1 9B A0 00 91 FB A2 D6 C328:36 86 01 58 E6 FB D0 02 DC C330:E6 FC AC 48 03 60 88 B1 E0 C338:9B C9 FF D0 56 C8 B1 9B E1 C340:C9 FF D0 4F A2 36 86 E1 B7 C348:58 A0 00 AD 44 03 91 9B EB C390:C8 AD 45 03 91 9B C8 AD BA C358:3B 03 91 9B C8 A9 FF 91 A8 C360:9B C8 91 9B A0 00 AD 3B 6F C368:03 91 FB E6 FB D0 02 E6 D1 C370:FC A5 FC C9 00 F0 60 AD 4E C378:3B 03 D0 04 AC 48 03 60 A5 C380:EE 3B 03 AD 3B 03 39 1D 20 C388:90 05 A9 90 8D 3B 03 AC DA C390:48 03 60 A2 03 E6 9B D0 EE C398:02 E6 9C CA D0 F7 A5 9C 69 C3A0:C9 F0 B0 33 4C 0F C3 E0 99 C3A8:08 B0 61 E0 07 D0 12 AD E7 C3B0:84 03 C9 37 B0 56 C9 36 90 C3B8:D0 07 AD 85 03 C9 34 B0 D0 C3C0:4B 8C 49 03 A5 7A 8D 46 E2 C3C8:03 A5 7B 8D 47 03 A9 84 A1 C3D0:85 7A A9 03 85 7B 20 EB 65 C3D8:B7 A5 14 8D 44 03 A5 15 8F C3E0:8D 45 03 AD 46 03 85 7A 7F C3E8:AD 47 03 85 7B AC 49 03 F5 C3F0:88 C8 B1 FD C9 20 F0 F9 AF C3F8:60 A2 00 BD 12 CB 20 D2 08 C400:FF E8 C9 00 D0 F5 A2 FA 9B C408:9A 4C 74 A4 A2 00 BD 25 80 C410:CB 20 D2 FF E8 C9 00 D0 21 C418:F5 A9 37 85 01 A9 1A 8D B6 C420:06 03 A9 A7 8D 07 03 A2 4E C428:FA 9A A0 02 B1 FD 85 14 AE C430:C8 B1 FD 85 15 20 13 A6 98 C438:4C BD A6 B1 FD C9 CB D0 C6 C440:0E C8 B1 FD C9 20 F0 F9 C3 C448:C9 A4 F0 08 4C 0C C4 C9 64 C450:89 4C 01 C2 4C 03 C2 C9 BB C458:CB F0 07 C9 89 F0 03 4C E3 C460:29 C1 4C 52 C1 AD 3C 03 DD C468:D0 A2 A9 00 8D 4A 03 60 34 C470:08 48 A5 3A C9 FF F0 18 B0 C478:A9 37 85 01 A9 1A 8D 06 3C C480:03 A9 A7 8D 07 03 A9 E4 40 C488:8D 08 03 A9 A7 8D 09 03 5E C490:68 28 4C E4 A7 08 48 8A A8 C498:48 98 48 A5 3A C9 FF D0 99 C4A0:03 4C F7 C6 A2 FF B5 00 AA C4AB:9D F1 CB CA E0 02 D0 F6 4B C4B0:AD 86 02 8D 4E 03 A9 13 B0 C4B8:20 D2 FF AD 50 03 C9 00 04 C4C0:F0 0C C9 01 F0 11 C9 02 70 C4C8:F0 31 C9 03 F0 3D A5 DA 23 C4D0:09 80 85 DA 4C 3F C5 A5 ED C4D8:EF 09 80 85 EF A9 11 A2 EF C4E0:16 20 D2 FF CA D0 FA A2 0A C4E8:00 A9 2D 9D 48 07 A9 0E 1C C4F0:9D 48 DB EB E0 28 90 F1 20 C4F8:4C 3F C5 A2 00 B5 D9 09 EE C500:80 95 D9 E8 E0 08 90 F5 39 C508:4C 3F C5 A2 11 B5 D9 09 88 C510:80 95 D9 E8 E0 19 90 F5 8D C518:A9 11 A2 11 20 D2 FF CA 39 C520:D0 FA A2 00 A9 2D 9D 80 E4 C528:06 A9 0E 9D 80 DA E8 E0 DE C530:28 90 F1 A2 00 A9 20 9D E0 C538:C0 07 E8 E0 28 90 F8 A9 30 C540:60 8D 14 A7 A5 39 85 14 8D C548:A5 3A 85 15 A9 C1 8D 18 BE C550:03 A9 EF 8D 28 03 20 13 3F C558:A6 38 A5 7A E5 5F 8D 4F B8 C560:03 A9 17 8D 26 03 A9 C7 EB C568:8D 27 03 A9 0E 8D 86 02 35 C570:A5 14 D0 33 A5 15 D0 2F 73 C578:A0 00 B1 2B 85 FB C8 B1 9C C580:2B 85 FC A0 00 B1 FB 85 F0 C588:FD C8 B1 FB 85 FE A0 00 A4 C590:98 91 FB C8 91 FB 20 BD 53 C598:A6 A0 00 A5 FD 91 FB C8 F0 C5A0:A5 FE 91 FB 4C AA C5 20 69 C5A8:BD A6 AD 50 03 C9 02 F0 AB C5B0:07 C9 03 F0 22 4C 52 C6 4F C5B8:A9 20 A6 D3 9D 00 04 E8 11 C5C0:E0 78 90 F8 A9 13 20 D2 29 C5C8:FF A9 11 20 D2 FF 20 D2 8C C5D0:FF 20 D2 FF 4C F2 C5 A9 22 C5D8:20 A6 D3 9D A8 06 E8 E0 82 C5E0:78 90 F8 A9 13 20 D2 FF 45 C5E8:A9 11 A2 14 20 D2 FF CA 3A C5F0:D0 FA A9 5B 85 FB A9 03 01 C5F8:85 FC A9 0E 8D 86 02 A0 C7 C600:00 B1 FB F0 0F C9 24 D0 41 C608:04 A2 01 86 D4 20 D2 FF 95 C610:C8 4C 01 C6 A9 20 20 D2 82 C618:FF A5 FB 85 7A A5 FC 85 D0 C620:7B 98 48 A5 D1 85 FD A5 3B C628:D2 85 FE 20 A0 AA A4 D3 2F C630:88 A9 20 91 D1 C8 C0 28 E4 C638:90 F9 A9 8D 20 D2 FF 68 4F C640:A8 CB B1 FB F0 0C E6 FB CB C648:D0 02 E6 FC 88 D0 F7 4C 2F C650:FF C5 A9 CA 8D 26 03 A9 E5 C658:F1 8D 27 03 A9 4C 8D 14 05 C660:A7 A9 ED 8D 28 03 A9 47 AA C668:8D 18 03 AD 50 03 C9 02 22 C670:D0 12 20 24 EA A0 00 A9 B4 C678:2D 91 D1 A9 0E 91 F3 C8 3D C680:C0 28 90 F3 AD 50 03 C9 48 C688:00 F0 07 C9 01 F0 23 4C 2E C690:BE C6 A9 20 A6 D3 9D 00 26 C698:04 E8 E0 50 90 F8 A2 00 31 C6A0:A9 2D 9D 50 04 A9 0E 9D 87 C6A8:50 D8 E8 E0 28 90 F1 4C 73 C6B0:BE C6 A9 20 A6 D3 9D 70 B6 C6B8:07 E8 E0 78 90 F8 AD 51 BC C6C0:03 C9 01 F0 07 C9 02 F0 C5 C6C8:10 4C E5 C6 A0 1E A2 FF 5D C6D0:CA D0 FD 88 D0 F8 4C E5 29 C6D8:C6 20 9F FF A5 CB C9 40 F5 C6E0:F0 F7 4C CC C6 A2 FF BD B9 C6E8:F1 CB 95 00 CA E0 02 D0 C3 C6F0:F6 AD 4E 03 8D 86 02 68 52 C6F8:A8 68 AA 68 28 20 2C A8 93 C700:60 08 48 A9 0E 8D 86 02 1B C708:CC 4F 03 B0 05 A9 01 8D 9B C710:86 02 68 28 4C 1A A7 08 15 C718:48 C9 0D D0 07 68 A9 00 1A C720:28 4C CA F1 68 28 4C CA 96 C728:F1 08 48 78 A9 31 8D 14 84 C730:03 A9 EA 8D 15 03 58 A9 F0 C738:CA 8D 26 03 A9 F1 8D 27 DC C740:03 A9 4C 8D 14 A7 A9 ED 9E C748:8D 28 03 A9 47 8D 18 03 47 C750:AD 06 03 C9 01 F0 23 AD F4 C758:52 03 D0 22 A9 00 8D 4B C1 C760:03 A9 0E 8D 86 02 A9 EB F1 C768:8D 06 03 A9 C0 8D 07 03 88 C770:A9 70 8D 08 03 A9 C4 8D F8 C778:09 03 A9 36 85 01 68 28 0F C780:4C 83 A4 08 48 8A 48 98 C1 C788:48 AD 00 02 C9 5F F0 03 78 C790:4C 55 CA AD 01 02 C9 54 C7 C798:F0 03 4C EC C8 20 5E CA 08 C7A0:A2 00 BD 3D CB 20 D2 FF 91 C7A8:E8 C9 00 D0 F5 A5 C5 C9 C7 C7B0:1C F0 09 C9 16 D0 F6 A9 D3 C7B8:00 4C BE C7 A9 01 8D 50 6C C7C0:03 A2 00 BD 52 CB 20 D2 2B C7C8:FF E8 C9 00 D0 F5 A5 C5 3B C7D0:C9 27 F0 0D C9 12 F0 0E 84 C7D8:C9 0D D0 F2 A9 02 4C E8 B0

C7E0:C7 A9 00 4C E8 C7 A9 A1 3E C7E8:8D 51 03 A2 00 BD 79 CB D3 C7F0:20 D2 FF E8 C9 00 D0 F5 B9 C7F8:A5 C5 C9 40 D0 FA A5 C5 8D C800:C9 27 D0 03 4C BB C8 C9 37 C808:19 D0 F3 AD 50 03 C9 00 D5 C810:F0 05 A9 03 4C 19 C8 A9 C2 C818:02 8D 50 03 A2 00 BD 94 6D C820:CB 20 D2 FF E8 C9 00 D0 39 C828:F5 A9 00 85 C6 A0 00 8C BC C830:53 03 A9 A4 20 D2 FF C6 BE C838:D3 20 E4 FF F0 FB AC 53 7C C840:03 C9 0D D0 0E AD 5B 03 55 C848:C9 41 90 ED C0 00 F0 E9 D1 C850:4C 8D C8 C9 14 D0 19 AC E3 C858:53 03 F0 DD C6 D3 A9 20 49 C860:20 D2 FF 20 D2 FF C6 D3 B0 C868:C6 D3 CE 53 03 4C 32 C8 D7 C870:C0 26 F0 C5 C9 20 F0 08 1F C878:C9 24 90 BD C9 5B B0 B9 BC C880:AC 53 03 99 5B 03 20 D2 31 C888:FF C8 4C 2F C8 A9 20 20 16 C890:D2 FF A9 0D 20 D2 FF A2 80 C898:00 A0 FF C8 CC 53 03 F0 89 C8A0:11 B9 5B 03 C9 2F D0 F3 65 C8A8:A9 00 99 5B 03 E8 E0 04 79 C8B0:90 E9 A9 00 99 5B 03 C8 43 C8B8:99 5B 03 A9 00 85 C6 A2 2F C8C0:00 BD B9 CB 20 D2 FF E8 EA C8C8:C9 00 D0 F5 A9 20 8D AE 50 C8D0:A7 A9 95 8D AF A7 A9 C4 60 C8D8:8D B0 A7 A9 01 8D 06 03 3A C8E0:A9 C7 8D 07 03 A9 36 85 0C C8E8:01 4C 55 CA C9 4C D0 2B B1 C8F0:20 5E CA A9 4C 4D CD BD 10 C8F8:A9 03 8D CE BD A9 C0 8D 62 C900:CF BD A9 00 8D 52 03 A9 85 C908:36 85 01 A2 00 BD CD CB C0 C910:20 D2 FF E8 C9 00 D0 F5 DC C918:4C 55 CA C9 56 F0 03 4C E5 C920:41 CA 20 B2 CA AD 86 02 52 C928:8D 54 03 A9 0D 20 D2 FF 21 C930:A5 2D 85 FB A5 2E 85 FC 40 C938:A5 2D C5 2F D0 06 A5 2E AD C940:C5 30 F0 15 A0 00 B1 FB 96 C948:8D 55 03 C8 B1 FB 8D 56 D3 C950:03 20 EA FF 20 E1 FF D0 24 C958:03 4C 33 CA AD 55 03 C9 26 C960:80 90 11 AD 56 03 C9 80 28 C968:90 05 A9 03 4C 82 C9 A9 94 C970:07 4C 82 C9 AD 56 03 C9 1E C978:80 90 05 A9 01 4C 82 C9 B3 C980:A9 0E 8D 86 02 AD 55 03 FA C988:C9 80 90 03 38 E9 80 20 ED C990:D2 FF 8D 57 03 AD 56 03 33 C998:C9 80 90 0A 38 E9 80 D0 1F C9A0:05 A9 20 4C A9 C9 20 D2 71 C9A8:FF 8D 58 03 AD 55 03 C9 6D C9B0:80 90 23 AD 56 03 C9 80 BA C9B8:90 05 A9 25 4C E3 C9 A9 8C C9C0:20 20 D2 FF A9 46 20 D2 40 C9C8:FF A9 4E 20 D2 FF A9 0D 89 C9D0:20 D2 FF 4C 14 CA AD 56 6B C9D8:03 C9 80 90 09 A9 01 85 EF C9E0:D4 A9 24 20 D2 FF 8D 59 DA C9E8:03 A9 00 8D 5A 03 A9 20 93 C9F0:20 D2 FF A9 3D 20 D2 FF F3 C9F8:A9 20 20 D2 FF A5 7A 48 6E CA00:A5 7B 48 A9 57 85 7A A9 5A CA08:03 85 7B 20 A0 AA 68 85 F7 CA10:7B 68 85 7A 18 A5 FB 69 8E CA18:07 85 FB A5 FC 69 00 85 7F CA20:FC A5 FB C5 2F B0 03 4C 08 CA28:44 C9 A5 FC C5 30 B0 03 2A CA30:4C 44 C9 A9 00 20 D2 FF F6 CA38:AD 54 03 8D 86 02 4C 55 1D CA40:CA C9 4F D0 10 20 5E CA 2D CA48:A2 00 BD DF CB 20 D2 FF 69 CA50:E8 C9 00 D0 F5 68 A8 68 E4 CA58:AA 68 28 4C 7C A5 A9 37 2C CA60:85 01 A9 85 8D CD BD A9 4F CA68:62 8D CE BD A9 86 8D CF 9A CA70:BD A9 20 8D AE A7 A9 2C BF CA78:8D AF A7 A9 A8 8D B0 A7 D4 CA80:A9 CA 8D 26 03 A9 F1 8D E1 CA88:27 03 A9 4C 8D 14 A7 A9 22 CA90:ED 8D 28 03 A9 1A 8D 06 8C CA98:03 A9 A7 8D 07 03 A9 E4 64 CAA0:8D 08 03 A9 A7 8D 09 03 82 CAA8:A9 01 8D 52 03 A9 00 8D 76 CAB0:5B 03 A9 00 8D 00 02 60 BA CAB8:A9 37 85 01 A9 00 8D 0E 28 CAC0:DC 85 5F A9 A0 85 60 A9 32 CAC8:FF 85 5A 85 5B 85 58 85 8A CAD0:59 20 BF A3 AD FF FF 8D 48 CAD8:FF FF A9 01 8D 0E DC A9 BB CAE0:95 8D 04 DC A9 42 8D 05 69 CAE8:DC A9 01 8D 52 03 A9 29 6B CAF0:8D 02 03 A9 C7 8D 03 03 46 CAF8:A9 83 8D 04 03 A9 C7 8D 12 CB00:05 03 60 0E 01 02 03 04 E1 CB08:05 06 07 08 09 0A 0B 0C 97 CB10:0D 0F 54 4F 4F 20 4D 41 48 CB18:4E 59 20 42 52 41 4E 43 CC CB20:48 45 53 0D 00 55 4E 44 9E CB28:45 46 49 4E 45 44 20 42 BF CB30:52 41 4E 43 48 20 45 52 DE CB38:52 4F 52 0D 00 0D 12 54 94 CB40:92 4F 50 20 4F 52 20 12 17 CB48:42 92 4F 54 54 4F 4D 3F 8E CB50:0D 00 0D 12 4E 92 4F 52 DE CB58:4D 41 4C 2C 20 12 44 92 97 CB60:45 4C 41 59 2C 20 4F 52 3E CB68:20 12 53 92 49 4E 47 4C 86 CB70:45 20 53 54 45 50 3F 0D 59 CB78:00 0D 44 49 53 50 4C 41 26 CB80:59 20 56 41 52 49 41 42 28 CB88:4C 45 53 20 28 59 2F 4E 57 CB90:29 3F 0D 00 0D 45 4E 54 9C CB98:45 52 20 55 50 20 54 4F BB CBA0:20 34 20 56 41 52 49 41 E5 CBA8:42 4C 45 53 20 28 41 2F A5 CBB0:42 2F 43 2F 44 29 3A 0D D8 CBB8:00 0D 0D 58 54 52 41 43 6C CBC0:45 20 41 43 54 49 56 41 15 CBC8:54 45 44 0D 00 0D 58 4C 66 CBD0:49 53 54 20 41 43 54 49 77 CBD8:56 41 54 45 44 0D 00 0D 2E CBE0:58 4C 4F 47 49 43 20 44 F1 CBE8:49 53 41 42 4C 45 44 0D 53 CBF0:00 00 00 00 00 00 00 00 88