UNIVERSAL M80UNV .DIRECTIVE .NOBIN ;ACCUMULATOR ASSIGNMENTS F=0 T1=1 T2=2 T3=3 T4=4 P1=5 OP=6 P2=OP I=7 X=10 P3=X ;USED IN MAC80 TOK=11 S=12 LBTP=13 E=14 BC=15 OX=16 P=17 ;JOB DATA AREA VERSION NUMBER M80WHO==0 M80MAJ==5 M80MIN==2 M80EDT==65 ;MACRO TO DO TITLE AND VERSION NUMBER DEFINE .TITLE (NAME,V,E)< TITLE NAME 8085 Cross Assembler - V(E) IFIDN ,< LOC .JBVER BYTE (3)M80WHO (9)M80MAJ (6)M80MIN (18)M80EDT RELOC> > ;FLAGS (R.H.) FR.UND==1 ;SYMBOL UNDEFINED FR.BOT==2 ;BOOTSTRAP LOADER REQUESTED FR.PS1==4 ;PASS 1 FR.LOP==10 ;OP CODE LISTED (AS OPPOSED TO A COMMENT LINE) FR.LIN==20 ;LINE # PRINTED AT START OF LINE FR.LST==40 ;LISTING REQUESTED FR.END==100 ;END SEEN FR.NRF==200 ;DO NOT REFERENCE SYMBOL FR.HEX==400 ;HEXADECIMAL LISTING REQUESTED FR.REL==1000 ;LAST ADDRESS WAS RELOCATABLE FR.EXT==2000 ;LAST ADDRESS WAS EXTERNAL (IMPLIES FR.REL) FR.SNK==4000 ;"INVISIBLE" INPUT MODE FR.ORG==10000 ;ORG SEEN, NO RELOCATION FR.OFF==20000 ;ASSEMBLY CONDITIONALLY OFF FR.LOW==40000 ;ENABLE LOWER CASE CHARACTERS TO PASS INCHX FR.BOL==100000 ;FLAG BEGIN OF LISTING LINE FR.EVL==200000 ;FLAG EVALUATE SYMBOL (FOR SRCHOP) FR.MCM==400000 ;IN COMMENT IN MACRO DEFINITION ;FLAGS (L.H.) FL.CCL==1 FL.LNR==2 ;LIST NON-REF SYMBOLS AT END OF PROGRAM FL.SUP==4 ;SUPPRESS MACRO EXPANSION FL.HED==10 ;"UNREFERENED LABELS" WAS TYPED FL.STL==20 ;TOKEN CAME FROM START OF LINE ;SYMBOL TABLE FLAGS S.REL==1 ;RELOCATABLE S.INT==2 ;INTERNAL S.EXT==4 ;EXTERNAL S.REF==10 ;REFERENCED S.UNDF==20 ;UNDEFINED (FOR CREF OF UNDEF SYMBOLS) S.PRT==40 ;SYMBOL WAS PRINTED IN SYMBOL TABLE S.MAC==100 ;SYMBOL IS A MACRO NAME ;OPCODE TYPE BITS T.1BYT==1 ;1 BYTE USED (JUST OPCODE, IMPLIES T.NREG) T.2BYT==2 ;2 BYTES USED T.3BYT==4 ;3 BYTES USED T.MOV==10 ;"MOV" OPCODE T.NREG==20 ;NO REGISTERS USED T.POP==40 ;PSEUDO OP T.DB==100 ;DEFINE BYTE T.DW==200 ;DEFINE WORD T.DZ==400 ;DEFINE BYTE WITH TRAILING ZERO OPDEF ERROR [1B8] OPDEF WARN [2B8] DEFINE EFLAGS,< W W.REG,Register overflow W W.IF1,ENDIF with no IF W W.IF2,EOF during IF W F.UNDF,Undefined symbol W F.ILOP,Illegal opcode W F.MULT,Multiply defined symbol W F.EXT,External in address computation W W.MT,No address field W W.TOK,Token overflow W F.FULL,Symbol table full W F.NCOR,No more core W F.PARN,Unmatched parenthesis W F.ILEX,Illegal expression W W.EXSA,External start address W W.ILO1,Illegal opcode format > DEFINE W(A,B),< A==FX FX==FX+1 > FX==1 SALL EFLAGS SRC==1 ;I/O CHANNELS LST==2 OBJ==3 TMPC==4 COLON==":" ;ASCII EQUIVALENTS DOLLAR=="$" COMMA=="," SEMICO==";" MINUS=="-" CR==15 LF==12 FF==14 TAB==11 SPACE==40 QUOTE==42 LPP==^D59 ;LINES PER PAGE -1 SYMSIZ==^D101 ;SIZE OF DIRECT ACCESS SYMBOL TABLE ;THERE IS NO RESTRICTION ON THE SIZE OF THE TOTAL SYMBOL TABLE FTREL==0 ;INCLUDE MOSTEK FORMAT RELOCATION RECORDS IN HEX FILE ;SEE DDJ V2 N3 MARCH 1977 FTSTAT==0 ;TYPE UNREF SYMBOLS, STATISTICS AT END OF SYMBOL TABLE FTCREF==1 ;LIST SYMBOL TABLE & CREF LIST AT END OF PROGRAM ;X MACRO MNEMONIC,OPCODE,FLAGS,LSH FOR REGISTER DEFINE OPTYPE, < X ACI,316,T.NREG!T.2BYT,0 X ADC,210,0,0 X ADD,200,0,0 X ADI,306,T.NREG!T.2BYT,0 X ANA,240,0,0 X ANI,346,T.NREG!T.2BYT,0 X CALL,315,T.NREG!T.3BYT,0 X CC,334,T.NREG!T.3BYT,0 X CM,374,T.NREG!T.3BYT,0 X CMA,57,T.1BYT,0 X CMC,77,T.1BYT,0 X CMP,270,0,0 X CNC,324,T.NREG!T.3BYT,0 X CNZ,304,T.NREG!T.3BYT,0 X CP,364,T.NREG!T.3BYT,0 X CPE,354,T.NREG!T.3BYT,0 X CPI,376,T.NREG!T.2BYT,0 X CPO,344,T.NREG!T.3BYT,0 X CZ,314,T.NREG!T.3BYT,0 X DAA,47,T.1BYT,0 X DAD,11,0,4 X DB,0,T.POP!T.DB,0 X DCR,5,0,3 X DCX,13,0,4 X DI,363,T.1BYT,0 X DS,0,T.POP,0 X DW,0,T.POP!T.DW,0 X DZ,0,T.POP!T.DZ,0 X EI,373,T.1BYT,0 X ELSE,0,T.POP,0 X END,0,T.POP,0 X ENDIF,0,T.POP,0 X EXT,0,T.POP,0 X HLT,166,T.1BYT,0 X IF,0,T.POP,0 X IFE,0,T.POP,0 X IFN,0,T.POP,0 X IN,333,T.NREG!T.2BYT,0 X INR,4,0,3 X INT,0,T.POP,0 X INX,3,0,4 X JC,332,T.NREG!T.3BYT,0 X JM,372,T.NREG!T.3BYT,0 X JMP,303,T.NREG!T.3BYT,0 X JNC,322,T.NREG!T.3BYT,0 X JNZ,302,T.NREG!T.3BYT,0 X JP,362,T.NREG!T.3BYT,0 X JPE,352,T.NREG!T.3BYT,0 X JPO,342,T.NREG!T.3BYT,0 X JZ,312,T.NREG!T.3BYT,0 X LDA,72,T.NREG!T.NREG!T.3BYT,0 X LDAX,12,0,4 X LHLD,52,T.NREG!T.3BYT,0 X LXI,1,T.3BYT,4 X MOV,100,T.MOV,3 X MVI,6,T.2BYT,3 X NOP,0,T.1BYT,0 X OPT,0,T.POP,0 X ORA,260,0,0 X ORG,0,T.POP,0 X ORI,366,T.NREG!T.2BYT,0 X OUT,323,T.NREG!T.2BYT,0 X PCHL,351,T.1BYT,0 X PHASE,0,T.POP,0 X POP,301,0,4 X PRINTX,0,T.POP,0 X PUSH,305,0,4 X RAL,27,T.1BYT,0 X RAR,37,T.1BYT,0 X RC,330,T.1BYT,0 X RET,311,T.1BYT,0 X RIM,40,T.1BYT,0 X RLC,7,T.1BYT,0 X RM,370,T.1BYT,0 X RNC,320,T.1BYT,0 X RNZ,300,T.1BYT,0 X RP,360,T.1BYT,0 X RPE,350,T.1BYT,0 X RPO,340,T.1BYT,0 X RRC,17,T.1BYT,0 X RST,307,0,3 X RZ,310,T.1BYT,0 X SBB,230,0,0 X SBI,336,T.NREG!T.2BYT,0 X SHLD,42,T.NREG!T.3BYT,0 X SIM,60,T.1BYT,0 X SPHL,371,T.1BYT,0 X STA,62,T.NREG!T.3BYT,0 X STAX,2,0,4 X STC,67,T.1BYT,0 X SUB,220,0,0 X SUBTTL,0,T.POP X SUI,326,T.NREG!T.2BYT,0 X TITLE,0,T.POP,0 X XCHG,353,T.1BYT,0 X XRA,250,0,0 X XRI,356,T.NREG!T.2BYT,0 X XTHL,343,T.1BYT,0 > ;C MACRO OPCODE NAME,TYPE,BYTES ;TYPE; 0=NO REG, 1=REG IN BITS 0-2, 2=RP, 4=REG IN BITS 3-5 DEFINE OPCODE,< C NOP,0,1 ;0 C LXI,2,3 C STAX,2,1 C INX,2,1 C INR,4,1 C DCR,4,1 C MVI,4,2 C RLC,0,1 C XXX,0,0 C DAD,2,1 C LDAX,2,1 ;10 C DCX,2,1 C INR,4,1 C DCR,4,1 C MVI,4,2 C RRC,0,1 C XXX,0,0 C LXI,2,3 C STAX,2,1 C INX,2,1 C INR,4,1 ;20 C DCR,4,1 C MVI,4,2 C RAL,0,1 C XXX,0,0 C DAD,2,1 C LDAX,2,1 C DCX,2,1 C INR,4,1 C DCR,4,1 C MVI,4,2 ;30 C RAR,0,1 C RIM,0,1 C LXI,2,3 C SHLD,2,3 C INX,2,1 C INR,4,1 C DCR,4,1 C MVI,4,2 C DAA,0,1 C XXX,0,0 ;40 C DAD,2,1 C LHLD,0,3 C DCX,4,1 C INR,4,1 C DCR,4,1 C MVI,4,2 C CMA,0,1 C SIM,0,1 C LXI,2,3 C STA,0,3 ;50 C INX,2,1 C INR,4,1 C DCR,4,1 C MVI,4,2 C STC,0,1 C XXX,0,0 C DAD,2,1 C LDA,0,3 C DCX,2,1 C INR,4,1 ;60 C DCR,4,1 C MVI,4,2 C CMC,0,1 REPEAT 66,< C MOV,5,1> C HLT,0,1 REPEAT ^D9,< C MOV,5,1> REPEAT ^D8,< C ADD,1,1> REPEAT ^D8,< C ADC,1,1> REPEAT ^D8,< C SUB,1,1> REPEAT ^D8,< C SBB,1,1> REPEAT ^D8,< C ANA,1,1> REPEAT ^D8,< C XRA,1,1> REPEAT ^D8,< C ORA,1,1> REPEAT ^D8,< C CMP,1,1> C RNZ,1,1 C POP,2,1 C JNZ,0,3 C JMP,0,3 C CNZ,0,3 C PUSH,2,1 C ADI,0,2 C RST,4,1 C RZ,0,1 ;200 C RET,0,1 C JZ,0,3 C XXX,0,0 C CZ,0,3 C CALL,0,3 C ACI,0,2 C RST,4,1 C RNC,0,1 C POP,2,1 C JNC,0,3 ;210 C OUT,0,2 C CNC,0,3 C PUSH,2,1 C SUI,0,2 C RST,4,1 C RC,0,1 C XXX,0,0 C JC,0,3 C IN,0,2 C CC,0,3 ;220 C XXX,0,0 C SBI,0,2 C RST,4,1 C RPO,0,1 C POP,2,1 C JPO,0,3 C XTHL,0,1 C CPO,0,3 C PUSH,2,1 C ANI,0,2 ;230 C RST,4,1 C RPE,0,1 C PCHL,0,1 C JPE,0,3 C XCHG,0,1 C CPE,0,3 C XXX,0,0 C XRI,0,2 C RST,4,1 C RP,0,1 ;240 C POP,2,1 C JP,0,3 C DI,0,1 C CP,0,3 C PUSH,2,1 C ORI,0,2 C RST,4,1 C RM,0,1 C SPHL,0,1 C JM,0,3 ;250 C EI,0,1 C CM,0,3 C XXX,0,0 C CPI,0,2 C RST,4,1 > END