home *** CD-ROM | disk | FTP | other *** search
- /*
- * ╥EVERSE ┴SSEMBLER ╟LOBAL ─ATA
- * ╞ILENAME: RAD1.C
- */
- #INCLUDE "RA.H"
- #UNDEF ╠╧├─┬╟ /* TURN OFF LOCAL DEBUG */
- #DEFINE ╬╒═╧╨╙ 57
-
- STRUCT LABEL *XDEFHD,*XDEFTL; /* HEAD AND TAIL OF XDEF LABEL LIST */
- STRUCT LABEL *XREFHD,*XREFTL; /* HEAD AND TAIL OF XREF LABEL LIST */
- ╞╔╠┼ LST; /* LISTING FILE */
- ╞╔╠┼ OBJ; /* OBJECT FILE */
- UNSIGNED BIAS,CODESZ,RELSZ,XREFSZ,DATASZ;
- UNSIGNED PROMPT; /* 1 => PROMPT FOR FORMAT */
- CHAR *CODEBUF; /* CODE BUFFER */
- UNSIGNED *RELBUF; /* RELOCATION DATA */
-
- CHAR *MTABLE[]=█ /* MNEMONIC TABLE */
- "???", /* 0 */
- "ADC","AND","ASL", /* 01-03 */
- "BCC","BCS","BEQ", /* 04-06 */
- "BIT","BMI","BNE", /* 07-09 */
- "BPL","BRK","BVC", /* 10-12 */
- "BVS","CLC","CLD", /* 13-15 */
- "CLI","CLV","CMP", /* 16-18 */
- "CPX","CPY","DEC", /* 19-21 */
- "DEX","DEY","EOR", /* 22-24 */
- "INC","INX","INY", /* 25-27 */
- "JMP","JSR","LDA", /* 28-30 */
- "LDX","LDY","LSR", /* 31-33 */
- "NOP","ORA","PHA", /* 34-36 */
- "PHP","PLA","PLP", /* 37-39 */
- "ROL","ROR","RTI", /* 40-42 */
- "RTS","SBC","SEC", /* 43-45 */
- "SED","SEI","STA", /* 46-48 */
- "STX","STY","TAX", /* 49-51 */
- "TAY","TSX","TXA", /* 52-54 */
- "TXS","TYA" /* 55-56 */
- ▌;
-
- CHAR OPCODES[256]=█/* OPCODE TO MNEMONIC TRANSLATION */
-
- /* 00 */ 11, 35, 00, 00, 00, 35, 03, 00,
- /* 08 */ 37, 35, 03, 00, 00, 35, 03, 00,
- /* 10 */ 10, 35, 00, 00, 00, 35, 03, 00,
- /* 18 */ 14, 35, 00, 00, 00, 35, 03, 00,
- /* 20 */ 29, 02, 00, 00, 07, 02, 40, 00,
- /* 28 */ 39, 02, 40, 00, 07, 02, 40, 00,
- /* 30 */ 08, 02, 00, 00, 00, 02, 40, 00,
- /* 38 */ 45, 02, 00, 00, 00, 02, 40, 00,
- /* 40 */ 42, 24, 00, 00, 00, 24, 33, 00,
- /* 48 */ 36, 24, 33, 00, 28, 24, 33, 00,
- /* 50 */ 12, 24, 00, 00, 00, 24, 33, 00,
- /* 58 */ 16, 24, 00, 00, 00, 24, 33, 00,
- /* 60 */ 43, 01, 00, 00, 00, 01, 41, 00,
- /* 68 */ 38, 01, 41, 00, 28, 01, 41, 00,
- /* 70 */ 13, 01, 00, 00, 00, 01, 41, 00,
- /* 78 */ 47, 01, 00, 00, 00, 01, 41, 00,
- /* 80 */ 00, 48, 00, 00, 50, 48, 49, 00,
- /* 88 */ 23, 00, 54, 00, 50, 48, 49, 00,
- /* 90 */ 04, 48, 00, 00, 50, 48, 49, 00,
- /* 98 */ 56, 48, 55, 00, 00, 48, 00, 00,
- /* A0 */ 32, 30, 31, 00, 32, 30, 31, 00,
- /* A8 */ 52, 30, 51, 00, 32, 30, 31, 00,
- /* B0 */ 05, 30, 00, 00, 32, 30, 31, 00,
- /* B8 */ 17, 30, 53, 00, 32, 30, 31, 00,
- /* C0 */ 20, 18, 00, 00, 20, 18, 21, 00,
- /* C8 */ 27, 18, 22, 00, 20, 18, 21, 00,
- /* D0 */ 09, 18, 00, 00, 00, 18, 21, 00,
- /* D8 */ 15, 18, 00, 00, 00, 18, 21, 00,
- /* E0 */ 19, 44, 00, 00, 19, 44, 25, 00,
- /* E8 */ 26, 44, 34, 00, 19, 44, 25, 00,
- /* F0 */ 06, 44, 00, 00, 00, 44, 25, 00,
- /* F8 */ 46, 44, 00, 00, 00, 44, 25, 00
-
- ▌;
-
- CHAR AMODES[256] = █ /* OPCODE TO ADDRESSING MODE */
- /* 00 */ ╔═╨ , ╔╬─╪, ╔═╨ , ╔═╨ , ╔═╨ , ┌┼╥ , ┌┼╥ , ╔═╨ ,
- /* 08 */ ╔═╨ , ╔══ , ┴├├ , ╔═╨ , ╔═╨ , ┴┬╙ , ┴┬╙ , ╔═╨ ,
- /* 10 */ ╥┼╠ , ╔╬─┘, ╔═╨ , ╔═╨ , ╔═╨ , ┌╨╪ , ┌╨╪ , ╔═╨ ,
- /* 18 */ ╔═╨ , ┴┬┘ , ╔═╨ , ╔═╨ , ╔═╨ , ┴┬╪ , ┴┬╪ , ╔═╨ ,
- /* 20 */ ┴┬╙ , ╔╬─╪, ╔═╨ , ╔═╨ , ┌┼╥ , ┌┼╥ , ┌┼╥ , ╔═╨ ,
- /* 28 */ ╔═╨ , ╔══ , ┴├├ , ╔═╨ , ┴┬╙ , ┴┬╙ , ┴┬╙ , ╔═╨ ,
- /* 30 */ ╥┼╠ , ╔╬─┘, ╔═╨ , ╔═╨ , ╔═╨ , ┌╨╪ , ┌╨╪ , ╔═╨ ,
- /* 38 */ ╔═╨ , ┴┬┘ , ╔═╨ , ╔═╨ , ╔═╨ , ┴┬╪ , ┴┬╪ , ╔═╨ ,
- /* 40 */ ╔═╨ , ╔╬─╪, ╔═╨ , ╔═╨ , ╔═╨ , ┌┼╥ , ┌┼╥ , ╔═╨ ,
- /* 48 */ ╔═╨ , ╔══ , ┴├├ , ╔═╨ , ┴┬╙ , ┴┬╙ , ┴┬╙ , ╔═╨ ,
- /* 50 */ ╥┼╠ , ╔╬─┘, ╔═╨ , ╔═╨ , ╔═╨ , ┌╨╪ , ┌╨╪ , ╔═╨ ,
- /* 58 */ ╔═╨ , ┴┬┘ , ╔═╨ , ╔═╨ , ╔═╨ , ┴┬╪ , ┴┬╪ , ╔═╨ ,
- /* 60 */ ╔═╨ , ╔╬─╪, ╔═╨ , ╔═╨ , ╔═╨ , ┌┼╥ , ┌┼╥ , ╔═╨ ,
- /* 68 */ ╔═╨ , ╔══ , ┴├├ , ╔═╨ , ╔╬─ , ┴┬╙ , ┴┬╙ , ╔═╨ ,
- /* 70 */ ╥┼╠ , ╔╬─┘, ╔═╨ , ╔═╨ , ╔═╨ , ┌╨╪ , ┌╨╪ , ╔═╨ ,
- /* 78 */ ╔═╨ , ┴┬┘ , ╔═╨ , ╔═╨ , ╔═╨ , ┴┬╪ , ┴┬╪ , ╔═╨ ,
- /* 80 */ ╔═╨ , ╔╬─╪, ╔═╨ , ╔═╨ , ┌┼╥ , ┌┼╥ , ┌┼╥ , ╔═╨ ,
- /* 88 */ ╔═╨ , ╔═╨ , ╔═╨ , ╔═╨ , ┴┬╙ , ┴┬╙ , ┴┬╙ , ╔═╨ ,
- /* 90 */ ╥┼╠ , ╔╬─┘, ╔═╨ , ╔═╨ , ┌╨╪ , ┌╨╪ , ┌╨┘ , ╔═╨ ,
- /* 98 */ ╔═╨ , ┴┬┘ , ╔═╨ , ╔═╨ , ╔═╨ , ┴┬╪ , ╔═╨ , ╔═╨ ,
- /* A0 */ ╔══ , ╔╬─╪, ╔══ , ╔═╨ , ┌┼╥ , ┌┼╥ , ┌┼╥ , ╔═╨ ,
- /* A8 */ ╔═╨ , ╔══ , ╔═╨ , ┴┬╙ , ┴┬╙ , ┴┬╙ , ┴┬╙ , ╔═╨ ,
- /* B0 */ ╥┼╠ , ╔╬─┘, ╔═╨ , ╔═╨ , ┌╨╪ , ┌╨╪ , ┌╨┘ , ╔═╨ ,
- /* B8 */ ╔═╨ , ┴┬┘ , ╔═╨ , ╔═╨ , ┴┬╪ , ┴┬╪ , ┴┬┘ , ╔═╨ ,
- /* C0 */ ╔══ , ╔╬─╪, ╔═╨ , ╔═╨ , ┌┼╥ , ┌┼╥ , ┌┼╥ , ╔═╨ ,
- /* C8 */ ╔═╨ , ╔══ , ╔═╨ , ╔═╨ , ┴┬╙ , ┴┬╙ , ┴┬╙ , ╔═╨ ,
- /* D0 */ ╥┼╠ , ╔╬─┘, ╔═╨ , ╔═╨ , ╔═╨ , ┌╨╪ , ┌╨╪ , ╔═╨ ,
- /* D8 */ ╔═╨ , ┴┬┘ , ╔═╨ , ╔═╨ , ╔═╨ , ┴┬╪ , ┴┬╪ , ╔═╨ ,
- /* E0 */ ╔══ , ╔╬─╪, ╔═╨ , ╔═╨ , ┌┼╥ , ┌┼╥ , ┌┼╥ , ╔═╨ ,
- /* E8 */ ╔═╨ , ╔══ , ╔═╨ , ╔═╨ , ┴┬╙ , ┴┬╙ , ┴┬╙ , ╔═╨ ,
- /* F0 */ ╥┼╠ , ╔╬─┘, ╔═╨ , ╔═╨ , ╔═╨ , ┌╨╪ , ┌╨╪ , ╔═╨ ,
- /* F8 */ ╔═╨ , ┴┬┘ , ╔═╨ , ╔═╨ , ╔═╨ , ┴┬╪ , ┴┬╪ , ╔═╨
- ▌;
-
- CHAR MODESZ[13] = █
- /* ┴├├ */ 0,
- /* ╔══ */ 1,
- /* ┌┼╥ */ 1,
- /* ┌╨╪ */ 1,
- /* ┌╨┘ */ 1,
- /* ┴┬╙ */ 2,
- /* ┴┬╪ */ 2,
- /* ┴┬┘ */ 2,
- /* ╔═╨ */ 0,
- /* ╥┼╠ */ 1,
- /* ╔╬─╪*/ 1,
- /* ╔╬─┘*/ 1,
- /* ╔╬─ */ 2
- ▌;
-
- CHAR *MODENAME[] = █
- "ACCUMULATOR",
- "IMMEDIATE",
- "ZERO PAGE",
- "ZERO PAGE,X",
- "ZERO PAGE,Y",
- "ABSOLUTE",
- "ABSOLUTE,X",
- "ABSOLUTE,Y",
- "IMPLIED",
- "RELATIVE",
- "(INDIRECT,X)",
- "(INDIRECT),Y",
- "(INDIRECT)"
- ▌;
-
- #IFDEF ╠╧├─┬╟
- PRTOP(OP)
- UNSIGNED OP;
- █
-
- PRINTF(" %02X %-3S %-12S",
- OP,MTABLE[OPCODES[OP]],
- MODENAME[AMODES[OP]]);
-
- ▌
-
- MAIN() /* FOR LOCAL TEST ONLY */
- █
- UNSIGNED I,J;
-
- FOR (I=0;I<=0XC0;I+= 0X40) █
- FOR (J=0;J<0X20;J++) █
- PRTOP(I+J);
- PRINTF(" ");
- PRTOP(I+0X20+J);
- PUTCHAR('\N');
- ▌
- PRINTF("\N\N");
- ▌
- PUTCHAR('\N');
-
- ▌
- #ENDIF
-