M80.Txt

ZXNet echo conference «code.zx»

From Michael Kondratyev To Kirill Frolov 4 April 1999

2.3. SYNTAX OF ASSEMBLY SENTENCES AN ASSEMBLY PROGRAM CONSISTS OF A SEQUENCE OFFERS. EACH SENTENCE HAS THE FOLLOWING STRUCTURE: LABEL: (OPERATOR) (OPERANDS) ;NOTE IT IS NOT NECESSARY THAT THE SENTENCE BEGINS WITH MARKS. 2.3.1. MARK A LABEL IS A SYMBOLIC NAME FOLLOWED BY COLONS. IF THE MARK IS PRESENT, IT SHOULD BE FIRST ELEMENT OF A SENTENCE. THE VALUE OF THE MARK IS THE CURRENT VALUE ADDRESS COUNTER. IF THERE ARE TWO COLONS AFTER THE MARK, THEN THE LABEL IS DECLARED INTERNAL (PUBLIC) AND IT CAN BE ACCESSED CONTACT FROM ANOTHER PROGRAM. 2.3.2. OPERATOR THE NEXT ELEMENT AFTER THE MARK OR THE FIRST ELEMENT IF THERE IS NO MARK THE OPERATOR IS COMING. THE OPERATOR CAN BE: 1) MNEMOCODE OF MICROPROCESSOR KR580VM80A; 2) MACRO CALL; 3) PSEUDO TEAM; 4) EXPRESSION. IF THE OPERATOR FIELD CONTAINS AN EXPRESSION, THEN THE ASSEMBLER TREATS IT AS A PSEUDO-COMMAND DB. 2.3.3. OPERANDS AND NOTES THE NEXT ELEMENT OF A SENTENCE ARE THE OPERANDS. B DEPENDING ON THE OPERATOR THE OPERAND FIELD CAN BE ONE OR TWO OR SEVERAL OPERANDS. INSTRUCTION CODES CAN BE USED AS OPERANDS MICROPROCESSOR KR580VM80A. IT SHOULD BE borne in mind that ONLY THE FIRST BYTE OF THE COMMAND WILL BE A VALID OPERAND. EXAMPLE. MVI A,JMP ADI CPI MVI B,RNZCPI INX H ACI LXI B MVI C,MOV A,B IF MORE THAN ONE BYTE IS INCLUDED IN THE OPERAND (CPI 5, LXI B,LAM,JMP A5), THEN AN ERROR MESSAGE WILL BE PROVIDED. NOTES ARE THE LAST ELEMENT OF THE SENTENCE. NOTES ALWAYS START WITH ; AND ENDS WITH CR (VK). 2.4. PSEUDO COMMANDS 2.4.1. PSEUDO MOVEMENT COMMANDS A DISTINCTIVE FEATURE OF THE M80 MACROASSEMBLER IS THEIR CREATION OF MOVEABLE MODULES. MODULE MODULE IT FACILITATES DEBUGGING AND TESTING, ALLOWS YOU TO COMPOSITION A PROGRAM CONSISTS OF SEVERAL MODULES, WRITTEN IN DIFFERENT LANGUAGES. IN ADDITION, THE PROGRAM CAN BE DIVIDED INTO SEGMENTS AND INDICATED WHICH SEGMENTS SHOULD BE PLACED ONLY IN RAM (SEGMENTS DATA), AND WHICH CAN BE STORE IN ROM (SEGMENTS CONTAINING PROGRAM). THESE SEGMENTS ARE CREATED USING DSEG PSEUDO COMMANDS And CSEG. THE ASEG PSEUDO COMMAND IS USED IN CREATION NON-MOVING (ABSOLUTE) CODES. PSEUDO COMMON COMMON CREATES COMMON DATA AREAS FOR EVERYONE NAMED IN THE PROGRAM COMMON BLOCK. FOR EACH PROGRAM SEGMENT ASEG, CSEG OR DSEG YOUR ADDRESS COUNTER STARTS, WHICH STOPS COUNTING WHEN THE SEGMENT TYPE CHANGES AND RESUMES THE COUNTDOWN WHEN AGAIN THERE IS A CORRESPONDING SEGMENT. ADDRESS COUNTER VALUE ANY SEGMENT CAN BE CHANGED USING THE ORG PSEUDO COMMAND (P.2.4.12).BY DEFAULT, THE CSEG PSEDOCOMMAND IS ALWAYS IN EFFECT. 2.4.1.1. ASEG PSEUDO COMMAND FORMAT: ASEG ASEG SET THE ADDRESS COUNTER VALUE TO ABSOLUTE SEGMENT IN MEMORY. THE COUNTER VALUE WILL BE CONTINUED PREVIOUS ASEG (DEFAULT 0), IF AFTER ASEG IS NOT WORTHY ORG. 2.4.1.2. COMMON PSEUDO COMMAND FORMAT: COMMON /"BLOCK NAME"/ COMMON SET THE ADDRESS COUNTER TO THE ADDRESS OF THE SELECTED COMMON MEMORY BLOCK. FOR COMPATIBILITY WITH THE COMMON B OPERATOR IN FORTRAN, THIS ADDRESS ALWAYS POINTS TO THE BEGINNING OF THE AREA. IF "BLOCK NAME" IS OMITTED OR CONSISTS OF SPACES, THEN THE COMMON BLOCK CONSIDERED EMPTY. 2.4.1.3. CSEG PSEUDO COMMAND FORMAT: CSEG CSEG SET THE ADDRESS COUNTER VALUE TO OFFSET RELATIVE TO THE BEGINNING OF THE MEMORY SEGMENT CONTAINING COMMAND CODES. THE ADDRESS VALUE WILL BE THE VALUE OF THE PREVIOUS CSEG (DEFAULT 0) UNLESS THERE IS A PSEUDO COMMAND AFTER CSEG ORG. FOR ASSEMBLY CSEG IS THE DEFAULT PSEUDO-COMMAND. 2.4.1.4. DSEG PSEUDO COMMAND FORMAT: DSEG DSEG SET THE ADDRESS SEGMENT COUNTER VALUE ON RELATIVE ADDRESS OF THE MEMORY SEGMENT CONTAINING DATA. THE ADDRESS VALUE WILL CORRESPOND TO THE ADDRESS OF THE LAST DSEG (DEFAULT 0) IF THERE WAS NO ORG PSEUDO-COMMAND. 2.4.2. DB - DEFINE BYTE PSEUDO COMMAND FORMAT:DB "EXPRESSION","EXPRESSION",... OR DB "ROW" ["ROW"...] ARGUMENTS FOR DB CAN BE EXPRESSIONS OR STRINGS. D.B. REMEMBERS THE VALUE OF EXPRESSIONS OR SYMBOLS IN LINES IN CONSECUTIVE MEMORY ADDRESSES, STARTING FROM THE ADDRESS SPECIFIED IN ADDRESS COUNTER. THE VALUE OF THE EXPRESSION MUST FIT IN ONE BYE. IF THE HIGH BYTE OF THE RESULT IS 0 OR 255, THEN THE MESSAGE IS NO ERROR IS PROVIDED. OTHERWISE, ERROR A IS PROVIDED. EXPRESSIONS CANNOT CONTAIN LINES CONTAINING MORE THAN 2 CHARACTERS. HIGH BIT OF EACH BYTE ALLOCATED FOR THE CORRESPONDING SYMBOL IS EQUAL TO ZERO. EXAMPLES: 0000' 41 42 DB 'AB' 0002' 42 DB 'AB' AND 0FFH 0003' 41 42 43 DB 'ABC' 2.4.3. DC - DEFINE SYMBOL PSEUDO COMMAND FORMAT: DC "ROW" DC REMEMBERS THE CHARACTERS SPECIFIED IN THE “LINE” CONSEQUENTIALLY, STARTING FROM THE ADDRESS INDICATED IN THE ADDRESS COUNTER. UNLIKE DB IN THE BYTE CONTAINING THE LAST CHARACTER OF THE STRING, IN THE HIGH BIT COSTS 1. IF THE LINE IS EMPTY, THEN AN ERROR MESSAGE IS PROVIDED. 2.4.4. DS - DEFINE AREA PSEUDO COMMAND FORMAT: DS "EXPRESSION" DS RESERVES MEMORY AREA. MEANING OF EXPRESSION SHOWS HOW MANY BYTES SHOULD BE RESERVED. EVERYTHING THE NAMES PRESENT IN AN EXPRESSION MUST BE DEFINITED TO TIME OF COMPUTATION OF THE EXPRESSION DURING THE FIRST PASSMACROASSEMBLER. OTHERWISE, THERE WILL APPEAR ON THE FIRST PASS FLAG V, AND ON THE SECOND PASS - FLAG U. IF ON THE SECOND PASS THE U FLAG DOES NOT APPEAR, SO THERE MAY BE AN ERROR IN THE MODULE, T.K. DS IS PROCESSED ON THE FIRST PASS. 2.4.5. DW - DEFINE WORD PSEUDO COMMAND FORMAT: DW "EXPRESSION", "EXPRESSION",... DW CONSISTENTLY WRITES THE VALUES OF EXPRESSIONS INTO CELLS MEMORY STARTING FROM THE ADDRESS CONTAINED IN THE ADDRESS COUNTER. THE VALUES OF EXPRESSIONS ARE DB BYTE VALUES. 2.4.6. END PSEUDO COMMAND FORMAT: END "EXPRESSION" THE END OPERATOR INDICATES THE END OF THE PROGRAM. IF IF THE "EXPRESSION" IS PRESENT, IT POINTS TO THE START ADDRESS PROGRAMS. IF THE "EXPRESSION" IS MISSING, THEN TO THE LINKER L80 THE START ADDRESS IS NOT TRANSFERRED. *) NOTE. IF THE ASSEMBLY PROGRAM IS THE MAIN PROGRAM PROGRAM WHEN LINKING, THEN MUST BE INDICATED IN IT STARTING ADDRESS. OTHERWISE LINKER L80 THERE IS AN ERROR MESSAGE "NO STARTING ADDRESS". IF THE ASSEMBLY PROGRAM IS A SUBPROGRAM IN RELATION TO A PROGRAM WRITTEN, FOR EXAMPLE, ON FORTRAN, THEN THE START ADDRESS MAY NOT BE SET, BECAUSE OH WILL BE SET IN THE MAIN PROGRAM. 2.4.7. ENTRY/PUBLIC PSEUDO COMMAND FORMAT: ENTRY "NAME","NAME",... OR PUBLIC "NAME","NAME",...ENTRY OR PUBLIC DECLARE ALL NAMES PRESENT IN LIST AS INTERNAL, ACCESSIBLE FROM EXTERNALLY. AFTER THIS TO THIS NAMES CAN BE ACCESSED FROM OTHER PROGRAMS. ALL NAMES IN THE LIST ENTRY/PUBLIC MUST BE DEFINED, OTHERWISE THERE WILL BE A MESSAGE ABOUT ERROR U. NAMES DECLARED ENTRY OR PUBLIC ARE ENTERED IN LIST OF GLOBAL NAMES AND ARE USED BY THE L80 LINKER WHEN SATISFYING EXTERNAL LINKS. 2.4.8. EQU PSEUDO COMMAND FORMAT: "NAME" EQU "EXPRESSION" USING THE EQU COMMAND, THE SYMBOLIC NAME IS ASSIGNED WITH A VALUE EXPRESSIONS. IF "EXPRESSION" HAS EXTRN, THEN A MESSAGE IS ISSUED ABOUT THE ERROR. 2.4.9. EXT/EXTRN PSEUDO COMMAND FORMAT: EXT "NAME",,"NAME",... OR EXTRN "NAME","NAME",... EXT OR EXTRN DECLARE THE SPECIFIED NAMES AS EXTERNAL (EXTRN), I.E. DEFINED IN ANOTHER PROGRAM. IF THE NAME IS SPECIFIED IN THE LIST DEFINED IN THIS PROGRAM WILL BE ISSUED ERROR MESSAGE M. IF ENDS WITH TWO NUMBER PLACES (##), THEN IT IS ALSO DECLARED AS EXTERNAL. 2.4.10. INCLUDE PSEUDO COMMAND FORMAT: INCLUDE "FILE NAME" THREE PSEUDO COMMANDS INCLUDE, $INCLUDE AND MACLIB EQUIVALENTS. THE INCLUDE PSEUDO COMMAND ALLOWS YOU TO INCLUDE THE SOURCE INTO THE TEXT PROGRAMS PROGRAMS RECORDED IN OTHER FILES. "FILE NAME" - THIS IS THE NAME OF THE FILE CONTAINING THE PROGRAM INCLUDED. FILE TYPE MUST BE .MAC.THE FILE PRESENT IN THE INCLUDE PSEUDO COMMAND IS OPENED AND IS TRANSMITTED TO THE CURRENT PROGRAM IMMEDIATELY AFTER THE PSEUDO COMMAND INCLUDE. WHEN DISPLAYING A LISTING IN EACH LINE CONTAINING AN ELEMENT THE INCLUDED FILE, IMMEDIATELY AFTER THE COMMAND CODE THERE IS A "+" SIGN. NESTING OF PSEUDO INCLUDE COMMANDS IS NOT ALLOWED. IF FILE, SPECIFIED IN INCLUDE DOES NOT EXIST, THEN A MESSAGE WILL BE ISSUED ABOUT ERROR "V" AND THIS PSEUDO COMMAND IS IGNORED. 2.4.11. NAME PSEUDO COMMAND FORMAT: NAME ('PROGRAM NAME') NAME SET THE PROGRAM NAME. SIGNIFICANTS IN "NAME" ARE ONLY THE FIRST SIX SIGNS. THE NAME CAN ALSO BE SET USING PSEUDO COMMANDS TITLE. IF THE PROGRAM IS MISSING NAME AND TITLE, THEN THE NAME OF THE SOURCE FILE IS TAKEN AS THE NAME. 2.4.12. ORG - SET ADDRESS COUNTER PSEUDO COMMAND FORMAT: ORG "EXPRESSION" THE ADDRESS COUNTER IS ASSIGNED WITH AN EXPRESSION. ALL NAMES IN THE EXPRESSIONS MUST BE DETERMINED ON THE FIRST PASS. 2.4.13. PAGE PSEUDO COMMAND FORMAT: PAGE "EXPRESSION" THE PAGE PSEDO COMMAND INSTRUCTS THE ASSEMBLY TO START A NEW LISTING DISPLAY PAGE. IF THE PSEUDO-COMMAND IS PRESENT "EXPRESSION", IT SET THE NUMBER OF LINES ON THE PAGE. THIS IS THE NUMBER MUST BE IN THE RANGE FROM 1 TO 255. THIS IS THE DEFAULT NUMBER EQUALS 50. 2.4.14. SET PSEUDO COMMAND FORMAT: "NAME" SET "EXPRESSION"SET DOES THE SAME ACTION AS EQU, BUT THE NAME IS IN THE SET PSEUDO COMMAND MAY BE DEFINED PREVIOUSLY. THEN AFTER WHEN EXECUTION SET NAME WILL BE OVERDEFINED. 2.4.15. TITLE PSEUDO COMMAND FORMAT: TITLE "TEXT" TITLE SPECIFIES THE PROGRAM TITLE THAT CAN BE PRINTED ON THE FIRST LINE OF EACH PAGE. THE TEXT OF THE PROGRAM MAY BE ONLY ONE PSEUDO COMMAND TITLE OTHERWISE THERE WILL BE AN ERROR MESSAGE Q. IF THE PSEUDO-COMMAND NAME IS NOT SPECIFIED, THEN THE FIRST SIX CHARACTERS THE HEADER WILL SET THE MODULE NAME. IF THE PROGRAM HAS NO NAME OR TITLE, THEN THE MODULE NAME WILL BE SET FROM THE NAME OF THE SOURCE FILE. 2.4.16. SUBTTL PSEUDO COMMAND FORMAT: SUBTTL "TEXT" THIS PSEUDO COMMAND DISPLAYS HEADER AFTER HEADLINE, OUTLINED BY THE PSEUDO-COMMAND TITLE. THE LENGTH OF THE "TEXT" MUST NOT EXCEED 60 CHARACTERS. THE PROGRAM CAN HAVE ANY QUANTITY SUBTTL. 2.4.17. .COMMENT PSEUDO COMMAND FORMAT: .COMMENT "SEPARATOR""TEXT""SEPARATOR" THE FIRST CHARACTER COMING AFTER .COMMENT AND OTHER THAN A SPACE IS CONSIDERED A SEPARATOR. TEXT AFTER THE SEPARATOR IS COUNTED NOTES AND MAY CONSIDER AN ARBITRARY NUMBER OF LINES. NOTES END WHEN THE SECOND SEPARATOR IS MEETED - THE SAME SYMBOL THAT WAS USED AS THE FIRST SEPARATOR. 2.4.18. .PRINTX PSEUDO COMMAND FORMAT:.PRINTX "SEPARATOR""TEXT""SEPARATOR" FIRST CHARACTER AFTER .PRINTX, OTHER THAN SPACE, CONSIDERED A SEPARATOR. THE TEXT AFTER THE SEPARATOR IS THE BROADCAST TIME IS DISPLAYED ON THE TERMINAL UNTIL THERE WILL BE A SECOND SEPARATOR - THE SAME SYMBOL. *) NOTE. .PRINTX OUTPUTS A LISTING ON EACH PASS OF THE ASSEMBLY, THEREFORE, IF LISTING IS NECESSARY ONLY FOR ONE SPECIFIC PASS, THEN SHOULD USE IF1 PSEUDO COMMANDS OR IF2. 2.4.19. .RADIX PSEUDO COMMAND FORMAT: .RADIX "EXPRESSION" BY DEFAULT, THE NUMERICAL SYSTEM FOR ALL CONSTANTS IS DECIMAL. THE .RADIX PSEUDO COMMAND ALLOWS YOU TO CHANGE THE SYSTEM BASE DEFAULT NUMBERS (FROM 2 TO 16). "EXPRESSION" IN .RADIX ALWAYS IN THE DECIMAL NUMBER SYSTEM, REGARDLESS OF THE BASE NUMERAL SYSTEM IN ACTIVITY AT THIS MOMENT. 2.4.20. .REQUEST PSEUDO COMMAND FORMAT: .REQUEST "FILE NAME","FILE NAME",... THIS PSEUDO COMMAND SENDS THE REQUEST TO THE L80 HA LINKER SEARCHING FOR UNSATISFIED EXTERNAL NAMES IN FILES SPECIFIED IN LIST. FILE NAMES IN THE LIST MUST NOT CONTAIN FILE TYPES AND LINKS TO DISCS. L80 SEARCHES FOR A FILE WITH A SPECIFIED NAME AND WITH TYPE - REL ON DISK BY DEFAULT.

From Michael Kondratyev To Kirill Frolov 4 April 1999

Hi Kirill! Sat Apr 03 1999 23:08 you wrote to All: KF> Give the documents from the subject! :~-( KF> It’s not just difficult to drag from CP/M, but very difficult :-( =========== Cut and save =========== PC SOFTWARE MACROASSEMBLER M80 PROGRAMMER'S GUIDE CONTENTS 1. M80 MACRO ASSEMBLER --------------------- 1.1. PURPOSE AND CONDITIONS FOR USE OF MACROASSEMBLER.... 3 2. ELEMENTS AND BASIC CONSTRUCTIONS OF LANGUAGE.................................. 3 2.1. BASIC ELEMENTS OF LANGUAGE.................................... 3 2.1.1. SYMBOLS................................................... 3 2.1.2. NUMBERS, CONSTANTS AND STRINGS.................................... 3 2.1.3. SYMBOLIC NAMES.................................... 4 2.2. EXPRESSIONS............................................. 4 2.2.1. ARITHMETIC AND LOGICAL OPERATIONS................................. 4 2.2.2. ABSOLUTE AND MOVEMENT NAMES.................................... 5 2.2.3. EXTERNAL LINKS.................................................... 5 2.3. SYNTAX OF ASSEMBLY SENTENCES................................. 6 2.3.1. MARK............................................. 6 2.3.2. OPERATOR............................................... 6 2.3.3. OPERANDS AND NOTES.................................... 6 2.4. PSEUDO COMMANDS.................................................... 72.4.1. PSEUDO MOVEMENT COMMANDS..................................... 7 2.4.1.1. ASEG................................................... 7 2.4.1.2. COMMON......................................... 7 2.4.1.3. CSEG................................................... 7 2.4.1.4. DSEG......................................................... 8 2.4.2. DB - DEFINE BYTE.................................... 8 2.4.3. DC - DEFINE SYMBOL.................................... 8 2.4.4. DS - DEFINE AREA.................................... 8 2.4.5. DW - DEFINE A WORD.................................... 9 2.4.6. END............................................9 2.4.7. ENTRY/PUBLIC...................................9 2.4.8. EQU...................................9 2.4.9. EXT/EXTRN...................................10 2.4.10. INCLUDE.............................................10 2.4.11. NAME........................................10 2.4.12. ORG - SET ADDRESS COUNTER............................10 2.4.13. PAGE........................................11 2.4.14. SET........................................11 2.4.15. TITLE.........................................11 2.4.16. SUBTTL........................................11 2.4.17. .COMMENT........................................11 2.4.18. .PRINTX...................................122.4.19. .RADIX.............................................12 2.4.20. .REQUEST.............................................12 2.4.21 CONDITIONAL PSEUDO COMMANDS....................................13 2.4.21.1. ELSE.....................................13 2.4.21.2. ENDIF........................................13 2.4.22. PSEUDO COMMANDS CONTROL LISTING OUTPUT.........14 2.4.23. MOVEMENT BEFORE LOADING....................................14 2.5. MACRO COMMANDS AND BLOCKS....................................15 2.5.1. TERMINOLOGY...................................................15 2.5.2. REPT-ENDM BLOCK...................................15 2.5.3. IRP-ENDM BLOCK...................................15 2.5.4. IRPC-ENDM BLOCK...................................16 2.5.5. MACRO........................................16 2.5.6. EXITM........................................17 2.5.7. LOCAL........................................17 2.5.8. SPECIAL MACRO OPERATORS AND FORMS.................................18 3. OPERATING MANUAL FOR M80 COMPILER........20 3.1. CONTACTING THE COMPILER. INPUT AND OUTPUT DATA.20 3.2. COMPILATION KEYS...................................21 3.3. LISTING FORMAT............................................21 3.4. ERROR MESSAGES...................................................22 1. MACRO ASSEMBLY - M80 -----------------------1.1. PURPOSE AND CONDITIONS FOR USE OF MACROASSEMBLER MACROASSEMBLER IS A SYMBOLIC MACHINE COMPILER ORIENTED LANGUAGE (ASSEMBLER LANGUAGE). OH CONVERTS ORIGINAL PROGRAM WRITTEN IN MACROASSEMBLER LANGUAGE, IN MOVEABLE MODULE. FURTHER USING THE L80 LINKER THE MODULE CAN BE COMPOSED (ALONE OR WITH OTHER MODULES) IN PROGRAM READY FOR EXECUTION. USING MACRO REMEDIES ALLOWS YOU TO MOST OFTEN OTHER PARTS OF THE PROGRAM SHOULD BE FORMULATED IN THE FORM OF MACRO COMMANDS. USING MACROASSEMBLER MAKES IT MUCH EASIER WRITING PROGRAMS AND ALLOWS YOU TO USE THE MOST EFFECTIVELY ALL COMPUTER RESOURCES. THE MACROASSEMBLER IS LOCATED ON THE DISK AS A FILE NAMED M80.COM 2. ELEMENTS AND BASIC CONSTRUCTIONS OF LANGUAGE 2.1. BASIC ELEMENTS OF LANGUAGE 2.1.1. SYMBOLS ALL COMPLEX ELEMENTS OF THE M80 LANGUAGE ARE FORMED FROM SYMBOLS. THE following CAN BE USED AS SYMBOLS: -LETTERS OF THE LATIN ALPHABET FROM A TO Z; -NUMBERS FROM 0 TO 9; -SPECIAL SYMBOLS + - , : ; ( ) ' # $ SPACE ; 2.1.2. NUMBERS, CONSTANTS AND STRINGS NUMBERS ARE SIGNless 16-BIT VARIABLES. THE NUMBER IS ALWAYS CALCULATED IN THE DEFAULT NUMERAL SYSTEM IF IT IS NOT SPECIFIED IN SPECIAL FORM: NNNNNNNN B - BINARY (WHERE N IS 0 OR 1) NNNN O OR NNNN Q - OCTAL ( WHERE N - 0...7 )NNNN H OR NNNN X - HEXADECAL ( WHERE N - 0...9, A,B,C,D,E,F ),IF FIRST CHARACTER NOT A NUMBER, THEN MUST BE 0 IN FRONT OF IT 0NNNN H OR 0NNNN X BY DEFAULT ALL NUMBERS ARE COUNTING IN THE DECIMAL SYSTEM COUNTINGS. THIS MODE CAN BE CHANGED. WITH THE HELP OF THE .RADIX TEAM YOU CAN CHOOSE ANY BASE OF THE NUMERAL SYSTEM FROM 2 TO 16. OVERFLOW WHEN CALCULATING A NUMBER IS IGNORED BY SIGNIFICANTS ARE THE LOWER 16 BITS. A CHARACTER CONSTANT IS A STRING CONTAINING ONE OR TWO SYMBOL IN APOSTROPHES. BY THE VALUE OF A CHARACTER CONSTANT CONTAINING ONE CHARACTER, IS THE NUMERICAL VALUE OF THE CORRESPONDING CODE, ADOPTED IN THE CP/M OPERATING SYSTEM (OS). FOR EXAMPLE, VALUE CONSTANTS "A" WILL BE 41H. BY THE VALUE OF A CHARACTER CONSTANT CONTAINING TWO CHARACTERS, THERE WILL BE A TWO-BYTE NUMBER, AND THE HIGH BYTE WILL BE A VALUE THE FIRST CHARACTER, AND IN THE LOW BYTE IS THE VALUE OF THE SECOND CHARACTER. FOR EXAMPLE, THE VALUE OF THE CONSTANT "AB" WILL BE 41H*256+42H. A STRING IS A SET OF CHARACTERS ENCLOSED IN QUOTES OR APOSTROPHES. QUOTE QUOTES CAN ALSO BE A STRING ELEMENT, BUT THEY SHOULD DOUBLE. FOR EXAMPLE, OFFER DB "I" "GOING" "WALK" REMEMBER THE LINE I'M "GOING" FOR A WALK IF THERE ARE NO CHARACTERS BETWEEN THE QUOTES, THEN THIS STRING WILL BE BLANK LINE. 2.1.3. SYMBOL NAMESSYMBOLIC NAMES CAN CONTAIN ANY NUMBER SYMBOLS, BUT THE FIRST 6 CHARACTERS ARE MEANINGFUL. IN NAMES THE FOLLOWING SYMBOLS ARE ACCEPTABLE: LETTERS FROM A TO Z, NUMBERS FROM 0 TO 9, $, . , ? , @ A SYMBOLIC NAME CANNOT START WITH A NUMBER. WHEN PROCESSING NAMES, LETTERS FROM LOWER CASE ARE TRANSMITTED TO UPPER CASE LETTERS. 2.2. EXPRESSIONS 2.2.1. ARITHMETIC AND LOGICAL OPERATIONS THE FOLLOWING OPERATIONS ARE ALLOWED IN EXPRESSIONS, GIVEN IN IN DESCENDING ORDER OF THEIR IMPLEMENTATION PRIORITY. NUL LOW,HIGH *,/,MOD,SHR,SHL UHARY MINUS +,- EQ,NE,LT,LE,GT,GE NOT AND OR,XOR TO CHANGE THE ORDER OF OPERATIONS YOU MUST USE BRACKETS. WHEN EVALUATING EXPRESSIONS FIRST OPERATIONS WITH HIGHER PRIORITY ARE PERFORMED. EVERYTHING SUBEXPRESSIONS CONTAINING OPERATIONS WITH HIGHER PRIORITY CALCULATED FIRST. ALL OPERATIONS EXCEPT +,-,*,/, MUST BE SEPARATED FROM OPERANDS WITH AT LEAST ONE SPACE. ALLOCATION OPERATIONS BYTES (HIGH,LOW) ARE SEPARATED BY THE HIGH OR LOW 8 BITS FROM ABSOLUTE 16-BIT QUALITY. IF AS OPERAND A MOVEABLE VALUE IS USED, THEN HIGH AND LOW THEY ARE INTERPRETED AS OPERATIONS WORKING WITH ADDRESS ZERO. 2.2.2. ABSOLUTE AND MOVEABLE NAMES ALL SYMBOLIC NAMES USED AS OPERANDSIN EXPRESSIONS, THERE ARE EITHER ABSOLUTE NAMES OR MOVEMENTAL NAMES NAMES. MOVEMENT NAMES ARE DIVIDED INTO PROGRAM NAMES MOVE NAMES, MOVE DATA AND COMMON NAMES (Clause 2.4.1.). ALL SYMBOLIC NAMES ASSEMBLED FOR PSEUDO COMMANDS ASEG,CSEG (DEFAULT) OR DSEG, REFER TO ABSOLUTE, MOVEABLE PROGRAM OR MOVEABLE DATA ACCORDINGLY. THE NUMBER OF COMMON NAMES IN THE PROGRAM DEPENDS ON NUMBER OF COMMON BLOCKS NAMED IN THE PROGRAM USING COMMON PSEUDO COMMANDS. TWO SYMBOLIC COMMON NAMES ARE CONSIDERED DIFFERENT IF THEY ARE PRESENT IN DIFFERENT COMMON BLOCKS. FOR ANY OPERATION EXCEPT ADDITION AND SUBTRACTION, BOTH OPERANDS MUST BE ABSOLUTE. FOR ADDITION THE FOLLOWING RULES APPLY: 1) AT LEAST ONE OF THE OPERANDS MUST BE ABSOLUTE; 2) ABSOLUTE + MOVEABLE = MOVEABLE FOR SUBTRACTION THE RULES APPLY: 1) MOVEABLE - ABSOLUTE = MOVEABLE 2) MOVEABLE - MOVEABLE = ABSOLUTE AND 2) BOTH NAMES MUST BE MOVEABLE NAMES ONE TYPE. FOR EACH INTERMEDIATE STEP IN COMPUTING THE EXPRESSION THE ABOVE RULES MUST BE FOLLOWED, OTHERWISE WILL BE ISSUED ERROR MESSAGE. FOR EXAMPLE, IF FOO, BAZ AND ZAZ ARE THREE SYMBOLIC MOVEABLE NAMES, THEN EXPRESSION: FOO + BAZ - ZAZ WILL GENERATE AN ERROR MESSAGE BECAUSE THE FIRST STEP WILL BEFOLD TWO MOVEABLE NAMES. THIS IS POSSIBLE AVOID USING BRACKETS: FOO + (BAZ - ZAZ) 2.2.3. EXTERNAL LINKS A SYMBOLIC NAME MAY BE EXTERNAL (EXTRN) OR NOT (See P. 2.2.9.). THE EXTERNAL NAME IS ASSEMBLED INTO 2 BYTES. WHEN THE USE OF EXTERNAL NAMES IN EXPRESSIONS MUST BE FOLLOWED THE FOLLOWING RULES: 1) EXTRN ARE ALLOWED ONLY FOR ADDING AND SUBTRACTING; 2) IF AN EXTRN TYPE NAME IS USED IN AN EXPRESSION, THEN THE RESULT WILL ALWAYS BE EXTRN; 3) WHEN ADDING ANY OPERAND (BUT NOT BOTH AT THE SAME TIME) MAY BE EXTRN; 4) WHEN SUBTRACTING, ONLY THE FIRST OPERAND CAN BE EXTRN. =========== Cut and save ===========

From Michael Kondratyev To Kirill Frolov 4 April 1999

2.4.21. CONDITIONAL PSEUDO COMMANDS LIST OF CONDITIONAL PSEUDO COMMANDS IF/IFT "EXPRESSION" TRUE IF "EXPRESSION" IS NOT EQUAL TO 0 IFE/IFF "EXPRESSION" TRUE IF "EXPRESSION" EQUAL 0 IF1 TRUE ON FIRST PASS IF2 TRUE ON SECOND PASS IFDEP "SYMBOL" TRUE IF "SYMBOL" IS DEFINED OR ANNOUNCEMENT EXTERNAL IFDEF "SYMBOL" TRUE IF "SYMBOL" IS NOT DEFINED AND NOT ANNOUNCEED EXTERNAL IFB "ARGUMENT" TRUE IF "ARGUMENT" IS BLANK. THE ARGUMENT MUST BE IN ANGLE BRACKETS IFNB "ARGUMENT" TRUE IF "ARGUMENT" IS NOT BLANK. USED TO CHECK SOME PARAMETERS THE ARGUMENT MUST BE IN ANGLE BRACKETS. IFIDN "ARGUMENT1", TRUE IF STRING "ARGUMENT1" IDEN - "ARGUMENT2" IS THE SAME LINE "ARGUMENT2". ARGUMENTS MUST BE IN ANGLE BRACKETS. IFDIF "ARGUMENT1", TRUE IF STRING "ARGUMENT1" IS DIFFERENT "ARGUMENT2" COMES FROM THE LINE "ARGUMENT2". ALL CONDITIONAL PSEUDO COMMANDS HAVE THE FORMAT: IF XXX [ARGUMENT] . . . [ELSE . . ] ENDIF IT IS ALLOWED TO INVEST CONDITIONAL PSEUDO-COMMANDS, I.E. A PSEUDO TEAM WITHIN A PSEUDO TEAM. TO AVOID MISTAKES EVERYTHING THE ARGUMENTS OF CONDITIONAL PSEUDO-COMMANDS MUST BE KNOWN AT THE FIRST TIME PASSAGE. FOR IF, IFT, IFF AND IFE, THE EXPRESSIONS MUST CONTAINONLY CERTAIN SYMBOLS AND ALL EXPRESSIONS MUST BE ABSOLUTE. 2.4.21.1. ELSE EACH CONDITIONAL PSEUDO-COMMAND MAY ALSO PRESENT PSEUDO-COMMAND ELSE, WHICH ALLOWS GENERATION CODES IF THE CONDITION TO BE CHECKED IS FALSE. FOR EVERY IF ONLY ONE ELSE IS ALLOWED AND EACH ELSE MATCHES TO THE LAST OPEN IF. 2.4.21.2. ENDIF EACH PSEUDO IF COMMAND MUST HAVE A CORRESPONDING IF AN ENDIF PSEUDO-COMMAND THAT ENDS THE CONDITION. 2.4.22. PSEUDO COMMANDS CONTROL LISTING OUTPUT THE OUTPUT OF A LISTING TO A FILE CAN BE CONTROLLED USING TWO PSEUDOCOMMAND: .LIST AND .XLIST IF THE LISTING IS NOT DISPLAYED, THEN THESE PSEUDO COMMANDS IGNORED. THE DEFAULT IS THE .LIST PSEUDO COMMAND, INITIATING LISTING OUTPUT. IF THE PSEUDO COMMAND .XLIST IS ENCOUNTERED, THEN OUTPUT LISTING STOPS UNTIL THE .LIST PSEUDO-COMMAND IS ENCOUNTERED. OUTPUT OF CONDITIONAL BLOCKS WITH THE VALUE OF FALSE IS USED BY THREE PSEUDO COMMANDS: .SFCOND SUPPRESS THE OUTPUT OF CONDITIONAL BLOCKS HAVING VALUE "FALSE"; .LFCOND RESTORE OUTPUT OF CONDITIONAL BLOCKS WITH VALUE "FALSE"; .TFCOND CONTROL THE OUTPUT OF CONDITIONAL BLOCKS WITH VALUE "FALSE", DEPENDING ON THE /X KEY. CROSS TABLE OUTPUT IS CONTROLLED BY PSEUDO COMMANDS .CREF AND .XCREF. IF CROSS MEANS ARE NOT USED, THEN THESEPSEUDO COMMANDS ARE IGNORED. DEFAULT CONDITION - .CREF. IF THE .XCREF PSEUDO-COMMAND IS OPPOSED, THEN OUTPUTING CROSS-REFERENCES CONTINUES UNTIL THE PSEUDO TEAM MEETS AGAIN .CREF. OUTPUT OF MACRO/REPT/IRP/IRPC EXTENSIONS IS CONTROLLED BY THREE BY PSEUDO COMMANDS: .LALL DISPLAYS FULL MACROTEXT FOR ALL EXTENSIONS; .SALL OUTPUT ONLY GENERATED OBJECT CODES; .XALL OUTPUT GENERATED OBJECT CODES AND THE CORRESPONDING TEXT (DEFAULT CONDITION). 2.4.23. MOVEMENT BEFORE LOADING USING TWO PSEUDO COMMANDS: .PHAZE AND .DEPHAZE SOME PARTS OF PROGRAMS CAN BE LOCATED IN ONE AREA AND BE EXECUTED ONLY IN ANOTHER, SPECIFIED AREA. THE PSEUDO-COMMAND .PHAZE INDICATES THE BEGINNING OF SUCH A SECTION, AND PSEUDO-COMMAND .DEPHAZE - END OF SITE. EXAMPLE. 0000'.PHAZE 0100 CD 0106 F00: CALL BAZ 0103 C3 0007 JMP Z00 0106 C9 BAZ: RET 0007' C3 0005 Z00: JMP 5 ALL MARKS INSIDE THE .PHAZE BLOCK RECEIVE ABSOLUTE VALUES DEPENDING ON THE VALUE OF THE .PHAZE ADDRESS COUNTER. CODES, HOWEVER, LOADED INTO THE CURRENT MEMORY AREA (I.E. FROM 0000' IN THIS EXAMPLE). THEY CAN LATER BE FORWARDED TO ADDRESS 100H AND EXECUTED. 2.5. MACRO COMMANDS AND BLOCKS MACRO ASSEMBLER MACRO TOOLS INCLUDE THREEREPEAT MACRO COMMANDS (REPT, IRP, IRPC) AND OPERATION MACRO DEFINITIONS (MACRO). EVERY MACRO COMMAND MUST END WITH PSEUDO-COMMAND ENDM. 2.5.1. TERMINOLOGY TO DESCRIBE MACRO COMMANDS THE FOLLOWING TERMS ARE USED: 1) "FOR.PAR." - FORMAL PARAMETER ALL FORMAL PARAMETERS ARE ALLOWED SYMBOLIC THE NAMES THAT APPEAR IN THE BODY OF THE MACRO EXPANSION; 2) "LIST FORM PAR." - LIST OF FORMAL PARAMETERS, SEPARATED BY COMMA; 3) "LIST OF ARG." - LIST OF ARGUMENTS, SEPARATED BY COMMA. THE LIST OF ARGUMENTS IS ALWAYS ENCLOSED IN ANGLE BRACKETS. IF THERE IS NO CHARACTER IN ANGLE BRACKETS OR NO CHARACTER BETWEEN TWO COMMA CHARACTER, THIS IS THE ZERO ARGUMENT IN THE LIST. WHEN INVESTED ANGLE BRACKETS (BRACKETS IN BRACKETS) EACH INNER LEVEL PARENTHESES ARE REMOVED WHEN USING THE APPROPRIATE ARGUMENT. THE QUOTED STRING IS A VALID ARGUMENT; 4) "LIST OF PAIRS." - LIST OF PARAMETERS SEPARATED BY COMMA. 2.5.2. REPT-ENDM BLOCK MACRO FORMAT: REPT "EXPRESSION" . . ENDM THE VALUE OF THE "EXPRESSION" AND THE GROUP OF SENTENCES IS COMPUTED, BETWEEN REPT AND ENDM, THE RECEIVED NUMBER IS REPEATED ONCE. "EXPRESSION" CANNOT CONTAIN EXTERNAL AND UNDEFINED TERMS NAMES. EXAMPLE. X SET 0 REPT 10 ;GENERATES DB 1 - DB 10 X SET X+1 DB X ENDM2.5.3. IRP-ENDM BLOCK MACRO FORMAT: IRP "FOR.PAR.", . . . ENDM THE NUMBER OF ARGUMENTS IN THE LIST DETERMINES HOW MANY TIMES THERE WILL BE THE GROUP OF SENTENCES CONCLUDED BETWEEN IRP AND ENDM WAS REPEATED. WHEN EACH REPEATMENT INSTEAD OF ALL INVESTMENTS OF A FORMAL PARAMETER THE NEXT VALUE FROM THE LIST OF ARGUMENTS IS SUBSTITUTED. IF THE LIST OF ARGUMENTS IS EMPTY (<>), THEN THE GROUP OF SENTENCES PROCESSED ONCE AND THE FORMAL PARAMETER IS REMOVED FROM ALL ENTRIES. EXAMPLE. IRP X, <1,2,3,4,5,6,7,8,9,10> DB X ENDM THE RESULT WILL BE SIMILAR TO THE PREVIOUS EXAMPLE. 2.5.4. IRPC-ENDM BLOCK MACRO FORMAT: IRPC "FOR.PAR.",STRING (OR "STRING") . . . ENDM THE NUMBER OF CHARACTERS IN A LINE INDICATES HOW MANY TIMES THERE WILL BE GROUP OF OFFERS BETWEEN IRPC AND ENDM REPEATED. IN THIS CASE ANGLE BRACKETS ARE NOT REQUIRED. AT EACH REPEAT INSTEAD THE NEXT SIGN FROM WILL BE SUBSTITUTED FOR THE FORMAL PARAMETER LINES. EXAMPLE. IRPC X, 0123456789 DB X+1 ENDM THE RESULT IS SIMILAR TO THE TWO PREVIOUS EXAMPLES. 2.5.5. MACRO MACRO FORMAT: "NAME" MACRO "FORMAT PAR LIST." . . . ENDM WITH THE HELP OF MACRO, THE USER CAN CREATE THEIR OWN MACRO COMMANDS AND PLACE THEM IN DIFFERENT PARTS OF THE PROGRAM."NAME" IS A SYMBOLIC NAME BY WHICH SUBSEQUENTLY THE GIVEN MACRO COMMAND WILL BE CALLED. "LIST FORM PAR." - THIS IS A LIST OF PARAMETERS THAT WILL BE CHANGE (REPLACE WITH ACTUAL PARAMETERS) EACH CALLING A MACRO COMMAND. OFFERS BETWEEN MACRO AND ENDM ARE BODY OF THE MACRO COMMAND. THE FORM OF REFERENCE TO THE MACRO COMMAND IS FOLLOWING: "NAME" "PARAMETER LIST." WHERE "NAME" IS THE NAME ASSIGNED TO MACRO IN THE MACRO DEFINITION; "LIST OF PAIRS." - THIS IS A LIST OF ACTUAL PARAMETERS THAT WHEN CALLED, MACRO COMMANDS WILL REPLACE THE CORRESPONDING FORMAL PARAMETERS. IF THE NUMBER OF ACTUAL PARAMETERS EXCEEDS THE QUANTITY FORMAL PARAMETERS, THEN EXTRA ACTUAL PARAMETERS IGNORED. IF THE NUMBER OF PARAMETERS IS LESS THAN THE NUMBER OF FORMAL PARAMETERS, THEN INSTEAD OF THE MISSING ACTUAL PARAMETERS WILL BE ZEROS ARE SUBMITTED. EXAMPLE. F00 MACRO X Y SET 0 REPT X Y SET Y+1 DB Y ENDM ENDM WHEN CALLING F00 10, THIS MACRO COMMAND WILL GENERATE THE SAME SENTENCES AS IN THE PREVIOUS EXAMPLES. 2.5.6. EXIT THE EXITM PSEUDO COMMAND IS USED TO TERMINATE REPT/IRP/IRPC OR MACRO CALL. WHEN executing EXITM THE MACRO EXPANSION IS IMMEDIATELY DISPLAYED AND EVERYTHING REMAINING EXPANSION OR REPEATMENT IS NOT GENERATED. IF BLOCK, CONTAINING EXITM IS ENTERED INTO ANOTHER BLOCK, THEN EXTERNAL LEVELCONTINUES TO EXPAND. 2.5.7. LOCAL TEAM FORMAT: LOCAL "FOR PAR LIST." THIS PSEUDO COMMAND IS ONLY ALLOWED INSIDE A MACRO DEFINITION MACRO. WHEN EXECUTING LOCAL, THE ASSEMBLY CREATES A UNIQUE SYMBOLIC NAME FOR EACH FORMAL PARAMETER FROM THE LIST AND THEN SUBSTITUTES THIS SYMBOLIC NAME AT EACH ENTRY OF THIS FORMAL PARAMETER INTO MACRO EXPANSION. USUALLY THESE UNIQUE SYMBOLIC NAMES ARE USED TO SPECIFY LABELS INSIDE MACRO. THIS ELIMINATES THE POSSIBILITY OF APPEARING MULTIPLE TIMES OF CERTAIN MARKS WHEN CALLING THIS DATA MULTIPLE CALLS MACRO COMMANDS. SYMBOLIC NAMES CREATED WITH THE HELP LOCAL, ARE IN THE RANGE FROM ..0001 TO ..FFFF. THEREFORE THE USER SHOULD AVOID TYPE NAMES IN THEIR PROGRAMS ..NNNN. IF THE MACRO COMMANDS HAS LOCAL, THEN LOCAL MUST BE IN THE FIRST APPLICATION OF THE MACRO-DEFINITION.

From Michael Kondratyev To Kirill Frolov 4 April 1999

2.5.8. SPECIAL MACRO OPERATORS AND FORMS & AMPERSAND IS USED FOR CONCATENATION OF TEXT OR SYMBOLIC NAMES. FORMAL PARAMETER, REPRESENTING A STRING IN APOSTROPHES WILL NOT BE REPLACED IN THE EXPANSION IF IT WILL NOT BE IN FRONT AMPERSAND. TO FORM A SYMBOLIC NAME FROM TEXT AND FORMAL PARAMETER BETWEEN THEM IS NECESSARY PUT &; EXAMPLE. ERG MACRO X ERROR&X: PUSH BX MVI BX,'&X' JMP ERROR ENDM IN THIS EXAMPLE, CALLING ERG A WILL CREATE THE FOLLOWING SEQUENCE OF SENTENCES: ERROR&A: PUSH B MVI B,'A' JMP ERROR *) NOTE. TWO SYMBOLIC NAMES ARE CONSIDERED THE SAME IF ONE NAME IS DIFFERENT FROM ANOTHER ONLY BY THE PRESENCE OF AN AMPERSAND. SO THE SYMBOLIC NAME ERRORA IS EQUIVALENT TO THE NAME ERROR&A. ;; IF THE MACRO COMMENTS ARE BEFORE TWO COMMENTS SEMOLONs, THESE COMMENTS DO NOT APPEAR IN MACRO EXTENSIONS EVEN IF THERE IS A .LALL SPECIFICATION; $ REFERENCE TO THE CURRENT ADDRESS COUNTER VALUE; ! THE SYMBOL AFTER THE EXCLAMATION POINT ENTERED LITERALLY; NUL IS AN OPERATOR THAT RETURN TRUE IF HIS ARGUMENT IS ZERO. REST OF LINE AFTER NUL CONSIDERED AS AN ARGUMENT FOR NUL. CONDITION IF NULTHE ARGUMENT WILL BE "FALSE" IF WHEN EXPANDING THE FIRST THE ARGUMENT CHARACTER WILL BE DIFFERENT FROM THE SEMOLON OR "CR" (VK). THIS OPERATOR IS RECOMMENDED USE TO CHECK THE PRESENCE OF ZERO PARAMETERS IN CONDITIONAL PSEUDO COMMANDS IFB AND IFNB; % THIS OPERATOR CAN ONLY BE USED IN AN ARGUMENT MACRO COMMANDS. % CONVERTS FOLLOWING IT EXPRESSION (USUALLY SYMBOLIC NAME) IN NUMBER IN CURRENT NUMERAL SYSTEM. DURING MACRO EXPANSION THE OBTAINED NUMBER IS SUBMITTED INTO THE FORMAL PARAMETER. USING % ALLOWS YOU TO CALL A MACRO COMMAND WITH BY NUMBER (USUALLY A MACRO CALL IS A CALL WITH TEXT FROM ARGUMENTOV). THE EXPRESSION FOLLOWING % MUST MEET THE SAME REQUIREMENTS AS IN PSEUDOCOMMAND DS. EXAMPLE. NORMALLY LB, WHICH IS AN ARGUMENT FOR MACLAB, MUST IT WAS SUBMITTED BY MACRO'S ARGUMENT. % CONVERTS LB TO NUMBER AND INSTEAD OF Y, A NUMBER IS SUBMITTED. WITHOUT % BROADCAST RESULT THERE WOULD BE 'ERROR LB'. MACLAB MACRO Y ERR&Y: DB 'ERROR&Y