Difference between revisions of "ASIC"

From CPCWiki - THE Amstrad CPC encyclopedia!
Jump to: navigation, search
Line 15: Line 15:
 
  CPC+ ASIC's part number is 40489
 
  CPC+ ASIC's part number is 40489
  
 +
==Emulated chips==
 +
 +
CPC+ ASIC emulated the following chips :
 +
 +
*CRTC 6845
 +
*Gate Array
 +
*PAL (memory paging)
 +
*8255 PPI
 +
 +
==New features==
  
 
This Amstrad Plus ASIC perform many additional features that the old CPC series couldn't: the "Plus Features".
 
This Amstrad Plus ASIC perform many additional features that the old CPC series couldn't: the "Plus Features".
  
 
*Hardware Sprites.
 
*Hardware Sprites.
*[[CRTC]] emulation.
+
*Soft scrolling (in complement with register 12&13 of the CRTC)
*Hardware Scrolling.
+
*Screen splitting
*Maybe some interactions with the [[Amstrad Cartridge Identification Device|ACID]] chip in cartridges.
+
*Programmable and vectorised interrupts
*DMA sound channels.
+
*DMA sound channels
*Many many more.
+
*Specific ROM switching
 +
 
  
 
== Known Flaws==
 
== Known Flaws==
Line 30: Line 41:
 
Yet this was a bit flawed.
 
Yet this was a bit flawed.
  
*Despite removing some tasks from the CPU ([[Z80]]), the ASIC had to use specific central memory addresses, so "took away" this memory from the CPU...
+
*Despite removing some tasks from the CPU ([[Z80]]), ASIC registers are mapped onto memory from #4000 to #7FFF range prior to other type of memory (RAM or ROM).That means this memory range is not accessible when ASIC registers are paged.
 
+
This was not that important for a 64KB RAM system (464+ and GX4000) yet this is a serious limitation when dealing with Extra memory (6128+ and Extra RAM peripheral)
+
  
*There's a DMA bug (Help needed).
+
*PPI emulation is not correct as the original 8255 does not need validation.On ASIC emulation , this validation is needed so some programs written for "old CPCs" will not be able to get keyboard state.
  
*Some argue that the ASIC simply badly emulates an old CPC, but it is not really one. The colours are slightly different and some software (games) couldn't work until modified (patches for such old CPC games often exist now).
+
*Z80 IM2 mode is bugged.In this mode , the Z80 I register gives the high word for vector table.ASIC gives the low word from IVR and the devices that generate interrupt (raster and DMAs channels).ASIC generates sometimes a bad values and the raster interrupt routine is called instead of DMA0 routine.The reasons of this bug are not known.
  
 +
*There is a conflict between programmable interrupts and some CRTC settings (line screen split).That will cause the RAM refresh to stop and the memory content will be quickly corrupted causing machine crash.
  
As a result, some people say that the Plus is not a CPC.
+
*Reducing Horizontal BLanking could cause another internal conflict when using DMA lists.In the worst case , this conflict can cause irreversible damage to the ASIC.
  
 +
*Original CPC colors emulation is not correct.
  
 
==Internal Links==
 
==Internal Links==

Revision as of 08:10, 28 February 2010

Application-Specific Integrated Circuit (ASIC)

An ASIC is an especially manufactured custom chip designed to fulfil special functions.

The main reason is to perform special tasks or combine different electronic components into a single Integrated Circuit (chip).

Amstrad Custom chips

The Amstrad CPC used one custom chip: the video Gate Array (also called VGA – no connection with the Video PC standard).

Latter CPC cost down series included a "pre-ASIC" to merge the VGA and the CRTC.

The Amstrad Plus included a "second heart" simply referred as the ASIC.

CPC+ ASIC's part number is 40489

Emulated chips

CPC+ ASIC emulated the following chips :

  • CRTC 6845
  • Gate Array
  • PAL (memory paging)
  • 8255 PPI

New features

This Amstrad Plus ASIC perform many additional features that the old CPC series couldn't: the "Plus Features".

  • Hardware Sprites.
  • Soft scrolling (in complement with register 12&13 of the CRTC)
  • Screen splitting
  • Programmable and vectorised interrupts
  • DMA sound channels
  • Specific ROM switching


Known Flaws

The Amstrad Plus ASIC improved a lot of the old CPC's capability. Yet this was a bit flawed.

  • Despite removing some tasks from the CPU (Z80), ASIC registers are mapped onto memory from #4000 to #7FFF range prior to other type of memory (RAM or ROM).That means this memory range is not accessible when ASIC registers are paged.
  • PPI emulation is not correct as the original 8255 does not need validation.On ASIC emulation , this validation is needed so some programs written for "old CPCs" will not be able to get keyboard state.
  • Z80 IM2 mode is bugged.In this mode , the Z80 I register gives the high word for vector table.ASIC gives the low word from IVR and the devices that generate interrupt (raster and DMAs channels).ASIC generates sometimes a bad values and the raster interrupt routine is called instead of DMA0 routine.The reasons of this bug are not known.
  • There is a conflict between programmable interrupts and some CRTC settings (line screen split).That will cause the RAM refresh to stop and the memory content will be quickly corrupted causing machine crash.
  • Reducing Horizontal BLanking could cause another internal conflict when using DMA lists.In the worst case , this conflict can cause irreversible damage to the ASIC.
  • Original CPC colors emulation is not correct.

Internal Links

External Links

General information on ASICs.