├── .gitignore ├── ChangeLog ├── GAL-ALGS.PGM ├── README ├── README2 ├── examples ├── Counter.chp ├── Counter.fus ├── Counter.jed ├── Counter.pin ├── Counter.pld ├── GAL20RA10.chp ├── GAL20RA10.fus ├── GAL20RA10.jed ├── GAL20RA10.pin ├── GAL20RA10.pld ├── GAL22V10.chp ├── GAL22V10.fus ├── GAL22V10.jed ├── GAL22V10.pin ├── GAL22V10.pld ├── Gatter.chp ├── Gatter.fus ├── Gatter.jed ├── Gatter.pin ├── Gatter.pld ├── Tristate.chp ├── Tristate.fus ├── Tristate.jed ├── Tristate.pin └── Tristate.pld ├── galer ├── asmerr.html ├── assembler.html ├── construction.html ├── errors.html ├── example16v8.html ├── example20ra10.html ├── example22v10.html ├── examples.html ├── gal16_20v8.html ├── gal20ra10.html ├── gal22v10.html ├── galer.html ├── history.html ├── important.html ├── index.gif ├── index.html ├── installation.html ├── intstruktur.html ├── jedecerr.html ├── jedecfile.html ├── keywords.html ├── literature.html ├── main.html ├── menabout.html ├── menacw.html ├── menasm.html ├── mencalleditor.html ├── menchecker.html ├── menclearnames.html ├── mencmp.html ├── mencopy.html ├── meneditor.html ├── menempty.html ├── menerase.html ├── mengalinfo.html ├── mengaltype.html ├── menhardver.html ├── menhelp.html ├── menjedecpar.html ├── menmakejedec.html ├── menoptimizer.html ├── menprog.html ├── menquit.html ├── menreadsig.html ├── menreasm.html ├── mensaveconfig.html ├── mensetsec.html ├── menshownames.html ├── mentestsec.html ├── mentypereq.html ├── menus.html ├── menwriteacc.html ├── next.gif ├── optimizer.html ├── partlist.html ├── prev.gif ├── proggal.html ├── proglogik.html ├── program.html ├── reasmerr.html ├── schaltbesch.html ├── shareware.html ├── software.html ├── sourcefile.html ├── systemreq.html ├── testing.html ├── thanks.html ├── toc.gif └── usage.html ├── jedec2.txt └── src ├── .gitignore ├── Makefile ├── galasm.c ├── galasm.h ├── jedec.c ├── localize.c └── support.c /.gitignore: -------------------------------------------------------------------------------- 1 | src/galasm 2 | src/galasm.exe 3 | src/*.o 4 | -------------------------------------------------------------------------------- /ChangeLog: -------------------------------------------------------------------------------- 1 | 2 | - 2.1 20030508 3 | 4 | - Fixed fuse checksum for GAL22V10 (Hilgart Elmar) 5 | - Now gives the correct "Operation mode" on stdout 6 | - Added Makefile 7 | - Minor code cleanup 8 | -------------------------------------------------------------------------------- /README: -------------------------------------------------------------------------------- 1 | 2 | 3 | GALasm 2.1 4 | 5 | Portable GAL Assembler 6 | Copyright (c) 1998-2003 Alessandro Zummo 7 | Original sources Copyright (c) 1991-96 Christian Habermann 8 | All Rights Reserved 9 | 10 | Commercial use is strictly forbidden 11 | 12 | 13 | Introduction 14 | ------------ 15 | 16 | GALasm was created simply because there were no other 17 | open source GAL assemblers. The assembler core 18 | is basically the one of GALer, a GAL development 19 | environment for the Amiga platform. I was unable 20 | to get in touch with his author to get the permission to 21 | do the port, so if he complains i'll have to 22 | stop the development. 23 | 24 | 25 | Copyright 26 | --------- 27 | 28 | GALasm is Copyright (c) 1998-2003 by Alessandro Zummo 29 | but any bug and any piece of code taken from the original GALer 30 | sources is still Copyright (c) 1991-96 by Christian Habermann. 31 | 32 | 33 | Disclaimer 34 | ---------- 35 | 36 | The authors can not be made responsible for any damage caused 37 | by a fault of GALasm. In other words: use it at your own risk. 38 | Even if i've ported it, i've not fully understood every 39 | aspect of the assembler core. 40 | 41 | 42 | Sources 43 | ------- 44 | 45 | The sources are written in ANSI-C, so it should 46 | be possible to compile them on any platform. 47 | The sources have been successfully compiled 48 | with SAS/C on the Amiga platform and with gcc 49 | on Debian GNU/Linux. 50 | 51 | 52 | About GALs 53 | ---------- 54 | 55 | Some kind of GALs are not reprogrammable and some others, 56 | especially the one i belong to, are even not programmable at all... 57 | ok, just kidding. The original GALer documentation 58 | is a very well written, so if you want to know 59 | how to write down a GAL equation, run your favorite 60 | browser and load galer/main.html. All the non-Amiga 61 | related sections are still valid for GALasm. 62 | 63 | 64 | GALasm 65 | ------ 66 | 67 | If you type GALasm -h you should obtain the following text: 68 | 69 | GALasm 2.1, Portable GAL Assembler 70 | Copyright (c) 1998-2003 Alessandro Zummo. All Rights Reserved 71 | Original sources Copyright (c) 1991-96 Christian Habermann 72 | 73 | Usage: 74 | GALasm [-scfpa] 75 | -s Enable security fuse 76 | -c Do not create the .chp file 77 | -f Do not create the .fus file 78 | -p Do not create the .pin file 79 | -a Restrict checksum to the fuse array only 80 | 81 | I think it's self explanatory, but if you've 82 | any trouble, drop me a note. 83 | 84 | 85 | Author 86 | ------ 87 | 88 | The author (me) can be contacted at azummo-galasm@towertech.it 89 | while the GALasm support page is located at 90 | http://www.towertech.it/azummo/ 91 | 92 | If you have a bug report, a comment or anything else, 93 | feel free to write me. 94 | Donations are also welcome 8-) . 95 | 96 | -------------------------------------------------------------------------------- /README2: -------------------------------------------------------------------------------- 1 | This is a modified version of GALasm 2.1. 2 | 3 | It was modified by David Hovemeyer 4 | so that when writing JEDEC files, end of line is indicated by 5 | \r\n rather than just \n. My GAL programmer (Wellon VP-190) 6 | does not accept JEDEC files with bare \n characters in them. 7 | 8 | I have compiled the modified version on Linux and Cygwin using 9 | gcc, and the .jed files produced appear to be valid. (The Wellon 10 | software reports them as being valid, and successfully programs 11 | 22V10 devices with them.) 12 | -------------------------------------------------------------------------------- /examples/Counter.chp: -------------------------------------------------------------------------------- 1 | 2 | 3 | GAL16V8 4 | 5 | -------\___/------- 6 | Clock | 1 20 | VCC 7 | | | 8 | D0 | 2 19 | Q0 9 | | | 10 | D1 | 3 18 | Q1 11 | | | 12 | D2 | 4 17 | Q2 13 | | | 14 | D3 | 5 16 | Q3 15 | | | 16 | Set | 6 15 | NC 17 | | | 18 | Clear | 7 14 | NC 19 | | | 20 | NC | 8 13 | NC 21 | | | 22 | NC | 9 12 | NC 23 | | | 24 | GND | 10 11 | /OE 25 | ------------------- 26 | -------------------------------------------------------------------------------- /examples/Counter.fus: -------------------------------------------------------------------------------- 1 | 2 | 3 | Pin 19 = Q0 XOR = 1 AC1 = 0 4 | 0 x--- ---- ---- ---- x--- -x-- ---- ---- ---x ---- ---- 5 | 1 ---- -x-- -x-- ---- ---- xxxx xxxx xxxx xxxx xxxx xxxx 6 | 2 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 7 | 3 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 8 | 4 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 9 | 5 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx ---- x--- 10 | 6 ---- ---- x--- -x-- ---- ---- --x- ---x ---- ---- -x-- 11 | 7 -x-- ---- ---- ---x --x- ---- ---- -x-- -x-- ---- ---- 12 | 13 | Pin 18 = Q1 XOR = 1 AC1 = 0 14 | 8 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 15 | 9 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 16 | 10 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 17 | 11 xxxx xxxx xxxx xxxx xxxx xxxx xxxx ---- ---- x--- ---- 18 | 12 x--- -x-- ---- ---- ---- ---x --x- ---- -x-- -x-- ---- 19 | 13 ---- ---x ---- --x- ---- -x-- -x-- ---- ---- --x- --x- 20 | 14 ---x ---- -x-- -x-- ---- ---- xxxx xxxx xxxx xxxx xxxx 21 | 15 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 22 | 23 | Pin 17 = Q2 XOR = 1 AC1 = 0 24 | 16 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 25 | 17 xxxx xxxx xxxx xxxx xxxx ---- ---- ---- x--- x--- -x-- 26 | 18 ---- ---- ---- ---- ---x --x- -x-- -x-- ---- ---- ---- 27 | 19 ---x ---- --x- -x-- -x-- ---- ---- ---x ---- ---- --x- 28 | 20 -x-- -x-- ---- ---- --x- --x- --x- ---x -x-- -x-- ---- 29 | 21 ---- xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 30 | 22 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 31 | 23 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 32 | 33 | Pin 16 = Q3 XOR = 1 AC1 = 0 34 | 24 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 35 | 25 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 36 | 26 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 37 | 27 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 38 | 28 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 39 | 29 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 40 | 30 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 41 | 31 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 42 | 43 | Pin 15 = NC XOR = 0 AC1 = 0 44 | 32 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 45 | 33 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 46 | 34 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 47 | 35 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 48 | 36 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 49 | 37 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 50 | 38 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 51 | 39 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 52 | 53 | Pin 14 = NC XOR = 0 AC1 = 0 54 | 40 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 55 | 41 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 56 | 42 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 57 | 43 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 58 | 44 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 59 | 45 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 60 | 46 xxxx xxxx xxxx xxxx xxxx xxxx ---- ---- ---- ---- ---- 61 | 47 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- 62 | 63 | Pin 13 = NC XOR = 0 AC1 = 0 64 | 48 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- 65 | 49 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- 66 | 50 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- 67 | 51 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- 68 | 52 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- 69 | 53 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- 70 | 54 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- 71 | 55 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- 72 | 73 | Pin 12 = NC XOR = 0 AC1 = 0 74 | 56 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- 75 | 57 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- 76 | 58 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- 77 | 59 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- 78 | 60 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- 79 | 61 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- 80 | 62 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- 81 | 63 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- 82 | 83 | -------------------------------------------------------------------------------- /examples/Counter.jed: -------------------------------------------------------------------------------- 1 |  2 | Used Program: GALasm 2.0 3 | GAL-Assembler: GALasm 2.0 4 | Device: GAL16V8 5 | 6 | *F0 7 | *G0 8 | *QF2194 9 | *L0000 01111111111111110111101111111111 10 | *L0032 11101111111111111011101111111111 11 | *L0256 11110111111111110111101111111111 12 | *L0288 11011110111111111011101111111111 13 | *L0320 11101101111111111011101111111111 14 | *L0512 11111111011111110111101111111111 15 | *L0544 11111110110111111011101111111111 16 | *L0576 11101111110111111011101111111111 17 | *L0608 11011101111011111011101111111111 18 | *L0768 11111111111101110111101111111111 19 | *L0800 11111111111011011011101111111111 20 | *L0832 11111110111111011011101111111111 21 | *L0864 11101111111111011011101111111111 22 | *L0896 11011101110111101011101111111111 23 | *L2048 11110000 24 | *L2056 0100001101101111011101010110111001110100011001010111001000100000 25 | *L2120 00000000 26 | *L2128 1111111111111111111111111111111111111111111111111111111111111111 27 | *L2192 0 28 | *L2193 1 29 | *C3e11 30 | * 31 | a7cf 32 | -------------------------------------------------------------------------------- /examples/Counter.pin: -------------------------------------------------------------------------------- 1 | 2 | 3 | Pin # | Name | Pin Type 4 | ----------------------------- 5 | 1 | Clock | Clock 6 | 2 | D0 | Input 7 | 3 | D1 | Input 8 | 4 | D2 | Input 9 | 5 | D3 | Input 10 | 6 | Set | Input 11 | 7 | Clear | Input 12 | 8 | NC | Input 13 | 9 | NC | Input 14 | 10 | GND | GND 15 | 11 | /OE | /OE 16 | 12 | NC | NC 17 | 13 | NC | NC 18 | 14 | NC | NC 19 | 15 | NC | NC 20 | 16 | Q3 | Output 21 | 17 | Q2 | Output 22 | 18 | Q1 | Output 23 | 19 | Q0 | Output 24 | 20 | VCC | VCC 25 | 26 | -------------------------------------------------------------------------------- /examples/Counter.pld: -------------------------------------------------------------------------------- 1 | GAL16V8 ; 4-Bit-Counter first line : used GAL 2 | Counter ; second line: any text (max. 8 char.) 3 | 4 | 5 | Clock D0 D1 D2 D3 Set Clear NC NC GND 6 | /OE NC NC NC NC Q3 Q2 Q1 Q0 VCC 7 | 8 | 9 | 10 | 11 | 12 | Q0.R = /Clear * Set * D0 13 | + /Clear * /Set * /Q0 14 | 15 | 16 | Q1.R = /Clear * Set * D1 17 | + /Clear * /Set * /Q1 * Q0 18 | + /Clear * /Set * Q1 * /Q0 19 | 20 | 21 | Q2.R = /Clear * Set * D2 22 | + /Clear * /Set * Q2 * /Q1 23 | + /Clear * /Set * Q2 * /Q0 24 | + /Clear * /Set * /Q2 * Q1 * Q0 25 | 26 | 27 | Q3.R = /Clear * Set * D3 28 | + /Clear * /Set * Q3 * /Q2 29 | + /Clear * /Set * Q3 * /Q1 30 | + /Clear * /Set * Q3 * /Q0 31 | + /Clear * /Set * /Q3 * Q2 * Q1 * Q0 32 | 33 | 34 | 35 | 36 | 37 | DESCRIPTION 38 | 39 | this is a 4-Bit-Counter 40 | 41 | registered outputs are signed with the postfix .R 42 | 43 | 44 | Pin 'Set' HIGH while clock signal (LOW-HIGH) at pin 'Clock': 45 | load Q0-Q3 with state of D0-D3 46 | 47 | Pin 'Clear' HIGH while clock signal: 48 | Q0-Q3 are cleared 49 | 50 | Clock signal while pins 'Set' and 'Clear' are LOW: 51 | increment counter 52 | 53 | -------------------------------------------------------------------------------- /examples/GAL20RA10.chp: -------------------------------------------------------------------------------- 1 | 2 | 3 | GAL20RA10 4 | 5 | -------\___/------- 6 | /PL | 1 24 | VCC 7 | | | 8 | Set | 2 23 | Y1 9 | | | 10 | Enable1 | 3 22 | Y2 11 | | | 12 | Enable2 | 4 21 | Y3 13 | | | 14 | Clock1 | 5 20 | Y4 15 | | | 16 | Clock2 | 6 19 | D1 17 | | | 18 | NC | 7 18 | D2 19 | | | 20 | NC | 8 17 | ResetA1 21 | | | 22 | NC | 9 16 | ResetB1 23 | | | 24 | NC | 10 15 | NC 25 | | | 26 | NC | 11 14 | NC 27 | | | 28 | GND | 12 13 | /OE 29 | ------------------- 30 | -------------------------------------------------------------------------------- /examples/GAL20RA10.fus: -------------------------------------------------------------------------------- 1 | 2 | 3 | Pin 23 = Y1 S0 = 1 4 | 0 ---- x--- ---- ---- ---- ---- ---- ---- ---- ---- ---- 5 | 1 ---- ---- x--- ---- ---- ---- ---- ---- ---- ---- ---- 6 | 2 ---- ---- ---- ---- --x- --x- ---- ---- x--- ---- ---- 7 | 3 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- 8 | 4 --x- ---- ---- ---- ---- ---- xxxx xxxx xxxx xxxx xxxx 9 | 5 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 10 | 6 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 11 | 7 xxxx xxxx xxxx ---- ---- ---- ---- ---- ---- ---- ---- 12 | 13 | Pin 22 = Y2 S0 = 1 14 | 8 ---- ---- xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 15 | 9 xxxx ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- 16 | 10 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- x--- 17 | 11 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- 18 | 12 ---- ---- --x- ---- ---- ---- ---- ---- xxxx xxxx xxxx 19 | 13 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 20 | 14 xxxx xxxx xxxx xxxx xxxx xxxx ---- ---- x--- ---- ---- 21 | 15 ---- ---- ---- ---- ---- ---- ---- ---- ---- x--- ---- 22 | 23 | Pin 21 = Y3 S0 = 0 24 | 16 ---- ---- ---- ---- xxxx xxxx xxxx xxxx xxxx xxxx xxxx 25 | 17 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 26 | 18 xxxx xxxx ---- ---- ---- ---- ---- --x- ---- ---- ---- 27 | 19 ---- xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 28 | 20 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 29 | 21 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx ---- ---- 30 | 22 -x-- ---- ---- ---- ---- ---- ---- ---- xxxx xxxx xxxx 31 | 23 xxxx xxxx xxxx xxxx xxxx xxxx xxxx ---- ---- ---- ---- 32 | 33 | Pin 20 = Y4 S0 = 1 34 | 24 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- 35 | 25 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---x ---- 36 | 26 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---x ---- 37 | 27 ---- ---- ---- xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 38 | 28 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 39 | 29 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 40 | 30 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 41 | 31 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 42 | 43 | Pin 19 = D1 S0 = 0 44 | 32 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 45 | 33 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 46 | 34 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 47 | 35 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 48 | 36 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 49 | 37 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 50 | 38 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 51 | 39 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 52 | 53 | Pin 18 = D2 S0 = 0 54 | 40 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 55 | 41 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 56 | 42 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 57 | 43 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 58 | 44 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 59 | 45 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 60 | 46 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 61 | 47 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 62 | 63 | Pin 17 = ResetA1 S0 = 0 64 | 48 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 65 | 49 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 66 | 50 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 67 | 51 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 68 | 52 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 69 | 53 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 70 | 54 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 71 | 55 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 72 | 73 | Pin 16 = ResetB1 S0 = 0 74 | 56 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 75 | 57 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 76 | 58 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 77 | 59 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 78 | 60 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 79 | 61 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 80 | 62 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 81 | 63 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 82 | 83 | Pin 15 = NC S0 = 0 84 | 64 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 85 | 65 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 86 | 66 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 87 | 67 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 88 | 68 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 89 | 69 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 90 | 70 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 91 | 71 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 92 | 93 | Pin 14 = NC S0 = 0 94 | 72 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx ---- ---- ---- 95 | 73 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- 96 | 74 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- 97 | 75 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- 98 | 76 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- 99 | 77 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- 100 | 78 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- 101 | 79 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- 102 | 103 | -------------------------------------------------------------------------------- /examples/GAL20RA10.jed: -------------------------------------------------------------------------------- 1 |  2 | Used Program: GALasm 2.0 3 | GAL-Assembler: GALasm 2.0 4 | Device: GAL20RA10 5 | 6 | *F0 7 | *G0 8 | *QF3274 9 | *L0000 1111011111111111111111111111111111111111 10 | *L0040 1111111111110111111111111111111111111111 11 | *L0080 1111111111111111111111111101110111111111 12 | *L0120 0111111111111111111111111111111111111111 13 | *L0160 1111111111111111110111111111111111111111 14 | *L0320 1111111111111111111111111111111111111111 15 | *L0400 1111111111111111111111111111111111111111 16 | *L0440 1111111111111111111111111111111111111111 17 | *L0480 0111111111111111111111111111111111111111 18 | *L0520 1111111111111111110111111111111111111111 19 | *L0640 1111111101111111111111111111111111111111 20 | *L0680 1111111111111111011111111111111111111111 21 | *L0800 1111111111111111111111011111111111111111 22 | *L0960 1111111110111111111111111111111111111111 23 | *L1040 1111111111111111111111111111111111111111 24 | *L1080 1111111111111111111111111111111111111111 25 | *L1120 1111111111111111111011111111111111111111 26 | *L1160 1111111111111111111111101111111111111111 27 | *L3200 1101000000 28 | *L3210 0011001000110000010100100100000100110001001100000000000000000000 29 | *C596d 30 | * 31 | ce36 32 | -------------------------------------------------------------------------------- /examples/GAL20RA10.pin: -------------------------------------------------------------------------------- 1 | 2 | 3 | Pin # | Name | Pin Type 4 | ----------------------------- 5 | 1 | /PL | Input 6 | 2 | Set | Input 7 | 3 | Enable1 | Input 8 | 4 | Enable2 | Input 9 | 5 | Clock1 | Input 10 | 6 | Clock2 | Input 11 | 7 | NC | Input 12 | 8 | NC | Input 13 | 9 | NC | Input 14 | 10 | NC | Input 15 | 11 | NC | Input 16 | 12 | GND | GND 17 | 13 | /OE | Input 18 | 14 | NC | NC 19 | 15 | NC | NC 20 | 16 | ResetB1 | Input 21 | 17 | ResetA1 | Input 22 | 18 | D2 | Input 23 | 19 | D1 | Input 24 | 20 | Y4 | Output 25 | 21 | Y3 | Output 26 | 22 | Y2 | Output 27 | 23 | Y1 | Output 28 | 24 | VCC | VCC 29 | 30 | -------------------------------------------------------------------------------- /examples/GAL20RA10.pld: -------------------------------------------------------------------------------- 1 | GAL20RA10 2 | 20RA10 3 | 4 | /PL Set Enable1 Enable2 Clock1 Clock2 NC NC NC NC NC GND 5 | /OE NC NC ResetB1 ResetA1 D2 D1 Y4 Y3 Y2 Y1 VCC 6 | 7 | 8 | Y1.R = D1 ; define register output 9 | Y1.E = Enable1 ; define tristate control 10 | Y1.CLK = Clock1 ; define clock for the register 11 | Y1.ARST = ResetA1 * ResetB1 ; define async. reset 12 | Y1.APRST = Set ; define async. preset 13 | 14 | Y2 = Set + D1 ; Y2 is a "normal" output 15 | 16 | /Y3.R = D2 ; Y3 is active low and a reg. output 17 | Y3.E = Enable2 18 | Y3.CLK = Clock2 19 | 20 | Y4.T = /D1 + /D2 ; Y4 is a tristate output 21 | Y4.E = /Enable2 22 | 23 | 24 | DESCRIPTION 25 | To define the clock, asynchronous reset and asynchronous preset for registered 26 | outputs you can use the suffixes .CLK, .ARST and .APRST. 27 | Clock must be defined for every register output whereas async. reset and async. 28 | preset are optinal. 29 | -------------------------------------------------------------------------------- /examples/GAL22V10.chp: -------------------------------------------------------------------------------- 1 | 2 | 3 | GAL22V10 4 | 5 | -------\___/------- 6 | Clock | 1 24 | VCC 7 | | | 8 | A | 2 23 | Y1 9 | | | 10 | B | 3 22 | Y2 11 | | | 12 | C | 4 21 | Y3 13 | | | 14 | D | 5 20 | Y4 15 | | | 16 | E | 6 19 | Enable1 17 | | | 18 | F | 7 18 | Enable2 19 | | | 20 | NC | 8 17 | NC 21 | | | 22 | NC | 9 16 | NC 23 | | | 24 | NC | 10 15 | NC 25 | | | 26 | NC | 11 14 | AsyncRe 27 | | | 28 | GND | 12 13 | SyncPre 29 | ------------------- 30 | -------------------------------------------------------------------------------- /examples/GAL22V10.fus: -------------------------------------------------------------------------------- 1 | 2 | 3 | AR 4 | 0 ---- ---- ---- ---- ---- ---- x--- ---- ---- --x- ---- 5 | 6 | Pin 23 = Y1 S0 = 1 S1 = 0 7 | 1 ---- ---- ---- ---- --x- ---- ---- ---- ---- ---- ---- 8 | 2 ---- x--- x--- ---- ---- ---- ---- ---- ---- ---- ---- 9 | 3 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 10 | 4 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 11 | 5 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 12 | 6 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 13 | 7 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 14 | 8 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 15 | 9 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 16 | 17 | Pin 22 = Y2 S0 = 1 S1 = 0 18 | 10 ---- ---- ---- --x- ---- --x- ---- ---- ---- ---- ---- 19 | 11 ---- ---- ---- x--- ---- ---- ---- ---- ---- ---- ---- 20 | 12 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 21 | 13 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 22 | 14 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 23 | 15 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 24 | 16 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 25 | 17 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 26 | 18 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 27 | 19 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 28 | 20 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 29 | 30 | Pin 21 = Y3 S0 = 1 S1 = 0 31 | 21 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- 32 | 22 ---- ---- ---- --x- ---- --x- ---- ---- ---- ---- ---- 33 | 23 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 34 | 24 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 35 | 25 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 36 | 26 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 37 | 27 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 38 | 28 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 39 | 29 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 40 | 30 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 41 | 31 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 42 | 32 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 43 | 33 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 44 | 45 | Pin 20 = Y4 S0 = 1 S1 = 0 46 | 34 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- 47 | 35 ---- ---- ---- ---- x--- ---- ---- ---- ---- ---- ---- 48 | 36 ---- ---- ---- ---- ---- x--- ---- ---- ---- ---- ---- 49 | 37 ---- ---- ---- ---- ---- ---- x--- ---- ---- ---- ---- 50 | 38 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 51 | 39 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 52 | 40 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 53 | 41 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 54 | 42 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 55 | 43 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 56 | 44 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 57 | 45 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 58 | 46 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 59 | 47 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 60 | 48 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 61 | 62 | Pin 19 = Enable1 S0 = 0 S1 = 0 63 | 49 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 64 | 50 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 65 | 51 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 66 | 52 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 67 | 53 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 68 | 54 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 69 | 55 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 70 | 56 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 71 | 57 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 72 | 58 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 73 | 59 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 74 | 60 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 75 | 61 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 76 | 62 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 77 | 63 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 78 | 64 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 79 | 65 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 80 | 81 | Pin 18 = Enable2 S0 = 0 S1 = 0 82 | 66 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 83 | 67 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 84 | 68 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 85 | 69 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 86 | 70 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 87 | 71 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 88 | 72 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 89 | 73 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 90 | 74 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 91 | 75 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 92 | 76 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 93 | 77 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 94 | 78 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 95 | 79 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 96 | 80 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 97 | 81 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 98 | 82 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 99 | 100 | Pin 17 = NC S0 = 0 S1 = 0 101 | 83 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 102 | 84 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 103 | 85 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 104 | 86 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 105 | 87 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 106 | 88 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 107 | 89 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 108 | 90 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 109 | 91 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 110 | 92 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 111 | 93 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 112 | 94 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 113 | 95 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 114 | 96 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 115 | 97 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 116 | 117 | Pin 16 = NC S0 = 0 S1 = 0 118 | 98 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 119 | 99 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 120 | 100 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 121 | 101 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 122 | 102 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 123 | 103 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 124 | 104 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 125 | 105 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 126 | 106 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 127 | 107 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 128 | 108 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 129 | 109 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 130 | 110 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 131 | 132 | Pin 15 = NC S0 = 0 S1 = 0 133 | 111 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 134 | 112 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 135 | 113 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 136 | 114 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 137 | 115 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 138 | 116 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 139 | 117 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 140 | 118 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 141 | 119 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 142 | 120 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 143 | 121 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 144 | 145 | Pin 14 = AsyncRe S0 = 0 S1 = 0 146 | 122 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 147 | 123 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 148 | 124 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 149 | 125 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 150 | 126 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 151 | 127 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 152 | 128 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 153 | 129 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 154 | 130 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 155 | 156 | SP 157 | 131 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- --x- 158 | 159 | -------------------------------------------------------------------------------- /examples/GAL22V10.jed: -------------------------------------------------------------------------------- 1 |  2 | Used Program: GALasm 2.0 3 | GAL-Assembler: GALasm 2.0 4 | Device: GAL22V10 5 | 6 | *F0 7 | *G0 8 | *QF5892 9 | *L0000 11111111111111111111111101111111111111011111 10 | *L0044 11111111111111111101111111111111111111111111 11 | *L0088 11110111011111111111111111111111111111111111 12 | *L0440 11111111111111011111110111111111111111111111 13 | *L0484 11111111111101111111111111111111111111111111 14 | *L0924 11111111111111111111111111111111111111111111 15 | *L0968 11111111111111011111110111111111111111111111 16 | *L1496 11111111111111111111111111111111111111111111 17 | *L1540 11111111111111110111111111111111111111111111 18 | *L1584 11111111111111111111011111111111111111111111 19 | *L1628 11111111111111111111111101111111111111111111 20 | *L5764 11111111111111111111111111111111111111111101 21 | *L5808 10101111010100000001 22 | *L5828 0011001000110010010101100011000100110000000000000000000000000000 23 | *C4432 24 | * 25 | a2f9 26 | -------------------------------------------------------------------------------- /examples/GAL22V10.pin: -------------------------------------------------------------------------------- 1 | 2 | 3 | Pin # | Name | Pin Type 4 | ----------------------------- 5 | 1 | Clock | Clock/Input 6 | 2 | A | Input 7 | 3 | B | Input 8 | 4 | C | Input 9 | 5 | D | Input 10 | 6 | E | Input 11 | 7 | F | Input 12 | 8 | NC | Input 13 | 9 | NC | Input 14 | 10 | NC | Input 15 | 11 | NC | Input 16 | 12 | GND | GND 17 | 13 | SyncPre | Input 18 | 14 | AsyncRe | Input 19 | 15 | NC | NC 20 | 16 | NC | NC 21 | 17 | NC | NC 22 | 18 | Enable2 | Input 23 | 19 | Enable1 | Input 24 | 20 | Y4 | Output 25 | 21 | Y3 | Output 26 | 22 | Y2 | Output 27 | 23 | Y1 | Output 28 | 24 | VCC | VCC 29 | 30 | -------------------------------------------------------------------------------- /examples/GAL22V10.pld: -------------------------------------------------------------------------------- 1 | GAL22V10 2 | 22V10 3 | 4 | Clock A B C D E F NC NC NC NC GND 5 | SyncPre AsyncRe NC NC NC Enable2 Enable1 Y4 Y3 Y2 Y1 VCC 6 | 7 | 8 | Y1.R = A * B ; Y1 is a registered output => .R 9 | Y1.E = Enable1 10 | 11 | Y2.R = C 12 | Y2.E = Enable2 * Y4 ; Attention: there is a feedback of Y4 13 | ; (Y4 is defined as output but it's 14 | ; used as input again) 15 | 16 | Y3 = Enable2 * Y4 ; there is a feedback again 17 | 18 | Y4 = D + E + F 19 | 20 | 21 | AR = F * AsyncRe ; define asynchronous reset 22 | 23 | SP = SyncPre ; define synchronous preset 24 | 25 | 26 | DESCRIPTION 27 | To define the asynchronous reset and the synchronous preset you can use 28 | the keywords AR and SP. But this keywords can't be used as pin names. 29 | For AR and SP is one product term allowed. -------------------------------------------------------------------------------- /examples/Gatter.chp: -------------------------------------------------------------------------------- 1 | 2 | 3 | GAL16V8 4 | 5 | -------\___/------- 6 | B | 1 20 | VCC 7 | | | 8 | C | 2 19 | A 9 | | | 10 | D | 3 18 | W 11 | | | 12 | E | 4 17 | X 13 | | | 14 | F | 5 16 | Y 15 | | | 16 | G | 6 15 | Z 17 | | | 18 | H | 7 14 | NC 19 | | | 20 | I | 8 13 | NC 21 | | | 22 | J | 9 12 | NC 23 | | | 24 | GND | 10 11 | K 25 | ------------------- 26 | -------------------------------------------------------------------------------- /examples/Gatter.fus: -------------------------------------------------------------------------------- 1 | 2 | 3 | Pin 19 = A XOR = 0 AC1 = 1 4 | 0 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 5 | 1 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 6 | 2 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 7 | 3 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 8 | 4 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 9 | 5 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx x-x- --x- 10 | 6 ---- ---- ---- ---- ---- ---- xxxx xxxx xxxx xxxx xxxx 11 | 7 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 12 | 13 | Pin 18 = W XOR = 1 AC1 = 0 14 | 8 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 15 | 9 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 16 | 10 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 17 | 11 xxxx xxxx xxxx xxxx xxxx xxxx xxxx ---- x--- x--- ---- 18 | 12 ---- ---- ---- ---- xxxx xxxx xxxx xxxx xxxx xxxx xxxx 19 | 13 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 20 | 14 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 21 | 15 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 22 | 23 | Pin 17 = X XOR = 0 AC1 = 0 24 | 16 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 25 | 17 xxxx xxxx xxxx xxxx xxxx ---- ---- ---- x--- ---- ---- 26 | 18 ---- ---- ---- ---- ---- ---- x--- ---- ---- ---- xxxx 27 | 19 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 28 | 20 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 29 | 21 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 30 | 22 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 31 | 23 xxxx xxxx xxxx ---- ---- ---- ---- ---- x--- x--- ---- 32 | 33 | Pin 16 = Y XOR = 1 AC1 = 0 34 | 24 ---- ---- ---- ---- ---- ---- ---- x-x- xxxx xxxx xxxx 35 | 25 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 36 | 26 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 37 | 27 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 38 | 28 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 39 | 29 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 40 | 30 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 41 | 31 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 42 | 43 | Pin 15 = Z XOR = 1 AC1 = 0 44 | 32 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 45 | 33 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 46 | 34 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 47 | 35 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 48 | 36 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 49 | 37 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 50 | 38 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 51 | 39 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 52 | 53 | Pin 14 = NC XOR = 0 AC1 = 0 54 | 40 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 55 | 41 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 56 | 42 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 57 | 43 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 58 | 44 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 59 | 45 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 60 | 46 xxxx xxxx xxxx xxxx xxxx xxxx ---- ---- ---- ---- ---- 61 | 47 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- 62 | 63 | Pin 13 = NC XOR = 0 AC1 = 0 64 | 48 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- 65 | 49 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- 66 | 50 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- 67 | 51 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- 68 | 52 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- 69 | 53 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- 70 | 54 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- 71 | 55 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- 72 | 73 | Pin 12 = NC XOR = 0 AC1 = 0 74 | 56 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- 75 | 57 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- 76 | 58 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- 77 | 59 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- 78 | 60 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- 79 | 61 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- 80 | 62 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- 81 | 63 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- 82 | 83 | -------------------------------------------------------------------------------- /examples/Gatter.jed: -------------------------------------------------------------------------------- 1 |  2 | Used Program: GALasm 2.0 3 | GAL-Assembler: GALasm 2.0 4 | Device: GAL16V8 5 | 6 | *F0 7 | *G0 8 | *QF2194 9 | *L0256 01011101111111111111111111111111 10 | *L0512 11110111011111111111111111111111 11 | *L0768 11111111111101111111111111111111 12 | *L0800 11111111111111110111111111111111 13 | *L1024 11111111111111111111011101111111 14 | *L1056 11111111111111111111111111110101 15 | *L2048 01011000 16 | *L2056 0100001001110011011100000010111000110001001000000010000000100000 17 | *L2120 10000000 18 | *L2128 1111111111111111111111111111111111111111111111111111111111111111 19 | *L2192 1 20 | *L2193 0 21 | *C215e 22 | * 23 | 6b85 24 | -------------------------------------------------------------------------------- /examples/Gatter.pin: -------------------------------------------------------------------------------- 1 | 2 | 3 | Pin # | Name | Pin Type 4 | ----------------------------- 5 | 1 | B | Input 6 | 2 | C | Input 7 | 3 | D | Input 8 | 4 | E | Input 9 | 5 | F | Input 10 | 6 | G | Input 11 | 7 | H | Input 12 | 8 | I | Input 13 | 9 | J | Input 14 | 10 | GND | GND 15 | 11 | K | Input 16 | 12 | NC | NC 17 | 13 | NC | NC 18 | 14 | NC | NC 19 | 15 | Z | Output 20 | 16 | Y | Output 21 | 17 | X | Output 22 | 18 | W | Output 23 | 19 | A | Input 24 | 20 | VCC | VCC 25 | 26 | -------------------------------------------------------------------------------- /examples/Gatter.pld: -------------------------------------------------------------------------------- 1 | GAL16V8 first line : used type of GAL 2 | Bsp.1 second line: any text (max. 8 character) 3 | 4 | B C D E F G H I J GND 5 | K NC NC NC Z Y X W A VCC 6 | 7 | 8 | W = A * B * C 9 | /X = D * E 10 | Y = F + G 11 | Z = H * I + J * K 12 | 13 | 14 | 15 | DESCRIPTION: 16 | 17 | format of the boolean equations: 18 | 19 | output pin = boolean function of input and output pins 20 | 21 | in this mode is no feedback of output pins allowed, this means that a output 22 | pin can not be a function of output pins again 23 | 24 | 25 | *: AND 26 | +: OR 27 | /: NEGATION 28 | 29 | Example: Pin Y is HIGH if pin F OR pin G is HIGH, else Y will be LOW. 30 | 31 | Y = F + G 32 | 33 | -------------------------------------------------------------------------------- /examples/Tristate.chp: -------------------------------------------------------------------------------- 1 | 2 | 3 | GAL16V8 4 | 5 | -------\___/------- 6 | A | 1 20 | VCC 7 | | | 8 | B | 2 19 | Y1 9 | | | 10 | C | 3 18 | Y2 11 | | | 12 | D | 4 17 | Y3 13 | | | 14 | E | 5 16 | NC 15 | | | 16 | F | 6 15 | NC 17 | | | 18 | G | 7 14 | NC 19 | | | 20 | NC | 8 13 | NC 21 | | | 22 | NC | 9 12 | NC 23 | | | 24 | GND | 10 11 | NC 25 | ------------------- 26 | -------------------------------------------------------------------------------- /examples/Tristate.fus: -------------------------------------------------------------------------------- 1 | 2 | 3 | Pin 19 = Y1 XOR = 1 AC1 = 1 4 | 0 ---x ---- ---- ---- ---- ---- ---- ---- x--- ---- ---- 5 | 1 ---- ---- ---- ---- ---- xxxx xxxx xxxx xxxx xxxx xxxx 6 | 2 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 7 | 3 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 8 | 4 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 9 | 5 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx ---- ---- 10 | 6 ---- ---- ---- ---- ---- ---- ---- x--- ---- ---- ---- 11 | 7 ---- ---- ---- ---- ---- x--- ---- ---- ---- ---- ---- 12 | 13 | Pin 18 = Y2 XOR = 1 AC1 = 1 14 | 8 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 15 | 9 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 16 | 10 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 17 | 11 xxxx xxxx xxxx xxxx xxxx xxxx xxxx ---- ---- ---- x--- 18 | 12 x--- ---- ---- ---- ---- ---- ---- ---- ---- -x-- ---- 19 | 13 ---- xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 20 | 14 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 21 | 15 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 22 | 23 | Pin 17 = Y3 XOR = 1 AC1 = 1 24 | 16 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 25 | 17 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 26 | 18 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 27 | 19 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 28 | 20 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 29 | 21 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 30 | 22 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 31 | 23 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 32 | 33 | Pin 16 = NC XOR = 0 AC1 = 0 34 | 24 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 35 | 25 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 36 | 26 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 37 | 27 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 38 | 28 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 39 | 29 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 40 | 30 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 41 | 31 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 42 | 43 | Pin 15 = NC XOR = 0 AC1 = 0 44 | 32 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 45 | 33 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 46 | 34 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 47 | 35 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 48 | 36 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 49 | 37 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 50 | 38 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 51 | 39 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 52 | 53 | Pin 14 = NC XOR = 0 AC1 = 0 54 | 40 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 55 | 41 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 56 | 42 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 57 | 43 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 58 | 44 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 59 | 45 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 60 | 46 xxxx xxxx xxxx xxxx xxxx xxxx ---- ---- ---- ---- ---- 61 | 47 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- 62 | 63 | Pin 13 = NC XOR = 0 AC1 = 0 64 | 48 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- 65 | 49 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- 66 | 50 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- 67 | 51 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- 68 | 52 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- 69 | 53 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- 70 | 54 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- 71 | 55 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- 72 | 73 | Pin 12 = NC XOR = 0 AC1 = 0 74 | 56 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- 75 | 57 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- 76 | 58 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- 77 | 59 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- 78 | 60 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- 79 | 61 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- 80 | 62 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- 81 | 63 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- 82 | 83 | -------------------------------------------------------------------------------- /examples/Tristate.jed: -------------------------------------------------------------------------------- 1 |  2 | Used Program: GALasm 2.0 3 | GAL-Assembler: GALasm 2.0 4 | Device: GAL16V8 5 | 6 | *F0 7 | *G0 8 | *QF2194 9 | *L0000 11101111111111111111111111111111 10 | *L0032 01111111111111111111111111111111 11 | *L0256 11111111111111111111111111111111 12 | *L0288 11110111111111111111111111111111 13 | *L0320 11111111011111111111111111111111 14 | *L0512 11111111111101110111111111111111 15 | *L0544 11111111111111111111101111111111 16 | *L2048 11100000 17 | *L2056 0100010101111000011000010010111000110010000000000000000000000000 18 | *L2120 11100000 19 | *L2128 1111111111111111111111111111111111111111111111111111111111111111 20 | *L2192 1 21 | *L2193 1 22 | *C25a8 23 | * 24 | 7305 25 | -------------------------------------------------------------------------------- /examples/Tristate.pin: -------------------------------------------------------------------------------- 1 | 2 | 3 | Pin # | Name | Pin Type 4 | ----------------------------- 5 | 1 | A | Input 6 | 2 | B | Input 7 | 3 | C | Input 8 | 4 | D | Input 9 | 5 | E | Input 10 | 6 | F | Input 11 | 7 | G | Input 12 | 8 | NC | Input 13 | 9 | NC | Input 14 | 10 | GND | GND 15 | 11 | NC | Input 16 | 12 | NC | NC 17 | 13 | NC | NC 18 | 14 | NC | NC 19 | 15 | NC | NC 20 | 16 | NC | NC 21 | 17 | Y3 | Output 22 | 18 | Y2 | Output 23 | 19 | Y1 | Output 24 | 20 | VCC | VCC 25 | 26 | -------------------------------------------------------------------------------- /examples/Tristate.pld: -------------------------------------------------------------------------------- 1 | GAL16V8 ; this is the second example 2 | Exa.2 3 | 4 | A B C D E F G NC NC GND 5 | NC NC NC NC NC NC Y3 Y2 Y1 VCC 6 | 7 | 8 | Y1.T = B 9 | 10 | Y2.T = C + D 11 | 12 | Y3.T = /G 13 | 14 | 15 | Y1.E = /A 16 | 17 | Y3.E = E * F 18 | 19 | 20 | DESCRIPTION 21 | 22 | tristate output: pinname.T 23 | tristate control: pinname.E 24 | 25 | -------------------------------------------------------------------------------- /galer/asmerr.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Error Messages 4 | 5 | 6 | 7 | 8 | CONTENTSINDEXPREVNEXT 9 |
10 |
 11 | 
 12 | II.5.1 Assembler
 13 | 
 14 | "Line  1: type of GAL expected"
 15 |    The first line of your source file must define for what type of GAL
 16 |    this source file is. So the first line must contain one of the
 17 |    following keywords: GAL16V8, GAL20V8, GAL16V8A, GAL20V8A
 18 | 
 19 | 
 20 | "unexpected end of file"
 21 |    Normaly this error occurs when there is no DESCRIPTION keyword
 22 |    at the end of your Boolean equations.
 23 | 
 24 | 
 25 | "pin name expected after '/'"
 26 |    A '/' must be followed by a pin name. If there is a '/' but no pin name
 27 |    this error will occur.
 28 | 
 29 | 
 30 | "max. length of pin name is 8 characters"
 31 |    Pin names are not allowed to be longer than 8 characters.
 32 | 
 33 | 
 34 | "illegal character in pin declaration"
 35 |    In a pin name is a character which is not allowed to use. Possible
 36 |    characters are: a..z, A..Z, 0..9, /
 37 | 
 38 | 
 39 | "illegal VCC/GND assignment"
 40 |    VCC and GND are keywords. It's not allowed to use these words for
 41 |    other pins. Use it only for the pins VCC and GND.
 42 | 
 43 | 
 44 | "pn declaration: expected VCC at VCC pin"
 45 |    The pin VCC must have the name VCC.
 46 | 
 47 | 
 48 | "pin declaration: expected GND at GND pin"
 49 |    The pin GND must have the name GND.
 50 | 
 51 | 
 52 | "pin name defined twice"
 53 |    In the pin declaration a pin name is used multiple.
 54 | 
 55 | 
 56 | "illegal use of '/'"
 57 |    Negations ('/') must be followed by a pin name. 
 58 | 
 59 | 
 60 | "unknown pin name"
 61 |    Within a Boolean equation is a undefined pin name.
 62 | 
 63 | 
 64 | "NC (Not Connected) is not allowed in logic equations"
 65 |    NC is a keyword for unused pins. So don't use this in your
 66 |    Boolean equations.
 67 | 
 68 | 
 69 | "unknown suffix found"
 70 |    A '.' must be followed by a T, E, R, CLK, ARST or APRST. This defines
 71 | 
 72 | 
 73 | "'=' expected"
 74 |    A '=' is expected but not found (what else should I say).
 75 | 
 76 | 
 77 | "this pin can't be used as output"
 78 |    You have tried to define a pin as output which can't be used as output.
 79 | 
 80 | 
 81 | "same pin is defined multible as output"
 82 |    It's easier to show an example:
 83 |      X = ...
 84 |      X = ...
 85 |    This brings up this error message.
 86 | 
 87 | 
 88 | "before using .E, the output must be defined"
 89 |    You have defined a Boolean equation for tristate enable but there
 90 |    was no Boolean equation for the trisate output.
 91 |    The order must be:
 92 |      name.T = ...
 93 |      name.E = ...
 94 | 
 95 |    Possibly you have done:
 96 |      name.E = ...
 97 |      name.T = ...
 98 |    this is wrong!
 99 | 
100 | 
101 | "GAL22V10: AR and SP is not allowed as pinname"
102 |    When using a GAL22V10 AR and SP are keywords for the asynchronous reset
103 |    and synchronous preset. So AR and SP is not allowed to be used as pin
104 |    names.
105 | 
106 | 
107 | ".E, .CLK, .ARST and .APRST is not allowed to be negated"
108 |    The definitions for tristate control,... can't be negated.
109 | 
110 | 
111 | "mode 2: pins 12, 19 can't be used as input"
112 |    The GAL would be in mode 2. In this mode you can't define the pins
113 |    12 and 19 as input pins. These pins do not have a feedback too. This
114 |    means that the following equation is not allowed.
115 | 
116 |      a := pin 19
117 |      b := pin 4
118 |      y := pin 17
119 | 
120 |      a = b              a is output, b is input
121 |      y = a * b          y is output
122 |                         a is used as input, this is not allowed in mode 2
123 |                         because there is on feedback
124 | 
125 | "mode 2: pins 15, 22 can't be used as input"
126 |    The GAL would be in mode 2. In this mode you can't define the pins
127 |    15 and 22 as input pins. These pins do not have a feedback too. This
128 |    means that the following eqauation is not allowed.
129 | 
130 |      a := pin 22
131 |      b := pin 4
132 |      y := pin 17
133 | 
134 |      a = b              a is output, b is input
135 |      y = a * b          y is output
136 |                         a is used as input, this is not allowed in mode 2
137 | 
138 | 
139 | "tristate control is defined twice"
140 |    Example:    name.E = A * B
141 |                name.E = C
142 |    this is not allowed!
143 | 
144 | 
145 | "GAL16V8/20V8: tri. control for reg. output is not allowed"
146 |    When using a GAL16V8/20V8 it is not possible to define a tristate
147 |    control for registered outputs.
148 | 
149 | 
150 | "tristate control without previous '.T'"
151 |    There is a tristate control for a combinational output.
152 |    wrong:       name   = ...
153 |                 name.E = ...
154 | 
155 |    right:       name.T = ...
156 |                 name.E = ...
157 | 
158 | 
159 | "use GND, VCC instead of /VCC, /GND"
160 |    I think there is nothing to explain.
161 | 
162 | 
163 | "mode 3: pins 1,11 are reservated for 'Clock' and '/OE'"
164 |    Using register outputs causes mode 3 for the GAL. In this mode the
165 |    pins 1 and 11 of a GAL16V8 can't be used by your own. These pins are
166 |    reserved for Clock and /OE.
167 | 
168 | 
169 | "mode 3: pins 1,13 are reservated for 'Clock' and '/OE'"
170 |    Using register outputs causes mode 3 for the GAL. In this mode the
171 |    pins 1 and 13 of a GAL20V8 can't be used by your own. These pins are
172 |    reserved for Clock and /OE.
173 | 
174 | 
175 | "use of VCC and GND is not allowed in equations"
176 |    Expressions like  "X = A * VCC" are not allowed (and not necassary).
177 | 
178 | 
179 | "tristate control: only one product term allowed (no OR)"
180 |    In Boolean equations for tristate controls only one product
181 |    term can be used. This means no ORs in your name.E=... equation.
182 | 
183 | 
184 | "too many product terms"
185 |    In this definition are too many product terms.
186 | 
187 | 
188 | "use of AR and SP is not allowed in equations"
189 |    AR and SP are keywords which can't be used in output definitions.
190 | 
191 | 
192 | "negation of AR and SP is not allowed"
193 |    AR and SP definitions can't be negated.
194 | 
195 | 
196 | "no equations found"
197 |    Sorry, but there are no Boolean equations in your source file. So GALer
198 |    does not know what to do with your source file.
199 | 
200 | 
201 | ".CLK is not allowed when this type of GAL is used"
202 |    A clock definition is only allowed when a GAL20RA10 is used.
203 | 
204 | 
205 | ".ARST is not allowed when this type of GAL is used"
206 |    A .ARST definition is only allowed when a GAL20RA10 is used.
207 |    
208 | 
209 | .APRST is not allowed when this type of GAL is used
210 |    A .ARPST definition is only allowed when a GAL20RA10 is used.
211 | 
212 | 
213 | "GAL20RA10: pin 1 can't be used in equations"
214 |    Pin 1 of the GAL20RA10 is reserved for the preloading /PL.
215 | 
216 | 
217 | "GAL20RA10: pin 13 can't be used in equations"
218 |    Pin 13 of the GAL20RA10 is reserved for the output enable /OE.
219 | 
220 | 
221 | "AR, SP: no suffix allowed"
222 |    It's not allowed to add a suffix to AR, SP definitions.
223 | 
224 | 
225 | "AR or SP is defined twice"
226 |    A AR or SP definition is defined twice.
227 | 
228 | 
229 | "missing clock definition (.CLK) of registered output"
230 |    When using a GAL20RA10 all registered outputs must get a clock
231 |    definition.
232 | 
233 | 
234 | "before using .CLK, the output must be defined"
235 |    At first you have to define the registered output by using .R before
236 |    you can define the clock for this output.
237 | 
238 | 
239 | "before using .ARST, the output must be defined"
240 |    At first you have to define the registered output by using .R before
241 |    you can define the asynchronous reset.
242 | 
243 | 
244 | "before using .APRST the output must be defined"
245 |    At first you have to define the registered output by using .R before
246 |    you can define the asynchronous preset.
247 | 
248 | 
249 | "several .CLK definitions for the same output found"
250 |    You have defined more than one clock definition for the same output.
251 | 
252 | 
253 | "several .ARST definitions for the same output found"
254 |    You have defined more than one asynchronous reset definition for the
255 |    same output.
256 | 
257 | 
258 | "several .APRST definitions for the same output found"
259 |    You have defined more than one asynchronous preset definition for the
260 |    same output.
261 | 
262 | 
263 | "use of .CLK, .ARST, .APRST only allowed for registered outputs"
264 |    Well, use of .CLK, .ARST and .APRST is only allowed for registered
265 |    outputs :-)
266 | 
267 | 
268 |
269 | CONTENTSINDEXPREVNEXT 270 | 271 | 272 | -------------------------------------------------------------------------------- /galer/assembler.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Assembler 4 | 5 | 6 | 7 | 8 | CONTENTSINDEXPREVNEXT 9 |
10 |
11 | 
12 | II.2.4 Assembler
13 | 
14 | In order to program a GAL the source file (".pld") must be transposed into a
15 | so called JEDEC file. This task is assumed by the GAL-Assembler.
16 | 
17 | The JEDEC file (extension ".jed") is a ASCII file in which all the bits which
18 | can be set in a GAL are listed. The state of the fuses (0 or 1) is mediated by
19 | the GAL-Assembler from the source file.
20 | 
21 | Besides the JEDEC file, the GAL-Assembler can generate three other files.
22 | These files are for documentation only. GALer do not need them really:
23 | 
24 | - The Fuse-File (extension ".fus") shows the state of the bits in the
25 | logic matrix.
26 | 
27 | - The chip diagram (extension ".chp") shows the connection
28 | diagram of the GAL and the
29 | 
30 | - pin diagram file (extension ".pin") lists all the pins and shows,
31 | whether these are programmed as inputs or outputs.
32 | 
33 | The files can be read with a text-editor and possibly post-processed.
34 | 
35 | 
36 | Selecting the menu Assemble file pops up a requester, called
37 | assembler requester. In the assembler requester you can select which
38 | files should be generated by the assembler. Just click on the corresponding
39 | gadget.
40 | 
41 | Furthermore you can select two other gadgets:
42 | 
43 |   Autosave: This means that all selected files are generated
44 |             automatically without bringing up an extra file requester.
45 |             The name of the generated files are taken from the
46 |             source file name.
47 | 
48 |   Adjust type of GAL: This means that the type of GAL for which the
49 |             source file is, is taken over from GALer.
50 |             For example: You have set a GAL20V8 in GALer's menu.
51 |             Now you are assembling a source file for a GAL16V8. If the
52 |             assembly is successful, GAL16V8 will be set in GALer's menu.
53 | 
54 | 
55 | 
56 | Selecting the 'Continue' gadget of the assembler requester will pop up a
57 | file requester. Now you have to choose your source file. After this the
58 | GAL assembler will start assembling. If GALer detects no errors, further
59 | file requesters will pop up in which you have to select where to store
60 | the generated files.
61 | 
62 | 
63 |
64 | CONTENTSINDEXPREVNEXT 65 | 66 | 67 | -------------------------------------------------------------------------------- /galer/construction.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Construction 4 | 5 | 6 | 7 | 8 | CONTENTSINDEXPREVNEXT 9 |
10 |
11 | 
12 | III.3 Construction
13 | 
14 | The parts list can be found in the appendix. If you want to save the cost
15 | of the Textool-socket, you can also use a normal 24 pin socket, but since the
16 | two pin rows are too far apart, you will have to carefully cut the socket
17 | along it's length, and set them to the correct distance. Or you might like
18 | to use "MOLEX" pins instead. For IC-sockets you should only use precision
19 | sockets. The 25 Pin Sub-D-socket (A1000) or the Sub-D-plug (other Amiga
20 | models) is connected as follows:
21 | 
22 |   D0   = pin 2
23 |   D1   = pin 3
24 |   D2   = pin 4
25 |   D3   = pin 5
26 |   D4   = pin 6
27 |   BUSY = pin 11
28 |   GND  : A1000  pin 14
29 |          A500, A2000, A3000, ...  pin 17
30 | 
31 | The supply voltage (+5V and ground (GND) you will have to get from the
32 | Amiga's Expansion-Port or from a regulated +5V power supply. The GAL-Burner
33 | has a maximum current consumption of about 220 mA.
34 | 
35 | The main difficulty in the construction of the GAL-burner is probably the
36 | printed circuit board (PCB). Most likely a double sided through plated PCB
37 | is required, so probably the best solution is to use a piece of veroboard,
38 | and connect the relevant pins with fine hookup wire, or wire wrap wire. If
39 | you want the whole thing to look impressive, you can use wiring guides.
40 | The wires can be conducted via these guides, and wont go here there an
41 | everywhere.  I have constructed my GAL-Burner and endless other projects
42 | in this way.
43 | 
44 | If you are able to make a PCB, you can find the PostScript- or
45 | Gerber-Files in the directory "Layout". This PCB-layout is copyright by
46 | Thorsten Elle. Thank you Thorsten for giving me the permission to
47 | distribute your layout together with GALer.
48 | If you want to use the PCB-layout, please not this:
49 | On the PCB the resistors R28 to R32 of the circuit diagram are replaced
50 | by a resistor-array (8 * 1.8kOhm). Futhermore there is for each IC a
51 | capacitor for anti-interferencing. These capacitors are C5 to C14 (each 100nF).
52 | 
53 | When you have built the circuit and you have connected it to the Amiga,
54 | and the Amiga DIDN'T blow up, you can run the test program "GALerTest".
55 | The program set various voltage levels on the Textool-socket, which you
56 | can check with a VOM. The programming voltages are adjusted with R40-R44.
57 | For this you can use "GALerTest".
58 | 
59 | DON'T FORGET: adjust the programming voltage with the trimpots, otherwise
60 |               the GAL-burner will NOT FUNCTION !!!!
61 |               (start the "GALerTest" and click through to the
62 |                relevant test points).
63 | 
64 | If the GAL-Burner works just as the test program demands, then you can try
65 | burning a test GAL and test it with the GAL-Checker function of GALer. If
66 | this all works then there are no faults in the hardware. GALs of the type
67 | GAL16V8 must be inserted in the Textool-socket, so that pin 1 of the GAL
68 | lines up with pin 3 of the socket. With GALs of the type GAL20V8 pin 1 of
69 | the GAL must line up with pin 1 of the socket.
70 | 
71 | 
72 | Here is the pin layout of the used transistors (bottom view):
73 | 
74 | 
75 |                        BC 237 and BC 327
76 |                                _
77 |                              -   -
78 |                             -     -
79 |                             -o o o-
80 |                              -----
81 | 
82 |                              E B C
83 | 
84 | 
85 | 
86 | 
87 | 
88 | Well that's about it. Chau and have fun with the cute GALs.
89 | 
90 | 
91 | 
92 | 
93 | 
94 |
95 | CONTENTSINDEXPREVNEXT 96 | 97 | 98 | -------------------------------------------------------------------------------- /galer/errors.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Error Messages 4 | 5 | 6 | 7 | 8 | CONTENTSINDEXPREVNEXT 9 |
10 |
11 | 
12 | II.5 Error Messages
13 | 
14 | In this section I want to describe all possible error messages which
15 | GALer can create.
16 | 
17 | 
18 |
19 | CONTENTSINDEXPREVNEXT 20 | 21 | 22 | -------------------------------------------------------------------------------- /galer/example16v8.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | GAL16V8 4 | 5 | 6 | 7 | 8 | CONTENTSINDEXPREVNEXT 9 |
10 |
 11 | 
 12 | II.4.1 GAL16V8
 13 | 
 14 | At first I want to show an example with a tristate output.
 15 | (sorry again for the European symbols)
 16 | 
 17 |       /A ---------+
 18 |                 |\|
 19 |                 | \
 20 |        B -------|  +------------------------ Y1
 21 |                 | /                
 22 |                 |/                 
 23 |                                   VCC
 24 |                                    |
 25 |                 +----+           |\|
 26 |        C -------|    |           | \
 27 |                 | >1 |-----------|  +------- Y2
 28 |        D -------| =  |           | /
 29 |                 +----+           |/
 30 | 
 31 | 
 32 |                 +----+
 33 |        E -------|    |
 34 |                 | &  |------+
 35 |        F -------|    |      |
 36 |                 +----+      |
 37 |                           |\|
 38 |                           | \
 39 |        G -----------------|  +o------------- Y3
 40 |                           | /
 41 |                           |/
 42 | 
 43 | 
 44 | 
 45 | Y1 should only be in the "B" state, when "A" = LOW. Y2 should always be
 46 | active (either HIGH or LOW - depending on "B" and "C"). This corresponds
 47 | to a combinational output. Y3 should only be active if "D" and "E" = HIGH.
 48 | 
 49 | 
 50 |                      GAL16V8
 51 |                     ---- ----
 52 |                 A  1|       |20  VCC
 53 |                 B  2|       |19  Y1
 54 |                 C  3|       |18  Y2
 55 |                 D  4|       |17  Y3
 56 |                 E  5|       |16  NC
 57 |                 F  6|       |15  NC
 58 |                 G  7|       |14  NC
 59 |                NC  8|       |13  NC
 60 |                NC  9|       |12  NC
 61 |               GND 10|       |11  NC
 62 |                     ---------
 63 | 
 64 | In the source file, tristate outputs are designated with a ".T". The
 65 | tristate control is followed with an ".E". If the tristate control
 66 | is absent then the normal free switching is assumed (=VCC). Tristate
 67 | control = GND means high impedance.
 68 | 
 69 | NOTE: With tristate outputs you can only have seven product terms in
 70 | your equation (all other output formats have a maximum of eight).
 71 | In the tristate control you can only have ONE product term (no OR)
 72 | in your equation.
 73 | 
 74 | 
 75 | The source file looks like this:
 76 | 
 77 | ******************************************************
 78 | GAL16V8
 79 | ex.2
 80 | 
 81 | A  B  C  D  E  F  G  NC NC GND
 82 | NC NC NC NC NC NC Y3 Y2 Y1 VCC
 83 | 
 84 | Y1.T = B
 85 | 
 86 | Y2.T = C + D
 87 | 
 88 | Y3.T = /G
 89 | 
 90 | Y1.E = /A
 91 | 
 92 | Y3.E = E * F
 93 | 
 94 | 
 95 | DESCRIPTION
 96 | ******************************************************
 97 | 
 98 | 
 99 | 
100 | In the last GAL16V8-example we will deal with register outputs. We will
101 | program a 4-bit-counter.
102 | 
103 | First the pin layout:
104 | 
105 | 
106 |                             GAL16V8
107 | 
108 |                            ---- ----
109 |         (Input)    Clock  1|       |20  VCC
110 |         (Input)       D0  2|       |19  Q0              (Output)
111 |         (Input)       D1  3|       |18  Q1              (Output)
112 |         (Input)       D2  4|       |17  Q2              (Output)
113 |         (Input)       D3  5|       |16  Q3              (Output)
114 |         (Input)      Set  6|       |15  NC              (not used)
115 |         (Input)    Clear  7|       |14  NC              (not used)
116 |         (Input)       NC  8|       |13  NC              (not used)
117 |         (Input)       NC  9|       |12  NC              (not used)
118 |                      GND 10|       |11  /OE             (Input)
119 |                            ---------
120 | 
121 | 
122 | Since register output sets the GAL in mode 3, this means that pins 1
123 | and 11 are reserved for Clock and /OE. When /OE is HIGH, all register
124 | outputs (Q0-Q3) go to "high impedance" (=Z).
125 | 
126 | When LOW-HIGH transition pulse is presented at the clock input, then
127 | the counter will be incremented.
128 | 
129 | When Clear = HIGH and a (LOW-HIGH) clock transition occurs,
130 | the outputs are cleared.
131 | 
132 | The inputs D0-D3 can be used to preset the counter. While Set = HIGH
133 | and a Clock pulse the values in D0-D3 are transferred to Q0-Q3.
134 | 
135 | 
136 | In the source file register outputs are designated with a ".R".
137 | 
138 | ******************************************************
139 | GAL16V8                 4-Bit-Counter
140 | Counter
141 | 
142 | 
143 | Clock D0    D1    D2    D3    Set   Clear NC    NC   GND
144 | /OE   NC    NC    NC    NC    Q3    Q2    Q1    Q0   VCC
145 | 
146 | 
147 | 
148 | Q0.R =   /Clear *  Set *  D0
149 |        + /Clear * /Set * /Q0
150 | 
151 | Q1.R =   /Clear *  Set *  D1
152 |        + /Clear * /Set * /Q1 *  Q0
153 |        + /Clear * /Set *  Q1 * /Q0
154 | 
155 | Q2.R =   /Clear *  Set *  D2
156 |        + /Clear * /Set *  Q2 * /Q1
157 |        + /Clear * /Set *  Q2 * /Q0
158 |        + /Clear * /Set * /Q2 *  Q1 *  Q0
159 | 
160 | Q3.R =   /Clear *  Set *  D3
161 |        + /Clear * /Set *  Q3 * /Q2
162 |        + /Clear * /Set *  Q3 * /Q1
163 |        + /Clear * /Set *  Q3 * /Q0
164 |        + /Clear * /Set * /Q3 *  Q2 *  Q1 *  Q0
165 | 
166 | 
167 | DESCRIPTION
168 | ******************************************************
169 | 
170 | 
171 | 
172 | 
173 |
174 | CONTENTSINDEXPREVNEXT 175 | 176 | 177 | -------------------------------------------------------------------------------- /galer/example20ra10.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | GAL20RA10 4 | 5 | 6 | 7 | 8 | CONTENTSINDEXPREVNEXT 9 |
10 |
 11 | 
 12 | II.4.3 GAL20RA10
 13 | 
 14 | The next example can be realized only with a GAL20RA10. The reason for this
 15 | is that each register output needs it's own clock input and tristate
 16 | control. But GAL16V8, GAL20V8 and GAL22V10 offers just one clock input
 17 | for all registers and GAL16V8 and GAL20V8 offers just one tristate enable
 18 | for all registers.
 19 | 
 20 | 
 21 |  Enable1 ----------------------------------+
 22 |                   +----+                   |
 23 |  ResetA1 ---------|    |                   |
 24 |                   | &  |-------+           |
 25 |  ResetB1 ---------|    |       |         |\|
 26 |                   +----+    +-----+      | \
 27 |   Clock1 -------------------|> R Q|------|  +------- Y1
 28 |                             |     |      | /   
 29 |       D1 ---o---------------|D S  |      |/   
 30 |             |               +-----+
 31 |             |                  |
 32 |      Set ---+--o---------------+
 33 |             |  |  +----+
 34 |             |  +--|    |
 35 |             |     | >1 |---------------------------- Y2
 36 |             o-----| =  |
 37 |             |     +----+                 |\
 38 |             |               +-----+      | \
 39 |   Clock2 ---+---------------|>   Q|------|  +o------ Y3
 40 |             |               |     |      | /   
 41 |       D2 ---+--o------------|D    |      |/|   
 42 |             |  |            +-----+        |
 43 |  Enable2 ---+--+---------------------------o
 44 |             |  |                           |
 45 |             |  |                           |
 46 |             |  |  +----+                 |\o
 47 |             |  +--|    |                 | \
 48 |             |     | &  |o----------------|  +------- Y4
 49 |             +-----|    |                 | /
 50 |                   +----+                 |/
 51 | 
 52 | 
 53 | 
 54 | Don't think about what the function of this circuit is - there is non again.
 55 | It is just an example again.
 56 | 
 57 | This is one of many possible pin designations:
 58 | 
 59 |                            GAL20RA10
 60 | 
 61 |                            ---- ----
 62 |                      /PL  1|       |24  +5V
 63 |                      Set  2|       |23  Y1
 64 |                  Enable1  3|       |22  Y2
 65 |                  Enable2  4|       |21  Y3
 66 |                   Clock1  5|       |20  Y4
 67 |                   Clock2  6|       |19  D1
 68 |                       NC  7|       |18  D2
 69 |                       NC  8|       |17  ResetA1
 70 |                       NC  9|       |16  ResetB1
 71 |                       NC 10|       |15  NC
 72 |                       NC 11|       |14  NC
 73 |                     GND  12|       |13  /OE
 74 |                            ---------
 75 | 
 76 | 
 77 | Pin 1 and 13 are reserved for /PL (preload) and /OE (output enable), they
 78 | can't be used for your own. Since Y1 to Y4 are outputs they must be at OLMC
 79 | pins.
 80 | 
 81 | When using a GAL20RA10 the GAL assembler provides three additonal suffixes:
 82 | .CLK, .ARST and .APRST.
 83 | 
 84 | .CLK defines the clock signal for the corresponding register output.
 85 | You have to define such a clock signal for EACH register output!
 86 | 
 87 | .ARST (asynchronous reset) and .APRST (asynchronous preset) are
 88 | optinal, you need not to define them for each register output.
 89 | 
 90 | For .CLK, .ARST and .APRST is only one product term allowed. For the
 91 | definition of the output function are four product terms allowed.
 92 | 
 93 | Please keep this in mind: when both is true the asynchnonous reset and
 94 | the synchronous preset the register is swichted off and the output becomes
 95 | to a "normal" tristate output (see section The GAL20RA10).
 96 | So the type of the output can be changed "on the fly".
 97 | 
 98 | 
 99 | This is source file for this example:
100 | 
101 | ******************************************************
102 | GAL20RA10
103 | 20RA10
104 | 
105 | /PL Set Enable1 Enable2 Clock1  Clock2 NC NC NC NC NC GND
106 | /OE NC  NC      ResetB1 ResetA1 D2     D1 Y4 Y3 Y2 Y1 VCC
107 | 
108 | 
109 | Y1.R     =  D1                          ; define register output
110 | Y1.E     =  Enable1                     ; define tristate control
111 | Y1.CLK   =  Clock1                      ; define clock for the register
112 | Y1.ARST  =  ResetA1 * ResetB1           ; define async. reset
113 | Y1.APRST =  Set                         ; define async. preset
114 | 
115 | Y2  =  Set + D1                         ; Y2 is a "normal" output
116 | 
117 | /Y3.R  =  D2                            ; Y3 is active low and a reg. output
118 | Y3.E   =  Enable2
119 | Y3.CLK =  Clock2
120 | 
121 | Y4.T   =  /D1 + /D2                     ; Y4 is a tristate output
122 | Y4.E   =  /Enable2
123 | 
124 | 
125 | DESCRIPTION
126 | ******************************************************
127 | 
128 | 
129 | 
130 | 
131 | 
132 |
133 | CONTENTSINDEXPREVNEXT 134 | 135 | 136 | -------------------------------------------------------------------------------- /galer/example22v10.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | GAL22V10 4 | 5 | 6 | 7 | 8 | CONTENTSINDEXPREVNEXT 9 |
10 |
 11 | 
 12 | II.4.2 GAL22V10 
 13 | 
 14 | The next circuit can't be realized with a GAL16V8 or GAL20V8. The reason
 15 | for this is that there are different tristate controls for the register
 16 | outputs. A GAL16V8 and GAL20V8 has only one tristate control for all
 17 | register outputs, this is the /OE (output enable) pin in mode 3.
 18 | 
 19 | 
 20 |  Enable1 ---------------------------------+
 21 |                                           |
 22 |                                         |\|
 23 |                             +----+      | \
 24 |    Clock ---o---------------|>  Q|------|  +------- Y1
 25 |             |  +----+       |    |      | /
 26 |        A ---+--|    |   +---|D   |      |/
 27 |             |  | &  |---+   +----+
 28 |        B ---+--|    |          
 29 |             |  +----+                   |\
 30 |             |               +----+      | \
 31 |             +---------------|>  Q|------|  +------- Y2
 32 |                             |    |      | /   
 33 |        C -------------------|D   |      |/|   
 34 |                             +----+        |   
 35 |                                           |
 36 |                             +----+        |
 37 |  Enable2 -------------------|    |        |
 38 |                             | &  |--------o-------- Y3
 39 |                         +---|    |
 40 |                         |   +----+
 41 |              +----+     |
 42 |        D ----|    |     |
 43 |              |    |     |
 44 |        E ----| >1 |-----o-------------------------- Y4
 45 |              | =  |      
 46 |        F ----|    |      
 47 |              +----+
 48 | 
 49 | 
 50 |      Futhermore all register outputs should be reseted asynchronously
 51 |      when the inputs F and AsyncRe are high and they should be preseted
 52 |      synchronously when the input SyncPre is high.
 53 |      (To keep the circuit diagram as simple as possible the inputs
 54 |      AsyncRe and SyncPre are not drawn in it.)
 55 | 
 56 | 
 57 | Don't think about what the function of this circuit is - there is non.
 58 | It is just an example.
 59 | 
 60 | Well, and this is one of many possible pin designations:
 61 | 
 62 |                            GAL22V10
 63 | 
 64 |                            ---- ----
 65 |                    Clock  1|       |24  +5V
 66 |                        A  2|       |23  Y1
 67 |                        B  3|       |22  Y2
 68 |                        C  4|       |21  Y3
 69 |                        D  5|       |20  Y4
 70 |                        E  6|       |19  Enable1
 71 |                        F  7|       |18  Enable2
 72 |                       NC  8|       |17  NC
 73 |                       NC  9|       |16  NC
 74 |                       NC 10|       |15  NC
 75 |                       NC 11|       |14  AsyncRe
 76 |                     GND  12|       |13  SyncPre
 77 |                            ---------
 78 | 
 79 | The only thing which you have to keep in mind here is that the clock
 80 | signal for the register outputs must be at pin 1 and that the outputs
 81 | must be at OLMC pins (pin 14-23).
 82 | 
 83 | To define the asynchronous reset and the synchronous preset for the register
 84 | outputs the GAL assembler offers you the keywords AR (asynchronous reset) and
 85 | SP (synchronous preset). Since AR and SP are keywords it is not allowed to
 86 | use them as pin names when a GAL22V10 is used.
 87 | 
 88 | 
 89 | The source file of this example looks like this:
 90 | 
 91 | ******************************************************
 92 | GAL22V10
 93 | 22V10
 94 | 
 95 | Clock   A       B  C  D  E       F       NC NC NC NC GND
 96 | SyncPre AsyncRe NC NC NC Enable2 Enable1 Y4 Y3 Y2 Y1 VCC
 97 | 
 98 | 
 99 | Y1.R  = A * B                   ; Y1 is a registered output => .R
100 | Y1.E  = Enable1
101 | 
102 | Y2.R  = C
103 | Y2.E  = Enable2 * Y4            ; Attention: there is a feedback of Y4
104 |                                 ; (Y4 is defined as output but it's
105 |                                 ; used as input again)
106 | 
107 | Y3    = Enable2 * Y4            ; there is a feedback again
108 | 
109 | Y4    = D + E + F
110 | 
111 | 
112 | AR    = F * AsyncRe             ; define asynchronous reset
113 | 
114 | SP    = SyncPre                 ; define synchronous preset
115 | 
116 | 
117 | DESCRIPTION
118 | ******************************************************
119 | 
120 | Instead of Y3 = Enable2 * Y4 you could also write:
121 | 
122 |   Y3 = Enable2*D + Enable2*E + Enable2*F.
123 | 
124 | But using a feedback is much more comfortable than using this long
125 | equation. Another reason for using a feedback is for example the
126 | tristate control of Y2. In tristate controls there is just one
127 | product term allowed, this means no ORs.
128 | 
129 | 
130 | 
131 | 
132 |
133 | CONTENTSINDEXPREVNEXT 134 | 135 | 136 | -------------------------------------------------------------------------------- /galer/examples.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Examples 4 | 5 | 6 | 7 | 8 | CONTENTSINDEXPREVNEXT 9 |
10 |
11 | 
12 | II.4 Examples
13 | 
14 | In the next few sections I will show you some examples about GALs, the source
15 | file format etc.
16 | 
17 | 
18 | 
19 |
20 | CONTENTSINDEXPREVNEXT 21 | 22 | 23 | -------------------------------------------------------------------------------- /galer/gal20ra10.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | The GAL20RA10 4 | 5 | 6 | 7 | 8 | CONTENTSINDEXPREVNEXT 9 |
10 |
11 | 
12 | I.2.3 The GAL20RA10
13 | 
14 | The next and last GAL which I want to indroduce is the GAL20RA10. This
15 | is also a second generation GAL, but this one is a special one. It is
16 | not as universal as a GAL16V8, GAL20V8 or GAL22V10.
17 | 
18 | 
19 | Here the pin designations:
20 | 
21 |                          GAL20RA10
22 |                          ---- ----
23 |                   /PL   1|       |24  +5V
24 |                 Input   2|       |23  Configurable Output Cell
25 |                 Input   3|       |22  Configurable Output Cell
26 |                 Input   4|       |21  Configurable Output Cell
27 |                 Input   5|       |20  Configurable Output Cell
28 |                 Input   6|       |19  Configurable Output Cell
29 |                 Input   7|       |18  Configurable Output Cell
30 |                 Input   8|       |17  Configurable Output Cell
31 |                 Input   9|       |16  Configurable Output Cell
32 |                 Input  10|       |15  Configurable Output Cell
33 |                 Input  11|       |14  Configurable Output Cell
34 |                 GND    12|       |13  /OE
35 |                          ---------
36 | 
37 | 
38 | The GAL20RA10 provides ten OLMCs. To each OLMC eight rows of the logic
39 | matrix are connected. One row (product term) is needed for tristate
40 | control again. Furthermore there are three product terms needed for
41 | fully asynchronous control of the register set, reset and clock functions.
42 | This means that there are four product terms left for the output definition.
43 | The output enable product term is AND'ed with the input from pin 13 (/OE).
44 | This allowes either a hard wired external control or a product term control,
45 | or a combination of both.
46 | 
47 | Each OLMC has just one bit which can be programmed, the S0-bit (=XOR). This
48 | bit is for the active polarity control. This means that there is no other
49 | bit to define whether an output should be a registered or a tristated one.
50 | But there is no bit needed to do this: if both is true the product term
51 | of asynchronous reset and the product term of asynchronous preset, then the
52 | register is switched off and the output becomes a "normal" tristate
53 | output.
54 | 
55 | By use of pin 1, /PL (preload), all registered outputs can be preloaded.
56 | This enhances the functional testability of the programmed GAL.
57 | To preload a register do the following:
58 | 
59 |    1. supply a high to /PL and to /OE (so the registered outputs
60 |       become high impedance outputs)
61 | 
62 |    2. impress the desired state on the register output pin
63 | 
64 |    3. pulse low /PL for at least 35ns
65 | 
66 | After this the registers will be loaded.
67 | 
68 | 
69 |
70 | CONTENTSINDEXPREVNEXT 71 | 72 | 73 | -------------------------------------------------------------------------------- /galer/gal22v10.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | The GAL22V10 4 | 5 | 6 | 7 | 8 | CONTENTSINDEXPREVNEXT 9 |
10 |
11 | 
12 | I.2.2 The GAL22V10
13 | 
14 | The GAL22V10 is the successor of the GAL16V8 and GAL20V8. This second
15 | generation of GALs are much more flexible and better to program.
16 | 
17 | At first the pin designations:
18 | 
19 |                           GAL22V10
20 |                          ---- ----
21 |       Clock and Input   1|       |24  +5V
22 |                 Input   2|       |23  Configurable Output Cell
23 |                 Input   3|       |22  Configurable Output Cell
24 |                 Input   4|       |21  Configurable Output Cell
25 |                 Input   5|       |20  Configurable Output Cell
26 |                 Input   6|       |19  Configurable Output Cell
27 |                 Input   7|       |18  Configurable Output Cell
28 |                 Input   8|       |17  Configurable Output Cell
29 |                 Input   9|       |16  Configurable Output Cell
30 |                 Input  10|       |15  Configurable Output Cell
31 |                 Input  11|       |14  Configurable Output Cell
32 |                 GND    12|       |13  Input
33 |                          ---------
34 | 
35 | The GAL22V10 has ten OLMCs, whereas the GAL16V8 and GAL20V8 has "only"
36 | eight of them. GAL22V10's OLMCs are not as complex (and complicated
37 | to understand) as the OLMCs of the 16V8 and 20V8 GALs. But nevertheless
38 | there are less restrictions.
39 | 
40 | For each OLMC of a GAL22V10 are just two bits which can be programmed,
41 | the S0- and S1-bit. The S0-bit does the same as the XOR-bit of the
42 | GAL16V8 and GAL20V8. It determines whether an output is active high or
43 | active low.
44 | Just for remembrance:
45 |         XOR (S0) = 0 : Output is active LOW
46 |         XOR (S0) = 1 : Output is active HIGH
47 | 
48 | The S1-bit does the same as the AC1-bit of the 16V8/20V8 GALs. It determins
49 | whether the OLMC is used as registered-output or as tristate output.
50 | For each output and for each type of output you can define a tristate enable.
51 | So you can define a tristate enable for registered outputs too. This is
52 | another difference to the 16V8/20V8 GALs, because there you can switch
53 | just all registered outputs or non to high impetance by use of the /OE
54 | pin (operation mode 3).
55 | 
56 | Pin 1 of the GAL22V10 can be both at the same time a "normal" input and
57 | the clock-input for the registers.
58 | 
59 | There are two additional signals within this GAL, but they are not connected
60 | to any pin, they are internal signals. These are AR (asynchronous reset) and
61 | SP (synchronous preset). These signals are for the registered outputs which
62 | can be controlled by use of the AR and SP. AR resets the registered outputs
63 | when it becomes true, independent from the clock-signal at pin 1 of the GAL
64 | (asynchronous). SP sets the registered output when it becomes true and
65 | when a LOW-HIGH transition of the clock is detected (synchronous).
66 | 
67 | 
68 | Another feature of the GAL22V10 is that the amount of rows which are
69 | connected to an OLMC is not constant. The number of rows connected to
70 | an OLMC is between 9 and 17(!).
71 | Here is a table which shows the exactly number of OLMC's rows:
72 | 
73 |         OLMC at pin |  number of rows from
74 |                     |   the logic-matrix
75 |         ------------+----------------------
76 |              23     |         9
77 |              22     |        11
78 |              21     |        13
79 |              20     |        15
80 |              19     |        17
81 |              18     |        17
82 |              17     |        15
83 |              16     |        13
84 |              15     |        11
85 |              14     |         9
86 | 
87 | 
88 | You have to consider that for each OLMC one row is needed for the
89 | tristate enable again. So you can use 8, 10, 12, 14 or 16 product
90 | terms for the output definition.
91 | 
92 | 
93 | 
94 |
95 | CONTENTSINDEXPREVNEXT 96 | 97 | 98 | -------------------------------------------------------------------------------- /galer/galer.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | What is GALer 4 | 5 | 6 | 7 | 8 | CONTENTSINDEXPREVNEXT 9 |
10 |
11 | 
12 | GALer is a GAL programming device with relevant driver software.
13 | So the project GALer consists of two components, a software and a
14 | hardware.
15 | 
16 | 
17 |
18 | CONTENTSINDEXPREVNEXT 19 | 20 | 21 | -------------------------------------------------------------------------------- /galer/history.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | History 4 | 5 | 6 | 7 | 8 | CONTENTSINDEXPREVNEXT 9 |
10 |
11 | 
12 | 
13 |   Versions:
14 | 
15 |     V1.0:    Test version
16 | 
17 |     V1.1:    Intuition interface added
18 | 
19 |     V1.2:    cured a few bugs
20 | 
21 |     V1.3:  - cured some bugs in the GAL assembler. /name.E is no longer allowed.
22 |            - The pin names of the last assembled files can be assigned to the
23 |              indicated GAL.
24 | 
25 |     V1.4:  - Kick 2.0
26 |            - new Intuition environment
27 |            - support of A- and B-type GALs
28 |            - new format of JEDEC files
29 |            - new functions: verify of programmed GALs
30 |                            test whether security fuse is set or not
31 |                            compare GALs
32 |                            optimizer for Boolean equations
33 |                            reassembler
34 |            - IMPORTANT CHANGE!!!:
35 |               '/' in pin declaration is now considered in the equations
36 | 
37 |     V1.41  - support of locale.library and gadtools.library
38 |            - req.library replaced by reqtools.library, reqtools.library is
39 |              copyright by Nico Francois
40 |            - Help available
41 | 
42 |     V1.5   - support of GAL22V10 and GAL20RA10
43 |            - needs WB 2.0 or later
44 |            - detects A- and B-type 16V8 and 20V8 GALs automatically
45 |            - use of #, &, ! for OR, AND and NOT is now possible
46 |            - shortcuts changed
47 |            - external editor can be called from GALer
48 |            - comments in the source files can now be introduced by a ';'
49 | 
50 |     V1.5a  - this version is equal to version 1.5
51 |              but now there is a layout included (see directory "Layout")
52 | 
53 |     V1.5b  - improved timing, therefore the access time is slowed down
54 |              significantly
55 | 
56 |     V1.5c  - bug removed, erasing of 22V10 GALs did not work
57 | 
58 |     V2.0   - new GUI (Magic User Interfac, MUI)
59 |            - bugs in reassembler removed
60 |                translation of GAL22V10 JEDEC files in source codes often failed
61 |                and the handling of negations in tristate enable equations was
62 |                wrong
63 |            - bug in assembler removed
64 |                feedback of GAL22V10 registered outputs was wrong
65 | 
66 |     V2.1   - Optimizer did not work at all in version 2.0 because of a
67 |              typing error in the source code (I formated the source new
68 |              in version 2.0 and by doing this a mistake occured - SORRY).
69 |              Now it seems to be ok again.
70 | 
71 | 
72 |
73 | CONTENTSINDEXPREVNEXT 74 | 75 | 76 | -------------------------------------------------------------------------------- /galer/important.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Important!!! 4 | 5 | 6 | 7 | 8 | CONTENTSINDEXPREVNEXT 9 |
10 |
11 | 
12 | 
13 | WARNING!!! The "GALer" and "GALerTest" programs send data over your Amiga's
14 | parallel port. This means: when you have a printer, digitizer, or
15 | something else attached, it should be switched off or disconnected, since
16 | it is possible that you may damage them.
17 | 
18 | 
19 | I CANNOT BE HELD RESPONSIBLE FOR ANY DAMAGE TO YOUR COMPUTER OR PRERIPHERALS.
20 | 
21 | 
22 | 
23 | The "GALer" hardware and software has been running faultlessly on my A3000.
24 | I have tested GALer on A1000, A3000 and A4000 machines. It should run on
25 | all other Amigas too.
26 | The circuit diagram is 100% fault free. With careful construction
27 | there is no reason for anything going awry. Even so the construction should
28 | be carried out by electronics freak (you should at least have soldering
29 | experience, and be able to intelligently read circuit diagrams). More
30 | information about the construction can be found in chapter III.
31 | 
32 | 
33 | Note: This manual sparely covers the operational theory of GAL programming.
34 | It is not a substitute for further reading.
35 | 
36 | If you already have long experience with digital circuitry, and really don't
37 | care how a GAL is made, or how it works internally, then this manual together
38 | with the examples should suffice to intelligently implement your GALs.
39 | 
40 | 
41 |
42 | CONTENTSINDEXPREVNEXT 43 | 44 | 45 | -------------------------------------------------------------------------------- /galer/index.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nils-eilers/GALasm/51241e2194ea3ccec9de900498da9b0b998ce4c3/galer/index.gif -------------------------------------------------------------------------------- /galer/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Index 4 | 5 | 6 | 7 | 8 | CONTENTSINDEXPREV 9 |
10 |
 11 | 
 12 |     A
 13 |         AC0                       
 14 |         AC1                       
 15 |         ACW                       
 16 |           Format                  
 17 |           Reading                 
 18 |         AND-Matrix                
 19 |         AR                        
 20 |         Architecture Control Word 
 21 |         Assembler                 
 22 |         Asynchronous Preset       
 23 |         Asynchronous Reset        
 24 | 
 25 |     B
 26 |         Blank Test                
 27 |         Bulk Erase                
 28 | 
 29 |     C
 30 |         Chip Diagramm             
 31 |         Circuit Description       
 32 |         Comment                   
 33 |         Compare                   
 34 |         Configuration, Save       
 35 |         Control Characters        
 36 |         Copy                      
 37 | 
 38 |     D
 39 |         DESCRIPTION               
 40 | 
 41 |     E
 42 |         Edit Mode                 
 43 |         Edit Voltage              
 44 |         Editor, Call              
 45 |         Editor, Selection         
 46 |         Erase                     
 47 |         Error Messages            
 48 |         Example                   
 49 |           GA16V8                  
 50 |           GAL22V10                
 51 |           GAL20RA10               
 52 | 
 53 |     F
 54 |         Feed Back                 
 55 |         File Checksum             
 56 |         Fuse Checksum             
 57 |         Fuse File                 
 58 | 
 59 |     G
 60 |         GAL                       
 61 |         GAL-Assembler             
 62 |         GAL-Checker               
 63 |         GAL-Info                  
 64 |         GAL-Types                 
 65 |         GAL16V8                   
 66 |           Intern Structure        
 67 |           OLMC                    
 68 |           Pin Designation         
 69 |             Modes                 
 70 |           Security-Bit            
 71 |           Signature               
 72 |         GAL20RA10                 
 73 |           Asynchronous Preset     
 74 |           Asynchronous Reset      
 75 |           Intern Structure        
 76 |           OLMC                    
 77 |           Pin Designation         
 78 |           Preload                 
 79 |           Tristate Control        
 80 |         GAL20V8                   
 81 |           Intern Structure        
 82 |           OLMC                    
 83 |           Pin Designation         
 84 |             Modes                 
 85 |           Security-Bit            
 86 |           Signature               
 87 |         GAL22V10                  
 88 |           Intern Structure        
 89 |           OLMC                    
 90 |           Pin Designation         
 91 |           Security-Bit            
 92 |           Signature               
 93 |         GALerTest                 
 94 | 
 95 |     H
 96 |         Hardware                  
 97 |         Hardware-Version          
 98 |         Help                      
 99 |         History                   
100 | 
101 |     I
102 |         Installation              
103 | 
104 |     J
105 |         JEDEC File                
106 |            Generate               
107 |            Parameter              
108 | 
109 |     K
110 |         Keywords                  
111 | 
112 |     M
113 |         Matrix, AND-              
114 |         Mode                      
115 | 
116 |     N
117 |         Negation                  
118 | 
119 |     O
120 |         OLMC                      
121 |         Optimizer                 
122 |         Output, Combinational     
123 |         Output Cell, Configurable 
124 | 
125 |     P
126 |         P,/V                      
127 |         PCB                       
128 |         Pin Description File      
129 |         Pin Declaration           
130 |         Pin Names                 
131 |           Clear                   
132 |           Show                    
133 |         Preload                   
134 |         Printed Circuit Board     
135 |         Product Term              
136 |         Program                   
137 |           How to Do               
138 |         Programming-Algorithm     
139 |         PT                        
140 | 
141 |     Q
142 |         Quine-McCluskey           
143 |         Quit                      
144 | 
145 |     R
146 |         RAG0-RAG5                 
147 |         Reassembler               
148 |         Register Output           
149 | 
150 |     S
151 |         S0                        
152 |         S1                        
153 |         SCLK                      
154 |         SDIN                      
155 |         SDOUT                     
156 |         Security-Fuse             
157 |           Set                     
158 |           Test                    
159 |         Shareware                 
160 |         Signature                 
161 |           Read                    
162 |         Source File               
163 |         SP                        
164 |         SYN                       
165 |         Synchronous Preset        
166 | 
167 |     T
168 |         Testing                   
169 |         Tristate Output           
170 |         Type-Requester            
171 | 
172 |     V
173 |         VIL                       
174 | 
175 |     W
176 |         Write Access              
177 | 
178 |     X
179 |         XOR                       
180 | 
181 | 
182 | 
183 | 
184 | 
185 |
186 | CONTENTSINDEXPREV 187 | 188 | 189 | -------------------------------------------------------------------------------- /galer/installation.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Installation 4 | 5 | 6 | 7 | 8 | CONTENTSINDEXPREVNEXT 9 |
10 |
11 | 
12 | II.2.1 Installation
13 | 
14 | The installation of GALer is very easy, just start the installation
15 | script. Commodore's installer is used, so there should be no problems.
16 | Just do what your Amiga requests.
17 | 
18 | If you start GALer for the very first time, please select your hardware
19 | version of GALer by use of the menu "Project - Hardware Version"
20 | and save this setting by use of the menu item "Project - Save config.".
21 | 
22 | You can start GALer either from Workbench or CLI.
23 | 
24 | For informations what GALer needs see System Requirements.
25 | 
26 | 
27 | 
28 | 
29 |
30 | CONTENTSINDEXPREVNEXT 31 | 32 | 33 | -------------------------------------------------------------------------------- /galer/intstruktur.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | The Intern Structure of GALs 4 | 5 | 6 | 7 | 8 | CONTENTSINDEXPREVNEXT 9 |
10 |
11 | 
12 | I.2 The Intern Structure of GALs
13 | 
14 | Up to now there are many kinds of GALs. The most common GALs are the
15 | GAL16V8, GAL20V8 and GAL22V10. These GALs are supported by GALer. Furthermore
16 | GALer supports the GAL20RA10 too. The next sections shows you what's inside
17 | of such a GAL.
18 | 
19 | 
20 |
21 | CONTENTSINDEXPREVNEXT 22 | 23 | 24 | -------------------------------------------------------------------------------- /galer/jedecerr.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Error Messages 4 | 5 | 6 | 7 | 8 | CONTENTSINDEXPREVNEXT 9 |
10 |
 11 | 
 12 | II.5.2 JEDEC File
 13 | 
 14 | "unexpected end of file"
 15 |    The last thing in a JEDEC file should be either the file checksum or
 16 |    a '*'.
 17 | 
 18 | 
 19 | "unknown command found"
 20 |    There is a unknown command in your JEDEC file (see chapter JEDEC File for
 21 |    possible commands). In most cases the reason for this error message
 22 |    is a missing '*'.
 23 | 
 24 | 
 25 | "bad format of number"
 26 |    A dez. or hex. number is expected and found, but there are illegal
 27 |    characters in it.
 28 |    Example:  C1a#3       
 29 | 
 30 | 
 31 | "number expected after command"
 32 |    After this command a dez. or hex. number is expected but not found.
 33 | 
 34 | 
 35 | "0 or 1 expected"
 36 |    Fuses can be set to 0 or 1. Using another digit will cause this error.
 37 | 
 38 | 
 39 | "can't find out type of GAL"
 40 |    GALer can't identify for which type of GAL (GAL16V8 or GAL20V8) this
 41 |    JEDEC file is. But GALer must know this in order to program a GAL.
 42 | 
 43 | 
 44 | "QF multible found"
 45 |    In the JEDEC file the command QF is found multiple. This is not
 46 |    allowed.
 47 | 
 48 | 
 49 | "QP multible found"
 50 |    In the JEDEC file the command QP is found multiple. This is not
 51 |    allowed.
 52 | 
 53 | 
 54 | "ending '*' expected"
 55 |    GALer expects a '*' character.
 56 | 
 57 | 
 58 | "after 'C' command no 'L' command allowed"
 59 |    After the fuse checksum no change of fuses (L command) is allowed.
 60 | 
 61 | 
 62 | "bad fuse checksum"
 63 |    The fuse checksum is bad. The reason for this can be that you have
 64 |    changed some state of fuses with a text editor.
 65 | 
 66 | 
 67 | "too many <STX> (= CTRL-B, 0x02) found"
 68 |    The <STX> control character should be once at the beginning of the
 69 |    JEDEC file.
 70 | 
 71 | 
 72 | "too many <ETX> (= CTRL-C, 0x03) found"
 73 |    The <ETX> control character should be once at the end of the
 74 |    JEDEC file.
 75 | 
 76 | 
 77 | "bad sequence of <STX>, <ETX>"
 78 |    The first control character must be a <STX> then a <ETX> not vice versa.
 79 | 
 80 | 
 81 | "after file checksum end of file expected"
 82 |    There is a character after a file checksum which is not a Space, TAB
 83 |    or Carriage Return. This is not allowed.
 84 | 
 85 | 
 86 | "bad fuse address (L... too short)"
 87 |    It's easier to show an example:
 88 |           L0010 1011*
 89 |           L0013 0111*
 90 |       Address 13 is defined twice.
 91 | 
 92 | 
 93 | "addresses skiped but no default value (F0/1*) defined"
 94 |    It's easier to show an example:
 95 |           L0010 11*
 96 |           L0015 01*
 97 |     The fuses of the addresses 12, 13 and 14 are not defined and there
 98 |     is no F command which would define the values of missing fuses.
 99 | 
100 | 
101 | "'*' expected"
102 |    '*' expected but not found (what else should I say here).
103 | 
104 | 
105 | "QF... and last fuse address (L...) are not equal"
106 |    QF defines the number of fuses in this JEDEC file (GAL16V8: 2194,
107 |    GAL20V8: 2706). If the last fuse of a L command does not match
108 |    to the QF command, this error will occur.
109 | 
110 | 
111 | "no values for the fuses found (no F0/1, L...)"
112 |    In your JEDEC file are no fuses defined. Such a file is useless
113 |    and therefore rejected by GALer.
114 | 
115 | 
116 | "only QF2194 *, QF2706 *, QF3274 *, QF5892 * allowed"
117 |    There is a QF... command which fits to no GAL which is supported by
118 |    GALer.
119 | 
120 | "too many fuses found"
121 |    In your JEDEC file are too many fuses defined.
122 | 
123 | 
124 | "found several fuse checksumms"
125 |    In your JEDEC file are several fuse checksumms. This is not allowed.
126 | 
127 | 
128 | "selected type of GAL fits not to JEDEC file"
129 |    You have selected a to-be-programmed-GAL which does not fit to
130 |    the JEDEC file.
131 | 
132 | 
133 | 
134 | 
135 |
136 | CONTENTSINDEXPREVNEXT 137 | 138 | 139 | -------------------------------------------------------------------------------- /galer/jedecfile.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | JEDEC File 4 | 5 | 6 | 7 | 8 | CONTENTSINDEXPREVNEXT 9 |
10 |
 11 | 
 12 | II.3 JEDEC File
 13 | 
 14 | JEDEC means (J)oint (E)lectron (D)evice (E)nineering (C)ouncil.
 15 | This file is a ASCII file in which every bit which can be set in a
 16 | GAL is listed. The JEDEC file has the extension ".jed" and it's
 17 | generated by the GAL-Assembler.
 18 | 
 19 | 
 20 | The JEDEC file can start with any text until there is a asterisk (*).
 21 | The first '*' introduces the command field. The command field starts
 22 | with the first '*' and ends at the file end.
 23 | Within the command field are... (now be astonished) commands! A command
 24 | is introduced by one character and it ends with a '*' character.
 25 | 
 26 | All commands are optional. Not every command must be in a JEDEC file.
 27 | The GAL-Assembler normaly uses: L, F and G commands (see below)
 28 | 
 29 | 
 30 | Possible commands are:
 31 | 
 32 | 
 33 |  N: This introduces a comment.
 34 |     Example:   N this is a comment *
 35 | 
 36 |                ^        ^          ^
 37 |                |        |          |
 38 |          command    any text    end of command
 39 | 
 40 | 
 41 | 
 42 |  F: You don't have to list all states of the fuses in the GAL. If you don't
 43 |     list all fuses GALer must know what the state of the missed fuses is.
 44 |     
 45 |     F0 *: not listed fuses are set to 0
 46 |     F1 *: not listed fuses are set to 1
 47 | 
 48 | 
 49 | 
 50 |  G: Security Fuse
 51 | 
 52 |     G0 *: don't set the security fuse after programming the GAL
 53 |     G1 *: ask user (you) whether to set the security fuse after
 54 |           programming the GAL or not
 55 | 
 56 | 
 57 |  L: L defines the address of a fuse and what the state of the fuse
 58 |     should be.
 59 | 
 60 |     Example:  L0000  10110111111111111111111111011111 *
 61 | 
 62 |         this means:  set fuse at address 0 to 1
 63 |                      set fuse at address 1 to 0
 64 |                      set fuse at address 2 to 1
 65 |                                 .
 66 |                                 .
 67 |                                 .
 68 | 
 69 |     possible addresses are:
 70 | 
 71 |         GAL16V8, GA16V8A, GAL16V8B:
 72 |           0000-2047: matrix of fuses (AND-array)
 73 |           2048-2055: XOR bits
 74 |           2056-2119: signature
 75 |           2120-2127: AC1 bits
 76 |           2128-2191: product term disable bits
 77 |           2192     : SYN bit
 78 |           2193     : AC0 bit                    
 79 | 
 80 |         GAL20V8, GAL20V8A, GAL20V8B:
 81 |           0000-2559: matrix of fuses (AND-array)
 82 |           2560-2567: XOR bits
 83 |           2568-2631: signature
 84 |           2632-2639: AC1 bits
 85 |           2640-2703: product term disable bits
 86 |           2704     : SYN bit
 87 |           2705     : AC0 bit
 88 | 
 89 |         GAL22V10
 90 |           0000-5807: matrix of fuses (AND-array)
 91 |           5808-5827: S0/S1-bits of the OLMCs
 92 |           5828-5891: signature
 93 | 
 94 |         GAL20RA10
 95 |           0000-3199: matrix of fuses (AND-array)
 96 |           3200-3209: S0-bits of the OLMCs
 97 |           3210-3273: signature
 98 | 
 99 | 
100 |  QF: Defines how many fuses in the JEDEC file are. A GAL16V8 has
101 |      2194 fuses and a GAL20V8 has 2706 fuses. Now GALer can
102 |      identify for which type of GAL this JEDEC file is.
103 | 
104 |      Example: QF2194 *
105 | 
106 | 
107 | 
108 |  C: C is followed by a 16 bit hex number which is the fuse checksum of
109 |     the JEDEC file (see description of menu 'JEDEC file parameter').
110 | 
111 |     Example: C6402 *
112 | 
113 | 
114 | 
115 |  <STX>, <ETX>: These are control characters.
116 |     <STX>: 0x02 = CTRL-B
117 |     <ETX>: 0x03 = CTRL-C
118 | 
119 |     Your text editor displays this characters in this way:
120 |       <STX>  
121 |       <ETX>  
122 |     <STX> defines the start of the JEDEC file and <ETX> the end of the
123 |     JEDEC file. <ETX> is followed by the file checksum (see description
124 |     of menu 'JEDEC file-parameter'). The file checksum is a 16 bit hex
125 |     number.
126 | 
127 | 
128 | 
129 |  V: V introduces a test vector. GALer 1.4 does not support this. GALer
130 |     interprets this command as a N command (comment).
131 | 
132 | 
133 | 
134 | 
135 | 
136 | 
137 | 
138 |
139 | CONTENTSINDEXPREVNEXT 140 | 141 | 142 | -------------------------------------------------------------------------------- /galer/keywords.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Keywords of the Source File 4 | 5 | 6 | 7 | 8 | CONTENTSINDEXPREVNEXT 9 |
10 |
11 | 
12 | Keywords of the Source File
13 | 
14 | GAL16V8                         designates the GAL type
15 | GAL20V8
16 | GAL22V10
17 | GAL20RA10
18 | 
19 | NC                              not connected (unused) pin
20 | GND                             GROUND (=LOW)
21 | VCC                             +5V    (=HIGH)
22 | .T                              output pin is tristate output
23 | .E                              tristate enable through product term
24 | .R                              output pin is register output
25 | =                               output pin is given an equivalence
26 | +                               OR
27 | *                               AND
28 | /                               NOT
29 | DESCRIPTION                     indicates the end of the Boolean equations
30 | 
31 | 
32 | 
33 | 
34 |
35 | CONTENTSINDEXPREVNEXT 36 | 37 | 38 | -------------------------------------------------------------------------------- /galer/literature.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Further Reading 4 | 5 | 6 | 7 | 8 | CONTENTSINDEXPREVNEXT 9 |
10 |
11 | 
12 | Further Reading
13 | 
14 |   1) GALs - Programmierbare Logikbausteine in Theorie und  Praxis
15 |      Bitterle
16 |      Franzis-Verlag
17 | 
18 |   2) Programmable Logic Manual - GAL Products
19 |      SGS-Thomson
20 | 
21 |   3) GAL Handbook
22 |      Lattice
23 | 
24 | 
25 | 
26 | 
27 |
28 | CONTENTSINDEXPREVNEXT 29 | 30 | 31 | -------------------------------------------------------------------------------- /galer/main.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | GALer 4 | 5 | 6 | 7 | 8 | INDEXNEXT 9 |
10 |
11 | 
12 | 
13 | 
14 |                             GALer V2.1
15 | 
16 |               Copyright © 1991/96 by Christian Habermann
17 |                         All Rights Reserved
18 | 
19 | 
20 |                          Table of Contents
21 | 
22 | 
23 | 
24 |         Common Things
25 | 
26 |                 What is GALer
27 |                 Shareware
28 |                 IMPORTANT
29 |                 System Requirements
30 |                 Thanks
31 | 
32 |         Chapter I     BASICS
33 |                 I.1     What are GALs?
34 | 
35 |                 I.2     The Intern Structure of GALs
36 |                 I.2.1      The GAL16V8 and GAL20V8
37 |                 I.2.2      The GAL22V10
38 |                 I.2.3      The GAL20RA10
39 | 
40 |         Chapter II    THE SOFTWARE
41 |                 II.1    Source File
42 | 
43 |                 II.2    The Program GALer
44 |                 II.2.1     Installation
45 |                 II.2.2     How to Use GALer
46 |                 II.2.3     Menus
47 |                 II.2.4     Assembler
48 |                 II.2.5     How to Program GALs
49 |                 II.2.6     How to Test Programmed GALs
50 |                 II.2.7     Optimizer
51 | 
52 |                 II.3    JEDEC File
53 | 
54 |                 II.4    Examples
55 |                 II.4.1     GAL16V8
56 |                 II.4.2     GAL22V10
57 |                 II.4.3     GAL20RA10
58 | 
59 |                 II.5    Error Messages
60 |                 II.5.1     Assembler
61 |                 II.5.2     JEDEC File
62 |                 II.5.3     Reassembler
63 | 
64 |         Chapter III   THE HARDWARE
65 |                 III.1   Programming GALs
66 |                 III.2   Circuit Description
67 |                 III.3   Construction
68 | 
69 |         Appendix
70 |                 Keywords of the Source File
71 |                 List of Parts
72 |                 Further Reading
73 |                 History
74 |                 Index
75 | 
76 | 
77 |
78 | INDEXNEXT 79 |
80 |
Converted using GuideML V1.6, a converter written by Richard Körber <shred@chessy.aworld.de>
81 | 82 | 83 | -------------------------------------------------------------------------------- /galer/menabout.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Project 4 | 5 | 6 | 7 | 8 | CONTENTSINDEXPREVNEXT 9 |
10 |
11 | 
12 |  About GALer            Tells you who has done all this code. I can tell
13 |                         you, I was it.
14 | 
15 | 
16 |
17 | CONTENTSINDEXPREVNEXT 18 | 19 | 20 | -------------------------------------------------------------------------------- /galer/menacw.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | GAL-Disassembler 4 | 5 | 6 | 7 | 8 | CONTENTSINDEXPREVNEXT 9 |
10 |
11 | 
12 |  Read ACW               Read the architecture control word of a GAL and
13 |                         print it on the screen.
14 | 
15 | 
16 |
17 | CONTENTSINDEXPREVNEXT 18 | 19 | 20 | -------------------------------------------------------------------------------- /galer/menasm.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | GAL-Assembler 4 | 5 | 6 | 7 | 8 | CONTENTSINDEXPREVNEXT 9 |
10 |
11 | 
12 |  Assemble file          Assemble a source file (name.pld) and generate
13 |                         the JEDEC file and some special files.
14 | 
15 |                         For further information see: Assembler
16 | 
17 |
18 | CONTENTSINDEXPREVNEXT 19 | 20 | 21 | -------------------------------------------------------------------------------- /galer/mencalleditor.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Tools 4 | 5 | 6 | 7 | 8 | CONTENTSINDEXPREVNEXT 9 |
10 |
11 | 
12 |  Call editor            This function starts the selected editor and tries to
13 |                         load the last assembled source file in it.
14 | 
15 | 
16 | 
17 | 
18 |
19 | CONTENTSINDEXPREVNEXT 20 | 21 | 22 | -------------------------------------------------------------------------------- /galer/menchecker.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Tools 4 | 5 | 6 | 7 | 8 | CONTENTSINDEXPREVNEXT 9 |
10 |
11 | 
12 |  GAL-Checker            There you can check a programmed GAL whether it does
13 |                         this what you want to do it or not.
14 | 
15 |                         Further information see: How to Test Programmed GALs
16 | 
17 | 
18 |
19 | CONTENTSINDEXPREVNEXT 20 | 21 | 22 | -------------------------------------------------------------------------------- /galer/menclearnames.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Tools 4 | 5 | 6 | 7 | 8 | CONTENTSINDEXPREVNEXT 9 |
10 |
11 | 
12 |  Clear pin names        Clears pin names from screen.
13 | 
14 | 
15 | 
16 |
17 | CONTENTSINDEXPREVNEXT 18 | 19 | 20 | -------------------------------------------------------------------------------- /galer/mencmp.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | GAL 4 | 5 | 6 | 7 | 8 | CONTENTSINDEXPREVNEXT 9 |
10 |
11 | 
12 |   Compare               There are three different types of comparison. You
13 |                         can compare a GAL with several GALs, a GAL with
14 |                         several JEDEC files or a JEDEC file
15 |                         with several GALs.
16 | 
17 | 
18 |
19 | CONTENTSINDEXPREVNEXT 20 | 21 | 22 | -------------------------------------------------------------------------------- /galer/mencopy.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | GAL 4 | 5 | 6 | 7 | 8 | CONTENTSINDEXPREVNEXT 9 |
10 |
11 | 
12 |   Copy                  Copy a GAL. You can only copy a GAL if the security bit
13 |                         of the source GAL is not set and if the destination GAL
14 |                         is not programmed.
15 | 
16 | 
17 | 
18 |
19 | CONTENTSINDEXPREVNEXT 20 | 21 | 22 | -------------------------------------------------------------------------------- /galer/meneditor.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Tools 4 | 5 | 6 | 7 | 8 | CONTENTSINDEXPREVNEXT 9 |
10 |
11 | 
12 |  Select editor          Selecting this will open a window in which you can
13 |                         choose your favorit editor which is called when you
14 |                         select the menu item Call editor. In a string
15 |                         gadget of this window you can enter the editor and
16 |                         it's parameter. %s is thereby replaced by the name
17 |                         of the last assembled source file.
18 | 
19 | 
20 | 
21 | 
22 |
23 | CONTENTSINDEXPREVNEXT 24 | 25 | 26 | -------------------------------------------------------------------------------- /galer/menempty.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | GAL 4 | 5 | 6 | 7 | 8 | CONTENTSINDEXPREVNEXT 9 |
10 |
11 | 
12 |   Blank test            Test whether the GAL is erased or not.
13 | 
14 | 
15 |
16 | CONTENTSINDEXPREVNEXT 17 | 18 | 19 | -------------------------------------------------------------------------------- /galer/menerase.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | GAL 4 | 5 | 6 | 7 | 8 | CONTENTSINDEXPREVNEXT 9 |
10 |
11 | 
12 |   Erase                 Erase a GAL. If you want to program a GAL the GAL
13 |                         must be erased. Do this using this function.
14 | 
15 | 
16 |
17 | CONTENTSINDEXPREVNEXT 18 | 19 | 20 | -------------------------------------------------------------------------------- /galer/mengalinfo.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | GAL-Disassembler 4 | 5 | 6 | 7 | 8 | CONTENTSINDEXPREVNEXT 9 |
10 |
11 | 
12 |  GAL-Info               Gives you some informations about your GAL.
13 | 
14 | 
15 |
16 | CONTENTSINDEXPREVNEXT 17 | 18 | 19 | -------------------------------------------------------------------------------- /galer/mengaltype.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | GAL-Type 4 | 5 | 6 | 7 | 8 | CONTENTSINDEXPREVNEXT 9 |
10 |
11 | 
12 |   GAL16V8               Here you can select the type of GAL which should be
13 |   GAL20V8               read/programmed next time.
14 |   GAL22V10
15 |   GAL20RA10
16 | 
17 | 
18 |
19 | CONTENTSINDEXPREVNEXT 20 | 21 | 22 | -------------------------------------------------------------------------------- /galer/menhardver.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Project 4 | 5 | 6 | 7 | 8 | CONTENTSINDEXPREVNEXT 9 |
10 |
11 | 
12 |  Hardware-Version       Here you can select which hardware version of GALer
13 |                         you have connected to your Amiga. This selection
14 |                         must be conform with the version of your circuit
15 |                         diagram. Otherwise GALer will not work correctly
16 |                         in some cases.
17 | 
18 | 
19 |
20 | CONTENTSINDEXPREVNEXT 21 | 22 | 23 | -------------------------------------------------------------------------------- /galer/menhelp.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Tools 4 | 5 | 6 | 7 | 8 | CONTENTSINDEXPREVNEXT 9 |
10 |
11 | 
12 |  Help                   Explains how to get help on a specific menu item.
13 | 
14 | 
15 | 
16 |
17 | CONTENTSINDEXPREVNEXT 18 | 19 | 20 | -------------------------------------------------------------------------------- /galer/menjedecpar.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | GAL-Disassembler 4 | 5 | 6 | 7 | 8 | CONTENTSINDEXPREVNEXT 9 |
10 |
11 | 
12 |  JEDEC file parameter   Selecting this menu puts up a requester in which
13 |                         you can determine parameters concerning the writing
14 |                         of JEDEC files.
15 | 
16 |                         Security bit: If this is enabled, GALer will write
17 |                         JEDEC files in which a special flag is set.
18 |                         Reading this JEDEC file to program a GAL will bring
19 |                         up a requester in which you can choose to set the
20 |                         security bit after programming or not.
21 | 
22 |                         Fuse-Checksum: If this is enabled, GALer will write
23 |                         JEDEC files with a checksum calculated over all
24 |                         fuses. Manually changed fuses (with text editor)
25 |                         will be detected by GALer and GALer will warn you
26 |                         that this JEDEC file has been changed when reading
27 |                         this file next time. You are allowed to change
28 |                         comments etc. but you are not allowed to change
29 |                         fuses ('0' and '1').
30 | 
31 |                         File-Checksum: If this is enabled, GALer will write
32 |                         JEDEC files with a checksum calculated over all
33 |                         characters in this file. This means that you are
34 |                         not allowed to change anything in this file
35 |                         by using a text editor.
36 | 
37 | 
38 | 
39 |
40 | CONTENTSINDEXPREVNEXT 41 | 42 | 43 | -------------------------------------------------------------------------------- /galer/menmakejedec.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | GAL-Disassembler 4 | 5 | 6 | 7 | 8 | CONTENTSINDEXPREVNEXT 9 |
10 |
11 | 
12 |  Generate JEDEC file    Read a GAL and make a corresponding JEDEC file.
13 | 
14 | 
15 | 
16 |
17 | CONTENTSINDEXPREVNEXT 18 | 19 | 20 | -------------------------------------------------------------------------------- /galer/menoptimizer.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Tools 4 | 5 | 6 | 7 | 8 | CONTENTSINDEXPREVNEXT 9 |
10 |
11 | 
12 |  Optimizer              Optimize Boolean equations.
13 | 
14 |                         For further information see: Optimizer
15 | 
16 | 
17 |
18 | CONTENTSINDEXPREVNEXT 19 | 20 | 21 | -------------------------------------------------------------------------------- /galer/menprog.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | GAL 4 | 5 | 6 | 7 | 8 | CONTENTSINDEXPREVNEXT 9 |
10 |
11 | 
12 |   Program               Program a GAL. This is the most importent function of
13 |                         GALer. After selecting this menu, GALer will bring
14 |                         up a file requester in which you can select the
15 |                         JEDEC file which should be programmed into the GAL.
16 | 
17 | 
18 | 
19 |
20 | CONTENTSINDEXPREVNEXT 21 | 22 | 23 | -------------------------------------------------------------------------------- /galer/menquit.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Project 4 | 5 | 6 | 7 | 8 | CONTENTSINDEXPREVNEXT 9 |
10 |
11 | 
12 |  Quit                   Quit quits GALer, but ATTENTION! Handle this function
13 |                         with care: If you use Quit too often, GALer will sell
14 |                         your Amiga's CPU.
15 | 
16 |                         Are you thinking that I'm pulling your leg?
17 |                         Ohhhh no..., really not!!! I never would do this.
18 | 
19 | 
20 |
21 | CONTENTSINDEXPREVNEXT 22 | 23 | 24 | -------------------------------------------------------------------------------- /galer/menreadsig.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | GAL-Disassembler 4 | 5 | 6 | 7 | 8 | CONTENTSINDEXPREVNEXT 9 |
10 |
11 | 
12 |  Read signature         Read signature of a programmed GAL and print it
13 |                         on the screen.
14 | 
15 | 
16 | 
17 |
18 | CONTENTSINDEXPREVNEXT 19 | 20 | 21 | -------------------------------------------------------------------------------- /galer/menreasm.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | GAL-Disassembler 4 | 5 | 6 | 7 | 8 | CONTENTSINDEXPREVNEXT 9 |
10 |
11 | 
12 |  Reassembler            This function reads a JEDEC file and generates then
13 |                         the original source file. So you can read a unknown
14 |                         GAL and get back a source file with the Boolean
15 |                         equations.
16 | 
17 | 
18 | 
19 |
20 | CONTENTSINDEXPREVNEXT 21 | 22 | 23 | -------------------------------------------------------------------------------- /galer/mensaveconfig.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Project 4 | 5 | 6 | 7 | 8 | CONTENTSINDEXPREVNEXT 9 |
10 |
11 | 
12 |  Save config.           Saves some settings to the file "S:GALer.config".
13 |                         Starting GALer next time, GALer will read this file
14 |                         and set your saved settings again.
15 | 
16 | 
17 |
18 | CONTENTSINDEXPREVNEXT 19 | 20 | 21 | -------------------------------------------------------------------------------- /galer/mensetsec.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | GAL 4 | 5 | 6 | 7 | 8 | CONTENTSINDEXPREVNEXT 9 |
10 |
11 | 
12 |   Set security bit      Set the security bit of a GAL. The logic matrix of
13 |                         such a protected GAL can't be read out after doing
14 |                         this.
15 | 
16 | 
17 | 
18 |
19 | CONTENTSINDEXPREVNEXT 20 | 21 | 22 | -------------------------------------------------------------------------------- /galer/menshownames.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Tools 4 | 5 | 6 | 7 | 8 | CONTENTSINDEXPREVNEXT 9 |
10 |
11 | 
12 |  Show pin names         Prints the pin names of the last assembled source
13 |                         file on the screen.
14 | 
15 | 
16 | 
17 |
18 | CONTENTSINDEXPREVNEXT 19 | 20 | 21 | -------------------------------------------------------------------------------- /galer/mentestsec.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | GAL 4 | 5 | 6 | 7 | 8 | CONTENTSINDEXPREVNEXT 9 |
10 |
11 | 
12 |   Test security bit     Test whether the security bit of a GAL is set or not.
13 | 
14 | 
15 |
16 | CONTENTSINDEXPREVNEXT 17 | 18 | 19 | -------------------------------------------------------------------------------- /galer/mentypereq.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | GAL-Type 4 | 5 | 6 | 7 | 8 | CONTENTSINDEXPREVNEXT 9 |
10 |
11 | 
12 |   Type-Requester        Every time when GALer wants to read or program a GAL
13 |                         GALer will bring up a requester in which you can
14 |                         select the type of GAL you want to read or program.
15 |                         This selection overrides the selection in the
16 |                         GAL16V8, GAL20V8, ... menus.
17 | 
18 |                         If you don't want this behavior of GALer, deselect
19 |                         the Type-Requester menu. GALer will then not bring up
20 |                         this requester.
21 | 
22 | 
23 | 
24 |
25 | CONTENTSINDEXPREVNEXT 26 | 27 | 28 | -------------------------------------------------------------------------------- /galer/menus.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Menus 4 | 5 | 6 | 7 | 8 | CONTENTSINDEXPREVNEXT 9 |
10 |
11 | 
12 | II.2.3 Menus
13 | 
14 | 
15 |   Project
16 |      About GALer          
17 |      Hardware-Version     
18 |      Save Config.         
19 |      Quit                 
20 | 
21 |   GAL-Type
22 |      GAL16V8              
23 |      GAL20V8              
24 |      GAL22V10             
25 |      GAL20RA10            
26 |      Type-Requester       
27 | 
28 |   GAL
29 |      Program              
30 |      Copy                 
31 |      Erase                
32 |      Compare              
33 |      Blank test           
34 |      Set security bit     
35 |      Test security bit    
36 |      Write access         
37 | 
38 |   GAL-Assembler
39 |      Assemble file        
40 | 
41 |   GAL-Disassembler
42 |      Read signature       
43 |      Read ACW             
44 |      GAL-Info             
45 |      Generate JEDEC file  
46 |      JEDEC file parameter 
47 |      Reassembler          
48 | 
49 |   Tools
50 |      Show pin names       
51 |      Clear pin names      
52 |      GAL-Checker          
53 |      Select editor        
54 |      Call editor          
55 |      Optimizer            
56 |      Help                 
57 | 
58 | 
59 |
60 | CONTENTSINDEXPREVNEXT 61 | 62 | 63 | -------------------------------------------------------------------------------- /galer/menwriteacc.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | GAL 4 | 5 | 6 | 7 | 8 | CONTENTSINDEXPREVNEXT 9 |
10 |
11 | 
12 |   Write access          This function brings up a requester. In this
13 |                         requester you can select what GALer should do before
14 |                         or after programming, copying or erasing a GAL.
15 | 
16 |                         programming:
17 |                           - with blank test: before programming a GAL test
18 |                                              whether it is erased or not
19 | 
20 |                           - with verify    : verify GAL after programming
21 | 
22 | 
23 |                         copying:
24 |                           - with blank test: test destination GAL whether
25 |                                              it is erased or not
26 | 
27 |                           - with verify    : verify programmed destination
28 |                                              GAL
29 | 
30 |                         erasing:
31 |                           - with blank test: test after erasing a GAL
32 |                                              whether it is really cleared
33 |                                              or not
34 | 
35 | 
36 |
37 | CONTENTSINDEXPREVNEXT 38 | 39 | 40 | -------------------------------------------------------------------------------- /galer/next.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nils-eilers/GALasm/51241e2194ea3ccec9de900498da9b0b998ce4c3/galer/next.gif -------------------------------------------------------------------------------- /galer/optimizer.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Optimizer 4 | 5 | 6 | 7 | 8 | CONTENTSINDEXPREVNEXT 9 |
10 |
11 | 
12 | II.2.7 Optimizer
13 | 
14 | Boolean equations can be simplified very often, but for human beings
15 | it is a hard way to do. A computer can do this much faster (in most
16 | times).
17 | 
18 | The Optimizer of GALer tries to optimize Boolean equations by use of
19 | the Quine-McCluskey algorithm. How this algorithm works can be read
20 | in many books which deal with Boolean mathamatics, so it's not
21 | described here. I just will described the usage of the Optimizer.
22 | 
23 | Hm, well, the usage of the Optimizer:
24 | 
25 |    Just select the menu Optimizer to start GALer's Optimizer.
26 |    After this a file requester pops up. Now you have to select the
27 |    source file which equations you want to be optimized.
28 |    After successfully loading this source file GALer starts to optimize
29 |    the equations.
30 | 
31 |    GALer displays the original equation and the optimized one. If you
32 |    are happy with the result of the optimization you should select the
33 |    gadget 'use it'. Then the original equation is replaced by the
34 |    optimized equation in your loaded source file.
35 | 
36 |    If you don't like the result of the optimization, you should select the
37 |    gadget 'reject'. Then the original equation is not replaced.
38 | 
39 |    After trying to optimize all equations GALer will pop up a file requester
40 |    again. Now you have to select a file name of your optimized source file.
41 |    Please don't use the file name of the original source file for the
42 |    optimized source file. Give the new file a new name, just like name_opt.pld
43 |    instead of name.pld.
44 | 
45 | 
46 |    Example of optimization:
47 | 
48 |      Original Boolean equation:
49 | 
50 |          X = /A*/C + A*/C + C*/D + /B*/C + /A*C*D + B*/D
51 | 
52 |      By GALer optimized Boolean equation:
53 | 
54 |          X = /C + /D + /A
55 | 
56 |    Both equations are equal, but the second one is much easier to read.
57 | 
58 | 
59 | Not all equations can be simplified. It could be that a "optimized"
60 | equation is more complicate than the original one. Just try it.
61 | 
62 | 
63 | 
64 |
65 | CONTENTSINDEXPREVNEXT 66 | 67 | 68 | -------------------------------------------------------------------------------- /galer/partlist.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | List of Parts 4 | 5 | 6 | 7 | 8 | CONTENTSINDEXPREVNEXT 9 |
10 |
11 | 
12 | List of Parts:
13 | 
14 | 
15 |         ICs:
16 | 
17 |          IC1, IC3, IC4, IC5   :   4 x   4094
18 |          IC2                  :   1 x   4555
19 |          IC6                  :   1 x   4503
20 |          IC7                  :   1 x   4021
21 |          IC8                  :   1 x   74LS06
22 |          IC9                  :   1 x   TL 497
23 |          IC10                 :   1 x   74LS145
24 | 
25 |         Diodes:
26 | 
27 |          D1-D4                :   4 x   1N4148
28 |          LED                  :   1 x   rot, 3 mm
29 | 
30 |         Transistors:
31 | 
32 |          T2, T4, T5           :   3 x   BC237B
33 |          T1, T3               :   2 x   BC327
34 | 
35 | 
36 |         Resistors (5%, 1/4 Watt):
37 | 
38 |          R1, R2, R35-39       :   7 x   1   KOhm
39 |          R3-13, R19-26        :  19 x   10  KOhm
40 |          R28-32               :   5 x   1,8 KOhm
41 |          R14                  :   1 x   1   Ohm
42 |          R15                  :   1 x   27  KOhm
43 |          R34                  :   1 x   220 Ohm
44 |          R18                  :   1 x   4,7 Ohm
45 |          R27                  :   1 x   47  Ohm
46 |          R33                  :   1 x   22  KOhm
47 |          R40-44               :   5 x   2   KOhm trimpots
48 |          (there are no R16, R17)
49 | 
50 |         Relays:
51 | 
52 |          K1, K2                :   2 x  relays, e.g. reed-relays,
53 |                                         1 x single pole double throw
54 | 
55 |         Coil:
56 | 
57 |          L1                   :   1 x   100 uH, miniature fixed
58 | 
59 | 
60 |         Capacitors:
61 | 
62 |          C1                   :   1 x   100 pF
63 |          C2                   :   1 x   4,7 uF, tantalum
64 |          C3                   :   1 x   100 nF
65 |          C4                   :   1 x   220 uF, 25V
66 | 
67 | 
68 |         Sundries:
69 | 
70 |          IC-Sockets
71 |            7 x 16 pin
72 |            3 x 14 pin
73 |            1 x Textool-Socket 24 pin, narrow! (.3 row spacing) or use
74 |                a universal type
75 | 
76 |            1 x 25 pin female Sub-D connector for Amiga 1000
77 |                or 25 pin male Sub-D connector for all other Amiga types
78 | 
79 | u = mikro
80 | 
81 | 
82 | Please note this: If you use the PCB-layout, replace R28 to R32 by a
83 | resistor-array 8 * 1.8kOhm. Furthermore you can add ten anti-interference
84 | capacitors C5 to C14 (each 100nF). These capacitors are not drawn in
85 | the circuit diagram, but you can see them in the component mounting diagram.
86 | 
87 | 
88 | 
89 | 
90 | 
91 | 
92 |
93 | CONTENTSINDEXPREVNEXT 94 | 95 | 96 | -------------------------------------------------------------------------------- /galer/prev.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nils-eilers/GALasm/51241e2194ea3ccec9de900498da9b0b998ce4c3/galer/prev.gif -------------------------------------------------------------------------------- /galer/proggal.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Programming GALs 4 | 5 | 6 | 7 | 8 | CONTENTSINDEXPREVNEXT 9 |
10 |
 11 | 
 12 | III.1 Programming GALs
 13 | 
 14 | The first question that arises is how can you program a GAL when all the
 15 | pins are already defined and no pins are free for the programming?
 16 | 
 17 | If you apply a voltage of 12.00 Volt up to 16.5 Volt (depends on GAL type
 18 | and on that whether the GAL should be read or programmed) to pin 2, then
 19 | the pin description changes, the GAL is then in the Edit mode.
 20 | 
 21 | In this section I'll explain how a GAL16V8 and GAL20V8 is read and
 22 | programmed. The reading/programming algorithm of the GAL22V10 and GAL20RA10
 23 | is similar to that of the GAL16V8 and GAL20V8 so I'll explain only the
 24 | GAL16V8 and GAL20V8.
 25 | 
 26 | Here the pins in the Edit mode:
 27 | 
 28 |                                 GAL16V8
 29 |                                 ---- ----
 30 |                          VIL   1|       |20  +5V
 31 |                         EDIT   2|       |19  P,/V
 32 |                         RAG1   3|       |18  RAG0
 33 |                         RAG2   4|       |17  VIL
 34 |                         RAG3   5|       |16  VIL
 35 |                         RAG4   6|       |15  VIL
 36 |                         RAG5   7|       |14  VIL
 37 |                         SCLK   8|       |13  VIL
 38 |                         SDIN   9|       |12  SDOUT
 39 |                         GND   10|       |11  /STR
 40 |                                 ---------
 41 | 
 42 | 
 43 |                                 GAL20V8
 44 |                                 ---- ----
 45 |                          VIL   1|       |24  +5V
 46 |                         EDIT   2|       |23  VIL
 47 |                         RAG1   3|       |22  P,/V
 48 |                         RAG2   4|       |21  RAG0
 49 |                         RAG3   5|       |20  VIL
 50 |                          VIL   6|       |19  VIL
 51 |                          VIL   7|       |18  VIL
 52 |                         RAG4   8|       |17  VIL
 53 |                         RAG5   9|       |16  VIL
 54 |                         SCLK  10|       |15  SDOUT
 55 |                         SDIN  11|       |14  VIL
 56 |                          GND  12|       |13  /STR
 57 |                                 ---------
 58 | 
 59 | 
 60 | Whether the GAL is to be read from or written to is determined by the level
 61 | of P,/V. A HIGH means write, a LOW read.
 62 | 
 63 | The to be read/written addresses are presented to pins RAG0-RAG5. The
 64 | programming occurs as follows:
 65 | 
 66 | After giving the addresses to RAG0-RAG5, the to be written bits have to be
 67 | presented to SDIN (serially) and by clocking SCLK with a LOW-HIGH-transition
 68 | the data is transferred to an internal shift register. A LOW-pulse on the
 69 | /STR pin programs the addressed row. This repeats until the whole GAL is
 70 | programmed.
 71 | 
 72 | The reading of a GAL proceeds similarly: After presenting the addresses to
 73 | RAG0-RAG5 the bits of the corresponding address are put into the internal
 74 | shift register by clocking /STR with a LOW-pulse. By clocking SCLK with a
 75 | LOW-HIGH-clock transition all the various bits are sent out the SDOUT pin.
 76 | The bit width of an address determines the number of SCLK pulses required
 77 | to complete the programming or reading the address.
 78 | 
 79 | VIL means Input Voltage Low. These pins must be connected to ground
 80 | or LOW when the GAL is in the Edit mode.
 81 | 
 82 | GALs do have different algorithm codes. These codes determine the parameters
 83 | Edit mode voltage and STR pulse width. GALer supports the algorithm codes
 84 | 0 to 4. The function GAL-Info of GALer returns the algorithm code of
 85 | the inserted GAL. This code is not very importent for you, but GALer needs
 86 | this code for reading and programming GALs.
 87 | 
 88 | 
 89 | 
 90 |             |             READ           |           PROGRAM
 91 | ------------+----------------------------+----------------------------
 92 |  Algorithm  |  Edit mode    | STR pulse  |   Edit mode    | STR pulse
 93 |             | read voltage  |            | prog. voltage  |
 94 | ------------+---------------+------------+----------------+-----------
 95 |           0 |  12 ± 0,25 V  |    5 us    | 15,75 ± 0,25 V | 80 ± 5 ms
 96 |           1 |  12 ± 0,25 V  |    5 us    | 15,75 ± 0,25 V | 80 ± 5 ms
 97 |           2 |  12 ± 0,25 V  |    5 us    | 16,50 ± 0,25 V | 10 ± 1 ms
 98 |           3 |  12 ± 0,25 V  |    5 us    | 14,50 ± 0,25 V | 40 ± 5 ms
 99 |           4 |  12 ± 0,25 V  |    5 us    | 14,00 ± 0,25 V |100 ± 5 ms
100 | 
101 | 
102 | 
103 | To erase a GAL you have to apply HIGH to P/V then pulse STR low for
104 | 100 ms and then apply LOW to P/V. After this the GAL is erased and ready
105 | to be programmed again.
106 | 
107 | 
108 | The internal organization of the GAL (addresses of the parts) looks as
109 | follows:
110 | 
111 | 
112 | GAL16V8, GAL16V8A,B:
113 | 
114 | Address                                         Width
115 | 
116 |  0-31           Fuse-Matrix                     64 Bit
117 |    32           Signature                       64 Bit
118 | 33-59           reserved space                  64 Bit
119 |    60           Architecture-Control-Word ACW   82 Bit
120 |    61           Security bit
121 |    62           reserved
122 |    63           Bulk Erase
123 | 
124 | 
125 | 
126 | GAL20V8, GAL20V8A,B:
127 | 
128 | Address                                         Width
129 | 
130 |  0-39           Fuse-Matrix                     64 Bit
131 |    40           Signature                       64 Bit
132 | 41-59           reserved space                  64 Bit
133 |    60           Architecture-Control-Word ACW   82 Bit
134 |    61           Security bit
135 |    62           reserved
136 |    63           Bulk Erase
137 | 
138 | 
139 | 
140 | The Architecture-Control-Word has the following structure (82 Bit wide):
141 | 
142 | 
143 | 
144 | GAL16V8:
145 | Bits  0-31: 32 bit product term enable 0-31
146 | Bits 32-35: 4 Bit XOR(n) for OLMC pins 19-16
147 | Bit     36: AC0-Bit
148 | Bits 37-44: 8 Bit AC1(n) for OLMC pins 19-12
149 | Bit     45: SYN-Bit
150 | Bits 46-49: 4 Bit XOR(n) for OLMC pins 15-12
151 | Bits 50-81: 32 Bit product term enable 32-63
152 | 
153 | GAL16V8A,B:
154 | Bits  0-3: 4 Bit XOR(n) for OLMC pins 19-16
155 | Bit     4: AC0
156 | Bit   5-8: 4 Bit AC1(n) for OLMC pins 19-16
157 | Bit  9-72: 64 Bit product term enable PT0 - PT63
158 | Bit 73-76: 4 Bit AC1(n) for OLMC pins 15-12
159 | Bit    77: SYN
160 | Bit 78-81: 4 Bit XOR(n) for OLMC pins 15-12
161 | 
162 | 
163 | GAL20V8:
164 | Bits  0-31: 32 Bit product term enable 0-31
165 | Bits 32-35: 4 Bit XOR(n) for OLMC pins 22-19
166 | Bit     36: AC0-Bit
167 | Bits 37-44: 8 Bit AC1(n) für OLMC pins 22-15
168 | Bit     45: SYN-Bit
169 | Bits 46-49: 4 Bit XOR(n) für OLMC pins 18-15
170 | Bits 50-81: 32 Bit product term enable 32-63
171 | 
172 | GAL20V8A,B:
173 | Bits  0-3: 4 Bit XOR(n) for OLMC pins 22-19
174 | Bit     4: AC0
175 | Bit   5-8: 4 Bit AC1(n) for OLMC pins 22-19
176 | Bit  9-72: 64 Bit product term enable PT0 - PT63
177 | Bit 73-76: 4 Bit AC1(n) for OLMC pins 18-15
178 | Bit    77: SYN
179 | Bit 78-81: 4 Bit XOR(n) for OLMC pins 18-15
180 | 
181 | 
182 | 
183 | 
184 | 
185 |
186 | CONTENTSINDEXPREVNEXT 187 | 188 | 189 | -------------------------------------------------------------------------------- /galer/proglogik.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | What are GALs? 4 | 5 | 6 | 7 | 8 | CONTENTSINDEXPREVNEXT 9 |
10 |
11 | 
12 | I.1 What are GALs?
13 | 
14 | GALs (Generic Array Logic) are programmable logic devices. By appropriate
15 | programming by the user, many standard gate functions can be resolved
16 | into a single GAL chip.
17 | 
18 | Assuming you need the following logic functions for your circuit:
19 | 
20 |  - AND -Gate with 2 inputs
21 |  - OR  -Gate with 2 inputs
22 |  - NAND-Gate with 2 inputs
23 |  - NOR -Gate with 2 inputs
24 | 
25 | 
26 | Normally you would need FOUR standard TTL-ICs. These functions can be
27 | replaced with ONE GAL. The main use of GALs is to make digital circuits as
28 | simple as possible, by replacing many standard logic ICs by one or more
29 | GALs.
30 | A GAL is able, with appropriate programming, to replace all the logic
31 | functions, such as for example: AND, OR, XOR, NAND, NOR, inverters,
32 | FlipFlops, decoders (especially address decoders), mutiplexers, counters.
33 | On top of all the GAL is reprogrammable (at least 100 times), so that the
34 | desired logic functions may easily be altered.
35 | 
36 | 
37 |
38 | CONTENTSINDEXPREVNEXT 39 | 40 | 41 | -------------------------------------------------------------------------------- /galer/program.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | How to Program GALs 4 | 5 | 6 | 7 | 8 | CONTENTSINDEXPREVNEXT 9 |
10 |
11 | 
12 | II.2.5  How to Program GALs
13 | 
14 | After the GAL-Assembler has created the JEDEC file from the source file,
15 | the GAL can be programmed using this JEDEC file. To initiate the
16 | programming of the GAL, simply select Program and give the JEDEC file
17 | name. As soon as the GAL is programmed, a requester pops up, and tells
18 | you the GAL is programmed, and it is OK to remove the GAL from the
19 | programmer's socket.
20 | 
21 | 
22 | The steps in programming a GAL:
23 | 
24 |   1. With a text editor create the source file and save this
25 |      file as "name.pld" (add the extension .pld!)
26 | 
27 |   2. Assemble the source file. As a result of this you'll get
28 |      a JEDEC file ("name.jed").
29 | 
30 |   3. Select the GAL type
31 | 
32 |   4. Insert the GAL in the programmer's socket
33 | 
34 |   5. Perform the Blank test to verify that the GAL is empty.
35 |      When the GAL is not empty, then you must first erase the GAL
36 |      before it can be programmed, use therefore the function Erase.
37 | 
38 |   6. Initiate programming by selecting Program.
39 | 
40 |   7. Take the GAL out of the programmer's socket, -  DONE !
41 | 
42 | 
43 |
44 | CONTENTSINDEXPREVNEXT 45 | 46 | 47 | -------------------------------------------------------------------------------- /galer/reasmerr.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Error Messages 4 | 5 | 6 | 7 | 8 | CONTENTSINDEXPREVNEXT 9 |
10 |
11 | 
12 | II.5.3 Reassembler
13 | 
14 | "mode AC0 = SYN = 0 is not supported"
15 |    In the JEDEC file the bits AC0 and SYN are set to 0. This mode
16 |    is not supported by GALer.
17 | 
18 | 
19 | "Pin xx: pin name defined twice"
20 |    A pin name is used for more than one pin.
21 | 
22 | 
23 | "Pin xx: illegal character"
24 |    Legal characters are  : digits, letters and the '/'
25 |    Illegal characters are: Space, #, *, ...
26 | 
27 | 
28 | "Pin xx: no pin name found"
29 |    There is no name for the pin xx defined.
30 | 
31 | 
32 | "Pin xx: VCC/GND at wrong pin"
33 |    VCC and GND must be the pin names for the VCC and GND pin of the GAL.
34 | 
35 | 
36 | "Pin xx: illegal use of '/'"
37 |    Usage of the negation character: /pinname
38 |    Illegal:  pinname/, /, //pinname etc.
39 | 
40 | 
41 | "Pin xx: GND expected"
42 |    Pin 10 of GAL16V8 respectively pin 12 of GAL20V8 must be defined as GND.
43 | 
44 | 
45 | "Pin xx: VCC expected"
46 |    Pin 20 of GAL16V8 respectively pin 24 of GAL20V8 must be defined as VCC.
47 | 
48 | 
49 | "Pin xx: AR is not allowed as pin name"
50 |    When using a GAL22V10, AR is a keyword which is not allowed as pin name.
51 | 
52 | "Pin xx: SP is not allowed as pin name"
53 |    When using a GAL22V10, SP is a keyword which is not allowed as pin name.
54 | 
55 | 
56 | 
57 |
58 | CONTENTSINDEXPREVNEXT 59 | 60 | 61 | -------------------------------------------------------------------------------- /galer/schaltbesch.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Circuit Description 4 | 5 | 6 | 7 | 8 | CONTENTSINDEXPREVNEXT 9 |
10 |
 11 | 
 12 | III.2 Circuit Description
 13 | 
 14 | In the following section I'll describe the functioning of my GAL-programming
 15 | device. I'll refer to my circuit diagram, so if you haven't ordered that,
 16 | you can skip this section.
 17 | 
 18 | The hardware is connected to the Amiga's parallel port. The connected data
 19 | signals are D0-D4 and the BUSY-Line.
 20 |  
 21 | IC1, IC3, IC4 and IC5 are eight way "serial in/parallel out" shift registers.
 22 | The outputs of the shift-register from IC3, IC4 and IC5 are connected to the
 23 | Textool-Zero insertion force socket for the GAL. Therefore it is possible to
 24 | (besides VCC and GND) define each of the GAL's pins with a level (HIGH or
 25 | LOW).
 26 | 
 27 | The possible outputs of the GAL (pin 14 to 23) can be read through IC7 and
 28 | IC6. IC7 is an eight way "parallel in/serial out" shift register.
 29 | 
 30 | IC1 is so to speak the switch centre, this IC selects IC3, 4 and 5 (OE).
 31 | Furthermore, this IC switches the programming voltages for the GAL (VCC,
 32 | Edit-voltage) on or off.
 33 | 
 34 | Since the ICs 1, 3, 4, 5, 7 can be individually accessed, a separate clock
 35 | line is provided for each IC. These clock lines are selected via IC2, a 1 out
 36 | of 4-decoder, by the parallel port's data lines D0 and D1.
 37 | 
 38 | D3 determines whether a read (low) or write (high) operation is to occur.
 39 | It must be ensured that D3 does not go low until the IC to be accessed is
 40 | selected through D0 and D1. Otherwise an IC gets an unwanted clock-pulse
 41 | and at the next Strobe-pulse (D2) the wrong (once left shifted) data is
 42 | presented at the outputs.
 43 | 
 44 | The Strobe-pulse for the shift-register is derived from D2 . When D2 goes
 45 | high, the data in the shift registers is transferred to the output registers
 46 | of ICs 1, 3, 4, 5.
 47 | 
 48 | Through IC7, D2 can be made high (D2 = high), so that the data on Pins P1-P8
 49 | are transferred to the internal shift register and may be read through the
 50 | BUSY line by clocking the relevant clock-line.
 51 | 
 52 | D4 transfers the individual bits from the Amiga to the GAL-Burner.
 53 | 
 54 | Since Pins 2 and 4 of the Textool-socket may be supplied with the programming
 55 | voltage of up to 16.5 Volt, we have to protect IC4 with the diodes D2 and D3
 56 | against over voltage.
 57 | 
 58 | The programming voltage is derived from IC9, a switch mode voltage regulator.
 59 | This voltage can be precisely adjusted with the trimpots R40-R44.
 60 | 
 61 | The relay K1 connects the supply voltage of the GAL to pin 24 of the
 62 | Textool-Socket, Relay K2 connects the output Q7 from IC3 or +5V supply voltage
 63 | (according to the GAL type) to Pin 22 of the Textool-Socket. Both relays are
 64 | driven by IC1.
 65 | 
 66 | The LED shows whether voltage is supplied to the Textool-Socket or not
 67 | (controlled by software). When the LED is on, a GAL may not be inserted or
 68 | removed from the socket.
 69 | 
 70 | 
 71 | Parallel-Port:
 72 | 
 73 |  D0-D1:  Selection of individual ICs by Clk
 74 |  D2:     Strobe-pulse for IC 1, 3, 4, 5
 75 |  D3:     write = low, read = high
 76 |  D4:     Data line for "Write Bits"
 77 |  BUSY:   Data line for "Read Bits"
 78 | 
 79 | IC1:
 80 |  Q1   make 16.5V (but don't switch it!)
 81 |  Q2   switch edit-current on pin 2 for GAL20V8
 82 |  Q3   switch edit-current on pin 4 for GAL16V8
 83 |  Q5   switch Vcc
 84 |  Q6   OE for IC3, 4, 5
 85 |  Q7   controlles LED on : high, low = off
 86 |  Q8   not used
 87 | 
 88 | IC3:
 89 |  Q1-Q8  pin 16-23 of the Textool-socket over R3-R8
 90 | 
 91 | IC4:
 92 |  Q1-Q8  pin 1-8 of the Textool-socket
 93 | 
 94 | IC5:
 95 |  Q1-Q3  pin 9-11 of the Textool-socket
 96 |  Q4     pin 13 of the Textool-socket
 97 |  Q5-Q6  pins 14, 15 of the Textool-socket over R9, R10
 98 | 
 99 | IC6:
100 |  a      read level at pin 13 of the Textool-socket
101 |  b      read buffer of IC7
102 |  c      read level at pin 23 of the Textool-socket
103 | 
104 | IC7:
105 |  P1-P8  read level at pin 14-21 of the Textool-socket
106 | 
107 | 
108 | 
109 | 
110 |
111 | CONTENTSINDEXPREVNEXT 112 | 113 | 114 | -------------------------------------------------------------------------------- /galer/shareware.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Shareware 4 | 5 | 6 | 7 | 8 | CONTENTSINDEXPREVNEXT 9 |
10 |
11 | 
12 | GALer is SHAREWARE. If you use this program and/or the hardware, please
13 | send me 20 DM or 15 US $. The circuit diagram for the hardware and the
14 | component mounting diagram for the PCB will be sent to you on receipt of
15 | the shareware donation.
16 | 
17 | Send money by postal money order or cash, no checks please! If you send
18 | me a disk you will be sent the next update of GALer when it becomes
19 | available.
20 | 
21 | My address is: Christian Habermann
22 |                Asamstr. 17
23 |                85356 Freising
24 |                Germany
25 |                EMail: Christian.Habermann@t-online.de
26 | 
27 | 
28 | The distribution of GALer on PD-disks or through the networks is
29 | permitted, as long as no profit is made from it, and that the included
30 | files remain unaltered, and are distributed in their entirety. If you build
31 | the GAL-prommer you are allowed to sell this one, to the price of the parts.
32 | It is not allowed to sell this product in commercial way. The circuit
33 | diagram must only be distributed privately and free of charge.
34 | 
35 | 
36 |
37 | CONTENTSINDEXPREVNEXT 38 | 39 | 40 | -------------------------------------------------------------------------------- /galer/software.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | The Software 4 | 5 | 6 | 7 | 8 | CONTENTSINDEXPREVNEXT 9 |
10 |
11 | 
12 |                           Chapter II
13 | 
14 |                          The Software
15 | 
16 | 
17 | In principle you can forget all of chapter I. In principle! What you should
18 | remember is the pin designations of the GAL in the different modes. Thereby
19 | avoiding many unnecessary failures. The determination of the function mode
20 | and the other parameters, which are to be taken into account during the
21 | programming of the GAL, are taken care of by the software.
22 | 
23 | 
24 |
25 | CONTENTSINDEXPREVNEXT 26 | 27 | 28 | -------------------------------------------------------------------------------- /galer/sourcefile.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Source File 4 | 5 | 6 | 7 | 8 | CONTENTSINDEXPREVNEXT 9 |
10 |
 11 | 
 12 | II.1 Source File
 13 | 
 14 | First a source file has to be created with a text editor. This source file
 15 | must contain the following information:
 16 | 
 17 |   1. The GAL type (GAL16V8 or GAL20V8 )
 18 | 
 19 |   2. an 8 byte long comment, which will be written into the GAL as the
 20 |      signature (see I.2)
 21 | 
 22 |   3. The pin names - here pin numbers are replaced with names, which is
 23 |      easier to oversee.
 24 | 
 25 |   4. The Boolean equations
 26 | 
 27 |   5. The keyword DESCRIPTION - after this you can place some desired text.
 28 |      This text generally describes the GAL's function. That way you can know
 29 |      years later what the GAL's intended use was.
 30 | 
 31 | 
 32 | Before it's getting boreing here is a first example (be happy).
 33 | 
 34 | Example 1:
 35 | 
 36 | Assuming you need the following gates in your circuit:
 37 | 
 38 | - one AND  with 3 inputs
 39 | - one NAND with 2 Inputs
 40 | - one OR with 2 inputs
 41 | - one small digital circuit which feeds the outputs from 2 AND gates
 42 |   to the inputs of one OR gate.
 43 | 
 44 | Circuit diagram:
 45 | (sorry for the European symbols)
 46 | 
 47 | 
 48 |     AND:                        +----+                  W = A * B * C
 49 |                           A ----|    |
 50 |                           B ----| &  |---- W
 51 |                           C ----|    |
 52 |                                 +----+
 53 | 
 54 |     NAND:                       +----+                  /X = D * E
 55 |                           D ----|    |
 56 |                                 | &  |o--- X
 57 |                           E ----|    |
 58 |                                 +----+
 59 |     OR:
 60 |                                 +----+                  Y = F + G
 61 |                           F ----|    |
 62 |                                 | >1 |---- Y
 63 |                           G ----| =  |
 64 |                                 +----+
 65 | 
 66 |     small  digital              +----+                  Z = H * I + J * K
 67 |     circuit:              H ----|    |
 68 |                                 | &  |----+
 69 |                           I ----|    |    |   +----+
 70 |                                 +----+    +---|    |
 71 |                                               | >1 |---- Z
 72 |                                 +----+    +---|    |
 73 |                           J ----|    |    |   +----+
 74 |                                 | &  |----+
 75 |                           K ----|    |
 76 |                                 +----+
 77 | 
 78 |      Legend:
 79 |         * : AND  - connection
 80 |         + : OR - Connection
 81 |         / : low active
 82 | 
 83 | 
 84 | In order to create the source file we have to determine which type of GAL
 85 | will suit our purpose.
 86 | 
 87 | For the implementation of the above logic functions, we need a total of 11
 88 | inputs and 4 outputs. From chapter I we know (or not?) that the type of GAL
 89 | is dependant on the number of needed inputs.
 90 | 
 91 | The number of inputs in turn depends on the mode (see
 92 | pin designations of the various modes). Since neither tristate
 93 | nor register outputs are used, the GAL will be in mode 1 after programming.
 94 | 
 95 | It therefore follows, the GAL16V8 has 10 inputs and 8 configurable outputs.
 96 | Since we only need 4 outputs, we can program the rest of the outputs as inputs,
 97 | so that we obtain the total required 11 inputs and 4 outputs.
 98 | 
 99 | Therefore GAL16V8 is adequate for our purposes. GAL20V8 can also be used, but
100 | that leaves a lot of unused inputs (WASTE !).
101 | 
102 | 
103 | The second thing we need is a signature for the GAL. Remember, it can
104 | be up to 8 characters long. For example "example".
105 | 
106 | 
107 | Now we have to define the pins.  The pins are named one after the other
108 | from 1 to 20. Pins that are not used should be named "NC" (not connected),
109 | ground with "GND" and +5V with "VCC".
110 | 
111 | here:    B  C   D   E   F  G  H  I  J  GND
112 |          K  NC  NC  NC  Z  Y  X  W  A  VCC
113 | 
114 | that is:
115 |         Pin  1 := B     Input
116 |         Pin  2 := C     Input
117 |         Pin  3 := D     Input
118 |         Pin  4 := E     Input
119 |         Pin  5 := F     Input
120 |         Pin  6 := G     Input
121 |         Pin  7 := H     Input
122 |         Pin  8 := I     Input
123 |         Pin  9 := J     Input
124 |         Pin 10 := GND   Ground
125 |         Pin 11 := K     Input
126 |         Pin 12 := NC    Not Connected
127 |         Pin 13 := NC    Not Connected
128 |         Pin 14 := NC    Not Connected
129 |         Pin 15 := Z     Combinational Output
130 |         Pin 16 := Y     Combinational Output
131 |         Pin 17 := X     Combinational Output
132 |         Pin 18 := W     Combinational Output
133 |         Pin 19 := A     (Configurable Output defined as Input)
134 |         Pin 20 := VCC   Voltage Supply
135 | 
136 | 
137 |                      GAL16V8
138 |                     ---- ----
139 |                 B  1|       |20  VCC
140 |                 C  2|       |19  A
141 |                 D  3|       |18  W
142 |                 E  4|       |17  X
143 |                 F  5|       |16  Y
144 |                 G  6|       |15  Z
145 |                 H  7|       |14  NC
146 |                 I  8|       |13  NC
147 |                 J  9|       |12  NC
148 |               GND 10|       |11  K
149 |                     ---------
150 | 
151 | 
152 | Next come the Boolean equations:
153 | 
154 |         W  = A * B * C
155 |         /X = D * E
156 |         Y  = F + G
157 |         Z  = H * I + J * K
158 | 
159 | Therewith we have all the parts required for the source file. Now the
160 | question arises, what format does such a file have?:
161 | 
162 | In line 1 must be the type of GAL. Here  "GAL16V8"
163 | 
164 | In line 2 must be the signature. Here  "Example"
165 | 
166 | Then follow the pin declaration:
167 | 
168 |          B  C   D   E   F  G  H  I  J  GND
169 |          K  NC  NC  NC  Z  Y  X  W  A  VCC
170 | 
171 | Then the Boolean Equations:
172 | 
173 |         W = A * B * C
174 |        /X = D * E
175 |         Y = F + G
176 |         Z = H * I + J * K
177 | and the keyword DESCRIPTION.
178 | 
179 | Comments are introduced by a ';'.
180 | 
181 | Now using a text editor you can create your source file, and save it with
182 | the title "example.pld". Don't forget the extension ".pld".
183 | 
184 | This is how the file should look:
185 | 
186 | (**** These characters designate the start and end of the file, please
187 | don't type it.)
188 | 
189 | ******************************************************
190 | GAL16V8         ; this is the GAL type
191 | Example         ; this is the signature
192 | 
193 | B  C   D   E   F  G  H  I  J  GND       ; this is the pin declaration
194 | K  NC  NC  NC  Z  Y  X  W  A  VCC
195 | 
196 | W  = A * B * C                  ; here are the pin definitions
197 | /X = D * E
198 | Y  = F + G
199 | Z  = H * I + J * K
200 | 
201 | DESCRIPTION:
202 | here could be a comment which describes the function
203 | of this GAL
204 | ******************************************************
205 | 
206 | 
207 | 
208 | Negations ('/') in the pin declaration are considered in the Boolean
209 | equations. This means, if you use a '/' in the pin declaration and
210 | if you use the related pin in a Boolean equation this pin will be
211 | negated.
212 | 
213 | Example:
214 | 
215 |         A  B  /C  D .....  GND
216 |         K  L  M   N .....  VCC
217 | 
218 |         N = C
219 | 
220 | 
221 |      This is the same:
222 | 
223 |         A  B  C   D .....  GND
224 |         K  L  M   N .....  VCC
225 | 
226 |         N = /C
227 | 
228 | 
229 | 
230 | How do you obtain from this source file a programmed GAL? For that you
231 | need the program "GALer" which is described in the following sections.
232 | 
233 | 
234 | 
235 | 
236 |
237 | CONTENTSINDEXPREVNEXT 238 | 239 | 240 | -------------------------------------------------------------------------------- /galer/systemreq.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | System Requirements 4 | 5 | 6 | 7 | 8 | CONTENTSINDEXPREVNEXT 9 |
10 |
11 | 
12 | To use GALer you need an Amiga with at least 512 kByte RAM and
13 | Workbench 2.0 or higher.
14 | 
15 | Furthermore you need the MagicUserInterface (MUI) which is NOT
16 | included in the GALer package.
17 | 
18 | Since MUI is Shareware and not Freeware, I'm obliged to print the
19 | following text:
20 | 
21 | ------------------------------------------------------------------------------
22 | 
23 |                             This application uses
24 | 
25 | 
26 |                           MUI - MagicUserInterface
27 | 
28 |                   (c) Copyright 1993/94 by Stefan Stuntz
29 | 
30 | 
31 |   MUI is a system to generate and maintain graphical user interfaces. With
32 |   the  aid  of  a  preferences program, the user of an application has the
33 |   ability to customize the outfit according to his personal taste.
34 | 
35 |   MUI is distributed as shareware. To obtain a complete package containing
36 |   lots of examples and more information about registration please look for
37 |   a  file  called  "muiXXusr.lha"  (XX means the latest version number) on
38 |   your local bulletin boards or on public domain disks.
39 | 
40 |             If you want to register directly, feel free to send
41 | 
42 | 
43 |                            DM 30.-  or  US$ 20.-
44 | 
45 |                                     to
46 | 
47 |                                Stefan Stuntz
48 |                           Eduard-Spranger-Straße 7
49 |                                80935 München
50 |                                   GERMANY
51 | 
52 | ------------------------------------------------------------------------------
53 | 
54 | 
55 | 
56 |
57 | CONTENTSINDEXPREVNEXT 58 | 59 | 60 | -------------------------------------------------------------------------------- /galer/testing.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | How to Test Programmed GALs 4 | 5 | 6 | 7 | 8 | CONTENTSINDEXPREVNEXT 9 |
10 |
11 | 
12 | II.2.6 How to Test Programmed GALs
13 | 
14 | Once the GAL has been programmed, the question remains, "does it work the
15 | way you envisaged it?". Answering this question is the purpose of the
16 | GAL-Checker.
17 | 
18 | In order to verify the GAL's functions, you must of course first plug
19 | the GAL into the programmer's socket, and select the correct GAL-type.
20 | Now you can select the menu item GAL-Checker.
21 | 
22 | In the middle of the screen you'll see a symbolic GAL displayed. In this
23 | GAL, you'll see a number of 'I's and 'O's. The 'I' stands for Input and
24 | the 'O' for Output.
25 | The 'O' is a gadget. By clicking on the 'O' it turns into an 'I' and
26 | clicking on it again it becomes an 'O' again. In other words, you can
27 | determine if this pin is to be used as an input or an output.
28 | 
29 | If a pin is an input, then you can select from another gadget if the pin
30 | is to be in a  "High" ('H') or in a "Low" ('L') state. An output can
31 | assume three states: 'H' (High), 'L' (Low) and 'Z' (high impedance).
32 | The current state is displayed near the corresponding pin.
33 | 
34 | If you're using the GAL from the above example, pin 19
35 | must be defined as an input (="A") by clicking on the 'O' (the one at pin 19),
36 | since this pin was defined as an input during  programming in the above
37 | example.
38 | 
39 | The inputs of the AND gate are:  pin 19  (="A"),  pin  1 (="B"), pin 2 (="C").
40 | The output is pin 18 (="W").
41 | 
42 | If you now  set the inputs of the AND gate HIGH (by clicking on the gadgets),
43 | the output (=pin 18) should also go HIGH.  If it doesn't work or if the output
44 | also goes high with other combinations of input levels, then the fault is
45 | probably in the source file.  The error should be corrected in the source file.
46 | The GAL must then be erased and reprogrammed (a GAL can be erased and
47 | reprogrammed at least a hundred times). In this manner the whole GAL can
48 | be fully tested, and if no errors are detected, it can be used in your circuit.
49 | 
50 | 
51 | 
52 | 
53 | 
54 |
55 | CONTENTSINDEXPREVNEXT 56 | 57 | 58 | -------------------------------------------------------------------------------- /galer/thanks.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Thanks 4 | 5 | 6 | 7 | 8 | CONTENTSINDEXPREVNEXT 9 |
10 |
11 | 
12 |  Thanks to:   - all registerd GALer users
13 | 
14 |               - Thorsten Elle for the PCB
15 | 
16 |               - Frank Stange for beta-testing
17 | 
18 |               - Helmut Hohenwarter for reading the documentation files
19 | 
20 |               - Nico François for the reqtools.library
21 |                 reqtools.library is (c) by Nico François
22 | 
23 |               - Stefan Stuntz for the Magic User Interface (MUI)
24 |                 MUI is (c) by Stefan Stuntz (see System Requirements)
25 | 
26 |               - the firm Amiga for the great product Amiga
27 | 
28 | 
29 |
30 | CONTENTSINDEXPREVNEXT 31 | 32 | 33 | -------------------------------------------------------------------------------- /galer/toc.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nils-eilers/GALasm/51241e2194ea3ccec9de900498da9b0b998ce4c3/galer/toc.gif -------------------------------------------------------------------------------- /galer/usage.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Allgemeines zur Bedienung 4 | 5 | 6 | 7 | 8 | CONTENTSINDEXPREVNEXT 9 |
10 |
11 | 
12 | II.2.2 How to Use GALer
13 | 
14 | The usage is easy. For each action corresponding requesters will appear
15 | which informs you what's going on and what to do.
16 | 
17 | The most requesters can be confirmed/refused by pressing the
18 | corresponding gadgets or by using the Return/ESC key.
19 | 
20 | In addition GALer has a online help. So if you want to get help on a
21 | menu item, a gadget group or a window, just move the mouse pointer
22 | over it and press the HELP key.
23 | 
24 | GALer uses several files which have different extensions like ".pld", ".jed",
25 | ".chp", ".pin", ".fus". If you want to load or save such a file GALer will
26 | choose the right extensions automatically. So you don't have to care about
27 | it. If you don't enter the postfix, GALer will add it.
28 | 
29 | 
30 | 
31 |
32 | CONTENTSINDEXPREVNEXT 33 | 34 | 35 | -------------------------------------------------------------------------------- /src/.gitignore: -------------------------------------------------------------------------------- 1 | *.o 2 | galasm 3 | -------------------------------------------------------------------------------- /src/Makefile: -------------------------------------------------------------------------------- 1 | ## Makefile 2 | 3 | PREFIX=/usr/local 4 | BINDIR=bin 5 | 6 | TARGET = galasm 7 | OBJS = galasm.o support.o jedec.o localize.o 8 | 9 | CFLAGS = -Wall -Wextra -O2 10 | 11 | ifeq ($(WIN),y) 12 | # 32 bit Windows executable: 13 | CC = i686-w64-mingw32-gcc 14 | # 64 bit Windows executable: 15 | # CC = x86_64-w64-mingw32-gcc 16 | TARGET = galasm.exe 17 | CFLAGS += -static 18 | endif 19 | 20 | 21 | default: $(TARGET) 22 | all: $(TARGET) winexe galasm.com 23 | 24 | winexe: $(OBJS) 25 | gmake WIN=y clean && gmake WIN=y 26 | 27 | $(TARGET): $(OBJS) 28 | $(CC) $(CFLAGS) -o $@ $(OBJS) 29 | 30 | # 16 bit DOS executable with OpenWatcom v2 compiler: 31 | galasm.com: galasm.c support.c jedec.c localize.c 32 | PATH=/opt/watcom/binl64 WATCOM=/opt/watcom wcl -mt -fe=$@ -cc $^ 33 | 34 | clean: 35 | -rm -f $(OBJS) 36 | -rm -f *.[oa] $(TARGET) Makefile.bak 37 | -rm -f galasm galasm.com galasm.exe 38 | 39 | cleantilde: 40 | /usr/bin/find . -regex ".+~$$" -exec /bin/rm {} \; 41 | 42 | 43 | install: $(TARGET) 44 | @if [ `id -u` != "0" ] ; then echo "must be root!"; exit 1; fi; 45 | test -d $(PREFIX)/$(BINDIR) || mkdir -p $(PREFIX)/$(BINDIR) 46 | install -m 0755 $(TARGET) $(PREFIX)/$(BINDIR) 47 | 48 | uninstall: 49 | @if [ `id -u` != "0" ] ; then echo "must be root!"; exit 1; fi; 50 | rm -f $(PREFIX)/$(BINDIR)/$(TARGET) 51 | 52 | 53 | # Do not run multiple builds at the same time, this doesn't work 54 | .NOTPARALLEL: 55 | 56 | .PHONY: all install uninstall 57 | 58 | -------------------------------------------------------------------------------- /src/localize.c: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | ** localize.h 3 | ******************************************************************************* 4 | ** 5 | ** description: 6 | ** 7 | ** Error strings. 8 | ** 9 | ******************************************************************************/ 10 | 11 | 12 | 13 | 14 | char *ErrorArray[] = 15 | { 16 | "", 17 | "Can't find file!", 18 | "Not enough free memory!", 19 | "Can't load file!", 20 | "File is empty!", 21 | "Error in JEDEC file!", 22 | "Impossible error: GAL is not empty!", 23 | "No pinnames found.", 24 | "Can't close file!", 25 | "Wrong type of GAL selected!", 26 | "Impossible error: Can't load 's:GALer.config'!", 27 | "Impossible error: Can't save 's:GALer.config'!", 28 | "Impossible error: Can't open window!", 29 | "Can't save file!", 30 | }; 31 | 32 | char *AsmErrorArray[] = 33 | { 34 | "error in source file found", 35 | "Line 1: type of GAL expected", 36 | "unexpected end of file", 37 | "pinname expected after '/'", 38 | "max. length of pinname is 8 characters", 39 | "illegal character in pin declaration", 40 | "illegal VCC/GND assignment", 41 | "pin declaration: expected VCC at VCC pin", 42 | "pin declaration: expected GND at GND pin", 43 | "pinname defined twice", 44 | "illegal use of '/'", 45 | "unknown pinname", 46 | "NC (Not Connected) is not allowed in logic equations", 47 | "unknown suffix found", 48 | "'=' expected", 49 | "this pin can't be used as output", 50 | "same pin is defined multible as output", 51 | "before using .E, the output must be defined", 52 | "GAL22V10: AR and SP is not allowed as pinname", 53 | ".E, .CLK, .ARST and .APRST is not allowed to be negated", 54 | "mode 2: pins 12, 19 can't be used as input", 55 | "mode 2: pins 15, 22 can't be used as input", 56 | "tristate control is defined twice", 57 | "GAL16V8/20V8: tri. control for reg. output is not allowed", 58 | "tristate control without previous '.T'", 59 | "use GND, VCC instead of /VCC, /GND", 60 | "mode 3: pins 1,11 are reserved for 'Clock' and '/OE'", 61 | "mode 3: pins 1,13 are reserved for 'Clock' and '/OE'", 62 | "use of VCC and GND is not allowed in equations", 63 | "only one product term allowed (no OR)", 64 | "too many product terms", 65 | "use of AR and SP is not allowed in equations", 66 | "negation of AR and SP is not allowed", 67 | "no equations found", 68 | ".CLK is not allowed when this type of GAL is used", 69 | ".ARST is not allowed when this type of GAL is used", 70 | ".APRST is not allowed when this type of GAL is used", 71 | "GAL20RA10: pin 1 can't be used in equations", 72 | "GAL20RA10: pin 13 can't be used in equations", 73 | "AR, SP: no suffix allowed", 74 | "AR or SP is defined twice", 75 | "missing clock definition (.CLK) of registered output", 76 | "before using .CLK, the output must be defined", 77 | "before using .ARST, the output must be defined", 78 | "before using .APRST the output must be defined", 79 | "several .CLK definitions for the same output found", 80 | "several .ARST definitions for the same output found", 81 | "several .APRST definitions for the same output found", 82 | "use of .CLK, .ARST, .APRST only allowed for registered outputs" 83 | }; 84 | --------------------------------------------------------------------------------