From 427a67c554418f5c0b96ba9c71c746529a84bef5 Mon Sep 17 00:00:00 2001 From: Andrew Hutchings Date: Sun, 25 Apr 2021 08:05:31 +0100 Subject: [PATCH] Initial alpha of the PiStorm GUI tool It can only change the config file and enable/disable RTG right now, but it a framework for adding more things in the future. Some of the CLI tool code was slightly modified for VBCC compatibility, most importantly, some macros that didn't work were expanded and some includes were changed. --- .../pistorm-dev/pistorm_dev_amiga/Makefile | 12 + .../pistorm-dev/pistorm_dev_amiga/PiSimple | Bin 17152 -> 14448 bytes .../pistorm-dev/pistorm_dev_amiga/PiStorm | Bin 0 -> 12224 bytes .../pistorm_dev_amiga/PiStorm.info | Bin 0 -> 338 bytes .../pistorm-dev/pistorm_dev_amiga/README.md | 25 ++ .../pistorm_dev_amiga/gui_interact.c | 401 ++++++++++++++++++ .../pistorm_dev_amiga/pistorm_dev.c | 60 ++- .../pistorm_dev_amiga/pistorm_dev.h | 6 +- .../pistorm_dev_amiga/simple_interact.c | 3 +- 9 files changed, 488 insertions(+), 19 deletions(-) create mode 100644 platforms/amiga/pistorm-dev/pistorm_dev_amiga/Makefile mode change 100644 => 100755 platforms/amiga/pistorm-dev/pistorm_dev_amiga/PiSimple create mode 100755 platforms/amiga/pistorm-dev/pistorm_dev_amiga/PiStorm create mode 100644 platforms/amiga/pistorm-dev/pistorm_dev_amiga/PiStorm.info create mode 100644 platforms/amiga/pistorm-dev/pistorm_dev_amiga/README.md create mode 100644 platforms/amiga/pistorm-dev/pistorm_dev_amiga/gui_interact.c diff --git a/platforms/amiga/pistorm-dev/pistorm_dev_amiga/Makefile b/platforms/amiga/pistorm-dev/pistorm_dev_amiga/Makefile new file mode 100644 index 0000000..ae0465a --- /dev/null +++ b/platforms/amiga/pistorm-dev/pistorm_dev_amiga/Makefile @@ -0,0 +1,12 @@ +CC=vc +kick13 +CFLAGS=-c99 -DNDEBUG -lamiga -lauto + +all: PiSimple PiStorm + +PiSimple: simple_interact.c pistorm_dev.c + $(CC) $(CFLAGS) $^ -o PiSimple + +PiStorm: gui_interact.c pistorm_dev.c + $(CC) $(CFLAGS) $^ -o PiStorm + + diff --git a/platforms/amiga/pistorm-dev/pistorm_dev_amiga/PiSimple b/platforms/amiga/pistorm-dev/pistorm_dev_amiga/PiSimple old mode 100644 new mode 100755 index 9cc89dcc1e536c322b1a370f8b784e06700413b4..3bb315576989aedb2b82a7fcdea3038f7c029f3a GIT binary patch literal 14448 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 mNpwTc^Y&wm45IEkqKH|S*Wp*OE^N(xB) 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 diff --git a/platforms/amiga/pistorm-dev/pistorm_dev_amiga/PiStorm b/platforms/amiga/pistorm-dev/pistorm_dev_amiga/PiStorm new file mode 100755 index 0000000000000000000000000000000000000000..a2de33b1374038378c68e70805261625b7f217d4 GIT binary patch literal 12224 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 literal 0 HcmV?d00001 diff --git a/platforms/amiga/pistorm-dev/pistorm_dev_amiga/PiStorm.info b/platforms/amiga/pistorm-dev/pistorm_dev_amiga/PiStorm.info new file mode 100644 index 0000000000000000000000000000000000000000..9c216f2c7ba7ee3c36a100c58c60fc6b605b079b GIT binary patch literal 338 zcmZXNJr2S!427SYmWiQ5yGL+=N-S(af+NH`BZokuq8G~@P-l=>H~=GRanfJJlk&xW zvY($R2!je_h@~g2?ytf8`ALm!DV2Yd(ysI=5t8?5n(c3NMo)vbfzlPoDSZaEO3VHt zkOEPOPoKTMB2sHZ +#include +#include +#include +#include +#include +#include + +#include "pistorm_dev.h" +#include "../pistorm-dev-enums.h" + +#include +#include + +extern unsigned int pistorm_base_addr; + +#define VERSION "v0.1" + +#define button1w 54 +#define button1h 20 + +#define button2w 87 +#define button2h 20 + +#define button3w 100 +#define button3h 20 + +#define tbox1w 130 +#define tbox1h 18 + +SHORT SharedBordersPairs0[] = +{ + 0, 0, 0, button1h - 1, 1, button1h - 2, 1, 0, button1w - 2, 0 +}; +SHORT SharedBordersPairs1[] = +{ + 1, button1h - 1, button1w - 2, button1h - 1, button1w - 2, 1, button1w - 1, 0, button1w - 1, button1h - 1 +}; + +SHORT SharedBordersPairs2[] = +{ + 0, 0, 0, button3h - 1, 1, button3h - 2, 1, 0, button3w - 2, 0 +}; +SHORT SharedBordersPairs3[] = +{ + 1, button3h - 1, button3w - 2, button3h - 1, button3w - 2, 1, button3w - 1, 0, button3w - 1, button3h - 1 +}; + +SHORT SharedBordersPairs4[] = +{ + 0, 0, 0, button2h - 1, 1, button2h - 2, 1, 0, button2w - 2, 0 +}; +SHORT SharedBordersPairs5[] = +{ + 1, button2h - 1, button2w - 2, button2h - 1, button2w - 2, 1, button2w - 1, 0, button2w - 1, button2h - 1 +}; + +SHORT SharedBordersPairs6[] = +{ + -2, -1, -2, tbox1h - 1, -1, tbox1h - 2, -1, -1, tbox1w - 2, -1 +}; + +SHORT SharedBordersPairs7[] = +{ + -1, tbox1h - 1, tbox1w - 2, tbox1h - 1, tbox1w - 2, 0, tbox1w - 1, -1, tbox1w - 1, tbox1h - 1 +}; + +struct Border SharedBorders[] = +{ + 0, 0, 2, 0, JAM2, 5, (SHORT *) &SharedBordersPairs0[0], &SharedBorders[1], // Button 1 + 0, 0, 1, 0, JAM2, 5, (SHORT *) &SharedBordersPairs1[0], NULL, + 0, 0, 2, 0, JAM2, 5, (SHORT *) &SharedBordersPairs2[0], &SharedBorders[3], // Button 3 + 0, 0, 1, 0, JAM2, 5, (SHORT *) &SharedBordersPairs3[0], NULL, + 0, 0, 2, 0, JAM2, 5, (SHORT *) &SharedBordersPairs4[0], &SharedBorders[5], // Button 2 + 0, 0, 1, 0, JAM2, 5, (SHORT *) &SharedBordersPairs5[0], NULL, + 0, 0, 1, 0, JAM2, 5, (SHORT *) &SharedBordersPairs6[0], &SharedBorders[7], // TBox + 0, 0, 2, 0, JAM2, 5, (SHORT *) &SharedBordersPairs7[0], NULL, +}; + +struct Border SharedBordersInvert[] = +{ + 0, 0, 1, 0, JAM2, 5, (SHORT *) &SharedBordersPairs0[0], &SharedBordersInvert[1], // Button 1 + 0, 0, 2, 0, JAM2, 5, (SHORT *) &SharedBordersPairs1[0], NULL, + 0, 0, 1, 0, JAM2, 5, (SHORT *) &SharedBordersPairs2[0], &SharedBordersInvert[3], // Button 3 + 0, 0, 2, 0, JAM2, 5, (SHORT *) &SharedBordersPairs3[0], NULL, + 0, 0, 1, 0, JAM2, 5, (SHORT *) &SharedBordersPairs4[0], &SharedBordersInvert[5], // Button 2 + 0, 0, 2, 0, JAM2, 5, (SHORT *) &SharedBordersPairs5[0], NULL, +}; + +struct IntuiText ConfigDefault_text = +{ + 1, 0, JAM2, 2, 6, NULL, (UBYTE *)"Load Default", NULL +}; + +#define GADCONFIGDEFAULT 6 + +struct Gadget ConfigDefault = +{ + NULL, 304, 39, button3w, button3h, + GADGHIMAGE, + RELVERIFY, + BOOLGADGET, + (APTR) &SharedBorders[2], (APTR) &SharedBordersInvert[2], + &ConfigDefault_text, 0, NULL, GADCONFIGDEFAULT, NULL +}; + +struct IntuiText ConfigCommit_text = +{ + 1, 0, JAM2, 2, 6, NULL, (UBYTE *)"Commit", NULL +}; + +#define GADCONFIGCOMMIT 5 + +struct Gadget ConfigCommit = +{ + &ConfigDefault, 244, 39, button1w, button1h, + GADGHIMAGE, + RELVERIFY, + BOOLGADGET, + (APTR) &SharedBorders[0], (APTR) &SharedBordersInvert[0], + &ConfigCommit_text, 0, NULL, GADCONFIGCOMMIT, NULL +}; + + +UBYTE ConfigFileValue_buf[255]; + +struct StringInfo ConfigFileValue = +{ + ConfigFileValue_buf, NULL, 0, 255, 0, 0, 0, 0, 4, 4, NULL, 0, NULL +}; + +struct IntuiText ConfigFile_text = +{ + 1, 0, JAM2, -98, 4, NULL, "Config file:", NULL +}; + +#define GADCONFIGFILE 4 + +struct Gadget ConfigFile = +{ + &ConfigCommit, 108, 41, tbox1w, tbox1h, + GADGHIMAGE, + 0, + STRGADGET, + (APTR) &SharedBorders[6], NULL, + &ConfigFile_text, 0, (APTR)&ConfigFileValue, GADCONFIGFILE, NULL +}; + +UBYTE RTGStatus_buf[64] = "RTG status"; + +struct IntuiText RTGStatus_text = +{ + 1, 0, JAM2, 4, 4, NULL, (UBYTE *)RTGStatus_buf, NULL +}; + +#define GADRTGSTATUS 3 + +struct Gadget RTGStatus = +{ + &ConfigFile, 14, 15, tbox1w, tbox1h, + GADGHIMAGE, + 0, + BOOLGADGET, + (APTR) &SharedBorders[6], NULL, + &RTGStatus_text, 0, NULL, GADRTGSTATUS, NULL +}; + +UBYTE RTG_buf[64] = "RTG Enable"; + +struct IntuiText RTG_text = +{ + 1, 0, JAM2, 8, 6, NULL, (UBYTE *)RTG_buf, NULL +}; + +#define GADRTGBUTTON 2 + +struct Gadget RTGButton = +{ + &RTGStatus, 150, 13, button3w, button3h, + GADGHIMAGE, + RELVERIFY, + BOOLGADGET, + (APTR) &SharedBorders[2], (APTR) &SharedBordersInvert[2], + &RTG_text, 0, NULL, GADRTGBUTTON, NULL +}; + +struct IntuiText AboutButton_text = +{ + 1, 0, JAM2, 8, 6, NULL, (UBYTE *)"About", NULL +}; + +#define GADABOUT 1 + +struct Gadget AboutButton = +{ + &RTGButton, 356, 170, button1w, button1h, + GADGHIMAGE, + RELVERIFY, + BOOLGADGET, + (APTR) &SharedBorders[0], (APTR) &SharedBordersInvert[0], + &AboutButton_text, 0, NULL, GADABOUT, NULL +}; + + +struct IntuiText QuitButton_text = +{ + 1, 0, JAM2, 12, 6, NULL, (UBYTE *)"Quit", NULL +}; + +#define GADQUIT 0 + +struct Gadget QuitButton = +{ + &AboutButton, 438, 170, button1w, button1h, + GADGHIMAGE, + RELVERIFY, + BOOLGADGET, + (APTR) &SharedBorders[0], (APTR) &SharedBordersInvert[0], + &QuitButton_text, 0, NULL, GADQUIT, NULL +}; + + +struct NewWindow winlayout = +{ + 20, 20, + 512, 200, + -1, -1, + CLOSEWINDOW | GADGETUP | GADGETDOWN, + ACTIVATE | WINDOWCLOSE | WINDOWDRAG | WINDOWDEPTH, + &QuitButton, NULL, + (STRPTR)"PiStorm Interaction Tool", + NULL, NULL, + 0, 0, + 600, 400, + WBENCHSCREEN +}; + +// Pads what we are writing to screen with spaces, otherwise we get bits of +// old text still showing +static void WriteGadgetText(const char *text, UBYTE *buffer, struct Window *window, struct Gadget *gadget) +{ + ULONG newlen = strlen(text); + ULONG oldlen = strlen((char *)buffer); + + if (newlen < oldlen) + { + snprintf((char *)buffer, 64, "%s%*.*s", text, (int)(oldlen - newlen), + (int)(oldlen - newlen), " "); + } + else + { + strncpy((char *)buffer, text, 64); + } + + RefreshGadgets(gadget, window, NULL); +} +static void updateRTG(struct Window *window) +{ + unsigned short rtg = pi_get_rtg_status(); + if (rtg & 0x01) + { + WriteGadgetText("Disable RTG", RTG_buf, window, &RTGButton); + if (rtg & 0x02) + { + WriteGadgetText("RTG in use", RTGStatus_buf, window, &RTGStatus); + } + else + { + WriteGadgetText("RTG not in use", RTGStatus_buf, window, &RTGStatus); + } + } + else + { + WriteGadgetText("Enable RTG", RTG_buf, window, &RTGButton); + WriteGadgetText("RTG disabled", RTGStatus_buf, window, &RTGStatus); + } +} + +int main() +{ + struct Window *myWindow; + + IntuitionBase = (struct IntuitionBase *) OpenLibrary("intuition.library", 0); + if (IntuitionBase == NULL) + { + return RETURN_FAIL; + } + + pistorm_base_addr = pi_find_pistorm(); + myWindow = OpenWindow(&winlayout); + BOOL no_board = FALSE; + + if (pistorm_base_addr == 0xFFFFFFFF) + { + static struct IntuiText msg, pos; + msg.IText = "Unable to find PiStorm autoconf device."; + pos.IText = "OK"; + AutoRequest(myWindow, &msg, NULL, &pos, 0, 0, 0, 0); + no_board = TRUE; + } + if (!no_board) + { + updateRTG(myWindow); + } + + FOREVER + { + BOOL closewin = FALSE; + struct IntuiMessage *message; + Wait(1 << myWindow->UserPort->mp_SigBit); + + while ((message = (struct IntuiMessage*)GetMsg(myWindow->UserPort))) + { + ULONG class = message->Class; + struct Gadget *address = (struct Gadget*)message->IAddress; + ReplyMsg((struct Message*)message); + + if (class == CLOSEWINDOW) + { + closewin = TRUE; + } + else if (class == GADGETUP) + { + if (no_board && (address->GadgetID != GADQUIT) && (address->GadgetID != GADABOUT)) + { + continue; + } + switch (address->GadgetID) + { + case GADQUIT: + closewin = TRUE; + break; + case GADABOUT: + { + static struct IntuiText pos; + UBYTE buf[64], buf2[64], buf3[64]; + if (!no_board) + { + unsigned short hw_rev = pi_get_hw_rev(); + unsigned short sw_rev = pi_get_sw_rev(); + snprintf((char*)buf2, 64, "PiStorm hardware: %d.%d", (hw_rev >> 8), (hw_rev & 0xFF)); + snprintf((char*)buf3, 64, "PiStorm software: %d.%d", (sw_rev >> 8), (sw_rev & 0xFF)); + } + else + { + snprintf((char*)buf2, 64, "PiStorm hardware not found!"); + } + struct IntuiText msg[] = + { + 1, 0, JAM2, 0, 0, NULL, (UBYTE *)buf, &msg[1], + 1, 0, JAM2, 0, 10, NULL, "Tool written by beeanyew and LinuxJedi", &msg[2], + 1, 0, JAM2, 0, 20, NULL, (UBYTE*)buf2, &msg[3], + 1, 0, JAM2, 0, 30, NULL, (UBYTE*)buf3, &msg[4], + 1, 0, JAM2, 0, 50, NULL, "Now with 53% more Nibbles!", NULL, + }; + snprintf(buf, 64, "PiStorm Interaction Tool %s", VERSION); + pos.IText = "OK"; + AutoRequest(myWindow, msg, NULL, &pos, 0, 0, 0, 0); + break; + } + case GADRTGBUTTON: + { + unsigned short rtgStatus = pi_get_rtg_status() & 0x01; + pi_enable_rtg(!rtgStatus); + updateRTG(myWindow); + break; + } + case GADCONFIGCOMMIT: + { + unsigned short ret = pi_handle_config(PICFG_LOAD, ConfigFileValue_buf); + if (ret == PI_RES_FILENOTFOUND) + { + static struct IntuiText msg, pos; + msg.IText = "PiStorm says \"file not found\""; + pos.IText = "OK"; + AutoRequest(myWindow, &msg, NULL, &pos, 0, 0, 0, 0); + } + break; + } + case GADCONFIGDEFAULT: + { + pi_handle_config(PICFG_DEFAULT, NULL); + break; + } + } + } + if (closewin) + { + break; + } + } + if (closewin) + { + break; + } + }; + if (myWindow) CloseWindow(myWindow); + return 0; +} diff --git a/platforms/amiga/pistorm-dev/pistorm_dev_amiga/pistorm_dev.c b/platforms/amiga/pistorm-dev/pistorm_dev_amiga/pistorm_dev.c index 8bf004e..58cf5bd 100644 --- a/platforms/amiga/pistorm-dev/pistorm_dev_amiga/pistorm_dev.c +++ b/platforms/amiga/pistorm-dev/pistorm_dev_amiga/pistorm_dev.c @@ -2,6 +2,7 @@ #include "../pistorm-dev-enums.h" +#include #include #include #include @@ -17,11 +18,11 @@ #include #include -#include +#include #include #include -#include +#include #ifdef HAS_STDLIB #include @@ -165,14 +166,19 @@ unsigned short pi_handle_config(unsigned char cmd, char *str) { RETURN_CMDRES; } -// Generic stuff -#define SIMPLEWRITE_SHORT(a, b) \ - void a(unsigned short val) { WRITESHORT(b, val); } - // Simple feature status write functions -SIMPLEWRITE_SHORT(pi_enable_rtg, PI_CMD_RTGSTATUS); -SIMPLEWRITE_SHORT(pi_enable_net, PI_CMD_NETSTATUS); -SIMPLEWRITE_SHORT(pi_enable_piscsi, PI_CMD_RTGSTATUS); +void pi_enable_rtg(unsigned short val) +{ + WRITESHORT(PI_CMD_RTGSTATUS, val); +} +void pi_enable_net(unsigned short val) +{ + WRITESHORT(PI_CMD_NETSTATUS, val); +} +void pi_enable_piscsi(unsigned short val) +{ + WRITESHORT(PI_CMD_PISCSI_CTRL, val); +} // Generic feature status setting function. // Example: pi_set_feature_status(PI_CMD_RTGSTATUS, 1) to enable RTG @@ -185,9 +191,33 @@ void pi_set_feature_status(unsigned short cmd, unsigned char value) { unsigned short a() { READSHORT(b, short_val); return short_val; } // Simple feature status read functions -SIMPLEREAD_SHORT(pi_get_hw_rev, PI_CMD_HWREV); -SIMPLEREAD_SHORT(pi_get_sw_rev, PI_CMD_SWREV); -SIMPLEREAD_SHORT(pi_get_rtg_status, PI_CMD_RTGSTATUS); -SIMPLEREAD_SHORT(pi_get_net_status, PI_CMD_NETSTATUS); -SIMPLEREAD_SHORT(pi_get_piscsi_status, PI_CMD_PISCSI_CTRL); -SIMPLEREAD_SHORT(pi_get_cmd_result, PI_CMDRESULT); +unsigned short pi_get_hw_rev() +{ + READSHORT(PI_CMD_HWREV, short_val); + return short_val; +} +unsigned short pi_get_sw_rev() +{ + READSHORT(PI_CMD_SWREV, short_val); + return short_val; +} +unsigned short pi_get_rtg_status() +{ + READSHORT(PI_CMD_RTGSTATUS, short_val); + return short_val; +} +unsigned short pi_get_net_status() +{ + READSHORT(PI_CMD_NETSTATUS, short_val); + return short_val; +} +unsigned short pi_get_piscsi_status() +{ + READSHORT(PI_CMD_PISCSI_CTRL, short_val); + return short_val; +} +unsigned short pi_get_cmd_result() +{ + READSHORT(PI_CMDRESULT, short_val); + return short_val; +} diff --git a/platforms/amiga/pistorm-dev/pistorm_dev_amiga/pistorm_dev.h b/platforms/amiga/pistorm-dev/pistorm_dev_amiga/pistorm_dev.h index 6de33b0..a8f4993 100644 --- a/platforms/amiga/pistorm-dev/pistorm_dev_amiga/pistorm_dev.h +++ b/platforms/amiga/pistorm-dev/pistorm_dev_amiga/pistorm_dev.h @@ -8,9 +8,9 @@ unsigned short pi_get_net_status(); unsigned short pi_get_rtg_status(); unsigned short pi_get_piscsi_status(); -void enable_rtg(unsigned short val); -void enable_net(unsigned short val); -void enable_piscsi(unsigned short val); +void pi_enable_rtg(unsigned short val); +void pi_enable_net(unsigned short val); +void pi_enable_piscsi(unsigned short val); void pi_reset_amiga(unsigned short reset_code); unsigned short pi_handle_config(unsigned char cmd, char *str); diff --git a/platforms/amiga/pistorm-dev/pistorm_dev_amiga/simple_interact.c b/platforms/amiga/pistorm-dev/pistorm_dev_amiga/simple_interact.c index b9ea1a9..969cebf 100644 --- a/platforms/amiga/pistorm-dev/pistorm_dev_amiga/simple_interact.c +++ b/platforms/amiga/pistorm-dev/pistorm_dev_amiga/simple_interact.c @@ -8,6 +8,7 @@ #ifdef SHUTUP_VSCODE #define __stdargs #else +#include #include #include #include @@ -23,7 +24,7 @@ #include #include -#include +#include #include #include -- 2.39.2