]> wirehaze git hosting - MS-DOS.git/blob - v1.25/source/TRANS.ASM

wirehaze git hosting

Update README.ca.md
[MS-DOS.git] / v1.25 / source / TRANS.ASM
1 ; Z80 to 8086 Translator version 2.21
2 ; Runs on the 8086 under 86-DOS
3 ; by Tim Paterson
4 ;
5 ORG 100H
6 EOF: EQU 1AH ;End of file
7 EOL: EQU 0DH
8 FCB: EQU 5CH
9 SYSTEM: EQU 5
10 OPEN: EQU 15
11 CLOSE: EQU 16
12 SETDMA: EQU 26
13 CREATE: EQU 22
14 DELETE: EQU 19
15 READ: EQU 20
16 WRITE: EQU 21
17 PRNBUF: EQU 9
18 MOV SP,STACK
19 MOV DX,HEADER
20 MOV CL,9
21 CALL SYSTEM
22 MOV BX,FCB+12
23 XOR AL,AL
24 MOV CH,4
25 CLRFCB:
26 MOV [BX],AL
27 INC BX
28 DEC CH
29 JNZ CLRFCB
30 MOV [FCB+32],AL
31 MOV BX,FCB
32 MOV DX,PUTFCB
33 MOV CX,16
34 UP
35 MOV SI,BX
36 MOV DI,DX
37 REP
38 MOVB
39 MOV DX,DI
40 MOV BX,SI
41 MOV [PUTFCB+32],AL
42 MOV BX,"A"+5300H ;"AS"
43 MOV [PUTFCB+9],BX
44 MOV AL,'M'
45 MOV [PUTFCB+11],AL
46 MOV DX,FCB
47 MOV CL,OPEN
48 CALL SYSTEM
49 INC AL
50 MOV DX,NOFILE
51 JZ ABORTJ
52 MOV DX,PUTFCB
53 MOV CL,DELETE
54 CALL SYSTEM
55 MOV DX,PUTFCB
56 MOV CL,CREATE
57 CALL SYSTEM
58 INC AL
59 MOV DX,NOROOM
60 ABORTJ:
61 JZ ABORT
62 MOV DX,PUTFCB
63 MOV CL,OPEN
64 CALL SYSTEM
65 MOV BX,PUTBUF
66 MOV [PUTPT],BX
67 MOV BX,GETBUF+80H
68 MOV [GETPT],BX
69 TRANLN:
70 XOR AL,AL
71 MOV [OP1],AL
72 MOV [OP2],AL
73 MOV BX,OPCODE
74 CALL LOAD
75 MOV BX,OP1
76 CALL GETOP
77 MOV B,[BX],0
78 MOV BX,OP2
79 CALL GETOP
80 DOLIN:
81 MOV B,[BX],0
82 CALL FINDOP
83 ENLIN:
84 MOV SP,STACK
85 MOV AL,[CHAR]
86 CMP AL,';'
87 JNZ NOCOM
88 MOV AL,9
89 CALL PUTCH
90 MOV AL,';'
91 NOCOM:
92 CALL PUTCH
93 PUTLIN:
94 CMP AL,EOF
95 JZ END
96 CALL GETCH
97 CALL PUTCH
98 CMP AL,10
99 JNZ PUTLIN
100 JP TRANLN
101 END:
102 MOV CH,127
103 MOV AL,1AH
104 FILL:
105 CALL PUTCH
106 DEC CH
107 JNZ FILL
108 MOV DX,PUTFCB
109 MOV CL,CLOSE
110 CALL SYSTEM
111 MOV DX,ENDMES
112 ABORT:
113 MOV CL,PRNBUF
114 CALL SYSTEM
115 JMP 0
116 DELIM:
117 CALL GETCH
118 DELCHK:
119 CMP AL,EOL
120 JZ DOLIN
121 CMP AL,EOF
122 JZ DOLIN
123 CMP AL,';'
124 JZ DOLIN
125 CMP AL,' '
126 JZ RET
127 CMP AL,':'
128 JZ RET
129 CMP AL,','
130 JZ RET
131 CMP AL,9
132 RET
133 HEX:
134 AND AL,0FH
135 ADD AL,90H
136 DAA
137 ADC AL,40H
138 DAA
139 PUTCH:
140 PUSH BX
141 PUSH DX
142 PUSH CX
143 LAHF
144 XCHG AH,AL
145 PUSH AX
146 XCHG AH,AL
147 AND AL,7FH
148 MOV BX,[PUTPT]
149 MOV [BX],AL
150 INC BX
151 MOV [PUTPT],BX
152 CMP BX,PUTBUF+80H
153 JNZ POPRET
154 MOV DX,PUTBUF
155 MOV [PUTPT],DX
156 MOV CL,SETDMA
157 CALL SYSTEM
158 MOV DX,PUTFCB
159 MOV CL,WRITE
160 CALL SYSTEM
161 OR AL,AL
162 MOV DX,WRTERR
163 JNZ ABORT
164 POPRET:
165 POP AX
166 XCHG AH,AL
167 SAHF
168 NOTAF:
169 POP CX
170 POP DX
171 POP BX
172 RET
173 ;
174 ; Get character from source file.
175 ;
176 GETCH:
177 PUSH BX
178 PUSH DX
179 PUSH CX
180 MOV BX,[GETPT] ; Get buffer pointer.
181 CMP BX,GETBUF+80H ; Past end-of-buffer?
182 JNZ GETIT ; Jump if not.
183 MOV DX,GETBUF ; Set `DMA address'.
184 MOV CL,SETDMA
185 CALL SYSTEM
186 MOV DX,FCB ; Read the next record from source file.
187 MOV CL,READ
188 CALL SYSTEM
189 CMP AL,0 ; Entire record read OK?
190 JE OKRECORD
191 CMP AL,3 ; Partial record read?
192 JE OKRECORD
193 MOV AL,EOF ; Force end-of-file character in case
194 JP TESEND ; there is nothing in the record.
195 OKRECORD:
196 MOV BX,GETBUF ; Reset buffer pointer.
197 GETIT:
198 MOV AL,[BX] ; Get next character from buffer.
199 INC BX ; Point to next character.
200 MOV [GETPT],BX ; Save new pointer.
201 TESEND:
202 MOV [CHAR],AL
203 JP NOTAF ; Pop registers and return.
204 LOAD:
205 CALL DELIM
206 JZ LOADOP
207 EATLAB:
208 CALL PUTCH
209 CALL DELIM
210 JNZ EATLAB
211 ENLAB:
212 MOV AL,':'
213 CALL PUTCH
214 LOADOP:
215 MOV BX,OPCODE
216 EATEM:
217 CALL DELIM
218 JZ EATEM
219 LOADLP:
220 CALL IDCHK
221 JNC $+5
222 JMP OPERR
223 MOV [BX],AL
224 INC BX
225 CALL DELIM
226 JNZ LOADLP
227 MOV B,[BX],0
228 CMP AL,':'
229 JNZ RET
230 MOV BX,OPCODE
231 CALL TRANS
232 JP ENLAB
233 GETOP:
234 XOR AL,AL
235 LAHF
236 XCHG AX,BP
237 SAHF
238 GETLP:
239 CALL DELIM
240 JZ GETLP
241 OPCHAR:
242 CMP AL,'('
243 JNZ NOTLEF
244 LAHF
245 XCHG AX,BP
246 SAHF
247 INC AL
248 LAHF
249 XCHG AX,BP
250 SAHF
251 MOV B,[BX],'['
252 JP NEXCH
253 NOTLEF:
254 CMP AL,')'
255 JNZ NOTRIT
256 LAHF
257 XCHG AX,BP
258 SAHF
259 DEC AL
260 LAHF
261 XCHG AX,BP
262 SAHF
263 MOV B,[BX],']'
264 JP NEXCH
265 NOTRIT:
266 MOV [BX],AL
267 CMP AL,''''
268 JZ EATQUO
269 CALL IDCHK
270 JNC GETID
271 NEXCH:
272 INC BX
273 CALL GETCH
274 IDRET:
275 CALL DELCHK
276 JNZ OPCHAR
277 CMP AL,' '
278 JZ OPCHAR
279 RET
280 EATQUO:
281 INC BX
282 CALL GETCH
283 MOV [BX],AL
284 CMP AL,';'
285 JZ L0000
286 CALL DELCHK
287 L0000:
288 CMP AL,''''
289 JNZ EATQUO
290 JP NEXCH
291 IDCHK:
292 CMP AL,'0'
293 JC RET
294 CMP AL,'9'+1
295 CMC
296 JNC RET
297 CMP AL,40H
298 JC RET
299 AND AL,5FH
300 CMP AL,'A'
301 JC RET
302 CMP AL,'Z'+1
303 CMC
304 RET
305 GETID:
306 MOV [BX],AL
307 MOV CH,1
308 LODID:
309 INC BX
310 CALL GETCH
311 CALL IDCHK
312 JC RWCHK
313 MOV [BX],AL
314 INC CH
315 JP LODID
316 RWCHK:
317 LAHF
318 XCHG AH,AL
319 PUSH AX
320 XCHG AH,AL
321 PUSH BX
322 DEC BX
323 DEC CH
324 MOV DL,CH
325 JZ LOOKRW
326 MOV DL,[BX]
327 DEC BX
328 DEC CH
329 JNZ NORW
330 LOOKRW:
331 MOV AL,[BX]
332 MOV DH,AL
333 PUSH BX
334 MOV BX,RWTAB
335 MOV CX,LENRW
336 RWLK:
337 UP
338 MOV DI,BX
339 REPNZ
340 SCAB
341 MOV BX,DI
342 JNZ NOTRW
343 PUSH BX
344 PUSH CX
345 MOV CX,LENRW-1
346 LAHF
347 ADD BX,CX
348 RCR SI
349 SAHF
350 RCL SI
351 MOV AL,[BX]
352 POP CX
353 POP BX
354 CMP AL,DL
355 JZ HAVRW
356 MOV AL,CL
357 OR AL,AL
358 MOV AL,DH
359 JNZ RWLK
360 NOTRW:
361 POP BX
362 NORW:
363 POP BX
364 ENDRW:
365 POP AX
366 XCHG AH,AL
367 SAHF
368 JMP IDRET
369 HAVRW:
370 POP BX
371 INC CL
372 MOV [BX],CL
373 INC BX
374 POP DX
375 PUSH BX
376 MOV AL,CL
377 MOV BX,IXSI
378 CMP AL,RSI
379 JZ IXIY
380 MOV BX,IYDI
381 CMP AL,RDI
382 JNZ NORW
383 IXIY:
384 LAHF
385 XCHG AX,BP
386 SAHF
387 JZ NOTENC
388 LAHF
389 XCHG AX,BP
390 SAHF
391 CALL OUTSTR
392 JP NORW
393 NOTENC:
394 LAHF
395 XCHG AX,BP
396 SAHF
397 POP BX
398 DEC BX
399 MOV B,[BX],'['
400 INC BX
401 ADD AL,RIX-1
402 MOV [BX],AL
403 INC BX
404 MOV B,[BX],']'
405 INC BX
406 JP ENDRW
407 RET
408 FINDOP:
409 MOV BX,OPCODE
410 MOV CX,5
411 XOR AL,AL
412 UP
413 MOV DI,BX
414 REPNZ
415 SCAB
416 MOV BX,DI
417 JNZ OPERR
418 MOV AL,4
419 SUB AL,CL
420 JZ RET
421 DEC AL
422 JZ OPERR
423 MOV CL,AL
424 DEC BX
425 DEC BX
426 OR B,[BX],080H
427 MOV AL,[OPCODE]
428 SUB AL,'A'
429 JC OPERR
430 ADD AL,AL
431 MOV DL,AL
432 MOV DH,0
433 MOV BX,OPTAB
434 LAHF
435 ADD BX,DX
436 RCR SI
437 SAHF
438 RCL SI
439 MOV DL,[BX]
440 INC BX
441 MOV DH,[BX]
442 XCHG DX,BX
443 MOV AL,9
444 CALL PUTCH
445 LOOKOP:
446 MOV AL,[BX]
447 OR AL,AL
448 JZ OPERR
449 MOV DX,OPCODE+1
450 MOV CH,CL
451 LOOKLP:
452 MOV SI,DX
453 LODB
454 CMP AL,[BX]
455 JNZ NEXOP
456 INC DX
457 INC BX
458 DEC CH
459 JNZ LOOKLP
460 MOV DX,[BX]
461 MOV BX,[BX+2]
462 JMP DX
463 NEXOP:
464 RCR SI
465 TEST B,[BX],080H
466 RCL SI
467 LAHF
468 INC BX
469 SAHF
470 JZ NEXOP
471 MOV DX,4
472 LAHF
473 ADD BX,DX
474 RCR SI
475 SAHF
476 RCL SI
477 JP LOOKOP
478 OPERR:
479 MOV BX,OPCODE
480 CALL OUTSTR
481 CALL TWOOPS
482 MOV BX,OPCDER
483 CALL OUTSTR
484 JMP ENLIN
485 LD:
486 CALL OUTSTR
487 MOV BX,OP1
488 MOV DX,OP2+1
489 CALL LCHECK
490 JNZ $+5
491 JMP LDAX
492 XCHG DX,BX
493 DEC BX
494 INC DX
495 CALL LCHECK
496 JNZ $+5
497 JMP STAX
498 ;If immediate move, check for byte memory reference
499 MOV AL,[OP2]
500 CMP AL,20H ;Could be immediate?
501 MOV AL,9
502 JC L0001
503 CALL BYTCHK ;Add "B," if memory reference
504 L0001:
505 CALL TRAN1
506 JP TRNOP2
507 TWOOPS:
508 CALL TRNOP1
509 TRNOP2:
510 MOV AL,','
511 TRAN2:
512 MOV BX,OP2
513 PTRANS:
514 CALL PUTCH
515 TRANS:
516 MOV AL,[BX]
517 LAHF
518 INC BX
519 SAHF
520 OR AL,AL
521 JZ RET
522 CALL TRNTOK
523 JP TRANS
524 LCHECK:
525 MOV AL,[BX]
526 CMP AL,RAL
527 JNZ RET
528 MOV SI,DX
529 LODB
530 CMP AL,RCX
531 JZ RET
532 CMP AL,RDX
533 RET
534
535 ONEOP:
536 CALL OUTSTR
537 MOV AL,9
538 CALL BYTCHK ;If memory reference, add "B," flag
539 JMPS TRAN1
540
541 TRNOP1:
542 MOV AL,9
543 TRAN1:
544 MOV BX,OP1
545 JP PTRANS
546 IN:
547 MOV AL,[OP1]
548 CMP AL,RAL
549 XCHG DX,BX
550 MOV BX,OP2
551 JZ GETPORT
552 MOV BX,SAVEAX
553 CALL OUTSTR
554 CALL OUTSTR
555 MOV BX,OP2
556 CALL GETPORT
557 MOV BX,MOV0
558 CALL ONEOP
559 MOV AL,','
560 CALL PUTCH
561 MOV AL,RAL
562 CALL TRNTOK
563 IODONE:
564 MOV BX,RESTAX
565 JMP OUTSTR
566 OUT:
567 MOV AL,[OP2]
568 XCHG DX,BX
569 MOV BX,OP1
570 CMP AL,RAL
571 JZ GETOUT
572 MOV BX,SAVEAX
573 CALL OUTSTR
574 MOV BX,MOVAL
575 CALL OUTSTR
576 CALL TRNOP2
577 MOV BX,CRLFTB
578 CALL OUTSTR
579 MOV BX,OP1
580 CALL GETOUT
581 JP IODONE
582 GETPORT:
583 MOV AL,[BX]
584 CMP AL,'['
585 JNZ NOBRAK
586 LAHF
587 INC BX
588 SAHF
589 PUSH BX
590 MOV CX,80
591 MOV AL,']'
592 UP
593 MOV DI,BX
594 REPNZ
595 SCAB
596 MOV BX,DI
597 LAHF
598 DEC BX
599 SAHF
600 MOV B,[BX],0
601 POP BX
602 NOBRAK:
603 MOV AL,[BX]
604 CMP AL,RGCL
605 JNZ FIXPOR
606 MOV BX,IO1
607 CALL OUTSTR
608 XCHG DX,BX
609 CALL OUTSTR
610 MOV AL,RDX
611 CALL TRNTOK
612 MOV BX,IO2
613 JMP OUTSTR
614 GETOUT:
615 CALL GETPORT
616 JNC RET
617 MOV BX,BADIO
618 JMP OUTSTR
619 FIXPOR:
620 XCHG DX,BX
621 CALL OUTSTR
622 XCHG DX,BX
623 JMP TRANS
624 LDAX:
625 MOV BX,LDAX1
626 LSAX:
627 CALL OUTSTR
628 MOV SI,DX
629 LODB
630 CALL TRNTOK
631 JP OUTSTR
632 STAX:
633 MOV BX,STAX1
634 JP LSAX
635 TRNTOK:
636 CMP AL,' '
637 JC $+5
638 JMP PUTCH
639 PUSH BX
640 PUSH CX
641 MOV CL,AL
642 MOV CH,0
643 MOV BX,TOKTAB-2
644 LAHF
645 ADD BX,CX
646 RCR SI
647 SAHF
648 RCL SI
649 LAHF
650 ADD BX,CX
651 RCR SI
652 SAHF
653 RCL SI
654 MOV AL,[BX]
655 CALL PUTCH
656 INC BX
657 MOV AL,[BX]
658 POP CX
659 POP BX
660 OR AL,AL
661 JZ RET
662 JMP PUTCH
663 PUSH:
664 MOV DX,PUSHAF
665 JP AFCHK
666 POP:
667 MOV DX,POPAF
668 AFCHK:
669 MOV AL,[OP1]
670 CMP AL,RAX
671 JNZ ONEOPJ
672 XCHG DX,BX
673 OUTSTR:
674 MOV AL,[BX]
675 OR AL,AL
676 JNZ L0002
677 CALL NEWOP
678 L0002:
679 CALL PUTCH
680 INC BX
681 ADD AL,AL
682 JNC OUTSTR
683 RET
684 NEWOP:
685 MOV AL,13
686 CALL PUTCH
687 MOV AL,10
688 CALL PUTCH
689 MOV AL,9
690 RET
691 LDDR:
692 CALL OUTSTR
693 MOV BX,BLMOVE
694 JP OUTSTR
695 CPDR:
696 CALL OUTSTR
697 MOV BX,CMPREP
698 JP OUTSTR
699 ADD:
700 MOV AL,[OP1]
701 CMP AL,RBX
702 JZ DAD
703 ARITH:
704 CALL OUTSTR
705 MOV AL,[OP2]
706 OR AL,AL
707 JZ $+5
708 JMP TWOOPS
709 MOV AL,9
710 CALL PUTCH
711 MOV AL,RAL
712 CALL TRNTOK
713 MOV AL,','
714 JMP TRAN1
715 ACCUM:
716 CALL OUTSTR
717 MOV AL,9
718 CALL PUTCH
719 MOV AL,RAL
720 JMP TRNTOK
721 ONEOPJ: JMP ONEOP
722 DAD:
723 MOV BX,DAD1
724 CALL OUTSTR
725 CALL TWOOPS
726 MOV BX,DAD2
727 JP OUTSTR
728
729 INCDEC:
730 MOV AL,[OP1]
731 CMP AL,RCX+1 ;16-bit?
732 JNC ONEOPJ
733 MOV BX,LAHF
734 CALL OUTSTR
735 XCHG DX,BX
736 MOV BX,OPCODE-1
737 CALL ONEOP
738 XCHG DX,BX
739 OUTSTRJ:
740 JMP OUTSTR
741 JUMP:
742 MOV AL,[OP1]
743 CMP AL,'['
744 JNZ DIRECT
745 MOV AL,[OP1+1]
746 MOV [OP1],AL
747 XOR AL,AL
748 MOV [OP1+1],AL
749 DIRECT:
750 MOV AL,[OP2]
751 OR AL,AL
752 JZ ONEOPJ
753 CALL FIXCON
754 MOV BX,OP2
755 OUTCON:
756 MOV CH,AL
757 MOV AL,'J'
758 CALL PUTCH
759 MOV AL,CH
760 CALL TRNTOK
761 MOV AL,9
762 CALL PTRANS
763 MOV AL,CH
764 CMP AL,ODDPAR
765 MOV BX,WARNPA
766 JZ OUTSTRJ
767 CMP AL,EVEPAR
768 JZ OUTSTRJ
769 RET
770 FIXCON:
771 MOV AL,[OP1]
772 CMP AL,RGCL
773 JNZ RET
774 MOV AL,CY
775 RET
776 RETURN:
777 MOV AL,[OP1]
778 OR AL,AL
779 JZ OUTSTRJ
780 MOV BX,'R'+4500H ;"RE"
781 MOV [OP2],BX
782 MOV BX,'T'
783 MOV [OP2+2],BX
784 JP DIRECT
785 ONEOPJ1:
786 JMP ONEOP
787 DOCALL:
788 MOV AL,[OP2]
789 OR AL,AL
790 JZ ONEOPJ1
791 CALL FIXCON
792 DEC AL
793 XOR AL,1
794 INC AL
795 MOV BX,LABEL
796 CALL OUTCON
797 MOV BX,OPCODE-1
798 CALL OUTSTR
799 MOV AL,[OP2]
800 OR AL,AL
801 MOV AL,9
802 MOV BX,OP2
803 JZ L0003
804 CALL PTRANS
805 L0003:
806 MOV BX,CRLF
807 CALL OUTSTR
808 CALL TRANS
809 CALL OUTSTR
810 MOV BX,LABEL+4
811 NEXLAB:
812 INC [BX]
813 MOV AL,[BX]
814 CMP AL,'9'+1
815 JNZ RET
816 MOV B,[BX],'0'
817 LAHF
818 DEC BX
819 SAHF
820 JP NEXLAB
821 EX:
822 MOV AL,[OP1]
823 CMP AL,RAX
824 JZ OUTSTRJ1
825 MOV AL,[OP1+1]
826 CMP AL,STP
827 JZ XTHL
828 MOV BX,XCHG
829 CALL OUTSTR
830 JMP TWOOPS
831 XTHL:
832 MOV BX,XTHL1
833 CALL OUTSTR
834 CALL TRNOP2
835 MOV BX,XTHL2
836 OUTSTRJ1:
837 JMP OUTSTR
838 PSEUDO:
839 CALL ONEOP
840 MOV AL,[OP2]
841 OR AL,AL
842 JZ RET
843 JMP TRNOP2
844 RET
845 BITSET:
846 MOV CL,0
847 JP SETRES
848 RES:
849 MOV CL,-1
850 SETRES:
851 CALL OUTSTR
852 PUSH BX
853 MOV AL,[OP2]
854 CMP AL,'['
855 MOV AL,9
856 JNZ L0004
857 CALL BFLAG
858 L0004:
859 CALL TRAN2
860 MOV AL,','
861 CALL PUTCH
862 CALL GETBIT
863 MOV BX,BITERR
864 JNC L0005
865 CALL OUTSTR
866 L0005:
867 POP BX
868 JMP OUTSTR
869
870 BYTCHK:
871 ;Check if memory reference and add "B," for byte mode
872 CMP B,[OP1],"[" ;Memory reference?
873 JNZ RET
874 CMP B,[OP1+1],RIX ;Referencing IX as a word?
875 JZ RET
876 CMP B,[OP1+1],RIY
877 JZ RET
878 BFLAG:
879 CALL PUTCH
880 MOV AL,'B'
881 CALL PUTCH
882 MOV AL,','
883 RET
884
885 GETBIT:
886 MOV AL,[OP1+1]
887 OR AL,AL
888 STC
889 JNZ RET
890 MOV AL,[OP1]
891 SUB AL,'0'
892 JC RET
893 CMP AL,8
894 CMC
895 JC RET
896 MOV CH,AL
897 INC CH
898 XOR AL,AL
899 STC
900 SHFT:
901 RCL AL
902 DEC CH
903 JNZ SHFT
904 XOR AL,CL
905 MOV CH,AL
906 MOV AL,'0'
907 CALL PUTCH
908 MOV AL,CH
909 RCR AL
910 RCR AL
911 RCR AL
912 RCR AL
913 CALL HEX
914 MOV AL,CH
915 CALL HEX
916 MOV AL,'H'
917 JMP PUTCH
918 OPTAB:
919 DW AOPS,BOPS,COPS,DOPS,EOPS
920 DW FOPS,GOPS,HOPS,IOPS,JOPS
921 DW KOPS,LOPS,MOPS,NOPS,OOPS
922 DW POPS,QOPS,ROPS,SOPS,TOPS
923 DW UOPS,VOPS,WOPS,XOPS,YOPS
924 DW ZOPS
925 AOPS:
926 DM 'DD'
927 DW ADD,OPCODE
928 DM 'DC'
929 DW ARITH,OPCODE
930 DM 'ND'
931 DW ARITH,OPCODE
932 DB 0
933 BOPS:
934 DM 'IT'
935 DW BITSET,TESBIT
936 DB 0
937 COPS:
938 DM 'ALL'
939 DW DOCALL,OPCODE
940 DM 'P'
941 DW ARITH,CMP
942 DM 'PL'
943 DW ACCUM,NOT
944 DM 'PIR'
945 DW OUTSTR,CPIR
946 DM 'PDR'
947 DW CPDR,DOWN
948 DM 'CF'
949 DW OUTSTR,CMC
950 DB 0
951 DOPS:
952 DM 'EC'
953 DW INCDEC,OPCODE
954 DM 'JNZ'
955 DW ONEOP,DJNZ
956 DM 'AA'
957 DW OUTSTR,OPCODE
958 DM 'I'
959 DW OUTSTR,OPCODE
960 DM 'W'
961 DW PSEUDO,OPCODE
962 DM 'B'
963 DW PSEUDO,OPCODE
964 DM 'M'
965 DW PSEUDO,OPCODE
966 DM 'S'
967 DW ONEOP,OPCODE
968 DB 0
969 EOPS:
970 DM 'X'
971 DW EX,EXAF
972 DM 'I'
973 DW OUTSTR,OPCODE
974 DM 'XX'
975 DW OUTSTR,EXX
976 DM 'QU'
977 DW ONEOP,OPCODE
978 DM 'NDIF'
979 DW OUTSTR,OPCODE
980 DB 0
981 FOPS:
982 DB 0
983 GOPS:
984 DB 0
985 HOPS:
986 DM 'ALT'
987 DW OUTSTR,HLT
988 DB 0
989 IOPS:
990 DM 'NC'
991 DW INCDEC,OPCODE
992 DM 'N'
993 DW IN,INB
994 DM 'F'
995 DW ONEOP,OPCODE
996 DB 0
997 JOPS:
998 DM 'R'
999 DW JUMP,JR
1000 DM 'P'
1001 DW JUMP,JMP
1002 DB 0
1003 KOPS:
1004 DB 0
1005 LOPS:
1006 DM 'D'
1007 DW LD,MOV
1008 DM 'DIR'
1009 DW OUTSTR,UP
1010 DM 'DDR'
1011 DW LDDR,DOWN
1012 DB 0
1013 MOPS:
1014 DB 0
1015 NOPS:
1016 DM 'EG'
1017 DW ACCUM,OPCODE
1018 DB 0
1019 OOPS:
1020 DM 'R'
1021 DW ARITH,OPCODE
1022 DM 'UT'
1023 DW OUT,OUTB
1024 DM 'RG'
1025 DW ONEOP,OPCODE
1026 DB 0
1027 POPS:
1028 DM 'OP'
1029 DW POP,OPCODE
1030 DM 'USH'
1031 DW PUSH,OPCODE
1032 DB 0
1033 QOPS:
1034 DB 0
1035 ROPS:
1036 DM 'ET'
1037 DW RETURN,OPCODE
1038 DM 'LA'
1039 DW ACCUM,RCL
1040 DM 'RA'
1041 DW ACCUM,RCR
1042 DM 'LCA'
1043 DW ACCUM,ROL
1044 DM 'RCA'
1045 DW ACCUM,ROR
1046 DM 'L'
1047 DW ONEOP,RCL
1048 DM 'R'
1049 DW ONEOP,RCR
1050 DM 'LC'
1051 DW ONEOP,ROL
1052 DM 'RC'
1053 DW ONEOP,ROR
1054 DM 'ES'
1055 DW RES,RESBIT
1056 DM 'ETI'
1057 DW OUTSTR,IRET
1058 DM 'ETN'
1059 DW OUTSTR,IRET
1060 DM 'ST'
1061 DW ONEOP,CALL
1062 DB 0
1063 SOPS:
1064 DM 'UB'
1065 DW ARITH,OPCODE
1066 DM 'BC'
1067 DW ARITH,SBB
1068 DM 'LA'
1069 DW ONEOP,SAL
1070 DM 'RA'
1071 DW ONEOP,SAR
1072 DM 'RL'
1073 DW ONEOP,SHR
1074 DM 'CF'
1075 DW OUTSTR,STC
1076 DM 'ET'
1077 DW BITSET,SETBIT
1078 DB 0
1079 TOPS:
1080 DB 0
1081 UOPS:
1082 DB 0
1083 VOPS:
1084 DB 0
1085 WOPS:
1086 DB 0
1087 XOPS:
1088 DM 'OR'
1089 DW ARITH,OPCODE
1090 DB 0
1091 YOPS:
1092 DB 0
1093 ZOPS:
1094 DB 0
1095 LDAX1: DM 9,'SI,'
1096 DM 0,'LODB'
1097 STAX1: DM 9,'DI,'
1098 DM 0,'STOB'
1099 PUSHAF: DB 'LAHF',0,'XCHG',9,'AH,AL',0,'PUSH',9,'AX',0
1100 DM 'XCHG',9,'AH,AL'
1101 POPAF: DM 'POP',9,'AX',0,'XCHG',9,'AH,AL',0,'SAHF'
1102 DOWN: DM 'DOWN'
1103 UP: DB 'UP'
1104 BLMOVE: DB 0,'MOV',9,'SI,BX',0,'MOV',9,'DI,DX'
1105 DB 0,'REP',0,'MOVB',0,'MOV',9,'DX,DI'
1106 DM 0,'MOV',9,'BX,SI'
1107 CPIR: DB 'UP'
1108 CMPREP: DB 0,'MOV',9,'DI,BX',0,'REPNZ',0,'SCAB'
1109 DM 0,'MOV',9,'BX,DI'
1110 DAD1: DM 'LAHF',0,'ADD'
1111 DAD2: DM 0,'RCR',9,'SI',0,'SAHF',0,'RCL',9,'SI'
1112 LAHF: DM 'LAHF'
1113 DM 0,'SAHF'
1114 DJNZ: DB 'DEC',9,'CH',13,10
1115 DB '; *** WARNING: DJNZ does not affect flags - DEC does.',0
1116 DM 'JNZ'
1117 WARNPA: DM 13,10,'; *** WARNING: Parity flag not always same as Z80.'
1118 IO1: DB 'MOV',9,'DI,DX',0,'MOV',9,'DL,CL',0
1119 DM 'XOR',9,'DH,DH',13,10,9
1120 IO2: DM 0,'MOV',9,'DX,DI'
1121 BADIO: DM 13,10,'; *** WARNING: Flags not same as Z80.'
1122 BITERR: DM 13,10,' *** ERROR: Cannot determine bit number.'
1123 SETBIT: DM 'LAHF',0,'OR'
1124 DM 0,'SAHF'
1125 RESBIT: DM 'LAHF',0,'AND'
1126 DM 0,'SAHF'
1127 TESBIT: DM 'RCR',9,'AH',0,'TEST'
1128 DM 0,'RCL',9,'AH'
1129 XTHL1: DM 'POP',9,'SI',0,'XCHG',9,'SI'
1130 XTHL2: DM 0,'PUSH',9,'SI'
1131 EXX: DB 'XCHG',9,'BX,[HL]',0,'XCHG',9,'DX,[DE]',0
1132 DM 'XCHG',9,'CX,[BC]'
1133 EXAF: DM 'LAHF',0,'XCHG',9,'AX,BP',0,'SAHF'
1134 MOVAL: DM 0,'MOV',9,'AL'
1135 IXSI: DM 9,'MOV',9,'SI,[IX]',13,10
1136 IYDI: DM 9,'MOV',9,'DI,[IY]',13,10
1137 RESTAX: DB 0
1138 SAVEAX: DM 'XCHG',9,'AX,SI'
1139 CRLFTB: DM 13,10,9
1140 INB: DM 'INB',9
1141 OUTB: DM 'OUTB',9
1142 XCHG: DM 'XCHG'
1143 JMP: DM 'JMP'
1144 JR: DM 'JMPS'
1145 RCL: DM 'RCL'
1146 RCR: DM 'RCR'
1147 ROL: DM 'ROL'
1148 ROR: DM 'ROR'
1149 SAL: DM 'SAL'
1150 SAR: DM 'SAR'
1151 SHR: DM 'SHR'
1152 STC: DM 'STC'
1153 IRET: DM 'IRET'
1154 HLT: DM 'HLT'
1155 CMC: DM 'CMC'
1156 NOT: DM 'NOT'
1157 MOV0: DB 0
1158 MOV: DM 'MOV'
1159 CMP: DM 'CMP'
1160 SBB: DM 'SBB'
1161 CALL: DM 'CALL'
1162 TOKTAB:
1163 DB 'SIDI'
1164 DB 'PEPOS',0,'NSNZZ',0,'NCC',0
1165 DB 'AXSPBXDXCX'
1166 DB 'BLBHDLDHCLCHALIXIY'
1167 RWTAB:
1168 DB 'ABCDEHLBDHSACNZNPMPPII'
1169 LENRW: EQU $-RWTAB
1170 DB 0,0,0,0,0,0,0,'CELPF',0,'C',0,'Z',0,0,'OEYX'
1171 HEADER: DB 13,10,'Z80 to 8086 Translator version 2.21',13,10,'$'
1172 NOROOM: DB 13,10,'File creation error',13,10,'$'
1173 NOFILE: DB 13,10,'File not found',13,10,'$'
1174 ENDMES: DB 13,10,'Translation complete',13,10,'$'
1175 WRTERR: DB 13,10,'Out of disk space',13,10,'$'
1176 OPCDER: DM 13,10,'*** Opcode Error '
1177 CRLF: DM 13,10
1178 LABEL: DB 'L0000',0
1179 DM ':',9
1180 PUTPT: DS 2
1181 GETPT: DS 2
1182 CHAR: DS 1
1183 DB 0
1184 OPCODE: DS 80
1185 OP1: DS 80
1186 OP2: DS 80
1187 PUTBUF: DS 128
1188 GETBUF: DS 128
1189 PUTFCB: DS 33
1190 DS 50
1191 STACK: EQU $
1192 ORG 1 ;This is really just for equates without EQU
1193 RSI: DS 1
1194 RDI: DS 1
1195 ODDPAR: DS 1
1196 EVEPAR: DS 1
1197 DS 5 ;MINUS,PLUS,NOT ZERO,ZERO,NOT CARRY
1198 CY: DS 1
1199 RAX: DS 1
1200 STP: DS 1
1201 RBX: DS 1
1202 RDX: DS 1
1203 RCX: DS 1
1204 RBL: DS 1
1205 RBH: DS 1
1206 RDL: DS 1
1207 RDH: DS 1
1208 RGCL: DS 1
1209 RCH: DS 1
1210 RAL: DS 1
1211 RIX: DS 1
1212 RIY: DS 1
1213 \1a