VOLUME 16 ASSEMBLERS, OTHER UTILITIES AND FOCAL NUMBER SIZE NAME COMMENTS CATALOG.16 CONTENTS OF CP/M GROUP VOL 16 VOLUME16.DOC COMMENTS ON CERTAIN PROGRAMS 16.1 9K ASMX.COM ASSEMBLER WHICH RECOGNIZES Z-80 OPS SEE VOL.DOC [CAREFUL: WITH CORRECT SYNTAX (ASMX FILENAME.AAA) THIS DOES WORK. WITH FAULTY SYNTAX THE PROGRAM TAKES REVENGE ON THE DISK DIRECTORY.] RUNS OK ON 8080 16.2 12K COPYDSK.ASM DISK COPY PROGRAM. SEE VOL.DOC 16.3 13K COPYDSK.MAC AS 16.2 FOR TDL ASSEMBLER 16.4 7K CPMUTIL.ASM CP/M SUBROUTINES USEFUL GENARALLY AND EMPLOYED AS PART OF Z80ASM 16.17 16.5 3K EDIT.COM INTEL-LIKE EDITOR. DOES L F B AND -B MUCH FASTER THAN ED.COM. SEE VOL.DOC 16.6 8K EDUCATOR.ASM 8080 INSTRUCTION SET TUTOR FROM BYTE OF JULY 1976 16.7 57K FOCAL.ASM FOCAL LANGUAGE INTERPRETER. SEE VOL.DOC 16.8 8K MACASM.COM MACRO ASSEMBLER. SEE VOL.DOC 16.9 2K MOVDOWN.ASM PROGRAM TO LOAD FILE WHICH OPERATES BELOW 100H 16.10 2K SEEK.ASM SET DISK TRACK FROM FRONT PANEL DURING ALIGNMENT 16.11 9K SPAT1.ASM RE-WRITE OF 1.29 TO GENERALIZE CONSOLE FROM ORIGINAL VDM DEPENDANCY 16.12 2K TASMIO.DOC DOC FOR TASMIO PATCH TO PUT TDL TAPE ASSEMBLER UP ON CP/M 16.13 3K TASMIO.HEX SEE TASMIO.DOC 16.14 18K TASMIO.MAC SEE TASMIO.DOC 16.15 3K TEST1A.ASM SUCCESSFUL TEST FOR Z80ASM 16.17 16.16 1K TEST2.ASM UNSUCCESSFUL TEST FOR Z80ASM 16.17 16.17 9K Z80ASM.COM ZILOG MNEMONIC ASSEMBLER. RUNS ON 8080. SEE Z80DOC.DOC 16.18 16.18 4K Z80DOC.DOC DOC FOR 16.17 16.19 28K Z80MAIN.ASM SEE 16.17 16.20 4K Z80OPCDS.ASM SEE 16.17 16.21 11K Z80SUBS.ASM SEE 16.17 Z80DOC.DOC explains the Z80 Assembler routines which follow. Z80MAIN.ASM Z80OPCDS.ASM Z80SUBS.ASM and the assembled program Z80ASM.COM. TEST1A.ASM and TEST2.ASM are short test programs for the assembler. This program was written and donated to the user group by Mike Lehman for unrestricted distrubution in the hobbyist community. COPYDSK.MAC is a disk copy routine written by Frank Maclachlan in the TDL assembler format. It is very different from the version in Vol. 1 and performs a read and write verify. This routine was also rewritten for the CPM assembler by Dick Mason and is included as COPYDSK.ASM. TASMIO.DOC explains how to patch the TDL Assembler to operate with the CP/M system. It includes TASMIO.HEX and TASMIO.MAC. The last one would be useful for any future modifications. This routine was written and donated by Frank Maclachlan. SEEK.ASM is a simple utility routine which allows you to select a desired track on a drive during alignment by use of the front panel sense switches. SPAT1.ASM is a modified version of SPAT.ASM from Vol. 1 which is good for any terminal, not just the VDM. Control characters have been removed from the ASCII print and periods inserted in their places. This modification was made by Dick Mason. MOVDOWN.ASM is a program used in conjunction with those that do not start a location 100. It loads them at location 100 and then automaticlly moves them to 0 or some other address and starts. This was written by Dick Mason. CPMUTIL.ASM is a different set of utilities for the various I/O routines. This was also donated by Mike Lehman. MACASM -- THIS IS A MACRO ASSEMBLER WITH CHARACTERISTICS SIMILAR TO THE INTEL ASSEMBLER. WHEN USED UNDER CP/M, IT HAS THE FOLLOWING ADDITIONAL FEATURE: ANOTHER OPTION FOR THE LIST FILE IS THE LETTER 'P' WHICH SENDS THE LISTING TO THE LIST DEVICE DIRECTLY; E.G., ONE MIGHT TYPE MACASM LLLBASIC.AZP THIS WILL SEND THE LISTING DIRECTLY TO THE LIST DEVICE. THERE IS AT LEAST ONE KNOWN BUG (THE FIX IS UNKNOWN, HOWEVER) AND THAT IS THAT SOMETIMES WITH NESTED MACROS, LOCATIONS 5,6, AND 7 ARE CLOBBERED; THIS OF COURSE, KILLS COMMUNICATION WITH CP/M AND ALL IS DEAD. ASMX -- THIS IS ANOTHER ASSEMBLER, WITHOUT MACROS, BUT WITH CROSS- REFERENCE MAP. IT ALSO RECOGNIZES MNEMONICS FOR THE Z80. THE MNEMONICS IT RECOGNIZES ARE SIMILAR TO THOSE PROMULGATED BY TDL WITH THE EXCEPTION OF INDEX REGISTER OPERATIONS AND THE INSTRUCTION DSBB (TDL USES DSBC). ASSEMBLE THE FILE Z80-OPS.ASM TO SEE THE INDEX REGISTER OP CODE SYNTAX. ---- CHARACTERISTICS OF THIS ASSEMBLER --- THE ASSEMBLER DOES NOT RECOGNIZE '!' THE DISK BUFFERS ARE ONLY 128 BYTES, SO THERE MAY BE MORE DISK ACTIVITY THAN WITH ASM.COM LABELS MUST BEGIN IN COLUMN ONE, AND SIX CHARACTERS OF THE LABEL ARE USED. INSTRUCTIONS MAY NOT BEGIN IN COLUMN ONE THE ASSEMBLER DOES NOT MIND LABELS THAT ARE THE SAME AS OP- CODES,E.G. JMP,ADD,SUB,END, ETC. LABELS NEED NOT BE FOLLOWED BY A COLON. CERTAIN ADDITIONAL PSEUDO-OPS ARE RECOGNIZED: LIST -L ;TURNS OFF THE LISTING LIST L ;TURNS THE LISTING BACK ON TP ;TABULATE PAGE- MOVES THE PC TO THE NEXT PAGE TM VAL ;IF BYTES REMAIN IN THE CURRENT PAGE, ;THEN NOTHING HAPPENS; OTHERWISE MOVE THE PC ;TO THE NEXT PAGE (IN OTHER WORDS, MAKE SURE ;THAT AT LEAST BYTES REMAIN IN THE CURRENT ;PAGE) BASE 8 ;CAUSES LISTING IN OCTAL BASE 16 ;CAUSES LISTING IN HEX EDIT -- THIS IS AN EDITOR SIMILAR TO CP/M'S ED.COM, BUT WITH COMMAND SYNTAX LIKE INTEL'S EDITOR FOR THOSE OF YOU WHO ARE USED TO THAT. THE ESCAPE CHAR IS USED AS A DELIMITER IN COMMAND LINES (IT IS ECHOED AS A $), AND A DOUBLE ESCAPE IS USED TO TERMINATE A COMMAND LINE. THIS EDITOR IS MUCH FASTER THAN EITHER THE INTEL EDITOR OR ED.COM; UNLIKE THE INTEL EDITOR, THIS ONE DOES HAVE THE 'N' COMMAND AND THE 'Q' COMMAND; IT DOES NOT HAVE THE 'R' COMMAND, HOWEVER. ANOTHER DIFFERENCE WITH RESPECT TO THE INTEL EDITOR IS THAT THE 'A' COMMAND ONLY APPENDS ONE LINE, BUT YOU CAN SAY 9999A TO APPEND MUCH. THE EDITOR CREATES A THIRD FILE WITH TYPE $$$ WHICH IS RENAMED WHEN THE EDIT JOB IS COMPLETE. THIS MEANS THAT IF YOU ARE EDITING A FILE WHICH OCCUPIES OVER HALF OF THE DISK, YOU MUST ERASE ANY PRE-EXISTING BACK-UP FILE SO THAT THERE WILL BE ROOM FOR THE TEMPORARY. IF YOU DON'T, YOU WILL GET A DISK FULL ERROR. IN FIND OR SUBSTITUTE COMMANDS, THE CHARACTER '|' WILL MATCH ANY CHARACTER. IF YOU WANT TO CHANGE THIS CHARACTER, LOOK FOR THE SEQUENCE FE, 7C IN THE CODE AND CHANGE THE 7C TO THE CHARACTER YOU PREFER. [A.R.G SUMMARY OF COMMANDS COMPARED WITH ED.COM NOTE () ARE TO INDICATE A CONTROL CHARACTER, <> USED LITERALLY ED.COM EDITOR.COM B B -B Z E E Q Q C C T T L L K K D D I I A A W W N N # 65536 M <> SEE EXTENDED COMMAND BELOW P NONE H NONE O NONE R NONE (SUB) (ESC) (AS TERMINATOR IN SEARCHES) (CR) (ESC) (ESC) (TO EXECUTE COMMANDS) (CR) NONE (TO CAUSE LT SEQUENCE) ANY CHARACTER (NUL) (TO INTERUPT PRINTING) EXTENDED COMMAND: 2MF.ASM(SUB)0LK(CR) 2(ESC)(ESC) CONTROL CHARACTERS REFERENCED ABOVE: (CR) := 0DH ^M RETURN (SUB) := 1AH ^Z (ESC) := 1BH ^[ ESCAPE  (NUL) := 00H ^@ BREAK ] FOCAL.ASM -- THIS IS THE FOCAL THAT PROCESSOR TECHNOLOGY WAS DISTRIBUTING IN 1976 ON BLUE XEROX-PROOF PAPER. IT HAS SOME KNOWN BUGS: EXPONENTIATION DOESN'T WORK AND IT HAS NO OPERATOR PRECEDENCE. I HAVE ADDED A FEW THINGS: I/O FOR CP/M (JUST CONSOLE I/O) AND A ROUTINE TO LIST THE ERROR MESSAGES. LOAD FOCAL WITH DDT AND JUMP TO 103H; A LIST OF THE ERROR MESSAGES WILL BE PRINTED. A NOTE OF INTEREST-THE FLOATING POINT PACKAGE IN FOCAL IS FROM THE INTEL USERS LIBRARY AND WAS ORIGINALLY WRITTEN FOR THE 8008 CPU. [A.R.G. I understand that the exponentiation error only occurs (symptom x^y results in y^y) with the 100H origin. May give a clue to finding page-dependant routine] EDUCATOR.ASM -- THIS IS FROM BYTE MAGAZINE OF JULY 1976