aboutsummaryrefslogtreecommitdiff
path: root/doc/lasm.txt
diff options
context:
space:
mode:
authorJeff Armstrong <jeff@approximatrix.com>2026-10-25 17:42:06 -0400
committerJeff Armstrong <jeff@approximatrix.com>2026-10-25 17:42:06 -0400
commitebb2ff2af569d5822b70ee555a32d27cf7494816 (patch)
tree7ac5e7b3fa73f7a8d996129086932ecce66374ad /doc/lasm.txt
downloadkermit-80-ebb2ff2af569d5822b70ee555a32d27cf7494816.tar.gz
kermit-80-ebb2ff2af569d5822b70ee555a32d27cf7494816.zip
Initial import of 4.11HEADmain
Diffstat (limited to 'doc/lasm.txt')
-rw-r--r--doc/lasm.txt149
1 files changed, 149 insertions, 0 deletions
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