]> git.sesse.net Git - pistorm/blob - platforms/amiga/pistorm-dev/pistorm_dev_amiga/simple_interact.c
3d3e4a56b7d61e5ae3554e6f6e732d8f475c1d7e
[pistorm] / platforms / amiga / pistorm-dev / pistorm_dev_amiga / simple_interact.c
1 // SPDX-License-Identifier: MIT
2
3 #include "../pistorm-dev-enums.h"
4 #include "pistorm_dev.h"
5
6 #include <exec/resident.h>
7 #include <exec/errors.h>
8 #include <exec/memory.h>
9 #include <exec/lists.h>
10 #include <exec/alerts.h>
11 #include <exec/tasks.h>
12 #include <exec/io.h>
13 #include <exec/execbase.h>
14
15 #include <libraries/expansion.h>
16
17 #include <devices/trackdisk.h>
18 #include <devices/timer.h>
19 #include <devices/scsidisk.h>
20
21 #include <dos/filehandler.h>
22
23 #include <proto/exec.h>
24 #include <proto/disk.h>
25 #include <proto/expansion.h>
26
27 #include <stdio.h>
28 #include <stdlib.h>
29 #include <string.h>
30
31 #define LOADLIB(a, b) if ((a = (struct a*)OpenLibrary(b,0L))==NULL) { \
32     printf("Failed to load %s.\n", b); \
33     return 1; \
34   } \
35
36 void print_usage(char *exe);
37 int get_command(char *cmd);
38
39 extern unsigned int pistorm_base_addr;
40
41 int __stdargs main (int argc, char *argv[]) {
42     if (argc < 2) {
43         print_usage(argv[0]);
44         return 1;
45     }
46     
47     int command = get_command(argv[1]);
48     if (command == -1) {
49         printf("Unknown command %s.\n", argv[1]);
50         return 1;
51     }
52
53     pistorm_base_addr = pi_find_pistorm();
54
55     if (pistorm_base_addr == 0xFFFFFFFF) {
56         printf ("Unable to find PiStorm autoconf device.\n");
57         return 1;
58     }
59     else {
60         printf ("PiStorm autoconf device found at $%.X\n", pistorm_base_addr);
61     }
62
63     unsigned int tmpvalue = 0;
64     unsigned short tmpshort = 0;
65
66     if (tmpvalue) {};
67
68     switch (command) {
69         case PI_CMD_RESET:
70             if (argc >= 3)
71                 tmpshort = (unsigned short)atoi(argv[2]);
72             pi_reset_amiga(tmpshort);
73             break;
74         case PI_CMD_SWREV:
75             printf ("PiStorm ----------------------------\n");
76             printf ("Hardware revision: %d.%d\n", (pi_get_hw_rev() >> 8), (pi_get_hw_rev() & 0xFF));
77             printf ("Software revision: %d.%d\n", (pi_get_sw_rev() >> 8), (pi_get_sw_rev() & 0xFF));
78             printf ("RTG: %s - %s\n", (pi_get_rtg_status() & 0x01) ? "Enabled" : "Disabled", (pi_get_rtg_status() & 0x02) ? "In use" : "Not in use");
79             printf ("NET: %s\n", pi_get_net_status() ? "Enabled" : "Disabled");
80             break;
81         default:
82             printf ("Unhandled command %s.\n", argv[1]);
83             return 1;
84             break;
85     }
86
87     return 0;
88 }
89
90 int get_command(char *cmd) {
91     if (strcmp(cmd, "--restart") == 0 || strcmp(cmd, "--reboot") == 0 || strcmp(cmd, "--reset") == 0) {
92         return PI_CMD_RESET;
93     }
94     if (strcmp(cmd, "--check") == 0 || strcmp(cmd, "--find") == 0 || strcmp(cmd, "--info") == 0) {
95         return PI_CMD_SWREV;
96     }
97
98     return -1;
99 }
100
101 void print_usage(char *exe) {
102     printf ("Usage: %s --[command] (arguments)\n", exe);
103     printf ("Example: %s --restart, --reboot or --reset\n", exe);
104     printf ("         Restarts the Amiga.\n");
105     printf ("         %s --check, --find or --info\n", exe);
106     printf ("         Finds the PiStorm device and prints some data.\n");
107
108     return;
109 }