=== Programmable Array Logic (PAL) ===
PALs, introduced in 1978 by Monolithic MemoriesInc (MMI), became important in many 8-bit computers. They featured a programmable AND array and a fixed OR array, making them useful for handling simple logic tasks. PALs came in one-time programmable or UV-erasable versions, offering flexibility to developers.
One common use for PALs was address decoding, which enabled memory bank switching, allowing computers to access more memory than their basic design supported. PALs were also used to simplify communication between the CPU and peripherals.
For example, the Amstrad CPC 6128 used a PAL to manage memory and bank switching, showing how these chips helped improve performance in small, affordable computers.
<br>
=== Hard Array Logic (HAL) ===
MMI also offered a similar family called HAL, or "Hard Array Logic", which were like PAL devices except that they were mask-programmed at the factory.
HAL and PAL have been used interchangeably by Amstrad.
<br>
{| class="wikitable"
|-
! Feature !! PAL / HAL !! GAL !! PLA !! ULA !! Gate Array
|-
| Flexibility || Low || Low-Medium || Medium || Medium || Medium-High