blob: 2f249397479162dffc1e35a393ab4f294e65bec6 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
#ifndef ZEBRA_H
#define ZEBRA_H
#include <stdio.h> /* for FILE */
#include <stdlib.h> /* for size_t */
#include <stdint.h> /* for uint8_t, etc. */
extern char zebra_err[256];
#define ZEBRA_SIG0 0x0123cdefUL
#define ZEBRA_SIG1 0x80708070UL
#define ZEBRA_SIG2 0x4321abcdUL
#define ZEBRA_SIG3 0x80618061UL
#define ZEBRA_BLOCK_SIZE_MASK 0x00ffffffUL
#define ZEBRA_EMERGENCY_STOP 0x80000000UL
#define ZEBRA_END_OF_RUN 0x20000000UL
#define ZEBRA_START_OF_RUN 0x40000000UL
typedef struct bank {
uint32_t next;
uint32_t up;
uint32_t orig;
uint32_t number;
uint32_t name;
uint32_t num_links;
uint32_t num_structural_links;
uint32_t num_data_words;
uint32_t status;
uint32_t *data;
} bank;
typedef struct zebraFile {
FILE *f;
size_t offset;
size_t lr_size;
uint8_t *buf;
size_t buf_size;
} zebraFile;
zebraFile *zebra_open(const char *filename);
int read_next_physical_record(zebraFile *z);
int get_bytes(zebraFile *z, size_t size);
int read_next_logical_record(zebraFile *z);
int next_bank(zebraFile *z, bank *b);
void zebra_close(zebraFile *z);
#endif
|