]> cloudbase.mooo.com Git - kermit-80.git/blob - m80unv.mac
Import of "Kermit 80 for CP/M-80 and CP/M-85" from http://www.columbia.edu/kermit...
[kermit-80.git] / m80unv.mac
1 UNIVERSAL M80UNV
2
3 .DIRECTIVE .NOBIN
4
5 ;ACCUMULATOR ASSIGNMENTS
6
7 F=0
8 T1=1
9 T2=2
10 T3=3
11 T4=4
12 P1=5
13 OP=6
14 P2=OP
15 I=7
16 X=10
17 P3=X ;USED IN MAC80
18 TOK=11
19 ;TOK IS NOW A DOUBLE WORD
20 S=13
21 LBTP=14
22 E=15
23 BC=16
24 P=17
25
26 ;JOB DATA AREA VERSION NUMBER
27
28 M80WHO==0
29 M80VER==7
30 M80MIN==2
31 M80EDT==77
32
33 \f;FLAGS (R.H.)
34
35 FR.UND==1 ;SYMBOL UNDEFINED
36 FR.MQT==2 ;IN QUOTE IN MACRO
37 FR.PS1==4 ;PASS 1
38 FR.LOP==10 ;OP CODE LISTED (AS OPPOSED TO A COMMENT LINE)
39 FR.LIN==20 ;LINE # PRINTED AT START OF LINE
40 FR.LST==40 ;LISTING REQUESTED
41 FR.END==100 ;END SEEN
42 FR.NRF==200 ;DO NOT REFERENCE SYMBOL
43 FR.HEX==400 ;HEXADECIMAL LISTING REQUESTED
44 FR.REL==1000 ;LAST ADDRESS WAS RELOCATABLE
45 FR.EXT==2000 ;LAST ADDRESS WAS EXTERNAL (IMPLIES FR.REL)
46 FR.SNK==4000 ;"INVISIBLE" INPUT MODE
47 FR.ORG==10000 ;ORG SEEN, NO RELOCATION
48 FR.OFF==20000 ;ASSEMBLY CONDITIONALLY OFF
49 FR.LIB==40000 ;INSIDE MACLIB
50 FR.BOL==100000 ;FLAG BEGIN OF LISTING LINE
51 FR.EVL==200000 ;FLAG EVALUATE SYMBOL (FOR SRCHOP)
52 FR.MCM==400000 ;IN COMMENT IN MACRO DEFINITION
53
54 ;FLAGS (L.H.)
55
56 FL.CCL==1
57 FL.LNR==2 ;LIST NON-REF SYMBOLS AT END OF PROGRAM
58 FL.SUP==4 ;SUPPRESS MACRO EXPANSION
59 FL.HED==10 ;"UNREFERENED LABELS" WAS TYPED
60
61 ;SYMBOL TABLE FLAGS
62
63 S.REL==1 ;RELOCATABLE
64 S.INT==2 ;INTERNAL
65 S.EXT==4 ;EXTERNAL
66 S.REF==10 ;REFERENCED
67 S.UNDF==20 ;UNDEFINED (FOR CREF OF UNDEF SYMBOLS)
68 S.PRT==40 ;SYMBOL WAS PRINTED IN SYMBOL TABLE
69 S.MAC==100 ;SYMBOL IS A MACRO NAME
70
71 ;OPCODE TYPE BITS
72
73 T.1BYT==1 ;1 BYTE USED (JUST OPCODE, IMPLIES T.NREG)
74 T.2BYT==2 ;2 BYTES USED
75 T.3BYT==4 ;3 BYTES USED
76 T.MOV==10 ;"MOV" OPCODE
77 T.NREG==20 ;NO REGISTERS USED
78 T.POP==40 ;PSEUDO OP
79 T.DB==100 ;DEFINE BYTE
80 T.DW==200 ;DEFINE WORD
81 T.DZ==400 ;DEFINE BYTE WITH TRAILING ZERO
82 T.EQU==1000 ;EQU PSEUDO OP
83
84 OPDEF ERROR [1B8]
85 OPDEF WARN [2B8]
86 \fDEFINE EFLAGS,<
87
88 W W.REG,Register overflow
89 W W.IF1,ENDIF with no IF
90 W W.IF2,EOF during IF
91 W F.UNDF,Undefined symbol
92 W F.ILOP,Illegal opcode
93 W F.MULT,Multiply defined symbol
94 W F.EXT,External in address computation
95 W W.MT,No address field
96 W W.TOK,Token overflow
97 W F.FULL,Symbol table full
98 W F.NCOR,No more core
99 W F.PARN,Unmatched parenthesis
100 W F.ILEX,Illegal expression
101 W W.EXSA,External start address
102 W W.ILO1,Illegal opcode format
103 W F.TMMA,Too many macro arguments/Locals
104 W W.EXM,Not inside macro
105 W F.FREP,REPT overflowed REPBUF
106 >
107
108 DEFINE W(A,B),<
109 A==FX
110 FX==FX+1
111 >
112
113 FX==1
114
115 SALL
116 EFLAGS
117
118
119 SRC==1 ;I/O CHANNELS
120 LST==2
121 OBJ==3
122 SYM==4
123 LIB==5
124 TMPC==6
125
126 COLON==":" ;ASCII EQUIVALENTS
127 DOLLAR=="$"
128 COMMA==","
129 SEMICO==";"
130 MINUS=="-"
131 PERIOD=="."
132 CR==15
133 LF==12
134 FF==14
135 TAB==11
136 SPACE==40
137 QUOTE==42
138
139 PAGEMX==^D60 ;(DEFAULT) LINES PER PAGE
140 MAXSYM==^D70 ;CHARACTERS PER LINE IN SYMBOL FILE
141 SYMSIZ==^D101 ;SIZE OF DIRECT ACCESS SYMBOL TABLE
142 ;THERE IS NO RESTRICTION ON THE SIZE OF THE TOTAL SYMBOL TABLE
143 FTREL==0 ;INCLUDE MOSTEK FORMAT RELOCATION RECORDS IN HEX FILE
144 ;SEE DDJ V2 N3 MARCH 1977
145 FTSTAT==0 ;TYPE UNREF SYMBOLS, STATISTICS AT END OF SYMBOL TABLE
146 FTCREF==1 ;LIST SYMBOL TABLE & CREF LIST AT END OF PROGRAM
147 \f;X MACRO MNEMONIC,OPCODE,FLAGS,LSH FOR REGISTER
148
149 DEFINE OPTYPE, <
150 X ACI,316,T.NREG!T.2BYT,0
151 X ADC,210,0,0
152 X ADD,200,0,0
153 X ADI,306,T.NREG!T.2BYT,0
154 X ANA,240,0,0
155 X ANI,346,T.NREG!T.2BYT,0
156 X CALL,315,T.NREG!T.3BYT,0
157 X CC,334,T.NREG!T.3BYT,0
158 X CM,374,T.NREG!T.3BYT,0
159 X CMA,57,T.1BYT,0
160 X CMC,77,T.1BYT,0
161 X CMP,270,0,0
162 X CNC,324,T.NREG!T.3BYT,0
163 X CNZ,304,T.NREG!T.3BYT,0
164 X CP,364,T.NREG!T.3BYT,0
165 X CPE,354,T.NREG!T.3BYT,0
166 X CPI,376,T.NREG!T.2BYT,0
167 X CPO,344,T.NREG!T.3BYT,0
168 X CZ,314,T.NREG!T.3BYT,0
169 X DAA,47,T.1BYT,0
170 X DAD,11,0,4
171 X DB,0,T.POP!T.DB,0
172 X DCR,5,0,3
173 X DCX,13,0,4
174 X DI,363,T.1BYT,0
175 X DS,0,T.POP,0
176 X DW,0,T.POP!T.DW,0
177 X DZ,0,T.POP!T.DZ,0
178 X EI,373,T.1BYT,0
179 X ELSE,0,T.POP,0
180 X END,0,T.POP,0
181 X ENDIF,0,T.POP,0
182 X EXITM,0,T.POP,0
183 IFN FTREL,<
184 X EXT,0,T.POP,0
185 >
186 X HLT,166,T.1BYT,0
187 X IF,0,T.POP,0
188 X IFE,0,T.POP,0
189 X IFN,0,T.POP,0
190 X IN,333,T.NREG!T.2BYT,0
191 X INR,4,0,3
192 IFN FTREL,<
193 X INT,0,T.POP,0
194 >
195 X INX,3,0,4
196 X JC,332,T.NREG!T.3BYT,0
197 X JM,372,T.NREG!T.3BYT,0
198 X JMP,303,T.NREG!T.3BYT,0
199 X JNC,322,T.NREG!T.3BYT,0
200 X JNZ,302,T.NREG!T.3BYT,0
201 X JP,362,T.NREG!T.3BYT,0
202 X JPE,352,T.NREG!T.3BYT,0
203 X JPO,342,T.NREG!T.3BYT,0
204 X JZ,312,T.NREG!T.3BYT,0
205 \f X LDA,72,T.NREG!T.NREG!T.3BYT,0
206 X LDAX,12,0,4
207 X LHLD,52,T.NREG!T.3BYT,0
208 X LXI,1,T.3BYT,4
209 X MACLIB,0,T.POP,0
210 X MOV,100,T.MOV,3
211 X MVI,6,T.2BYT,3
212 X NOP,0,T.1BYT,0
213 X OPT,0,T.POP,0
214 X ORA,260,0,0
215 X ORG,0,T.POP,0
216 X ORI,366,T.NREG!T.2BYT,0
217 X OUT,323,T.NREG!T.2BYT,0
218 X PAGE,0,T.POP,0
219 X PCHL,351,T.1BYT,0
220 X PHASE,0,T.POP,0
221 X POP,301,0,4
222 X PRINTX,0,T.POP,0
223 X PUSH,305,0,4
224 X RAL,27,T.1BYT,0
225 X RAR,37,T.1BYT,0
226 X RC,330,T.1BYT,0
227 X REPT,0,T.POP,0
228 X RET,311,T.1BYT,0
229 X RIM,40,T.1BYT,0
230 X RLC,7,T.1BYT,0
231 X RM,370,T.1BYT,0
232 X RNC,320,T.1BYT,0
233 X RNZ,300,T.1BYT,0
234 X RP,360,T.1BYT,0
235 X RPE,350,T.1BYT,0
236 X RPO,340,T.1BYT,0
237 X RRC,17,T.1BYT,0
238 X RST,307,0,3
239 X RZ,310,T.1BYT,0
240 X SBB,230,0,0
241 X SBI,336,T.NREG!T.2BYT,0
242 X SHLD,42,T.NREG!T.3BYT,0
243 X SIM,60,T.1BYT,0
244 X SPHL,371,T.1BYT,0
245 X STA,62,T.NREG!T.3BYT,0
246 X STAX,2,0,4
247 X STC,67,T.1BYT,0
248 X SUB,220,0,0
249 X SUBTTL,0,T.POP
250 X SUI,326,T.NREG!T.2BYT,0
251 X TITLE,0,T.POP,0
252 X XCHG,353,T.1BYT,0
253 X XRA,250,0,0
254 X XRI,356,T.NREG!T.2BYT,0
255 X XTHL,343,T.1BYT,0
256 >
257
258 END
259