]> git.sur5r.net Git - rgb2r-2017/blob - reltest.c
Split out relfile routines
[rgb2r-2017] / reltest.c
1 #include <conio.h>
2 #include <cbm.h>
3 #include <errno.h>
4 #include <stdio.h>
5 #include <stdint.h>
6 #include <stdlib.h>
7 #include <string.h>
8
9 #include "relfile.h"
10
11 void c128_perror(uint8_t c, char *msg) {
12   cprintf("\r\nError (Code %d) while: %s\r\nOS Error = %d\r\n", c, msg,
13           _oserror);
14 }
15
16 int main(void)
17 {
18     char bla[25];
19     struct relfile rf;
20     uint8_t c=0;
21     uint8_t start_sec, start_tenth;
22     uint8_t end_sec, end_tenth;
23     uint8_t i,j;
24
25     videomode(VIDEOMODE_80x25);
26     fast();
27
28     __asm__("jsr initsystime");
29
30     rf.fd=2;
31     rf.devnr=8;
32     rf.sa=3;
33     rf.recsize=25;
34
35     if(relfile_open(&rf, "reldata"))
36     {
37         c128_perror(c, "relfile_open");
38         return 1;
39     }
40
41     start_tenth = CIA1.tod_10;
42     start_sec = CIA1.tod_sec;
43
44     for(i=1;i<=25;i++)
45     {
46         //cgetc();
47         /*
48         cprintf("P%d\r",i);
49         if(relfile_pos(&rf, i, 0))
50         {
51             c128_perror(c, "relfile_pos1");
52             return 2;
53         }
54         */
55         if(relfile_is_split_record(&rf, i))
56         {
57             cprintf("\r\nSPLIT: %d!\r\n",i);
58         }
59         /*
60         if(relfile_pos(&rf, i, 0))
61         {
62             c128_perror(c, "relfile_pos2");
63             return 2;
64         }
65         cprintf("C%d\r",i);
66         if(relfile_clear(&rf))
67         {
68             c128_perror(c, "relfile_clear");
69             return 2;
70         }
71         */
72         cprintf("W%d: ", i);
73         for(j=0;j<rf.recsize;j++)
74         {
75             bla[j]=(i-1==j) ? 0xFF : 0xAA;
76             cprintf("%02X",bla[j]);
77         }
78         cprintf("\r\n");
79
80         if(relfile_pos(&rf, i, 0))
81         {
82             c128_perror(c, "relfile_pos3");
83             return 2;
84         }
85         if(relfile_write(&rf, bla))
86         {
87             c128_perror(c, "relfile_write");
88             return 2;
89         }
90     }
91
92     relfile_close(&rf);
93     end_tenth = CIA1.tod_10;
94     end_sec = CIA1.tod_sec;
95     cprintf("\r\n%d.%d -> %d.%d\r\n",start_sec,start_tenth,end_sec,end_tenth);
96
97
98     if(relfile_open(&rf, "reldata"))
99     {
100         c128_perror(0, "relfile_open");
101         return 3;
102     }
103
104     start_tenth = CIA1.tod_10;
105     start_sec = CIA1.tod_sec;
106
107     for(i=1;i<=25;i++)
108     {
109         cprintf("P%d\r",i);
110         if(relfile_pos(&rf, i, 0))
111         {
112             c128_perror(0, "relfile_pos");
113             return 1;
114         }
115         if(relfile_is_split_record(&rf, i))
116         {
117             cprintf("\r\nSPLIT!\r\n");
118         }
119         cprintf("R%d\r",i);
120         if(relfile_read(&rf, bla))
121         {
122             c128_perror(0, "relfile_read");
123             return 1;
124         }
125
126         cprintf("?%d\r",i);
127         for(j=0;j<rf.recsize;j++)
128         {
129             uint8_t exp=(i-1==j) ? 0xFF : 0xAA;
130             if(bla[j] != exp)
131             {
132                 cprintf("\r\nMISMATCH(%2d): IS: %2X EXP: %2X\r\n",j,bla[j],exp);
133                 cgetc();
134             }
135         }
136     }
137
138     relfile_close(&rf);
139     end_tenth = CIA1.tod_10;
140     end_sec = CIA1.tod_sec;
141     cprintf("\r\n%d.%d -> %d.%d\r\n",start_sec,start_tenth,end_sec,end_tenth);
142
143     return 0;
144 }
145