OSDN Git Service

tek対応を追加中。
[heavyosecpu/HeavyOSECPU.git] / tek.h
1 //\r
2 //  tek.h\r
3 //  HeavyOSECPU\r
4 //\r
5 //  Created by 西田 耀 on 2014/03/13.\r
6 //  Copyright (c) 2014年 CHNOSProject. All rights reserved.\r
7 //\r
8 \r
9 #ifndef HeavyOSECPU_tek_h\r
10 #define HeavyOSECPU_tek_h\r
11 \r
12 #include "stdio.h"\r
13 #include "stdlib.h"\r
14 #include "setjmp.h"\r
15 \r
16 typedef unsigned char UCHAR;\r
17 typedef unsigned int UINT32;\r
18 typedef UINT32 tek_TPRB;\r
19 \r
20 struct tek_STR_BITMODEL {\r
21         UCHAR t, m, s, dmy;\r
22         UINT32 prb0, prb1, tmsk, ntm, lt, lt0, dmy4;\r
23 };\r
24 \r
25 struct tek_STR_PRB {\r
26         struct tek_STR_PRB_PB {\r
27                 struct tek_STR_PRB_PBST {\r
28                         tek_TPRB mch, rep0l1;\r
29                 } st[12];\r
30                 tek_TPRB lenlow[2][8], lenmid[2][8];\r
31         } pb[16];\r
32         struct tek_STR_PRB_ST {\r
33                 tek_TPRB rep, repg0, repg1, repg2;\r
34         } st[12];\r
35         tek_TPRB lensel[2][2], lenhigh[2][256], pslot[4][64], algn[64];\r
36         tek_TPRB spdis[2][2+4+8+16+32], lenext[2+4+8+16+32];\r
37         tek_TPRB repg3, fchgprm[2 * 32], tbmt[16], tbmm[16], fchglt;\r
38         tek_TPRB lit[1];\r
39 };\r
40 \r
41 struct tek_STR_RNGDEC {\r
42         UCHAR *p;\r
43         UINT32 range, code, rmsk;\r
44         jmp_buf errjmp;\r
45         struct tek_STR_BITMODEL bm[32], *ptbm[16];\r
46         struct tek_STR_PRB probs;\r
47 };\r
48 \r
49 \r
50 int tek_getsize(unsigned char *p);\r
51 int tek_decomp(unsigned char *p, unsigned char *q, int size);\r
52 \r
53 #endif\r