The Z80002C® translator is a software tool that will convert existing Z8000 programs to "C". The powerful Z80002C® translator accepts ASMx86 programs, checks their syntax and outputs C code. The comments are move transparently from the source file to the target file. Any built-in functions for math, string manipulation and I/O in ASMx86 are converted to calls to external procedures (see sample translation) .
TheZ80002C® translator contains a syntax analyzer, an Z8000 to tertiary converter, and a tertiary to "C converter. The syntax analyzer scans the Z8000 input file for syntactic errors and generates a listing file of the ASMx86 program. Any syntactic errors will be flagged with detailed English messages in the listing file. If no errors are encountered, the Z8000 input file is converted to tertiary language. Then the tertiary file is checked and, if no errors are detected, it is converted to "C". A command line control is provided to allow translation with errors in the source file. This is helpful when translating code fragments that are not complete programs.
The translation of the Z8000 source language into an intermediate tertiary language ensures the logical equivalence between the source and target languages. This sophisticated tertiary language, which is common to our entire family of translators, allows complex mapping from source language to the target. The tertiary language is automatically converted to "C" while maintaining the logical equivalence between the output "C" program and the input z8000 program.
The "C" output file will be generated in
- Compact and portable K&R C
- Standard ANSI C code
as selected by a command line option.
RESERVED WORDS (ASM86C®):
AAA, AAD, AAM, AAS, ABS, AH, AL, ASSUME, AT, AX, BH, BL, BP, BX, BYTE, CALL, CBW, CH, CL, CLC, CLD, CLI, CMPS, CODEMARCO, COMMON, CS, CWD, CX, DAS, DD, DEC, DEFINE, DH, DIV, DL, DUP, DWORD, DX, ELSE, ELSEIF, ENDIF, ENDM, ENDP, ENDS, EQS, ES, ESC, EVAL, EXIT, FAR, GES, GROUP, GTS, IDIV, IMUL, INC, INCHAR, INT, INTO, IRET, JA, JAE, JB, JBE, JCXZ, JE, JG, JGE, JL, JLE, JNA, JNAE, JNR, JNBE, JNE, JNG, JNGE, JNL, JNLE, JNO, JNP, JNS, JO, JS, JUMP, LABEL, LAHF, LDS, LEA, LEN, LENGTH, LES, LOCK, LODS, LOOP, LOOPE, LOOPNE, LOOPNZ, LOOPZ, LTS, MASK, MATCH, METACHAR, MODRM, MOVS, MUL, NEAR, NEG, NES, MIL, NOSEGFIX, NOTHING, OFFSET, PARA, POPF, PREFX, PROC, PROCLEN, PIR, PURGE, PUSHF, RCL, RCR, RECORD, RELB, RELW, REP, REPE, REPEAT, REPNE, REPNZ, REPZ, ROL, SAHF, SAL, SAR, SCAS, SEG, SEGFIX, SEGMENT, SHORT, SI, SIZE, SS, STD, STI, STOS, STRUC, SUBSTR, TEST, THIS, TYPE, WAIT, WHILE, WIDTH, WORD, XLAT
PRE-DECLARED IDENTIFIERS (ASM86C®):
DATE, DEBUG, NODEBUG, EJECT, ERRORPRINT(FILE), NOERRORPRINT, GEN, NOGEN, GENONLY, INCLUDE(:Fn:Filename), LIST, NOLIST, MACRO, NOMACRO, OBJECT[(FILE.EXT)], NOOBJECT, PAGELENGTH(n), PAGEWIDTH(n), PAGING, NOPAGING, PRINT[(FILE.EXT)], NOPRINT, SAVE...RESTORE, SYMBOLS, NOSYMBOLS, TITLE( ), WORKFILES(:Fx:, :Fy:), XREF, NOXREF