OPT OSVERSION=37,LARGE OPT PREPROCESS,REG=5,STACK=30000 /* *-- AutoRev header do NOT edit!! * * Project : AMIGA kontekst 3 * File : Kontekst.e (main) * Description : gîowny plik programu * Copyright : © 1995,1997 by Piotr Gapiïski * Author : Piotr Gapiïski * Creation Date : 28.04.97 * Current version : v0.801 * Translator : AmigaE v3.2e * * REVISION HISTORY * * v0.801 (28.04.97) * - procedury xlibsOpen i xlibsClose sâ teraz napisane w asemblerze * - nowe tooltype/template wywoîania programu * * *---TODO * - zabezpieczenie przed wieloktrotnym uruchomieniem programu * * *-- REV_END --* */ MODULE 'fabio/ttparse_oo' MODULE 'bgui/bgui','bgui/bguic','bgui/bguim','bgui', 'exec/ports','exec/nodes', 'dos/dosextens','dos/dos', 'workbench/workbench','workbench/startup', 'libraries/reqtools','reqtools', 'utility/tagitem','utility', 'tools/trapguru','tools/exceptions','amigalib/boopsi' MODULE '*global_Defs' MODULE '*program_Class' #define TEMPLATE 'NOAREXX/S,ICONIFY/S,PUBSCREEN/K' ENUM ARG_NOAREXX,ARG_ICONIFY,ARG_PUBSCREEN,NUMARGS PROC main() HANDLE DEF rdArgs=NIL,toolType=NIL:PTR TO ttparse,args=NIL:PTR TO LONG DEF scrName=NIL,noArexx=FALSE,iconify=FALSE DEF objProgram=NIL DEF wbm:PTR TO wbstartup,ps:PTR TO process,xlibs ->- wersja programu VOID '\0$VER: AKT3 '+_VERSION_+' '+_DATE_+' '+_COPYRIGHTS_ ->- NIEZBËDNE biblioteki xlibs:=[ [{utilitybase},'utility.library',36], [{bguibase},'bgui.library',41], [{reqtoolsbase},'reqtools.library',38], NIL ] ->- odczytanie parametrów programu IF wbmessage ->- program uruchomiony z WBench'a, ustaw aktualny katalog dla procesu programu ps:=FindTask(NIL) wbm:=wbmessage ps.currentdir:=wbm.arglist.lock ->- pobierz informacje z TOOLTYPE ikonki NEW toolType.ttparse(TRUE) IF toolType.error()=FALSE scrName:=toolType.get('PUBSCREEN') noArexx:=toolType.get('NOAREXX') iconify:=toolType.get('ICONIFY') ENDIF ELSE ->- program uruchomiony z CLI, odczytaj przekazywane informacje ->- aktualny katalog jest ustawiany automatycznie NEW args[NUMARGS] rdArgs:=ReadArgs(TEMPLATE,args,NIL) IF rdArgs scrName:=args[ARG_PUBSCREEN] noArexx:=args[ARG_NOAREXX] iconify:=args[ARG_ICONIFY] ENDIF ENDIF ->- trapGURU przechwytujâcy stany wyjâtkowe trapguru() ->- inicjalizacja bibliotek IF xlibsOpen(xlibs)=FALSE THEN Raise(ERROR) ->- inicjalizacja obiektów objProgram:=NewObjectA(program_MakeClass(),NIL, [ WINDOW_PubScreenName,scrName, PROGRAM_NoArexx,noArexx, PROGRAM_NoGui,iconify,TAG_DONE ]) IF objProgram THEN doMethodA(objProgram,[PRM_HANDLE_EVENT]) EXCEPT DO IF exception THEN report_exception() IF objProgram DisposeObject(objProgram) program_FreeClass() ENDIF IF rdArgs THEN FreeArgs(rdArgs) END toolType,args[NUMARGS] xlibsClose(xlibs) ENDPROC ->- procedury otwierania i zamykania bibliotek PROC xlibsOpen(xlibs) DEF name,version MOVEQ #TRUE,D1 ->- kod powrotu=TRUE MOVE.L xlibs,A0 MOVE.L A0,D0 BEQ.W end_1 ->- xlibs = NIL MOVE.L $4.W,A6 loop: MOVE.L (A0)+,A1 MOVE.L A1,D0 BEQ.W end_0 MOVEM.L A0/A1,-(A7) MOVE.L 8(A1),D0 ->- library name MOVE.L 4(A1),A1 ->- library version JSR OpenLibrary(A6) MOVEM.L (A7)+,A0/A1 MOVE.L (A1),A2 MOVE.L D0,(A2) TST.L D0 BEQ.B fail BRA.B loop fail: MOVE.L 4(A1),name MOVE.L 8(A1),version informUser('\s (v\d): obiekt nie znaleziony!\n',[name,version,NIL]) end_1: MOVEQ #FALSE,D1 end_0: MOVE.L D1,D0 ENDPROC D0 PROC xlibsClose(xlibs) MOVE.L xlibs,A0 MOVE.L A0,D0 BEQ.B end ->- xlibs = NIL MOVE.L $4.W,A6 loop: MOVE.L (A0)+,A1 MOVE.L A1,D0 BEQ.B end MOVEM.L A0/A1,-(A7) MOVE.L (A1),A1 MOVE.L (A1),A1 ->- library base JSR CloseLibrary(A6) MOVEM.L (A7)+,A0/A1 BRA.B loop end: ENDPROC /*EE folds -1 112 32 114 18 EE folds*/