Difference between revisions of "PAL16L8"
From CPCWiki - THE Amstrad CPC encyclopedia!
(New PLD version fixing screen corruption when using external ram extension) |
|||
| Line 2: | Line 2: | ||
On the CPC 6128 schematic, it is top centre: [http://www.cpcwiki.eu/imgs/4/4a/CPC6128_Schematic.png CPC6128 Schematic] however the X inputs aren't distinguished. | On the CPC 6128 schematic, it is top centre: [http://www.cpcwiki.eu/imgs/4/4a/CPC6128_Schematic.png CPC6128 Schematic] however the X inputs aren't distinguished. | ||
| + | |||
| + | == Fixed version (Gerald) == | ||
| + | Original version from Porchy suffer from a bad handling of the RAMDIS signal. This cause screen artefact when accessing an external extension RAM like XMEM. | ||
| + | |||
| + | |||
| + | A14OUT = !( !A14 | ||
| + | # !A15 & !Q0 & Q2 ); | ||
| + | |||
| + | A15OUT = !( !A15 & !A14 | ||
| + | # !A15 & !Q1 | ||
| + | # !A15 & !Q0 & !Q2 ); | ||
| + | |||
| + | Q0 = ( D7ANDD6 & nRESET & D0 & !A15 & !nIOWR | ||
| + | # !D7ANDD6 & nRESET & Q0 | ||
| + | # nRESET & A15 & Q0 | ||
| + | # nRESET & nIOWR & Q0 ); | ||
| + | |||
| + | Q1 = ( D7ANDD6 & nRESET & D1 & !A15 & !nIOWR | ||
| + | # !D7ANDD6 & nRESET & Q1 | ||
| + | # nRESET & A15 & Q1 | ||
| + | # nRESET & nIOWR & Q1 ); | ||
| + | |||
| + | Q2 = ( D7ANDD6 & nRESET & D2 & !A15 & !nIOWR | ||
| + | # !D7ANDD6 & nRESET & Q2 | ||
| + | # nRESET & A15 & Q2 | ||
| + | # nRESET & nIOWR & Q2 ); | ||
| + | |||
| + | nCAS0 = ( nCAS | ||
| + | # RAMDIS & !nCPU & nCAS0 | ||
| + | # !A15 & A14 & !nCPU & Q2 & nCAS0 | ||
| + | # A15 & A14 & !nCPU & Q0 & !Q2 & nCAS0 | ||
| + | # !nCPU & !Q0 & Q1 & !Q2 & nCAS0 | ||
| + | # !nCAS1 ); | ||
| + | |||
| + | nCAS1 = !( !RAMDIS & !nCAS & !A15 & A14 & !nCPU & Q2 & nCAS0 | ||
| + | # !RAMDIS & !nCAS & A15 & A14 & !nCPU & Q0 & !Q2 & nCAS0 | ||
| + | # !RAMDIS & !nCAS & !nCPU & !Q0 & Q1 & !Q2 & nCAS0 | ||
| + | # !nCAS & !A15 & A14 & Q2 & nCAS0 & !nCAS1 | ||
| + | # !nCAS & A15 & A14 & Q0 & !Q2 & nCAS0 & !nCAS1 | ||
| + | # !nCAS & !Q0 & Q1 & !Q2 & nCAS0 & !nCAS1 ); | ||
| + | |||
| + | [[File:CPC6128.JED]] : Fixed version of Amstrad 40031 GAL replacement | ||
| + | |||
| + | == Initial replacement equation (Porchy) == | ||
The following equations were worked out by Porchy (member on CPCWiki Forum). These can be used to program replacements: | The following equations were worked out by Porchy (member on CPCWiki Forum). These can be used to program replacements: | ||
Revision as of 15:08, 3 October 2015
The CPC6128 second bank of 64K RAM is controlled by a PAL 16L8 chip. It has the Amstrad part number 40031.
On the CPC 6128 schematic, it is top centre: CPC6128 Schematic however the X inputs aren't distinguished.
Fixed version (Gerald)
Original version from Porchy suffer from a bad handling of the RAMDIS signal. This cause screen artefact when accessing an external extension RAM like XMEM.
A14OUT = !( !A14
# !A15 & !Q0 & Q2 );
A15OUT = !( !A15 & !A14
# !A15 & !Q1
# !A15 & !Q0 & !Q2 );
Q0 = ( D7ANDD6 & nRESET & D0 & !A15 & !nIOWR
# !D7ANDD6 & nRESET & Q0
# nRESET & A15 & Q0
# nRESET & nIOWR & Q0 );
Q1 = ( D7ANDD6 & nRESET & D1 & !A15 & !nIOWR
# !D7ANDD6 & nRESET & Q1
# nRESET & A15 & Q1
# nRESET & nIOWR & Q1 );
Q2 = ( D7ANDD6 & nRESET & D2 & !A15 & !nIOWR
# !D7ANDD6 & nRESET & Q2
# nRESET & A15 & Q2
# nRESET & nIOWR & Q2 );
nCAS0 = ( nCAS
# RAMDIS & !nCPU & nCAS0
# !A15 & A14 & !nCPU & Q2 & nCAS0
# A15 & A14 & !nCPU & Q0 & !Q2 & nCAS0
# !nCPU & !Q0 & Q1 & !Q2 & nCAS0
# !nCAS1 );
nCAS1 = !( !RAMDIS & !nCAS & !A15 & A14 & !nCPU & Q2 & nCAS0
# !RAMDIS & !nCAS & A15 & A14 & !nCPU & Q0 & !Q2 & nCAS0
# !RAMDIS & !nCAS & !nCPU & !Q0 & Q1 & !Q2 & nCAS0
# !nCAS & !A15 & A14 & Q2 & nCAS0 & !nCAS1
# !nCAS & A15 & A14 & Q0 & !Q2 & nCAS0 & !nCAS1
# !nCAS & !Q0 & Q1 & !Q2 & nCAS0 & !nCAS1 );
File:CPC6128.JED : Fixed version of Amstrad 40031 GAL replacement
Initial replacement equation (Porchy)
The following equations were worked out by Porchy (member on CPCWiki Forum). These can be used to program replacements:
A15OUT = (!X2 & !X1 & A14
# !X3 & !X2 & A14
# A15);
!X1 = (!A15 & D7ANDD6 & RESET & !IOWR & D0
# !X1 & RESET & IOWR
# !X1 & !D7ANDD6 & RESET
# !X1 & A15 & RESET);
!X2 = (!A15 & D7ANDD6 & RESET & !IOWR & D1
# !X2 & RESET & IOWR
# !X2 & !D7ANDD6 & RESET
# !X2 & A15 & RESET);
!X3 = (!A15 & D7ANDD6 & RESET & !IOWR & D2
# !X3 & RESET & IOWR
# !X3 & !D7ANDD6 & RESET
# !X3 & A15 & RESET);
!CAS1 = (X3 & !X1 & A15 & A14 & !NCAS & !RAMDIS & !CPU & CAS0
# !X3 & !A15 & A14 & !NCAS & !RAMDIS & !CPU & CAS0
# X3 & !X2 & X1 & !NCAS & !RAMDIS & !CPU & CAS0
# !NCAS & CAS0 & !CAS1);
!CAS0 = (X3 & X2 & X1 & !NCAS & !RAMDIS & CAS1
# X3 & !X1 & !A15 & !NCAS & !RAMDIS & CAS1
# !X3 & A15 & !NCAS & !RAMDIS & CAS1
# !X1 & !A14 & !NCAS & !RAMDIS & CAS1
# !X3 & !A14 & !NCAS & !RAMDIS & CAS1
# !NCAS & !RAMDIS & CPU & CAS1
# !NCAS & !CAS0 & CAS1);
A14OUT = (A15 & A14
# !X1 & A14
# X3 & A14);
File:Amstrad6128.jed Original JED File posted on CPCWiki Forum