CHAPTER 2 A86 DEMONSTRATION To give you a feeling for the operation of A86, I have provided some source files for you to assemble. You should make sure your current directory (or a PATH directory) is the one that contains this assembler package, and perform the following operations to see the assembler package in action: Assembling a Very Short Program: PAGE.COM First, let's assemble a very short program; a program that sends an ASCII form feed (hex 0C) to your line printer. The source for this program is PAGE.8; type the command TYPE PAGE.8 to see how simple this program is: note the lack of red tape directives (NAME, ASSUME, END, PUBLIC, etc.) required by other assemblers. Now type the command A86 PAGE.8 to assemble the file. If you are working on a hard disk, make sure you don't blink your eyes after typing the command; you'll miss the assembly, because A86 is FAST, FAST, FAST. You now have a file PAGE.COM, which is an executable program. If you now type the command PAGE with your printer turned on, and if your printer recognizes the form feed character, then it should advance to the next page. You have just created a useful tool. By altering the DB line in the source code that contains the form feed, you can create tools to output other control sequences to your printer. Demonstration of Error Reporting Now type the command ERDEMO, invoking the batch file ERDEMO.BAT. This will invoke an assembly of a source file PAGE.BAD (copied from PAGE.BL so you can run this demo again), into which I have deliberately placed an erroneous statement, XCHG BL,AX. Note that A86 tells you that it has inserted error messages into PAGE.BAD, and saved the original source in PAGE.OLD. Now use your favorite text editor to edit PAGE.BAD. You can use your editor's string search function to find a tilde symbol, which brackets all A86 error messages. Without altering the messages, change the BL to BX, and exit your editor. Now type the command A86 PAGE.BAD to reassemble the file. You should get a successful assembly. Now type the command TYPE PAGE.BAD, and note that A86 has removed the error messages for you. Wasn't that easy? Assembling a Longer Program with Library Files: REV.COM Let's see A86 assemble a program with four source files. Type the command A86 REV.8 to the console. A86 will assemble the REV.8 file you specified, see that there are undefined symbols in the program, then assemble the files LINES.8, MSDOS.8, and USAGE.8, listed in the library file A86.LIB, which I created using the tool A86LIB available only to registered users. 2-2 REV is a tool that exists in the Unix operating system. It is a "filter"; that is, it reads from standard input, transforms the input, and outputs the transformed data to standard output. The transformation that REV performs is to reverse all lines, so that they come out backwards. The usefulness of REV is in conjunction with other tools. In particular, suppose you have a list of words that you wanted sorted according to their last letters, not their first. You run the list through REV, to get the words spelled backwards. Then you run that output through SORT, to sort them that way. Finally, you run the output of SORT through REV again, to get the words spelled forwards again, but still sorted according to their backwards spellings. The normal usage of REV is, therefore, in conjunction with redirection of standard input and output; e.g. REV outfile. If you want to just see if REV works, type REV, the enter key, your first name, the enter key, your last name, the enter key, the F6 key, and the enter key. You'll get your first and last name spelled backwards. Using XREF on a medium-sized program: TCOLS.COM Type the command MTCOLS to execute the batch file MTCOLS.BAT. Observe that the file assembles the file TCOLS.8 into the program TCOLS.COM. Then the batch file runs the XREF program, to produce a cross reference listing TCOLS.XRF of the program. Type the command TCOLS. The TCOLS program you just assembled will execute, and notice that you have given it no parameters. It thus gives you a self-documenting message. Note that towards the end of the message is an example showing how TCOLS can be used to print XREF listings. You can do so now by turning your printer on and typing an appropriate command; e.g., TCOLS PRN for 4 columns, skip 6 lines between pages, which are 80 columns by 66 lines. Using EXMAC Type the command MEXP, invoking the batch file MEXP.BAT, which executes the command EXMAC TCOLS TCOLS.EXP to create a version of TCOLS with macros expanded. Look at the file TCOLS.EXP, and note that the DEFAULT macro defined there has had all of its calls expanded. Type the command A86 TCOLS.EXP and note that it assembles into TCOLS.COM just as the original file does. Type the command EXMAC TCOLS to enter interactive mode. The program pauses, waiting for you to type in lines. Type a garbage line, e.g. "abc", and see the line echoed back to you. Now type the macro call: DEFAULT FOO,7 and see the macro expanded interactively. Type Control-Z followed by the enter key to exit the EXMAC program. (On most IBM-compatible computers you can type F6 to get a control-Z.)