home *** CD-ROM | disk | FTP | other *** search
/ Meeting Pearls 1 / Meeting Pearls Vol 1 (1994).iso / installed_progs / hard / galer / source / src.lha / Source / GALer / GALer.h < prev    next >
Encoding:
C/C++ Source or Header  |  1993-11-10  |  11.5 KB  |  449 lines

  1.  
  2. #ifndef     EXEC_TYPES_H
  3. #include <exec/types.h>
  4. #endif
  5.  
  6. #ifndef     __STDIO_H
  7. #include <stdio.h>
  8. #endif
  9.  
  10.  
  11.  
  12. #define        GAL16V8        1        /*GAL-Typ*/
  13. #define        GAL20V8        2
  14. #define        GAL22V10    3
  15. #define        GAL20RA10    4
  16. #define        UNKNOWN        5
  17. #define        NOT_SPECIFIED    6
  18.  
  19.  
  20. #define        HW_GALER_1_0    1        /* Hardware-Versionen */
  21. #define        HW_GALER_1_2    2
  22. #define        HW_GALER_1_3    3
  23.  
  24.  
  25. #define        EDITOR_STR_SIZE 25        /* string size for editor */
  26.  
  27. #define        IC1        3        /*IC-Nummern*/
  28. #define        IC2        -1        /*IC2 nur für Elektor- und*/
  29. #define        IC3        0        /*Maxon-GAL-Brenner*/
  30. #define        IC4        1
  31. #define        IC5        2
  32. #define        IC6a        0
  33. #define        IC6c        4
  34. #define        IC7        1
  35. #define        IC10        10
  36.  
  37.  
  38. #define        ON        1        /* LED-Status */
  39. #define        OFF        0
  40.  
  41. #define        YES        1
  42. #define        NO        0
  43.  
  44. #define        PROG        1        /* GAL-Modus */
  45. #define        VERIFY        0
  46.  
  47. #define        LOW        0
  48. #define        HIGH        1
  49. #define        INPUT_PIN    0
  50. #define        OUTPUT_PIN    1
  51.  
  52. #define        CONT_REQ    0        /* Requester-Typen */
  53. #define        INFO_REQ    1
  54. #define        ERR_REQ        2
  55. #define        GALTYPE_REQ    3
  56. #define        ERASE_REQ    5
  57.  
  58. #define        LOAD        0        /* Filerequester-Typen */
  59. #define        SAVE        1
  60.  
  61.                         /*Dauer des STR-Impulses in*/
  62. #define        _80MS        80000L        /*Mikrosekunden für pro-*/
  63. #define        _10MS        10000L        /*grammieren, löschen*/
  64. #define        _40MS        40000L
  65. #define        _50MS        50000L
  66. #define        _100MS        100000L
  67. #define        VERIFY_TIME    5L        /*lesen*/
  68.  
  69.  
  70.                         /*Spannung*/
  71. #define        V12_00        4        /*12.00 Volt*/
  72. #define        V14_00        3        /*14.00 Volt*/
  73. #define        V14_50        2        /*14.50 Volt*/
  74. #define        V15_75        1        /*15.75 Volt*/
  75. #define        V16_50        0        /*16.50 Volt*/
  76.  
  77.  
  78.  
  79. #define        COPYGAL        1        /*für ProgJedecToGAL-Routine*/
  80. #define        PROGGAL        2
  81.  
  82.                         /*Voreinstellungen*/
  83. struct    Configuration { BYTE GALType;        /*GALType*/
  84.             BYTE GALTypeReq;    /*TRUE=Requester für GAL-Typ*/
  85.             BYTE GenJedec;        /*Jedec-File erstellen?*/
  86.             BYTE GenFuse;        /*Fuse-File erstellen?*/
  87.             BYTE GenChip;        /*Chip-File erstellen?*/
  88.             BYTE GenPin;        /*Pin-File erstellen?*/
  89.             BYTE AutoSave;        /*automatisch sichern?*/
  90.             BYTE AutoGAL;        /*autom. GAL eistellen?*/
  91.             BYTE ProgEmptyTest;    /*Leertest vor Prog.GAL*/
  92.             BYTE ProgVerify;    /*Verify nach Prog.GAL*/
  93.             BYTE CopyEmptyTest;    /*Leertest vor Copy-GAL*/
  94.             BYTE CopyVerify;    /*Verify nach Copy-GAL*/
  95.             BYTE EraseEmptyTest;    /*Leertest nach GAL-Löschen*/
  96.             BYTE JedecSecBit;    /*Security-Bit des Jedec*/
  97.             BYTE JedecFuseChk;    /*Fuse-Checksumme des Jedec*/
  98.             BYTE JedecFileChk;    /*File-Checksumme des Jedec*/
  99.             BYTE HardwareVersion;   /*Hardware-Version*/
  100.             BYTE EdWBToFront;    /*WB to front*/
  101.             char EditorStr[EDITOR_STR_SIZE];
  102.               };
  103.  
  104.  
  105.  
  106.  
  107. struct    JedecStruct { BYTE GALLogic[5808];    /*max. Größe der Fuse-Mat.*/
  108.               BYTE GALXOR  [10];    /*XOR-Bits*/
  109.               BYTE GALSig  [64];    /*Signatur*/
  110.               BYTE GALAC1  [8];        /*AC1-Bits*/
  111.               BYTE GALPT   [64];    /*Produkttermfreigabe*/
  112.               BYTE GALSYN;        /*SYN-Bit*/
  113.               BYTE GALAC0;        /*AC0-Bit*/
  114.               BYTE GALS1   [10];    /*S1 bits für 22V10 */
  115.             };
  116.             
  117.  
  118.                     /* GAL16V8 */
  119. #define    LOGIC16        0        /* Positionen der Bits in der*/
  120. #define    XOR16        2048        /* Jedec-Datei*/
  121. #define SIG16        2056
  122. #define AC116        2120
  123. #define PT16        2128
  124. #define SYN16        2192
  125. #define AC016        2193
  126. #define NUMOFFUSES16    2194
  127.                     /* GAL20V8 */
  128. #define    LOGIC20        0        /* Positionen der Bits in der*/
  129. #define    XOR20        2560        /* Jedec-Datei*/
  130. #define SIG20        2568
  131. #define AC120        2632
  132. #define PT20        2640
  133. #define SYN20        2704
  134. #define AC020        2705
  135. #define NUMOFFUSES20    2706
  136.  
  137.                     /* GAL22V10 */
  138. #define NUMOFFUSES22V10 5892        /* Positionen der Bits in der */
  139. #define XOR22V10    5808        /* Jedec-Datei */
  140. #define SYN22V10    5809
  141. #define SIG22V10    5828
  142.  
  143.                     /* GAL20RA10 */
  144. #define NUMOFFUSES20RA10 3274        /* Positionen der Bits in der */
  145. #define XOR20RA10     3200        /* Jedec-Datei */
  146. #define SIG20RA10     3210
  147.  
  148.  
  149. #define LOGIC16_SIZE    2048        /*Anzahl der Bits für XOR usw.*/
  150. #define LOGIC20_SIZE    2560
  151. #define LOGIC22V10_SIZE 5808
  152. #define LOGIC20RA10_SIZE 3200
  153. #define ROW_SIZE_16V8    64
  154. #define ROW_SIZE_20V8    64
  155. #define ROW_SIZE_22V10    132
  156. #define ROW_SIZE_20RA10    80
  157. #define XOR_SIZE    8
  158. #define SIG_SIZE    64
  159. #define AC1_SIZE    8
  160. #define PT_SIZE        64
  161. #define SYN_SIZE    1
  162. #define AC0_SIZE    1
  163. #define ACW_SIZE    82        /*Architektur-Kontroll-Wort*/
  164.  
  165. #define    MAX_FUSE_ADR16        31    /*Adressen der GALs (für Fan-Post)*/
  166. #define    SIG_ADR16        32
  167. #define    MAX_FUSE_ADR20        39
  168. #define    SIG_ADR20        40
  169. #define MAX_FUSE_ADR22V10    43
  170. #define SIG_ADR22V10        44
  171. #define MAX_FUSE_ADR20RA10    39
  172. #define SIG_ADR20RA10        40
  173. #define ACW_ADR            60
  174. #define SECURITY_ADR        61
  175. #define ERASE_ADR        63
  176.  
  177.  
  178.  
  179.  
  180.  
  181. /*GAL-Assembler*/
  182.  
  183.  
  184.                     /*Konstanten für den Assembler*/
  185. #define    ASSEMBLER    0        /*ganzes File assemblieren->Jedec*/
  186. #define OPTIMIZER    1        /*nur bis zu den Gleichungen assem-*/
  187.                     /*blieren (Optimizer)*/
  188.  
  189. struct    Pin        { BYTE p_Neg;        /*Pin negiert?*/
  190.               BYTE p_Pin; };    /*Pinnummer*/
  191.  
  192.  
  193. struct    GAL_OLMC    { BYTE Active;        /*Ausgang negiert?*/
  194.                 BYTE PinType;        /*Eingang, komb. Ausgang...*/
  195.                 BYTE TriCon;        /*Tri.-Kontrolle angegeben?*/
  196.               BYTE Clock;        /*Clock-Gleichung angegeben?*/
  197.               BYTE ARST;        /*ARST-Gleichung angegeben?*/
  198.               BYTE APRST;        /*APRST-Gleichung angegeben?*/
  199.               BYTE FeedBack; };    /*Ausgang mit Rückkopplung?*/
  200.  
  201.  
  202. #define ACTIVE_LOW    0            /*Pin High-aktiv*/
  203. #define ACTIVE_HIGH    1            /*Pin Low-aktiv*/
  204.                     /*PinType: */
  205. #define NOTUSED        0            /*Pin (noch) nicht verwendet*/
  206. #define NOTCON        0            /*Pin nicht verwendet*/
  207. #define INPUT        2            /*Eingang*/
  208. #define COMOUT        3            /*kombinatorischer Ausgang*/
  209. #define TRIOUT        4            /*Tristate-Ausgang*/
  210. #define REGOUT        5            /*Register-Ausgang*/
  211. #define COM_TRI_OUT    6            /*entweder Tri. oder komb. Ausgang*/
  212.                     /*TriCon:*/
  213. #define NO_TRICON    0            /*kein Tri.-Kontrolle angegeben*/
  214. #define TRICON        1            /*Tri.-Kontrolle angegeben*/
  215. #define TRI_VCC        2            /*ständige Tristate-Freigabe*/
  216. #define TRI_GND        3            /*ständig hochohmig*/
  217. #define TRI_PRO        4            /*Tristate-Kontrolle über Produktterm*/
  218.  
  219.  
  220. #define    NC_PIN        30
  221.  
  222. #define MODE1        1        /*Betriebsmodi (SYN,AC0)*/
  223. #define MODE2        2
  224. #define MODE3        3
  225.  
  226.  
  227. #define    MAX_SUFFIX_SIZE    6        /* max. string length of a legal */
  228.                     /* suffix */
  229.  
  230.  
  231.  
  232.                     /*Konstanten für den Optimizer*/
  233.  
  234. #define    NEGATION    0x80        /*Bit 7 = 1 wenn '/' vor Pinnamen*/
  235. #define EQUASKIP    0xFE        /*wird nicht beachtet*/
  236. #define    EQUAEND        0xFF        /*Ende einer Gleichung*/
  237. #define EQUASEND    0x00        /*Ende aller Gleichungen, bis zum*/
  238.                     /*DESCRIPTION*/
  239.  
  240. #define    ENTRY_SIZE    256        /*Anzahl der Einträge pro Puffer*/
  241.  
  242. #define SIZE_OF_EQUASTRING 80
  243.                     /* Aus der Struktur Buffer wird     */
  244.                     /* eine verkettete Liste aufgebaut, */
  245.                     /* in deren "Entries" entsprechende */
  246.                     /* Daten abgelegt werden */
  247. struct    Buffer    { struct Buffer *Next;
  248.           struct Buffer *Prev;
  249.           UBYTE  Entries[ENTRY_SIZE]; /*hier werden z.B. die codier-*/
  250.         };                  /*ten Gleichungen abgelegt*/
  251.  
  252.                             
  253.                 /* diese Struktur wird für Parameter  */
  254.                 /* und für Ergebnisse von Funktionen  */
  255.                 /* benötigt; sie enthält alle Infor-  */
  256.                 /* mationen über den aktuellen Puffer */
  257.                 /* (siehe Equations-Struktur */
  258. struct    ActBuffer  { struct Buffer *ThisBuff;  /*Zeiger auf aktuellen Puffer*/
  259.              UBYTE     *Entry;       /*Zeiger in das Entries-Feld*/
  260.              UBYTE     *BuffEnd;     /*Zeiger auf Pufferende*/
  261.            };
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.  
  269.  
  270.  
  271. /* Port.asm */
  272. void    InitGALer(void);
  273. void    EnableOutput(void);
  274. void    DisableOutput(void);
  275. void    InitParPort(void);
  276. void    RestoreParPort(void);
  277. void    WriteByte(int, int);
  278. int    ReadByte(int);
  279. void    VeditOn(void);
  280. void    VeditOff(void);
  281. void    LED(int);
  282. void    EnableVcc(void);
  283. void    DisableVcc(void);
  284. void    EnableVEdit(void);
  285. void    DisableVEdit(void);
  286. void    SetRow(int);
  287. void    SDIn(int);
  288. int    SDOut(void);
  289. void    Clock(void);
  290. void    STRImpuls(long);
  291. void    EditMode(int);
  292. void    ExitEditMode(void);
  293. void    SetPV(int);
  294. void    SetVolt(int);
  295. void    SetGAL(int);
  296. void    SetPESSAVE(int);
  297. void    SetERASE(int);
  298. void    SetCLR(int);
  299. void    SetBE(int);
  300. void    SetARCH(int);
  301. void    SetANDBE(int);
  302.  
  303.  
  304. /* GALer.c */
  305. void main(void);
  306. void ExecuteMenu(int menu, int item, int subitem);
  307. void PAL_NTSC(void);
  308. int  GetParPort(void);
  309. void FreeParPort(void);
  310. int  GetTimer(void);
  311. void FreeTimer(void);
  312. void OpenStuff(void);
  313. void CloseStuff(void);
  314. void WaitForTimer(ULONG micro);
  315. int  InitMyGadgets(void);
  316.  
  317.  
  318. /* GAL.c */
  319. void ProgramGAL(void);
  320. void CopyGAL(void);
  321. int  CheckGAL(void);
  322. void TestSecurity(void);
  323. void Compare(void);
  324. void PrintACW(void);
  325. void PrintSignature(void);
  326. int  ProgJedecToGAL(int mode);
  327. void ReadGALToJedec(void);
  328. void SetSecurity(int flag);
  329. void Loeschen(void);
  330. void EraseIt(void);
  331. void Leertest(void);
  332.  
  333.  
  334. /*GALasm .c */
  335. int  AssembleInputFile(int OpMode);
  336. void SetAND(int row, int pinnum, int negation);
  337. void IsPinName(UBYTE *pinnames, int numofpins);
  338. int  GetNextChar(void);
  339. int  GetNextLine(void);
  340. void AsmError(int errornum, int pinnum);
  341. void WriteChipFile(void);
  342. void WritePinFile(void);
  343. void WriteFuseFile(void);
  344. void WriteSpaces(FILE *fp, int numof);
  345. void WriteRow(FILE *fp, int row);
  346. int  IsOR(char);
  347. int  IsAND(char);
  348. int  IsNEG(char);
  349. void Is_AR_SP(UBYTE *ptr);
  350.  
  351.  
  352. /* Optimizer.c */
  353. int Optimizer(void);
  354. struct ActBuffer GetProdTermStart(struct ActBuffer pos);
  355. void KillProdTerm(struct ActBuffer term);
  356. int  OptimizeEqua(struct ActBuffer buff);
  357. int  Resolvente(struct ActBuffer optstart, struct ActBuffer optend, struct ActBuffer alteSchicht);
  358. int  NumOfVar(struct ActBuffer term);
  359. int  AddResolvente(struct ActBuffer pos1, struct ActBuffer pos2, struct ActBuffer equastart, struct ActBuffer *equaend);
  360. int  SearchVar(struct ActBuffer *, struct ActBuffer, UBYTE);
  361. int  WriteNewSource(struct ActBuffer buff, UBYTE *equastart, UBYTE *equaend);
  362. int  CopyEqua(struct ActBuffer from_buff, struct ActBuffer to_buff);
  363. int  PrintEqua(struct ActBuffer buff, struct ActBuffer *filebuff);
  364. int  GetNext(struct ActBuffer *buff);
  365. int  GetNextEqua(struct ActBuffer *buff);
  366. void PrintOptText(UBYTE *txt);
  367. void  ScrollRequester(void);
  368. int  TranslateEqua(struct ActBuffer *buff);
  369.  
  370.  
  371. /* Pruefer.c */
  372. void Pruefer(struct Gadget *gad, USHORT gadID);
  373. void SetLevel(USHORT gadID, int level);
  374. void CheckOutput(void);
  375. void TogglePruefer(void);
  376. void DrawGAL(int type);
  377. void DrawLeftPin(long x, long y);
  378. void DrawRightPin(long x, long y);
  379. void PrintPinNames(void);
  380. void ClearPinNames(void);
  381.  
  382.  
  383. /* GAL2.c */
  384. UBYTE GetByte(UBYTE *ptr);
  385. int ReadGALParameter(int checkflag);
  386. void GALInfo(void);
  387. int GALAType(void);
  388.  
  389.  
  390. /* Sub.c */
  391. void Schreibverhalten(void);
  392. void JedecRequester(void);
  393. void About(void);
  394. int  mystrcmp(char *cptr1, char *cptr2);
  395. int  MyFileReq(char *headtxt, char *showtxt, int showreq, int mode);
  396. int  MyRequest(int mode, UBYTE *text);
  397. int  AsmRequester(void);
  398. long FileSize(UBYTE *filename);
  399. int  ReadFile(UBYTE *filename, LONG filesize, UBYTE *filebuff);
  400. void ErrorReq(int errornum);
  401. void PrintText(UBYTE *text, int newline);
  402. void PrintErrorLine(int line);
  403. void LoadConfig(void);
  404. void SaveConfig(void);
  405. void SetGALType(int galtype);
  406. int  AddByte(struct ActBuffer *buff, UBYTE code);
  407. int  AddString(struct ActBuffer *buff, UBYTE *strnptr);
  408. void IncPointer(struct ActBuffer *buff);
  409. void DecPointer(struct ActBuffer *buff);
  410. void FreeBuffer(struct Buffer *buff);
  411. void SelectEditor(void);
  412. void CallEditor(void);
  413.  
  414.  
  415. /* Reasm.c */
  416. int  CheckPinNames(void);
  417. int  PinNameRequester(int galtype);
  418. int  RowActive(int row, int galtype);
  419. int  OLMCOutput(int olmc, int mode);
  420. int  MakeEquation(struct ActBuffer *buff, int olmc, int colsize, int mode, int rowoffset, int numofrows);
  421. int  Reasm(struct ActBuffer buff);
  422. void Reassembler(void);
  423. void ReasmError(int errornum, int pinnum);
  424. UBYTE *PinNamePtr(int pinnum, struct Gadget *gadget);
  425.  
  426.  
  427.  
  428. /* Jedec.c */
  429. void PutJedec(void);
  430. int  FileChecksum(struct ActBuffer buff);
  431. int  FuseChecksum(int galtype);
  432. int  MakeJedecBuff(struct ActBuffer buff, int galtype);
  433. void WriteJedecFile(int galtype);
  434. int  SearchNextChar(void);
  435. int  SearchNextAsterix(void);
  436. int  GetJedec(UBYTE *jedecfile);
  437. void JedecError(int errornum, int flag);
  438.  
  439.  
  440. /* Localize.c */
  441. void LocalizeText(void);
  442.  
  443.  
  444. /* Help.c */
  445. void HelpOnMainMenu(UWORD menuNumber);
  446. void HelpOnCheckerMenu(UWORD menuNumber);
  447. void Help(void);
  448.  
  449.