************************************************************************ * * * 10/01/82 * * * * LASM is an update of LINKASM, with the minor change that it prints * * the name of each linked file before it is opened. This helps track * * progress, and helps find misspelled names. * * * * - Ward Christensen * * * ************************************************************************ LINKASM.COM 01/07/80 by Ward Christensen OVERVIEW: LINKASM is based on CP/M assembler 1.0, and is compatible with 1.0, 1.3, and 1.4 assemblers. (2.0? Dunno.) ---------------- LINKASM is a rewrite of CP/M 1.0 ASM.COM, incorporating: * A new pseudo-op code, LINK. * Smaller .COM file size (6K vs 8K). * Faster execution via larger ASM, HEX, and PRN buffers * (about 29% faster with PRN file, about 17% faster without) * Corrections to properly handle lower case DB values. * Prints the number of source lines read * Produces a symbol table for use under SID The LINK pseudo-op allows a file to "chain" to the next .ASM file, thereby allowing very large source files to be processed without having to PIP them together. RESTRICTIONS: All the linked .ASM files must be on the same disk. Nested IFs are not handled (ASM.COM didn't either). Note that you can use IF to conditionally link to the next module: IF CLOCK LINK CLOCKRTN ENDIF ; IF NOT CLOCK LINK OTHERRTN ENDIF For example, if CLOCK is true, then LINK CLOCKRTN (i.e., CLOCKRTN.ASM) will take place, and the assembler will never see the ENDIF. This is not a problem as the next encountered IF will be handled properly. ---------------- USAGE: LINKASM is totally compatible with ASM.COM, and you may there- fore replace ASM. Its performance will be slightly better than ASM.COM, and it takes less space on disk (6K vs 8K). Execute it just like ASM.COM: LINKASM NAME.ABZ where: A is the .ASM file disk (A, etc.) B is the .HEX file disk (A, etc., or Z for none) Z is the .PRN file disk (A, B,... or Z for none, X for console) The default is the logged in disk for all 3. If you wish to write a symbol table file, follow the command line with the disk to be written to (A, B, ...) then a colon. For example, to assemble MODEM from the A: disk, put the .HEX on the A: disk, send the .SYM file to B:, and the listing to the console: LINKASM MODEM.AAX B: To assemble it doing everything on the A: disk (assuming A: is the logged in disk): LINKASM MODEM A: The ":" must be specified after the .SYM disk. The .SYM file is "partially" sorted, i.e., all Axxxx then all Bxxxx etc. SID fully scans the symbol table anyway, so sorting it is not necessary, so I did this quick sort hack just to make it eaiser for YOU to find a symbol. ---------------- The LINK pseudo ops take a single operand: The name of an .ASM file to be processed next. For example: A:TEST1.ASM: ORG 100H LXI H,MSG MVI C,9 CALL BDOS RET LINK TEST2 ---------------- A:TEST2.ASM: MSG: DB 'LINKED' BDOS: EQU 5 ---------------- Then assemble it: A>LASM TEST1.AZX LASM AS OF 07/06/82 0100 ORG 100H 0100 210901 LXI H,MSG 0103 0E09 MVI C,9 0105 CD0500 CALL BDOS 0108 C9 RET LINK TEST2 0109 4C494E4B45MSG: DB 'LINKED' 0005 = BDOS: EQU 5 010F 000H USE FACTOR 8 INPUT LINES READ END OF ASSEMBLY ---------------- Ward Christensen  .