From 874c4732ab3cf363647fcc4b86d7e6a9d4aee7da Mon Sep 17 00:00:00 2001 From: Andrew Hutchings Date: Mon, 26 Apr 2021 09:00:47 +0100 Subject: [PATCH] Add file retrieval to GUI GUI version 0.2 alpha. You can now retrieve a file from PiStorm to save in your Amiga. Reqtools now included to pick a destination drive / directory. Also a reboot button was added and some other things fixed. --- .../pistorm-dev/pistorm_dev_amiga/Makefile | 4 +- .../pistorm-dev/pistorm_dev_amiga/PiStorm | Bin 12224 -> 15444 bytes .../pistorm-dev/pistorm_dev_amiga/README.md | 12 + .../pistorm_dev_amiga/gui_interact.c | 275 +++++++- .../pistorm-dev/pistorm_dev_amiga/libs13.info | Bin 0 -> 618 bytes .../pistorm_dev_amiga/libs13/reqtools.library | Bin 0 -> 39000 bytes .../pistorm-dev/pistorm_dev_amiga/libs20.info | Bin 0 -> 624 bytes .../pistorm_dev_amiga/libs20/reqtools.library | Bin 0 -> 41368 bytes .../reqtools/clib/reqtools_protos.h | 61 ++ .../reqtools/libraries/reqtools.h | 635 ++++++++++++++++++ .../reqtools/libraries/reqtools.i | 585 ++++++++++++++++ .../reqtools/libraries/reqtools_lib.i | 52 ++ .../reqtools/pragmas/reqtools.h | 33 + .../reqtools/proto/reqtools.h | 4 + .../reqtools/utility/hooks.h | 25 + .../reqtools/utility/hooks.i | 24 + .../reqtools/utility/tagitem.h | 30 + .../reqtools/utility/tagitem.i | 22 + .../pistorm_dev_amiga/reqtoolsnb.lib | Bin 0 -> 4704 bytes 19 files changed, 1754 insertions(+), 8 deletions(-) create mode 100644 platforms/amiga/pistorm-dev/pistorm_dev_amiga/libs13.info create mode 100644 platforms/amiga/pistorm-dev/pistorm_dev_amiga/libs13/reqtools.library create mode 100644 platforms/amiga/pistorm-dev/pistorm_dev_amiga/libs20.info create mode 100644 platforms/amiga/pistorm-dev/pistorm_dev_amiga/libs20/reqtools.library create mode 100644 platforms/amiga/pistorm-dev/pistorm_dev_amiga/reqtools/clib/reqtools_protos.h create mode 100644 platforms/amiga/pistorm-dev/pistorm_dev_amiga/reqtools/libraries/reqtools.h create mode 100644 platforms/amiga/pistorm-dev/pistorm_dev_amiga/reqtools/libraries/reqtools.i create mode 100644 platforms/amiga/pistorm-dev/pistorm_dev_amiga/reqtools/libraries/reqtools_lib.i create mode 100644 platforms/amiga/pistorm-dev/pistorm_dev_amiga/reqtools/pragmas/reqtools.h create mode 100644 platforms/amiga/pistorm-dev/pistorm_dev_amiga/reqtools/proto/reqtools.h create mode 100644 platforms/amiga/pistorm-dev/pistorm_dev_amiga/reqtools/utility/hooks.h create mode 100644 platforms/amiga/pistorm-dev/pistorm_dev_amiga/reqtools/utility/hooks.i create mode 100644 platforms/amiga/pistorm-dev/pistorm_dev_amiga/reqtools/utility/tagitem.h create mode 100644 platforms/amiga/pistorm-dev/pistorm_dev_amiga/reqtools/utility/tagitem.i create mode 100644 platforms/amiga/pistorm-dev/pistorm_dev_amiga/reqtoolsnb.lib diff --git a/platforms/amiga/pistorm-dev/pistorm_dev_amiga/Makefile b/platforms/amiga/pistorm-dev/pistorm_dev_amiga/Makefile index ae0465a..af70e25 100644 --- a/platforms/amiga/pistorm-dev/pistorm_dev_amiga/Makefile +++ b/platforms/amiga/pistorm-dev/pistorm_dev_amiga/Makefile @@ -6,7 +6,7 @@ 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 +PiStorm: gui_interact.c pistorm_dev.c reqtoolsnb.lib + $(CC) $(CFLAGS) -Ireqtools $^ -o PiStorm diff --git a/platforms/amiga/pistorm-dev/pistorm_dev_amiga/PiStorm b/platforms/amiga/pistorm-dev/pistorm_dev_amiga/PiStorm index a2de33b1374038378c68e70805261625b7f217d4..71cff1ec584eaa43a1609b5562a48e9c9064c7b4 100755 GIT binary patch delta 7464 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 VS59zNqpP{vJQ9s~tbcdj`ai`TH=Y0h delta 4311 zcma)=e@v749mhY<_i0P11qwr~P}_&6kJ`hIcF)pb0LQ8j4|p4F`gk8W-f*pvM}Q<=5q1KVls9ylQ^^790z-UpFYLn zkL@0O_4|Ck-_P&w_j&rQ_YRG}8zPebNtw%Hv}U6Gb+|7elHzDh0Aut^$o^f-{XYC_ zS+eqBxt-aDc%eySCMOS>w6u33L@5fg@iB-?ZF^#ep%Mw$M9XGkeKfR}79xuhtm!d1 z+FbhVm?6~;sXdS?6LX33m*(PoY5ti$7ktV355(kyr7HXz)2{UVMC@;yH>GInGt;;q zv5-A}<-7Yz)H{LfoJmWnG(qy&_@_jkuy-8U`nUWWkY;8_;B9D=^P@XkMQc)4|0HW@emG2~^x9SQhz;z=%Y1fju5q#|18?(0wmr3x%iwF_bdvTN?RPnY^(AL}v19%jX`O1^{>2D*)zli3-5 z*1D7BZ{su8lP&ojQcL|+DG}?Fz61{p*~YA_sBZpc)G@rIy8e&uY)R?lQxcbf@ z8q^b-;FJ08v^OlO{GZt!O^MdnVHj$!|3plyGn=Cn+tFn2BAKGeu9G`!_wu2_5T7aht@I;4UF_m#ic0;8n%v*RXqa?d}J6lzXf6(+} zqWzscz59FicXd{G?BCbDxBD>0`Q_qfSD;YYfQ{$Mgs}A)DPq5ios9>zb$PYTWGO6yEoQd5L&C14F$Gqo<7Q3*?9PnuGcP`rP{td=rO9ScxE z5_Kz_=DSOjQj^wJis2y)TaAgqT>HWwU7R>%9?I z`KZiX)BNtLYPRy>2yZH?oS!k!H0~VigS|7rdI}tY~;HhZKo!UOV<4(I}sV zZRl85hlNgbbwcvHr{leN(>OpWZ~_-lfChZP4}u`XC)XsH=I7OG>(gd`us_}#|DYy7 z7A1n&xhceG_AAlgQPHoYY`+$pS85M#5TEhhMfv&c{Qs86i^QZ@RajJ%ySfK;i`t(` z+cN5Ev}TN?T!(73_RqNvUt^%~`|1a5Y8TmI#hM#N(CpW?X#K*mWMryE)q&hVv}oitrz`^UH6(rW!Xio z|7os;rGABeDkE7ewkxU~?==See7H(IVAOHZno;STUA@$z=E*(@DN7~-@f0kMSzj?` ztPu~cb7hMl2ah&>jl)21%8^ybEj-3cUNgSv^ac4v$1jW<&W*zUYVq03t=ZD5$9n^X z;{9z7iU*gcIJg8p$J{vH+HSOS(5b;#GiZUV3xvQ) zoDE=a8BQt7s=x{GJDjzwL}_~?Zm#1@iMHS%7zB54c!F^Uf+@yW@lB!ILPAS#EWayTzP1)x{)CDAI#tb*>ULqu-$-P7P9rO7>mn@3<4 zJO!wN8<}{Z;K2#klf?P0107_D_Y0yzmEed}WQ*#UKLcMO%X7%G0U!W-E0VC_+iMuy z0#igq&?`c9iuwR5QZxppg7|S$< z5T{uKP&Gq54|!O7zzy`n0Oo8cnC&>gye$eaSAfD5>;uT50C5yxtb7Lw1Dl>pU>qP` z&n%Gwj|%csssZ#B=qa5jn$nM(ivY^X1VG^`k#J=h@BzeJ*$xm;^%=g0ffB|0g9=?uoeUf za0Z+Mjj+OijDIMsob8)1de$hPTL$w~M zl#ka|n4v6%xFh6|nt3qf+1djQ)JoTE7xxnWFo5+HSN=?<#dwg`QY(IyKv;;-=NQ`t zj`PpzTy^>1W(1{k^b~@1IfBCw(f|~UON1$|cJ5eT?ME*9CEceEdV`KpiN1Iyr~q*> z)JAVj{J{EVjp>16I6{R~w5Wif78Ne?zpigdGb4I7MuYev`-f0c<3i1#{510|#&c zKL~;dXaqYz3+MnTa0Fmyrll*m!9$A$Bk3FP4}hJC^&l1pcw87Ba)y9VdSZV9cqC*I zC}d>F$U6b#WEhoCg8?uIATL8+eDBCY=NSSOrNy3MneD*8c(d4IgB>l#AH7*^D~O_Q R{pg #include #include +#include +#include #include "pistorm_dev.h" #include "../pistorm-dev-enums.h" #include #include - +#include extern unsigned int pistorm_base_addr; +struct ReqToolsBase *ReqToolsBase; -#define VERSION "v0.1" +#define VERSION "v0.2" #define button1w 54 #define button1h 20 @@ -30,6 +33,9 @@ extern unsigned int pistorm_base_addr; #define tbox1w 130 #define tbox1h 18 +#define statusbarw 507 +#define statusbarh 10 + SHORT SharedBordersPairs0[] = { 0, 0, 0, button1h - 1, 1, button1h - 2, 1, 0, button1w - 2, 0 @@ -67,6 +73,21 @@ SHORT SharedBordersPairs7[] = -1, tbox1h - 1, tbox1w - 2, tbox1h - 1, tbox1w - 2, 0, tbox1w - 1, -1, tbox1w - 1, tbox1h - 1 }; +SHORT SharedBordersPairs8[] = +{ + 0, 0, statusbarw - 2, 0, statusbarw - 2, 0, 0, 0, 0, 0 +}; + +SHORT SharedBordersPairs9[] = +{ + 0, 0, 0, tbox1h - 1, 1, tbox1h - 2, 1, 0, tbox1w - 2, 0 +}; +SHORT SharedBordersPairs10[] = +{ + 1, tbox1h - 1, tbox1w - 2, tbox1h - 1, tbox1w - 2, 1, tbox1w - 1, 0, tbox1w - 1, tbox1h - 1 +}; + + struct Border SharedBorders[] = { 0, 0, 2, 0, JAM2, 5, (SHORT *) &SharedBordersPairs0[0], &SharedBorders[1], // Button 1 @@ -77,6 +98,9 @@ struct Border SharedBorders[] = 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, + 0, 0, 1, 0, JAM2, 5, (SHORT *) &SharedBordersPairs8[0], NULL, // Statusbar + 0, 0, 2, 0, JAM2, 5, (SHORT *) &SharedBordersPairs9[0], &SharedBorders[10], // TBox inverted + 0, 0, 1, 0, JAM2, 5, (SHORT *) &SharedBordersPairs10[0], NULL, }; struct Border SharedBordersInvert[] = @@ -87,6 +111,107 @@ struct Border SharedBordersInvert[] = 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, + 0, 0, 1, 0, JAM2, 5, (SHORT *) &SharedBordersPairs9[0], &SharedBordersInvert[7], // TBox inverted + 0, 0, 2, 0, JAM2, 5, (SHORT *) &SharedBordersPairs10[0], NULL, +}; + +UBYTE DestinationValue_buf[255]; + +struct IntuiText Destination_text[] = +{ + 1, 0, JAM2, -98, 6, NULL, "Destination:", &Destination_text[1], + 1, 0, JAM2, 4, 4, NULL, DestinationValue_buf, NULL, +}; + +#define GADGETDESTINATION 11 + +struct Gadget GetDestination = +{ + NULL, 108, 117, tbox1w, tbox1h, + GADGHIMAGE, + RELVERIFY, + BOOLGADGET, + (APTR) &SharedBorders[9], (APTR) &SharedBordersInvert[6], + Destination_text, 0, NULL, GADGETDESTINATION, NULL +}; + +struct IntuiText RebootButton_text = +{ + 1, 0, JAM2, 2, 6, NULL, (UBYTE *)"Reboot", NULL +}; + +#define GADREBOOT 10 + +struct Gadget RebootButton = +{ + &GetDestination, 4, 166, button1w, button1h, + GADGHIMAGE, + RELVERIFY, + BOOLGADGET, + (APTR) &SharedBorders[0], (APTR) &SharedBordersInvert[0], + &RebootButton_text, 0, NULL, GADREBOOT, NULL +}; + +UBYTE StatusBar_buf[128] = "PiStorm..."; + +struct IntuiText StatusBar_text = +{ + 1, 0, JAM2, 4, 2, NULL, (UBYTE *)StatusBar_buf, NULL +}; + +#define GADSTATUSBAR 9 + +struct Gadget StatusBar = +{ + &RebootButton, 3, 188, 508, 10, + GADGHIMAGE, + 0, + BOOLGADGET, + (APTR) &SharedBorders[8], NULL, + &StatusBar_text, 0, NULL, GADSTATUSBAR, NULL +}; + + +struct IntuiText RetrieveButton_text = +{ + 1, 0, JAM2, 10, 6, NULL, (UBYTE *)"Retrieve", NULL +}; + +#define GADRETRIEVEBUTTON 8 + +struct Gadget RetrieveButton = +{ + &StatusBar, 244, 117, button2w, button2h, + GADGHIMAGE, + RELVERIFY, + BOOLGADGET, + (APTR) &SharedBorders[4], (APTR) &SharedBordersInvert[4], + &RetrieveButton_text, 0, NULL, GADRETRIEVEBUTTON, NULL +}; + +UBYTE GetFileValue_buf[255]; + +struct StringInfo GetFileValue = +{ + GetFileValue_buf, NULL, 0, 255, 0, 0, 0, 0, 4, 4, NULL, 0, NULL +}; + +struct IntuiText GetFile_text[] = +{ + 1, 0, JAM2, -98, -15, NULL, "Get file", &GetFile_text[1], + 1, 0, JAM2, -98, 4, NULL, "Source:", NULL, +}; + +#define GADGETFILE 7 + +struct Gadget GetFile = +{ + &RetrieveButton, 108, 93, tbox1w, tbox1h, + GADGHIMAGE, + 0, + STRGADGET, + (APTR) &SharedBorders[6], NULL, + GetFile_text, 0, (APTR)&GetFileValue, GADGETFILE, NULL }; struct IntuiText ConfigDefault_text = @@ -98,7 +223,7 @@ struct IntuiText ConfigDefault_text = struct Gadget ConfigDefault = { - NULL, 304, 39, button3w, button3h, + &GetFile, 304, 39, button3w, button3h, GADGHIMAGE, RELVERIFY, BOOLGADGET, @@ -195,7 +320,7 @@ struct IntuiText AboutButton_text = struct Gadget AboutButton = { - &RTGButton, 356, 170, button1w, button1h, + &RTGButton, 356, 166, button1w, button1h, GADGHIMAGE, RELVERIFY, BOOLGADGET, @@ -213,7 +338,7 @@ struct IntuiText QuitButton_text = struct Gadget QuitButton = { - &AboutButton, 438, 170, button1w, button1h, + &AboutButton, 438, 166, button1w, button1h, GADGHIMAGE, RELVERIFY, BOOLGADGET, @@ -278,6 +403,35 @@ static void updateRTG(struct Window *window) } } +static char *GetSavePath() +{ + struct rtFileRequester *filereq; + char filename[128]; + char *fullpath = malloc(256 * sizeof(char)); + UBYTE *buf = NULL; + + if ((filereq = (struct rtFileRequester*)rtAllocRequestA (RT_FILEREQ, NULL))) + { + filename[0] = 0; + + if (!rtFileRequest(filereq, filename, "Pick a destination directory", + RTFI_Flags, FREQF_NOFILES, TAG_END)) + { + free(fullpath); + return NULL; + } + + } + else + { + rtEZRequest("Out of memory!", "Oh no!", NULL, NULL); + } + + strncpy(fullpath, (char*)filereq->Dir, 256); + return fullpath; +} + + int main() { struct Window *myWindow; @@ -288,6 +442,19 @@ int main() return RETURN_FAIL; } + if (!(ReqToolsBase = (struct ReqToolsBase *) + OpenLibrary (REQTOOLSNAME, REQTOOLSVERSION))) + { + static struct IntuiText pos; + struct IntuiText msg[] = + { + 1, 0, JAM2, 0, 0, NULL, "You need reqtools.library V38 or higher!.", &msg[1], + 1, 0, JAM2, 0, 10, NULL, "Please install it in your Libs: drirectory.", NULL, + }; + AutoRequest(NULL, msg, NULL, &pos, 0, 0, 0, 0); + return RETURN_FAIL; + } + pistorm_base_addr = pi_find_pistorm(); myWindow = OpenWindow(&winlayout); BOOL no_board = FALSE; @@ -299,6 +466,7 @@ int main() pos.IText = "OK"; AutoRequest(myWindow, &msg, NULL, &pos, 0, 0, 0, 0); no_board = TRUE; + WriteGadgetText("PiStorm not found", StatusBar_buf, myWindow, &StatusBar); } if (!no_board) { @@ -373,7 +541,7 @@ int main() if (ret == PI_RES_FILENOTFOUND) { static struct IntuiText msg, pos; - msg.IText = "PiStorm says \"file not found\""; + msg.IText = "PiStorm says: \"file not found\""; pos.IText = "OK"; AutoRequest(myWindow, &msg, NULL, &pos, 0, 0, 0, 0); } @@ -384,6 +552,100 @@ int main() pi_handle_config(PICFG_DEFAULT, NULL); break; } + case GADRETRIEVEBUTTON: + { + unsigned int filesize = 0; + char outpath[128]; + unsigned char *buf; + + if (pi_get_filesize(GetFileValue_buf, &filesize) == 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; + } + buf = malloc(filesize); + if (buf == NULL) + { + static struct IntuiText msg, pos; + msg.IText = "Could not allocate enough memory to transfer file"; + pos.IText = "OK"; + AutoRequest(myWindow, &msg, NULL, &pos, 0, 0, 0, 0); + break; + } + WriteGadgetText("Retrieving file...", StatusBar_buf, myWindow, &StatusBar); + if (pi_transfer_file(GetFileValue_buf, buf) != PI_RES_OK) + { + static struct IntuiText msg, pos; + msg.IText = "PiStorm says: \"something went wrong with the file transfer\""; + pos.IText = "OK"; + AutoRequest(myWindow, &msg, NULL, &pos, 0, 0, 0, 0); + WriteGadgetText("File transfer failed", StatusBar_buf, myWindow, &StatusBar); + free(buf); + break; + } + char *fname = strrchr(GetFileValue_buf, '/'); + if (!fname) + { + fname = GetFileValue_buf; + } + char *destfile = malloc(256); + // Turns out WB doesn't like DF0:/filename.ext + if (DestinationValue_buf[(strlen(DestinationValue_buf) - 1)] == ':') + { + snprintf(destfile, 255, "%s%s", DestinationValue_buf, GetFileValue_buf); + } + else if (!strlen(DestinationValue_buf)) + { + snprintf(destfile, 255, "%s", GetFileValue_buf); + } + else + { + snprintf(destfile, 255, "%s/%s", DestinationValue_buf, GetFileValue_buf); + } + BPTR fh = Open(destfile, MODE_NEWFILE); + if (!fh) + { + char errbuf[64]; + snprintf(errbuf, 64, "Error code: %ld", IoErr()); + struct IntuiText msg[] = + { + 1, 0, JAM2, 0, 0, NULL, "Could not open file for writing", &msg[1], + 1, 0, JAM2, 0, 10, NULL, destfile, &msg[2], + 1, 0, JAM2, 0, 20, NULL, (UBYTE*)errbuf, NULL, + }; + static struct IntuiText pos; + pos.IText = "OK"; + AutoRequest(myWindow, msg, NULL, &pos, 0, 0, 0, 0); + WriteGadgetText("File transfer failed", StatusBar_buf, myWindow, &StatusBar); + free(buf); + free(destfile); + break; + } + Write(fh, buf, filesize); + Close(fh); + free(destfile); + WriteGadgetText("File transfer complete", StatusBar_buf, myWindow, &StatusBar); + free(buf); + break; + } + case GADREBOOT: + { + WriteGadgetText("Rebooting PiStorm", StatusBar_buf, myWindow, &StatusBar); + pi_reset_amiga(0); + break; + } + case GADGETDESTINATION: + { + char *fileName = GetSavePath(); + if (fileName) + { + WriteGadgetText(fileName, DestinationValue_buf, myWindow, &GetDestination); + free(fileName); + } + } } } if (closewin) @@ -397,5 +659,6 @@ int main() } }; if (myWindow) CloseWindow(myWindow); + CloseLibrary((struct Library*)ReqToolsBase); return 0; } diff --git a/platforms/amiga/pistorm-dev/pistorm_dev_amiga/libs13.info b/platforms/amiga/pistorm-dev/pistorm_dev_amiga/libs13.info new file mode 100644 index 0000000000000000000000000000000000000000..03c62f0fbb357558e0b2dbc8f429719a02e80227 GIT binary patch literal 618 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 literal 0 HcmV?d00001 diff --git a/platforms/amiga/pistorm-dev/pistorm_dev_amiga/libs20.info b/platforms/amiga/pistorm-dev/pistorm_dev_amiga/libs20.info new file mode 100644 index 0000000000000000000000000000000000000000..935dee8dd848a5bc74d0ff2d68fd24feca219d77 GIT binary patch literal 624 zcma)&u}TC%42J(%MFfRAe1Yq1Zb9r6l-0Abv++0!OCP`o5M~?edjzfTC3Z_YE5TB* z5gQBJVdFoO*&GUrDR#f)Pclhfhj5^|6YOGwO{~#(DC=jGw{=v^u1Ky>cRakNQ_lU40gC*E|Td`1tBTZ(0ivv|gq}YJ= ze>&6xR#ZmbD1+4K2|axnJx1!h+)1JU>?q08be1WWQ|)xpfz|RNwZ{5y-gp1u_kH7m zX}(QAUc6~B&;gf3^^cge7-WnlTY9Eb~bB Msf+u$@2WQc0xB~cLjV8( literal 0 HcmV?d00001 diff --git a/platforms/amiga/pistorm-dev/pistorm_dev_amiga/libs20/reqtools.library b/platforms/amiga/pistorm-dev/pistorm_dev_amiga/libs20/reqtools.library new file mode 100644 index 0000000000000000000000000000000000000000..224074d9cf423bc1fe2f14990875b29b0c87f79a GIT binary patch literal 41368 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 PNp!E&>p17ndGmh(JRCv1 literal 0 HcmV?d00001 diff --git a/platforms/amiga/pistorm-dev/pistorm_dev_amiga/reqtools/clib/reqtools_protos.h b/platforms/amiga/pistorm-dev/pistorm_dev_amiga/reqtools/clib/reqtools_protos.h new file mode 100644 index 0000000..9d2e537 --- /dev/null +++ b/platforms/amiga/pistorm-dev/pistorm_dev_amiga/reqtools/clib/reqtools_protos.h @@ -0,0 +1,61 @@ +#ifndef CLIB_REQTOOLS_PROTOS_H +#define CLIB_REQTOOLS_PROTOS_H +/* +** $Filename: clib/reqtools_protos.h $ +** $Release: 2.2 $ +** $Revision: 38.11 $ +** +** C prototypes. For use with 32 bit integers only. +** +** (C) Copyright 1991-1994 Nico François +** All Rights Reserved +*/ + +#ifndef UTILITY_TAGITEM_H +#include +#endif /* UTILITY_TAGITEM_H */ + +APTR rtAllocRequestA (ULONG, struct TagItem *); +void rtFreeRequest (APTR); +void rtFreeReqBuffer (APTR); +LONG rtChangeReqAttrA (APTR, struct TagItem *); +APTR rtFileRequestA(struct rtFileRequester *,char *,char *,struct TagItem *); +void rtFreeFileList (struct rtFileList *); +ULONG rtEZRequestA (char *,char *,struct rtReqInfo *,APTR,struct TagItem *); +ULONG rtGetStringA (UBYTE *,ULONG,char *,struct rtReqInfo *,struct TagItem *); +ULONG rtGetLongA (ULONG *, char *, struct rtReqInfo *, struct TagItem *); +ULONG rtFontRequestA (struct rtFontRequester *, char *, struct TagItem *); +LONG rtPaletteRequestA (char *, struct rtReqInfo *, struct TagItem *); +ULONG rtReqHandlerA (struct rtHandlerInfo *, ULONG, struct TagItem *); +void rtSetWaitPointer (struct Window *); +ULONG rtGetVScreenSize (struct Screen *, ULONG *, ULONG *); +void rtSetReqPosition (ULONG, struct NewWindow *, + struct Screen *, struct Window *); +void rtSpread (ULONG *, ULONG *, ULONG, ULONG, ULONG, ULONG); +void rtScreenToFrontSafely (struct Screen *); +ULONG rtScreenModeRequestA (struct rtScreenModeRequester *, + char *, struct TagItem *); +void rtCloseWindowSafely (struct Window *); +APTR rtLockWindow (struct Window *); +void rtUnlockWindow (struct Window *, APTR); + +/* private functions */ + +struct ReqToolsPrefs *rtLockPrefs (void); +void rtUnlockPrefs (void); + +/* functions with varargs in reqtools.lib and reqtoolsnb.lib */ + +APTR rtAllocRequest (ULONG, Tag,...); +LONG rtChangeReqAttr (APTR, Tag,...); +APTR rtFileRequest (struct rtFileRequester *, char *, char *, Tag,...); +ULONG rtEZRequest (char *, char *, struct rtReqInfo *, struct TagItem *,...); +ULONG rtEZRequestTags (char *, char *, struct rtReqInfo *, APTR, Tag,...); +ULONG rtGetString (UBYTE *, ULONG, char *, struct rtReqInfo *, Tag,...); +ULONG rtGetLong (ULONG *, char *, struct rtReqInfo *, Tag,...); +ULONG rtFontRequest (struct rtFontRequester *, char *, Tag,...); +LONG rtPaletteRequest (char *, struct rtReqInfo *, Tag,...); +ULONG rtReqHandler (struct rtHandlerInfo *, ULONG, Tag,...); +ULONG rtScreenModeRequest (struct rtScreenModeRequester *, char *, Tag,...); + +#endif /* CLIB_REQTOOLS_PROTOS_H */ diff --git a/platforms/amiga/pistorm-dev/pistorm_dev_amiga/reqtools/libraries/reqtools.h b/platforms/amiga/pistorm-dev/pistorm_dev_amiga/reqtools/libraries/reqtools.h new file mode 100644 index 0000000..98982d8 --- /dev/null +++ b/platforms/amiga/pistorm-dev/pistorm_dev_amiga/reqtools/libraries/reqtools.h @@ -0,0 +1,635 @@ +#ifndef LIBRARIES_REQTOOLS_H +#define LIBRARIES_REQTOOLS_H +/* +** $Filename: libraries/reqtools.h $ +** $Release: 2.2 $ +** $Revision: 38.11 $ +** +** reqtools.library definitions +** +** (C) Copyright 1991-1994 Nico François +** All Rights Reserved +*/ + +#ifndef EXEC_TYPES_H +#include +#endif /* EXEC_TYPES_H */ + +#ifndef EXEC_LISTS_H +#include +#endif /* EXEC_LISTS_H */ + +#ifndef EXEC_LIBRARIES_H +#include +#endif /* EXEC_LIBRARIES_H */ + +#ifndef EXEC_SEMAPHORES_H +#include +#endif /* EXEC_SEMAPHORES_H */ + +#ifndef LIBRARIES_DOS_H +#include +#endif /* LIBRARIES_DOS_H */ + +#ifndef LIBRARIES_DOSEXTENS_H +#include +#endif /* LIBRARIES_DOSEXTENS_H */ + +#ifndef LIBRARIES_DISKFONT_H +#include +#endif /* LIBRARIES_DISKFONT_H */ + +#ifndef GRAPHICS_TEXT_H +#include +#endif /* GRAPHICS_TEXT_H */ + +#ifndef UTILITY_TAGITEM_H +#include +#endif /* UTILITY_TAGITEM_H */ + +#define REQTOOLSNAME "reqtools.library" +#define REQTOOLSVERSION 38L + +/*********************** +* * +* Preferences * +* * +***********************/ + +#define RTPREF_FILEREQ 0L +#define RTPREF_FONTREQ 1L +#define RTPREF_PALETTEREQ 2L +#define RTPREF_SCREENMODEREQ 3L +#define RTPREF_VOLUMEREQ 4L +#define RTPREF_OTHERREQ 5L +#define RTPREF_NR_OF_REQ 6L + +struct ReqDefaults { + ULONG Size; + ULONG ReqPos; + UWORD LeftOffset; + UWORD TopOffset; + UWORD MinEntries; + UWORD MaxEntries; + }; + +struct ReqToolsPrefs { + /* Size of preferences (_without_ this field and the semaphore) */ + ULONG PrefsSize; + struct SignalSemaphore PrefsSemaphore; + /* Start of real preferences */ + ULONG Flags; + struct ReqDefaults ReqDefaults[RTPREF_NR_OF_REQ]; + }; + +#define RTPREFS_SIZE \ + (sizeof (struct ReqToolsPrefs) - sizeof (struct SignalSemaphore) - 4) + +/* Flags */ + +#define RTPRB_DIRSFIRST 0L +#define RTPRF_DIRSFIRST (1L<DefaultFont */ +#define RT_DefaultFont (RT_TagBase+9) +/* boolean to set the standard wait pointer in window - default FALSE */ +#define RT_WaitPointer (RT_TagBase+10) +/* (V38) char preceding keyboard shortcut characters (will be underlined) */ +#define RT_Underscore (RT_TagBase+11) +/* (V38) share IDCMP port with window - default FALSE */ +#define RT_ShareIDCMP (RT_TagBase+12) +/* (V38) lock window and set standard wait pointer - default FALSE */ +#define RT_LockWindow (RT_TagBase+13) +/* (V38) boolean to make requester's screen pop to front - default TRUE */ +#define RT_ScreenToFront (RT_TagBase+14) +/* (V38) Requester should use this font - default: screen font */ +#define RT_TextAttr (RT_TagBase+15) +/* (V38) call this hook for every IDCMP message not for requester */ +#define RT_IntuiMsgFunc (RT_TagBase+16) +/* (V38) Locale ReqTools should use for text */ +#define RT_Locale (RT_TagBase+17) + +/*** tags specific to rtEZRequestA *** +*/ +/* title of requester window - english default "Request" or "Information" */ +#define RTEZ_ReqTitle (RT_TagBase+20) +/* (RT_TagBase+21) reserved */ +/* various flags (see below) */ +#define RTEZ_Flags (RT_TagBase+22) +/* default response (activated by pressing RETURN) - default TRUE */ +#define RTEZ_DefaultResponse (RT_TagBase+23) + +/*** tags specific to rtGetLongA *** +*/ +/* minimum allowed value - default MININT */ +#define RTGL_Min (RT_TagBase+30) +/* maximum allowed value - default MAXINT */ +#define RTGL_Max (RT_TagBase+31) +/* suggested width of requester window (in pixels) */ +#define RTGL_Width (RT_TagBase+32) +/* boolean to show the default value - default TRUE */ +#define RTGL_ShowDefault (RT_TagBase+33) +/* (V38) string with possible responses - english default " _Ok |_Cancel" */ +#define RTGL_GadFmt (RT_TagBase+34) +/* (V38) optional arguments for RTGL_GadFmt */ +#define RTGL_GadFmtArgs (RT_TagBase+35) +/* (V38) invisible typing - default FALSE */ +#define RTGL_Invisible (RT_TagBase+36) +/* (V38) window backfill - default TRUE */ +#define RTGL_BackFill (RT_TagBase+37) +/* (V38) optional text above gadget */ +#define RTGL_TextFmt (RT_TagBase+38) +/* (V38) optional arguments for RTGS_TextFmt */ +#define RTGL_TextFmtArgs (RT_TagBase+39) +/* (V38) various flags (see below) */ +#define RTGL_Flags RTEZ_Flags + +/*** tags specific to rtGetStringA *** +*/ +/* suggested width of requester window (in pixels) */ +#define RTGS_Width RTGL_Width +/* allow empty string to be accepted - default FALSE */ +#define RTGS_AllowEmpty (RT_TagBase+80) +/* (V38) string with possible responses - english default " _Ok |_Cancel" */ +#define RTGS_GadFmt RTGL_GadFmt +/* (V38) optional arguments for RTGS_GadFmt */ +#define RTGS_GadFmtArgs RTGL_GadFmtArgs +/* (V38) invisible typing - default FALSE */ +#define RTGS_Invisible RTGL_Invisible +/* (V38) window backfill - default TRUE */ +#define RTGS_BackFill RTGL_BackFill +/* (V38) optional text above gadget */ +#define RTGS_TextFmt RTGL_TextFmt +/* (V38) optional arguments for RTGS_TextFmt */ +#define RTGS_TextFmtArgs RTGL_TextFmtArgs +/* (V38) various flags (see below) */ +#define RTGS_Flags RTEZ_Flags + +/*** tags specific to rtFileRequestA *** +*/ +/* various flags (see below) */ +#define RTFI_Flags (RT_TagBase+40) +/* suggested height of file requester */ +#define RTFI_Height (RT_TagBase+41) +/* replacement text for 'Ok' gadget (max 6 chars) */ +#define RTFI_OkText (RT_TagBase+42) +/* (V38) bring up volume requester, tag data holds flags (see below) */ +#define RTFI_VolumeRequest (RT_TagBase+43) +/* (V38) call this hook for every file in the directory */ +#define RTFI_FilterFunc (RT_TagBase+44) +/* (V38) allow empty file to be accepted - default FALSE */ +#define RTFI_AllowEmpty (RT_TagBase+45) + +/*** tags specific to rtFontRequestA *** +*/ +/* various flags (see below) */ +#define RTFO_Flags RTFI_Flags +/* suggested height of font requester */ +#define RTFO_Height RTFI_Height +/* replacement text for 'Ok' gadget (max 6 chars) */ +#define RTFO_OkText RTFI_OkText +/* suggested height of font sample display - default 24 */ +#define RTFO_SampleHeight (RT_TagBase+60) +/* minimum height of font displayed */ +#define RTFO_MinHeight (RT_TagBase+61) +/* maximum height of font displayed */ +#define RTFO_MaxHeight (RT_TagBase+62) +/* [(RT_TagBase+63) to (RT_TagBase+66) used below] */ +/* (V38) call this hook for every font */ +#define RTFO_FilterFunc RTFI_FilterFunc + +/*** (V38) tags for rtScreenModeRequestA *** +*/ +/* various flags (see below) */ +#define RTSC_Flags RTFI_Flags +/* suggested height of screenmode requester */ +#define RTSC_Height RTFI_Height +/* replacement text for 'Ok' gadget (max 6 chars) */ +#define RTSC_OkText RTFI_OkText +/* property flags (see also RTSC_PropertyMask) */ +#define RTSC_PropertyFlags (RT_TagBase+90) +/* property mask - default all bits in RTSC_PropertyFlags considered */ +#define RTSC_PropertyMask (RT_TagBase+91) +/* minimum display width allowed */ +#define RTSC_MinWidth (RT_TagBase+92) +/* maximum display width allowed */ +#define RTSC_MaxWidth (RT_TagBase+93) +/* minimum display height allowed */ +#define RTSC_MinHeight (RT_TagBase+94) +/* maximum display height allowed */ +#define RTSC_MaxHeight (RT_TagBase+95) +/* minimum display depth allowed */ +#define RTSC_MinDepth (RT_TagBase+96) +/* maximum display depth allowed */ +#define RTSC_MaxDepth (RT_TagBase+97) +/* call this hook for every display mode id */ +#define RTSC_FilterFunc RTFI_FilterFunc + +/*** tags for rtChangeReqAttrA *** +*/ +/* file requester - set directory */ +#define RTFI_Dir (RT_TagBase+50) +/* file requester - set wildcard pattern */ +#define RTFI_MatchPat (RT_TagBase+51) +/* file requester - add a file or directory to the buffer */ +#define RTFI_AddEntry (RT_TagBase+52) +/* file requester - remove a file or directory from the buffer */ +#define RTFI_RemoveEntry (RT_TagBase+53) +/* font requester - set font name of selected font */ +#define RTFO_FontName (RT_TagBase+63) +/* font requester - set font size */ +#define RTFO_FontHeight (RT_TagBase+64) +/* font requester - set font style */ +#define RTFO_FontStyle (RT_TagBase+65) +/* font requester - set font flags */ +#define RTFO_FontFlags (RT_TagBase+66) +/* (V38) screenmode requester - get display attributes from screen */ +#define RTSC_ModeFromScreen (RT_TagBase+80) +/* (V38) screenmode requester - set display mode id (32-bit extended) */ +#define RTSC_DisplayID (RT_TagBase+81) +/* (V38) screenmode requester - set display width */ +#define RTSC_DisplayWidth (RT_TagBase+82) +/* (V38) screenmode requester - set display height */ +#define RTSC_DisplayHeight (RT_TagBase+83) +/* (V38) screenmode requester - set display depth */ +#define RTSC_DisplayDepth (RT_TagBase+84) +/* (V38) screenmode requester - set overscan type, 0 for regular size */ +#define RTSC_OverscanType (RT_TagBase+85) +/* (V38) screenmode requester - set autoscroll */ +#define RTSC_AutoScroll (RT_TagBase+86) + +/*** tags for rtPaletteRequestA *** +*/ +/* initially selected color - default 1 */ +#define RTPA_Color (RT_TagBase+70) + +/*** tags for rtReqHandlerA *** +*/ +/* end requester by software control, set tagdata to REQ_CANCEL, REQ_OK or + in case of rtEZRequest to the return value */ +#define RTRH_EndRequest (RT_TagBase+60) + +/*** tags for rtAllocRequestA ***/ +/* no tags defined yet */ + + +/************ +* RT_ReqPos * +************/ +#define REQPOS_POINTER 0L +#define REQPOS_CENTERWIN 1L +#define REQPOS_CENTERSCR 2L +#define REQPOS_TOPLEFTWIN 3L +#define REQPOS_TOPLEFTSCR 4L + +/****************** +* RTRH_EndRequest * +******************/ +#define REQ_CANCEL 0L +#define REQ_OK 1L + +/*************************************** +* flags for RTFI_Flags and RTFO_Flags * +* or filereq->Flags and fontreq->Flags * +***************************************/ +#define FREQB_NOBUFFER 2L +#define FREQF_NOBUFFER (1L<Flags * +*****************************************/ +#define FREQB_MULTISELECT 0L +#define FREQF_MULTISELECT (1L<Flags * +*****************************************/ +#define FREQB_FIXEDWIDTH 5L +#define FREQF_FIXEDWIDTH (1L<Flags * +*****************************************************/ +#define SCREQB_SIZEGADS 13L +#define SCREQF_SIZEGADS (1L<Flags * +*****************************************/ +#define EZREQB_NORETURNKEY 0L +#define EZREQF_NORETURNKEY (1L<Flags * +***********************************************/ +#define GLREQB_CENTERTEXT EZREQB_CENTERTEXT +#define GLREQF_CENTERTEXT EZREQF_CENTERTEXT +#define GLREQB_HIGHLIGHTTEXT 3L +#define GLREQF_HIGHLIGHTTEXT (1L<Flags * +***********************************************/ +#define GSREQB_CENTERTEXT EZREQB_CENTERTEXT +#define GSREQF_CENTERTEXT EZREQF_CENTERTEXT +#define GSREQB_HIGHLIGHTTEXT GLREQB_HIGHLIGHTTEXT +#define GSREQF_HIGHLIGHTTEXT GLREQF_HIGHLIGHTTEXT + +/***************************************** +* (V38) flags for RTFI_VolumeRequest tag * +*****************************************/ +#define VREQB_NOASSIGNS 0L +#define VREQF_NOASSIGNS (1L<DefaultFont +RT_DefaultFont equ (RT_TagBase+9) +* boolean to set the standard wait pointer in window - default FALSE +RT_WaitPointer equ (RT_TagBase+10) +* (V38) char preceding keyboard shortcut characters (will be underlined) +RT_Underscore equ (RT_TagBase+11) +* (V38) share IDCMP port with window - default FALSE +RT_ShareIDCMP equ (RT_TagBase+12) +* (V38) lock window and set standard wait pointer - default FALSE +RT_LockWindow equ (RT_TagBase+13) +* (V38) boolean to make requester's screen pop to front - default TRUE +RT_ScreenToFront equ (RT_TagBase+14) +* (V38) Requester should use this font - default: screen font +RT_TextAttr equ (RT_TagBase+15) +* (V38) call this hook for every IDCMP message not for requester +RT_IntuiMsgFunc equ (RT_TagBase+16) +* (V38) Locale ReqTools should use for text +RT_Locale equ (RT_TagBase+17) + +*** tags specific to rtEZRequestA *** +* +* title of requester window - english default "Request" or "Information" +RTEZ_ReqTitle equ (RT_TagBase+20) +* (RT_TagBase+21) reserved +* various flags (see below) +RTEZ_Flags equ (RT_TagBase+22) +* default response (activated by pressing RETURN) - default TRUE +RTEZ_DefaultResponse equ (RT_TagBase+23) + +*** tags specific to rtGetLongA *** +* +* minimum allowed value - default MININT +RTGL_Min equ (RT_TagBase+30) +* maximum allowed value - default MAXINT +RTGL_Max equ (RT_TagBase+31) +* suggested width of requester window (in pixels) +RTGL_Width equ (RT_TagBase+32) +* boolean to show the default value - default TRUE +RTGL_ShowDefault equ (RT_TagBase+33) +* (V38) string with possible responses - english default " _Ok |_Cancel" +RTGL_GadFmt equ (RT_TagBase+34) +* (V38) optional arguments for RTGL_GadFmt +RTGL_GadFmtArgs equ (RT_TagBase+35) +* (V38) invisible typing - default FALSE +RTGL_Invisible equ (RT_TagBase+36) +* (V38) window backfill - default TRUE +RTGL_BackFill equ (RT_TagBase+37) +* (V38) optional text above gadget +RTGL_TextFmt equ (RT_TagBase+38) +* (V38) optional arguments for RTGS_TextFmt +RTGL_TextFmtArgs equ (RT_TagBase+39) +* (V38) Center text - default FALSE +RTGL_CenterText equ (RT_TagBase+100) +* (V38) various flags (see below) +RTGL_Flags equ RTEZ_Flags + +*** tags specific to rtGetStringA *** +* +* suggested width of requester window (in pixels) +RTGS_Width equ RTGL_Width +* allow empty string to be accepted - default FALSE +RTGS_AllowEmpty equ (RT_TagBase+80) +* (V38) string with possible responses - english default " _Ok |_Cancel" +RTGS_GadFmt equ RTGL_GadFmt +* (V38) optional arguments for RTGS_GadFmt +RTGS_GadFmtArgs equ RTGL_GadFmtArgs +* (V38) invisible typing - default FALSE +RTGS_Invisible equ RTGL_Invisible +* (V38) window backfill - default TRUE +RTGS_BackFill equ RTGL_BackFill +* (V38) optional text above gadget +RTGS_TextFmt equ RTGL_TextFmt +* (V38) optional arguments for RTGS_TextFmt +RTGS_TextFmtArgs equ RTGL_TextFmtArgs +* (V38) Center text - default FALSE +RTGS_CenterText equ RTGL_CenterText +* (V38) various flags (see below) +RTGS_Flags equ RTEZ_Flags + +*** tags specific to rtFileRequestA *** +* +* various flags (see below) +RTFI_Flags equ (RT_TagBase+40) +* suggested height of file requester +RTFI_Height equ (RT_TagBase+41) +* replacement text for 'Ok' gadget (max 6 chars) +RTFI_OkText equ (RT_TagBase+42) +* (V38) bring up volume requester, tag data holds flags (see below) +RTFI_VolumeRequest equ (RT_TagBase+43) +* (V38) call this hook for every file in the directory +RTFI_FilterFunc equ (RT_TagBase+44) +* (V38) allow empty file to be accepted - default FALSE +RTFI_AllowEmpty equ (RT_TagBase+45) + +*** tags specific to rtFontRequestA *** +* +* various flags (see below) +RTFO_Flags equ RTFI_Flags +* suggested height of font requester +RTFO_Height equ RTFI_Height +* replacement text for 'Ok' gadget (max 6 chars) +RTFO_OkText equ RTFI_OkText +* suggested height of font sample display - default 24 +RTFO_SampleHeight equ (RT_TagBase+60) +* minimum height of font displayed +RTFO_MinHeight equ (RT_TagBase+61) +* maximum height of font displayed +RTFO_MaxHeight equ (RT_TagBase+62) +* [(RT_TagBase+63) to (RT_TagBase+66) used below] +* (V38) call this hook for every font +RTFO_FilterFunc equ RTFI_FilterFunc + +*** (V38) tags for rtScreenModeRequestA *** +* various flags (see below) +RTSC_Flags equ RTFI_Flags +* suggested height of screenmode requester +RTSC_Height equ RTFI_Height +* replacement text for 'Ok' gadget (max 6 chars) +RTSC_OkText equ RTFI_OkText +* property flags (see also RTSC_PropertyMask) +RTSC_PropertyFlags equ (RT_TagBase+90) +* property mask - default all bits in RTSC_PropertyFlags considered +RTSC_PropertyMask equ (RT_TagBase+91) +* minimum display width allowed +RTSC_MinWidth equ (RT_TagBase+92) +* maximum display width allowed +RTSC_MaxWidth equ (RT_TagBase+93) +* minimum display height allowed +RTSC_MinHeight equ (RT_TagBase+94) +* maximum display height allowed +RTSC_MaxHeight equ (RT_TagBase+95) +* minimum display depth allowed +RTSC_MinDepth equ (RT_TagBase+96) +* maximum display depth allowed +RTSC_MaxDepth equ (RT_TagBase+97) +* call this hook for every display mode id +RTSC_FilterFunc equ RTFI_FilterFunc + +*** tags for rtChangeReqAttrA *** +* +* file requester - set directory +RTFI_Dir equ (RT_TagBase+50) +* file requester - set wildcard pattern +RTFI_MatchPat equ (RT_TagBase+51) +* file requester - add a file or directory to the buffer +RTFI_AddEntry equ (RT_TagBase+52) +* file requester - remove a file or directory from the buffer +RTFI_RemoveEntry equ (RT_TagBase+53) +* font requester - set font name of selected font +RTFO_FontName equ (RT_TagBase+63) +* font requester - set font size +RTFO_FontHeight equ (RT_TagBase+64) +* font requester - set font style +RTFO_FontStyle equ (RT_TagBase+65) +* font requester - set font flags +RTFO_FontFlags equ (RT_TagBase+66) +* (V38) screenmode requester - get display attributes from screen +RTSC_ModeFromScreen equ (RT_TagBase+80) +* (V38) screenmode requester - set display mode id (32-bit extended) +RTSC_DisplayID equ (RT_TagBase+81) +* (V38) screenmode requester - set display width +RTSC_DisplayWidth equ (RT_TagBase+82) +* (V38) screenmode requester - set display height +RTSC_DisplayHeight equ (RT_TagBase+83) +* (V38) screenmode requester - set display depth +RTSC_DisplayDepth equ (RT_TagBase+84) +* (V38) screenmode requester - set overscan type, 0 for regular size +RTSC_OverscanType equ (RT_TagBase+85) +* (V38) screenmode requester - set autoscroll +RTSC_AutoScroll equ (RT_TagBase+86) + +*** tags for rtPaletteRequestA *** +* +* initially selected color - default 1 +RTPA_Color equ (RT_TagBase+70) + +*** tags for rtReqHandlerA *** +* +* end requester by software control, set tagdata to REQ_CANCEL, REQ_OK or +* in case of rtEZRequest to the return value +RTRH_EndRequest equ (RT_TagBase+60) + +*** tags for rtAllocRequestA *** +* no tags defined yet + + +************* +* RT_ReqPos * +************* +REQPOS_POINTER equ 0 +REQPOS_CENTERWIN equ 1 +REQPOS_CENTERSCR equ 2 +REQPOS_TOPLEFTWIN equ 3 +REQPOS_TOPLEFTSCR equ 4 + +******************* +* RTRH_EndRequest * +******************* +REQ_CANCEL equ 0 +REQ_OK equ 1 + +**************************************** +* flags for RTFI_Flags and RTFO_Flags * +* or filereq->Flags and fontreq->Flags * +**************************************** + BITDEF FREQ,NOBUFFER,2 + +****************************************** +* flags for RTFI_Flags or filereq->Flags * +****************************************** + BITDEF FREQ,MULTISELECT,0 + BITDEF FREQ,SAVE,1 + BITDEF FREQ,NOFILES,3 + BITDEF FREQ,PATGAD,4 + BITDEF FREQ,SELECTDIRS,12 + +****************************************** +* flags for RTFO_Flags or fontreq->Flags * +****************************************** + BITDEF FREQ,FIXEDWIDTH,5 + BITDEF FREQ,COLORFONTS,6 + BITDEF FREQ,CHANGEPALETTE,7 + BITDEF FREQ,LEAVEPALETTE,8 + BITDEF FREQ,SCALE,9 + BITDEF FREQ,STYLE,10 + +****************************************************** +* (V38) flags for RTSC_Flags or screenmodereq->Flags * +****************************************************** + BITDEF SCREQ,SIZEGADS,13 + BITDEF SCREQ,DEPTHGAD,14 + BITDEF SCREQ,NONSTDMODES,15 + BITDEF SCREQ,GUIMODES,16 + BITDEF SCREQ,AUTOSCROLLGAD,18 + BITDEF SCREQ,OVERSCANGAD,19 + +****************************************** +* flags for RTEZ_Flags or reqinfo->Flags * +****************************************** + BITDEF EZREQ,NORETURNKEY,0 + BITDEF EZREQ,LAMIGAQUAL,1 + BITDEF EZREQ,CENTERTEXT,2 + +************************************************ +* (V38) flags for RTGL_Flags or reqinfo->Flags * +************************************************ + BITDEF GLREQ,CENTERTEXT,EZREQB_CENTERTEXT + BITDEF GLREQ,HIGHLIGHTTEXT,3 + +************************************************ +* (V38) flags for RTGS_Flags or reqinfo->Flags * +************************************************ + BITDEF GSREQ,CENTERTEXT,EZREQB_CENTERTEXT + BITDEF GSREQ,HIGHLIGHTTEXT,GLREQB_HIGHLIGHTTEXT + +****************************************** +* (V38) flags for RTFI_VolumeRequest tag * +****************************************** + BITDEF VREQ,NOASSIGNS,0 + BITDEF VREQ,NODISKS,1 + BITDEF VREQ,ALLDISKS,2 + +* +* Following things are obsolete in ReqTools V38. +* DON'T USE THESE IN NEW CODE! +* + IFND NO_REQTOOLS_OBSOLETE +rtfi_Hook equ rtfi_private1 +rtfo_Hook equ rtfo_private1 +REQHOOK_WILDFILE equ 0 +REQHOOK_WILDFONT equ 1 + BITDEF FREQ,DOWILDFUNC,11 + ENDC + + ENDC ; LIBRARIES_REQTOOLS_I diff --git a/platforms/amiga/pistorm-dev/pistorm_dev_amiga/reqtools/libraries/reqtools_lib.i b/platforms/amiga/pistorm-dev/pistorm_dev_amiga/reqtools/libraries/reqtools_lib.i new file mode 100644 index 0000000..b7a0409 --- /dev/null +++ b/platforms/amiga/pistorm-dev/pistorm_dev_amiga/reqtools/libraries/reqtools_lib.i @@ -0,0 +1,52 @@ + IFND LIBRARIES_REQTOOLS_LIB_I +LIBRARIES_REQTOOLS_LIB_I SET 1 +** +** $Filename: libraries/reqtools_lib.i $ +** $Release: 2.2 $ +** +** (C) Copyright 1991-1994 Nico François +** All Rights Reserved +** + + IFND EXEC_TYPES_I + include "exec/types.i" + ENDC + IFND EXEC_NODES_I + include "exec/nodes.i" + ENDC + IFND EXEC_LISTS_I + include "exec/lists.i" + ENDC + IFND EXEC_LIBRARIES_I + include "exec/libraries.i" + ENDC + + LIBINIT + + LIBDEF _LVOrtAllocRequestA + LIBDEF _LVOrtFreeRequest + LIBDEF _LVOrtFreeReqBuffer + LIBDEF _LVOrtChangeReqAttrA + LIBDEF _LVOrtFileRequestA + LIBDEF _LVOrtFreeFileList + LIBDEF _LVOrtEZRequestA + LIBDEF _LVOrtGetStringA + LIBDEF _LVOrtGetLongA + LIBDEF _LVOrtInternalGetPasswordA ; private! + LIBDEF _LVOrtInternalEnterPasswordA ; private! + LIBDEF _LVOrtFontRequestA + LIBDEF _LVOrtPaletteRequestA + LIBDEF _LVOrtReqHandlerA + LIBDEF _LVOrtSetWaitPointer + LIBDEF _LVOrtGetVScreenSize + LIBDEF _LVOrtSetReqPosition + LIBDEF _LVOrtSpread + LIBDEF _LVOrtScreenToFrontSafely + LIBDEF _LVOrtScreenModeRequestA + LIBDEF _LVOrtCloseWindowSafely + LIBDEF _LVOrtLockWindow + LIBDEF _LVOrtUnlockWindow + LIBDEF _LVOrtLockPrefs + LIBDEF _LVOrtUnlockPrefs + + ENDC ; LIBRARIES_REQTOOLS_LIB_I diff --git a/platforms/amiga/pistorm-dev/pistorm_dev_amiga/reqtools/pragmas/reqtools.h b/platforms/amiga/pistorm-dev/pistorm_dev_amiga/reqtools/pragmas/reqtools.h new file mode 100644 index 0000000..cc19416 --- /dev/null +++ b/platforms/amiga/pistorm-dev/pistorm_dev_amiga/reqtools/pragmas/reqtools.h @@ -0,0 +1,33 @@ + +/* + * reqtools.library © 1991-1994 Nico François + * + */ + +#pragma libcall ReqToolsBase rtAllocRequestA 1E 8002 +#pragma libcall ReqToolsBase rtFreeRequest 24 901 +#pragma libcall ReqToolsBase rtFreeReqBuffer 2A 901 +#pragma libcall ReqToolsBase rtChangeReqAttrA 30 8902 +#pragma libcall ReqToolsBase rtFileRequestA 36 8BA904 +#pragma libcall ReqToolsBase rtFreeFileList 3C 801 +#pragma libcall ReqToolsBase rtEZRequestA 42 8CBA905 +#pragma libcall ReqToolsBase rtGetStringA 48 8BA0905 +#pragma libcall ReqToolsBase rtGetLongA 4E 8BA904 +#pragma libcall ReqToolsBase rtFontRequestA 60 8B903 +#pragma libcall ReqToolsBase rtPaletteRequestA 66 8BA03 +#pragma libcall ReqToolsBase rtReqHandlerA 6C 80903 +#pragma libcall ReqToolsBase rtSetWaitPointer 72 801 +#pragma libcall ReqToolsBase rtGetVScreenSize 78 A9803 +#pragma libcall ReqToolsBase rtSetReqPosition 7E A98004 +#pragma libcall ReqToolsBase rtSpread 84 32109806 +#pragma libcall ReqToolsBase rtScreenToFrontSafely 8A 801 +#pragma libcall ReqToolsBase rtScreenModeRequestA 90 8B903 +#pragma libcall ReqToolsBase rtCloseWindowSafely 96 801 +#pragma libcall ReqToolsBase rtLockWindow 9C 801 +#pragma libcall ReqToolsBase rtUnlockWindow A2 9802 +/**/ +/* Private function only to be used by the ReqTools Preference editor.*/ +/* Only present in library versions _above_ 38.362 [1.3] and 38.810 [2.0]!*/ +/**/ +#pragma libcall ReqToolsBase rtLockPrefs A8 0 +#pragma libcall ReqToolsBase rtUnlockPrefs AE 0 diff --git a/platforms/amiga/pistorm-dev/pistorm_dev_amiga/reqtools/proto/reqtools.h b/platforms/amiga/pistorm-dev/pistorm_dev_amiga/reqtools/proto/reqtools.h new file mode 100644 index 0000000..8ea3c24 --- /dev/null +++ b/platforms/amiga/pistorm-dev/pistorm_dev_amiga/reqtools/proto/reqtools.h @@ -0,0 +1,4 @@ +#include +extern struct ReqToolsBase *ReqToolsBase; +#include +#include diff --git a/platforms/amiga/pistorm-dev/pistorm_dev_amiga/reqtools/utility/hooks.h b/platforms/amiga/pistorm-dev/pistorm_dev_amiga/reqtools/utility/hooks.h new file mode 100644 index 0000000..d9f86b4 --- /dev/null +++ b/platforms/amiga/pistorm-dev/pistorm_dev_amiga/reqtools/utility/hooks.h @@ -0,0 +1,25 @@ +#ifndef UTILITY_HOOKS_H +#define UTILITY_HOOKS_H +/* +** $Filename: utility/tagitem.i $ +** $Release: 1.0 $ +** +** Clone of 2.0 include file 'utility/hooks.h' +*/ + +#ifndef EXEC_TYPES_H +#include "exec/types.h" +#endif /* EXEC_TYPES_H */ + +#ifndef EXEC_NODES_H +#include "exec/nodes.h" +#endif /* EXEC_NODES_H */ + +struct Hook { + struct MinNode h_MinNode; + ULONG (*h_Entry)(); + ULONG (*h_SubEntry)(); + APTR h_Data; + }; + +#endif /* UTILITY_HOOKS_H */ diff --git a/platforms/amiga/pistorm-dev/pistorm_dev_amiga/reqtools/utility/hooks.i b/platforms/amiga/pistorm-dev/pistorm_dev_amiga/reqtools/utility/hooks.i new file mode 100644 index 0000000..a23aff5 --- /dev/null +++ b/platforms/amiga/pistorm-dev/pistorm_dev_amiga/reqtools/utility/hooks.i @@ -0,0 +1,24 @@ + IFND UTILITY_HOOKS_I +UTILITY_HOOKS_I SET 1 +** +** $Filename: utility/tagitem.i $ +** $Release: 1.0 $ +** +** Clone of 2.0 include file 'utility/hools.i' +** + + IFND EXEC_TYPES_I + INCLUDE "exec/types.i" + ENDC + + IFND EXEC_NODES_I + INCLUDE "exec/nodes.i" + ENDC + + STRUCTURE HOOK,MLN_SIZE + APTR h_Entry + APTR h_SubEntry + APTR h_Data + LABEL h_SIZEOF + + ENDC ; UTILITY_HOOKS_I diff --git a/platforms/amiga/pistorm-dev/pistorm_dev_amiga/reqtools/utility/tagitem.h b/platforms/amiga/pistorm-dev/pistorm_dev_amiga/reqtools/utility/tagitem.h new file mode 100644 index 0000000..e7b2db2 --- /dev/null +++ b/platforms/amiga/pistorm-dev/pistorm_dev_amiga/reqtools/utility/tagitem.h @@ -0,0 +1,30 @@ +#ifndef UTILITY_TAGITEM_H +#define UTILITY_TAGITEM_H +/* +** $Filename: utility/tagitem.i $ +** $Release: 1.0 $ +** +** Clone of 2.0 include file 'utility/tagitem.h' +*/ + +#ifndef EXEC_TYPES_H +#include +#endif /* EXEC_TYPES_H */ + +typedef ULONG Tag; + +struct TagItem { + Tag ti_Tag; + ULONG ti_Data; + }; + +#define TAG_DONE 0L +#define TAG_END 0L +#define TAG_IGNORE 1L +#define TAG_MORE 2L +#define TAG_SKIP 3L +#define TAG_USER 0x80000000 +#define TAGFILTER_AND 0 +#define TAGFILTER_NOT 1 + +#endif /* UTILITY_TAGITEM_H */ diff --git a/platforms/amiga/pistorm-dev/pistorm_dev_amiga/reqtools/utility/tagitem.i b/platforms/amiga/pistorm-dev/pistorm_dev_amiga/reqtools/utility/tagitem.i new file mode 100644 index 0000000..6ed22a4 --- /dev/null +++ b/platforms/amiga/pistorm-dev/pistorm_dev_amiga/reqtools/utility/tagitem.i @@ -0,0 +1,22 @@ + IFND UTILITY_TAGITEM_I +UTILITY_TAGITEM_I SET 1 +** +** $Filename: utility/tagitem.i $ +** $Release: 1.0 $ +** +** Clone of 2.0 include file 'utility/tagitem.i' +** + + STRUCTURE TagItem,0 + ULONG ti_Tag + ULONG ti_Data + LABEL ti_SIZEOF + +TAG_END equ 0 +TAG_DONE equ 0 +TAG_IGNORE equ 1 +TAG_MORE equ 2 +TAG_SKIP equ 3 +TAG_USER equ $80000000 + + ENDC ; UTILITY_TAGITEM_I diff --git a/platforms/amiga/pistorm-dev/pistorm_dev_amiga/reqtoolsnb.lib b/platforms/amiga/pistorm-dev/pistorm_dev_amiga/reqtoolsnb.lib new file mode 100644 index 0000000000000000000000000000000000000000..70bd01babfc6718eb95b3d99f3685026e44175c5 GIT binary patch literal 4704 zcmb`LU1%It6vxk<-F&PpNeHp@p_U~`F_I?ggJ|_(x6M~^k}gfOB9e8Q%*NGaCz+kC zZ4uNKMPKR%q96*@HwF8U7o~zPEg~ZL0ZJdl6@3V5WuqX7AJzXkvokw0n<~yGaF@Bi zd+-0AbMBpU?}RAvJCXJ_QQ~_d>Ydr3!O;_VBE4}9Q99S4p}BK^pVjL#G*@GuXgoob zEF3o17A&h=-EUM)#zYFGTb?NKOH;3Vyw6n|wx}0cX=r^qT41Gr)k$7WCo}Hrd>ccD z{kz5Uua9T|Htm84puZ{wCeuXmug&+~aViGA0@zW4R|{c&Q*KKpuDlc9`7nS%}LM6+!lLv!2qF|^|D z<1N>h{q10VyS#S{I=#@jxE=2WwD`T)wmky9PS&%>^O5riascP00oeCqr@p4$9Kdhv zD>2`PX#5|FVN+D&Obm^-7$N4{79(hN5~H@f+uUDq^R6E+-Va#2FJr_js_|6}4gY-8 z8%l{K%~L7v`KC8;im*qEt~LKt$M*^GWtHU^K3y$$uEx9rwCUm9Vr}g?ooU?~*Yie;;(Hqd?cji<~y=eT8#fblonGL0ljS{Wy8OahIxJ)#9oRV|r z{6K0a3)@5^A!%FuAu?S19w^B<1Pp#KcU%Z&?r={MY~ zG!(w8?Liqp=|W+aN6}ICp=3~Yq2Mpkc#7|Pg@RQrmyRAY?P|%YNCSSxP|_&fr_m={ zC>S-zvR2JX(I}O<56^QWKS1Ya{^6%X`Gt8(QWjOdC;kAGvduM&ELX=chi%xnfwq%o z{~ysG_R82lFvUi4k!)wmsyMil*37Cyj(Oan@C~&P?qNFz9yBT|CPw5O$0js~f$ikV zWoyY(M0=GXC5ICV3z@theBvoDSW`A$?$!#s!eQ(sp0Op0rlDx+Dir1yCJIZuckE`? zA!Y{)oVfyMcJlD_QVLaDFAJTV|Vqc+1jiM_(_(3Eh0A13m`i`umjep2|e+K6!9-^5wr z>)M@>{uhLQq2-19>zLrPRwXsfz{%ZDJFqTVGM&5*zkBIcw8(x>E>KENal(`4j=`Ie Hgckh+#V$cB literal 0 HcmV?d00001 -- 2.39.2