home *** CD-ROM | disk | FTP | other *** search
- TITLE 'MACHINE LANGUAGE FUNCTIONS FOR 6800/6801 CROSS-ASSEMBLER V2.6'
- PAGE 60
- ;
- ; 6800/6801 CROSS-ASSEMBLER V. 2.6
- ;
- ; MAY, 1980
- ;
- ; JULY, 1980 -- REV. 2.2 CONSISTING OF FIXING THE M ERRORS THAT
- ; COME FROM FORWARD REFERENCES IN FDB AND FCB PSEUDO-OPS.
- ;
- ; OCTOBER, 1980 -- REV. 2.3 CONSISTING OF UPDATING THE ASSEMBLY
- ; LANGUAGE FILE AND I/O ROUTINES TO MATCH AND TAKE
- ; ADVANTAGE OF BDS C V1.4.
- ;
- ; OCTOBER, 1983 -- REV. 2.4 CONSISTING OF ADDING THE CPU PSEUDO-OP,
- ; ADDING THE 6801 CPU'S EXTRA OPCODES, AND SPEEDING UP THE
- ; CODE A BIT.
- ;
- ; SEPTEMBER, 1984 -- REV. 2.5 CONSISTING OF FIXING BUGS WITH THE SYMBOL
- ; TABLE SORT, THE WRITING OF FILES TO SPECIFIED DRIVES, AND THE
- ; HANDLING OF BLANK INPUT LINES.
- ;
- ; JUNE, 1985 -- REV. 2.6 CONSISTING OF FIXING A BUG IN THE IF BLOCK
- ; NESTING MECHANISM.
- ;
- ; COPYRIGHT (C) 1980,83,84,85 WILLIAM C. COLLEY, III.
- ;
- ;FILE: A68TBLS.CSM
- ;
- ;MACHINE LANGUAGE FUNCTIONS.
- ;
-
- ;
- ;ARGUEMENTS ARE PASSED THROUGH OFFSETS FROM THE STACK POINTER.
- ;THEY ARE DEFINED AS FOLLOWS:
- ;
- ARG0 EQU 2 ;FIRST ARGUEMENT.
- ARG1 EQU 4 ;SECOND ARGUEMENT.
- ARG2 EQU 6 ;THIRD ARGUEMENT.
- ARG3 EQU 8 ;FOURTH ARGUEMENT.
- ;
- PAGE
- ;
- ;THIS FUNCTION GETS OPCODE NUMBER NUM FROM THE OPCODE TABLE. THE FUNCTION
- ;RETURNS 0 IF THE OPCODE WAS NOT FOUND, 1 IF IT WAS.
- ;
- ;FUNCTION IS CALLED AS FOLLOWS:
- ;
- ; GETOPC(NUM,OPCODE,VALUE,ATTRIB);
- ;
- ; NUM CHARACTER CONTAINING THE NUMBER OF THE DESIRED ENTRY.
- ; 0 REPRESENTS THE FIRST ENTRY IN THE TABLE. THE
- ; TABLE IS IN ALPHABETICAL ORDER FOR THE BENEFIT
- ; OF THE BINARY SEARCHING ROUTINE (WRITTEN IN C).
- ; OPCODE POINTER TO A 5-CHARACTER ARRAY WHICH WILL RECEIVE THE
- ; OPCODE'S NAME (NULL TERMINATED).
- ; VALUE POINTER TO A CHARACTER THAT WILL RECEIVE THE OPCODE'S
- ; VALUE.
- ; ATTRIB POINTER TO A CHARACTER THAT WILL RECEIVE THE OPCODE'S
- ; ATTIBUTE BYTE.
- ;
- NUM EQU ARG0
- OPCODE EQU ARG1
- VALUE EQU ARG2
- ATTRIB EQU ARG3
- ;
- FUNCTION GETOPC
- ;
- LXI H, NUM ;GET ENTRY NUMBER IN TABLE.
- DAD SP
- MOV A,M
- CPI OPTBLL ;ENTRY IN TABLE?
- LXI H, 0 ;IF NOT, RETURN 0.
- RNC
- ;
- MOV L,A ;FIND ENTRY BY COMPUTING
- DAD H ;(6 * NUM) + TABLE BASE.
- MOV E,L
- MOV D,H
- DAD H
- DAD D
- LXI D, OPCTBL
- DAD D
- MOV E,L
- MOV D,H
- ;
- LXI H, OPCODE ;FIND OPCODE RETURN AREA.
- DAD SP
- MOV A,M
- INX H
- MOV H,M
- MOV L,A
- ;
- PUSH B ;MOVE OPCODE OUT TO RETURN AREA.
- MVI C, 4
- MOVOPC: LDAX D
- INX D
- MOV M,A
- INX H
- DCR C
- JNZ MOVOPC
- POP B
- ;
- MVI M, 0 ;TERMINATE OPCODE.
- ;
- LXI H, ATTRIB ;FIND ATTRIBUTE RETURN AREA.
- DAD SP
- MOV A,M
- INX H
- MOV H,M
- MOV L,A
- ;
- LDAX D ;MOVE ATTRIBUTE TO RETURN AREA.
- INX D
- MOV M,A
- ;
- LXI H, VALUE ;FIND VALUE RETURN AREA.
- DAD SP
- MOV A,M
- INX H
- MOV H,M
- MOV L,A
- ;
- LDAX D ;MOVE VALUE TO RETURN AREA.
- MOV M,A
- ;
- LXI H, 1 ;RETURN 1 FOR SUCCESSFUL GET.
- RET
- ;
- ;THE OPCODE TABLE ITSELF:
- ;
- ; EACH ENTRY HAS A FOUR-BYTE NAME, A ONE-BYTE ATTRIBUTE,
- ; AND A ONE-BYTE VALUE. THE VALUE IS THE LOWEST
- ; NUMBERED OPCODE HAVING THAT NAME.
- ;
- ; THE ATTRIBUTE BYTE BITS ARE ALLOCATED AS FOLLOWS:
- ;
- ; 7 = PSEUDO-OP.
- ; 6 = IF NOT PSEUDO-OP, DIRECT ADDRESSING ALLOWED.
- ; IF PSEUDO-OP, IF GROUP (NO LABEL ALLOWED).
- ; 5 = RELATIVE ADDRESSING.
- ; 4 = REGISTER (A,B) MUST BE SPECIFIED.
- ; 3 = 16-BIT IMMEDIATE ADDRESSING ALLOWED.
- ; 2 = 8-BIT IMMEDIATE ADDRESSING ALLOWED.
- ; 1 = INDEXED OR EXTENDED ADDRESSING ALLOWED.
- ; 0 = REGISTER (A,B) MAY BE SPECIFIED.
- ;
- ; BITS 4 AND 0 WILL NEVER OCCUR TOGETHER BECAUSE THE REGISTER (A,B)
- ; SPECIFICATION IS EITHER FORBIDDEN, OPTIONAL, OR REQUIRED. BOTH BITS
- ; SET IS USED TO INDICATE AN OPCODE THAT IS ONLY VALID FOR THE 6801
- ; CPU. WHEN THE LINE ASSEMBLY ROUTINE FINDS BOTH BITS SET, IT CHECKS
- ; WHETHER OR NOT 6801 OPCODES ARE ENABLED, THEN CLEARS BOTH BITS. IN
- ; ADDITION, IF THE 6801 OPCODES ARE ENABLED, THE LINE ASSEMBLY ROUTINE
- ; CONVERTS THE ATTRIBUTE BYTE OF THE JSR OPCODE FROM 02H TO 42H.
- ;
- OPCTBL: DB 'ABA', 0, 0, 1BH
- DB 'ABX', 0, 11H, 3AH
- DB 'ADC', 0, 56H, 89H
- DB 'ADCA', 46H, 89H
- DB 'ADCB', 46H, 0C9H
- DB 'ADD', 0, 56H, 8BH
- DB 'ADDA', 46H, 8BH
- DB 'ADDB', 46H, 0CBH
- DB 'ADDD', 5BH, 0C3H
- DB 'AND', 0, 56H, 84H
- DB 'ANDA', 46H, 84H
- DB 'ANDB', 46H, 0C4H
- DB 'ASL', 0, 03H, 48H
- DB 'ASLA', 0, 48H
- DB 'ASLB', 0, 58H
- DB 'ASLD', 11H, 05H
- DB 'ASR', 0, 03H, 47H
- DB 'ASRA', 0, 47H
- DB 'ASRB', 0, 57H
- DB 'BCC', 0, 20H, 24H
- DB 'BCS', 0, 20H, 25H
- DB 'BEQ', 0, 20H, 27H
- DB 'BGE', 0, 20H, 2CH
- DB 'BGT', 0, 20H, 2EH
- DB 'BHI', 0, 20H, 22H
- DB 'BHS', 0, 20H, 24H
- DB 'BIT', 0, 56H, 85H
- DB 'BITA', 46H, 85H
- DB 'BITB', 46H, 0C5H
- DB 'BLE', 0, 20H, 2FH
- DB 'BLO', 0, 20H, 25H
- DB 'BLS', 0, 20H, 23H
- DB 'BLT', 0, 20H, 2DH
- DB 'BMI', 0, 20H, 2BH
- DB 'BNE', 0, 20H, 26H
- DB 'BPL', 0, 20H, 2AH
- DB 'BRA', 0, 20H, 20H
- DB 'BRN', 0, 31H, 21H
- DB 'BSR', 0, 20H, 8DH
- DB 'BVC', 0, 20H, 28H
- DB 'BVS', 0, 20H, 29H
- DB 'CBA', 0, 0, 11H
- DB 'CLC', 0, 0, 0CH
- DB 'CLI', 0, 0, 0EH
- DB 'CLR', 0, 03H, 4FH
- DB 'CLRA', 0, 4FH
- DB 'CLRB', 0, 5FH
- DB 'CLV', 0, 0, 0AH
- DB 'CMP', 0, 56H, 81H
- DB 'CMPA', 46H, 81H
- DB 'CMPB', 46H, 0C1H
- DB 'COM', 0, 03H, 43H
- DB 'COMA', 0, 43H
- DB 'COMB', 0, 53H
- DB 'CPU', 0, 80H, 0BH
- DB 'CPX', 0, 4AH, 8CH
- DB 'DAA', 0, 0, 19H
- DB 'DEC', 0, 03H, 4AH
- DB 'DECA', 0, 4AH
- DB 'DECB', 0, 5AH
- DB 'DES', 0, 0, 34H
- DB 'DEX', 0, 0, 09H
- DB 'ELSE', 0C0H, 07H
- DB 'END', 0, 80H, 06H
- DB 'ENDI', 0C0H, 08H
- DB 'EOR', 0, 56H, 88H
- DB 'EORA', 46H, 88H
- DB 'EORB', 46H, 0C8H
- DB 'EQU', 0, 80H, 01H
- DB 'FCB', 0, 80H, 02H
- DB 'FCC', 0, 80H, 04H
- DB 'FDB', 0, 80H, 03H
- DB 'IF', 0, 0, 0C0H, 09H
- DB 'INC', 0, 03H, 4CH
- DB 'INCA', 0, 4CH
- DB 'INCB', 0, 5CH
- DB 'INS', 0, 0, 31H
- DB 'INX', 0, 0, 08H
- DB 'JMP', 0, 02H, 4EH
- DB 'JSR', 0, 02H, 8DH
- DB 'LDA', 0, 56H, 86H
- DB 'LDAA', 46H, 86H
- DB 'LDAB', 46H, 0C6H
- DB 'LDD', 0, 5BH, 0CCH
- DB 'LDS', 0, 4AH, 8EH
- DB 'LDX', 0, 4AH, 0CEH
- DB 'LSL', 0, 03H, 48H
- DB 'LSLA', 0, 48H
- DB 'LSLB', 0, 58H
- DB 'LSLD', 11H, 05H
- DB 'LSR', 0, 03H, 44H
- DB 'LSRA', 0, 44H
- DB 'LSRB', 0, 54H
- DB 'LSRD', 11H, 04H
- DB 'MUL', 0, 11H, 3DH
- DB 'NEG', 0, 03H, 40H
- DB 'NEGA', 0, 40H
- DB 'NEGB', 0, 50H
- DB 'NOP', 0, 0, 01H
- DB 'ORA', 0, 56H, 8AH
- DB 'ORAA', 46H, 8AH
- DB 'ORAB', 46H, 0CAH
- DB 'ORG', 0, 80H, 00H
- DB 'PSH', 0, 10H, 36H
- DB 'PSHA', 0, 36H
- DB 'PSHB', 0, 37H
- DB 'PSHX', 11H, 3CH
- DB 'PUL', 0, 10H, 32H
- DB 'PULA', 0, 32H
- DB 'PULB', 0, 33H
- DB 'PULX', 11H, 38H
- DB 'RMB', 0, 80H, 05H
- DB 'ROL', 0, 03H, 49H
- DB 'ROLA', 0, 49H
- DB 'ROLB', 0, 59H
- DB 'ROR', 0, 03H, 46H
- DB 'RORA', 0, 46H
- DB 'RORB', 0, 56H
- DB 'RTI', 0, 0, 3BH
- DB 'RTS', 0, 0, 39H
- DB 'SBA', 0, 0, 10H
- DB 'SBC', 0, 56H, 82H
- DB 'SBCA', 46H, 82H
- DB 'SBCB', 46H, 0C2H
- DB 'SEC', 0, 0, 0DH
- DB 'SEI', 0, 0, 0FH
- DB 'SET', 0, 80H, 0AH
- DB 'SEV', 0, 0, 0BH
- DB 'STA', 0, 52H, 87H
- DB 'STAA', 42H, 87H
- DB 'STAB', 42H, 0C7H
- DB 'STD', 0, 53H, 0CDH
- DB 'STS', 0, 42H, 08FH
- DB 'STX', 0, 42H, 0CFH
- DB 'SUB', 0, 56H, 80H
- DB 'SUBA', 46H, 80H
- DB 'SUBB', 46H, 0C0H
- DB 'SUBD', 5BH, 83H
- DB 'SWI', 0, 0, 3FH
- DB 'TAB', 0, 0, 16H
- DB 'TAP', 0, 0, 06H
- DB 'TBA', 0, 0, 17H
- DB 'TPA', 0, 0, 07H
- DB 'TST', 0, 03H, 4DH
- DB 'TSTA', 0, 4DH
- DB 'TSTB', 0, 5DH
- DB 'TSX', 0, 0, 30H
- DB 'TXS', 0, 0, 35H
- DB 'WAI', 0, 0, 3EH
- ;
- OPTBLL EQU 149 ;CALCULATE LENGTH OF TABLE.
- ;
- ENDFUNCTION
- ;
- PAGE
- ;
- ;THIS FUNCTION RETURNS THE NUMBER OF OPCODES IN THE OPCODE TABLE
- ;FOR THE BENEFIT OF THE BINARY SEARCHING ROUTINE (WRITTEN IN C).
- ;
- ;THIS FUNCTION IS CALLED AS FOLLOWS:
- ;
- ; NUMOPCS();
- ;
- FUNCTION NUMOPCS
- ;
- LXI H, OPTBLL ;RETURN NUMBER OF OPCODES.
- RET
- ;
- ENDFUNCTION
- ;
- PAGE
- ;
- ;THIS FUNCTION REMOVES THE PARITY BIT FROM ITS ARGUMENT AND LOOKS IT UP IN
- ;A TABLE. THE TABLE CLASSIFIES THE CHARACTER INTO ONE OF THE FOLLOWING BINS
- ;RETURNING THE APPROPRIATE CODE.
- ;
- ALPHA EQU 0 ;ALPHABETIC.
- NUMERC EQU 1 ;NUMERIC (0-9).
- ENDLIN EQU 2 ;END OF LINE MARKERS (CR ;).
- COMMA EQU 3 ;FIELD SEPARATORS (,).
- OPERAT EQU 4 ;OPERATORS (* + / - > < = ( )).
- BASDES EQU 5 ;BASE DESIGNATORS ($ @ %).
- QUOTE EQU 6 ;STRING DELIMITERS (' ").
- IMMED EQU 7 ;IMMEDIATE MODE DESIGNATOR (#).
- BLANK EQU 10 ;WHITE SPACE CHARACTER (SPC TAB).
- TRASH EQU 11 ;OTHER CONTROL CHARACTERS.
- ;
- ;THE FUNCTION IS CALLED AS FOLLOWS:
- ;
- ; GETATTR(BYTE);
- ;
- ; BYTE CHARACTER VALUE TO BE LOOKED UP.
- ;
- BYTE EQU ARG0
- ;
- FUNCTION GETATTR
- ;
- LXI H, BYTE ;GET BYTE.
- DAD SP
- MOV A,M
- ANI 7FH ;STRIP PARITY BIT.
- ;
- LXI H, ATTTBL ;INDEX INTO TABLE.
- ADD L
- MOV L,A
- MVI A, 0
- ADC H
- MOV H,A
- ;
- MOV L,M ;RETURN RESULT.
- MVI H, 0
- RET
- ;
- ;ATTRIBUTE TABLE ITSELF:
- ;
- ATTTBL: DB TRASH ; ^@
- DB TRASH ; ^A
- DB TRASH ; ^B
- DB TRASH ; ^C
- DB TRASH ; ^D
- DB TRASH ; ^E
- DB TRASH ; ^F
- DB TRASH ; ^G
- DB TRASH ; ^H
- DB BLANK ; TAB
- DB ENDLIN ; LF
- DB TRASH ; ^K
- DB TRASH ; FF
- DB TRASH ; CR
- DB TRASH ; ^N
- DB TRASH ; ^O
- DB TRASH ; ^P
- DB TRASH ; ^Q
- DB TRASH ; ^R
- DB TRASH ; ^S
- DB TRASH ; ^T
- DB TRASH ; ^U
- DB TRASH ; ^V
- DB TRASH ; ^W
- DB TRASH ; ^X
- DB TRASH ; ^Y
- DB TRASH ; ^Z
- DB TRASH ; ESC
- DB TRASH ; ^\
- DB TRASH ; ^]
- DB TRASH ; ^^
- DB TRASH ; ^-
- DB BLANK ; SPC
- DB ALPHA ; EXCLAMATION POINT.
- DB QUOTE ; "
- DB IMMED ; #
- DB BASDES ; $
- DB BASDES ; %
- DB ALPHA ; &
- DB QUOTE ; '
- DB OPERAT ; (
- DB OPERAT ; )
- DB OPERAT ; *
- DB OPERAT ; +
- DB COMMA ; ,
- DB OPERAT ; -
- DB ALPHA ; .
- DB OPERAT ; /
- DB NUMERC ; 0
- DB NUMERC ; 1
- DB NUMERC ; 2
- DB NUMERC ; 3
- DB NUMERC ; 4
- DB NUMERC ; 5
- DB NUMERC ; 6
- DB NUMERC ; 7
- DB NUMERC ; 8
- DB NUMERC ; 9
- DB ALPHA ; :
- DB ENDLIN ; ;
- DB OPERAT ; <
- DB OPERAT ; =
- DB OPERAT ; >
- DB ALPHA ; ?
- DB BASDES ; @
- DB ALPHA ; A
- DB ALPHA ; B
- DB ALPHA ; C
- DB ALPHA ; D
- DB ALPHA ; E
- DB ALPHA ; F
- DB ALPHA ; G
- DB ALPHA ; H
- DB ALPHA ; I
- DB ALPHA ; J
- DB ALPHA ; K
- DB ALPHA ; L
- DB ALPHA ; M
- DB ALPHA ; N
- DB ALPHA ; O
- DB ALPHA ; P
- DB ALPHA ; Q
- DB ALPHA ; R
- DB ALPHA ; S
- DB ALPHA ; T
- DB ALPHA ; U
- DB ALPHA ; V
- DB ALPHA ; W
- DB ALPHA ; X
- DB ALPHA ; Y
- DB ALPHA ; Z
- DB ALPHA ; [
- DB ALPHA ; \
- DB ALPHA ; ]
- DB ALPHA ; ^
- DB ALPHA ; _
- DB ALPHA ; `
- DB ALPHA ; a
- DB ALPHA ; b
- DB ALPHA ; c
- DB ALPHA ; d
- DB ALPHA ; e
- DB ALPHA ; f
- DB ALPHA ; g
- DB ALPHA ; h
- DB ALPHA ; i
- DB ALPHA ; j
- DB ALPHA ; k
- DB ALPHA ; l
- DB ALPHA ; m
- DB ALPHA ; n
- DB ALPHA ; o
- DB ALPHA ; p
- DB ALPHA ; q
- DB ALPHA ; r
- DB ALPHA ; s
- DB ALPHA ; t
- DB ALPHA ; u
- DB ALPHA ; v
- DB ALPHA ; w
- DB ALPHA ; x
- DB ALPHA ; y
- DB ALPHA ; z
- DB ALPHA ; {
- DB ALPHA ; |
- DB ALPHA ; }
- DB ALPHA ; ~
- DB TRASH ; RUB
- ;
- ENDFUNCTION
- ;
- PAGE
- ;
- ;THIS FUNCTION GETS OPERATOR NUMBER NUM FROM THE OPERATOR TABLE. THE FUNCTION
- ;RETURNS 0 IF THE OPERATOR WAS NOT FOUND, 1 IF IT WAS.
- ;
- ;FUNCTION IS CALLED AS FOLLOWS:
- ;
- ; GETOPR(NUM,OPRATR,BS,TOKEN);
- ;
- ; NUM CHARACTER CONTAINING THE NUMBER OF THE DESIRED ENTRY.
- ; 0 REPRESENTS THE FIRST ENTRY IN THE TABLE. THE
- ; TABLE IS IN ALPHABETICAL ORDER FOR THE BENEFIT
- ; OF THE BINARY SEARCHING ROUTINE (WRITTEN IN C).
- ; OPRATR POINTER TO A 5-CHARACTER ARRAY WHICH WILL RECEIVE THE
- ; OPERATOR'S NAME (NULL TERMINATED).
- ; BS A DUD ARGUMENT TO MAINTAIN COMPATIBILITY WITH GETOPC.
- ; TOKEN A POINTER TO A CHARACTER THAT WILL RECEIVE THE OPERATOR'S
- ; TOKEN BYTE.
- ;
- OPRATR EQU ARG1
- TOKEN EQU ARG3
- ;
- FUNCTION GETOPR
- ;
- LXI H, NUM ;GET ENTRY NUMBER IN TABLE.
- DAD SP
- MOV A,M
- CPI OPRTLL ;ENTRY IN TABLE?
- LXI H, 0 ;IF NOT, RETURN 0.
- RNC
- ;
- MOV L,A ;FIND ENTRY BY COMPUTING
- ADD A ;(5 * NUM) + TABLE BASE.
- ADD A
- ADD L
- MOV L,A
- LXI D, OPRTBL
- DAD D
- MOV E,L
- MOV D,H
- ;
- LXI H, OPRATR ;FIND OPERATOR RETURN AREA.
- DAD SP
- MOV A,M
- INX H
- MOV H,M
- MOV L,A
- ;
- PUSH B ;MOVE OPERATOR TO RETURN AREA.
- MVI C, 4
- MOVOPR: LDAX D
- INX D
- MOV M,A
- INX H
- DCR C
- JNZ MOVOPR
- POP B
- ;
- ENDOPR: MVI M, 0 ;TERMINATE OPERATOR NAME.
- ;
- LXI H, TOKEN ;FIND TOKEN RETURN AREA.
- DAD SP
- MOV A,M
- INX H
- MOV H,M
- MOV L,A
- ;
- LDAX D ;MOVE TOKEN TO RETURN AREA.
- MOV M,A
- ;
- LXI H, 1 ;RETURN 1 FOR SUCCESSFUL GET.
- RET
- ;
- ;THE OPERATOR TABLE ITSELF:
- ;
- ; THE OPERATOR TOKENS ARE AS FOLLOWS:
- ;
- GETKN EQU 1
- NETKN EQU 2
- LETKN EQU 3
- ANDTKN EQU 4
- ORTKN EQU 5
- XORTKN EQU 6
- NOTTKN EQU 7
- MODTKN EQU 8
- SHLTKN EQU 9
- SHRTKN EQU 10
- HITKN EQU 11
- LOWTKN EQU 12
- GTTKN EQU '>'
- EQTKN EQU '='
- LTTKN EQU '<'
- ;
- OPRTBL: DB 'AND', 0, ANDTKN
- DB 'EQ', 0, 0, EQTKN
- DB 'GE', 0, 0, GETKN
- DB 'GT', 0, 0, GTTKN
- DB 'HIGH', HITKN
- DB 'LE', 0, 0, LETKN
- DB 'LOW', 0, LOWTKN
- DB 'LT', 0, 0, LTTKN
- DB 'MOD', 0, MODTKN
- DB 'NE', 0, 0, NETKN
- DB 'NOT', 0, NOTTKN
- DB 'OR', 0, 0, ORTKN
- DB 'SHL', 0, SHLTKN
- DB 'SHR', 0, SHRTKN
- DB 'XOR', 0, XORTKN
- ;
- OPRTLL EQU 15 ;CALCULATE LENGTH OF TABLE.
- ;
- ENDFUNCTION
- ;
- PAGE
- ;
- ;THIS FUNCTION RETURNS THE NUMBER OF OPERATORS IN THE OPERATOR TABLE
- ;FOR THE BENEFIT OF THE BINARY SEARCHING ROUTINE (WRITTEN IN C).
- ;
- ;THIS FUNCTION IS CALLED AS FOLLOWS:
- ;
- ; NUMOPRS();
- ;
- FUNCTION NUMOPRS
- ;
- LXI H, OPRTLL ;RETURN NUMBER OF OPCODES.
- RET
- ;
- ENDFUNCTION
- ;
- ;END OF PACKAGE:
- ;
- END
- ;THE OPERATOR TABLE ITSELF:
-