; JED2EQN -- JEDEC file to Boolean Equations disassembler (Version V063) ; Copyright (c) National Semiconductor Corporation 1990-1993 ; Disassembled from SPEC_Y.JED. Date: Date: 2025-09-17 chip SPEC_Y PAL14L4 ; RAM_CE = 1 ; ignored? /KEYIO = 2 A15 = 3 A14 = 4 A13 = 5 A12 = 6 A11 = 7 A10 = 8 A9 = 9 GND = 10 A8 = 11 A7 = 12 A0 = 13 ; ; ; /RA0 = 14 /RA1 = 15 /RA2 = 16 /RA3 = 17 ; NC18 = 18 ; NC19 = 19 VCC = 20 equations RA3 = KEYIO + A0 * /A7 ; ; RA2 is low ; RA2 = KEYIO * A15 * A14 * A13 * A12 * /A11 ; 0b11110xxx + KEYIO * A15 * A14 * A13 * A12 * A11 * /A10 ; 0b111110xx + KEYIO * A15 * A14 * A13 * A12 * A11 * A10 * /A9 ; 0b1111110x + KEYIO * A15 * A14 * A13 * A12 * A11 * A10 * A9 * /A8 ; 0b11111110 ; The Spectrum keyboard keys in Spectrum I/O space look like this: ; AAAAAAAA ; 111111 d d d d d ; 54321098 4 3 2 1 0 ; ; 01111111 B N M sh space ; 10111111 H J K L enter ; 11011111 V C X Z caps ; 11101111 Y U I O P ; 11110111 6 7 8 9 0 ; 11111011 G F D S A ; 11111101 T R E W Q ; 11111110 5 4 3 2 1 ; It is read at port FE (A7-0) ; but IN A,(C) actually works like IN A,(BC) with register B driving A15-8. ; ; I'm puzzled because the logic looks like RA2 is active for only 4 out of 8 rows. ; ; unused RA1 = vcc RA0 = vcc