123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305 |
- /*
- * GTC source file explorer
- */
- #if defined(_89)||defined(_92)
- #define BATCH_COMPILE
- #endif
- #define TITLEBAR
- //#define OPTIMIZE_ROM_CALLS
- //#define USE_KERNEL
- #define ONE_CALC
- #ifndef USE_KERNEL
- #define SAVE_SCREEN
- #endif
- #ifdef BATCH_COMPILE
- #define RELEASE
- #else
- //#define RELEASE
- /*#define _ONE_CALC_ONLY
- #define _92_ONLY*/
- #define PEDROM
- //#define _89
- #endif
- #if defined(_89)&&defined(_92)
- #error oops, both models specified...
- #endif
- #ifdef _89
- #define USE_TI89
- #define X 160
- #define Y 100
- #define q89(x,y) (x)
- #else
- #define USE_TI92PLUS
- #define USE_V200
- #define X 240
- #define Y 128
- #define q89(x,y) (y)
- #endif
- #ifdef RELEASE
- #define NDEBUG
- #endif
- #ifndef PEDROM
- #define MIN_AMS 205
- #else
- #define MIN_AMS 101
- #endif
- #include <tigcclib.h>
- //#include <kernel.h>
- #include <extgraph.h>
- #define GTC_IDE
- typedef unsigned long TI_LONG;
- typedef unsigned short TI_SHORT;
- #ifdef USE_ABSOLUTE_PATHS
- #include "E:\Paul\89\_Projex\GtC\pch.h"
- #include "E:\Paul\89\Ti-GCC\Projects\Gt-Dev\apphdr.h"
- #include "E:\Paul\89\Ti-GCC\Projects\Gt-Dev\SecureComm.h"
- #include "E:\Paul\89\Ti-GCC\Projects\Gt-Dev\Plugins.h"
- #else
- #include "pch.h"
- #include "gtdev-apphdr.h"
- #include "gtdev-securecomm.h"
- #include "gtdev-plugins.h"
- #endif
- /*#undef ST_flags
- #define ST_flags _ROM_CALL_443
- extern unsigned long ST_flags;*/
- void *kbdq=0;
- //#define ST_flags (*(unsigned long *)_rom_call_addr(443))
- //#define ST_flagsL ((unsigned int)ST_flags)
- #ifndef PEDROM
- #define ST_flagsL (*(unsigned int *)(_rom_call_addr(443)+2))
- #else
- unsigned int ST_flagsL=0;
- #endif
- char sUnpackBuf[500];
- #ifndef ONE_CALC
- int calc=0;
- void init_calc() {
- calc=CALCULATOR;
- }
- #endif
- #undef CALCULATOR
- #ifdef _89
- #define CALCULATOR 0
- #define _89_92(x,y) (x)
- #else
- #define CALCULATOR 1
- #define _89_92(x,y) (y)
- #endif
- #define HD2
- #include "Util.h"
- #include "PchUtil.h"
- #include "Display.h"
- #include "Edit.h"
- #include "Handlers.h"
- #include "EditUI.h"
- #include "Plugins.h"
- #include "Editor.h"
- #include "autoint_fix.h"
- char _ti89[0],_ti92plus[0];
- void memquit() {
- ST_helpMsg("Not enough memory!");
- ngetchx();
- }
- #if 0
- void _main(void) {
- ESI ap;
- char *fold=(char *)$(source);
- // int X=LCD_WIDTH,Y=LCD_HEIGHT;
- char *port;
- char b[50];
- int key,sel=0;
- if (AMS_1xx) {
- ST_showHelp("Works only on AMS 2.0x");
- ngetchx();
- return;
- }
- kbdq=kbd_queue();
- #ifndef ONE_CALC
- init_calc();
- #endif
- /*#undef AMS_2xx
- #define AMS_2xx 1
- if (AMS_2xx) ST_flags &= ~(0x100000);*/
- InitArgPtr(ap);
- if (GetArgType(ap) == STR_TAG) {
- fold=(char *)GetSymstrArg(ap);
- }
- if (GetArgType(ap) != END_TAG) {
- ST_helpMsg("Syntax: explore(\"folder\")");
- ngetchx();
- return;
- }
- if (!SymFindHome(fold).folder) {
- int ok=1; char c,*p=fold;
- while ((c=*--p)) if (!(c=='_' || c>='a' || c<='z' || c>='0' || c<='9')) ok=0;
- if (ok)
- ok=FolderAdd(fold);
- if (!ok) {
- ST_helpMsg("Invalid folder name");
- ngetchx();
- return;
- }
- }
- if (!(port=malloc(LCD_SIZE))) { memquit(); return; }
- do {
- char *data=malloc(400*9);
- SYM_ENTRY *SymPtr;
- int but[5];
- int n=0,i,st,M;
- void __attribute__((stkparm)) Button(int i,char *t) {
- int x=i*32; char b[100];
- but[i]=1;
- sprintf(b,"F%d %s",i+1,t);
- DrawLine(x+2,Y-9,x+31-2,Y-9,A_NORMAL);
- DrawLine(x,Y-7,x,Y-1,A_NORMAL);
- DrawLine(x+31,Y-7,x+31,Y-1,A_NORMAL);
- DrawPix(x+1,Y-8,A_NORMAL);
- DrawPix(x+31-1,Y-8,A_NORMAL);
- DrawStr(x+2,Y-7,b,A_NORMAL);
- }
- if (!data) { memquit(); break; }
- #define name(x) data+((x)+((x)<<3))
- SymPtr = SymFindFirst(fold,1);
- while (SymPtr) {
- if (SymPtr->handle) {
- unsigned int *p=HLock(SymPtr->handle);
- if (((unsigned char *)p)[*p+1]==TEXT_TAG)
- strcpy(name(n), SymPtr->name), n++;
- HeapUnlock(SymPtr->handle);
- }
- SymPtr = SymFindNext();
- }
- PortSet(port,239,127);
- ClrScr();
- DrawLine(1,0,X-2,0,A_NORMAL);
- DrawLine(0,Y-1,X-1,Y-1,A_NORMAL);
- DrawLine(0,1,0,Y-1,A_NORMAL);
- DrawLine(X-1,1,X-1,Y-1,A_NORMAL);
- memset(but,0,5*2);
- FontSetSys(0);
- Button(0,"New");
- if (n) {
- Button(1,"Setup");
- Button(2,"Build");
- Button(3,"Run");
- }
- Button(4,"About");
- /* 89 : 11 files / 92+/V200 : 14 files */
- FontSetSys(1);
- M=CALCULATOR?14:11;
- st=sel-(M+1)/2;
- if (st>n-M) st=n-M;
- if (st<0) st=0;
- for (i=0;i<M;i++) {
- if (st+i>=n) break;
- if (i==sel-st) {
- SCR_RECT rect={{3,(i<<3)+1,X-3,(i<<3)+9}};
- ScrRectFill(&rect,ScrRect,A_NORMAL);
- }
- DrawStr(3,(i<<3)+2,name(st+i),A_XOR);
- }
- PortRestore();
- LCD_restore(port);
- key=ngetchx();
- if (key==(int)KEY_UP) sel--;
- else if (key==(int)KEY_DOWN) sel++;
- else if ((i=key-KEY_F1)>=0 && i<5 && but[i]) {
- if (i==0) {
- char buffer[21] = {0};
- HANDLE handle = DialogNewSimple (140, 55);
- DialogAddTitle(handle, "NEW PROJECT", BT_OK, BT_CANCEL);
- DialogAddText(handle, 3, 20, "Follow the steps to create a new program");
- DialogAddRequest(handle, 3, 30, "Program name :", 6, 20, 14);
- DialogAddText(handle, 3, 40, "Program type :");
- if (DialogDo(handle, CENTER, CENTER, buffer, NULL) == KEY_ENTER)
- DlgMessage("GREETINGS", buffer, BT_OK, BT_NONE);
-
- } else if (i==4) {
- ST_flags &= ~(0x100000);
- DlgMessage("ABOUT GTC",
- "\n GTC C Compiler & IDE\n\n(c) 2001-2002 by Paul Froissart\n",
- BT_OK,BT_NONE);
- ST_flags |= 0x100000;
- }
- } else if (key==KEY_ENTER) {
- char *p=fold;
- while (*--p);
- *b=0;
- sprintf(b+1,"%s\\%s",p+1,name(sel));
- free(port);
- Edit(b+1+strlen(b+1),b+1+strlen(p+1)+1);
- port=malloc(LCD_SIZE);
- }
- if (sel>=n) sel-=n;
- if (sel<0) sel+=n;
- free(data);
- } while (key!=264);
- free(port);
- // if (AMS_2xx) ST_flags |= 0x100000;
- }
- #else
- void _main(void) {
- #ifndef PEDROM
- if (AMS_1xx) {
- ST_helpMsg("Please upgrade to AMS 2.0x");
- ngetchx();
- return;
- }
- #endif
- kbdq=kbd_queue();
- #ifndef ONE_CALC
- init_calc();
- #endif
- ESI ap;
- char cfold[20]; strcpy(cfold,"source");
- InitArgPtr(ap);
- if (GetArgType(ap) == STR_TAG) {
- strcpy(cfold,GetStrnArg(ap));
- }
- FixAutoint();
- while (1) {
- Port=malloc(LCD_SIZE);
- if (!Port) return;
- PortSet(Port,239,127);
- ClrScr();
- XP_C *xc=XpLoadFat(cfold);
- if (!xc) break;
- XP_S *xs=XpLoop(xc,8,std_callback,NULL);
- if (!xs) { free(xc); break; }
- char file[20]; strcpy(file,(char *)xs->d);
- while (xs->t!=1) xs--;
- char fold[20]; strcpy(fold,(char *)xs->d);
- strcpy(cfold,fold);
- free(xc);
- PortRestore();
- free(Port);
- #if 0
- char b[100];
- *b=0;
- sprintf(b+1,"%s\\%s",fold,file);
- Edit(b+1+strlen(b+1),file);
- #else
- char path[8+1+8+1];
- sprintf(path,"%.8s\\%.8s",fold,file);
- Edit(path);
- #endif
- }
- RestoreAutoint();
- PortRestore();
- free(Port);
- }
- #endif
|