From ebb2ff2af569d5822b70ee555a32d27cf7494816 Mon Sep 17 00:00:00 2001 From: Jeff Armstrong Date: Sun, 25 Oct 2026 17:42:06 -0400 Subject: Initial import of 4.11 --- doc/lasm.txt | 149 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 149 insertions(+) create mode 100644 doc/lasm.txt (limited to 'doc/lasm.txt') diff --git a/doc/lasm.txt b/doc/lasm.txt new file mode 100644 index 0000000..178d840 --- /dev/null +++ b/doc/lasm.txt @@ -0,0 +1,149 @@ +***************************************************************** +* * +* 10/01/81 * +* * +* 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 +* 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 therefore 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, i.e. + + LINKASM name.p1p2p3 + +where: p1 is the .ASM file disk (A, B, ...) + p2 is the .HEX file disk (A, B, ... or Z for none) + p3 is the .PRN file disk (A, B, ... or Z for none, + or X for the 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 FOO from the A: +disk, put the .HEX on the A: disk, send the .SYM file to +B:, and the listing to the console: + + LINKASM FOO.AAX B: + + To assemble it doing everything on the A: disk +(assuming A: is the logged in disk): + + LINKASM FOO 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>LINKASM TEST1.AZX +LINKASM AS OF 7/13/79 + + + 0100 ORG 100H + 0100 210901 LXI H,MSG + 0103 0E09 MVI C,9 + 0105 CD0500 CALL BDOS + 0108 C9 RET + LINK TEST2 + 0109 4C696E6B65MSG DB 'Linked' + 0005 = BDOS EQU 5 +010F +000H use factor +8 input lines read +End of assembly + + ---------------- + I will make one apology for LINKASM - I neglected +to put in an error message saying the name of the missing +file, if you should accidentally LINK to a non-existant file. +It just says the source file is not present. + If necessary, you can find the name which was +being searched for. It's in memory at 186H. If you have +a PROM monitor, you can examine it. If not, do the following +BEFORE executing any more COM programs following the LINKASM: + + SAVE 1 BADNAME.COM Save 100-1ff to disk + DDT BADNAME.COM Bring in under DDT (or SID) + D186,190 Dump the name + ^C Reboot (some people use G0) + ERA BADNAME.COM ERA the temporary file. + +Sorry for that hack, but I thought it better to put LINKASM +in the CP/M UG with that problem, rather than holding it +back "trying to make it perfect". + ---------------- +I have not encountered any problems using LINKASM as my +main assembler for about the last 6 months. Among other +things, I use it to assemble CBBS.ASM which, with its 14 +or so LINKed files, is over 6000 lines. It takes about 5 1/2 +minutes, as I recall (HEX and SYM, no PRN). + + Ward Christensen -- cgit v1.2.3