Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
apollo_core:start [2020/02/12 06:04] muaddib [Supported instructions] |
apollo_core:start [2020/09/27 09:50] (current) muaddib |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== 68080 Core ====== | ====== 68080 Core ====== | ||
- | {{:apollo-01.png?nolink&128|}} | + | {{:crom_apollo-02.png?nolink&128|}} |
===== Overview ===== | ===== Overview ===== | ||
Line 7: | Line 7: | ||
**68080** is a new CPU that is code-compatible with the **Motorola 68k** processors. | **68080** is a new CPU that is code-compatible with the **Motorola 68k** processors. | ||
- | It is an affordable CPU for your classic Amigas (or Amiga compatibles) that is **much faster than the fastest 68060**. It is compatible with all CPUs and [[apollo_core:fpu|FPUs]] of the Motorola 68000 family. [(Few rare instructions are currently not supported.)] It is designed according to modern CPU standards, is fully written in **VHDL**, and is intended to run on [[https://www.intel.com/content/www/us/en/products/programmable/cyclone-series.html|Altera Cyclone FPGAs]]. | + | It is an affordable CPU for your classic Amigas (or Amiga compatibles) that is **much faster than the fastest 68060**. It is compatible with all CPUs and [[apollo_core:fpu|FPUs]] of the Motorola 68000 family. [(MMU-related instructions are currently not supported.)] It is designed according to modern CPU standards, is fully written in **VHDL**, and is intended to run on [[https://www.intel.com/content/www/us/en/products/programmable/cyclone-series.html|Altera Cyclone FPGAs]]. |
**AmigaOS 3.x** currently recognizes this new CPU as a **68040**. | **AmigaOS 3.x** currently recognizes this new CPU as a **68040**. | ||
Line 51: | Line 51: | ||
| Amiga 1200 | MK2 | 68060 | 66 MHz | 65 | ++++++++++++++++ | | | Amiga 1200 | MK2 | 68060 | 66 MHz | 65 | ++++++++++++++++ | | ||
| Amiga 600 | Vampire 600 V2 | SILVER6 | x15 | 173 | +++++++++++++++++++++++++++++++++++++++++++ | | | Amiga 600 | Vampire 600 V2 | SILVER6 | x15 | 173 | +++++++++++++++++++++++++++++++++++++++++++ | | ||
+ | |||
+ | More detailed comparisons to an overclocked 68060 can be found [[http://www.apollo-core.com/knowledge.php?note=30521|here]]. | ||
---- | ---- | ||
+ | |||
===== Features ===== | ===== Features ===== | ||
Line 60: | Line 63: | ||
^ Feature ^ 68000 ^ 68020 ^ 68030 ^ 68040 ^ 68060 ^ 68080 ^ | ^ Feature ^ 68000 ^ 68020 ^ 68030 ^ 68040 ^ 68060 ^ 68080 ^ | ||
- | | 68K ISA | X | X | X | X | X | X | | + | | 68k ISA | X | X | X | X | X | X | |
| Extended EA-modes | | X | X | X | X | X | | | Extended EA-modes | | X | X | X | X | X | | ||
| BitFields | | X | X | X | X | X | | | BitFields | | X | X | X | X | X | | ||
Line 96: | Line 99: | ||
* [[.code_samples:|68080 asm code samples]] | * [[.code_samples:|68080 asm code samples]] | ||
- | ^ Unsupported instructions ^ Notes ^ | + | 68080 lets you use EA as 1 source and to update 3rd registers - so normally not overwrite source registers. |
- | | ''TAS2'' | Never used on AmigaOS | | + | |
- | | ''MMU''-related | Not implemented | | + | |
- | + | ||
- | ---- | + | |
- | + | ||
- | + | ||
- | ===== New 64-bit instructions ===== | + | |
- | + | ||
- | {{:64bit.png?nolink&48|}} | + | |
- | The instructions are very similar to the ''SSE'' / ''ALTIVEC'' version of them. APOLLO lets you use EA as 1 source and to update 3rd registers - so normally not overwrite source registers. | + | ''MMU''-related instructions are not supported. These are rarely used on AmigaOS. |
- | * **(ea)** can be any Effective Address. | + | ==== AMMX: New 64-bit instructions ==== |
- | * **B** is one of 16 Source Regs. | + | |
- | * **C** is one of 16 Source Regs. | + | |
- | * **D** is one of 16 Destination Regs. | + | |
- | ^ Instruction ^ Operands ^ Description ^ | + | These instructions are very similar to the ''SSE'' / ''AltiVec'' versions of them. |
- | | [[apollo_core:instructions:perm|PERM]] | (ea),B,C,D | Permute Bytes. | | + | |
- | | [[apollo_core:instructions:bsel|BSEL]] | (ea),B,D | Select Bytes. | | + | |
- | | [[apollo_core:instructions:por|POR]] | (ea),B,D | Parallel OR. | | + | |
- | | [[apollo_core:instructions:pand|PAND]] | (ea),B,D | Parallel AND. | | + | |
- | | [[apollo_core:instructions:pand|PANDN]] | (ea),B,D | Parallel ANDN. | | + | |
- | | [[apollo_core:instructions:padd|PADD.B]] | (ea),B,D | Parallel ADD.B. | | + | |
- | | [[apollo_core:instructions:padd|PADD.W]] | (ea),B,D | Parallel ADD.W. | | + | |
- | | [[apollo_core:instructions:padd|PADDss.B]] | (ea),B,D | Parallel ADDss.B - Signed with Saturate. | | + | |
- | | [[apollo_core:instructions:padd|PADDss.W]] | (ea),B,D | Parallel ADDss.W - Signed with Saturate. | | + | |
- | | [[apollo_core:instructions:padd|PADDus.B]] | (ea),B,D | Parallel ADDus.B - Unsigned with Saturate. | | + | |
- | | [[apollo_core:instructions:padd|PADDus.W]] | (ea),B,D | Parallel ADDus.W - Unsigned with Saturate. | | + | |
- | | [[apollo_core:instructions:psub|PSUB.B]] | (ea),B,D | Parallel SUB.B. | | + | |
- | | [[apollo_core:instructions:psub|PSUB.W]] | (ea),B,D | Parallel SUB.W. | | + | |
- | | [[apollo_core:instructions:psub|PSUBss.B]] | (ea),B,D | Parallel SUBss.B - Signed with Saturate. | | + | |
- | | [[apollo_core:instructions:psub|PSUBss.W]] | (ea),B,D | Parallel SUBss.W - Signed with Saturate. | | + | |
- | | [[apollo_core:instructions:psub|PSUBus.B]] | (ea),B,D | Parallel SUBus.B - Unsigned with Saturate. | | + | |
- | | [[apollo_core:instructions:psub|PSUBus.W]] | (ea),B,D | Parallel SUBus.W - Unsigned with Saturate. | | + | |
- | | [[apollo_core:instructions:pavg|PAVG.B]] | (ea),B,D | Parallel AVG.B. | | + | |
- | | [[apollo_core:instructions:pavg|PAVG.W]] | (ea),B,D | Parallel AVG.W. | | + | |
- | | [[apollo_core:instructions:pcmp|PCMPeq.B]] | (ea),B,D | Parallel CMPeq.B - Equal. | | + | |
- | | [[apollo_core:instructions:pcmp|PCMPeq.W]] | (ea),B,D | Parallel CMPeq.W - Equal. | | + | |
- | | [[apollo_core:instructions:pcmp|PCMPgt.B]] | (ea),B,D | Parallel CMPgt.B - Greater Than. | | + | |
- | | [[apollo_core:instructions:pcmp|PCMPgt.W]] | (ea),B,D | Parallel CMPgt.W - Greater Than. | | + | |
- | | [[apollo_core:instructions:pmul|PMULSH.W]] | (ea),B,D | Parallel MULSH.W. | | + | |
- | | [[apollo_core:instructions:pmul|PMULSL.W]] | (ea),B,D | Parallel MULSL.W. | | + | |
* Quick Reference: [[http://www.apollo-core.com/AMMXQuickRef.pdf|PDF]] | * Quick Reference: [[http://www.apollo-core.com/AMMXQuickRef.pdf|PDF]] |
Last modified: le 2020/08/02 12:37