home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / genie-commodore-file-library / C64-128Toolkit / RA.ARC / RAD1.C < prev   
Encoding:
C/C++ Source or Header  |  2019-04-13  |  5.3 KB  |  173 lines

  1. /*
  2.  * ╥EVERSE ┴SSEMBLER ╟LOBAL ─ATA
  3.  * ╞ILENAME: RAD1.C
  4.  */
  5. #INCLUDE "RA.H"
  6. #UNDEF ╠╧├─┬╟             /* TURN OFF LOCAL DEBUG */
  7. #DEFINE ╬╒═╧╨╙ 57
  8.  
  9. STRUCT LABEL *XDEFHD,*XDEFTL; /* HEAD AND TAIL OF XDEF LABEL LIST */
  10. STRUCT LABEL *XREFHD,*XREFTL; /* HEAD AND TAIL OF XREF LABEL LIST */
  11. ╞╔╠┼ LST;                 /* LISTING FILE */
  12. ╞╔╠┼ OBJ;                 /* OBJECT FILE */
  13. UNSIGNED BIAS,CODESZ,RELSZ,XREFSZ,DATASZ;
  14. UNSIGNED PROMPT;          /* 1 => PROMPT FOR FORMAT */
  15. CHAR *CODEBUF;            /* CODE BUFFER     */
  16. UNSIGNED *RELBUF;         /* RELOCATION DATA */
  17.  
  18. CHAR *MTABLE[]=█ /* MNEMONIC TABLE */
  19.       "???",              /* 0     */
  20.       "ADC","AND","ASL",  /* 01-03 */
  21.       "BCC","BCS","BEQ",  /* 04-06 */
  22.       "BIT","BMI","BNE",  /* 07-09 */
  23.       "BPL","BRK","BVC",  /* 10-12 */
  24.       "BVS","CLC","CLD",  /* 13-15 */
  25.       "CLI","CLV","CMP",  /* 16-18 */
  26.       "CPX","CPY","DEC",  /* 19-21 */
  27.       "DEX","DEY","EOR",  /* 22-24 */
  28.       "INC","INX","INY",  /* 25-27 */
  29.       "JMP","JSR","LDA",  /* 28-30 */
  30.       "LDX","LDY","LSR",  /* 31-33 */
  31.       "NOP","ORA","PHA",  /* 34-36 */
  32.       "PHP","PLA","PLP",  /* 37-39 */
  33.       "ROL","ROR","RTI",  /* 40-42 */
  34.       "RTS","SBC","SEC",  /* 43-45 */
  35.       "SED","SEI","STA",  /* 46-48 */
  36.       "STX","STY","TAX",  /* 49-51 */
  37.       "TAY","TSX","TXA",  /* 52-54 */
  38.       "TXS","TYA"         /* 55-56 */
  39. ▌;
  40.  
  41. CHAR OPCODES[256]=█/* OPCODE TO MNEMONIC TRANSLATION */
  42.  
  43. /* 00 */  11, 35, 00, 00, 00, 35, 03, 00,
  44. /* 08 */  37, 35, 03, 00, 00, 35, 03, 00,
  45. /* 10 */  10, 35, 00, 00, 00, 35, 03, 00, 
  46. /* 18 */  14, 35, 00, 00, 00, 35, 03, 00,
  47. /* 20 */  29, 02, 00, 00, 07, 02, 40, 00,
  48. /* 28 */  39, 02, 40, 00, 07, 02, 40, 00,
  49. /* 30 */  08, 02, 00, 00, 00, 02, 40, 00,
  50. /* 38 */  45, 02, 00, 00, 00, 02, 40, 00,
  51. /* 40 */  42, 24, 00, 00, 00, 24, 33, 00,
  52. /* 48 */  36, 24, 33, 00, 28, 24, 33, 00,
  53. /* 50 */  12, 24, 00, 00, 00, 24, 33, 00,
  54. /* 58 */  16, 24, 00, 00, 00, 24, 33, 00,
  55. /* 60 */  43, 01, 00, 00, 00, 01, 41, 00,
  56. /* 68 */  38, 01, 41, 00, 28, 01, 41, 00,
  57. /* 70 */  13, 01, 00, 00, 00, 01, 41, 00,
  58. /* 78 */  47, 01, 00, 00, 00, 01, 41, 00,
  59. /* 80 */  00, 48, 00, 00, 50, 48, 49, 00,
  60. /* 88 */  23, 00, 54, 00, 50, 48, 49, 00,
  61. /* 90 */  04, 48, 00, 00, 50, 48, 49, 00,
  62. /* 98 */  56, 48, 55, 00, 00, 48, 00, 00,
  63. /* A0 */  32, 30, 31, 00, 32, 30, 31, 00,
  64. /* A8 */  52, 30, 51, 00, 32, 30, 31, 00,
  65. /* B0 */  05, 30, 00, 00, 32, 30, 31, 00,
  66. /* B8 */  17, 30, 53, 00, 32, 30, 31, 00,
  67. /* C0 */  20, 18, 00, 00, 20, 18, 21, 00,
  68. /* C8 */  27, 18, 22, 00, 20, 18, 21, 00,
  69. /* D0 */  09, 18, 00, 00, 00, 18, 21, 00,
  70. /* D8 */  15, 18, 00, 00, 00, 18, 21, 00,
  71. /* E0 */  19, 44, 00, 00, 19, 44, 25, 00,
  72. /* E8 */  26, 44, 34, 00, 19, 44, 25, 00,
  73. /* F0 */  06, 44, 00, 00, 00, 44, 25, 00,
  74. /* F8 */  46, 44, 00, 00, 00, 44, 25, 00
  75.  
  76. ▌;
  77.  
  78. CHAR AMODES[256] = █ /* OPCODE TO ADDRESSING MODE */
  79. /* 00 */ ╔═╨ , ╔╬─╪, ╔═╨ , ╔═╨ , ╔═╨ , ┌┼╥ , ┌┼╥ , ╔═╨ ,
  80. /* 08 */ ╔═╨ , ╔══ , ┴├├ , ╔═╨ , ╔═╨ , ┴┬╙ , ┴┬╙ , ╔═╨ ,
  81. /* 10 */ ╥┼╠ , ╔╬─┘, ╔═╨ , ╔═╨ , ╔═╨ , ┌╨╪ , ┌╨╪ , ╔═╨ ,
  82. /* 18 */ ╔═╨ , ┴┬┘ , ╔═╨ , ╔═╨ , ╔═╨ , ┴┬╪ , ┴┬╪ , ╔═╨ ,
  83. /* 20 */ ┴┬╙ , ╔╬─╪, ╔═╨ , ╔═╨ , ┌┼╥ , ┌┼╥ , ┌┼╥ , ╔═╨ ,
  84. /* 28 */ ╔═╨ , ╔══ , ┴├├ , ╔═╨ , ┴┬╙ , ┴┬╙ , ┴┬╙ , ╔═╨ ,
  85. /* 30 */ ╥┼╠ , ╔╬─┘, ╔═╨ , ╔═╨ , ╔═╨ , ┌╨╪ , ┌╨╪ , ╔═╨ ,
  86. /* 38 */ ╔═╨ , ┴┬┘ , ╔═╨ , ╔═╨ , ╔═╨ , ┴┬╪ , ┴┬╪ , ╔═╨ ,
  87. /* 40 */ ╔═╨ , ╔╬─╪, ╔═╨ , ╔═╨ , ╔═╨ , ┌┼╥ , ┌┼╥ , ╔═╨ ,
  88. /* 48 */ ╔═╨ , ╔══ , ┴├├ , ╔═╨ , ┴┬╙ , ┴┬╙ , ┴┬╙ , ╔═╨ ,
  89. /* 50 */ ╥┼╠ , ╔╬─┘, ╔═╨ , ╔═╨ , ╔═╨ , ┌╨╪ , ┌╨╪ , ╔═╨ ,
  90. /* 58 */ ╔═╨ , ┴┬┘ , ╔═╨ , ╔═╨ , ╔═╨ , ┴┬╪ , ┴┬╪ , ╔═╨ ,
  91. /* 60 */ ╔═╨ , ╔╬─╪, ╔═╨ , ╔═╨ , ╔═╨ , ┌┼╥ , ┌┼╥ , ╔═╨ ,
  92. /* 68 */ ╔═╨ , ╔══ , ┴├├ , ╔═╨ , ╔╬─ , ┴┬╙ , ┴┬╙ , ╔═╨ ,
  93. /* 70 */ ╥┼╠ , ╔╬─┘, ╔═╨ , ╔═╨ , ╔═╨ , ┌╨╪ , ┌╨╪ , ╔═╨ ,
  94. /* 78 */ ╔═╨ , ┴┬┘ , ╔═╨ , ╔═╨ , ╔═╨ , ┴┬╪ , ┴┬╪ , ╔═╨ ,
  95. /* 80 */ ╔═╨ , ╔╬─╪, ╔═╨ , ╔═╨ , ┌┼╥ , ┌┼╥ , ┌┼╥ , ╔═╨ ,
  96. /* 88 */ ╔═╨ , ╔═╨ , ╔═╨ , ╔═╨ , ┴┬╙ , ┴┬╙ , ┴┬╙ , ╔═╨ ,
  97. /* 90 */ ╥┼╠ , ╔╬─┘, ╔═╨ , ╔═╨ , ┌╨╪ , ┌╨╪ , ┌╨┘ , ╔═╨ ,
  98. /* 98 */ ╔═╨ , ┴┬┘ , ╔═╨ , ╔═╨ , ╔═╨ , ┴┬╪ , ╔═╨ , ╔═╨ ,
  99. /* A0 */ ╔══ , ╔╬─╪, ╔══ , ╔═╨ , ┌┼╥ , ┌┼╥ , ┌┼╥ , ╔═╨ ,
  100. /* A8 */ ╔═╨ , ╔══ , ╔═╨ , ┴┬╙ , ┴┬╙ , ┴┬╙ , ┴┬╙ , ╔═╨ ,
  101. /* B0 */ ╥┼╠ , ╔╬─┘, ╔═╨ , ╔═╨ , ┌╨╪ , ┌╨╪ , ┌╨┘ , ╔═╨ ,
  102. /* B8 */ ╔═╨ , ┴┬┘ , ╔═╨ , ╔═╨ , ┴┬╪ , ┴┬╪ , ┴┬┘ , ╔═╨ ,
  103. /* C0 */ ╔══ , ╔╬─╪, ╔═╨ , ╔═╨ , ┌┼╥ , ┌┼╥ , ┌┼╥ , ╔═╨ ,
  104. /* C8 */ ╔═╨ , ╔══ , ╔═╨ , ╔═╨ , ┴┬╙ , ┴┬╙ , ┴┬╙ , ╔═╨ ,
  105. /* D0 */ ╥┼╠ , ╔╬─┘, ╔═╨ , ╔═╨ , ╔═╨ , ┌╨╪ , ┌╨╪ , ╔═╨ ,
  106. /* D8 */ ╔═╨ , ┴┬┘ , ╔═╨ , ╔═╨ , ╔═╨ , ┴┬╪ , ┴┬╪ , ╔═╨ ,
  107. /* E0 */ ╔══ , ╔╬─╪, ╔═╨ , ╔═╨ , ┌┼╥ , ┌┼╥ , ┌┼╥ , ╔═╨ ,
  108. /* E8 */ ╔═╨ , ╔══ , ╔═╨ , ╔═╨ , ┴┬╙ , ┴┬╙ , ┴┬╙ , ╔═╨ ,
  109. /* F0 */ ╥┼╠ , ╔╬─┘, ╔═╨ , ╔═╨ , ╔═╨ , ┌╨╪ , ┌╨╪ , ╔═╨ ,
  110. /* F8 */ ╔═╨ , ┴┬┘ , ╔═╨ , ╔═╨ , ╔═╨ , ┴┬╪ , ┴┬╪ , ╔═╨
  111. ▌;
  112.  
  113. CHAR MODESZ[13] = █
  114.  /* ┴├├ */ 0,
  115.  /* ╔══ */ 1,
  116.  /* ┌┼╥ */ 1,
  117.  /* ┌╨╪ */ 1,
  118.  /* ┌╨┘ */ 1,
  119.  /* ┴┬╙ */ 2,
  120.  /* ┴┬╪ */ 2,
  121.  /* ┴┬┘ */ 2,
  122.  /* ╔═╨ */ 0,
  123.  /* ╥┼╠ */ 1,
  124.  /* ╔╬─╪*/ 1,
  125.  /* ╔╬─┘*/ 1,
  126.  /* ╔╬─ */ 2
  127. ▌;
  128.  
  129. CHAR *MODENAME[] = █
  130.  "ACCUMULATOR",
  131.  "IMMEDIATE",
  132.  "ZERO PAGE",
  133.  "ZERO PAGE,X",
  134.  "ZERO PAGE,Y",
  135.  "ABSOLUTE",
  136.  "ABSOLUTE,X",
  137.  "ABSOLUTE,Y",
  138.  "IMPLIED",
  139.  "RELATIVE",
  140.  "(INDIRECT,X)",
  141.  "(INDIRECT),Y",
  142.  "(INDIRECT)"
  143. ▌;
  144.  
  145. #IFDEF ╠╧├─┬╟
  146. PRTOP(OP)
  147. UNSIGNED OP;
  148.  
  149.   PRINTF(" %02X %-3S %-12S",
  150.     OP,MTABLE[OPCODES[OP]],
  151.     MODENAME[AMODES[OP]]); 
  152.  
  153.  
  154. MAIN() /* FOR LOCAL TEST ONLY */
  155.  UNSIGNED I,J;
  156.  
  157.  FOR (I=0;I<=0XC0;I+= 0X40) █
  158.    FOR (J=0;J<0X20;J++) █
  159.      PRTOP(I+J);
  160.      PRINTF("  ");
  161.      PRTOP(I+0X20+J);
  162.      PUTCHAR('\N');
  163.    ▌
  164.    PRINTF("\N\N");
  165.  ▌
  166.   PUTCHAR('\N');
  167.  
  168. #ENDIF
  169.