home *** CD-ROM | disk | FTP | other *** search
/ 20 Miles North of Nowhere BBS / 20miles_north_of_nowhere_1996_05_10.zip / 20miles_north_of_nowhere_1996_05_10 / EMULATOR / 8080.ZIP / 8080.INC < prev    next >
Text File  |  1985-11-21  |  6KB  |  436 lines

  1.     IF1            ;;only need envolve pass1
  2. ;
  3. ;       Macros to Define 8080 Instruction Set to MASM (Intel mnemonics)
  4. ;       (Allows development of 8080/V20 emulation code user PC-DOS)
  5. ;
  6. ;       STEPHEN R DAVIS '85 (214-)454-2426
  7. ;
  8. ;       (Note that the IN and OUT instructions were left out
  9. ;        since the I/O configuration of a V20/30 system is not the
  10. ;        same as an 8080, the di and ei instructions were renamed id and
  11. ;        ie to avoid conflict with the DI register and the SP was renamed
  12. ;        STKP to avoid conflict with the 8086/88 SP register).  The two
  13. ;        NEC instructions CALLN (call native mode) and RETEM (return from
  14. ;        emulation have been added to allow 8080 code interaction with the
  15. ;        native mode code.)
  16. ;
  17. ;       When used in a program, these macros "generate" instructions by building
  18. ;       the opcodes up.  You may want to suppress this instruction generation
  19. ;       from appearing in your listings with a .SALL statement at the beginning
  20. ;       of your program.
  21. ;
  22. ;       DEFINE THE 8080 REGISTERS
  23. ;
  24.     .Y = 0
  25.         IRPC    X,BCDEHLMA
  26.     X = .Y
  27.     .Y = .Y + 1
  28.     ENDM
  29.     STKP = 6     ;;some instructions use sp
  30.     PSW = 6         ;;and push/pop uses psw
  31.  
  32. ;       SOME INSTRUCTIONS ACT ON REGISTER PAIRS (BC,DE,HL)
  33. ;       THE FOLLOWING MACRO GENERATES AN ERROR IF THE
  34. ;       SPECIFIED ARGUMENT IS NOT A LEGAL REGISTER PAIR
  35.  
  36. PAIR    MACRO    ARG
  37.         .OK = 1
  38.         IF (ARG MOD 2)
  39.             ARG    ;NOT A REGISTER PAIR
  40.             .OK = 0
  41.         ENDIF
  42.     ENDM
  43.  
  44. ;       MANY OF THE SINGLE ARGUMENT INSTRUCTIONS
  45. ;       WHICH USE DOUBLE REGISTERS FOLLOW A PATTERN
  46.  
  47. DOUBLE    MACRO    OPCODE,ARG
  48.         PAIR ARG
  49.         IF .OK
  50.             DB    OPCODE+(ARG SHL 3)
  51.         ENDIF
  52.     ENDM
  53.  
  54. ;       STAX AND LDAX HAVE THE SAME RESTRICTIONS AS
  55. ;       THE OTHER DOUBLES WITH THE ADDED RESTRICTION
  56. ;       THAT ONLY REGISTERS B AND D ARE LEGAL ARGUMENTS
  57.  
  58. STXLDX    MACRO    OPCODE,ARG
  59.         .OK = 1
  60.         IRPC    .X,HM
  61.             IFE    .X-ARG
  62.                 .OK = 0
  63.                 ARG    ;ILLEGAL ARGUMENT
  64.             ENDIF
  65.         ENDM
  66.         IF .OK
  67.             DOUBLE    OPCODE,ARG
  68.         ENDIF
  69.     ENDM
  70.  
  71. ;       THE CALL AND JUMP GROUP HAVE THEIR OWN FORMAT
  72.  
  73. CJ    MACRO    OPCODE,ADDR
  74.         DB    OPCODE
  75.         DW    ADDR
  76.     ENDM
  77.  
  78. ;       NOW THE ACTUAL INSTRUCTION DEFINITIONS
  79. ;       INSTRUCTIONS WITHOUT ARGUMENTS
  80.  
  81. NOP    MACRO
  82.         DB    0H
  83.     ENDM
  84.  
  85. RLC    MACRO
  86.         DB    7H
  87.     ENDM
  88.  
  89. RRC    MACRO
  90.         DB    0FH
  91.     ENDM
  92.  
  93. RAL    MACRO
  94.         DB    17H
  95.     ENDM
  96.  
  97. RAR    MACRO
  98.         DB    1FH
  99.     ENDM
  100.  
  101. DAA    MACRO
  102.         DB    27H
  103.     ENDM
  104.  
  105. CMA    MACRO
  106.         DB    2FH
  107.     ENDM
  108.  
  109. STC    MACRO
  110.         DB    37H
  111.     ENDM
  112.  
  113. CMC    MACRO
  114.         DB    3FH
  115.     ENDM
  116.  
  117. HLT    MACRO
  118.         DB    76H
  119.     ENDM
  120.  
  121. RNZ    MACRO
  122.         DB    0C0H
  123.     ENDM
  124.  
  125. RZ    MACRO
  126.         DB    0C8H
  127.     ENDM
  128.  
  129. RET    MACRO
  130.         DB    0C9H
  131.     ENDM
  132.  
  133. RNC    MACRO
  134.         DB    0D0H
  135.     ENDM
  136.  
  137. RC    MACRO
  138.         DB    0D8H
  139.     ENDM
  140.  
  141. RPO    MACRO
  142.         DB    0E0H
  143.     ENDM
  144.  
  145. RPE    MACRO
  146.         DB    0E8H
  147.     ENDM
  148.  
  149. PCHL    MACRO
  150.         DB    0E9H
  151.     ENDM
  152.  
  153. XTHL    MACRO
  154.         DB    0E3H
  155.     ENDM
  156.  
  157. XCHG    MACRO
  158.         DB    0EBH
  159.     ENDM
  160.  
  161. RP    MACRO
  162.         DB    0F0H
  163.     ENDM
  164.  
  165. ID    MACRO
  166.         DB    0F3H
  167.     ENDM
  168.  
  169. RM    MACRO
  170.         DB    0F8H
  171.     ENDM
  172.  
  173. SPHL    MACRO
  174.         DB    0F9H
  175.     ENDM
  176.  
  177. IE    MACRO
  178.         DB    0FBH
  179.     ENDM
  180.  
  181. ;THE SIMPLE SINGLE ARGUMENT INSTRUCTIONS
  182.  
  183. ADD    MACRO    ARG
  184.         DB    80H+ARG
  185.     ENDM
  186.  
  187. ADC    MACRO    ARG
  188.         DB    88H+ARG
  189.     ENDM
  190.  
  191. SUB    MACRO    ARG
  192.         DB    90H+ARG
  193.     ENDM
  194.  
  195. SBB    MACRO    ARG
  196.         DB    98H+ARG
  197.     ENDM
  198.  
  199. ANA    MACRO    ARG
  200.         DB    0A0H+ARG
  201.     ENDM
  202.  
  203. XRA    MACRO    ARG
  204.         DB    0A8H+ARG
  205.     ENDM
  206.  
  207. ORA    MACRO    ARG
  208.         DB    0B0H+ARG
  209.     ENDM
  210.  
  211. CMP    MACRO    ARG
  212.         DB    0B8H+ARG
  213.     ENDM
  214.  
  215. ADI    MACRO    ARG
  216.         DB    0C6H
  217.         DB    ARG
  218.     ENDM
  219.  
  220. ACI    MACRO    ARG
  221.         DB    0CEH
  222.         DB    ARG
  223.     ENDM
  224.  
  225. SUI    MACRO    ARG
  226.         DB    0D6H
  227.         DB    ARG
  228.     ENDM
  229.  
  230. SBI    MACRO    ARG
  231.         DB    0DEH
  232.         DB    ARG
  233.     ENDM
  234.  
  235. ANI    MACRO    ARG
  236.         DB    0E6H
  237.         DB    ARG
  238.     ENDM
  239.  
  240. XRI    MACRO    ARG
  241.         DB    0EEH
  242.         DB    ARG
  243.     ENDM
  244.  
  245. ORI    MACRO    ARG
  246.         DB    0F6H
  247.         DB    ARG
  248.     ENDM
  249.  
  250. CPI    MACRO    ARG
  251.         DB    0FEH
  252.         DB    ARG
  253.     ENDM
  254.  
  255. INR    MACRO    ARG
  256.         DB    04H+(ARG * 8)
  257.     ENDM
  258.  
  259. DCR    MACRO    ARG
  260.         DOUBLE    05H,ARG
  261.         ENDM
  262.  
  263. ;THE DOUBLE REGISTER SINGLE ARGUMENT
  264.  
  265. STAX    MACRO   ARG
  266.         STXLDX    02H,ARG
  267.         ENDM
  268.  
  269. INX    MACRO    ARG
  270.         DOUBLE    03H,ARG
  271.         ENDM
  272.  
  273. DAD    MACRO    ARG
  274.         DOUBLE    09H,ARG
  275.         ENDM
  276.  
  277. LDAX    MACRO    ARG
  278.         STXLDX    0AH,ARG
  279.     ENDM
  280.  
  281. DCX    MACRO    ARG
  282.         DOUBLE    0BH,ARG
  283.         ENDM
  284.  
  285. SHLD    MACRO    ARG1,ARG2
  286.         DB    22H
  287.         DW    ARG1 ARG2
  288.     ENDM
  289.  
  290. LHLD    MACRO    ARG1,ARG2
  291.         DB    2AH
  292.         DW    ARG1 ARG2
  293.     ENDM
  294.  
  295. STA    MACRO    ARG1,ARG2
  296.         DB    32H
  297.         DW    ARG1 ARG2
  298.     ENDM
  299.  
  300. LDA    MACRO    ARG1,ARG2
  301.         DB    3AH
  302.         DW    ARG1 ARG2
  303.     ENDM
  304.  
  305. POP    MACRO    ARG
  306.         DOUBLE    0C1H,ARG
  307.     ENDM
  308.  
  309. PUSH    MACRO    ARG
  310.         DOUBLE    0C5H,ARG
  311.     ENDM
  312.  
  313. ;HERE ARE THE CALL, INTERRUPT, JUMP & RETURN GROUP
  314.  
  315. RST    MACRO    NUM        ;;ONLY RST 0 THRU RST 7 ALLOWED
  316.         .OK = 0 ;;ASSUME ILLEGAL
  317.         IRPC .X,01234567
  318.             IFE .X-NUM    ;;OH - WE HAVE A MATCH
  319.                 .OK = 1 ;;MEANS ITS OK
  320.             ENDIF
  321.         ENDM
  322.         IFE .OK
  323.             NUM    ;ILLEGAL ARGUMENT -- MUST BE 0 THRU 7
  324.         ELSE
  325.             DB    0C7H+(NUM * 8)
  326.         ENDIF
  327.     ENDM
  328.  
  329. JNZ    MACRO    ADDR
  330.         CJ    0C2H,ADDR
  331.     ENDM
  332.  
  333. JMP    MACRO    ADDR
  334.         CJ    0C3H,ADDR
  335.     ENDM
  336.  
  337. JZ    MACRO    ADDR
  338.         CJ    0CAH,ADDR
  339.     ENDM
  340.  
  341. JNC    MACRO    ADDR
  342.         CJ    0D2H,ADDR
  343.     ENDM
  344.  
  345. JC    MACRO    ADDR
  346.         CJ    0DAH,ADDR
  347.     ENDM
  348.  
  349. JPO    MACRO    ADDR
  350.         CJ    0E2H,ADDR
  351.     ENDM
  352.  
  353. JPE    MACRO    ADDR
  354.         CJ    0EAH,ADDR
  355.     ENDM
  356.  
  357. JP    MACRO    ADDR
  358.         CJ    0F2H,ADDR
  359.     ENDM
  360.  
  361. JM    MACRO    ADDR
  362.         CJ    0FAH,ADDR
  363.     ENDM
  364.  
  365. CNZ    MACRO    ADDR
  366.         CJ    0C4H,ADDR
  367.     ENDM
  368.  
  369. CZ    MACRO    ADDR
  370.         CJ    0CCH,ADDR
  371.     ENDM
  372.  
  373. CALL    MACRO    ADDR
  374.         CJ    0CDH,ADDR
  375.     ENDM
  376.  
  377. CNC    MACRO    ADDR
  378.         CJ    0D4,ADDR
  379.     ENDM
  380.  
  381. CC    MACRO    ADDR
  382.         CJ    0DCH,ADDR
  383.     ENDM
  384.  
  385. CPO    MACRO    ADDR
  386.         CJ    0E4H,ADDR
  387.     ENDM
  388.  
  389. CPE    MACRO    ADDR
  390.         CJ    0ECH,ADDR
  391.     ENDM
  392.  
  393. CP    MACRO    ADDR
  394.         CJ    0F4H,ADDR
  395.     ENDM
  396.  
  397. CM    MACRO    ADDR
  398.         CJ    0FCH,ADDR
  399.     ENDM
  400.  
  401. ;NOW THE  2 ARGUMENT GROUP
  402.  
  403. MOV    MACRO    ARG1,ARG2
  404.         DB    40H+(ARG1 SHL 3)+ARG2
  405.     ENDM
  406.  
  407. LXI    MACRO    ARG1,ARG2
  408.         DOUBLE    01H,ARG1
  409.         DW    ARG2
  410.         ENDM
  411.  
  412. MVI    MACRO    ARG1,ARG2
  413.         DB    06H+(ARG1 SHL 3)
  414.         DB    ARG2
  415.     ENDM
  416.  
  417.  
  418. ;FINALLY WE ADD THE NEC UNIQUE INSTRUCTIONS
  419.  
  420. INTEM    MACRO    ARG            ;;BREAK INTO 8080 EMULATION
  421.         DB    0FH,0FFH
  422.         DB    ARG
  423.     ENDM
  424.  
  425. CALLN    MACRO    ARG            ;;CALL NATIVE 8086 CODE FROM EMULATION
  426.         DB    0EDH,0EDH
  427.         DB    ARG
  428.     ENDM
  429.  
  430. RETEM    MACRO                ;;RETURN TO NATIVE MODE FROM EMULATION
  431.         DB    0EDH,0FDH
  432.     ENDM
  433.  
  434.  
  435.         ENDIF
  436.