aboutsummaryrefslogtreecommitdiff
path: root/src/indic8.c
blob: 33d7d314247cd314d835fca543e0320ad7077bfe (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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
/* "indicators" */

#include <atari.h>
#include "addrs.h"

extern char hz;

#define NET_TX_CHR   0x5c    /* COLOR1 up-arrow */
#define NET_RX_CHR   0x5d    /* COLOR1 down-arrow */
#define NET_ERR_CHR  0xe1    /* COLOR3 exclamation mark */
#define NET_IDLE_CHR 0       /* null (renders as a space) */

#define J_CHR        0x4a    /* COLOR1 J */
#define P_CHR        0x50    /* COLOR1 P */
#define Q_CHR        0x51    /* COLOR1 Q */
#define M_CHR        0x4d    /* COLOR1 M */
#define CHAN_CHR     0x63    /* COLOR1 # */

char *ind_net_status; /* initialized in screen.c, scr_init() */

static void ind_start_timer(void) {
	/* 3.7 sec is just what The_Doctor__ ordered! */
	OS.cdtmv5 = (hz / 10) * 37;
}

void ind_net_rx(void) {
	*ind_net_status = NET_RX_CHR;
}

void ind_net_tx(void) {
	*ind_net_status = NET_TX_CHR;
}

void ind_net_down(void) {
	*ind_net_status = NET_ERR_CHR;
}

void ind_net_idle(void) {
	*ind_net_status = NET_IDLE_CHR;
}

static void ind_act(char c) {
	ind_net_status[1] = c;
	ind_start_timer();
}

void ind_act_pm(void) {
	ind_act(M_CHR);
}

void ind_act_chantext(void) {
	ind_act(CHAN_CHR);
}

void ind_act_join(void) {
	ind_act(J_CHR);
}

void ind_act_part(void) {
	ind_act(P_CHR);
}

void ind_act_quit(void) {
	ind_act(Q_CHR);
}

void ind_check_timer(void) {
	if(!OS.cdtmv5)
		ind_net_status[1] = 0;
}