home *** CD-ROM | disk | FTP | other *** search
- * This can only be assembled under DEVPAC V3.01 since there are many opcodes
- * only DEVPAC 3.01 understands. As far as I know.
-
- NOLIST
- OPT ow-,o+,ow6+,NODEBUG,NOLINE
-
- *AUTO: make KCommodity
-
- ;* $Revision Header built by KCommodity by Kai Iske *** (do not edit) ************
- ;*
- ;* © Copyright by GuntherSoft
- ;*
- ;* File : KCommodity.Asm
- ;* Created on : Sunday, 05-Jan-92 14:22:48
- ;* Created by : Kai Iske
- ;* Current revision : V1.63
- ;*
- ;*
- ;* Purpose
- ;* -------
- ;* This is a multifunctional Commodity including many useful tools.
- ;* The best part of it is the revision control system this header was made
- ;* with. All previous LogMessages got lost due to change to KCommodity to
- ;* arrange the new ones.
- ;*
- ;* Revision V1.63
- ;* --------------
- ;* changed on Sunday, 15-Mar-92 01:14:29 by Kai Iske. LogMessage :
- ;* Bugs in ESC-WindowClose, LeftyMouse and MouseBlanking removed.
- ;* When Mouse is blanked no other sprites will be turned off now.
- ;* Shell created now gets all the paths you used a PATH for.
- ;*
- ;* Revision V1.62
- ;* --------------
- ;* changed on Friday, 13-Mar-92 01:18:36 by Kai Iske. LogMessage :
- ;* Added an Online-Help function giving help for almost every function
- ;* KCommodity provides. Some bug fixes and remakes.
- ;*
- ;* Revision V1.61
- ;* --------------
- ;* changed on Wednesday, 11-Mar-92 22:33:00 by Kai Iske. LogMessage :
- ;* All windows (except for Clock-Window) are menu driven now. The old shortcuts
- ;* are kept. Improved StringGadget-Editing by adding a StringEdit-Hook. Menu-
- ;* ShortCuts may be used while editing a StringGadget. Normal ShortCuts may
- ;* still be used for convenience.
- ;*
- ;* Revision V1.60
- ;* --------------
- ;* changed on Wednesday, 11-Mar-92 02:09:43 by Kai Iske. LogMessage :
- ;* Added function to map german "Umlauts" so that these are translated into
- ;* "normal" chars. Registration may be printed out now.
- ;*
- ;* Revision V1.59
- ;* --------------
- ;* changed on Friday, 21-Feb-92 00:24:52 by Kai Iske. LogMessage :
- ;* Removed most of the ToolTypes, since all settings may be stored to a file.
- ;* Added an AppIcon and an AppMenuItem for easy popup of the control-window
- ;* (for people who can`t remember HotKeys)
- ;*
- ;* Revision V1.58
- ;* --------------
- ;* changed on Tuesday, 18-Feb-92 01:32:26 by Kai Iske. LogMessage :
- ;* Added HotKeys for all windows of KCommodity. HotKey for Shell added.
- ;* HotKey definitions may be done within a window now
- ;*
- ;* Revision V1.57
- ;* --------------
- ;* changed on Sunday, 16-Feb-92 04:25:26 by Kai Iske. LogMessage :
- ;* Preferences can be saved to alternative files to have several settings
- ;* available. Interfaces between routines enhanced. KCommodity didn`t get
- ;* quite larger (due to optimaziation). Control window now has menues.
- ;*
- ;* Revision V1.56
- ;* --------------
- ;* changed on Monday, 10-Feb-92 02:58:12 by Kai Iske. LogMessage :
- ;* Shortened KCommodity. Added Window-Close via ESC-Key. Bugs removed.
- ;* Layout changed.
- ;*
- ;* Revision V1.55
- ;* --------------
- ;* changed on Sunday, 09-Feb-92 03:32:21 by Kai Iske. LogMessage :
- ;* Bugs removed. Added function to display costs for one day in telefone bill.
- ;* Lefty mouse function added. When channels get stolen KCommodity will try
- ;* to reallocate new ones the next time.
- ;*
- ;* Revision V1.54
- ;* --------------
- ;* changed on 02-Feb-92, Sunday 02-Feb-92 by Kai Iske. LogMessage :
- ;* TimeZone/Tariff defaults can be set and will be saved to PREFSFILE.
- ;* Position of PrefsWindow may be changed via ToolType/ARexx. ESC-Key is the
- ;* terminator for a window. WB can be popped to fron when control window
- ;* should be (re)opened. PrefsWindow-Pos may be set.
- ;*
- ;* Revision V1.53
- ;* --------------
- ;* changed on 31-Jan-92, Friday 31-Jan-92 by 23:10:34. LogMessage :
- ;* Now also generates Revision Headers for Pascal/Modula programs.
- ;* Revision defines for Assembler improved since now macros are created.
- ;* Added a gadget and an ARexx command to clear the logfile.
- ;*
- ;* Revision V1.52
- ;* --------------
- ;* changed on Friday, 31-Jan-92 22:02:26 by Kai Iske. LogMessage :
- ;* Now the time and online displays and checks area handeled by a spererate
- ;* process so that the displays and values are always adjusted correctly.
- ;* Move the bill-checkbox-gadgets to the preferences window.
- ;*
- ;* Revision V1.51
- ;* --------------
- ;* changed on Sunday, 26-Jan-92 00:05:39 by Kai Iske. LogMessage :
- ;* Added a telefone bill calculator, which keeps track of all logins made and
- ;* saves them to a logfile. 3 definable times/unit for normal or cheap tariff.
- ;* Accumulated costs can be retrieved. Writing to log file can be turned off.
- ;*
- ;* Revision V1.50
- ;* --------------
- ;* changed on Sunday, 19-Jan-92 23:19:59 by Kai Iske. LogMessage :
- ;* Added new displaymodes in (Window)-TitleBar. Total amount of free memory,
- ;* graphical display of free memory and accumulated online time.
- ;*
- ;* Revision V1.49
- ;* --------------
- ;* changed on Saturday, 18-Jan-92 23:23:55 by Kai Iske. LogMessage :
- ;* Again some stupid bugs removed (why not). Added KeyStroke-Clicker with
- ;* userdefinable volume. Changed layout. Screen/Mouse-Times are reset to
- ;* previous values if a wrong one was entered.
- ;*
- ;* Revision V1.48
- ;* --------------
- ;* changed on Saturday, 18-Jan-92 02:28:32 by Kai Iske. LogMessage :
- ;* Now includes Window-Cycling with user-definable Qualifiers.
- ;* Bug hunting, but I still don`t know why it sometimes crashes on other
- ;* machines, but not on mine.
- ;*
- ;* Revision V1.47
- ;* --------------
- ;* changed on Monday, 13-Jan-92 23:05:42 by Kai Iske. LogMessage :
- ;* Now adds revision date within defines and skips defines if commented out
- ;* or just thrown away. Bug in finding the current dir removed.
- ;*
- ;* Revision V1.46
- ;* --------------
- ;* changed on Monday, 13-Jan-92 17:15:37 by Kai Iske. LogMessage :
- ;* Bug hunting. But still XOper displays some weird info. I think that`s a bug
- ;* of XOper2.3 since it displays these infos while KCommodity isn`t running.
- ;* Revision control system now gives one more define : DATE of revision
- ;*
- ;* Revision V1.45
- ;* --------------
- ;* changed on Monday, 13-Jan-92 13:50:39 by Kai Iske. LogMessage :
- ;* Removed some weird bugs which made KCommodity crash the system.
- ;*
- ;* Revision V1.44
- ;* --------------
- ;* changed on Sunday, 12-Jan-92 00:04:32 by Kai Iske. LogMessage :
- ;* Bug hunt (I hope the final). Some modifications the user probably won`t
- ;* notice
- ;*
- ;* Revision V1.43
- ;* --------------
- ;* changed on Saturday, 11-Jan-92 03:26:14 by Kai Iske. LogMessage :
- ;* Error in Event-Handler removed due to the fact that not all registers have
- ;* been stored on stack before workthrough of routine
- ;*
- ;* Revision V1.42
- ;* --------------
- ;* changed on Friday, 10-Jan-92 23:23:00 by Kai Iske. LogMessage :
- ;* Added a Screen/Mouseblanker. Mouse is either blanked after the given period
- ;* of time or when key pressed. Blanking is turned off when pressing a key
- ;* or moving the mouse.
- ;*
- ;* Revision V1.41
- ;* --------------
- ;* changed on Friday, 10-Jan-92 16:09:29 by Kai Iske. LogMessage :
- ;* Did some 'tuning'. ARexx ClockWinPos wasn`t recognized just after a
- ;* ClockWin 1. Control window comes to front if already active and HotKey is
- ;* pressed.
- ;*
- ;* Revision V1.40
- ;* --------------
- ;* changed on Thursday, 09-Jan-92 18:33:19 by Kai Iske. LogMessage :
- ;* Did some fine things on layout :-). Now a screentitle is set for all
- ;* windows used by KCommodity. Also all windows are centered when poped up
- ;* but they will keep their positions moved to during runtime
- ;*
- ;* Revision V1.39
- ;* --------------
- ;* changed on Thursday, 09-Jan-92 15:39:22 by Kai Iske. LogMessage :
- ;* Bad errors removed. KCommodity didn`t keep track of absolute path of file.
- ;* Now uses CurrentDir if no ???: is specified to get a correct lock to a
- ;* file. It gets the lock of ARexx`s Process->pr_CurrentDir. Clock is now
- ;* visible again :-)
- ;*
- ;* Revision V1.38
- ;* --------------
- ;* changed on Monday, 06-Jan-92 14:40:20 by Kai Iske. LogMessage :
- ;* Corrected a little bug in environment variable settings
- ;*
- ;* Revision V1.37
- ;* --------------
- ;* changed on Sunday, 05-Jan-92 15:22:13 by Kai Iske. LogMessage :
- ;* Added possibilty to 'jump over' some revisions by inserting the next
- ;* revision number into gadgets
- ;*
- ;* Revision V1.36
- ;* --------------
- ;* --- Initial release ---
- ;*
- ;*********************************************************************************
- REVISION MACRO ; This is the macro for the revision number
- dc.b "1.63"
- ENDM
- REVDATE MACRO ; This is the macro for the revision date
- dc.b "15-Mar-92"
- ENDM
-
-
- INCLUDE KCommodity.i ; Include our Headers
- ; For DevPac >= 3 the preincludes
- ; will be loaded
- ; Otherwise the includes will be taken
-
- INCDIR AH:
- INCLUDE Misc/MyMacros.i ; Include MyMacros
-
-
- **********************************************************************
- * Versionnumber of libs, we need *
- **********************************************************************
- NEED_LIBVER EQU 37
-
-
- DEPTHWIDTH EQU 28
- READBUFFSIZE EQU 8192
- MAXBARLEN EQU 150
- MAXPAGES EQU 5
- TIMEPAGE EQU 0
- DMEMPAGE EQU 1
- TMEMPAGE EQU 2
- GMEMPAGE EQU 3
- ONLINEPAGE EQU 4
-
- ESCKEY EQU $1B
- HELPKEY EQU $5f
-
- SIGTIMEREMAKE EQU SIGBREAKF_CTRL_F
- SIGHANDSHAKE EQU SIGBREAKF_CTRL_E
- SIGBILLWIN EQU SIGBREAKF_CTRL_D
-
-
- SECTION MyCode,CODE
-
- INCLUDE Misc/BigStartUp.i ; Include the standard startup code
-
- **********************************************************************
- * Main program *
- **********************************************************************
- START move.l $4,a6 ; Test, if we`re running under 2.x
- cmp.w #36,LIB_VERSION(a6)
- bge.s .IsOver20
-
- bsr OnlyKick20
- move.l #10,-(sp)
- bra .ShownHelp
-
- .IsOver20 bsr OpenLibs ; Open libs
- tst.l d0
- beq .OpenError
-
- move.l _OurTask(pc),a0 ; Came from CLI ?
- tst.l pr_CLI(a0)
- beq.s .GoOn ; Nope -> go on
- move.l _ArgV(pc),a0 ; User requesting help ?
- move.l 4(a0),a0
- cmp.b #'?',(a0)
- bne.s .GoOn
- move.l _stdout(pc),d1
- move.l #Template,d2
- move.l #TemplateEnd-Template,d3
- LNKLIB Write,_DOSBase
- move.l #0,-(sp)
- bra .ShownHelp
-
- .GoOn bsr InitMem ; Initialize the memory
- tst.l d0
- beq .OpenError
-
- bsr MakeHotKeys ; Copy defaults to hotkey buffs
-
- lea StrEditHook,a0 ; Initialize the StringEdit-Hook
- move.l #StrEditFunc,h_Entry(a0)
- move.l #StrEditFunc,h_SubEntry(a0)
- move.l #0,h_Data(a0)
-
- bsr LoadPrefs ; Read in log preferences
- move.l PTimeZone,d0 ; Set new modes and timezone
- move.l d0,TimeZone
- move.l PTariff,d0
- move.b d0,CheapMode
-
- bsr GetToolTypes ; Get tooltypes
-
- bsr InitGfx ; Initialize graphics
- tst.l d0
- beq.s .OpenError
-
- bsr InitARexx ; Create our ARexx Port
- tst.l d0
- beq.s .OpenError
-
- bsr InitAudio ; Init Audio-Stuff
- tst.l d0
- beq.s .OpenError
-
- bsr InitConsole ; Open Console-Device
- tst.l d0
- beq.s .OpenError
-
- bsr InitBroker ; Start broker
- tst.l d0
- beq.s .OpenError
-
- bsr InitChecker ; Init the timer process
- tst.l d0
- beq.s .OpenError
-
- bsr InitAppIcon ; Init our AppIcon
- tst.l d0
- beq.s .OpenError
-
- bsr InitAppItems
- tst.l d0
- beq.s .OpenError
-
- tst.b DoPopUp ; If pop up was requested
- beq.s .NoInitPop
- bsr OpenOurWindow ; Do so
- tst.l d0
- bne.s .OpenError
- .NoInitPop bsr CheckBroker ; Check Broker Messages
- bra.s .EndPrg
-
- .OpenError tst.l ErrorNum
- blt.s .NoErrorDisp
- bsr DisplayError
- .NoErrorDisp moveq #10,d0
- bra.s .CloseDown
-
- .EndPrg moveq #0,d0
- .CloseDown move.l d0,-(sp)
- CALLSYS Forbid ; Disable any messages to our stuff
- bsr RemoveAppItems
- bsr RemoveAppIcon ; Remove AppIcon-Stuff
- bsr RemoveBroker ; Close resources
- bsr RemoveConsole ; Remove Console-Device
- bsr RemoveAudio ; Remove Audio-Stuff
- bsr RemoveARexx ; Remove ARexx port
- bsr RemoveGfx ; Remove our gfx
- CALLSYS Permit ; So, that`s ok.
- bsr DeleteEnvs ; Remove environment vars
- bsr RemoveMem
- .ShownHelp bsr CloseLibs
- move.l (sp)+,d0
- rts
-
-
-
-
-
- **********************************************************************
- * Attempt to load the libs *
- **********************************************************************
- OpenLibs move.l #0,ErrorNum
- lea IntName,a1
- move.l a1,EasyArg
- move.l #NEED_LIBVER,d0
- CALLSYS OpenLibrary
- tst.l d0
- beq .LibError
- move.l d0,_IntuitionBase
-
- lea ComName,a1
- move.l a1,EasyArg
- move.l #NEED_LIBVER,d0
- DOLIB OpenLibrary
- tst.l d0
- beq .LibError
- move.l d0,_CxBase
-
- lea LayerName,a1
- move.l a1,EasyArg
- move.l #NEED_LIBVER,d0
- DOLIB OpenLibrary
- tst.l d0
- beq .LibError
- move.l d0,_LayersBase
-
- lea GadName,a1
- move.l a1,EasyArg
- moveq #NEED_LIBVER,d0
- DOLIB OpenLibrary
- tst.l d0
- beq.s .LibError
- move.l d0,_GadToolsBase
-
- lea GfxName,a1
- move.l a1,EasyArg
- move.l #NEED_LIBVER,d0
- DOLIB OpenLibrary
- tst.l d0
- beq.s .LibError
- move.l d0,_GfxBase
-
- lea RexxSysName,a1
- move.l a1,EasyArg
- move.l #0,d0
- DOLIB OpenLibrary
- tst.l d0
- beq.s .LibError
- move.l d0,_RexxSysBase
-
- lea AslName,a1
- move.l a1,EasyArg
- move.l #NEED_LIBVER,d0
- DOLIB OpenLibrary
- tst.l d0
- beq.s .LibError
- move.l d0,_AslBase
-
- lea WBName,a1
- move.l a1,EasyArg
- move.l #NEED_LIBVER,d0
- DOLIB OpenLibrary
- move.l d0,_WorkBenchBase
- tst.l d0
- beq.s .LibError
- .LibError rts
-
-
-
- **********************************************************************
- * Close Libs again *
- **********************************************************************
- CloseLibs tst.l _WorkBenchBase
- beq.s .NoWBBase
- move.l _WorkBenchBase,a1
- CALLSYS CloseLibrary
-
- .NoWBBase tst.l _AslBase
- beq.s .NoAslBase
- move.l _AslBase,a1
- CALLSYS CloseLibrary
-
- .NoAslBase tst.l _RexxSysBase
- beq.s .NoRexxSysBase
- move.l _RexxSysBase,a1
- CALLSYS CloseLibrary
-
- .NoRexxSysBase tst.l _GfxBase
- beq.s .NoGfxBase
- move.l _GfxBase,a1
- CALLSYS CloseLibrary
-
- .NoGfxBase tst.l _GadToolsBase
- beq.s .NoGadToolsBase
- move.l _GadToolsBase,a1
- CALLSYS CloseLibrary
-
- .NoGadToolsBase tst.l _LayersBase
- beq.s .NoLayersBase
- move.l _LayersBase,a1
- CALLSYS CloseLibrary
-
- .NoLayersBase tst.l _CxBase
- beq.s .NoCxBase
- move.l _CxBase,a1
- CALLSYS CloseLibrary
-
- .NoCxBase tst.l _IntuitionBase
- beq.s .NoIntBase
- move.l _IntuitionBase,a1
- CALLSYS CloseLibrary
- .NoIntBase rts
-
-
-
-
- **********************************************************************
- * Initialize some structures from system-memory *
- **********************************************************************
- InitMem move.l #18,ErrorNum ; A small dummy buffer
- move.l #READBUFFSIZE,d0
- move.l #MEMF_CLEAR|MEMF_PUBLIC,d1
- CALLSYS AllocMem
- move.l d0,ReadBuffer
- tst.l d0
- beq.s .Error
-
- move.l #19,ErrorNum ; Timer Request
- move.l #IOTV_SIZE,d0
- move.l #MEMF_CLEAR|MEMF_PUBLIC,d1
- DOLIB AllocMem
- move.l d0,TimerReq
- tst.l d0
- beq.s .Error
-
- move.l #20,ErrorNum ; Audio Request
- move.l #ioa_SIZEOF,d0
- move.l #MEMF_CLEAR|MEMF_PUBLIC,d1
- DOLIB AllocMem
- move.l d0,AudioReq
- tst.l d0
- beq.s .Error
-
- move.l #21,ErrorNum ; Console Request
- move.l #IOSTD_SIZE,d0
- move.l #MEMF_CLEAR|MEMF_PUBLIC,d1
- DOLIB AllocMem
- move.l d0,ConsoleReq
- tst.l d0
- beq.s .Error
- moveq #1,d0
- .Error rts
-
-
-
-
- **********************************************************************
- * Remove used resources *
- **********************************************************************
- RemoveMem tst.l ConsoleReq
- beq.s .NoConsoleReq
- move.l ConsoleReq,a1
- move.l #IOSTD_SIZE,d0
- CALLSYS FreeMem
-
- .NoConsoleReq tst.l AudioReq
- beq.s .NoAudioReq
- move.l AudioReq,a1
- move.l #ioa_SIZEOF,d0
- CALLSYS FreeMem
-
- .NoAudioReq tst.l TimerReq
- beq.s .NoTimerReq
- move.l TimerReq,a1
- move.l #IOTV_SIZE,d0
- CALLSYS FreeMem
-
- .NoTimerReq tst.l ReadBuffer
- beq.s .NoReadBuff
- move.l ReadBuffer,a1
- move.l #READBUFFSIZE,d0
- CALLSYS FreeMem
- .NoReadBuff rts
-
-
-
-
- **********************************************************************
- * Init the Rastport for the title bar *
- **********************************************************************
- InitGfx link a5,#-4
- bsr LockScreen
- tst.l d0
- beq .NoGfx
-
- move.l d0,a0 ; Get font for titlebar
- move.l sc_BarLayer(a0),a0
- move.l lr_rp(a0),a0
- move.l rp_Font(a0),a0 ; A0 = Font used in bar layer-rastport
- lea TxtAttr,a1 ; Store attributes of font
- move.l LN_NAME(a0),ta_Name(a1)
- moveq #0,d7
- move.w tf_YSize(a0),d7 ; Get height of font
- move.w d7,ta_YSize(a1) ; and for bitplanes of title
- move.b tf_Style(a0),ta_Style(a1)
- move.b tf_Flags(a0),ta_Flags(a1)
-
- move.l -4(a5),a0
- moveq #0,d0
- moveq #0,d1
- move.w sc_Width(a0),d0 ; Center control window
- move.w sc_Height(a0),d1 ; on first popup
- move.w d0,d2
- move.w d1,d3
- move.w d0,d4
- move.w d1,d5
- sub.w #WINWIDTH,d0
- sub.w #WINHEIGHT,d1
- asr.w #1,d0
- asr.w #1,d1
- lea MyWindowDef,a1
- move.w d0,nw_LeftEdge(a1)
- move.w d1,nw_TopEdge(a1)
- sub.w #LOGWINWIDTH,d2 ; Center logmessage window
- sub.w #LOGWINHEIGHT,d3 ; on first popup
- asr.w #1,d2
- asr.w #1,d3
- lea LogWinDef,a1
- move.w d2,nw_LeftEdge(a1)
- move.w d3,nw_TopEdge(a1)
- sub.w #HELPWINWIDTH,d4 ; Center help window on popup
- sub.w #HELPWINHEIGHT,d5
- asr.w #1,d4
- asr.w #1,d5
- lea HelpWinDef,a1
- move.w d4,nw_LeftEdge(a1)
- move.w d5,nw_TopEdge(a1)
- move.l sc_FirstWindow(a0),a0
- move.l wd_RPort(a0),a0 ; Get depth of workbench
- move.l rp_BitMap(a0),a0
- moveq #0,d0
- move.b bm_Depth(a0),d0
- move.w d0,BitMapDepth
-
- moveq #0,d1
- move.l -4(a5),a0
- move.w sc_Width(a0),d1
- move.w d1,BitMapWidth ; Store sized
- move.w d7,BitMapHeight ; To get the full width and height
- ; isn`t quite intelligent, but
- ; it doesn`t take too much memory. SO WHAT
-
- move.l #13,ErrorNum
- move.l #bm_SIZEOF,d0
- move.l #MEMF_PUBLIC|MEMF_CLEAR,d1
- CALLSYS AllocMem
- move.l d0,MyBitMap
- tst.l d0
- beq .NoGfx
-
- move.l #14,ErrorNum
- move.l #rp_SIZEOF,d0
- move.l #MEMF_PUBLIC|MEMF_CLEAR,d1
- CALLSYS AllocMem
- move.l d0,MyRastPort
- tst.l d0
- beq .NoGfx
-
- move.l MyBitMap,a0 ; Initialize our BitMap
- move.w BitMapDepth,d0
- move.w BitMapWidth,d1
- move.w BitMapHeight,d2
- LNKLIB InitBitMap,_GfxBase
-
- move.l #7,ErrorNum
- move.l MyBitMap,a4
- move.w bm_BytesPerRow(a4),d1 ; Get bytes per row
- mulu BitMapHeight,d1
- move.l d1,BitMapSize ; Store size for one plane
- lea bm_Planes(a4),a4 ; Get address of Planes array
- move.w BitMapDepth,d7 ; Make all planes
- subq.w #1,d7
- .MakeBitMaps move.l BitMapSize,d0
- move.l #MEMF_CHIP|MEMF_CLEAR,d1
- CALLSYS AllocMem
- tst.l d0
- beq .NoGfx
- move.l d0,(a4)+
- dbf d7,.MakeBitMaps
-
- move.l MyRastPort,a1 ; Init RPort
- LNKLIB InitRastPort,_GfxBase
-
- move.l MyRastPort,a1
- move.l MyBitMap,a0
- move.l a0,rp_BitMap(a1) ; Add pointer of BitMap to RPort
- moveq #1,d0
- DOLIB SetRast ; Clear RPort
-
- move.l #8,ErrorNum
- lea TxtAttr,a0 ; Try to open font in RAM first
- DOLIB OpenFont
- move.l d0,MyFont
- tst.l d0
- bne.s .GotFont
-
- lea DiskFontName,a1 ; If it failed try to open
- moveq #NEED_LIBVER,d0 ; diskfont.library
- CALLSYS OpenLibrary
- tst.l d0
- beq .NoGfx ; If that also fails -> quit
- move.l d0,_DiskFontBase
-
- lea TxtAttr,a0 ; Try to get font from disk
- LNKLIB OpenDiskFont,_DiskFontBase
- move.l d0,MyFont
- tst.l d0
- bne.s .GotDiskFont ; Ok -> go on
- move.l _DiskFontBase,a1 ; Close lib and quit
- CALLSYS CloseLibrary
- bra.s .NoGfx
-
- .GotDiskFont move.l _DiskFontBase,a1 ; Close lib
- CALLSYS CloseLibrary
-
- .GotFont move.l MyRastPort,a1 ; Set font for rastport
- move.l MyFont,a0
- LNKLIB SetFont,_GfxBase
-
- move.l MyRastPort,a1 ; Set draw mode
- move.l #RP_JAM2,d0
- DOLIB SetDrMd
-
- move.l MyRastPort,a1 ; and now front and back pen
- move.l #0,d0
- DOLIB SetAPen
- move.l MyRastPort,a1
- move.l #1,d0
- DOLIB SetBPen
-
- move.l #MEMF_TOTAL,d1 ; Get total available mem
- CALLSYS AvailMem
- move.l d0,MaxMem
-
- moveq #1,d0
- .NoGfx move.l d0,-(sp)
- bsr UnlockScreen
- move.l (sp)+,d0
- unlk a5
- rts
-
-
-
-
- **********************************************************************
- * Removes the Gfx areas again *
- **********************************************************************
- RemoveGfx bsr OnScreen ; UnBlank Screen
- bsr OnMouse ; UnBlank mouse
- bsr ClearTitleBar ; Clear title bar
- bsr CloseHotKeyWin ; Close HotKey window
- bsr CloseClockWin ; Close clock window
- bsr ClosePrefsWin ; Close preferences window
- bsr CloseOurWindow ; Close down the window
-
- tst.l MyFont ; Did we have a font
- beq.s .GotNoFont
-
- move.l MyFont,a1 ; Close font
- LNKLIB CloseFont,_GfxBase
-
- .GotNoFont tst.l MyRastPort ; Free rastport
- beq.s .GotNoRastPort
- move.l MyRastPort,a1
- move.l #rp_SIZEOF,d0
- CALLSYS FreeMem
-
- .GotNoRastPort tst.l MyBitMap
- beq.s .AllFreed
- move.l MyBitMap,a4 ; Free bitplanes of BitMap
- lea bm_Planes(a4),a4
- move.w BitMapDepth,d7
- subq.w #1,d7
- .ClearBitPlanes move.l (a4)+,d0
- beq.s .FreeBitMap
- move.l d0,a1
- move.l BitMapSize,d0
- CALLSYS FreeMem
- dbf d7,.ClearBitPlanes
- .FreeBitMap move.l MyBitMap,a1 ; Free bitmap
- move.l #bm_SIZEOF,d0
- CALLSYS FreeMem
- .AllFreed rts
-
-
-
- **********************************************************************
- * Initialize the timer device *
- **********************************************************************
- InitTimer move.l #6,ErrorNum
- CALLSYS CreateMsgPort ; Try to create a msg port
- move.l d0,TimerPort
- tst.l d0
- beq .NoTimer
- move.l d0,a1
- moveq #1,d0
- moveq #0,d1
- move.b MP_SIGBIT(a1),d1 ; Get sig flag
- asl.l d1,d0
- move.l d0,TimerSigFlag
- move.l #TimerPortName,LN_NAME(a1)
- move.b #0,LN_PRI(a1)
- DOLIB AddPort
-
- move.l #0,ErrorNum
- lea TimerName,a0 ; Try to open timer.device
- move.l a0,EasyArg
- move.l #UNIT_VBLANK,d0
- move.l TimerReq,a1
- move.l TimerPort,MN_REPLYPORT(a1)
- move.b #0,LN_PRI(a1)
- moveq #0,d1
- DOLIB OpenDevice
- tst.l d0
- beq.s .GotDevice
- moveq #0,d0
- bra.s .NoTimer
- .GotDevice move.l TimerReq,a1 ; Set structure
- move.w #TR_ADDREQUEST,IO_COMMAND(a1)
- move.b #0,IO_FLAGS(a1)
- move.b #0,IO_ERROR(a1)
- move.l #0,IOTV_TIME+TV_SECS(a1) ; Set first timer amount
- move.l #1000,IOTV_TIME+TV_MICRO(a1) ; for task wakeup
- DOLIB SendIO
- moveq #1,d0
- .NoTimer rts
-
-
-
-
- **********************************************************************
- * Remove timer device resources *
- **********************************************************************
- RemoveTimer move.l TimerReq,a1 ; Did we have a device ?
- tst.l IO_DEVICE(a1)
- ble.s .NoTimerDevice
- move.l TimerReq,a1 ; Request still running ?
- CALLSYS AbortIO
- move.l TimerReq,a1 ; Wait for request to end
- DOLIB WaitIO
- move.l TimerReq,a1
- DOLIB CloseDevice ; Close it a fast as possible, so
- .NoTimerDevice tst.l TimerPort ; that no more msgs can arrive
- beq.s .NoTimerPort
- move.l TimerPort,a1
- CALLSYS RemPort ; Remove port from system
- move.l TimerPort,a0
- DOLIB DeleteMsgPort
- .NoTimerPort rts
-
-
-
-
-
- **********************************************************************
- * Open Up console device for RAWKEYCONVERT *
- **********************************************************************
- InitConsole move.l #0,ErrorNum
- lea ConsoleName,a0
- move.l a0,EasyArg
- move.l #CONU_LIBRARY,d0 ; We don`t need no unit
- move.l ConsoleReq,a1
- move.l #0,d1
- CALLSYS OpenDevice
- tst.l d0
- bne.s .ConsoleError
- move.l ConsoleReq,a1
- move.l IO_DEVICE(a1),_ConsoleBase ; Get base
- moveq #1,d0
- rts
- .ConsoleError moveq #0,d0
- rts
-
-
-
-
- **********************************************************************
- * Close ConsoleDevice again *
- **********************************************************************
- RemoveConsole move.l ConsoleReq,a1
- tst.l IO_DEVICE(a1)
- ble.s .Error
- CALLSYS CloseDevice
- .Error rts
-
-
-
-
- **********************************************************************
- * Init Audio-Datas *
- **********************************************************************
- InitAudio move.l #15,ErrorNum
- CALLSYS CreateMsgPort ; Create port
- move.l d0,AudioPort
- tst.l d0
- beq .AudioError
- move.l d0,a1
- move.b MP_SIGBIT(a1),d0 ; Get sigmask
- move.l #AudioPortName,LN_NAME(a1)
- move.b #0,LN_PRI(a1)
- DOLIB AddPort
-
- move.l #0,ErrorNum
- lea AudioName,a0
- move.l a0,EasyArg
- move.l #0,d0
- move.l AudioReq,a1
- move.w #0,ioa_AllocKey(a1)
- move.l #0,ioa_Data(a1)
- move.l #0,ioa_Length(a1)
- move.l AudioPort,MN_REPLYPORT(a1)
- move.b #80,LN_PRI(a1)
- move.l #0,d1
- DOLIB OpenDevice ; Open device
- tst.l d0
- bne.s .AudioError
-
- move.l #16,ErrorNum
- bsr.s AllocChannel ; Try to allocate a channel
- tst.l d0
- bne.s .GoOn
- bsr DisplayError ; Display error on failure
- .GoOn move.l #17,ErrorNum
- move.l AudioReq,a1 ; Initial soundwrite for setup
- move.w #CMD_WRITE,IO_COMMAND(a1)
- move.b #ADIOF_PERVOL|ADIOF_NOWAIT,IO_FLAGS(a1)
- move.w #100,ioa_Period(a1)
- move.w #0,ioa_Volume(a1)
- move.l #100,ioa_Length(a1)
- move.l #ClickData,ioa_Data(a1)
- move.w #1,ioa_Cycles(a1)
- move.l IO_DEVICE(a1),a6
- jsr DEV_BEGINIO(a6)
- move.l AudioReq,a1
- CALLSYS WaitIO
- moveq #1,d0
- rts
- .AudioError moveq #0,d0
- rts
-
-
-
-
- **********************************************************************
- * Try to allocate a channel *
- **********************************************************************
- AllocChannel move.l AudioReq,a1
- move.w #ADCMD_ALLOCATE,IO_COMMAND(a1)
- move.b #ADIOF_NOWAIT|IOF_QUICK,IO_FLAGS(a1)
- move.l #AnyChannel,ioa_Data(a1)
- move.l #8,ioa_Length(a1)
- move.l IO_DEVICE(a1),a6
- jsr DEV_BEGINIO(a6)
- move.l AudioReq,a1
- move.w ioa_AllocKey(a1),AllocKey
- tst.b IO_ERROR(a1)
- beq.s .NoError
- move.w #0,AllocKey ; On error clear the allockey
- moveq #0,d0
- move.b d0,KeyClick ; ... the click function
- move.l #CLICKGAD,d1 ; and the gadget tick
- bsr SetControlBox
- moveq #0,d0
- rts
- .NoError moveq #1,d0
- rts
-
-
-
-
- **********************************************************************
- * Remove Audio-Stuff *
- **********************************************************************
- RemoveAudio tst.l AudioPort ; Remove port
- beq.s .NoAudioPort
- move.l AudioPort,a1
- CALLSYS RemPort
- move.l AudioPort,a0
- DOLIB DeleteMsgPort
- .NoAudioPort move.l AudioReq,a1
- tst.l IO_DEVICE(a1)
- ble.s .NoAudioDevice
- move.l AudioReq,a1 ; Wait for request to be finished
- CALLSYS CheckIO
- tst.l d0
- bne.s .End
- move.l AudioReq,a1
- DOLIB WaitIO
- .End move.l AudioReq,a1 ; Close device
- DOLIB CloseDevice
- .NoAudioDevice rts
-
-
-
-
-
- **********************************************************************
- * Initialize the ARexx Port *
- **********************************************************************
- InitARexx move.l #11,ErrorNum
- CALLSYS CreateMsgPort ; Create a Msg Port for ARexx
- move.l d0,ARexxPort
- tst.l d0
- beq.s .ARexxError
- move.l d0,a1
- moveq #0,d0
- moveq #1,d1
- move.b MP_SIGBIT(a1),d0 ; Get Sig flag
- asl.l d0,d1
- move.l d1,ARexxSigFlag
- lea ARexxPortName,a0
- move.l a0,LN_NAME(a1)
- move.b #0,LN_PRI(a1)
- DOLIB AddPort ; Add port to system
- moveq #1,d0
- .ARexxError rts
-
-
-
- **********************************************************************
- * Remove our ARexx port from System *
- **********************************************************************
- RemoveARexx tst.l ARexxPort
- beq.s .NoARexxPort
- move.l ARexxPort,a1
- bsr KillMessages ; Kill remaining messages
- CALLSYS RemPort ; Remove port
- move.l ARexxPort,a0
- DOLIB DeleteMsgPort
- .NoARexxPort rts
-
-
-
- **********************************************************************
- * Initialize and start broker *
- **********************************************************************
- InitBroker bsr RemoveBroker ; Begin from scratch
-
- move.l #-1,d0 ; Try to allocate signal for
- CALLSYS AllocSignal ; alarm
- move.l d0,AlarmSigBit
- tst.l d0
- blt .NoBroker
- moveq #1,d1
- asl.l d0,d1
- move.l d1,AlarmSigFlag
-
- move.l #-1,d0 ; Try to allocate signal for
- DOLIB AllocSignal ; Help
- move.l d0,HelpSigBit
- tst.l d0
- blt .NoBroker
- moveq #1,d1
- asl.l d0,d1
- move.l d1,HelpSigFlag
-
- lea PortName,a1 ; Find port name
- CALLSYS FindPort ; This is for identification
- move.l d0,DoublePort ; whether we are to quit
-
- move.l _OurTask(pc),a1 ; We have to be faster than
- move.l ToolPri,d0 ; the Input-Device
- CALLSYS SetTaskPri
-
- move.l #1,ErrorNum
- DOLIB CreateMsgPort ; Try to set msg-port
- move.l d0,BrokerPort
- tst.l d0
- beq .NoBroker
- move.l d0,a1
- moveq #1,d0
- moveq #0,d1
- move.b MP_SIGBIT(a1),d1
- asl.l d1,d0
- move.l d0,BrokerSigFlag ; Calc sig-flag
- lea PortName,a0
- move.l a0,LN_NAME(a1)
- move.b #0,LN_PRI(a1)
- DOLIB AddPort ; Add port to system
-
- move.l #2,ErrorNum
- lea MyBrokerDef,a0 ; Create broker
- move.l BrokerPort,nb_Port(a0) ; add Port-Address
- move.l CXPri,d0
- move.b d0,nb_Pri(a0) ; and Priority
- moveq #0,d0 ; No errors
- LNKLIB CxBroker,_CxBase ; install broker structure
- tst.l d0
- beq .NoBroker
- move.l d0,MyBroker
-
- move.l #3,ErrorNum ; Generate CUSTOM object
- lea RawEventAction(pc),a5 ; for Input-Events
- move.l #RAWEVENTID,d7
- bsr InitCustom
- tst.l d0
- beq .NoBroker
- move.l a4,EventFilter
-
- pea 9 ; Set PopUp key
- pea PopUpFilter
- pea POPUPKEYID
- pea DefaultPopUpKey
- pea PopUpKey
- jsr SetHotKey
- lea 20(sp),sp
- tst.l d0
- beq .NoBroker
-
- pea 10 ; Set Page-Key
- pea PageFilter
- pea PAGEKEYID
- pea DefPageHotKey
- pea PageHotKey
- jsr SetHotKey
- lea 20(sp),sp
- tst.l d0
- beq .NoBroker
-
- pea 22 ; Set prefs hotkey
- pea PrefsFilter
- pea PREFSKEYID
- pea DefPrefsHotKey
- pea PrefsHotKey
- jsr SetHotKey
- lea 20(sp),sp
- tst.l d0
- beq .NoBroker
-
- pea 23 ; Set bill hotkey
- pea BillFilter
- pea BILLKEYID
- pea DefBillHotKey
- pea BillHotKey
- jsr SetHotKey
- lea 20(sp),sp
- tst.l d0
- beq .NoBroker
-
- pea 24 ; Set HotWin hotkey
- pea HotKeyFilter
- pea HOTWINKEYID
- pea DefHotWinHotKey
- pea HotWinHotKey
- jsr SetHotKey
- lea 20(sp),sp
- tst.l d0
- beq .NoBroker
-
- pea 25 ; Set Shell HotKey
- pea ShellFilter
- pea SHELLKEYID
- pea DefShellHotKey
- pea ShellHotKey
- jsr SetHotKey
- lea 20(sp),sp
- tst.l d0
- beq.s .NoBroker
-
- pea 27 ; Set Umlaut HotKey
- pea UmlautFilter
- pea UMLAUTKEYID
- pea DefUmlautHK
- pea UmlautHotKey
- jsr SetHotKey
- lea 20(sp),sp
- tst.l d0
- beq.s .NoBroker
-
- move.l #4,ErrorNum
- move.l EventFilter,a0 ; Check for an error in filter
- DOLIB CxObjError,_CxBase ; For activation stuff
- tst.l d0
- bne.s .NoBroker
-
- move.l #5,ErrorNum
- move.l MyBroker,a0 ; Check for an error in broker
- DOLIB CxObjError,_CxBase
- tst.l d0
- bne.s .NoBroker
-
- move.b #0,Disabled
- bsr EnableBroker ; Enable broker
-
- moveq #1,d0 ; No error
- rts
- .NoBroker moveq #0,d0 ; error occured
- rts
-
-
-
- **********************************************************************
- * Remove the broker *
- **********************************************************************
- RemoveBroker tst.l BrokerPort ; Remove broker and all
- beq.s .NoPort ; attached objects
-
- move.b #0,Disabled ; Disable broker
- bsr DisableBroker
-
- move.l MyBroker,a0 ; Delete broker
- LNKLIB DeleteCxObjAll,_CxBase
-
- move.l BrokerPort,a1
- bsr KillMessages ; remove messages
- CALLSYS RemPort
- move.l BrokerPort,a0 ; Finally delete the
- DOLIB DeleteMsgPort ; Messageport
- .NoPort tst.l AlarmSigBit
- blt.s .NoSigBit
- move.l AlarmSigBit,d0
- CALLSYS FreeSignal ; Free Help-Signal
- .NoSigBit tst.l HelpSigBit
- blt.s .NoHelpSig
- move.l HelpSigBit,d0
- CALLSYS FreeSignal
- .NoHelpSig rts
-
-
-
- **********************************************************************
- * Add an AppIcon. This one uses the Broker-Port *
- **********************************************************************
- InitAppIcon tst.l AppPort
- bne.s .PortThere
- CALLSYS CreateMsgPort
- tst.l d0
- beq.s .Error
- move.l d0,AppPort
- move.l d0,a1
- move.b #0,LN_PRI(a1)
- move.l #AppPortName,LN_NAME(a1)
- moveq #0,d0
- moveq #1,d1
- move.b MP_SIGBIT(a1),d0
- asl.l d0,d1
- move.l d1,AppSigFlag
- moveq #1,d0
- moveq #0,d1
- DOLIB AddPort
- .PortThere tst.l KCXAppIcon
- bne.s .Error
- moveq #1,d0
- tst.b DispAppIcon
- beq.s .Error
- lea AppIconText,a0 ; Display AppIcon
- move.l AppPort,a1
- sub.l a2,a2
- lea KCXAppIconDef,a3
- sub.l a4,a4
- LNKLIB AddAppIconA,_WorkBenchBase
- move.l d0,KCXAppIcon
- .Error rts
-
-
-
-
- **********************************************************************
- * Remove our AppIcon *
- **********************************************************************
- RemoveAppIcon tst.l KCXAppIcon ; First remove icon
- beq.s .NoIcon
- move.l KCXAppIcon,a0
- LNKLIB RemoveAppIcon,_WorkBenchBase
- move.l #0,KCXAppIcon
- .NoIcon tst.l AppPort
- beq.s .NoPort
- move.l AppPort,a1 ; Clear all pending messages
- bsr KillMessages
- move.l AppPort,a1 ; Remove port
- CALLSYS RemPort
- move.l AppPort,a0
- DOLIB DeleteMsgPort
- .NoPort rts
-
-
-
-
- **********************************************************************
- * Add some menu items to the tools menu *
- **********************************************************************
- InitAppItems lea AppItemID,a3 ; Create all items
- lea AppItemTxt,a4
- lea AppItemPtr,a5
- move.l #APPITEMNUM-1,d6
- .MakeAppItems move.l (a3)+,d0
- move.l #0,d1
- move.l (a4)+,a0
- move.l AppPort,a1
- sub.l a2,a2
- LNKLIB AddAppMenuItemA,_WorkBenchBase
- move.l d0,(a5)+
- tst.l d0
- beq.s .Error
- dbf d6,.MakeAppItems
- .Error rts
-
-
-
-
- **********************************************************************
- * Remove our menu items again *
- **********************************************************************
- RemoveAppItems lea AppItemPtr,a4 ; Loop for all items
- move.l #APPITEMNUM-1,d6
- .RemAppItems tst.l (a4)
- beq.s .NoRemove
- move.l (a4),a0
- LNKLIB RemoveAppMenuItem,_WorkBenchBase
- .NoRemove addq.l #4,a4
- dbf d6,.RemAppItems
- rts
-
-
-
-
- **********************************************************************
- * Try to set a hotkey. Inputs are given on stack : *
- * 1. HotKey Definition *
- * 2. Default HotKey Definition *
- * 3. HotKey ID *
- * 4. Address of filter *
- * 5. Errornumber *
- **********************************************************************
- SetHotKey CARGS #8,HotKey.l,DefHotKey.l,ID.l,Filter.l,Error.l
- link a5,#0
- move.l #26,ErrorNum
- move.l HotKey(a5),EasyArg
- move.l HotKey(a5),a0 ; Try to set "user" hotkey
- move.l ID(a5),d7
- bsr.s InitHotKey
- tst.l d0
- bne.s .GotUserHotKey ; Got it -> go on
- move.l HotKey(a5),a0 ; Clone user-hotkey
- move.l ReadBuffer,a1
- bsr StrCpy
- move.l DefHotKey(a5),a0 ; Try default
- move.l HotKey(a5),a1
- bsr StrCpy ; First copy it
- move.l DefHotKey(a5),a0
- move.l ID(a5),d7
- bsr.s InitHotKey
- tst.l d0
- bne.s .GotDefHotKey ; Error ???
- bsr DisplayError ; Display error
- bra.s .Error
- .GotDefHotKey move.l Error(a5),ErrorNum ; Tell user we`re using ours
- move.l ReadBuffer,d0
- move.l d0,EasyArg
- bsr DisplayError
- .GotUserHotKey move.l Filter(a5),a0
- move.l a4,(a0)
- move.l MyBroker,a0
- move.l a4,a1
- LNKLIB AttachCxObj,_CxBase ; Attach hotkey stuff
- unlk a5
- moveq #1,d0
- rts
- .Error unlk a5
- moveq #0,d0
- rts
-
-
-
-
-
- **********************************************************************
- * Try to create a hotkey *
- **********************************************************************
- InitHotKey move.l #CX_FILTER,d0 ; Try to create the hotkey for popup
- sub.l a1,a1
- DOLIB CreateCxObj,_CxBase ; Create a filter for descriptive string
- tst.l d0
- beq.s .Error
- move.l d0,a4
- moveq #CX_SEND,d0
- move.l BrokerPort(pc),a0
- move.l d7,a1 ; Set ID for HotKey
- DOLIB CreateCxObj,_CxBase ; Create a SENDER object to our port
- move.l a4,a0
- move.l d0,a1
- DOLIB AttachCxObj,_CxBase ; Attach it to the filter
- moveq #CX_TRANSLATE,d0
- sub.l a0,a0
- move.l a0,a1
- DOLIB CreateCxObj,_CxBase ; Create a translator for msg
- move.l a4,a0
- move.l d0,a1
- DOLIB AttachCxObj,_CxBase ; Attach it
- move.l a4,a0
- DOLIB CxObjError,_CxBase ; Any errors ??
- tst.l d0
- beq.s .GotHotKey ; Nope -> go on
- move.l a4,a0
- DOLIB DeleteCxObjAll,_CxBase ; Delete hotkey
- .Error moveq #0,d0
- rts
- .GotHotKey moveq #1,d0
- rts
-
-
-
-
- **********+***********************************************************
- * Try to initialize a CUSTOM-Filter *
- **********************************************************************
- InitCustom move.l #CX_FILTER,d0 ; Install a Commodities-Object
- sub.l a0,a0 ; which works as a filter
- sub.l a1,a1 ; for Input-Events
- DOLIB CreateCxObj
- tst.l d0
- beq.s .End
- move.l d0,a4
-
- move.l MyBroker(pc),a0 ; Attach Filter to Broker
- move.l a4,a1
- DOLIB AttachCxObj
-
- move.l a4,a0 ; Init Filter with values
- lea MyCustomIXDef,a1
- DOLIB SetFilterIX
-
- move.l #CX_CUSTOM,d0 ; Create signal-object
- move.l a5,a0
- move.l d7,a1
- DOLIB CreateCxObj
- tst.l d0
- beq.s .End
-
- move.l a4,a0 ; Attach new object
- move.l d0,a1
- DOLIB AttachCxObj
- .End rts
-
-
-
-
-
- **********************************************************************
- * Copy default hotkeys to "user" buffers *
- **********************************************************************
- MakeHotKeys lea DefaultPopUpKey,a0
- lea PopUpKey,a1
- bsr StrCpy
- lea DefPageHotKey,a0
- lea PageHotKey,a1
- bsr StrCpy
- lea DefPrefsHotKey,a0
- lea PrefsHotKey,a1
- bsr StrCpy
- lea DefBillHotKey,a0
- lea BillHotKey,a1
- bsr StrCpy
- lea DefHotWinHotKey,a0
- lea HotWinHotKey,a1
- bsr StrCpy
- lea DefShellHotKey,a0
- lea ShellHotKey,a1
- bsr StrCpy
- lea DefUmlautHK,a0
- lea UmlautHotKey,a1
- bsr StrCpy
- rts
-
-
-
-
-
- **********************************************************************
- * Get the given tooltypes *
- **********************************************************************
- GetToolTypes move.l _ArgV(pc),a0
- lea ToolPriStr,a1 ; Change the Tool-Pri ?
- LNKLIB FindToolType,_IconBase
- tst.l d0
- beq.s NoToolPri ; No -> go on
- move.l d0,d1
- move.l #ToolPri,d2
- LNKLIB StrToLong,_DOSBase
- cmp.l #21,ToolPri ; Pri < 21 ???
- bge.s NoToolPri
- move.l #21,ToolPri ; Yep -> 21 is minimum
- NoToolPri move.l _ArgV(pc),a0
- lea PriStr,a1 ; Change broker pri ?
- LNKLIB FindToolType,_IconBase
- tst.l d0
- beq.s NoCxPri ; No -> go on
- move.l d0,d1
- move.l #CXPri,d2
- LNKLIB StrToLong,_DOSBase ; Set pri
- tst.l d0
- bge.s NoCxPri
- move.l #0,CXPri
- NoCxPri move.l _ArgV(pc),a0
- lea PortNameStr,a1
- LNKLIB FindToolType,_IconBase ; New ARexx-PortName ?
- tst.l d0
- beq.s NoPortName
- move.l d0,a0
- lea ARexxPortName(pc),a1
- bsr StrCpy
- NoPortName move.l _ArgV(pc),a0
- lea KeyStr,a1
- DOLIB FindToolType ; Do we have a new pop up key ?
- tst.l d0
- beq.s NoPopKey ; Nope -> go on
- move.l d0,a0
- lea PopUpKey,a1 ; Copy PopUpKey
- bsr StrCpy
- NoPopKey move.l _ArgV(pc),a0 ; Check for PopUp flag
- lea PopUpStr(pc),a1
- DOLIB FindToolType
- tst.l d0
- beq.s DoNotPopUp
- move.l d0,a0 ; Do we have a NO flag
- lea NoString,a1
- DOLIB MatchToolValue
- tst.l d0
- beq.s DoNotPopUp
- move.b #0,DoPopUp ; Let the window pop up
- DoNotPopUp move.l _ArgV(pc),a0 ; Display AppIcon ?
- lea IconStr,a1
- DOLIB FindToolType
- tst.l d0
- beq.s NoAppIcon
- move.b #0,DispAppIcon
- NoAppIcon rts
-
-
-
-
-
-
- **********************************************************************
- * Try to read in the default PrefsFile *
- **********************************************************************
- LoadPrefs move.l #PrefsFileName,d1 ; Try to open file
- move.l d1,EasyArg
- move.l #MODE_OLDFILE,d2
- LNKLIB Open,_DOSBase
- move.l d0,d7
- tst.l d0
- beq .AOk
- move.l d7,d1 ; Read flags
- move.l #DoActivate,d2
- move.l #FLAGSET,d3
- DOLIB Read
- cmp.l #FLAGSET,d0
- bne .AOk
- move.l d7,d1
- move.l #ScreenTime,d2
- move.l #LONGQUAL,d3
- DOLIB Read
- cmp.l #LONGQUAL,d0
- bne .AOk
- move.l d7,d1 ; Read bill win pos
- move.l #BillWinDef,d2
- move.l #4,d3
- DOLIB Read
- cmp.l #4,d0
- bne .AOk
- move.l d7,d1 ; Read clock win pos
- move.l #ClockWinDef,d2
- move.l #4,d3
- DOLIB Read
- cmp.l #4,d0
- bne .AOk
- move.l d7,d1 ; Read in rest
- move.l ReadBuffer,d2
- move.l #$FFFFFF,d3
- DOLIB Read
- tst.l d0
- ble .AOk
- lea HotKeyGadStat,a4 ; Copy new HotKeys
- move.l ReadBuffer,a0
- move.l #6,d6
- .NewHotKeys move.l (a4)+,a1
- bsr StrCpy
- dbf d6,.NewHotKeys
- lea SystemParam,a1 ; Copy new Shell-Command
- bsr StrCpy
- lea AlarmStartVal,a1 ; Copy new alarm time
- bsr StrCpy
- lea LogFileName,a1 ; Copy full name to buffer
- bsr StrCpy
- move.l a0,a4 ; Store pointer to values
- lea LogFileName,a0 ; Extract dir name
- sub.l a2,a2
- .ExtractFile tst.b (a0)
- beq.s .FileEnd
- cmp.b #':',(a0)
- beq.s .GotDir
- cmp.b #'/',(a0)
- bne.s .NoDir
- .GotDir move.l a0,a2 ; Store pointer to last dir symbol
- .NoDir addq.l #1,a0
- bra.s .ExtractFile
- .FileEnd cmp.l #0,a2 ; Dir symbol found ?
- beq.s .NoPath ; Nope -> go on
- move.b 1(a2),d6 ; Store char
- move.b #0,1(a2) ; Set end of dir name
- lea LogFileName,a0 ; Copy dir name
- lea LogPath,a1
- bsr StrCpy
- move.b d6,1(a2) ; Restore file name
- bra.s .EndDir
- .NoPath move.b #0,LogPath ; No dir name given
- .EndDir lea 1(a2),a0 ; Copy filename
- lea LogFile,a1
- bsr StrCpy
- move.l a4,a0
- lea CostUnit1,a1 ; Copy values
- move.l #27,d6
- .CopyRest move.b (a0)+,(a1)+
- dbf d6,.CopyRest
- lea PTimeZone,a1 ; Copy timezone and tariff
- move.l #7,d6
- .CopyModes move.b (a0)+,(a1)+
- dbf d6,.CopyModes
- lea FileReqWidth,a1 ; Copy width and height of filereq
- lea FileReqHeight,a2
- lea 4(a0),a3
- move.l #3,d6
- .CopySize move.b (a0)+,(a1)+
- move.b (a3)+,(a2)+
- dbf d6,.CopySize
- lea 4(a0),a0
- lea FileReqLeft,a1 ; Copy position of filereq
- lea FileReqTop,a2
- lea 4(a0),a3
- move.l #3,d6
- .CopyPos move.b (a0)+,(a1)+
- move.b (a3)+,(a2)+
- dbf d6,.CopyPos
- .AOk tst.l d7 ; Close file
- beq .End
- move.l d7,d1
- LNKLIB Close,_DOSBase
-
- bsr RemakeGadgets ; Remake checkboxes
-
- move.l #FRONTGAD,d0 ; Remake POP qualifier
- lea ControlGads,a0
- move.l WndHandle,a1
- move.l PopQualNum,d1
- lea PopQualList,a2
- bsr SetCycleGad
-
- move.l #ESCQUALGAD,d0 ; Remake close qualifier
- move.l ESCQualNum,d1
- lea ControlGads,a0
- move.l WndHandle,a1
- lea ESCQualList,a2
- bsr SetCycleGad
-
- move.l #SCREENGAD,d0 ; Remake screentime gadget
- lea ControlGads,a0
- move.l WndHandle(pc),a1
- move.l #3,d1
- move.l ScreenTime,d2
- bsr SetIntegerGad
-
- move.l #MOUSEGAD,d0 ; Remake mousetime gadget
- lea ControlGads,a0
- move.l WndHandle,a1
- moveq #3,d1
- move.l MouseTime,d2
- bsr SetIntegerGad
-
- move.l #VOLGAD,d0 ; Remake volume gadget
- lea ControlGads,a0
- move.l WndHandle,a1
- moveq #2,d1
- move.l ClickVol,d2
- bsr SetIntegerGad
-
- lea CostUnit1,a3 ; Remake these 6 cost gadgets
- moveq #1,d7
- moveq #5,d6
- .RemakeCosts move.l d7,d0
- lea PrefsGads,a0
- move.l PrefsHandle,a1
- moveq #4,d1
- move.l (a3)+,d2
- addq.l #1,d7
- bsr SetIntegerGad
- dbf d6,.RemakeCosts
-
- move.l #COSTGAD,d0 ; Remake cost/unit gad
- lea PrefsGads,a0
- move.l PrefsHandle,a1
- moveq #4,d1
- move.l CostUnit,d2
- bsr SetIntegerGad
-
- move.l #LOGFILEGAD,d0 ; Remake Log-FileName
- lea PrefsGads,a0
- move.l PrefsHandle,a1
- move.l #286,d1
- lea LogFileName,a2
- bsr SetStringGad
-
- move.l #PTIMEGAD,d1 ; Set Prefs time gad
- lea PrefsGads,a0
- move.l PrefsHandle,a1
- move.l PTimeZone,d0
- lea PrefsTimeLabels,a2
- bsr SetMXGad
-
- move.l #PMODEGAD,d1 ; Set Prefs mode gad
- lea PrefsGads,a0
- move.l PrefsHandle,a1
- move.l PTariff,d0
- lea PrefsModeLabels,a2
- bsr SetMXGad
-
- move.l #BILLPOPGAD,d1 ; Set POPUP gadget
- lea PrefsGads,a0
- move.l PrefsHandle,a1
- move.b BillPopUp,d0
- bsr SetCheckBox
-
- move.l #LOGCALLGAD,d1 ; Set LogCalls gadget
- lea PrefsGads,a0
- move.l PrefsHandle,a1
- move.b LogCalls,d0
- bsr SetCheckBox
-
- move.b #1,DoRemakeCosts
- bsr RemakeCosts ; Remake costs to new values
-
- move.l ReadBuffer,a3 ; Remake new HotKeys
- move.l a3,a0
- move.l ReadBuffer,a1
- bsr StrCpy
- move.l a0,a3
- move.l #POPUPGAD,d7
- move.l HotKeyHandle,a0
- lea HotWinTitle,a1
- move.l PopUpFilter,a4
- lea PopUpKey,a5
- bsr RemakeHotKey
-
- move.l a3,a0
- move.l ReadBuffer,a1
- bsr StrCpy
- move.l a0,a3
- move.l #PAGEGAD,d7
- sub.l a0,a0
- sub.l a1,a1
- move.l PageFilter,a4
- lea PageHotKey,a5
- bsr RemakeHotKey
-
- move.l a3,a0
- move.l ReadBuffer,a1
- bsr StrCpy
- move.l a0,a3
- move.l #BILLKEYGAD,d7
- move.l BillHandle,a0
- lea BillTitle,a1
- move.l BillFilter,a4
- lea BillHotKey,a5
- bsr RemakeHotKey
-
- move.l a3,a0
- move.l ReadBuffer,a1
- bsr StrCpy
- move.l a0,a3
- move.l #PREFSKEYGAD,d7
- move.l PrefsHandle,a0
- lea PrefsTitle,a1
- move.l PrefsFilter,a4
- lea PrefsHotKey,a5
- bsr RemakeHotKey
-
- move.l a3,a0
- move.l ReadBuffer,a1
- bsr StrCpy
- move.l a0,a3
- move.l #HOTKEYGAD,d7
- move.l HotKeyHandle,a0
- lea HotWinTitle,a1
- move.l HotKeyFilter,a4
- lea HotWinHotKey,a5
- bsr RemakeHotKey
-
- move.l a3,a0
- move.l ReadBuffer,a1
- bsr StrCpy
- move.l a0,a3
- move.l #SHELLGAD,d7
- sub.l a0,a0
- sub.l a1,a1
- move.l ShellFilter,a4
- lea ShellHotKey,a5
- bsr RemakeHotKey
-
- move.l a3,a0
- move.l ReadBuffer,a1
- bsr StrCpy
- move.l a0,a3
- move.l #UMLAUTKEYGAD,d7
- sub.l a0,a0
- sub.l a1,a1
- move.l UmlautFilter,a4
- lea UmlautHotKey,a5
- bsr RemakeHotKey
-
- move.l #USERSHELLGAD,d0 ; Remake shell command
- lea ControlGads,a0
- move.l WndHandle,a1
- move.l #64,d1
- lea SystemParam,a2
- bsr SetStringGad
-
- tst.l BillHandle
- beq.s .NoBillRePos
- lea BillWinDef,a1
- move.w nw_LeftEdge(a1),d0
- move.w nw_TopEdge(a1),d1
- move.l BillHandle,a0
- move.w wd_Width(a0),d2
- move.w wd_Height(a0),d3
- LNKLIB ChangeWindowBox,_IntuitionBase
- .NoBillRePos tst.l ClockHandle
- beq.s .End
- lea ClockWinDef,a1
- move.w nw_LeftEdge(a1),d0
- move.w nw_TopEdge(a1),d1
- move.l ClockHandle,a0
- move.w wd_Width(a0),d2
- move.w wd_Height(a0),d3
- LNKLIB ChangeWindowBox,_IntuitionBase
- .End rts
-
-
-
-
-
-
- **********************************************************************
- * Save preferences to disk *
- **********************************************************************
- SavePrefs move.l #PrefsFileName,d1 ; Write new prefs to file
- move.l d1,EasyArg
- move.l #MODE_NEWFILE,d2
- LNKLIB Open,_DOSBase
- move.l d0,d7
- tst.l d0
- beq .Error
- move.l d7,d1
- move.l #DoActivate,d2 ; Write bool-flags
- move.l #FLAGSET,d3
- DOLIB Write
- cmp.l #FLAGSET,d0
- blt .Error
- move.l d7,d1
- move.l #ScreenTime,d2 ; Long values
- move.l #LONGQUAL,d3
- DOLIB Write
- cmp.l #LONGQUAL,d0
- blt .Error
- lea BillWinDef,a0
- lea nw_LeftEdge(a0),a0
- move.l d7,d1 ; Store bill window pos
- move.l a0,d2
- move.l #4,d3
- DOLIB Write
- cmp.l #4,d0
- blt .Error
- lea ClockWinDef,a0
- lea nw_LeftEdge(a0),a0
- move.l d7,d1 ; Store clock win pos
- move.l a0,d2
- move.l #4,d3
- DOLIB Write
- cmp.l #4,d0
- blt .Error
- lea HotKeyGadStat,a4 ; Store HotKeys
- moveq #6,d5
- .WriteHotKeys move.l d7,d1
- move.l (a4)+,a0
- bsr StrLen
- move.l a0,d2
- move.l d0,d3
- addq.l #1,d3
- move.l d3,d6
- DOLIB Write
- cmp.l d6,d0
- bne .Error
- dbf d5,.WriteHotKeys
- move.l d7,d1 ; Write NewShell command
- lea SystemParam,a0
- bsr StrLen
- move.l a0,d2
- move.l d0,d3
- addq.l #1,d3
- move.l d3,d6
- DOLIB Write
- cmp.l d6,d0
- bne .Error
- move.l d7,d1 ; Write Alarm time
- lea AlarmStartVal,a0
- bsr StrLen
- move.l a0,d2
- move.l d0,d3
- addq.l #1,d3
- move.l d3,d6
- DOLIB Write
- cmp.l d6,d0
- bne .Error
- move.l d7,d1
- lea LogFileName,a0 ; Write filename for LogFile
- bsr StrLen
- move.l d0,d3
- move.l d0,d6
- addq.l #1,d3
- move.l a0,d2
- DOLIB Write
- cmp.l d6,d0
- blt .Error
- move.l d7,d1
- move.l #CostUnit1,d2 ; Write new settings
- move.l #28,d3
- DOLIB Write
- cmp.l #28,d0
- blt.s .Error
- move.l d7,d1
- move.l #PTimeZone,d2 ; Write timezone and tariff
- move.l #8,d3
- DOLIB Write
- cmp.l #8,d0
- blt.s .Error
- move.l d7,d1
- move.l #FileReqWidth,d2 ; Write FileReq-Width
- move.l #4,d3
- DOLIB Write
- cmp.l #4,d0
- blt.s .Error
- move.l d7,d1
- move.l #FileReqHeight,d2 ; Write FileReq-Height
- move.l #4,d3
- DOLIB Write
- cmp.l #4,d0
- blt.s .Error
- move.l d7,d1
- move.l #FileReqLeft,d2 ; Write FileReq-LeftEdge
- move.l #4,d3
- DOLIB Write
- cmp.l #4,d0
- blt.s .Error
- move.l d7,d1
- move.l #FileReqTop,d2 ; Write FileReq-TopEdge
- move.l #4,d3
- DOLIB Write
- cmp.l #4,d0
- blt.s .Error
- bra.s .AOk
- .Error DOLIB IoErr ; Error occured ?
- move.l d0,ErrorNum
- move.l d7,-(sp)
- bsr DisplayError
- move.l (sp)+,d7
- .AOk tst.l d7
- beq.s .End
- move.l d7,d1 ; Close file
- LNKLIB Close,_DOSBase
- .End rts
-
-
-
-
- **********************************************************************
- * This routine initializes the process to handle all timer events *
- **********************************************************************
- InitChecker move.l #CheckerTags,d1 ; Start Process with tags
- LNKLIB CreateNewProc,_DOSBase
- tst.l d0
- beq.s .Error
- move.l #10,d1 ; Wait a bit until set up
- DOLIB Delay
- lea CheckerName(pc),a1 ; Find Task structure of Process
- CALLSYS FindTask
- move.l d0,CheckerProc
- .Error rts
-
-
-
-
- **********************************************************************
- * This is the small process to handle timer events *
- **********************************************************************
- TimeChecker movem.l RegsAll,-(sp)
-
- bsr InitTimer ; Init timer
- tst.l d0
- beq CheckerError
-
- .Loop move.l TimerSigFlag(pc),d0 ; Wait for signal of timer
- or.l #SIGHANDSHAKE,d0 ; for signal to go away
- or.l #SIGTIMEREMAKE,d0 ; for signal to remake display
- or.l #SIGBILLWIN,d0 ; pop up bill window
- or.l BillSigFlag(pc),d0 ; message from bill window
- or.l ClockSigFlag(pc),d0 ; message from clock window
- CALLSYS Wait
- move.l d0,CheckerProcSig
-
- move.l CheckerProcSig(pc),d0 ; Are we to go away ?
- and.l #SIGHANDSHAKE,d0
- bne CheckerError ; Yep -> do so
-
- move.l CheckerProcSig(pc),d0 ; Signal of timer device ?
- and.l TimerSigFlag(pc),d0
- beq.s .NoTimerMsg
- move.l TimerPort(pc),a0 ; Get message pending
- CALLSYS GetMsg
- bsr SetTime ; Set new time
- bsr CheckOnline ; Set new online time
-
- move.l TimerReq(pc),a1 ; Reset timer for wakeup
- move.l #1,IOTV_TIME+TV_SECS(a1) ; the next second
- move.l #0,IOTV_TIME+TV_MICRO(a1)
- CALLSYS SendIO
- bra .Loop
-
- .NoTimerMsg move.l CheckerProcSig(pc),d0 ; Only remake time display ?
- and.l #SIGTIMEREMAKE,d0
- beq.s .NoTimeRemake
- bsr SetTime ; Yep -> do so
- bsr RemakeCosts ; Also redisplay billstuff
-
- .NoTimeRemake move.l CheckerProcSig(pc),d0 ; Pop up bill window ?
- and.l #SIGBILLWIN,d0
- beq.s .NoBillOpenUp
- bsr OpenBillWin
-
- .NoBillOpenUp move.l CheckerProcSig,d0 ; Window from clock window ?
- and.l ClockSigFlag,d0
- beq.s .NoClockMsg
-
- .LoopClockMsg move.l ClockHandle(pc),a0
- move.l wd_UserPort(a0),a0
- CALLSYS GetMsg
- tst.l d0
- beq.s .NoClockMsg
-
- move.l d0,a1
- move.l im_Class(a1),d7
-
- DOLIB ReplyMsg
-
- cmp.l #IDCMP_CLOSEWINDOW,d7 ; Clock window closed ?
- bne.s .NoClockClose
- move.b #0,ClockWin
- bsr CloseClockWin
- tst.l WndHandle
- beq.s .NoClockMsg
- move.b ClockWin(pc),d0
- move.l #WINDOWGAD,d1 ; Set checkbox tick
- bsr SetControlBox
- bra.s .NoClockMsg
-
- .NoClockClose cmp.l #IDCMP_CHANGEWINDOW,d7 ; Window moved ?
- bne.s .LoopClockMsg
- move.l ClockHandle,a0
- lea ClockWinDef,a1
- bsr StoreWinPos
- bra .LoopClockMsg
-
- .NoClockMsg move.l CheckerProcSig(pc),d0 ; Did it come from the
- and.l BillSigFlag(pc),d0 ; Bill window ?
- beq .Loop
- bsr.s CheckBillWindow
- bra .Loop
-
- CheckerError bsr CloseBillWin ; Close the billwindow
- bsr RemoveTimer ; Remove timer device
-
- move.l _OurTask(pc),a1 ; Signal mother that we`re fine
- move.l #SIGHANDSHAKE,d0
- CALLSYS Signal
-
- movem.l (sp)+,RegsAll
- rts
-
-
-
-
- **********************************************************************
- * Check the BillWindow-Messages *
- **********************************************************************
- CheckBillWindow move.l BillHandle(pc),a0
- move.l wd_UserPort(a0),a0
- LNKLIB GT_GetIMsg,_GadToolsBase
- tst.l d0
- beq NoBillMsg
- move.l d0,a1
-
- move.l im_Class(a1),d6
- move.w im_Code(a1),d5
- cmp.w #'a',d5
- blt.s End
- and.w #~$20,d5
- End move.l im_IAddress(a1),a4
- move.w gg_GadgetID(a4),d7
-
- DOLIB GT_ReplyIMsg
-
- cmp.l #IDCMP_CLOSEWINDOW,d6 ; Window close ???
- bne.s NoBillClose
- bsr CloseBillWin
- bra NoBillMsg
-
- NoBillClose cmp.l #IDCMP_CHANGEWINDOW,d6 ; Window moved ?
- bne.s NoBillChange
- move.l BillHandle,a0
- lea BillWinDef,a1
- bsr StoreWinPos
- bra NoBillMsg
-
- NoBillChange cmp.l #GADGETDOWN,d6
- bne.s NoBillGadDown
-
- cmp.w #TIMEZONEGAD,d7 ; Changed timezone ?
- bne.s NoTimeZoneGad
- move.b #1,DoRemakeCosts
- ext.l d5
- move.l d5,TimeZone
- bsr RemakeCosts
- bra CheckBillWindow
-
- NoTimeZoneGad cmp.w #CHEAPMODEGAD,d7 ; Changed timemode
- bne CheckBillWindow
- move.b #1,DoRemakeCosts
- move.b d5,CheapMode
- bsr RemakeCosts
- bra CheckBillWindow
-
- NoBillGadDown cmp.l #IDCMP_VANILLAKEY,d6
- bne NoBillVKey
-
- cmp.w #ESCKEY,d5 ; Hide window ?
- bne.s BNoEscKey
- BEscKey bsr CloseBillWin
- bra NoBillMsg
-
- BNoEscKey cmp.w #TIME1KEY,d5 ; Change time zone ?
- blt.s NoTimeKeys
- cmp.w #TIME3KEY,d5
- bgt.s NoTimeKeys
- sub.w #'1',d5 ; Calc new zone
- BTime move.b #1,DoRemakeCosts
- ext.l d5
- move.l d5,TimeZone
- move.l d5,d0
- move.l #TIMEZONEGAD,d1
- lea TimeZoneLabels,a2
- lea BillGads,a0
- move.l BillHandle,a1
- bsr SetMXGad
- bsr RemakeCosts
- bra CheckBillWindow
-
- NoTimeKeys cmp.w #NORMALKEY,d5 ; Activate normal time mode ?
- bne.s NoNormalKey
-
- NormalKey move.b #1,DoRemakeCosts
- move.b #0,CheapMode
- bsr RemakeCosts
- moveq #0,d0
- move.l #CHEAPMODEGAD,d1
- lea CheapLabels,a2
- lea BillGads,a0
- move.l BillHandle,a1
- bsr SetMXGad
- bra CheckBillWindow
-
- NoNormalKey cmp.w #CHEAPKEY,d5 ; Activate cheap time mode ?
- bne CheckBillWindow
-
- CheapKey move.b #1,DoRemakeCosts
- move.b #1,CheapMode
- bsr RemakeCosts
- moveq #1,d0
- move.l #CHEAPMODEGAD,d1
- lea CheapLabels,a2
- lea BillGads,a0
- move.l BillHandle,a1
- bsr SetMXGad
- bra CheckBillWindow
-
- NoBillVKey cmp.l #IDCMP_RAWKEY,d6 ; User pressed help
- bne.s NoBillRKey
-
- cmp.w #HELPKEY,d5
- bne CheckBillWindow
- lea BillHelpFile,a0
- lea HelpName,a1
- bsr StrCpy
- move.b #1,HelpPage
- move.l _OurTask,a1
- move.l HelpSigFlag,d0
- CALLSYS Signal
- bra CheckBillWindow
-
- NoBillRKey cmp.l #IDCMP_MENUHELP,d6 ; User needs help
- bne.s NoBillMenuHelp
- move.w d5,HelpItem
- move.l _OurTask,a1
- move.l HelpSigFlag,d0
- CALLSYS Signal
- bra CheckBillWindow
-
- NoBillMenuHelp cmp.l #IDCMP_MENUPICK,d6
- bne CheckBillWindow
- cmp.w #-1,d5
- beq.s EndBillMenu
- move.w d5,d2
- and.w #$1f,d2 ; Get menunumber
- move.w d5,d1
- asr.w #5,d1
- and.w #$3f,d1 ; Get itemnumber
- move.w d1,d5
- move.l BillMenu,a1
- bsr GetMenuPtr
- GTMENUITEM_USERDATA a2,a0
- cmp.l #0,a0
- beq.s EndBillMenu
- jmp (a0)
- EndBillMenu bra CheckBillWindow
-
- NoBillMsg rts
-
-
-
-
-
-
-
-
- **********************************************************************
- * Wait for a signal *
- **********************************************************************
- CheckBroker tst.w QuitBroker ; Quit our broker ?
- bne AbortBroker
-
- move.l #SIGBREAKF_CTRL_C,d0 ; Accept a BREAK (like from c:break)
- or.l BrokerSigFlag(pc),d0 ; Wait for sig on port of
- or.l WindowSigFlag(pc),d0 ; ... window
- or.l ARexxSigFlag(pc),d0 ; ... ARexx Port
- or.l PrefsSigFlag(pc),d0 ; ... Preferences window
- or.l HotKeySigFlag(pc),d0 ; ... HotKey window
- or.l AlarmSigFlag(pc),d0 ; ... Display alarm
- or.l HelpSigFlag(pc),d0 ; ... Help for Bill window
- or.l AppSigFlag(pc),d0 ; ... of App-Icon
- CALLSYS Wait
- move.l d0,ThisSig
-
- move.l ThisSig(pc),d0 ; Got signal from child to
- and.l AlarmSigFlag(pc),d0 ; alarm
- beq.s NoAlarmDisp
-
- bsr OnScreen
- bsr OnMouse
-
- link a5,#-4
- bsr LockScreen
- tst.l d0
- beq.s .Error
-
- move.l -4(a5),d7
-
- move.l d7,a0
- LNKLIB ScreenToFront,_IntuitionBase
-
- move.l d7,a0
- DOLIB DisplayBeep
-
- move.l WndHandle(pc),a0
- bsr SetBusy
-
- lea MyEasyRequest,a1 ; Display Easy-Requester
- move.l #EasyTitle,es_Title(a1)
- move.l #AlarmText,es_TextFormat(a1)
- move.l #EasyGadget,es_GadgetFormat(a1)
- sub.l a0,a0
- sub.l a2,a2
- sub.l a3,a3
- DOLIB EasyRequestArgs
-
- move.l WndHandle(pc),a0
- bsr UnBusy
-
- .Error bsr UnlockScreen
- unlk a5
-
- NoAlarmDisp move.l ThisSig(pc),d0
- and.l BrokerSigFlag(pc),d0 ; If it was on the Msg-Port
- beq NoCxMsgs
-
- WorkAllMsgs move.l BrokerPort(pc),a0 ; Check the msgs
- CALLSYS GetMsg
- tst.l d0
- beq NoCxMsgs
- move.l d0,a4
-
- move.l a4,a0 ; Get Msg-Type
- LNKLIB CxMsgType,_CxBase
- move.l d0,MsgType
-
- move.l a4,a0 ; Get ID of msg
- DOLIB CxMsgID
- move.l d0,MsgID
-
- move.l a4,a1
- CALLSYS ReplyMsg
-
- cmp.l #CXM_COMMAND,MsgType ; Commodities command ?
- bne NoXCommand ; Yep -> go on
-
- move.l MsgID(pc),d0
-
- cmp.l #CXCMD_KILL,d0 ; Are we to go away ?
- bne.s NoKill
- move.w #1,QuitBroker
- bra WorkAllMsgs
-
- NoKill cmp.l #CXCMD_DISABLE,d0 ; Disable broker ?
- bne.s DontDisable
- bsr DisableBroker
- move.b #1,Disabled
- bra WorkAllMsgs
-
- DontDisable cmp.l #CXCMD_ENABLE,d0 ; Enable ???
- bne.s DontEnable
- move.b #0,Disabled
- move.b #1,TimeReset
- bsr EnableBroker
- bra WorkAllMsgs
-
- DontEnable cmp.l #CXCMD_UNIQUE,d0 ; Another broker with same name
- bne.s NoUnique ; -> Quit program
- move.w #1,QuitBroker
- bra WorkAllMsgs
-
- NoUnique cmp.l #CXCMD_APPEAR,d0 ; Open our window ?
- bne.s NoAppear
- bsr OpenOurWindow
- bra WorkAllMsgs
-
- NoAppear cmp.l #CXCMD_DISAPPEAR,d0 ; Close our window ?
- bne.s NoDisappear
-
- bsr CloseOurWindow ; Close it
- bra WorkAllMsgs
-
- NoDisappear bra WorkAllMsgs
-
- NoXCommand cmp.l #CXM_IEVENT,MsgType ; Pop up key used ???
- bne WorkAllMsgs ; Nope -> Loop for msgs
-
- cmp.l #POPUPKEYID,MsgID ; Are we to pop up ?
- bne.s NoPopUpWindow
- bsr OpenOurWindow ; Open our window
- bra WorkAllMsgs
-
- NoPopUpWindow cmp.l #PAGEKEYID,MsgID ; Change display mode of time ?
- bne.s NoPageChange
- addq.l #1,PageNum
- cmp.l #MAXPAGES,PageNum
- blt.s .End
- move.l #0,PageNum
- .End bsr ClearTitleBar
- bsr SigTime
- bra WorkAllMsgs
-
- NoPageChange cmp.l #PREFSKEYID,MsgID ; Pop Up prefs window ?
- bne.s NoPrefsPopUp
- bsr OpenPrefsWin
- bra WorkAllMsgs
-
- NoPrefsPopUp cmp.l #BILLKEYID,MsgID ; Pop Up Bill window ?
- bne.s NoBillHotKey
- move.l CheckerProc(pc),a1
- move.l #SIGBILLWIN,d0
- CALLSYS Signal
- bra WorkAllMsgs
-
- NoBillHotKey cmp.l #HOTWINKEYID,MsgID ; Pop Up HotKey window ?
- bne.s NoHotWinPop
- bsr OpenHotKeyWin
- bra WorkAllMsgs
-
- NoHotWinPop cmp.l #SHELLKEYID,MsgID ; Pop Up Shell ?
- bne NoShellPop
- move.l #SystemInOut,d1 ; Open the dummy Files NIL:
- move.l #MODE_NEWFILE,d2
- LNKLIB Open,_DOSBase
- move.l d0,SysInput
- move.l #SystemInOut,d1
- move.l #MODE_NEWFILE,d2
- DOLIB Open
- move.l d0,SysOutput
- lea WBPName,a1 ; Try to get a pointer to a process
- CALLSYS FindTask ; we can clone the pathlist from
- tst.l d0 ; Try to get the Workbench,
- bne.s .GotProc ; AmigaShell, InitialCLI,
- lea ICLIName,a1 ; Background CLI or New CLI processes
- DOLIB FindTask ; This is needed, so that the new
- tst.l d0 ; shell may execute Prgs, which
- bne.s .GotProc ; are located in dirs you
- lea NCLIName,a1 ; worked a PATH on.
- DOLIB FindTask ; We have to arrange a pathlist
- tst.l d0 ; which looks like this :
- bne.s .GotProc ; Size of block, Link to next, Lock-BPTR
- lea AShellName,a1
- DOLIB FindTask
- tst.l d0
- bne.s .GotProc
- lea BCLIName,a1
- DOLIB FindTask
- tst.l d0
- beq.s .NoProc
- .GotProc move.l d0,a0 ; So we have a process -> go on
- move.l pr_CLI(a0),d0 ; Get pointer to it`s CLI-Structure
- asl.l #2,d0 ; Convert the BPTR
- move.l d0,a0 ; Get pointer to A0
- move.l cli_CommandDir(a0),d0 ; Get pointer to CommandDir
- asl.l #2,d0 ; Convert to normal Pointer
- move.l d0,a4 ; Store pointer
- lea SysPath,a5 ; Get Pointer to Tags-Entry
- .GetPath cmp.l #0,a4 ; No (more) path ?
- beq.s .GotPath ; -> Start Shell
- moveq #12,d0 ; Allocate a small link-structure
- move.l #MEMF_PUBLIC|MEMF_CLEAR,d1
- CALLSYS AllocMem
- tst.l d0 ; Could not get mem for one more path
- beq.s .GotPath ; lock -> start Shell
- move.l d0,d1 ; Get pointer to memory block
- addq.l #4,d1 ; Point to middle of these 4 LongWords
- asr.l #2,d1 ; Convert to BPTR
- move.l d1,(a5) ; Store Pointer to structure
- move.l d0,a5 ; Let A5 point to new memory block
- addq.l #4,a5 ; -> right to the middle
- move.l d0,a3 ; Store pointer
- move.l 4(a4),d1 ; Duplicate Lock to Path
- LNKLIB DupLock,_DOSBase
- move.l d0,8(a3) ; Store LockPointer
- move.l #0,4(a3) ; Clear link-pointer
- move.l #12,0(a3) ; Store length of one Path-Entry
- move.l (a4),d0 ; Get pointer to father`s next path
- asl.l #2,d0 ; Convert to normal pointer
- move.l d0,a4 ; Now restart for next path
- bra.s .GetPath
- .GotPath move.l #SystemComm,d1 ; Start Shell...
- move.l #SystemTags,d2
- DOLIB SystemTagList,_DOSBase
- .NoProc bra WorkAllMsgs
-
- NoShellPop cmp.l #UMLAUTKEYID,MsgID ; Change "Umlaut" mode ?
- bne.s NoUmlautMode
- bchg #0,MapUmlaut
- move.b MapUmlaut,d0
- move.l #UMLAUTGAD,d1
- bsr SetControlBox
- bra WorkAllMsgs
- NoUmlautMode bra WorkAllMsgs
-
- NoCxMsgs move.l ThisSig(pc),d0
- and.l WindowSigFlag(pc),d0 ; Sig from window ?
- beq NoWindowMsg
-
- LoopWndMsg move.l WndHandle(pc),a0 ; Loop for all messages
- move.l wd_UserPort(a0),a0
- LNKLIB GT_GetIMsg,_GadToolsBase ; Get gadtools message
- tst.l d0
- beq NoWindowMsg
- move.l d0,a1
-
- move.l im_Class(a1),d6 ; Get class
- move.w im_Code(a1),d5 ; Get code
- cmp.w #'a',d5
- blt.s .End
- and.w #~$20,d5
- .End move.l im_IAddress(a1),a4 ; Get gadget id
- move.w gg_GadgetID(a4),d7
-
- DOLIB GT_ReplyIMsg ; Reply gadtools msg
-
- cmp.l #IDCMP_CLOSEWINDOW,d6 ; Close gadget selected
- bne.s NoRemoveWin
- bsr CloseOurWindow
- bra NoWindowMsg ; Skip the rest
-
- NoRemoveWin cmp.l #IDCMP_CHANGEWINDOW,d6 ; Window moved ?
- bne.s NoControlMove
- move.l WndHandle,a0
- lea MyWindowDef,a1
- bsr StoreWinPos
- bra LoopWndMsg
-
- NoControlMove cmp.l #IDCMP_MENUHELP,d6
- bne.s NoMenuHelp
- bsr RemakeGadgets ; Remake possible changes to toggle entries
- moveq #1,d0
- bsr OnlineHelp
- bra LoopWndMsg
-
- NoMenuHelp cmp.l #IDCMP_MENUPICK,d6
- bne NoMenuPick
- cmp.w #-1,d5
- beq EndMainMenu
- move.w d5,d2
- and.w #$1f,d2 ; Get menunumber
- move.w d5,d1
- asr.w #5,d1
- and.w #$3f,d1 ; Get itemnumber
- move.l MainMenu,a1
- bsr GetMenuPtr
- GTMENUITEM_USERDATA a2,a0
- cmp.l #0,a0
- beq.s EndMainMenu
- jmp (a0)
-
- DisplayAbout move.l WndHandle(pc),a0 ; Display about
- bsr SetBusy
-
- lea MyEasyRequest,a1 ; Display Easy-Requester
- move.l #EasyTitle,es_Title(a1)
- move.l #AboutText,es_TextFormat(a1)
- move.l #AboutGadgets,es_GadgetFormat(a1)
- sub.l a0,a0
- sub.l a2,a2
- sub.l a3,a3
- LNKLIB EasyRequestArgs,_IntuitionBase
- tst.l d0
- bne.s .NoRegister
- move.l #PrtName,d1
- move.l #MODE_NEWFILE,d2
- LNKLIB Open,_DOSBase
- tst.l d0
- beq.s .NoRegister
- move.l d0,d7
- move.l d0,d1
- move.l #RegisterTxt,d2
- move.l #REGISTERLEN,d3
- DOLIB Write
- .Error move.l d7,d1
- DOLIB Close
- .NoRegister move.l WndHandle(pc),a0
- bsr UnBusy
- bra.s EndMainMenu
- ReSavePrefs bsr SavePrefs
- EndMainMenu move.l DoActWindow,a1
- cmp.l #0,a1
- beq.s .End
- cmp.l WndHandle,a1
- bne.s .End
- move.l DoActGadget,a0
- sub.l a2,a2
- LNKLIB ActivateGadget,_IntuitionBase
- move.l #0,DoActWindow
- move.l #0,DoActGadget
- .End bra LoopWndMsg
-
- NoMenuPick cmp.l #IDCMP_GADGETUP,d6 ; Gadget released
- bne NoGadgetUp
-
- cmp.w #ACTIGAD,d7 ; Do activations ?
- bne.s NoActiGad
- bchg #0,DoActivate
- bra LoopWndMsg
-
- NoActiGad cmp.w #MODEGAD,d7 ; Change activation mode ?
- bne.s NoModeGad
- bchg #0,MouseMode ; Invert flag of Activation-Mode
- bra LoopWndMsg
-
- NoModeGad cmp.w #DISPLAYGAD,d7 ; Clock on/off ?
- bne.s NoDisplayGad
- bchg #0,ShowClock
- tst.b ShowClock
- bne.s .End
- bsr ClearTitleBar
- bsr CloseClockWin
- .End bsr SigTime
- bra LoopWndMsg
-
- NoDisplayGad cmp.w #WINDOWGAD,d7 ; Display clock in window ?
- bne.s NoWindowGad
- bchg #0,ClockWin
- move.b #1,ShowClock
- moveq #1,d0
- move.l #DISPLAYGAD,d1
- bsr SetControlBox
- bsr ClearTitleBar
- bsr SigTime
- bra LoopWndMsg
-
- NoWindowGad cmp.w #SECSGAD,d7 ; Display seconds ?
- bne.s NoSecGad
- bchg #0,ShowSecs
- bsr ClearTitleBar
- bsr SigTime
- bra LoopWndMsg
-
- NoSecGad cmp.w #AMIGAD,d7 ; Set to american date ?
- bne.s NoAmiGad
- bchg #0,AmiDate
- bsr ClearTitleBar
- bsr SigTime
- bra LoopWndMsg
-
- NoAmiGad cmp.w #CLICKGAD,d7 ; Enable/Disable Key-Click ?
- bne.s NoClickGad
- bchg #0,KeyClick
- bra LoopWndMsg
-
- NoClickGad cmp.w #DAYGAD,d7 ; Display day ?
- bne.s NoDayGad
- bchg #0,ShowDay
- bsr ClearTitleBar
- bsr SigTime
- bra LoopWndMsg
-
- NoDayGad cmp.w #SHORTGAD,d7 ; Shorten the day ?
- bne.s NoShortGad
- bchg #0,ShortDay
- bsr ClearTitleBar
- bsr SigTime
- bra LoopWndMsg
-
- NoShortGad cmp.w #DATEGAD,d7 ; Display date ?
- bne.s NoDateGad
- bchg #0,ShowDate
- bsr ClearTitleBar
- bsr SigTime
- bra LoopWndMsg
-
- NoDateGad cmp.w #ALARMMODEGAD,d7 ; Enable/Disable alarm ?
- bne.s NoAlarmModeGad
- bchg #0,DoAlarm
- bra LoopWndMsg
-
- NoAlarmModeGad cmp.w #BILLGAD,d7 ; Open bill window ?
- bne.s NoBillGad
- move.l CheckerProc(pc),a1
- move.l #SIGBILLWIN,d0
- CALLSYS Signal
- bra LoopWndMsg
-
- NoBillGad cmp.w #PREFSGAD,d7 ; Activate preferences ?
- bne.s NoPrefsGad
- bsr OpenPrefsWin
- bra LoopWndMsg
-
- NoPrefsGad cmp.w #ENVGAD,d7 ; Enable/Disable env vars ?
- bne.s NoEnvGad
- bchg #0,SetEnv
- tst.b SetEnv
- bne.s .NoDel
- bsr DeleteEnvs
- .NoDel bsr SigTime
- bra LoopWndMsg
-
- NoEnvGad cmp.w #CYCLEGAD,d7 ; Enable/Disable Window-Cycling ?
- bne.s NoCycleGad
- bchg #0,CycleWin
- bra LoopWndMsg
-
- NoCycleGad cmp.w #WBFRONTGAD,d7 ; Enable/Disable WB to front ?
- bne.s NoWBFrontGad
- bchg #0,WBFront
- bra LoopWndMsg
-
- NoWBFrontGad cmp.w #LEFTYGAD,d7 ; Enable/Disable LeftyMouse ?
- bne.s NoLeftyGad
- bchg #0,LeftyMouse
- bra LoopWndMsg
-
- NoLeftyGad cmp.w #WESCGAD,d7 ; Enable/Disable ESC-Close ?
- bne.s NoEscGad
- bchg #0,ESCClose
- bra LoopWndMsg
-
- NoEscGad cmp.w #UMLAUTGAD,d7 ; Enable/Disable "Umaluts" ?
- bne.s NoUmlautGad
- bchg #0,MapUmlaut
- bra LoopWndMsg
-
- NoUmlautGad cmp.w #LOADGAD,d7 ; Load prefs
- bne.s NoLoadGad
- move.l #0,-(sp)
- move.w #0,-(sp)
- pea PrefsFileName
- pea PrefsFile
- pea PrefsPath
- pea PrefsLoadHeader
- move.l WndHandle,-(sp)
- jsr GetFileName
- lea 26(sp),sp
- tst.l d0
- beq.s .End
- bsr LoadPrefs
- .End bra LoopWndMsg
-
- NoLoadGad cmp.w #SAVEGAD,d7 ; Save prefs
- bne.s NoSaveGad
- move.l #0,-(sp)
- move.w #0,-(sp)
- pea PrefsFileName
- pea PrefsFile
- pea PrefsPath
- pea PrefsSaveHeader
- move.l WndHandle,-(sp)
- jsr GetFileName
- lea 26(sp),sp
- tst.l d0
- beq.s .End
- bsr SavePrefs
- .End bra LoopWndMsg
-
- NoSaveGad cmp.w #ENABLEGAD,d7 ; Enable broker ?
- bne.s NoEnGad
- move.b #0,Disabled
- move.b #1,TimeReset
- bsr EnableBroker
- bra LoopWndMsg
-
- NoEnGad cmp.w #DISABLEGAD,d7 ; Disable broker ?
- bne.s NoDisGad
- bsr DisableBroker
- move.b #1,Disabled
- bra LoopWndMsg
-
- NoDisGad cmp.w #HIDEGAD,d7 ; Hide window again
- bne.s NoHideGad
- bsr CloseOurWindow
- bra NoWindowMsg
-
- NoHideGad cmp.w #QUITGAD,d7 ; Quit hole stuff ?
- bne.s NoQuitGad
- move.w #1,QuitBroker
- bra LoopWndMsg
-
- NoQuitGad cmp.w #SETALARMGAD,d7 ; Alarm time altered ?
- bne.s NoSetAlarmGad
- move.l #SETALARMGAD,d0
- lea ControlGads,a0
- bsr GetGadgetPtr
- move.l gg_SpecialInfo(a0),a0
- move.l si_Buffer(a0),a0
- bsr CheckAlarmTime
- bra LoopWndMsg
-
- NoSetAlarmGad cmp.w #SCREENGAD,d7 ; Screen time altered ?
- bne.s NoScreenGad
- move.l ScreenTime,d7
- move.l #SCREENGAD,d0
- lea ControlGads,a0
- bsr GetGadgetPtr
- move.l a0,a4
- move.l gg_SpecialInfo(a4),a5
- move.l si_LongInt(a5),d0 ; Retrieve data entered
- tst.l d0
- blt.s .Error ; negative value -> error
- move.l d0,ScreenTime ; store new time
- bra.s .End
- .Error move.l d7,ScreenTime ; disable screen blanker
- move.l #SCREENGAD,d0
- lea ControlGads,a0
- move.l WndHandle(pc),a1
- move.l #3,d1
- move.l d7,d2
- bsr SetIntegerGad
- .End move.b #1,TimeReset
- bra LoopWndMsg
-
- NoScreenGad cmp.w #MOUSEGAD,d7 ; Change mouse time ?
- bne.s NoMouseGad
- move.l MouseTime,d7
- move.l #MOUSEGAD,d0
- lea ControlGads,a0
- bsr GetGadgetPtr
- move.l a0,a4
- move.l gg_SpecialInfo(a4),a5
- move.l si_LongInt(a5),d0 ; retrieve time entered
- tst.l d0
- blt.s .Error ; negative value -> error
- move.l d0,MouseTime ; Store new time
- bra.s .End
- .Error move.l d7,MouseTime ; deactivate timer
- move.l #MOUSEGAD,d0
- lea ControlGads,a0
- move.l WndHandle,a1
- moveq #3,d1
- move.l d7,d2
- bsr SetIntegerGad
- .End move.b #1,TimeReset
- bra LoopWndMsg
-
- NoMouseGad cmp.w #FRONTGAD,d7 ; Cycle gadget for
- bne.s NoFrontGad ; Click qualifier pressed ?
- addq.l #1,PopQualNum ; Increase Qualifier number
- cmp.l #POPQUALCNT,PopQualNum ; Exceited maxmum ?
- blt.s .End
- move.l #0,PopQualNum ; Reset number
- .End bra LoopWndMsg
-
- NoFrontGad cmp.w #ESCQUALGAD,d7 ; Cycle gadget for
- bne.s NoESCQualGad ; ESC qualifier pressed ?
- addq.l #1,ESCQualNum ; Increase Qualifier number
- cmp.l #ESCQUALCNT,ESCQualNum ; Exceited maxmum ?
- blt.s .End
- move.l #0,ESCQualNum ; Reset number
- .End bra LoopWndMsg
-
- NoESCQualGad cmp.w #HOTWINGAD,d7 ; Open HotKeys window ?
- bne.s NoHotKeysGad
- bsr OpenHotKeyWin
- bra LoopWndMsg
-
- NoHotKeysGad cmp.w #VOLGAD,d7 ; Change click volume ?
- bne.s NoVolGad
- move.l #VOLGAD,d0
- lea ControlGads,a0
- bsr GetGadgetPtr
- move.l a0,a4
- move.l gg_SpecialInfo(a4),a5
- move.l si_LongInt(a5),d0 ; Check for invalid number
- tst.l d0
- blt.s .Error
- cmp.l #64,d0
- bgt.s .Error
- move.l d0,ClickVol
- bra LoopWndMsg
- .Error move.l ClickVol,si_LongInt(a5) ; Remake string
- move.l #VOLGAD,d0
- lea ControlGads,a0
- move.l WndHandle,a1
- moveq #2,d1
- move.l ClickVol,d2
- bsr SetIntegerGad
-
- NoVolGad cmp.w #USERSHELLGAD,d7 ; Change Shell-Command ?
- bne LoopWndMsg
- move.l gg_SpecialInfo(a4),a0
- move.l si_Buffer(a0),a0
- lea SystemParam,a1
- bsr StrCpy
- bra LoopWndMsg
-
- NoGadgetUp cmp.l #IDCMP_RAWKEY,d6
- bne.s NoCRawKey
-
- cmp.w #HELPKEY,d5 ; Display help ?
- bne LoopWndMsg
- lea MainHelpFile,a0
- lea HelpName,a1
- bsr StrCpy
- bsr OtherHelp
- bra LoopWndMsg
-
- NoCRawKey cmp.l #IDCMP_VANILLAKEY,d6 ; Any keys pressed
- bne LoopWndMsg
-
- cmp.w #ACTIKEY,d5 ; Do activations ?
- bne.s NoActiKey
- ActiKey bchg #0,DoActivate
- move.b DoActivate(pc),d0
- move.l #ACTIGAD,d1
- bsr SetControlBox
- bra EndMainMenu
-
- NoActiKey cmp.w #MODEKEY,d5 ; Change activation mode ?
- bne.s NoModeKey
- ModeKey bchg #0,MouseMode ; Invert flag of Activation-Mode
- move.b MouseMode(pc),d0 ; Get mode
- move.l #MODEGAD,d1
- bsr SetControlBox
- bra EndMainMenu
-
- NoModeKey cmp.w #DISPLAYKEY,d5 ; Clock on/off ?
- bne.s NoDisplayKey
- DisplayKey bchg #0,ShowClock
- move.b ShowClock(pc),d0 ; reflect new choice
- move.l #DISPLAYGAD,d1
- bsr SetControlBox
- bsr ClearTitleBar ; Clear titlebar
- bsr CloseClockWin ; Close clock window
- bsr SigTime
- bra EndMainMenu
-
- NoDisplayKey cmp.w #WINDOWKEY,d5 ; Display clock in window ?
- bne.s NoWindowKey
- WindowKey bchg #0,ClockWin
- move.b #1,ShowClock
- move.b ClockWin(pc),d0
- move.l #WINDOWGAD,d1
- bsr SetControlBox
- moveq #1,d0
- move.l #DISPLAYGAD,d1
- bsr SetControlBox
- bsr ClearTitleBar
- bsr SigTime
- bra EndMainMenu
-
- NoWindowKey cmp.w #SECSKEY,d5 ; Display seconds ?
- bne.s NoSecKey
- SecsKey bchg #0,ShowSecs
- move.b ShowSecs(pc),d0
- move.l #SECSGAD,d1
- bsr SetControlBox
- bsr ClearTitleBar
- bsr SigTime
- bra EndMainMenu
-
- NoSecKey cmp.w #AMIKEY,d5 ; Set to american date ?
- bne.s NoAmiKey
- AmiKey bchg #0,AmiDate
- move.b AmiDate(pc),d0
- move.l #AMIGAD,d1
- bsr SetControlBox
- bsr ClearTitleBar
- bsr SigTime
- bra EndMainMenu
-
- NoAmiKey cmp.w #CLICKKEY,d5 ; Enable/Disable Key-Click ?
- bne.s NoClickKey
- ClickKey bchg #0,KeyClick
- move.b KeyClick(pc),d0
- move.l #CLICKGAD,d1
- bsr SetControlBox
- bra EndMainMenu
-
- NoClickKey cmp.w #DAYKEY,d5 ; Display day ?
- bne.s NoDayKey
- DayKey bchg #0,ShowDay
- move.b ShowDay(pc),d0
- move.l #DAYGAD,d1
- bsr SetControlBox
- bsr ClearTitleBar
- bsr SigTime
- bra EndMainMenu
-
- NoDayKey cmp.w #SHORTKEY,d5 ; Shorten day ?
- bne.s NoShortKey
- ShortKey bchg #0,ShortDay
- move.b ShortDay(pc),d0
- move.l #SHORTGAD,d1
- bsr SetControlBox
- bsr ClearTitleBar
- bsr SigTime
- bra EndMainMenu
-
- NoShortKey cmp.w #DATEKEY,d5 ; Display date ?
- bne.s NoDateKey
- DateKey bchg #0,ShowDate
- move.b ShowDate(pc),d0
- move.l #DATEGAD,d1
- bsr SetControlBox
- bsr ClearTitleBar
- bsr SigTime
- bra EndMainMenu
-
- NoDateKey cmp.w #ALARMMODEKEY,d5 ; Enable/Disable alarm ?
- bne.s NoAlarmModeKey
- AlarmModeKey bchg #0,DoAlarm
- move.b DoAlarm(pc),d0
- move.l #ALARMMODEGAD,d1
- bsr SetControlBox
- bra EndMainMenu
-
- NoAlarmModeKey cmp.w #BILLKEY,d5 ; Open bill window ?
- bne.s NoBillKey
- BillKey move.l #BILLGAD,d0
- lea ControlGads,a0
- move.l WndHandle,a5
- bsr ButtonCheck
- move.l CheckerProc(pc),a1
- move.l #SIGBILLWIN,d0
- CALLSYS Signal
- bra EndMainMenu
-
- NoBillKey cmp.w #PREFSKEY,d5 ; Open prefs window ?
- bne.s NoPrefsKey
- PrefsKey move.l #PREFSGAD,d0
- lea ControlGads,a0
- move.l WndHandle,a5
- bsr ButtonCheck
- bsr OpenPrefsWin
- bra EndMainMenu
-
- NoPrefsKey cmp.w #ENVKEY,d5 ; Enable/Disable env vars ?
- bne.s NoEnvKey
- EnvKey bchg #0,SetEnv
- tst.b SetEnv
- bne.s .NoDel
- bsr DeleteEnvs ; Delete vars, if turned off
- .NoDel move.b SetEnv(pc),d0
- move.l #ENVGAD,d1
- bsr SetControlBox
- bsr ClearTitleBar
- bsr SigTime
- bra EndMainMenu
-
- NoEnvKey cmp.w #CYCLEKEY,d5 ; Enable/Disable Window-Cycling ?
- bne.s NoCycleKey
- CycleKey bchg #0,CycleWin
- move.b CycleWin(pc),d0
- move.l #CYCLEGAD,d1
- bsr SetControlBox
- bra EndMainMenu
-
- NoCycleKey cmp.w #VOLKEY,d5 ; Enter new volume ?
- bne.s NoVolKey
- VolKey move.l #VOLGAD,d0
- lea ControlGads,a0
- move.l WndHandle,a1
- bsr ActStringGad
- bra EndMainMenu
-
- NoVolKey cmp.w #WBFRONTKEY,d5 ; Enable/Disable WB front ?
- bne.s NoWBFrontKey
- WBFrontKey bchg #0,WBFront
- move.b WBFront(pc),d0
- move.l #WBFRONTGAD,d1
- bsr SetControlBox
- bra EndMainMenu
-
- NoWBFrontKey cmp.w #LEFTYKEY,d5 ; Enable/Disable LeftyMouse ?
- bne.s NoLeftyKey
- LeftyKey bchg #0,LeftyMouse
- move.b LeftyMouse(pc),d0
- move.l #LEFTYGAD,d1
- bsr SetControlBox
- bra EndMainMenu
-
- NoLeftyKey cmp.w #WESCKEY,d5 ; Enable/Disable ESC-Close ?
- bne.s NoEscKey
- WESCKey bchg #0,ESCClose
- move.b ESCClose(pc),d0
- move.l #WESCGAD,d1
- bsr SetControlBox
- bra EndMainMenu
-
- NoEscKey cmp.w #UMLAUTKEY,d5 ; Enable/Disable Umlauts ?
- bne.s NoUmlautKey
- UmlautKey bchg #0,MapUmlaut
- move.b MapUmlaut(pc),d0
- move.l #UMLAUTGAD,d1
- bsr SetControlBox
- bra EndMainMenu
-
- NoUmlautKey cmp.w #LOADKEY,d5 ; Load prefs ?
- bne.s NoLoadKey
- DoLoadPrefs move.l #LOADGAD,d0
- lea ControlGads,a0
- move.l WndHandle,a5
- bsr ButtonCheck
- move.l #0,-(sp)
- move.w #0,-(sp)
- pea PrefsFileName
- pea PrefsFile
- pea PrefsPath
- pea PrefsLoadHeader
- move.l WndHandle,-(sp)
- jsr GetFileName
- lea 26(sp),sp
- tst.l d0
- beq.s .End
- bsr LoadPrefs
- .End bra EndMainMenu
-
- NoLoadKey cmp.w #SAVEKEY,d5 ; save prefs ?
- bne.s NoSaveKey
- DoSaveAsPrefs move.l #SAVEGAD,d0
- lea ControlGads,a0
- move.l WndHandle,a5
- bsr ButtonCheck
- move.l #0,-(sp)
- move.w #0,-(sp)
- pea PrefsFileName
- pea PrefsFile
- pea PrefsPath
- pea PrefsSaveHeader
- move.l WndHandle,-(sp)
- jsr GetFileName
- lea 26(sp),sp
- tst.l d0
- beq.s .End
- bsr SavePrefs
- .End bra EndMainMenu
-
- NoSaveKey cmp.w #HOTWINKEY,d5 ; Open HotKey window ?
- bne.s NoHotWinKey
- HotWinKey move.l #HOTWINGAD,d0
- lea ControlGads,a0
- move.l WndHandle,a5
- bsr ButtonCheck
- bsr OpenHotKeyWin
- bra EndMainMenu
-
- NoHotWinKey cmp.w #ENABLEKEY,d5 ; Enable ?
- bne.s NoEnKey
- EnableKey move.b #0,Disabled
- move.b #1,TimeReset
- bsr EnableBroker
- move.l #ENABLEGAD,d0
- lea ControlGads,a0
- move.l WndHandle,a5
- bsr ButtonCheck
- bra EndMainMenu
-
- NoEnKey cmp.w #DISABLEKEY,d5 ; Disable ?
- bne.s NoDisKey
- DisableKey bsr DisableBroker
- move.b #1,Disabled
- move.l #DISABLEGAD,d0
- lea ControlGads,a0
- move.l WndHandle,a5
- bsr ButtonCheck
- bra EndMainMenu
-
- NoDisKey cmp.w #ESCKEY,d5 ; Hide stuff ?
- beq.s HideKey
- cmp.w #HIDEKEY,d5
- bne.s NoHideKey
- HideKey move.l #HIDEGAD,d0
- lea ControlGads,a0
- move.l WndHandle,a5
- bsr ButtonCheck
- EndControl bsr CloseOurWindow
- bra NoWindowMsg
-
- NoHideKey cmp.w #QUITKEY,d5 ; Quit stuff ?
- bne.s NoQuitKey
- QuitKey move.l #QUITGAD,d0
- lea ControlGads,a0
- move.l WndHandle,a5
- bsr ButtonCheck
- move.w #1,QuitBroker
- bra EndMainMenu
-
- NoQuitKey cmp.w #SETALARMKEY,d5 ; Enter new alarm time ?
- bne.s NoSetAlarmKey
- SetAlarmKey move.l #SETALARMGAD,d0 ; Activate gadget
- lea ControlGads,a0
- move.l WndHandle,a1
- bsr ActStringGad
- bra EndMainMenu
-
- NoSetAlarmKey cmp.w #SCREENKEY,d5 ; Enter new screentimeout ?
- bne.s NoScreenKey
- ScreenKey move.l #SCREENGAD,d0
- lea ControlGads,a0
- move.l WndHandle,a1
- bsr ActStringGad
- bra EndMainMenu
-
- NoScreenKey cmp.w #MOUSEKEY,d5 ; Enter new mousetimeout ?
- bne.s NoMouseKey
- MouseKey move.l #MOUSEGAD,d0
- lea ControlGads,a0
- move.l WndHandle,a1
- bsr ActStringGad
- bra EndMainMenu
-
- NoMouseKey cmp.w #FRONTKEY,d5 ; Change Front/Back qualifier
- bne.s NoFrontKey
- FrontKey addq.l #1,PopQualNum ; Increase Qualifier number
- cmp.l #POPQUALCNT,PopQualNum
- blt.s .End
- move.l #0,PopQualNum
- .End move.l #FRONTGAD,d0
- lea ControlGads,a0
- move.l WndHandle,a1
- move.l PopQualNum(pc),d1
- lea PopQualList,a2
- bsr SetCycleGad
- bra EndMainMenu
-
- NoFrontKey cmp.w #ESCQUALKEY,d5 ; Change ESC-Qualifier ?
- bne.s NoESCQualKey
- ESCKey addq.l #1,ESCQualNum ; Increase Qualifier number
- cmp.l #ESCQUALCNT,ESCQualNum
- blt.s .End
- move.l #0,ESCQualNum
- .End move.l #ESCQUALGAD,d0
- move.l ESCQualNum(pc),d1
- lea ControlGads,a0
- move.l WndHandle,a1
- lea ESCQualList,a2
- bsr SetCycleGad
- bra EndMainMenu
-
- NoESCQualKey cmp.w #USERSHELLKEY,d5 ; Change User shell ?
- bne LoopWndMsg
- UserShellKey move.l #USERSHELLGAD,d0
- lea ControlGads,a0
- move.l WndHandle,a1
- bsr ActStringGad
- bra EndMainMenu
-
- NoWindowMsg move.l ThisSig(pc),d0 ; Did it come from ARexx ?
- and.l ARexxSigFlag(pc),d0
- beq.s NoARexxMsg
- bsr HandleARexx ; Handle ARexx commands
- bra CheckBroker
-
- NoARexxMsg move.l ThisSig(pc),d0 ; Did it come from the preferences
- and.l PrefsSigFlag(pc),d0 ; window ?
- beq NoPrefsMsg
-
- LoopPrefsMsg move.l PrefsHandle(pc),a0 ; Get message
- move.l wd_UserPort(a0),a0
- LNKLIB GT_GetIMsg,_GadToolsBase
- tst.l d0
- beq NoPrefsMsg
-
- move.l d0,a1 ; Get important data
- move.l im_Class(a1),d6
- move.w im_Code(a1),d5
- cmp.w #'a',d5
- blt.s .End
- and.w #~$20,d5
- .End move.l im_IAddress(a1),a4
- move.w gg_GadgetID(a4),d7
-
- DOLIB GT_ReplyIMsg
-
- DoLogMsgs cmp.l #IDCMP_CLOSEWINDOW,d6 ; Window to be closed ?
- bne.s NoPrefsClose
- bsr ClosePrefsWin
- bra NoPrefsMsg
-
- NoPrefsClose cmp.l #IDCMP_ACTIVEWINDOW,d6 ; Window activated ?
- beq Normal1Key
-
- cmp.l #IDCMP_CHANGEWINDOW,d6 ; Window moved ?
- bne.s NoPrefsMove
- move.l PrefsHandle,a0
- lea PrefsWinDef,a1
- bsr StoreWinPos
- bra LoopPrefsMsg
-
- NoPrefsMove cmp.l #IDCMP_GADGETUP,d6 ; Gadget released ?
- bne NoPrefsGadUp
-
- cmp.w #CHEAP3GAD,d7 ; One of the cost gadgets ?
- bgt.s NoCostTimeGad
-
- ext.l d7 ; Calc offset to time
- move.l d7,d6 ; Copy number of gadget
- subq.w #1,d7 ; within structure
- move.l d7,d0
- asr.w #1,d0 ; D0 = Offset to timezone
- move.l d0,d1
- asl.w #1,d1
- sub.l d1,d7 ; D7 = Offset to normal/cheap
-
- lea CostUnit1,a0
- asl.l #3,d0
- asl.l #2,d7
- lea 0(a0,d0),a0
- move.l 0(a0,d7),d1 ; Get old cost
- move.l gg_SpecialInfo(a4),a3
- move.l si_LongInt(a3),d0 ; Get new one
- tst.l d0 ; Less zero or even equal ?
- ble.s .Error
- move.l d0,0(a0,d7) ; Store new time
- bra.s .End
- .Error move.l d6,d0
- lea PrefsGads,a0
- move.l PrefsHandle,a1
- move.l d1,d2
- move.l #4,d1
- bsr SetIntegerGad
- .End move.b #1,DoRemakeCosts
- bsr RemakeCosts
- bra LoopPrefsMsg
-
- NoCostTimeGad cmp.w #COSTGAD,d7 ; New cost/unit entered ?
- bne.s NoCostGad
-
- move.l gg_SpecialInfo(a4),a3
- move.l si_LongInt(a3),d0 ; Get new value
- tst.l d0 ; <= 0 ?
- ble.s .Error
- move.l d0,CostUnit ; Store new value
- bra.s .End
- .Error move.l #COSTGAD,d0
- lea PrefsGads,a0
- move.l PrefsHandle,a1
- moveq #4,d1
- move.l CostUnit,d2
- bsr SetIntegerGad
- .End move.b #1,DoRemakeCosts
- bsr RemakeCosts
- bra LoopPrefsMsg
-
- NoCostGad cmp.w #CLEARLOGGAD,d7 ; Clear log file ?
- bne.s NoClearGad
- move.l #LogFileName,d1
- LNKLIB DeleteFile,_DOSBase
- bra LoopPrefsMsg
-
- NoClearGad cmp.w #BILLPOPGAD,d7 ; Enable/Disable PopUp fo BillWin
- bne.s NoBillPopGad
- bchg #0,BillPopUp
- bra LoopPrefsMsg
-
- NoBillPopGad cmp.w #LOGCALLGAD,d7 ; Enable/Disable phone logs ?
- bne.s NoLogGad
- bchg #0,LogCalls
- bra LoopPrefsMsg
-
- NoLogGad cmp.w #SAVETOGAD,d7 ; Select a file via ASL-Request ?
- bne.s NoSaveToGad
- pea PrefsGads
- move.w #LOGFILEGAD,-(sp)
- pea LogFileName
- pea LogFile
- pea LogPath
- pea LogFileHeader
- move.l PrefsHandle,-(sp)
- jsr GetFileName
- lea 26(sp),sp
- bra LoopPrefsMsg
-
- NoSaveToGad cmp.w #LOGFILEGAD,d7 ; Entered new logfilename ?
- bne NoLogFileGad
-
- move.l gg_SpecialInfo(a4),a5 ; Check if can be saved to dir
- move.l si_Buffer(a5),a0
- move.l ReadBuffer(pc),a1
- bsr StrCpy ; copy new filename
- move.l ReadBuffer(pc),a0
- bsr StrLen
- subq.l #1,d0
- .CheckLoop cmp.b #':',(a0) ; Dir entered ?
- beq.s .DoDirCheck
- cmp.b #'/',(a0)
- beq.s .DoDirCheck
- addq.l #1,a0
- dbf d0,.CheckLoop
- bra.s .OnlyFile
- .DoDirCheck move.l a0,a1 ; Yep...Extract dir name
- .FindDir tst.b (a0)
- beq.s .NameEnd
- cmp.b #'/',(a0)
- bne.s .Loop
- move.l a0,a1
- .Loop addq.l #1,a0
- bra.s .FindDir
- .NameEnd move.b #0,1(a1) ; Dir name extracted
- move.l ReadBuffer,d1 ; Try to lock it
- move.l d1,EasyArg
- move.l #ACCESS_READ,d2
- LNKLIB Lock,_DOSBase
- tst.l d0
- bne.s .Ok
- DOLIB IoErr ; Error
- move.l d0,ErrorNum
- bsr DisplayError
- bra.s .Error
- .Ok move.l d0,d1 ; No Error
- DOLIB UnLock
- .OnlyFile move.l si_Buffer(a5),a0 ; Copy new filename
- lea LogFileName,a1
- bsr StrCpy
- bra LoopPrefsMsg
- .Error move.l #LOGFILEGAD,d0
- lea PrefsGads,a0
- move.l PrefsHandle,a1
- move.l #286,d1
- lea LogFileName,a2
- bsr SetStringGad
- bra LoopPrefsMsg
-
- NoLogFileGad cmp.w #TOTALSUMGAD,d7 ; Display total sum ?
- bne LoopPrefsMsg
-
- bsr DisplayTotalSum
- bra LoopPrefsMsg
-
- NoPrefsGadUp cmp.l #IDCMP_GADGETDOWN,d6 ; MX gadget used ?
- bne.s NoPrefsGadDown
-
- cmp.w #PTIMEGAD,d7 ; Changed time ?
- bne.s NoPTimeGad
- ext.l d5
- move.l d5,PTimeZone
- bra LoopPrefsMsg
-
- NoPTimeGad cmp.w #PMODEGAD,d7 ; Changed tariff ?
- bne LoopPrefsMsg
- ext.l d5
- move.l d5,PTariff
- bra LoopPrefsMsg
-
- NoPrefsGadDown cmp.l #IDCMP_VANILLAKEY,d6 ; Key pressed ?
- bne NoPrefsVKey
-
- cmp.w #ESCKEY,d5 ; Hide window ?
- bne.s PNoEscKey
- PEscKey bsr ClosePrefsWin
- bra NoPrefsMsg
-
- PNoEscKey cmp.w #NORMAL1KEY,d5 ; Activate first integer gad ?
- bne.s NoNormal1Key
- Normal1Key move.l #NORMAL1GAD,d0
- lea PrefsGads,a0
- move.l PrefsHandle(pc),a1
- bsr ActStringGad
- bra EndPrefsMenu
-
- NoNormal1Key cmp.w #SAVETOKEY,d5 ; Select new log filename ?
- bne.s NoSaveToKey
-
- SaveToKey move.l #SAVETOGAD,d0
- lea PrefsGads,a0
- move.l PrefsHandle,a5
- bsr ButtonCheck
- pea PrefsGads
- move.w #LOGFILEGAD,-(sp)
- pea LogFileName
- pea LogFile
- pea LogPath
- pea LogFileHeader
- move.l PrefsHandle,-(sp)
- jsr GetFileName
- lea 26(sp),sp
- bra EndPrefsMenu
-
- NoSaveToKey cmp.w #TOTALSUMKEY,d5 ; Display total costs ?
- bne.s NoTotalSumGad
- TotalSumKey move.l #TOTALSUMGAD,d0
- lea PrefsGads,a0
- move.l PrefsHandle,a5
- bsr ButtonCheck
- bsr DisplayTotalSum
- bra EndPrefsMenu
-
- NoTotalSumGad cmp.w #CLEARLOGKEY,d5 ; Clear log file ?
- bne.s NoClearKey
- ClearLogKey move.l #CLEARLOGGAD,d0
- lea PrefsGads,a0
- move.l PrefsHandle,a5
- bsr ButtonCheck
- move.l #LogFileName,d1
- LNKLIB DeleteFile,_DOSBase
- bra EndPrefsMenu
-
- NoClearKey cmp.w #LOGCALLKEY,d5 ; Enable/Disable phone logs ?
- bne.s NoLogKey
- LogCallKey bchg #0,LogCalls
- move.b LogCalls(pc),d0
- move.l #LOGCALLGAD,d1
- bra.s SetPrefsBox
-
- NoLogKey cmp.w #BILLPOPKEY,d5 ; Enable/Disable PopUp of BillWin
- bne.s NoBillPopKey
- BillPopKey bchg #0,BillPopUp
- move.b BillPopUp(pc),d0
- move.l #BILLPOPGAD,d1
- SetPrefsBox lea PrefsGads,a0
- move.l PrefsHandle,a1
- movem.l d0/d1,-(sp)
- bsr SetCheckBox
- movem.l (sp)+,d0/d1
- sub.l #10,d1
- moveq #1,d2
- move.l PrefsHandle,a0
- move.l PrefsMenu,a1
- bsr SetToggleMenu
- bra EndPrefsMenu
-
- NoBillPopKey cmp.w #TIME1KEY,d5 ; Changed time zone ?
- blt.s NoPTimeKey
- cmp.w #TIME3KEY,d5
- bgt.s NoPTimeKey
- sub.w #'1',d5
- DoTime123Key ext.l d5
- move.l d5,PTimeZone
- move.l d5,d0
- move.l #PTIMEGAD,d1
- lea PrefsTimeLabels,a2
- bra.s RemakePMx
-
- NoPTimeKey cmp.w #PNORMALKEY,d5 ; Change tariff ?
- blt EndPrefsMenu
- cmp.w #PCHEAPKEY,d5
- bgt EndPrefsMenu
- sub.w #'4',d5
- DoTariff45Key ext.l d5
- move.l d5,PTariff
- move.l d5,d0
- move.l #PMODEGAD,d1
- lea PrefsModeLabels,a2
- RemakePMx lea PrefsGads,a0
- move.l PrefsHandle(pc),a1
- bsr SetMXGad
- bra EndPrefsMenu
-
- NoPrefsVKey cmp.l #IDCMP_RAWKEY,d6
- bne.s NoPrefsRKey
-
- cmp.w #HELPKEY,d5 ; User pressed help ?
- bne LoopPrefsMsg
- lea PrefsHelpFile,a0
- lea HelpName,a1
- bsr StrCpy
- bsr OtherHelp
- bra LoopPrefsMsg
-
- NoPrefsRKey cmp.l #IDCMP_MENUHELP,d6 ; User pressed help in menu ?
- bne.s NoPrefsHelp
- moveq #0,d0 ; Remake possible
- move.b BillPopUp,d0 ; changes to toggle entries
- moveq #0,d1
- moveq #1,d2
- move.l PrefsHandle,a0
- move.l PrefsMenu,a1
- bsr SetToggleMenu
- moveq #0,d0
- move.b LogCalls,d0
- moveq #1,d1
- moveq #1,d2
- move.l PrefsHandle,a0
- move.l PrefsMenu,a1
- bsr SetToggleMenu
- moveq #2,d0
- bsr OnlineHelp
- bra LoopPrefsMsg
-
- NoPrefsHelp cmp.l #IDCMP_MENUPICK,d6
- bne LoopPrefsMsg
-
- cmp.w #-1,d5
- beq.s EndPrefsMenu
- move.w d5,d2
- and.w #$1f,d2 ; Get menunumber
- move.w d5,d1
- asr.w #5,d1
- and.w #$3f,d1 ; Get itemnumber
- move.w d1,d5
- move.l PrefsMenu,a1
- bsr GetMenuPtr
- GTMENUITEM_USERDATA a2,a0
- cmp.l #0,a0
- beq.s EndPrefsMenu
- jmp (a0)
-
- Time123Key subq.w #2,d5 ; Change timezone
- bra DoTime123Key
- Tariff45Key subq.w #6,d5 ; Change tariff
- bra DoTariff45Key
- ChangeLogName lea PrefsGads,a0
- move.l #LOGFILEGAD,d0
- bsr GetGadgetPtr
- move.l PrefsHandle,a1
- sub.l a2,a2
- LNKLIB ActivateGadget,_IntuitionBase
- bra.s EndPrefsMenu
- EndPrefsMenu move.l DoActWindow,a1
- cmp.l #0,a1
- beq.s .End
- cmp.l PrefsHandle,a1
- bne.s .End
- move.l DoActGadget,a0
- sub.l a2,a2
- LNKLIB ActivateGadget,_IntuitionBase
- move.l #0,DoActWindow
- move.l #0,DoActGadget
- .End bra LoopPrefsMsg
-
- NoPrefsMsg move.l ThisSig,d0 ; Msg from HotKey window ?
- and.l HotKeySigFlag,d0
- beq NoHotKeyMsg
-
- LoopHotKeyMsg move.l HotKeyHandle,a0
- move.l wd_UserPort(a0),a0
- LNKLIB GT_GetIMsg,_GadToolsBase
- tst.l d0
- beq NoHotKeyMsg
-
- move.l d0,a1 ; Get important data
- move.l im_Class(a1),d6
- move.w im_Code(a1),d5
- cmp.w #'a',d5
- blt.s .End
- and.w #~$20,d5
- .End move.l im_IAddress(a1),a4
- move.w gg_GadgetID(a4),d7
-
- DOLIB GT_ReplyIMsg
-
- cmp.l #IDCMP_CLOSEWINDOW,d6 ; Close window ?
- bne.s NoHotKeyClose
- bsr CloseHotKeyWin
- bra NoHotKeyMsg
-
- NoHotKeyClose cmp.l #IDCMP_ACTIVEWINDOW,d6 ; Window active ?
- beq HPopUpKey
-
- cmp.l #IDCMP_CHANGEWINDOW,d6 ; Window moved ?
- bne.s NoHotKeyMove
- move.l HotKeyHandle,a0
- lea HotKeyWinDef,a1
- bsr StoreWinPos
- bra LoopHotKeyMsg
-
- NoHotKeyMove cmp.l #IDCMP_GADGETUP,d6 ; Gadget released ?
- bne NoHotKeyGadUp
-
- cmp.w #POPUPGAD,d7 ; Change PopUp HotKey ?
- bne.s NoPopUpGad
- move.l gg_SpecialInfo(a4),a0
- move.l si_Buffer(a0),a0
- move.l ReadBuffer(pc),a1 ; Copy new one to hotkey
- bsr StrCpy
- move.l WndHandle,a0
- lea ControlTitle,a1
- move.l PopUpFilter,a4
- lea PopUpKey,a5
- bsr RemakeHotKey
- bra LoopHotKeyMsg
-
- NoPopUpGad cmp.w #PAGEGAD,d7 ; Released Page-Gadget
- bne.s NoPageGad
- move.l gg_SpecialInfo(a4),a0
- move.l si_Buffer(a0),a0
- move.l ReadBuffer(pc),a1 ; Copy new one to hotkey
- bsr StrCpy
- sub.l a0,a0
- sub.l a1,a1
- move.l PageFilter,a4
- lea PageHotKey,a5
- bsr RemakeHotKey
- bra LoopHotKeyMsg
-
- NoPageGad cmp.w #BILLKEYGAD,d7 ; Changed Bill HotKey ?
- bne.s NoBillKeyGad
- move.l gg_SpecialInfo(a4),a0
- move.l si_Buffer(a0),a0
- move.l ReadBuffer(pc),a1 ; Copy new one to hotkey
- bsr StrCpy
- move.l BillHandle,a0
- lea BillTitle,a1
- move.l BillFilter,a4
- lea BillHotKey,a5
- bsr RemakeHotKey
- bra LoopHotKeyMsg
-
- NoBillKeyGad cmp.w #PREFSKEYGAD,d7 ; Changed preferences HotKey ?
- bne.s NoPrefsKeyGad
- move.l gg_SpecialInfo(a4),a0
- move.l si_Buffer(a0),a0
- move.l ReadBuffer(pc),a1 ; Copy new one to hotkey
- bsr StrCpy
- move.l PrefsHandle,a0
- lea PrefsTitle,a1
- move.l PrefsFilter,a4
- lea PrefsHotKey,a5
- bsr RemakeHotKey
- bra LoopHotKeyMsg
-
- NoPrefsKeyGad cmp.w #HOTKEYGAD,d7 ; Changed HotWin HotKey ?
- bne.s NoHotKeyGad
- move.l gg_SpecialInfo(a4),a0
- move.l si_Buffer(a0),a0
- move.l ReadBuffer(pc),a1 ; Copy new one to hotkey
- bsr StrCpy
- move.l HotKeyHandle,a0
- lea HotWinTitle,a1
- move.l HotKeyFilter,a4
- lea HotWinHotKey,a5
- bsr RemakeHotKey
- bra LoopHotKeyMsg
-
- NoHotKeyGad cmp.w #SHELLGAD,d7 ; Change Shell HotKey ?
- bne.s NoShellGad
- move.l gg_SpecialInfo(a4),a0
- move.l si_Buffer(a0),a0
- move.l ReadBuffer(pc),a1 ; Copy new one to hotkey
- bsr StrCpy
- sub.l a0,a0
- sub.l a1,a1
- move.l ShellFilter,a4
- lea ShellHotKey,a5
- bsr RemakeHotKey
- bra LoopHotKeyMsg
-
- NoShellGad cmp.w #UMLAUTKEYGAD,d7 ; Change Umlaut HotKey ?
- bne LoopHotKeyMsg
- move.l gg_SpecialInfo(a4),a0
- move.l si_Buffer(a0),a0
- move.l ReadBuffer(pc),a1
- bsr StrCpy
- sub.l a0,a0
- sub.l a1,a1
- move.l UmlautFilter,a4
- lea UmlautHotKey,a5
- bsr RemakeHotKey
- bra LoopHotKeyMsg
-
- NoHotKeyGadUp cmp.l #IDCMP_VANILLAKEY,d6 ; Key Pressed ?
- bne NoHotVKey
-
- cmp.w #POPUPKEY,d5 ; Change PopUp-Key ?
- bne.s NoPopUpKey
- HPopUpKey move.l #POPUPGAD,d0
- bra.s ActHotKeyGad
-
- NoPopUpKey cmp.w #PAGEKEY,d5 ; Change Page-Key ?
- bne.s NoPageKey
- HPageKey move.l #PAGEGAD,d0
- bra.s ActHotKeyGad
-
- NoPageKey cmp.w #BILLKEYKEY,d5 ; Change Bill-Key ?
- bne.s NoBillKeyKey
- HBillKey move.l #BILLKEYGAD,d0
- bra.s ActHotKeyGad
-
- NoBillKeyKey cmp.w #PREFSKEYKEY,d5 ; Change Prefs-Key ?
- bne.s NoPrefsKeyKey
- HPrefsKey move.l #PREFSKEYGAD,d0
- bra.s ActHotKeyGad
-
- NoPrefsKeyKey cmp.w #HOTKEYKEY,d5 ; Change HotKey-Key ?
- bne.s NoHotKeyKey
- HHotKey move.l #HOTKEYGAD,d0
- bra.s ActHotKeyGad
-
- NoHotKeyKey cmp.w #SHELLKEY,d5 ; Change Shell-Key ?
- bne.s NoShellKey
- HShellKey move.l #SHELLGAD,d0
- bra.s ActHotKeyGad
-
- NoShellKey cmp.w #UMLAUTKEYKEY,d5 ; Change Umlaut HotKey ?
- bne.s NoUmlautKeyKey
- HUmlautKey move.l #UMLAUTKEYGAD,d0
- ActHotKeyGad lea HotKeyGads,a0
- move.l HotKeyHandle,a1
- bsr ActStringGad
- bra LoopHotKeyMsg
-
- NoUmlautKeyKey cmp.w #ESCKEY,d5 ; Close window ?
- bne LoopHotKeyMsg
- HEscKey bsr CloseHotKeyWin
- bra.s NoHotKeyMsg
-
- NoHotVKey cmp.l #IDCMP_RAWKEY,d6 ; User pressed help ?
- bne.s NoHotRKey
-
- cmp.w #HELPKEY,d5
- bne LoopHotKeyMsg
- lea HotKeyHelpFile,a0
- lea HelpName,a1
- bsr StrCpy
- bsr OtherHelp
- bra LoopHotKeyMsg
-
- NoHotRKey cmp.l #IDCMP_MENUHELP,d6 ; Menu help ?
- bne.s NoHotKeyHelp
- moveq #4,d0
- bsr OnlineHelp
- bra LoopHotKeyMsg
-
- NoHotKeyHelp cmp.l #IDCMP_MENUPICK,d6 ; Menu picked ?
- bne LoopHotKeyMsg
- cmp.w #-1,d5
- beq.s EndHotKeyMenu
- move.w d5,d2
- and.w #$1f,d2 ; Get menunumber
- move.w d5,d1
- asr.w #5,d1
- and.w #$3f,d1 ; Get itemnumber
- move.w d1,d5
- move.l HotKeyMenu,a1
- bsr GetMenuPtr
- GTMENUITEM_USERDATA a2,a0
- cmp.l #0,a0
- beq.s EndHotKeyMenu
- jmp (a0)
- EndHotKeyMenu bra LoopHotKeyMsg
-
- NoHotKeyMsg move.l ThisSig(pc),d0 ; App-Message ?
- and.l AppSigFlag(pc),d0
- beq.s NoAppMsg
-
- .LoopAppMsg move.l AppPort,a0 ; Get message
- CALLSYS GetMsg
- tst.l d0
- beq.s NoAppMsg
- move.l d0,a1
- cmp.w #MTYPE_APPICON,am_Type(a1) ; Did it come from window ?
- bne.s .NoAppIcon
- tst.l am_NumArgs(a1)
- bne.s .ReplyAppMsg
- tst.l am_ArgList(a1)
- bne.s .ReplyAppMsg
- move.l a1,-(sp)
- bsr OpenOurWindow ; Open our window
- move.l (sp)+,a1
- bra.s .ReplyAppMsg
- .NoAppIcon cmp.w #MTYPE_APPMENUITEM,am_Type(a1) ; Was a menu item ?
- bne.s .ReplyAppMsg
- cmp.l #MAINITEM,am_ID(a1) ; The control-window ?
- bne.s .ReplyAppMsg
- move.l a1,-(sp)
- bsr.s OpenOurWindow ; Open it
- move.l (sp)+,a1
- .ReplyAppMsg CALLSYS ReplyMsg
- bra .LoopAppMsg
-
- NoAppMsg move.l ThisSig(pc),d0 ; Display Help for Bill ?
- and.l HelpSigFlag(pc),d0
- beq.s NoHelpMsg
- move.w HelpItem,d5
- moveq #3,d0
- bsr OnlineHelp
- NoHelpMsg bra CheckBroker ; Loop for all stuff
-
- AbortBroker move.b #0,Disabled ; Disable broker
- bsr DisableBroker
- bsr OnMouse
- move.l WndHandle(pc),a0 ; Set control window to busy
- bsr SetBusy
- move.l CheckerProc(pc),a1 ; Tell son to go away
- move.l #SIGHANDSHAKE,d0
- CALLSYS Signal
- move.l #SIGHANDSHAKE,d0 ; Wait for reply
- DOLIB Wait
- move.l #10,d1 ; Wait a bit
- LNKLIB Delay,_DOSBase
- rts
-
-
-
-
- **********************************************************************
- * Open our window. if not already open :-) *
- **********************************************************************
- OpenOurWindow tst.l WndHandle ; Window already open ?
- beq.s .End
- move.l WndHandle(pc),a0
- LNKLIB WindowToFront,_IntuitionBase
- tst.b WBFront
- beq.s .NoWB
- move.l WndHandle(pc),a0
- move.l wd_WScreen(a0),a0
- DOLIB ScreenToFront,_IntuitionBase
- .NoWB rts
- .End link a5,#-4
- bsr LockScreen
- tst.l d0
- beq NoWindow2Open
-
- tst.b WBFront
- beq.s .NoWBFront
- move.l -4(a5),a0
- LNKLIB ScreenToFront,_IntuitionBase
-
- .NoWBFront move.l -4(a5),a0 ; Get visual info for screen
- sub.l a1,a1
- LNKLIB GetVisualInfoA,_GadToolsBase
- tst.l d0
- beq NoWindow2Open
- move.l d0,VisInfo
- lea DummyNewGadget,a0 ; Store visual info in newgadget
- move.l d0,gng_VisualInfo(a0)
-
- lea MyWindowDef(pc),a0 ; Try to open our window
- move.l #WINWIDTH,WinWidth
- move.l #WINHEIGHT,WinHeight
- move.l #WINIDCMP,WinIDCMP
- move.l #WINFLAGS,WinFlags
- move.l #1,DoMenuHelp
- lea WindowTags,a1
- LNKLIB OpenWindowTagList,_IntuitionBase
- move.l d0,WndHandle
- tst.l d0
- beq NoWindow2Open
- move.l d0,a0 ; Get the sig flag for port
- move.l wd_UserPort(a0),a0
- moveq #0,d0
- move.b MP_SIGBIT(a0),d0
- moveq #1,d1
- asl.l d0,d1
- move.l d1,WindowSigFlag
-
- lea MainMenuDef,a0 ; Create menu strip
- sub.l a1,a1 ; No tags
- LNKLIB CreateMenusA,_GadToolsBase
- move.l d0,MainMenu
- tst.l d0
- beq NoWindow2Open
-
- move.l MainMenu(pc),a0 ; Do the layout on window
- move.l VisInfo(pc),a1
- sub.l a2,a2
- DOLIB LayoutMenusA
- tst.l d0
- beq NoWindow2Open
-
- move.l WindowSigFlag(pc),d0 ; Wait until window popped up
- CALLSYS Wait
- .WLoop move.l WndHandle(pc),a0
- move.l wd_UserPort(a0),a0
- DOLIB GetMsg
- tst.l d0
- beq.s .WEnd
- move.l d0,a1
- DOLIB ReplyMsg
- bra.s .WLoop
-
- .WEnd move.l WndHandle(pc),a0
- moveq #0,d7
- move.b wd_BorderTop(a0),d7
-
- lea FirstGadget(pc),a0 ; Create a context gadget
- LNKLIB CreateContext,_GadToolsBase
- tst.l d0
- beq NoWindow2Open
- move.l d0,ThisGadget
-
- move.w #1,GadNum ; Reset Gadget ID
-
- lea GadgetAttrs,a4 ; List of attributes for new gads
- lea ControlGads,a3
- CreateGads move.l (a4)+,d0 ; Get address of gad-text
- beq.s AllGadsDone ; = 0 ? -> No more gads
- lea DummyNewGadget,a1
- move.l d0,gng_GadgetText(a1) ; Store text
- move.w #GADWIDTH,gng_Width(a1) ; Store width
- move.w #GADHEIGHT,gng_Height(a1)
- move.l (a4)+,gng_Flags(a1) ; Store new flags
- move.l (a4)+,d0 ; Get gadget kind
- move.w (a4)+,gng_LeftEdge(a1) ; Store left and top edge
- move.w (a4)+,d6
- add.w d7,d6 ; Remake for height of window border
- move.w d6,gng_TopEdge(a1)
- move.l ThisGadget(pc),a0 ; Get pointer of prev. gad
- lea ButtonTags,a2 ; Get pointer to tags
- DOLIB CreateGadgetA ; Create gadget
- tst.l d0 ; A Ok ? -> Go on
- beq NoWindow2Open
- move.l d0,(a3)+
- move.l d0,ThisGadget ; Store pointer for next gadget
- addq.w #1,GadNum ; increase ID
- bra CreateGads ; Loop for all
-
- AllGadsDone lea AlarmStartVal,a0 ; Create AlarmTime string gadget
- move.l a0,StringConts
- move.l #8,StrMax
- lea DummyNewGadget,a1
- move.l #AlarmGadTxt,gng_GadgetText(a1)
- move.w #STRGADWIDTH,gng_Width(a1)
- move.w #INTERWIDTH+154,gng_LeftEdge(a1)
- move.w #97,d6
- add.w d7,d6
- move.w d6,gng_TopEdge(a1)
- move.l #PLACETEXT_LEFT,gng_Flags(a1)
- move.l #STRING_KIND,d0
- move.l ThisGadget(pc),a0
- lea StringTags,a2
- DOLIB CreateGadgetA
- tst.l d0
- beq NoWindow2Open
- move.l d0,(a3)+
- move.l d0,ThisGadget
- addq.w #1,GadNum
-
- lea SystemParam,a0 ; Create User Shell string gadget
- move.l a0,StringConts
- move.l #64,StrMax
- lea DummyNewGadget,a1
- move.l #ShellGadTxt,gng_GadgetText(a1)
- move.w #STRGADWIDTH,gng_Width(a1)
- move.w #INTERWIDTH+154,gng_LeftEdge(a1)
- move.w #110,d6
- add.w d7,d6
- move.w d6,gng_TopEdge(a1)
- move.l #PLACETEXT_LEFT,gng_Flags(a1)
- move.l #STRING_KIND,d0
- move.l ThisGadget(pc),a0
- lea StringTags,a2
- DOLIB CreateGadgetA
- tst.l d0
- beq NoWindow2Open
- move.l d0,(a3)+
- move.l d0,ThisGadget
- addq.w #1,GadNum
-
- move.l ScreenTime,d0 ; Create screenblank gadget
- move.l d0,IntConts
- move.l #3,IntMax
- lea DummyNewGadget,a1
- move.l #ScrBTxt,gng_GadgetText(a1)
- move.w #INTGADWIDTH,gng_Width(a1)
- move.w #WINWIDTH-37-INTERWIDTH,gng_LeftEdge(a1)
- move.w #97,d6
- add.w d7,d6
- move.w d6,gng_TopEdge(a1)
- move.l #INTEGER_KIND,d0
- move.l ThisGadget(pc),a0
- lea IntegerTags,a2
- DOLIB CreateGadgetA
- tst.l d0
- beq NoWindow2Open
- move.l d0,(a3)+
- move.l d0,ThisGadget
- addq.w #1,GadNum
-
- move.l MouseTime,d0 ; Create mouseblank gadget
- move.l d0,IntConts
- lea DummyNewGadget(pc),a1
- move.l #MouseBTxt,gng_GadgetText(a1)
- move.w #INTGADWIDTH,gng_Width(a1)
- move.w #110,d6
- add.w d7,d6
- move.w d6,gng_TopEdge(a1)
- move.w #WINWIDTH-37-INTERWIDTH,gng_LeftEdge(a1)
- move.l #INTEGER_KIND,d0
- move.l ThisGadget(pc),a0
- lea IntegerTags,a2
- DOLIB CreateGadgetA
- tst.l d0
- beq NoWindow2Open
- move.l d0,(a3)+
- move.l d0,ThisGadget
- addq.w #1,GadNum
-
- move.l ClickVol,d0 ; Create clickvolume
- move.l d0,IntConts
- move.l #2,IntMax
- lea DummyNewGadget(pc),a1
- move.l #ClickVolTxt,gng_GadgetText(a1)
- move.w #INTGADWIDTH,gng_Width(a1)
- move.w #123,d6
- add.w d7,d6
- move.w d6,gng_TopEdge(a1)
- move.w #WINWIDTH-INTERWIDTH-37,gng_LeftEdge(a1)
- move.l #INTEGER_KIND,d0
- move.l ThisGadget(pc),a0
- lea IntegerTags(pc),a2
- DOLIB CreateGadgetA
- tst.l d0
- beq NoWindow2Open
- move.l d0,(a3)+
- move.l d0,ThisGadget
- addq.w #1,GadNum
-
- move.l #PopQualList,CycLabels ; Create front gadget
- move.l PopQualNum(pc),d0 ; Set label to be
- move.l d0,CycActive ; the active one
- lea DummyNewGadget(pc),a1
- move.l #FrontGadTxt,gng_GadgetText(a1)
- move.w #CYCLEWIDTH,gng_Width(a1)
- move.w #84,d6
- add.w d7,d6
- move.w d6,gng_TopEdge(a1)
- move.w #INTERWIDTH+154,gng_LeftEdge(a1)
- move.l #PLACETEXT_LEFT,gng_Flags(a1)
- move.l #CYCLE_KIND,d0
- move.l ThisGadget(pc),a0
- lea CycleTags(pc),a2
- DOLIB CreateGadgetA
- tst.l d0
- beq NoWindow2Open
- move.l d0,(a3)+
- move.l d0,ThisGadget
- addq.w #1,GadNum
-
- lea DummyNewGadget(pc),a1 ; Create bill gadget
- move.l #TeleBillTxt,gng_GadgetText(a1)
- move.w #140,gng_Width(a1)
- move.w #123,d6
- add.w d7,d6
- move.w d6,gng_TopEdge(a1)
- move.w #INTERWIDTH,gng_LeftEdge(a1)
- move.l #PLACETEXT_IN,gng_Flags(a1)
- move.l #BUTTON_KIND,d0
- move.l ThisGadget(pc),a0
- lea ButtonTags(pc),a2
- DOLIB CreateGadgetA
- tst.l d0
- beq NoWindow2Open
- move.l d0,(a3)+
- move.l d0,ThisGadget
- addq.w #1,GadNum
-
- lea DummyNewGadget(pc),a1 ; Create preferences gadget
- move.l #TelePrefsTxt,gng_GadgetText(a1)
- move.w #164,gng_Width(a1)
- move.w #123,d6
- add.w d7,d6
- move.w d6,gng_TopEdge(a1)
- move.w #INTERWIDTH*2+140,gng_LeftEdge(a1)
- move.l #PLACETEXT_IN,gng_Flags(a1)
- move.l #BUTTON_KIND,d0
- move.l ThisGadget(pc),a0
- lea ButtonTags(pc),a2
- DOLIB CreateGadgetA
- tst.l d0
- beq NoWindow2Open
- move.l d0,(a3)+
- move.l d0,ThisGadget
- addq.w #1,GadNum
-
- move.l #ESCQualList,CycLabels ; Create ESC-Qualifier gadget
- move.l ESCQualNum(pc),d0 ; Set label to be
- move.l d0,CycActive ; the active one
- lea DummyNewGadget(pc),a1
- move.l #ESCGadTxt,gng_GadgetText(a1)
- move.w #CYCLEWIDTH,gng_Width(a1)
- move.w #84,d6
- add.w d7,d6
- move.w d6,gng_TopEdge(a1)
- move.w #WINWIDTH-CYCLEWIDTH,gng_LeftEdge(a1)
- move.l #PLACETEXT_LEFT,gng_Flags(a1)
- move.l #CYCLE_KIND,d0
- move.l ThisGadget(pc),a0
- lea CycleTags(pc),a2
- DOLIB CreateGadgetA
- tst.l d0
- beq NoWindow2Open
- move.l d0,(a3)+
- move.l d0,ThisGadget
- addq.w #1,GadNum
-
- lea DummyNewGadget(pc),a1 ; Create HotKeys gadget
- move.l #HotKeyGadTxt,gng_GadgetText(a1)
- move.w #120,gng_Width(a1)
- move.w #123,d6
- add.w d7,d6
- move.w d6,gng_TopEdge(a1)
- move.w #INTERWIDTH*3+140+164,gng_LeftEdge(a1)
- move.l #PLACETEXT_IN,gng_Flags(a1)
- move.l #BUTTON_KIND,d0
- move.l ThisGadget(pc),a0
- lea ButtonTags(pc),a2
- DOLIB CreateGadgetA
- tst.l d0
- beq.s NoWindow2Open
- move.l d0,(a3)+
- move.l d0,ThisGadget
- addq.w #1,GadNum
-
- move.l WndHandle(pc),a0 ; Add gadgets to window
- move.l FirstGadget(pc),a1
- move.l #-1,d0
- move.l #-1,d1
- sub.l a2,a2
- LNKLIB AddGList,_IntuitionBase
-
- move.l FirstGadget(pc),a0 ; Make them appear
- move.l WndHandle(pc),a1
- sub.l a2,a2
- move.l #-1,d0
- DOLIB RefreshGList
-
- move.l WndHandle(pc),a0 ; Append menu to window
- move.l MainMenu(pc),a1
- LNKLIB SetMenuStrip,_IntuitionBase
-
- bsr RemakeGadgets
- bsr UnlockScreen
- moveq #0,d0
- unlk a5
- rts
- NoWindow2Open bsr.s CloseOurWindow
- bsr UnlockScreen
- move.l #12,ErrorNum
- bsr DisplayError
- moveq #-1,d0
- unlk a5
- rts
-
-
-
-
-
- **********************************************************************
- * This part closes our window *
- **********************************************************************
- CloseOurWindow tst.l WndHandle
- beq.s NoWindow2Close
- move.l WndHandle(pc),a0 ; Store new coords in structure
- lea MyWindowDef(pc),a1 ; So that window appears at same
- bsr StoreWinPos
-
- move.l WndHandle(pc),a0 ; Remove remaining msgs
- LNKLIB CloseWindow,_IntuitionBase ; Close Window
-
- NoWindow2Close tst.l FirstGadget
- beq.s GotNoGadgets
- move.l FirstGadget(pc),a0 ; Free GadTools-Gadgets
- LNKLIB FreeGadgets,_GadToolsBase
-
- GotNoGadgets tst.l MainMenu ; Free GadTools-Menus
- beq.s .NoMenu
- move.l MainMenu(pc),a0
- LNKLIB FreeMenus,_GadToolsBase
-
- .NoMenu tst.l VisInfo ; Free Visual-Info
- beq.s NoVisInfo
- move.l VisInfo(pc),a0
- LNKLIB FreeVisualInfo,_GadToolsBase
-
- NoVisInfo move.l #0,WndHandle ; Clear flags for later
- move.l #0,WindowSigFlag ; identification
- move.l #0,FirstGadget
- move.l #0,MainMenu
- move.l #0,VisInfo
- rts
-
-
-
-
- **********************************************************************
- * Open clock window. Width in D6 *
- **********************************************************************
- OpenClockWin add.w #DEPTHWIDTH*2+8,d6 ; approximate width of close/depth gadgets
- move.w d6,ClockWidth ; Store for compare
-
- tst.l ClockHandle ; Window already open ?
- bne ClockWinOpen
-
- bsr ClearTitleBar ; Clear titlebar first
-
- link a5,#-4
- bsr LockScreen
- tst.l d0
- beq ClockError
-
- lea ClockWinDef(pc),a0 ; Set width to time width
- move.w ClockWidth(pc),nw_Width(a0)
- move.l MyFont(pc),a1
- move.w tf_YSize(a1),d1
- addq.w #3,d1
- move.w d1,nw_Height(a0)
- move.l -4(a5),a1
- bsr AdjustWinPos
- move.l #CLOCKWIDTH,WinWidth
- move.l #CLOCKHEIGHT,WinHeight
- move.l #CLOCKIDCMP,WinIDCMP
- move.l #CLOCKFLAGS,WinFlags
- move.l #0,DoMenuHelp
- lea WindowTags(pc),a1
- LNKLIB OpenWindowTagList,_IntuitionBase
- move.l d0,ClockHandle
- tst.l d0
- bne.s GotClockWin
- move.b #0,ClockWin ; On failure close
- moveq #0,d0 ; disable clockwin mode
- move.l #WINDOWGAD,d1
- bsr SetControlBox
- bra.s ClockError
- GotClockWin move.l ClockHandle(pc),a0 ; Get sig flag
- moveq #0,d0
- move.l wd_UserPort(a0),a0
- move.b MP_SIGBIT(a0),d0
- moveq #1,d1
- asl.l d0,d1
- move.l d1,ClockSigFlag
- bsr UnlockScreen
- unlk a5
- ClockWinOpen move.l ClockHandle(pc),a0 ; Current width not equal
- moveq #0,d0 ; to width needed
- moveq #0,d1
- moveq #0,d2
- moveq #0,d3
- move.w wd_LeftEdge(a0),d0
- move.w wd_TopEdge(a0),d1
- move.w ClockWidth(pc),d2
- cmp.w wd_Width(a0),d2
- beq.s CWidthOk
- moveq #0,d3
- move.b wd_BorderTop(a0),d3
- LNKLIB ChangeWindowBox,_IntuitionBase ; so readjust width
- bsr ClockRemake ; Wait until window has been remade
- CWidthOk moveq #1,d0
- rts
- ClockError bsr UnlockScreen
- moveq #0,d0
- unlk a5
- rts
-
-
-
- **********************************************************************
- * Close clockwindow and remove pointer *
- **********************************************************************
- CloseClockWin tst.l ClockHandle
- beq.s NoCWOpen
- move.l ClockHandle(pc),a0 ; Store new coords in structure
- lea ClockWinDef(pc),a1 ; so that window appears at
- bsr StoreWinPos
- LNKLIB CloseWindow,_IntuitionBase ; and now....CLOSE IT
- NoCWOpen move.l #0,ClockHandle
- move.l #0,ClockSigFlag
- rts
-
-
-
-
- **********************************************************************
- * Open the bill window *
- **********************************************************************
- OpenBillWin tst.l BillHandle
- beq.s .End
- move.l BillHandle,a0
- LNKLIB WindowToFront,_IntuitionBase
- rts
- .End link a5,#-4
- bsr LockScreen
- tst.l d0
- beq .BillWinError
-
- move.l -4(a5),a0 ; Get Visual Info
- sub.l a1,a1
- LNKLIB GetVisualInfoA,_GadToolsBase
- move.l d0,BillVisInfo
- tst.l d0
- beq .BillWinError
- lea DummyNewGadget(pc),a0
- move.l d0,gng_VisualInfo(a0)
- move.l d0,BevelVisInfo
-
- move.l #BILLWINWIDTH,WinWidth ; Open the window
- move.l #BILLWINHEIGHT,WinHeight
- move.l #BILLWINIDCMP,WinIDCMP
- move.l #BILLWINFLAGS,WinFlags
- move.l #1,DoMenuHelp
-
- lea BillMenuDef,a0 ; Create menu strip
- sub.l a1,a1 ; No tags
- LNKLIB CreateMenusA,_GadToolsBase
- move.l d0,BillMenu
- tst.l d0
- beq .BillWinError
-
- move.l BillMenu(pc),a0 ; Do the layout on window
- move.l BillVisInfo(pc),a1
- sub.l a2,a2
- DOLIB LayoutMenusA
- tst.l d0
- beq .BillWinError
-
- lea BillWinDef(pc),a0
- move.l -4(a5),a1
- bsr AdjustWinPos
- lea WindowTags(pc),a1
- LNKLIB OpenWindowTagList,_IntuitionBase
- move.l d0,BillHandle
- tst.l d0
- beq .BillWinError
- move.l BillHandle(pc),a0
- move.l wd_UserPort(a0),a0
- moveq #0,d0
- moveq #1,d1
- move.b MP_SIGBIT(a0),d0 ; Get Sig flag
- asl.l d0,d1
- move.l d1,BillSigFlag
-
- move.l BillHandle(pc),a0
- moveq #0,d7
- move.b wd_BorderTop(a0),d7
- move.l wd_RPort(a0),BillRPort
-
- move.l BillRPort(pc),a0 ; Print ITexts
- lea BillITxts,a1
- moveq #0,d0
- move.l d7,d1
- LNKLIB PrintIText,_IntuitionBase
-
- move.l BillRPort(pc),a0 ; Draw bevel boxes
- move.l #INTERWIDTH,d0
- move.l #BEVELHEIGHT,d1
- add.l d7,d1
- move.l #BEVELWIDTH,d2
- move.l #BEVELHEIGHT,d3
- lea BevelTag(pc),a1
- LNKLIB DrawBevelBoxA,_GadToolsBase
-
- move.l BillRPort(pc),a0
- move.l #INTERWIDTH+BEVELWIDTH+INTERWIDTH,d0
- move.l #BEVELHEIGHT,d1
- add.l d7,d1
- move.l #BEVELWIDTH,d2
- move.l #BEVELHEIGHT,d3
- lea BevelTag(pc),a1
- DOLIB DrawBevelBoxA
-
- move.l BillRPort(pc),a0
- move.l #INTERWIDTH+((BEVELWIDTH+INTERWIDTH)*2),d0
- move.l #BEVELHEIGHT,d1
- add.l d7,d1
- move.l #BEVELWIDTH,d2
- move.l #BEVELHEIGHT,d3
- lea BevelTag(pc),a1
- DOLIB DrawBevelBoxA
-
- move.l BillRPort(pc),a0
- move.l #INTERWIDTH,d0
- move.l #BEVELHEIGHT*4+10,d1
- add.l d7,d1
- move.l #(BEVELWIDTH*3)+(INTERWIDTH*2),d2
- move.l #BEVELHEIGHT,d3
- lea BevelTag(pc),a1
- DOLIB DrawBevelBoxA
-
- lea BillGadget(pc),a0 ; Create Context gadget
- DOLIB CreateContext
- move.l d0,ThisGadget
- tst.l d0
- beq .BillWinError
-
- move.w #1,GadNum
-
- lea DummyNewGadget(pc),a1 ; Creat Time MX gadgets
- lea BillGads,a4
- move.l #TimeZoneLabels,MxLabels
- move.l TimeZone,MxActive
- move.w #BEVELHEIGHT*2+2,d0
- add.w d7,d0
- move.w d0,gng_TopEdge(a1)
- move.w #INTERWIDTH,gng_LeftEdge(a1)
- move.w #17,gng_Width(a1)
- move.w #9,gng_Height(a1)
- move.l #PLACETEXT_RIGHT,gng_Flags(a1)
- move.l #MX_KIND,d0
- move.l ThisGadget(pc),a0
- lea MxTags(pc),a2
- DOLIB CreateGadgetA
- tst.l d0
- beq .BillWinError
- move.l d0,(a4)+
- move.l d0,ThisGadget
- addq.w #1,GadNum
-
- lea DummyNewGadget(pc),a1 ; Create CHEAP MX gadgets
- move.l #CheapLabels,MxLabels
- moveq #0,d0
- move.b CheapMode(pc),d0
- move.l d0,MxActive
- move.w #BEVELHEIGHT*2+2,d0
- add.w d7,d0
- move.w d0,gng_TopEdge(a1)
- move.w #INTERWIDTH+(INTERWIDTH+BEVELWIDTH)*2,gng_LeftEdge(a1)
- move.w #17,gng_Width(a1)
- move.w #9,gng_Height(a1)
- move.l #PLACETEXT_RIGHT,gng_Flags(a1)
- move.l #MX_KIND,d0
- move.l ThisGadget(pc),a0
- lea MxTags(pc),a2
- DOLIB CreateGadgetA
- tst.l d0
- beq.s .BillWinError
- move.l d0,(a4)+
- move.l d0,ThisGadget
- addq.w #1,GadNum
-
- move.l BillHandle(pc),a0 ; Add gadgets to window
- move.l BillGadget(pc),a1
- sub.l a2,a2
- moveq #-1,d0
- moveq #-1,d1
- LNKLIB AddGList,_IntuitionBase
-
- move.l BillGadget(pc),a0 ; Make `em appear
- move.l BillHandle(pc),a1
- sub.l a2,a2
- moveq #-1,d0
- DOLIB RefreshGList
-
- move.l BillHandle(pc),a0 ; Append menu to window
- move.l BillMenu(pc),a1
- LNKLIB SetMenuStrip,_IntuitionBase
-
- bra.s .NoBillClose
-
- .BillWinError bsr.s CloseBillWin
- .NoBillClose bsr UnlockScreen
- unlk a5
- rts
-
-
-
- **********************************************************************
- * Close the Bill window again *
- **********************************************************************
- CloseBillWin tst.l BillHandle ; Close window
- beq.s .NoWin
- move.l BillHandle(pc),a0 ; Store new coords of window
- lea BillWinDef,a1
- bsr StoreWinPos
- LNKLIB CloseWindow,_IntuitionBase
- .NoWin tst.l BillGadget ; Free gadgets
- beq.s .NoGads
- move.l BillGadget(pc),a0
- LNKLIB FreeGadgets,_GadToolsBase
- .NoGads tst.l BillMenu ; Free GadTools-Menus
- beq.s .NoMenu
- move.l BillMenu(pc),a0
- LNKLIB FreeMenus,_GadToolsBase
- .NoMenu tst.l BillVisInfo ; Free visual info
- beq.s .NoVisInfo
- move.l BillVisInfo(pc),a0
- LNKLIB FreeVisualInfo,_GadToolsBase
- .NoVisInfo move.l #0,BillHandle ; Reset stuff
- move.l #0,BillSigFlag
- move.l #0,BillGadget
- move.l #0,BillVisInfo
- move.l #0,BillMenu
- rts
-
-
-
-
- **********************************************************************
- * Open the preferences window *
- **********************************************************************
- OpenPrefsWin tst.l PrefsHandle
- beq.s .GoOn
- move.l PrefsHandle,a0
- LNKLIB WindowToFront,_IntuitionBase
- rts
- .GoOn link a5,#-4
- bsr LockScreen
- tst.l d0
- beq .PrefsWinError
-
- move.l -4(a5),a0 ; Get visual info
- sub.l a1,a1
- LNKLIB GetVisualInfoA,_GadToolsBase
- tst.l d0
- beq .PrefsWinError
- move.l d0,PrefsVisInfo
- lea DummyNewGadget(pc),a0
- move.l d0,gng_VisualInfo(a0)
-
- move.l #PREFSWINWIDTH,WinWidth ; Try to open the window
- move.l #PREFSWINHEIGHT,WinHeight
- move.l #PREFSWINIDCMP,WinIDCMP
- move.l #PREFSWINFLAGS,WinFlags
- move.l #1,DoMenuHelp
-
- lea PrefsWinDef(pc),a0
- move.l -4(a5),a1
- bsr AdjustWinPos
- lea WindowTags(pc),a1
- LNKLIB OpenWindowTagList,_IntuitionBase
- move.l d0,PrefsHandle
- tst.l d0
- beq .PrefsWinError
- move.l PrefsHandle(pc),a0
- moveq #0,d0
- moveq #1,d1
- move.l wd_UserPort(a0),a0
- move.b MP_SIGBIT(a0),d0 ; Get the sigmask
- asl.l d0,d1
- move.l d1,PrefsSigFlag
-
- lea PrefsMenuDef,a0 ; Create menu strip
- sub.l a1,a1 ; No tags
- LNKLIB CreateMenusA,_GadToolsBase
- move.l d0,PrefsMenu
- tst.l d0
- beq .PrefsWinError
-
- move.l PrefsMenu(pc),a0 ; Do the layout on window
- move.l PrefsVisInfo(pc),a1
- sub.l a2,a2
- DOLIB LayoutMenusA
- tst.l d0
- beq .PrefsWinError
-
- lea PrefsGadget(pc),a0
- LNKLIB CreateContext,_GadToolsBase
- move.l d0,ThisGadget
- tst.l d0
- beq .PrefsWinError
-
- move.l PrefsHandle(pc),a0
- moveq #0,d7
- move.b wd_BorderTop(a0),d7
-
- move.w #1,GadNum
-
- lea CostUnit1,a4 ; Loop for all integer gads
- lea PrefsGadTxts,a3
- move.l d7,d5
- addq.l #2,d5
- move.l #2,d6
- moveq #0,d4
- .GadLoop lea DummyNewGadget(pc),a1 ; Create normal gad
- move.l cu_Normal(a4),IntConts
- move.l #4,IntMax
- move.w #PREFINTGADWIDTH,gng_Width(a1)
- move.w #GADHEIGHT,gng_Height(a1)
- move.w #160,gng_LeftEdge(a1)
- move.w d5,gng_TopEdge(a1)
- move.l (a3)+,gng_GadgetText(a1)
- move.l #PLACETEXT_LEFT,gng_Flags(a1)
- move.l #INTEGER_KIND,d0
- move.l ThisGadget(pc),a0
- lea IntegerTags(pc),a2
- DOLIB CreateGadgetA
- tst.l d0
- beq .PrefsWinError
- move.l d0,ThisGadget
- lea PrefsGads,a0
- move.l d0,0(a0,d4)
- addq.l #4,d4
- addq.w #1,GadNum
-
- lea DummyNewGadget(pc),a1 ; Create cheap gad
- move.l cu_Cheap(a4),IntConts
- move.w #368,gng_LeftEdge(a1)
- move.l (a3)+,gng_GadgetText(a1)
- move.l #INTEGER_KIND,d0
- move.l ThisGadget(pc),a0
- lea IntegerTags(pc),a2
- DOLIB CreateGadgetA
- tst.l d0
- beq .PrefsWinError
- move.l d0,ThisGadget
- lea PrefsGads,a0
- move.l d0,0(a0,d4)
- addq.l #4,d4
- addq.w #1,GadNum
- addq.l #8,a4
- add.l #GADHEIGHT+INTERHEIGHT,d5
- dbf d6,.GadLoop
-
- move.l CostUnit,d0 ; Create cost/unit gad
- move.l d0,IntConts
- lea DummyNewGadget(pc),a1
- move.w d5,gng_TopEdge(a1)
- move.w #200,gng_LeftEdge(a1)
- move.l (a3)+,gng_GadgetText(a1)
- move.l #INTEGER_KIND,d0
- move.l ThisGadget(pc),a0
- lea IntegerTags(pc),a2
- DOLIB CreateGadgetA
- tst.l d0
- beq .PrefsWinError
- lea PrefsGads,a0
- move.l d0,0(a0,d4)
- addq.l #4,d4
- move.l d0,ThisGadget
- addq.w #1,GadNum
- add.l #GADHEIGHT+INTERHEIGHT,d5
-
- lea DummyNewGadget(pc),a1 ; Creat Time MX gadgets
- move.l #PrefsTimeLabels,MxLabels
- move.l PTimeZone,MxActive
- move.w #GADWIDTH,gng_Width(a1)
- move.w d5,gng_TopEdge(a1)
- move.w #INTERWIDTH,gng_LeftEdge(a1)
- move.w #17,gng_Width(a1)
- move.w #9,gng_Height(a1)
- move.l #PLACETEXT_RIGHT,gng_Flags(a1)
- move.l #MX_KIND,d0
- move.l ThisGadget(pc),a0
- lea MxTags(pc),a2
- DOLIB CreateGadgetA
- tst.l d0
- beq .PrefsWinError
- lea PrefsGads,a0
- move.l d0,0(a0,d4)
- addq.l #4,d4
- move.l d0,ThisGadget
- addq.w #1,GadNum
-
- lea DummyNewGadget(pc),a1 ; Create CHEAP MX gadgets
- move.l #PrefsModeLabels,MxLabels
- moveq #0,d0
- move.l PTariff,d0
- move.l d0,MxActive
- move.w #PREFSWINWIDTH-18,gng_LeftEdge(a1)
- move.w #17,gng_Width(a1)
- move.w #9,gng_Height(a1)
- move.l #PLACETEXT_LEFT,gng_Flags(a1)
- move.l #MX_KIND,d0
- move.l ThisGadget(pc),a0
- lea MxTags(pc),a2
- DOLIB CreateGadgetA
- tst.l d0
- beq .PrefsWinError
- lea PrefsGads,a0
- move.l d0,0(a0,d4)
- addq.l #4,d4
- move.l d0,ThisGadget
- addq.w #1,GadNum
- add.l #INTERHEIGHT*2+(10*3),d5
-
- lea DummyNewGadget(pc),a1 ; Create PopBill-Win gadget
- move.w #GADWIDTH,gng_Width(a1)
- move.w #GADHEIGHT,gng_Height(a1)
- move.w #INTERWIDTH,gng_LeftEdge(a1)
- move.w d5,gng_TopEdge(a1)
- move.l (a3)+,gng_GadgetText(a1)
- move.l #PLACETEXT_RIGHT,gng_Flags(a1)
- moveq #0,d0 ; Set state of gadget
- move.b BillPopUp(pc),d0
- move.l d0,SelectMode
- move.l #CHECKBOX_KIND,d0
- move.l ThisGadget(pc),a0
- lea CheckBoxTags(pc),a2
- DOLIB CreateGadgetA
- tst.l d0
- beq .PrefsWinError
- lea PrefsGads,a0
- move.l d0,0(a0,d4)
- addq.l #4,d4
- move.l d0,ThisGadget
- addq.w #1,GadNum
-
- lea DummyNewGadget(pc),a1 ; Create LogCalls gadget
- move.w #INTERWIDTH+190,gng_LeftEdge(a1)
- move.l (a3)+,gng_GadgetText(a1)
- moveq #0,d0 ; Set mode of gadget
- move.b LogCalls(pc),d0
- move.l d0,SelectMode
- move.l #CHECKBOX_KIND,d0
- move.l ThisGadget(pc),a0
- lea CheckBoxTags(pc),a2
- DOLIB CreateGadgetA
- tst.l d0
- beq .PrefsWinError
- lea PrefsGads,a0
- move.l d0,0(a0,d4)
- addq.l #4,d4
- move.l d0,ThisGadget
- addq.w #1,GadNum
-
- lea DummyNewGadget(pc),a1 ; Create Clear Log gadget
- move.w #PREFSWINWIDTH-GADWIDTH-1,gng_LeftEdge(a1)
- move.l (a3)+,gng_GadgetText(a1)
- move.l #PLACETEXT_IN,gng_Flags(a1)
- move.l #BUTTON_KIND,d0
- move.l ThisGadget(pc),a0
- lea ButtonTags(pc),a2
- DOLIB CreateGadgetA
- tst.l d0
- beq .PrefsWinError
- lea PrefsGads,a0
- move.l d0,0(a0,d4)
- addq.l #4,d4
- move.l d0,ThisGadget
- addq.w #1,GadNum
- add.l #GADHEIGHT+INTERHEIGHT,d5
-
- lea DummyNewGadget(pc),a1 ; Create save to gad
- move.w d5,gng_TopEdge(a1)
- move.w #GADWIDTH+32,gng_Width(a1)
- move.w #INTERWIDTH,gng_LeftEdge(a1)
- move.l (a3)+,gng_GadgetText(a1)
- move.l #PLACETEXT_IN,gng_Flags(a1)
- move.l #BUTTON_KIND,d0
- move.l ThisGadget(pc),a0
- lea ButtonTags(pc),a2
- DOLIB CreateGadgetA
- tst.l d0
- beq .PrefsWinError
- lea PrefsGads,a0
- move.l d0,0(a0,d4)
- addq.l #4,d4
- move.l d0,ThisGadget
- addq.w #1,GadNum
-
- move.l #LogFileName,StringConts ; Create string gad
- move.l #286,StrMax
- lea DummyNewGadget(pc),a1
- move.w #164,gng_Width(a1)
- move.w #GADWIDTH+32+INTERWIDTH*2,gng_LeftEdge(a1)
- move.l #0,gng_GadgetText(a1)
- move.l #0,gng_Flags(a1)
- move.l #STRING_KIND,d0
- move.l ThisGadget(pc),a0
- lea StringTags(pc),a2
- DOLIB CreateGadgetA
- tst.l d0
- beq .PrefsWinError
- lea PrefsGads,a0
- move.l d0,0(a0,d4)
- addq.l #4,d4
- move.l d0,ThisGadget
- addq.w #1,GadNum
-
- lea DummyNewGadget(pc),a1 ; Create total sum gad
- move.w #GADWIDTH+24,gng_Width(a1)
- move.w #GADWIDTH+INTERWIDTH*3+194,gng_LeftEdge(a1)
- move.l (a3)+,gng_GadgetText(a1)
- move.l #PLACETEXT_IN,gng_Flags(a1)
- move.l #BUTTON_KIND,d0
- move.l ThisGadget(pc),a0
- lea ButtonTags(pc),a2
- DOLIB CreateGadgetA
- tst.l d0
- beq .PrefsWinError
- lea PrefsGads,a0
- move.l d0,0(a0,d4)
- addq.l #4,d4
- move.l d0,ThisGadget
- addq.w #1,GadNum
- add.l #GADHEIGHT+INTERHEIGHT,d5
-
- move.l PrefsHandle(pc),a0 ; Add gadgets to window
- move.l PrefsGadget(pc),a1
- sub.l a2,a2
- moveq #-1,d0
- moveq #-1,d1
- LNKLIB AddGList,_IntuitionBase
-
- move.l PrefsGadget(pc),a0 ; Display them
- move.l PrefsHandle(pc),a1
- sub.l a2,a2
- moveq #-1,d0
- DOLIB RefreshGList
-
- move.l PrefsHandle(pc),a0 ; Append menu to window
- move.l PrefsMenu(pc),a1
- LNKLIB SetMenuStrip,_IntuitionBase
-
- moveq #0,d0
- move.b BillPopUp,d0
- moveq #0,d1
- moveq #1,d2
- move.l PrefsHandle,a0
- move.l PrefsMenu,a1
- bsr SetToggleMenu
-
- moveq #0,d0
- move.b LogCalls,d0
- moveq #1,d1
- moveq #1,d2
- move.l PrefsHandle,a0
- move.l PrefsMenu,a1
- bsr SetToggleMenu
-
- bra.s .End
-
- .PrefsWinError bsr.s ClosePrefsWin
- .End bsr UnlockScreen
- unlk a5
- rts
-
-
-
- **********************************************************************
- * Close the preferences window *
- **********************************************************************
- ClosePrefsWin tst.l PrefsHandle ; Close window if there
- beq.s .NoWindow
- move.l PrefsHandle(pc),a0 ; Store new coords
- lea PrefsWinDef(pc),a1
- bsr StoreWinPos
- LNKLIB CloseWindow,_IntuitionBase
- .NoWindow tst.l PrefsGadget ; Remove gadgets, if there
- beq.s .NoGadgets
- move.l PrefsGadget(pc),a0
- LNKLIB FreeGadgets,_GadToolsBase
- .NoGadgets tst.l PrefsMenu ; Free GadTools-Menus
- beq.s .NoMenu
- move.l PrefsMenu(pc),a0
- LNKLIB FreeMenus,_GadToolsBase
- .NoMenu tst.l PrefsVisInfo ; And free visual info
- beq.s .NoVisInfo
- move.l PrefsVisInfo(pc),a0
- LNKLIB FreeVisualInfo,_GadToolsBase
- .NoVisInfo move.l #0,PrefsHandle
- move.l #0,PrefsSigFlag
- move.l #0,PrefsGadget
- move.l #0,PrefsVisInfo
- move.l #0,PrefsMenu
- rts
-
-
-
-
- **********************************************************************
- * Open up the HotKeys window *
- **********************************************************************
- OpenHotKeyWin tst.l HotKeyHandle
- beq.s .GoOn
- move.l HotKeyHandle,a0
- LNKLIB WindowToFront,_IntuitionBase
- rts
- .GoOn link a5,#-4
- bsr LockScreen
- tst.l d0
- beq .KeyWinError
-
- move.l -4(a5),a0 ; Get visual info
- sub.l a1,a1
- LNKLIB GetVisualInfoA,_GadToolsBase
- tst.l d0
- beq .KeyWinError
- move.l d0,HotKeyVisInfo
- lea DummyNewGadget(pc),a0
- move.l d0,gng_VisualInfo(a0)
-
- move.l #KEYWINWIDTH,WinWidth ; Try to open the window
- move.l #KEYWINHEIGHT,WinHeight
- move.l #KEYWINIDCMP,WinIDCMP
- move.l #KEYWINFLAGS,WinFlags
- move.l #1,DoMenuHelp
-
- lea HotKeyWinDef(pc),a0
- move.l -4(a5),a1
- bsr AdjustWinPos
- lea WindowTags(pc),a1
- LNKLIB OpenWindowTagList,_IntuitionBase
- move.l d0,HotKeyHandle
- tst.l d0
- beq .KeyWinError
- move.l HotKeyHandle(pc),a0
- moveq #0,d0
- moveq #1,d1
- move.l wd_UserPort(a0),a0
- move.b MP_SIGBIT(a0),d0 ; Get the sigmask
- asl.l d0,d1
- move.l d1,HotKeySigFlag
-
- lea HotKeyMenuDef,a0 ; Create menu strip
- sub.l a1,a1 ; No tags
- LNKLIB CreateMenusA,_GadToolsBase
- move.l d0,HotKeyMenu
- tst.l d0
- beq .KeyWinError
-
- move.l HotKeyMenu(pc),a0 ; Do the layout on window
- move.l HotKeyVisInfo(pc),a1
- sub.l a2,a2
- DOLIB LayoutMenusA
- tst.l d0
- beq .KeyWinError
-
- lea HotKeyGadget(pc),a0
- LNKLIB CreateContext,_GadToolsBase
- move.l d0,ThisGadget
- tst.l d0
- beq .KeyWinError
-
- move.l HotKeyHandle(pc),a0
- moveq #0,d7
- move.b wd_BorderTop(a0),d7
-
- move.w #1,GadNum
- add.w #INTERHEIGHT,d7
- lea HotKeyGads,a4
- lea HotKeyGadStat,a3
- moveq #0,d5
- move.l #6,d6
- .DoHotKeyGads move.l (a3)+,StringConts
- move.l #80,StrMax
- lea DummyNewGadget(pc),a1
- lea HotKeyGadTxts,a0
- move.l 0(a0,d5),gng_GadgetText(a1)
- move.w #STRGADWIDTH,gng_Width(a1)
- move.w #GADHEIGHT,gng_Height(a1)
- move.w #KEYWINWIDTH-INTERWIDTH-STRGADWIDTH,gng_LeftEdge(a1)
- move.w d7,gng_TopEdge(a1)
- move.l #PLACETEXT_LEFT,gng_Flags(a1)
- move.l #STRING_KIND,d0
- move.l ThisGadget(pc),a0
- lea StringTags(pc),a2
- DOLIB CreateGadgetA
- tst.l d0
- beq.s .KeyWinError
- move.l d0,(a4)+
- move.l d0,ThisGadget
- addq.w #1,GadNum
- add.w #13,d7
- addq.l #4,d5
- dbf d6,.DoHotKeyGads
-
- move.l HotKeyHandle(pc),a0 ; Add gadgets to window
- move.l HotKeyGadget(pc),a1
- sub.l a2,a2
- moveq #-1,d0
- moveq #-1,d1
- LNKLIB AddGList,_IntuitionBase
-
- move.l HotKeyGadget(pc),a0 ; Display them
- move.l HotKeyHandle(pc),a1
- sub.l a2,a2
- moveq #-1,d0
- DOLIB RefreshGList
-
- move.l HotKeyHandle(pc),a0 ; Append menu to window
- move.l HotKeyMenu(pc),a1
- LNKLIB SetMenuStrip,_IntuitionBase
-
- bra.s .End
- .KeyWinError bsr.s CloseHotKeyWin
- .End bsr UnlockScreen
- unlk a5
- rts
-
-
-
- **********************************************************************
- * Close HotKey-Window again *
- **********************************************************************
- CloseHotKeyWin tst.l HotKeyHandle ; Close window if there
- beq.s .NoWindow
- move.l HotKeyHandle(pc),a0 ; Store new coords
- lea HotKeyWinDef(pc),a1
- bsr StoreWinPos
- LNKLIB CloseWindow,_IntuitionBase
- .NoWindow tst.l HotKeyGadget ; Remove gadgets, if there
- beq.s .NoGadgets
- move.l HotKeyGadget(pc),a0
- LNKLIB FreeGadgets,_GadToolsBase
- .NoGadgets tst.l HotKeyMenu ; Free GadTools-Menus
- beq.s .NoMenu
- move.l HotKeyMenu(pc),a0
- LNKLIB FreeMenus,_GadToolsBase
- .NoMenu tst.l HotKeyVisInfo ; And free visual info
- beq.s .NoVisInfo
- move.l HotKeyVisInfo(pc),a0
- LNKLIB FreeVisualInfo,_GadToolsBase
- .NoVisInfo move.l #0,HotKeyHandle
- move.l #0,HotKeySigFlag
- move.l #0,HotKeyGadget
- move.l #0,HotKeyVisInfo
- move.l #0,HotKeyMenu
- rts
-
-
-
-
- **********************************************************************
- * Close the message window again *
- **********************************************************************
- CloseLogWin tst.l LogHandle ; Close window again
- beq.s .NoWin
- move.l LogHandle(pc),a0
- LNKLIB CloseWindow,_IntuitionBase
- .NoWin tst.l LogGadget
- beq.s .NoGads
- move.l LogGadget(pc),a0
- LNKLIB FreeGadgets,_GadToolsBase
- .NoGads tst.l LogMenu ; Free GadTools-Menus
- beq.s .NoMenu
- move.l LogMenu(pc),a0
- LNKLIB FreeMenus,_GadToolsBase
- .NoMenu tst.l LogVisInfo
- beq.s .NoVisInfo
- move.l LogVisInfo(pc),a0
- LNKLIB FreeVisualInfo,_GadToolsBase
- .NoVisInfo move.l #0,LogHandle
- move.l #0,LogGadget
- move.l #0,LogVisInfo
- move.l #0,LogMenu
- rts
-
-
- **********************************************************************
- * Wait until remakes on clockwindow are made *
- **********************************************************************
- ClockRemake move.l ClockHandle(pc),a0 ; Wait until window popped up
- move.l wd_UserPort(a0),a0
- CALLSYS WaitPort
- .Loop move.l ClockHandle(pc),a0
- move.l wd_UserPort(a0),a0
- DOLIB GetMsg
- tst.l d0
- beq.s .End
- move.l d0,a1
- DOLIB ReplyMsg
- bra.s .Loop
- .End rts
-
-
- **********************************************************************
- * This is the routine to handle RAW-Mouse actions *
- **********************************************************************
- RawEventAction CARGS CxMsg.l,CxObj.l
- move.l CxMsg(sp),a0
- movem.l d0-d7/a1-a6,-(sp)
- LNKLIB CxMsgData,_CxBase
- tst.l d0 ; Got an event ?
- beq NoEvent
- move.l d0,a0
- move.l a0,IEvent ; Store event address
-
- EventLoop move.l IEvent(pc),a0
- moveq #0,d0
- move.b ie_Class(a0),d0
- move.w d0,IEClass ; Store class
-
- tst.b LeftyMouse ; We have to swap Buttonqualifiers
- beq.s .NoLeftyAll ; for every message if needed
- move.w ie_Qualifier(a0),d0
- move.w d0,d1
- btst #IEQUALIFIERB_RBUTTON,d1 ; Pressed right button ?
- beq.s .NoRight
- bset #IEQUALIFIERB_LEFTBUTTON,d0 ; Set left button press
- beq.s .CheckLeft
- .NoRight bclr #IEQUALIFIERB_LEFTBUTTON,d0
- .CheckLeft btst #IEQUALIFIERB_LEFTBUTTON,d1 ; Pressed left button ?
- beq.s .NoLeft
- bset #IEQUALIFIERB_RBUTTON,d0 ; Set right button
- beq.s .SaveButton
- .NoLeft bclr #IEQUALIFIERB_RBUTTON,d0
- .SaveButton move.w d0,ie_Qualifier(a0)
-
- .NoLeftyAll cmp.w #IECLASS_RAWMOUSE,IEClass ; Mouse moved ???
- bne NoRawMouse
-
- tst.b LeftyMouse ; Swap buttoncodes for rawmouse
- beq.s .NoLeftyMouse
- move.l IEvent(pc),a0
- move.w ie_Code(a0),d0
- move.w d0,d1
- and.w #$7f,d0
- cmp.w #IECODE_LBUTTON,d0
- beq.s .SwapButton
- cmp.w #IECODE_RBUTTON,d0
- bne.s .NoLeftyMouse
- .SwapButton eor.w #1,d1
- move.w d1,ie_Code(a0)
-
- .NoLeftyMouse tst.b DoActivate
- beq.s .End1
- tst.b MouseMode
- beq.s .End1
- bsr Activate ; Activate window if needed
- .End1 bsr ResetTimer
- tst.b ScrTimeOut
- beq.s .NoScr
- bsr OnScreen ; Activate screen if not blanked
- .NoScr tst.b MouseTimeOut ; Mouse still blanked ?
- bne.s .NoMouse
- bsr OnMouse ; Allways ctivate mouse
- .NoMouse move.b #0,MouseTimeOut ; Mouse and screen are not timed
- move.b #0,ScrTimeOut ; out anymore
-
- tst.b CycleWin ; Window-Cycling enabled ?
- beq NoTimerEvent
- move.l IEvent(pc),a1
- move.w ie_Code(a1),d1
- cmp.w #IECODE_LBUTTON,d1 ; Left button pressed ?
- bne.s .NoPopFront
- lea PopQualFlags(pc),a0 ; Get current qualifier
- move.l PopQualNum(pc),d0
- asl.l #2,d0
- move.w 0(a0,d0),d2
- move.w ie_Qualifier(a1),d1
- and.w d2,d1
- bne.s .DoPopFront ; Left one pressed ?
- move.w 2(a0,d0),d2
- move.w ie_Qualifier(a1),d1
- and.w d2,d1
- beq.s .NoPopFront ; Right one pressed ?
- .DoPopFront move.b #IECLASS_NULL,ie_Class(a1) ; Clear Event for other
- move.w #0,ie_Code(a1)
- move.w #0,ie_Qualifier(a1)
- bsr FindWindow ; Find window underneith layer
- tst.l d0
- beq.s .NoPopFront ; No layer, no window
- move.l d0,a1
- tst.l lr_ClipRect(a1) ; window hidden by others ?
- beq.s .NoPopFront ; Nope -> no movement to front
- move.l lr_ClipRect(a1),a1
- tst.l cr_Next(a1)
- beq.s .NoPopFront ; REALLY ???
- move.l d0,a0
- move.l lr_Window(a0),a0
- move.l wd_Flags(a0),d0
- move.l d0,d1
- and.l #WFLG_BACKDROP,d0 ; BackDrop window ???
- bne.s .NoPopFront
- and.l #WFLG_DEPTHGADGET,d1 ; Does the window have a DEPTH-Gad ???
- beq.s .NoPopFront ; Nope -> no pop to front
- LNKLIB WindowToFront,_IntuitionBase
- bra NoTimerEvent
-
- .NoPopFront move.l IEvent(pc),a1
- move.w ie_Code(a1),d1
- cmp.w #IECODE_RBUTTON,d1 ; Right button pressed ?
- bne.s .NoPopBack
- lea PopQualFlags(pc),a0
- move.l PopQualNum(pc),d0 ; Get current qualifier
- asl.l #2,d0
- move.w 0(a0,d0),d2
- move.w ie_Qualifier(a1),d1
- and.w d2,d1 ; Left one pressed ?
- bne.s .DoPopBack
- move.w 2(a0,d0),d2
- move.w ie_Qualifier(a1),d1
- and.w d2,d1 ; Right one pressed ?
- beq.s .NoPopBack
- .DoPopBack move.b #IECLASS_NULL,ie_Class(a1) ; Clear event for others
- move.w #0,ie_Code(a1)
- move.w #0,ie_Qualifier(a1)
- bsr FindWindow ; Find layer
- tst.l d0
- beq.s .NoPopBack ; No layer, no window
- move.l d0,a0
- move.l lr_Window(a0),a0
- move.l wd_Flags(a0),d0
- move.l d0,d1
- and.l #WFLG_BACKDROP,d0 ; BackDrop window ?
- bne.s .NoPopBack
- and.l #WFLG_DEPTHGADGET,d1 ; DEPTH-Gad there ?
- beq.s .NoPopBack ; Nope -> go on
- LNKLIB WindowToBack,_IntuitionBase
- .NoPopBack bra NoTimerEvent
-
- NoRawMouse cmp.w #IECLASS_RAWKEY,IEClass ; Key pressed ???
- bne NoRawKey
-
- move.l IEvent(pc),a1 ; If key released -> break
- move.w ie_Code(a1),d0
- and.w #IECODE_UP_PREFIX,d0
- bne NoTimerEvent
-
- move.l IEvent(pc),a0
- lea ie_TimeStamp(a0),a0 ; Reset screen delay
- move.l TV_SECS(a0),d0
- add.l ScreenTime(pc),d0
- move.l d0,ScreenOff
- tst.b ScrTimeOut ; Screen blanked ?
- beq.s .NoScr
- bsr OnScreen ; UnBlank it
- .NoScr move.b #0,ScrTimeOut ; Screen timed out
- bsr OffMouse ; On key-press allways blank mouse
-
- tst.b DoActivate
- beq.s .End1
- tst.b MouseMode
- bne.s .End1
- bsr Activate ; Activate window if needed
- .End1 tst.b KeyClick ; Enabled Key-Click ?
- beq .NoClickYet
- move.l AudioReq(pc),a1 ; Request still running ?
- CALLSYS CheckIO
- tst.l d0
- beq .NoClickYet ; Yep-> no click
- link a5,#-128
- move.l IEvent(pc),a0 ; Convert RAW-Key
- lea -128(a5),a1
- move.b #0,(a1) ; Clear previous keys
- move.l #128,d1
- sub.l a2,a2
- LNKLIB RawKeyConvert,_ConsoleBase ; Convert raw key
- lea -128(a5),a1
- move.b (a1),d0
- unlk a5
- tst.b d0 ; No keys ?
- beq.s .NoClickYet
- cmp.b #$9b,d0 ; Initial ANSI-Code
- beq.s .NoClickYet ; No click
- cmp.b #$09,d0 ; TAB-Key pressed ?
- beq.s .NoClickYet
-
- move.l IEvent(pc),a1 ; Let it click
- tst.w ie_Code(a1)
- beq.s .NoClickYet
-
- tst.w AllocKey ; Lost allockey ?
- bne.s .ReClick ; Nope -> go on
- bsr AllocChannel ; Try to reallocate a channel
- tst.l d0 ; Failure ?
- beq.s .NoClickYet ; Yep -> sorry, no sound
- .ReClick move.l AudioReq(pc),a1 ; Let`s hear it for the click
- move.w #CMD_WRITE,IO_COMMAND(a1)
- move.b #ADIOF_PERVOL|ADIOF_NOWAIT,IO_FLAGS(a1)
- move.w #120,ioa_Period(a1)
- move.l ClickVol(pc),d0
- move.w d0,ioa_Volume(a1)
- move.l #100,ioa_Length(a1)
- move.l #ClickData,ioa_Data(a1)
- move.w #1,ioa_Cycles(a1)
- move.l IO_DEVICE(a1),a6
- jsr DEV_BEGINIO(a6)
- move.l AudioReq(pc),a1 ; Error ?
- tst.b IO_ERROR(a1)
- beq.s .NoClickYet
- bsr AllocChannel ; Yep -> so try to reget a channel
-
- .NoClickYet tst.b ESCClose ; ESC for closing windows ?
- beq .NoEscape
- move.l IEvent(pc),a1 ; Get event
- move.w ie_Code(a1),d0 ; Get code
- cmp.w #$45,d0 ; ESC pressed ?
- bne .NoEscape ; Nope -> go on
- lea PopQualFlags(pc),a0
- move.l ESCQualNum(pc),d0 ; Get current qualifier
- asl.l #2,d0
- move.w 0(a0,d0),d2
- move.w ie_Qualifier(a1),d1
- and.w d2,d1 ; Left one pressed ?
- bne.s .DoEscape
- move.w 2(a0,d0),d2
- move.w ie_Qualifier(a1),d1
- and.w d2,d1 ; Right one pressed ?
- beq .NoEscape
- .DoEscape bsr FindWindow ; Find window underneith mouse
- tst.l d0 ; No layer -> no close
- beq .NoEscape
- move.l d0,a0
- move.l lr_Window(a0),a3 ; Not a window-layer ???
- cmp.l #0,a3
- beq .NoEscape ; Yep -> no close
- move.l wd_Flags(a3),d0 ; Window has a closegadget ?
- and.l #WFLG_CLOSEGADGET,d0
- beq .NoEscape ; Nope -> go on
- tst.l wd_FirstRequest(a3) ; Requester visible ???
- bne .NoEscape
- move.l a3,a0 ; Only active windows can be closed
- LNKLIB ActivateWindow,_IntuitionBase
- moveq #0,d7 ; Clear flag for GADGETUP
- move.l wd_FirstGadget(a3),a3
- .CheckGads cmp.l #0,a3 ; Search for a selected gadget
- beq.s .GadsChecked
- move.w gg_Flags(a3),d0
- and.w #GFLG_SELECTED,d0
- beq.s .NotSelected
- move.l a3,d7 ; Got one
- bra.s .GadsChecked ; No other Gadget can be selected
- .NotSelected move.l gg_NextGadget(a3),a3
- bra.s .CheckGads
- .GadsChecked link a5,#-ie_SIZEOF
- tst.l d7 ; If no selected gadget was found
- beq.s .NoGadgetUp ; -> go on
- lea -ie_SIZEOF(a5),a0 ; fill in Event structure
- move.l #0,ie_NextEvent(a0)
- move.b #IECLASS_GADGETUP,ie_Class(a0)
- move.b #0,ie_SubClass(a0)
- move.w #0,ie_Code(a0)
- move.w #0,ie_Qualifier(a0)
- move.l d7,ie_EventAddress(a0) ; Add address of gadget
- move.l IEvent(pc),a1 ; Copy time
- lea ie_TimeStamp(a1),a1
- lea ie_TimeStamp(a0),a2
- move.l TV_SECS(a1),TV_SECS(a2)
- move.l TV_MICRO(a1),TV_MICRO(a2)
- LNKLIB AddIEvents,_CxBase ; Add event
- .NoGadgetUp lea -ie_SIZEOF(a5),a0 ; fill in Event structure
- move.l #0,ie_NextEvent(a0)
- move.b #IECLASS_CLOSEWINDOW,ie_Class(a0)
- move.b #0,ie_SubClass(a0)
- move.w #0,ie_Code(a0)
- move.w #0,ie_Qualifier(a0)
- move.l #0,ie_EventAddress(a0) ; Add address of window
- move.l IEvent(pc),a1 ; Copy time
- lea ie_TimeStamp(a1),a1
- lea ie_TimeStamp(a0),a2
- move.l TV_SECS(a1),TV_SECS(a2)
- move.l TV_MICRO(a1),TV_MICRO(a2)
- LNKLIB AddIEvents,_CxBase ; Add event
- unlk a5
- move.l IEvent(pc),a0 ; Clear this event, so that
- move.b #IECLASS_NULL,ie_Class(a0) ; CLI windows don`t get mixed up
- move.b #0,ie_SubClass(a0) ; and go away appropriately
- move.w #0,ie_Qualifier(a0)
- move.l #0,ie_EventAddress(a0)
- bra NoTimerEvent
-
- .NoEscape tst.b MapUmlaut ; Map "Umlauts" ?
- beq NoTimerEvent
- move.l IEvent(pc),a1 ; Check for "Umlauts"
- move.w ie_Code(a1),d0
- lea UmlautTab,a3 ; Get UmlautTab
- moveq #7,d7
- .GetUmlaut cmp.w (a3),d0 ; Got "Umlaut" ?
- beq.s .GotUmlaut ; Yep -> go on
- addq.l #6,a3 ; Next one
- dbf d7,.GetUmlaut
- bra NoTimerEvent ; No "Umlaut"
- .GotUmlaut move.w ie_Qualifier(a1),d1 ; Get qualifier
- move.w d1,d0 ; Shifted ?
- and.w #(IEQUALIFIER_LSHIFT|IEQUALIFIER_RSHIFT),d0
- beq.s .NoShift
- addq.l #6,a3 ; Get corresponding shifted char
- tst.w (a3) ; Skip shifted ß
- beq NoTimerEvent
-
- .NoShift link a5,#-(ie_SIZEOF*2) ; Get space for two IEs
- lea -(ie_SIZEOF*2)(a5),a4
- move.b ie_SubClass(a1),d0 ; Get subclass
- move.l ie_EventAddress(a1),d2 ; Address
- lea ie_TimeStamp(a1),a2
- move.l TV_SECS(a2),d3 ; And seconds
-
- move.l a4,d7 ; Link IEs
- add.l #ie_SIZEOF,d7
- move.l d7,ie_NextEvent(a4)
- move.b #IECLASS_RAWKEY,ie_Class(a4) ; Set class
- move.b d0,ie_SubClass(a4)
- move.w 2(a3),ie_Code(a4) ; Get first char
- move.w d1,ie_Qualifier(a4)
- move.l d2,ie_EventAddress(a4)
- lea ie_TimeStamp(a4),a2 ; Set time for correct blanking
- move.l d3,TV_SECS(a2)
- move.l #0,TV_MICRO(a2)
-
- lea ie_SIZEOF(a4),a0 ; Clear link to next
- move.l #0,ie_NextEvent(a0)
- move.b #IECLASS_RAWKEY,ie_Class(a0)
- move.b d0,ie_SubClass(a0)
- move.w 4(a3),ie_Code(a0) ; Get second char for "Umlaut"
- move.w #0,ie_Qualifier(a0)
- move.l d2,ie_EventAddress(a0)
- lea ie_TimeStamp(a0),a2
- addq.l #1,d3
- move.l d3,TV_SECS(a2) ; One second past last event :-)
- move.l #0,TV_MICRO(a2)
-
- move.l a4,a0
- LNKLIB AddIEvents,_CxBase ; Add events
- unlk a5
-
- move.l IEvent(pc),a0 ; Clear current event
- move.b #IECLASS_NULL,ie_Class(a0)
- move.b #0,ie_SubClass(a0)
- move.w #0,ie_Qualifier(a0)
- move.l #0,ie_EventAddress(a0)
- bra NoTimerEvent
-
- NoRawKey cmp.w #IECLASS_TIMER,IEClass ; Timer event ?
- bne NoTimerEvent
- tst.b TimeReset ; Reset timers ?
- beq.s .NoTime ; (if times were altered)
- bsr ResetTimer
- bra NoTimerEvent
-
- .NoTime move.l IEvent(pc),a0
- lea ie_TimeStamp(a0),a0
- tst.l ScreenTime ; Screen to be blanked ?
- beq .NoScreenOff ; nope -> go on
- move.l ScreenOff(pc),d0 ; Screen timeout ?
- sub.l TV_SECS(a0),d0
- bge .NoScreenOff ; Nope -> go on
- move.l TV_SECS(a0),d1 ; Set time for next timeout
- add.l ScreenTime(pc),d1
- add.l #10,d1
- move.l d0,ScreenOff
- move.b #1,ScrTimeOut ; Screen and mouse are timed out
- move.b #1,MouseTimeOut
- cmp.l #-10,d0 ; Within range of 10
- ble.s .NoScreenOff
- tst.l BlankHandle ; Screen already blanked ?
- bne.s .End ; Yep -> pop it to front
- lea BlankScreenDef(pc),a0 ; Open dummy (Blank) screen
- LNKLIB OpenScreen,_IntuitionBase
- move.l d0,BlankHandle
- tst.l d0
- beq.s NoTimerEvent
- move.l d0,a0
- lea sc_ViewPort(a0),a0 ; Set all cols to black
- moveq #0,d0
- moveq #0,d1
- moveq #0,d2
- moveq #0,d3
- LNKLIB SetRGB4,_GfxBase
- DOLIB WaitTOF ; Delay the thingy
- move.b #0,SprOff ; ReBlank mouse pointer
- bsr OffMouse ; Disable mouse
- bra.s NoTimerEvent
- .End move.l BlankHandle(pc),a0 ; Get screen to front :-)
- LNKLIB ScreenToFront,_IntuitionBase
- move.b #0,SprOff ; ReBlank Mouse
- bsr.s OffMouse
-
- .NoScreenOff tst.l MouseTime ; Mouse to be blanked ?
- beq.s .NoMouseOff ; Nope -> go on
- move.l IEvent(pc),a0 ; Check, whether time for
- lea ie_TimeStamp(a0),a0 ; blank has come
- move.l MouseOff(pc),d0
- sub.l TV_SECS(a0),d0
- bge.s .NoMouseOff ; Nope -> go on
- move.l TV_SECS(a0),d1 ; Store new values for next
- add.l MouseTime(pc),d1 ; blank.
- addq.l #1,d1
- move.l d1,MouseOff
- move.b #1,MouseTimeOut ; Only mouse is blanked now
- cmp.l #-10,d0 ; Timeout within range of
- ble.s .NoMouseOff ; about 10
- bsr.s OffMouse ; Blank mouse
- .NoMouseOff
-
- NoTimerEvent move.l IEvent(pc),a0 ; Try to get next event linked
- move.l ie_NextEvent(a0),d0 ; to this one
- beq.s NoEvent ; No other one -> that`s it
- move.l d0,IEvent ; Store address
- bra EventLoop ; Loop
-
- NoEvent movem.l (sp)+,d0-d7/a1-a6
- rts
-
-
-
- **********************************************************************
- * Reset the timers *
- **********************************************************************
- ResetTimer move.l IEvent(pc),a0
- lea ie_TimeStamp(a0),a0
- move.l TV_SECS(a0),d0 ; Get current seconds
- move.l d0,d1
- add.l ScreenTime(pc),d0 ; add delay for screen blank
- move.l d0,ScreenOff
- add.l MouseTime(pc),d1 ; add delay for mouse blank
- move.l d1,MouseOff
- move.b #0,TimeReset
- rts
-
-
-
- **********************************************************************
- * Blank the mouse *
- **********************************************************************
- OffMouse CALLSYS Forbid ; Disable stuff for a while
- tst.b SprOff
- bne.s .NoSpr0
- move.l _GfxBase(pc),a0
- move.l gb_copinit(a0),a0
- lea copinit_sprstrtup(a0),a0 ; Get pointer to copper-sprite-list
- moveq #7,d7 ; Check for 8 Sprite-Ptrs
- .Spr0Loop cmp.w #$0120,(a0)
- bne.s .FindSpr0
- cmp.w #$0122,4(a0)
- beq.s .GotSpr0
- .FindSpr0 addq.l #8,a0
- bra.s .Spr0Loop
- .GotSpr0 lea OldSprite,a1 ; Store old pointer to sprite
- move.w 2(a0),(a1)+
- move.w 6(a0),(a1)
- move.l #NoSpriteDat,d0 ; We would like to have a
- move.w d0,6(a0) ; blank sprite
- swap d0
- move.w d0,2(a0)
- .NoSpr0 CALLSYS Permit ; Reenable things
- rts
-
-
- **********************************************************************
- * UnBlank mouse *
- **********************************************************************
- OnMouse CALLSYS Forbid
- move.l _GfxBase,a0
- move.l gb_copinit(a0),a0
- lea copinit_sprstrtup(a0),a0
- moveq #7,d7 ; Check for 8 Sprite-Ptrs
- .Spr0Loop cmp.w #$0120,(a0)
- bne.s .FindSpr0
- cmp.w #$0122,4(a0)
- beq.s .GotSpr0
- .FindSpr0 addq.l #8,a0
- bra.s .Spr0Loop
- .GotSpr0 lea OldSprite(pc),a1
- tst.w (a1)
- blt.s .NoSpr0
- move.w (a1)+,2(a0) ; Restore old pointer
- move.w (a1),6(a0)
- .NoSpr0 CALLSYS Permit
- rts
-
-
- **********************************************************************
- * UnBlank screen *
- **********************************************************************
- OnScreen tst.l BlankHandle ; Close blank-screen if there
- beq.s .End
- move.l BlankHandle(pc),a0
- LNKLIB CloseScreen,_IntuitionBase
- LNKLIB WaitTOF,_GfxBase ; a little delay
- move.l #0,BlankHandle
- .End rts
-
-
-
-
- **********************************************************************
- * This is the activation-routine *
- **********************************************************************
- Activate bsr FindWindow
- tst.l d0
- beq.s .NotAct
-
- movem.l d0/a0,-(sp)
- moveq #0,d0
- LNKLIB LockIBase,_IntuitionBase
- move.l d0,MyILock
- movem.l (sp)+,d0/a0
-
- move.l ActWindow(pc),a1
- tst.l wd_FirstRequest(a1) ; active window ?
- beq.s .GoOn ; No -> go on
- sub.l a0,a0 ; Yep -> no activation
- bra.s .GotWindow
-
- .GoOn move.l sc_FirstWindow(a0),a0
- .CheckWindows cmp.l #0,a0
- beq.s .WindowOK
-
- bsr.s CheckWinGads
- cmp.l #0,a0
- beq.s .GotWindow
-
- move.l wd_NextWindow(a0),a0 ; Get next window
- bra.s .CheckWindows ; Check all windows on screen
-
- .WindowOK move.l d0,a0
- move.l lr_Window(a0),a0
- cmp.l ActWindow(pc),a0 ; Window already active ?
- bne.s .GotWindow ; -> don`t activate
- sub.l a0,a0
- .GotWindow move.l a0,-(sp)
- move.l MyILock(pc),a0
- DOLIB UnlockIBase
- move.l (sp)+,a0
- cmp.l #0,a0
- beq.s .NotAct
- DOLIB ActivateWindow ; activate window
- .NotAct rts
-
-
-
-
- **********************************************************************
- * Checks for any active gadgets within a window *
- **********************************************************************
- CheckWinGads movem.l d1/a1,-(sp)
- move.l wd_FirstGadget(a0),a1 ; First gadget of window
-
- .CheckGadgets cmp.l #0,a1
- beq.s .GadgetsChecked
-
- move.w gg_GadgetType(a1),d1 ; Is it a string-gadget ?
- and.w #STRGADGET,d1
- beq.s .NoStrGad ; No -> go on
-
- move.w gg_Flags(a1),d1 ; Is it selected ?
- and.w #SELECTED,d1
- bne.s .NoWindow ; Yep -> No activation
-
- .NoStrGad move.l gg_NextGadget(a1),a1 ; Check all gads in window
- bra .CheckGadgets
- .NoWindow sub.l a0,a0
- .GadgetsChecked movem.l (sp)+,d1/a1
- rts
-
-
-
-
-
- **********************************************************************
- * Find underneith mousepointer *
- **********************************************************************
- FindWindow moveq #0,d0 ; Lock Intuition-Base
- LNKLIB LockIBase,_IntuitionBase
- move.l d0,MyILock
-
- move.l _IntuitionBase(pc),a0
-
- moveq #0,d0
- moveq #0,d1
- move.w ib_MouseX(a0),d0 ; Get mouse-koords
- move.w ib_MouseY(a0),d1
- move.l d0,MouseX
- move.l d1,MouseY
-
- move.l ib_ActiveWindow(a0),ActWindow ; Is a requester active on
- move.l ib_FirstScreen(a0),a0
- CheckScreens move.l MouseX(pc),d0
- move.l MouseY(pc),d1
-
- lea sc_ViewPort(a0),a1
- move.w vp_Modes(a1),d2
-
- move.w d2,d3 ; Recalc mouse-coords
- and.w #V_HIRES,d3 ; for screen-resolution
- bne.s IsHires
- asr.l #1,d0
-
- IsHires and.w #V_LACE,d2
- bne.s IsLace
- asr.l #1,d1
-
- IsLace movem.l a0/a1/d1,-(sp) ; Check layer
- moveq #0,d2
- move.w vp_DxOffset(a1),d2 ; Offset of screen
- sub.l d2,d0
- move.w vp_DyOffset(a1),d2
- sub.l d2,d1
- lea sc_LayerInfo(a0),a0
- LNKLIB WhichLayer,_LayersBase
- movem.l (sp)+,a0/a1/d1
- tst.l d0
- bne.s GotLayer
-
- move.w vp_DyOffset(a1),d0 ; Mouse above ViewPort ?
- cmp.w d0,d1
- blt.s ScreenError ; Yep -> There must be an error
- move.l sc_NextScreen(a0),a0
- cmp.l #0,a0
- beq.s ScreenError
- bra CheckScreens ; Find screen
-
- ScreenError moveq #0,d0
- GotLayer movem.l d0/a0,-(sp)
- move.l MyILock(pc),a0 ; UnLock IntuitionBase
- LNKLIB UnlockIBase,_IntuitionBase
- move.l #0,MyILock
- movem.l (sp)+,d0/a0
- rts
-
-
-
-
- **********************************************************************
- * Signal the timer process to remake the time *
- **********************************************************************
- SigTime move.l CheckerProc(pc),a1
- move.l #SIGTIMEREMAKE,d0
- CALLSYS Signal
- rts
-
-
-
-
- **********************************************************************
- * Display new time *
- **********************************************************************
- SetTime lea MyDateTime(pc),a0 ; Get datestamp
- move.l a0,d1
- LNKLIB DateStamp,_DOSBase
-
- lea MyDateTime(pc),a0 ; Do the string formatings
- move.b #FORMAT_DOS,dat_Format(a0)
- move.l #RevDayString,dat_StrDay(a0) ; First create the whole string
- move.l #RevDateString,dat_StrDate(a0) ; for revision
- move.l #RevTimeString,dat_StrTime(a0)
- move.l a0,d1
- DOLIB DateToStr
-
- lea MyDateTime(pc),a0 ; Do the string formatings
- tst.b AmiDate
- beq.s .Loop1
- move.b #FORMAT_USA,dat_Format(a0)
- bra.s .Loop2
- .Loop1 move.b #FORMAT_CDN,dat_Format(a0)
- .Loop2 move.b #0,dat_Flags(a0)
-
- move.l #AllDayString,dat_StrDay(a0) ; First create the whole string
- move.l #AllDateString,dat_StrDate(a0) ; for environment variables
- move.l #AllTimeString,dat_StrTime(a0)
- move.l a0,d1
- DOLIB DateToStr
- tst.l d0
- beq.s NoEnvTime
- tst.b SetEnv
- beq.s NoEnvTime
-
- move.l #EnvDayString,d1 ; set env vars
- move.l #AllDayString,d2
- moveq #-1,d3
- move.l #GVF_GLOBAL_ONLY,d4
- DOLIB SetVar
- tst.l d0
- beq.s .Error
-
- move.l #EnvDateString,d1
- move.l #AllDateString,d2
- moveq #-1,d3
- move.l #GVF_GLOBAL_ONLY,d4
- DOLIB SetVar
- tst.l d0
- beq.s .Error
-
- move.l #EnvTimeString,d1
- move.l #AllTimeString,d2
- moveq #-1,d3
- move.l #GVF_GLOBAL_ONLY,d4
- DOLIB SetVar
- tst.l d0
- bne.s NoEnvTime
-
- .Error move.b #0,SetEnv ; Disable setenv if errors
- moveq #0,d0 ; occured
- move.l #ENVGAD,d1
- bsr SetControlBox
-
- NoEnvTime move.b #0,DayString ; clear previous strings
- move.b #0,DateString
- move.b #0,TimeString
-
- lea MyDateTime(pc),a0
- tst.b ShowDay ; Now create the rest for clock
- beq.s .Loop3 ; display
- move.l #DayString,dat_StrDay(a0)
- bra.s .Loop4
- .Loop3 move.l #0,dat_StrDay(a0)
-
- .Loop4 tst.b ShowDate ; Are we to show a date ?
- beq.s .Loop5
- move.l #DateString,dat_StrDate(a0) ; Yep
- bra.s .Loop6
- .Loop5 move.l #0,dat_StrDate(a0) ; Nope
- .Loop6 move.l #TimeString,dat_StrTime(a0)
- move.l a0,d1
- DOLIB DateToStr
- tst.l d0
- beq NoTime
-
- bsr CheckForAlarm ; Are we to alarm ?
-
- tst.b ShowClock ; Show clock ?
- beq NoTime
-
- tst.l PageNum ; Display normal time ?
- bgt.s NoClockDisp
-
- lea TimeFormats(pc),a0 ; Change to different
- tst.b ShortDay ; time format strings
- beq.s .Loop7
- addq.l #8,a0 ; Use the ones with long days
- .Loop7 tst.b ShowSecs
- bne.s .Loop8
- addq.l #4,a0 ; use the one without secs
- .Loop8 move.l (a0),a0
- lea FormatData(pc),a1
- lea PutChProc(pc),a2
- lea FinalString(pc),a3
- CALLSYS RawDoFmt
-
- bsr MakeDisplay ; Display the stuff
- bra NoTime
-
- NoClockDisp cmp.l #DMEMPAGE,PageNum ; Display Chip/Fast mem seperately ?
- bne.s NoDoubleMem
-
- move.l #MEMF_CHIP,d1 ; Get available memory
- CALLSYS AvailMem
- move.l d0,ChipMem
- move.l #MEMF_FAST,d1
- DOLIB AvailMem
- move.l d0,FastMem
-
- lea FormMemString(pc),a0 ; Format string
- lea ChipMem,a1
- lea PutChProc(pc),a2
- lea FinalString(pc),a3
- DOLIB RawDoFmt
-
- bsr MakeDisplay ; Display
- bra NoTime
-
- NoDoubleMem cmp.l #TMEMPAGE,PageNum ; Display total memory ?
- bne.s NoTotalMem
-
- move.l #MEMF_CHIP,d1 ; Calc total memory
- CALLSYS AvailMem
- move.l d0,d7
- move.l #MEMF_FAST,d1
- DOLIB AvailMem
- add.l d0,d7
- move.l d7,TotalMem
-
- lea FormTMemString(pc),a0
- lea TotalMem,a1
- lea PutChProc(pc),a2
- lea FinalString(pc),a3
- DOLIB RawDoFmt
-
- bsr MakeDisplay
- bra NoTime
-
- NoTotalMem cmp.l #GMEMPAGE,PageNum
- bne NoGfxMem
-
- link a5,#-4
- bsr LockScreen
- tst.l d0
- bne.s .GoOn
- move.l #0,PageNum
- bra NoGfxMem
-
- .GoOn move.l MyRastPort(pc),a1
- moveq #1,d0
- LNKLIB SetRast,_GfxBase
-
- move.l #MEMF_CHIP,d1 ; Calc total memory
- CALLSYS AvailMem
- move.l d0,d7
- move.l #MEMF_FAST,d1
- DOLIB AvailMem
- add.l d7,d0
- move.l MaxMem(pc),d7
- sub.l d0,d7
-
- move.l MyRastPort(pc),a1 ; Get length of E and F
- lea EString(pc),a0 ; chars
- moveq #1,d0
- LNKLIB TextLength,_GfxBase
- move.l d0,EWidth
- move.l d0,d5
- move.l MyRastPort(pc),a1
- lea FString(pc),a0
- moveq #1,d0
- DOLIB TextLength
- move.l d0,FWidth
- add.l d5,d0 ; d0 length of both
- add.l #MAXBARLEN,d0
- addq.l #4,d0
- move.l d0,BlitWidth
- moveq #0,d2
- move.l -4(a5),a0
- move.w sc_Width(a0),d2
- sub.l #DEPTHWIDTH,d2
- sub.l d0,d2
- move.l d2,LeftEdge
- move.l #MAXBARLEN,d0 ; Get length of bar
- move.l d7,d1
- bsr _mulu
- move.l MaxMem(pc),d1
- bsr _divu
- move.l d0,d5
-
- move.l MyRastPort(pc),a1
- moveq #2,d0
- LNKLIB SetAPen,_GfxBase
-
- move.l MyRastPort(pc),a1 ; Write E
- moveq #0,d1
- move.l MyFont(pc),a0
- move.w tf_Baseline(a0),d1
- moveq #0,d0
- DOLIB Move
-
- move.l MyRastPort(pc),a1
- lea EString(pc),a0
- moveq #1,d0
- DOLIB Text
-
- tst.b ClockWin ; Window enabled ?
- bne.s .End ; Yep -> no title colors
- move.l MyRastPort(pc),a1 ; Draw "non-filled" rec
- moveq #0,d0
- DOLIB SetAPen
-
- move.l MyRastPort(pc),a1
- move.l EWidth(pc),d0
- addq.l #2,d0
- moveq #0,d1
- move.l d0,d2
- add.l #MAXBARLEN,d2
- moveq #0,d3
- move.l MyFont(pc),a0
- move.w tf_YSize(a0),d3
- subq.l #1,d3
- DOLIB RectFill
-
- .End move.l MyRastPort(pc),a1 ; Draw gauge
- tst.b ClockWin
- beq.s .InTitle
- moveq #2,d0
- bra.s .SetPen
- .InTitle moveq #3,d0
- .SetPen DOLIB SetAPen
-
- move.l MyRastPort(pc),a1
- move.l EWidth(pc),d0
- addq.l #2,d0
- moveq #0,d1
- move.l d5,d2
- add.l d0,d2
- moveq #0,d3
- move.l MyFont(pc),a0
- move.w tf_YSize(a0),d3
- subq.l #1,d3
- DOLIB RectFill
-
- move.l MyRastPort(pc),a1 ; Draw F
- moveq #2,d0
- DOLIB SetAPen
-
- move.l MyRastPort(pc),a1
- move.l EWidth(pc),d0
- addq.l #4,d0
- add.l #MAXBARLEN,d0
- move.l MyFont(pc),a0
- moveq #0,d1
- move.w tf_Baseline(a0),d1
- DOLIB Move
-
- move.l MyRastPort(pc),a1
- lea FString(pc),a0
- moveq #1,d0
- DOLIB Text
-
- move.l MyRastPort(pc),a1 ; Reset color for our RastPort
- moveq #0,d0
- DOLIB SetAPen
-
- tst.b ClockWin ; Window active ?
- beq.s TitleGauge
-
- tst.l ClockHandle ; Window already there ?
- bne.s .Clear
- lea ClockWinDef(pc),a0 ; No window title
- move.l #0,nw_Title(a0)
- move.l BlitWidth(pc),d6
- bsr OpenClockWin
- tst.l d0
- beq NoTime
- bra.s .NoClear
- .Clear move.l ClockHandle(pc),a0
- tst.l wd_Title(a0) ; Window-Title already cleard ?
- beq.s .NoClear
- sub.l a1,a1 ; Clear window-title
- move.l #-1,a2
- LNKLIB SetWindowTitles,_IntuitionBase
-
- .NoClear move.l ClockHandle(pc),a1 ; Blit gauge into window-title
- move.l wd_RPort(a1),a1
- move.l #DEPTHWIDTH,d2
- bra.s DoGauge
-
- TitleGauge bsr CloseClockWin
- move.l -4(a5),a1 ; Blit gauge into screentitle
- move.l sc_BarLayer(a1),a1
- move.l lr_rp(a1),a1
- move.l LeftEdge(pc),d2
-
- DoGauge move.l MyRastPort(pc),a0 ; Blit our rastport into
- moveq #0,d0
- moveq #0,d1
- move.l #1,d3
- move.l BlitWidth(pc),d4
- moveq #0,d5
- move.w BitMapHeight(pc),d5
- move.l #$c0,d6
- LNKLIB ClipBlit,_GfxBase
-
- bsr UnlockScreen
- unlk a5
- bra.s NoTime
-
- NoGfxMem cmp.l #ONLINEPAGE,PageNum ; Display online-time ?
- bne.s NoOnlinePage ; Nope -> go on
- lea OnlineFormStr(pc),a0 ; Copy online string
- lea FinalString(pc),a1
- bsr StrCpy
- lea OnlineString(pc),a0 ; Concat time string
- lea FinalString(pc),a1
- bsr StrCat
- bsr.s MakeDisplay
- bra.s NoTime
- NoOnlinePage
- NoTime rts
-
-
-
-
- **********************************************************************
- * Make up the display for clock/memory *
- **********************************************************************
- MakeDisplay lea FinalString(pc),a0 ; Get length of time string
- bsr StrLen
- move.l d0,d7
- move.l MyRastPort(pc),a1 ; Get width of string (pixels)
- LNKLIB TextLength,_GfxBase
- move.l d0,d6
-
- tst.b ClockWin ; Display in window ?
- beq.s DisplayInTitle ; Nope -> do it in title
-
- bsr OpenClockWin
- tst.l d0
- beq NoDisplay
-
- move.l ClockHandle(pc),a0 ; Set new title of window
- lea FinalString(pc),a1
- move.l #-1,a2
- LNKLIB SetWindowTitles,_IntuitionBase
- rts
-
- DisplayInTitle link a5,#-4
- bsr LockScreen
- tst.l d0
- beq NoDisplay
-
- movem.l d6/d7,-(sp) ; store width/length of string
- bsr CloseClockWin
-
- move.l MyRastPort(pc),a1 ; Clear rastport
- moveq #1,d0
- LNKLIB SetRast,_GfxBase
-
- moveq #0,d1 ; Move cursor to position
- move.l MyFont(pc),a0
- move.w tf_Baseline(a0),d1
- move.l MyRastPort(pc),a1
- moveq #0,d0
- DOLIB Move
- movem.l (sp)+,d6/d7
-
- move.l MyRastPort(pc),a1 ; Draw string
- lea FinalString(pc),a0
- move.l d7,d0
- DOLIB Text
-
- moveq #0,d2
- move.l -4(a5),a0
- move.w sc_Width(a0),d2 ; Get width of screen
- sub.l #DEPTHWIDTH,d2 ; Skip depth gadget
- sub.l d6,d2 ; Skip width of string
- move.l d2,LeftEdge ; Store new X-Position in TitleBar
- move.l d6,d4
- add.w #DEPTHWIDTH,d6
- cmp.w BitMapWidth(pc),d6 ; If width to be blitted is
- ble.s .End ; > Plane width : Skip some pixels
- move.w BitMapWidth(pc),d4
- sub.w #DEPTHWIDTH,d4
- .End move.l d4,BlitWidth ; Store width of string
-
- move.l MyRastPort(pc),a0 ; Blit our rastport into
- moveq #0,d0 ; rastport of layer which
- moveq #0,d1 ; is the titlebar
- move.l -4(a5),a1
- move.l sc_BarLayer(a1),a1
- move.l lr_rp(a1),a1
- move.l #1,d3
- moveq #0,d5
- move.w BitMapHeight(pc),d5
- move.l #$c0,d6
- DOLIB ClipBlit
-
- NoDisplay bsr UnlockScreen
- unlk a5
- rts
-
-
-
-
- **********************************************************************
- * Clears the workbench titlebar *
- **********************************************************************
- ClearTitleBar link a5,#-4
- bsr LockScreen
- tst.l d0
- beq.s .End
-
- move.l MyRastPort(pc),a1
- moveq #1,d0 ; Clear rastport
- LNKLIB SetRast,_GfxBase
-
- move.l MyRastPort(pc),a0 ; Blit
- moveq #0,d0 ; to restore titlebar shape
- moveq #0,d1
- move.l -4(a5),a1
- move.l sc_BarLayer(a1),a1
- move.l lr_rp(a1),a1
- move.l LeftEdge(pc),d2
- move.l #1,d3
- moveq #0,d5
- move.w BitMapHeight(pc),d5
- move.l BlitWidth(pc),d4
- move.l #$c0,d6
- DOLIB ClipBlit
-
- .End bsr UnlockScreen
- unlk a5
- rts
-
-
-
-
- **********************************************************************
- * Routine for keeping up the correct online time *
- **********************************************************************
- CheckOnline lea FormAlarmSStr(pc),a0 ; Create Onlinetime
- lea OnlineHour(pc),a1
- lea PutChProc(pc),a2
- lea OnlineString(pc),a3
- CALLSYS RawDoFmt
-
- tst.b Online ; Already online ?
- bne StillOnline
-
- lea $bfd000,a5
- btst #CIAB_COMCD,ciapra(a5)
- bne NotOnline
-
- move.b #1,Online ; Reset flags
- move.l #0,OnlineHour
- move.l #0,OnlineMinute
- move.l #3,OnlineSeconds
- move.l #0,NextUnit
- move.l #0,UnitsDone
- move.l #0,TotalCost
- lea AllTimeString(pc),a0 ; Copy current time and date
- lea LogInTime(pc),a1
- bsr StrCpy
- lea AllDateString(pc),a0
- lea LogInDate(pc),a1
- bsr StrCpy
- lea AllTimeString+6(pc),a0
- lea CopyTime(pc),a1
- bsr StrCpy
- tst.b BillPopUp
- beq.s StillOnline
- tst.l BillHandle
- beq.s .GoOn
- move.b #1,NoBillPopDown
- .GoOn movem.l RegsAll,-(sp)
- bsr OpenBillWin
- movem.l (sp)+,RegsAll
- StillOnline lea $bfd000,a5
- btst #CIAB_COMCD,ciapra(a5) ; Still online ?
- beq .GoOn
-
- move.b #0,Online ; Nope....
-
- tst.b LogCalls ; Save log to file ?
- beq .EndLogWrite
-
- move.w #'N',d0 ; Set char for either normal
- tst.b CheapMode
- beq.s .NoCheap
- move.w #'C',d0 ; ... or cheap mode
- .NoCheap move.w d0,LogEntryTariff
- move.l #0,CostMajor ; Calc total costs
- move.l #0,CostMinor
- move.l TotalCost(pc),d0
- .CostLoop cmp.l #100,d0
- blt.s .CostEnd
- sub.l #100,d0
- addq.l #1,CostMajor
- bra.s .CostLoop
- .CostEnd move.l d0,CostMinor
- lea LogEntryFormat(pc),a0 ; Format log entry
- lea LogEntryDat(pc),a1
- lea PutChProc(pc),a2
- move.l ReadBuffer(pc),a3
- CALLSYS RawDoFmt
-
- move.l #LogFileName,d1 ; Open log file
- move.l #MODE_READWRITE,d2
- LNKLIB Open,_DOSBase
- tst.l d0
- beq.s .EndLogWrite
- move.l d0,d7
- move.l d0,d1
- moveq #0,d2
- move.l #OFFSET_END,d3 ; Seek to end
- DOLIB Seek
- move.l d7,d1
- move.l ReadBuffer,d2 ; Write new logentry
- DOLIB FPuts
- move.l d7,d1
- DOLIB Close
- .EndLogWrite
-
- .NoReenable tst.b BillPopUp
- beq.s .EndLogOff
- tst.b NoBillPopDown
- bne.s .EndLogOff
- bsr CloseBillWin
- .EndLogOff move.b #0,NoBillPopDown
- bra NotOnline
-
- .GoOn move.b #1,Online ; Yep, we`re online
-
- link a5,#-4
- lea -4(a5),a4
- lea AllTimeString+6(pc),a0 ; Get current seconds
- move.l a0,d1
- move.l a4,d2
- LNKLIB StrToLong,_DOSBase
- move.l d1,d7 ; Convert to long
- lea CopyTime(pc),a0 ; Get last seconds
- move.l a0,d1
- move.l a4,d2
- DOLIB StrToLong ; Convert to long
- unlk a5
- moveq #0,d0
- .GetValue cmp.l d1,d7 ; Got seconds elapsed ?
- beq.s .GotValue ; Yep -> go on
- addq.l #1,d0 ; One more second done
- addq.l #1,d1
- cmp.l #60,d1 ; Over 60 boundary ?
- bne.s .GetValue
- moveq #0,d1 ; Restart from scratch
- bra.s .GetValue
- .GotValue add.l d0,OnlineSeconds ; Remake online time
- cmp.l #60,OnlineSeconds ; One minute done ?
- blt.s .End ; Nope -> go on
- sub.l #60,OnlineSeconds
- addq.l #1,OnlineMinute
- cmp.l #60,OnlineMinute ; One our online ? GOSH
- bne.s .End ; Nope -> go on
- move.l #0,OnlineMinute
- addq.l #1,OnlineHour
-
- .End lea AllTimeString+6(pc),a0 ; Copy current time
- lea CopyTime(pc),a1
- bsr StrCpy
-
- subq.l #1,NextUnit
- addq.l #1,UnitsDone
-
- NotOnline bsr.s RemakeCosts
- rts
-
-
-
-
- **********************************************************************
- * Remake texts within Bill window *
- **********************************************************************
- RemakeCosts tst.b Online ; Are we online ?
- beq.s .NotOnline
- tst.l NextUnit ; Next unit
- bgt.s .NotOnline ; Nope...
- move.l TimeZone(pc),d0 ; Get timezone
- asl.l #3,d0
- lea CostUnit1(pc),a0
- tst.b CheapMode
- beq.s .Normal
- move.l cu_Cheap(a0,d0),d0 ; Get costs for cheap mode
- bra.s .GoOn
- .Normal move.l cu_Normal(a0,d0),d0 ; or for normal mode
-
- .GoOn move.l d0,NextUnit ; Store for next unit calc
-
- move.l CostUnit(pc),d0 ; Remake costs
- add.l d0,TotalCost
- bsr DisplayCost
-
- .NotOnline tst.b DoRemakeCosts
- beq.s .NoCostRemake
- move.b #0,DoRemakeCosts
- move.l TimeZone(pc),d0 ; Changed time/cheap mode ?
- lea CostUnit1(pc),a0
- asl.l #3,d0
- tst.b CheapMode
- beq.s .RemNormal
- move.l cu_Cheap(a0,d0),d0 ; Get new time
- bra.s .GoOnRemake
- .RemNormal move.l cu_Normal(a0,d0),d0
- .GoOnRemake move.l UnitsDone(pc),d2
- divu d0,d2
- and.l #$0000ffff,d2
- tst.l TotalCost
- bne.s .DoInitial
- tst.b Online
- beq.s .NoInitial
- .DoInitial addq.l #1,d2 ; D2 = Number of units done for new time
- .NoInitial move.l CostUnit(pc),d3
- mulu d3,d2 ; Get new costs for new time
- move.l d2,TotalCost ; Store costs
- move.l UnitsDone(pc),d2 ; Units done
- divu d0,d2 ; Calc overlap for next unit
- clr.w d2
- swap d2
- sub.l d2,d0 ; D0 = Event for next unit
- move.l d0,NextUnit
- bsr DisplayCost
- .NoCostRemake move.l #0,CostMajor
- move.l #0,CostMinor
- move.l TimeZone(pc),d0 ; Calc total costs
- asl.l #3,d0
- lea CostUnit1(pc),a0
- lea 0(a0,d0),a0
- tst.b CheapMode
- beq.s .StillNormal
- move.l cu_Cheap(a0),d1 ; either for cheap mode
- bra.s .StillCheap
- .StillNormal move.l cu_Normal(a0),d1 ; or for normal mode
- .StillCheap move.l #3600,d0
- divu d1,d0
- and.l #$0000ffff,d0 ; d0 = Number of units/hour
- move.l CostUnit(pc),d1
- mulu d1,d0 ; d0 = costs/hour
- .TotLoop cmp.l #100,d0 ; convert value
- blt.s .EndLoop
- sub.l #100,d0
- addq.l #1,CostMajor
- bra.s .TotLoop
- .EndLoop move.l d0,CostMinor
-
- lea PerHourForm(pc),a0 ; Convert values to string
- lea CostMajor(pc),a1
- lea PutChProc(pc),a2
- lea PerHourBuff(pc),a3
- CALLSYS RawDoFmt
-
- tst.l BillHandle
- beq.s NoCostCalc
- move.l BillHandle(pc),a0 ; Print out texts
- moveq #0,d1
- move.b wd_BorderTop(a0),d1
- move.l BillRPort(pc),a0
- lea BillVarStrings(pc),a1
- moveq #0,d0
- LNKLIB PrintIText,_IntuitionBase
- NoCostCalc rts
-
-
-
-
-
- **********************************************************************
- * Display new costs of telefone call *
- **********************************************************************
- DisplayCost move.l TotalCost(pc),d0
- move.l #0,CostMajor
- move.l #0,CostMinor
-
- .Loop cmp.l #100,d0 ; Calc costs
- blt.s .LoopEnd
- sub.l #100,d0
- addq.l #1,CostMajor
- bra.s .Loop
- .LoopEnd move.l d0,CostMinor
-
- lea CostFormString(pc),a0 ; Convert values
- lea CostMajor(pc),a1
- lea PutChProc(pc),a2
- lea CostString(pc),a3
- CALLSYS RawDoFmt
- rts
-
-
-
- **********************************************************************
- * Display the total sum of phone calls *
- **********************************************************************
- DisplayTotalSum move.l #LogFileName,d1 ; First check size of file
- move.l #ACCESS_READ,d2
- LNKLIB Lock,_DOSBase
- move.l d0,d7
- tst.l d0 ; IS IT THERE ?
- bne.s .GotFile
- rts
- .GotFile link a5,#-fib_SIZEOF ; Get FIB
- lea -fib_SIZEOF(a5),a0
- move.l d7,d1 ; Get FileInfo
- move.l a0,d2
- DOLIB Examine
- move.l d7,d1
- DOLIB UnLock ; Unlock file
- lea -fib_SIZEOF(a5),a0 ; Check size
- tst.l fib_Size(a0) ; on zero quit
- bne.s .SizeOk
- unlk a5
- rts
- .SizeOk unlk a5
- move.l #LogFileName,d1 ; Open Log file
- move.l #MODE_OLDFILE,d2
- DOLIB Open
- move.l d0,FileHand
- tst.l d0
- beq .EndTotSum
-
- move.l #ConWinDef,d1 ; Open CON: Window
- move.l #MODE_OLDFILE,d2
- DOLIB Open
- move.l d0,TempHand
- tst.l d0
- beq .EndTotSum
-
- move.l TempHand(pc),d1
- move.l #ClearStr,d2
- move.l #ClearStrLen,d3
- DOLIB Write
-
- moveq #0,d7 ; Clear linenumber
- moveq #0,d5
- move.l d7,BillMajor ; and cost
- move.l d7,BillMinor
- move.l d7,BillTotalCost
- move.l d7,BillDayCost
-
- .SumLoop move.l FileHand(pc),d1 ; Get one line
- move.l ReadBuffer,d2
- move.l #4096,d3
- DOLIB FGets
- tst.l d0
- bne.s .GoOn
- bsr DisplayDaySum ; Display final day costs
- moveq #-1,d7 ; Indicate end of file
- bra.s .EndOfAll
-
- .GoOn bsr CheckDay
-
- move.l TempHand(pc),d1 ; Display line
- move.l ReadBuffer,d2
- DOLIB FPuts
-
- move.l ReadBuffer(pc),a4 ; Get start of major cost
- lea 72(a4),a4
- move.l a4,a5
- .LoopMinor cmp.b #'.',(a5)+ ; find period
- beq.s .GotMinor
- bra.s .LoopMinor
- .GotMinor move.b #0,-1(a5) ; Extract minor cost
- move.b #0,2(a5)
-
- move.l a4,d1
- move.l #BillMajor,d2
- DOLIB StrToLong
- tst.l d0
- ble .EndTotSum
- mulu #100,d1
- move.l d1,d6 ; Get costs
-
- move.l a5,d1
- move.l #BillMinor,d2
- DOLIB StrToLong
- tst.l d0
- ble .EndTotSum
- add.l d1,d6 ; ....
- add.l d6,BillTotalCost
- add.l d6,BillDayCost
-
- addq.l #1,d7 ; One line done
- cmp.l #12,d7 ; 12 lines done ?
- blt .SumLoop
- moveq #0,d7 ; Reset line number
- .EndOfAll tst.l d7 ; All lines done ?
- beq.s .NoFinalCost
- move.l BillTotalCost(pc),d6
- divu #100,d6
- move.w d6,d5
- swap d6
- ext.l d6
- move.l d6,BillMinor
- ext.l d5
- move.l d5,BillMajor
- lea FinalCostForm(pc),a0 ; Format final cost string
- lea BillMajor(pc),a1
- lea PutChProc(pc),a2
- move.l ReadBuffer(pc),a3
- CALLSYS RawDoFmt
- move.l TempHand(pc),d1 ; Display string
- move.l ReadBuffer,d2
- LNKLIB FPuts,_DOSBase
- .NoFinalCost move.l TempHand(pc),d1 ; Display prompt
- move.l #PressKey,d2
- move.l #PressKeyLen,d3
- DOLIB Write
- move.l TempHand(pc),d1 ; Wait for return
- DOLIB FGetC
- tst.l d7
- blt.s .EndTotSum
- bra .SumLoop
-
- .EndTotSum tst.l FileHand ; Close files
- beq.s .NoFileHand
- move.l FileHand(pc),d1
- DOLIB Close
- .NoFileHand tst.l TempHand
- beq.s .NoTempHand
- move.l TempHand(pc),d1
- DOLIB Close
- .NoTempHand move.l #0,TempHand
- move.l #0,FileHand
- rts
-
-
-
- **********************************************************************
- * Check for a difference in dates *
- **********************************************************************
- CheckDay move.l d7,d6 ; Store old line number
- tst.b d5 ; First day read ?
- beq.s .FirstDay
- move.l ReadBuffer(pc),a0 ; Compare dates
- lea BillDayStr(pc),a1
- moveq #7,d7
- bsr StrCmp
- tst.l d0
- beq.s .End ; On equal -> go on
- bsr.s DisplayDaySum ; Display sum for a day
- .FirstDay move.l ReadBuffer(pc),a0 ; Copy date to buffer
- lea BillDayStr(pc),a1
- moveq #7,d7
- bsr StrNCpy
- moveq #1,d5 ; Set flag
- .End move.l d6,d7
- rts
-
-
-
-
- **********************************************************************
- * Display the sum for a day *
- **********************************************************************
- DisplayDaySum move.l BillDayCost(pc),d3 ; Get costs
- divu #100,d3 ; convert `em
- move.w d3,d4
- swap d3
- ext.l d3
- move.l d3,BillMinor
- ext.l d4
- move.l d4,BillMajor
- lea DayCostForm(pc),a0 ; Format string
- lea BillDayPtr(pc),a1
- lea PutChProc(pc),a2
- move.l ReadBuffer(pc),a3
- lea 1024(a3),a3
- CALLSYS RawDoFmt
- move.l #0,BillDayCost
- move.l TempHand(pc),d1 ; Make it appear
- move.l ReadBuffer,d2
- add.l #1024,d2
- LNKLIB FPuts,_DOSBase
- addq.l #3,d6 ; three more lines written
- .NoNewDay rts
-
-
-
-
- **********************************************************************
- * Check the entered alarmtime *
- **********************************************************************
- CheckAlarmTime move.l ReadBuffer(pc),a1
- bsr StrCpy
- move.l ReadBuffer(pc),a0
- cmp.b #':',2(a0) ; Is a : at correct place ?
- bne TimeError
- move.b #0,2(a0)
- lea 3(a0),a1 ; A1 = Pointer to minutes
- sub.l a2,a2
- move.l #-1,AlarmSecs
- cmp.b #':',5(a0) ; Seconds entered ?
- bne.s NoSecs ; Nope -> leave them alone
- move.b #0,5(a0)
- lea 6(a0),a2 ; A2 = Pointer to secs
- move.l a2,a3
- bsr CheckDigits
- tst.l d0
- bne TimeError
-
- NoSecs move.l a0,a3 ; Check if digits are ok
- bsr CheckDigits
- tst.l d0
- bne TimeError
-
- move.l a1,a3
- bsr CheckDigits
- tst.l d0
- bne TimeError
-
- movem.l a1/a2,-(sp) ; Convert strings to longs
- move.l a0,d1
- move.l #AlarmHour,d2
- LNKLIB StrToLong,_DOSBase
- movem.l (sp)+,a1/a2
-
- move.l a2,-(sp)
- move.l a1,d1
- move.l #AlarmMins,d2
- DOLIB StrToLong
- move.l (sp)+,a2
-
- lea FormAlarmNSStr(pc),a0
- cmp.l #0,a2 ; Skip secs if wanted
- beq.s NoNeedSecs
- move.l a2,d1
- move.l #AlarmSecs,d2
- DOLIB StrToLong
- lea FormAlarmSStr(pc),a0
- cmp.l #59,AlarmSecs
- ble.s NoNeedSecs
- sub.l #60,AlarmSecs ; Correct Seconds
- NoNeedSecs cmp.l #23,AlarmHour
- ble.s HourOk
- sub.l #24,AlarmHour ; Correct hour
- bra.s NoNeedSecs
- HourOk cmp.l #59,AlarmMins
- ble.s MinsOk
- sub.l #60,AlarmMins ; Correct minutes
- MinsOk lea AlarmHour(pc),a1 ; Reformat string
- lea PutChProc(pc),a2
- move.l ReadBuffer(pc),a3
- CALLSYS RawDoFmt
-
- move.l ReadBuffer(pc),a0 ; Copy string to startup string
- lea AlarmStartVal(pc),a1
- bsr StrCpy
-
- move.l #SETALARMGAD,d0
- lea ControlGads(pc),a0
- move.l WndHandle(pc),a1
- moveq #8,d1
- move.l ReadBuffer,a2
- bsr SetStringGad
- rts
- TimeError move.l #SETALARMGAD,d0
- lea ControlGads(pc),a0
- move.l WndHandle(pc),a1
- moveq #8,d1
- lea AlarmStartVal,a2
- bsr SetStringGad
- rts
-
-
-
-
-
-
- **********************************************************************
- * Check if only digits are there *
- **********************************************************************
- CheckDigits moveq #0,d0
- cmp.b #'0',(a3)
- blt.s DigitError
- cmp.b #'9',(a3)
- bgt.s DigitError
- cmp.b #'0',1(a3)
- blt.s DigitError
- cmp.b #'9',1(a3)
- bgt.s DigitError
- rts
- DigitError moveq #1,d0
- rts
-
-
-
-
-
-
- **********************************************************************
- * Check if we`re to alarm *
- **********************************************************************
- CheckForAlarm tst.b DoAlarm ; Are we to alarm ?
- beq NoAlarm
-
- link a5,#-LEN_DATSTRING
-
- lea TimeString(pc),a0 ; Get current time
- lea -LEN_DATSTRING(a5),a1
- bsr StrCpy
- lea -LEN_DATSTRING(a5),a4
- move.b #0,2(a4) ; Clear :s
- move.b #0,5(a4)
-
- move.l a4,d1 ; make em to longs
- move.l #ThisHour,d2
- LNKLIB StrToLong,_DOSBase
- lea 3(a4),a0
- move.l a0,d1
- move.l #ThisMins,d2
- DOLIB StrToLong
- lea 6(a4),a0
- move.l a0,d1
- move.l #ThisSecs,d2
- DOLIB StrToLong
-
- unlk a5
-
- move.l AlarmHour(pc),d0
- move.l AlarmMins(pc),d1
- move.l AlarmSecs(pc),d2
- blt.s NoSecsComp ; Compare secs (-1 if not)
- cmp.l ThisSecs(pc),d2
- bne.s NoAlarm
- NoSecsComp cmp.l ThisMins(pc),d1 ; Compare rest
- bne.s NoAlarm
- cmp.l ThisHour(pc),d0
- bne.s NoAlarm
-
- move.l _OurTask(pc),a1 ; Signal mother to alarm
- move.l AlarmSigFlag(pc),d0
- CALLSYS Signal
- NoAlarm rts
-
-
-
- **********************************************************************
- * Get a file name via ASL-Requester *
- * Parameters must be passed on stack in given order *
- * 1. Pointer to window *
- * 2. Pointer to requester header *
- * 3. Pointer to path *
- * 4. Pointer to filename *
- **********************************************************************
- GetFileName CARGS #8,.Window.l,.Header.l,.Path.l,.FileName.l,.CompleteName.l,.GadgetNum.w,.GadgetList.l
- link a5,#0
- LNKLIB AllocFileRequest,_AslBase ; Get structure for filerequester
- tst.l d0
- beq NoLogFileName
- move.l d0,MyAslRequest
-
- move.l .Window(a5),FileReqWin ; Set up filerequester
- move.l .Path(a5),FileReqDir
- move.l .FileName(a5),FileReqFile
- move.l .Header(a5),FileReqHeader
- move.l MyAslRequest(pc),a0
- lea AslFileTags(pc),a1
- LNKLIB AslRequest,_AslBase ; Do the request
- move.l d0,d7
- tst.l d0
- beq .Canceled
- move.l MyAslRequest(pc),a2
- move.l rf_Dir(a2),a0
- move.l .Path(a5),a1 ; Copy Dir name
- bsr StrCpy
- move.l rf_Dir(a2),a0
- move.l .CompleteName(a5),a1
- bsr StrCpy ; and to full name
- move.l .CompleteName(a5),a0
- bsr StrLen
- tst.l d0
- beq.s .End
- lea -1(a0,d0),a0
- move.b (a0),d0
- tst.b d0 ; No Dir name ?
- beq.s .End
- cmp.b #':',d0 ; Only device
- beq.s .End
- cmp.b #'/',d0 ; Path
- beq.s .End
- move.b #'/',-1(a1) ; Add a slash to full filename
- .End move.l rf_File(a2),a0 ; Copy filename
- move.l .FileName(a5),a1
- bsr StrCpy
- move.l rf_File(a2),a0 ; and concat it to full name
- move.l .CompleteName(a5),a1
- bsr StrCat
- move.w .GadgetNum(a5),d0
- ext.l d0
- tst.l d0
- beq.s .Canceled
- move.l .GadgetList(a5),a0
- move.l .Window(a5),a1
- move.l #286,d1
- move.l .CompleteName(a5),a2
- bsr SetStringGad
- moveq #1,d7
- .Canceled move.l MyAslRequest(pc),a0 ; Copy new position of filereq
- move.w rf_LeftEdge(a0),d0
- move.w rf_TopEdge(a0),d1
- ext.l d0
- ext.l d1
- move.l d0,FileReqLeft
- move.l d1,FileReqTop
- move.w rf_Width(a0),d0
- move.w rf_Height(a0),d1
- ext.l d0
- ext.l d1
- move.l d0,FileReqWidth
- move.l d1,FileReqHeight
- LNKLIB FreeFileRequest,_AslBase ; Free request
- NoLogFileName unlk a5
- move.l d7,d0
- rts
-
-
-
- **********************************************************************
- * This part removes all waiting msgs for a port *
- **********************************************************************
- KillMessages CARGS #0,Wnd.L,Port.L,Base.L
- movem.l a0/a1/a6,-(sp) ; Store pointers
- .Loop move.l Port(sp),a0 ; Get pointer to port
- CALLSYS GetMsg
- tst.l d0
- beq.s NoMoreMsgs
- move.l d0,a1 ; Reply msg
- DOLIB ReplyMsg
- bra .Loop
- NoMoreMsgs movem.l (sp)+,a0/a1/a6 ; Reget pointers
- rts
-
-
-
- **********************************************************************
- * This is the routine for handleing ARexx command *
- **********************************************************************
- HandleARexx bsr DisableBroker
- DoAllARexx move.l ARexxPort(pc),a0 ; Get ARexx msg
- CALLSYS GetMsg
- tst.l d0
- beq AllARexxDone
- move.l d0,MyARexxMsg
- move.l d0,a0
-
- move.l ACTION(a0),d0 ; Get action to be taken
- move.l d0,ARexxAction
- move.l ARG0(a0),ARexxCommand
-
- move.l #RC_OK,AResult1
- move.l #0,AResult2
-
- and.l #RXCOMM,d0 ; Is it a command ?
- beq ARexxCommDone
-
- move.l ARexxCommand(pc),a0 ; Check for activate command
- lea ActivateStr(pc),a1
- bsr CheckARexxComm
- tst.l d0
- bne.s ANoActivate
-
- bsr CheckABool
- tst.l d0
- blt ACommFail
- move.b d0,DoActivate
- move.l #ACTIGAD,d1
- bsr SetControlBox
- bra ARexxCommDone
-
- ANoActivate move.l ARexxCommand(pc),a0 ; Check for MouseMode command
- lea MouseStr(pc),a1
- bsr CheckARexxComm
- tst.l d0
- bne.s ANoMouseMode
-
- bsr CheckABool
- tst.l d0
- blt ACommFail
- move.b d0,MouseMode
- move.l #MODEGAD,d1
- bsr SetControlBox
- bra ARexxCommDone
-
- ANoMouseMode move.l ARexxCommand(pc),a0 ; Check for ShowClock command
- lea ShowCStr(pc),a1
- bsr CheckARexxComm
- tst.l d0
- bne.s ANoShowClock
-
- bsr CheckABool ; Check for flags (0/1)
- tst.l d0
- blt ACommFail
- move.b d0,ShowClock ; Save flags
- move.l #DISPLAYGAD,d1
- bsr SetControlBox
- bsr ClearTitleBar
- bsr SigTime
- tst.b ShowClock
- bne.s ANoWinClose
- bsr CloseClockWin
- ANoWinClose bra ARexxCommDone
-
-
- ANoShowClock move.l ARexxCommand(pc),a0 ; Activate ClockWindow ?
- lea ClockWStr(pc),a1
- bsr CheckARexxComm
- tst.l d0
- bne.s ANoClockWin
-
- bsr CheckABool
- tst.l d0
- blt ACommFail
- move.b d0,ClockWin
- move.l #WINDOWGAD,d1
- bsr SetControlBox
- bsr ClearTitleBar
- bsr SigTime
- bra ARexxCommDone
-
- ANoClockWin move.l ARexxCommand(pc),a0 ; Reposition clockwindow ?
- lea ClockPosStr(pc),a1
- bsr CheckARexxComm
- tst.l d0
- bne.s ANoWinPos
- move.l ReadBuffer(pc),a1
- bsr StrCpy
- bsr GetWinPos
- tst.l d0
- beq ACommFail
- lea ClockWinDef(pc),a0
- move.l WinLeftEdge(pc),d0 ; Store in NewWindow-Structure
- move.l WinTopEdge(pc),d1
- move.w d0,nw_LeftEdge(a0)
- move.w d1,nw_TopEdge(a0)
- tst.l ClockHandle ; Clockwindow open ?
- beq.s NoReposClockWin
- move.l ClockHandle(pc),a0
- cmp.w wd_LeftEdge(a0),d0
- bne.s .DoWinRepos
- cmp.w wd_TopEdge(a0),d1
- beq.s NoReposClockWin
- .DoWinRepos moveq #0,d2
- moveq #0,d3
- move.w wd_Width(a0),d2
- move.b wd_BorderTop(a0),d3
- LNKLIB ChangeWindowBox,_IntuitionBase ; Resize
- bsr ClockRemake
- NoReposClockWin bra ARexxCommDone
-
- ANoWinPos move.l ARexxCommand(pc),a0 ; Display date ?
- lea ShowDateStr(pc),a1
- bsr CheckARexxComm
- tst.l d0
- bne.s ANoShowDate
-
- bsr CheckABool
- tst.l d0
- blt ACommFail
- move.b d0,ShowDate
- move.l #DATEGAD,d1
- bsr SetControlBox
- bsr ClearTitleBar
- bsr SigTime
- bra ARexxCommDone
-
- ANoShowDate move.l ARexxCommand(pc),a0 ; Show day ?
- lea ShowDayStr(pc),a1
- bsr CheckARexxComm
- tst.l d0
- bne.s ANoShowDay
-
- bsr CheckABool
- tst.l d0
- blt ACommFail
- move.b d0,ShowDay
- move.l #DAYGAD,d1
- bsr SetControlBox
- bsr ClearTitleBar
- bsr SigTime
- bra ARexxCommDone
-
- ANoShowDay move.l ARexxCommand(pc),a0 ; Short day string ?
- lea ShortDayStr(pc),a1
- bsr CheckARexxComm
- tst.l d0
- bne.s ANoShortDay
-
- bsr CheckABool
- tst.l d0
- blt ACommFail
- move.b d0,ShortDay
- move.l #SHORTGAD,d1
- bsr SetControlBox
- bsr ClearTitleBar
- bsr SigTime
- bra ARexxCommDone
-
- ANoShortDay move.l ARexxCommand(pc),a0 ; Show seconds ?
- lea ShowSecsStr(pc),a1
- bsr CheckARexxComm
- tst.l d0
- bne.s ANoShowSecs
-
- bsr CheckABool
- tst.l d0
- blt ACommFail
- move.b d0,ShowSecs
- move.l #SECSGAD,d1
- bsr SetControlBox
- bsr ClearTitleBar
- bsr SigTime
- bra ARexxCommDone
-
- ANoShowSecs move.l ARexxCommand(pc),a0 ; Show american date ?
- lea AmiDateStr(pc),a1
- bsr CheckARexxComm
- tst.l d0
- bne.s ANoAmiDate
-
- bsr CheckABool
- tst.l d0
- blt ACommFail
- move.b d0,AmiDate
- move.l #AMIGAD,d1
- bsr SetControlBox
- bsr ClearTitleBar
- bsr SigTime
- bra ARexxCommDone
-
- ANoAmiDate move.l ARexxCommand(pc),a0 ; Change Control HotKey ?
- lea KeyStr,a1
- bsr CheckARexxComm
- tst.l d0
- bne.s ANoConKey
-
- move.l ReadBuffer,a1
- bsr StrCpy
- move.l #POPUPGAD,d7
- move.l WndHandle,a0
- lea ControlTitle,a1
- move.l PopUpFilter,a4
- lea PopUpKey,a5
- bsr RemakeHotKey
-
- ANoConKey move.l ARexxCommand(pc),a0 ; Change Page HotKey ?
- lea PageStr(pc),a1
- bsr CheckARexxComm
- tst.l d0
- bne.s ANoPageKey
-
- move.l ReadBuffer,a1
- bsr StrCpy
- move.l #PAGEGAD,d7
- sub.l a0,a0
- sub.l a1,a1
- move.l PageFilter,a4
- lea PageHotKey,a5
- bsr RemakeHotKey
- bra ARexxCommDone
-
- ANoPageKey move.l ARexxCommand(pc),a0 ; Change display page ?
- lea PageNumStr(pc),a1
- bsr CheckARexxComm
- tst.l d0
- bne.s ANoPageNum
-
- move.l PageNum(pc),d7
- move.l a0,d1
- move.l #PageNum,d2
- LNKLIB StrToLong,_DOSBase
- tst.l d0
- ble.s .Error
- tst.l PageNum
- blt.s .Error
- cmp.l #MAXPAGES,PageNum
- blt.s .End
- .Error move.l #0,PageNum
- .End bsr ClearTitleBar
- bsr SigTime
- bra ARexxCommDone
-
- ANoPageNum move.l ARexxCommand(pc),a0 ; Activate alarm
- lea AlarmStr(pc),a1
- bsr CheckARexxComm
- tst.l d0
- bne.s ANoAlarm
-
- bsr CheckABool
- tst.l d0
- blt ACommFail
- move.b d0,DoAlarm
- move.l #ALARMMODEGAD,d1
- bsr SetControlBox
- bra ARexxCommDone
-
- ANoAlarm move.l ARexxCommand(pc),a0 ; Set alarm time ?
- lea AlarmTimeStr(pc),a1
- bsr CheckARexxComm
- tst.l d0
- bne.s ANoAlarmTime
- move.l ReadBuffer(pc),a1
- bsr StrCpy
- move.l ReadBuffer(pc),a0
- bsr StrLen
- cmp.l #8,d0 ; StringLen > 8
- bgt ACommFail ; -> error
- bsr CheckAlarmTime
- bra ARexxCommDone
-
- ANoAlarmTime move.l ARexxCommand(pc),a0 ; Enable/Disable env vars ?
- lea SetEnvStr(pc),a1
- bsr CheckARexxComm
- tst.l d0
- bne.s ANoSetEnv
-
- bsr CheckABool ; Bool flag ???
- tst.l d0
- blt ACommFail
- move.b d0,SetEnv
- move.l #ENVGAD,d1
- bsr SetControlBox
- tst.b SetEnv
- bne.s .NoDel
- bsr DeleteEnvs ; Delete vars if setenv is off
- .NoDel bsr SigTime ; Set the time
- bra ARexxCommDone
-
- ANoSetEnv move.l ARexxCommand(pc),a0 ; New screenblank time ?
- lea ScreenTStr(pc),a1
- bsr CheckARexxComm
- tst.l d0
- bne.s ANoScreenTime
- move.l ScreenTime(pc),d7
- move.l ReadBuffer(pc),a1
- bsr StrCpy
- move.l ReadBuffer,d1
- move.l #ScreenTime,d2
- LNKLIB StrToLong,_DOSBase ; Get new time
- tst.l ScreenTime ; negative ?
- ble.s .Error ; disable blank
- tst.l d0
- bge.s .GoOn
- .Error move.l d7,ScreenTime
- .GoOn move.l #SCREENGAD,d0
- lea ControlGads,a0
- move.l WndHandle,a1
- moveq #3,d1
- move.l ScreenTime,d2 ; Display new time
- bsr SetIntegerGad
- move.b #1,TimeReset
- bra ARexxCommDone
-
- ANoScreenTime move.l ARexxCommand(pc),a0 ; New mouseblank time ?
- lea MouseTStr(pc),a1
- bsr CheckARexxComm
- tst.l d0
- bne.s ANoMouseTime
- move.l MouseTime(pc),d7
- move.l ReadBuffer(pc),a1
- bsr StrCpy
- move.l ReadBuffer,d1
- move.l #MouseTime,d2
- LNKLIB StrToLong,_DOSBase ; Get new time
- tst.l MouseTime ; Negative -> disable blank
- ble.s .Error
- tst.l d0
- bge.s .GoOn
- .Error move.l d7,MouseTime
- .GoOn move.l #MOUSEGAD,d0
- lea ControlGads,a0
- move.l WndHandle,a1
- moveq #3,d1
- move.l MouseTime,d2
- bsr SetIntegerGad
- move.b #1,TimeReset
- bra ARexxCommDone
-
- ANoMouseTime move.l ARexxCommand(pc),a0
- lea ClickVStr(pc),a1 ; Remake click volume ?
- bsr CheckARexxComm
- tst.l d0
- bne.s ANoClickVol
- move.l ClickVol(pc),d7
- move.l ReadBuffer(pc),a1
- bsr StrCpy
- move.l ReadBuffer,d1
- move.l #ClickVol,d2
- LNKLIB StrToLong,_DOSBase
- tst.l d0
- ble.s .Error
- cmp.l #64,ClickVol
- bgt.s .Error
- tst.l ClickVol
- bge.s .GoOn
- .Error move.l d7,ClickVol
- .GoOn move.l #VOLGAD,d0
- lea ControlGads,a0
- move.l WndHandle,a1
- moveq #2,d1
- move.l ClickVol,d2
- bsr SetIntegerGad
- bra ARexxCommDone
-
- ANoClickVol move.l ARexxCommand(pc),a0 ; Remake cycle qualifier ?
- lea CycleStr(pc),a1
- bsr CheckARexxComm
- tst.l d0
- bne.s ANoCycleQual
- move.l ReadBuffer(pc),a1
- bsr StrCpy
- move.l PopQualNum(pc),d7 ; Get old number
- move.l ReadBuffer,d1
- move.l #PopQualNum,d2
- LNKLIB StrToLong,_DOSBase ; Get number
- tst.l d0
- blt.s .Error
- tst.l PopQualNum
- blt.s .Error
- cmp.l #POPQUALCNT,PopQualNum
- blt.s .End1
- .Error move.l d7,PopQualNum ; Remake to old value
- .End1 move.l #FRONTGAD,d0
- move.l PopQualNum(pc),d1
- lea ControlGads,a0
- move.l WndHandle,a1
- lea PopQualList,a2
- bsr SetCycleGad
- bra ARexxCommDone
-
- ANoCycleQual move.l ARexxCommand(pc),a0 ; Enable/Disable Window-Cycling ?
- lea CycleWStr(pc),a1
- bsr CheckARexxComm
- tst.l d0
- bne.s ANoCycleWin
-
- bsr CheckABool
- tst.l d0
- blt ACommFail
- move.b d0,CycleWin
- move.l #CYCLEGAD,d1
- bsr SetControlBox
- bra ARexxCommDone
-
- ANoCycleWin move.l ARexxCommand(pc),a0 ; Enable/Disable click ?
- lea ClickStr(pc),a1
- bsr CheckARexxComm
- tst.l d0
- bne.s ANoClickOff
-
- bsr CheckABool
- tst.l d0
- blt ACommFail
- move.b d0,KeyClick
- move.l #CLICKGAD,d1
- bsr SetControlBox
- bra ARexxCommDone
-
- ANoClickOff move.l ARexxCommand(pc),a0 ; Enable/Disable phone logs ?
- lea LogCallStr(pc),a1
- bsr CheckARexxComm
- tst.l d0
- bne.s ANoLogCalls
-
- bsr CheckABool
- tst.l d0
- blt ACommFail
- move.b d0,LogCalls ; Set mode
- move.l #LOGCALLGAD,d1
- lea PrefsGads,a0
- move.l PrefsHandle,a1
- bsr SetCheckBox
- bra ARexxCommDone
-
- ANoLogCalls move.l ARexxCommand(pc),a0 ; Reposition bill window ?
- lea BillPosStr(pc),a1
- bsr CheckARexxComm
- tst.l d0
- bne.s ANoBillWinPos
-
- move.l ReadBuffer(pc),a1
- bsr StrCpy
-
- bsr GetWinPos
- tst.l d0
- beq ACommFail
- lea BillWinDef(pc),a0
- move.l WinLeftEdge(pc),d0 ; Store in NewWindow-Structure
- move.l WinTopEdge(pc),d1
- move.w d0,nw_LeftEdge(a0)
- move.w d1,nw_TopEdge(a0)
- tst.l BillHandle ; BillWindow open ?
- beq.s .End
- move.l BillHandle(pc),a0
- cmp.w wd_LeftEdge(a0),d0
- bne.s .DoWinRepos
- cmp.w wd_TopEdge(a0),d1
- beq.s .End
- .DoWinRepos moveq #0,d2
- moveq #0,d3
- move.w wd_Width(a0),d2
- move.w wd_Height(a0),d3
- LNKLIB ChangeWindowBox,_IntuitionBase ; Resize
- .End bra ARexxCommDone
-
- ANoBillWinPos move.l ARexxCommand(pc),a0
- lea BillWinStr(pc),a1 ; Popup billwindow on carrier detect ?
- bsr CheckARexxComm
- tst.l d0
- bne.s ANoBillPopUp
-
- bsr CheckABool
- tst.l d0
- blt ACommFail
- move.b d0,BillPopUp ; set new state
- move.l #BILLPOPGAD,d1
- lea PrefsGads,a0
- move.l PrefsHandle,a1
- bsr SetCheckBox
- bra ARexxCommDone
-
- ANoBillPopUp move.l ARexxCommand(pc),a0 ; Clear log file ?
- lea AClearLogStr(pc),a1
- bsr CheckARexxComm
- tst.l d0
- bne.s ANoClearLog
- move.l #LogFileName,d1
- LNKLIB DeleteFile,_DOSBase
- bra ARexxCommDone
-
- ANoClearLog move.l ARexxCommand(pc),a0 ; Reposition Prefs window ?
- lea PrefsPosStr(pc),a1
- bsr CheckARexxComm
- tst.l d0
- bne.s ANoPrefsPos
-
- move.l ReadBuffer(pc),a1
- bsr StrCpy
-
- bsr GetWinPos
- tst.l d0
- beq ACommFail
- lea BillWinDef(pc),a0
- move.l WinLeftEdge(pc),d0 ; Store in NewWindow-Structure
- move.l WinTopEdge(pc),d1
- move.w d0,nw_LeftEdge(a0)
- move.w d1,nw_TopEdge(a0)
- tst.l PrefsHandle ; PrefsWindow open ?
- beq.s .End
- move.l PrefsHandle(pc),a0
- cmp.w wd_LeftEdge(a0),d0
- bne.s .DoWinRepos
- cmp.w wd_TopEdge(a0),d1
- beq.s .End
- .DoWinRepos moveq #0,d2
- moveq #0,d3
- move.w wd_Width(a0),d2
- move.w wd_Height(a0),d3
- LNKLIB ChangeWindowBox,_IntuitionBase ; Resize
- .End bra ARexxCommDone
-
- ANoPrefsPos move.l ARexxCommand(pc),a0 ; Enable/Disable WB PopUp
- lea WBFrontStr(pc),a1
- bsr CheckARexxComm
- tst.l d0
- bne.s ANoWBFront
-
- bsr CheckABool
- tst.l d0
- blt ACommFail
- move.b d0,WBFront ; set new state
- move.l #WBFRONTGAD,d1
- bsr SetControlBox
- bra ARexxCommDone
-
- ANoWBFront move.l ARexxCommand(pc),a0 ; Enable/Disable LeftyMouse ?
- lea LeftyStr(pc),a1
- bsr CheckARexxComm
- tst.l d0
- bne.s ANoLeftyMouse
-
- bsr CheckABool
- tst.l d0
- blt ACommFail
- move.b d0,LeftyMouse
- move.l #LEFTYGAD,d1
- bsr SetControlBox
- bra ARexxCommDone
-
- ANoLeftyMouse move.l ARexxCommand(pc),a0 ; Enable/Disable ESC-Close ?
- lea ESCCloseStr(pc),a1
- bsr CheckARexxComm
- tst.l d0
- bne.s ANoESCClose
-
- bsr CheckABool
- tst.l d0
- blt ACommFail
- move.b d0,ESCClose
- move.l #WESCGAD,d1
- bsr SetControlBox
- bra ARexxCommDone
-
- ANoESCClose move.l ARexxCommand(pc),a0 ; Remake cycle qualifier ?
- lea ESCQualStr(pc),a1
- bsr CheckARexxComm
- tst.l d0
- bne.s ANoESCQual
- move.l ReadBuffer(pc),a1
- bsr StrCpy
- move.l ESCQualNum(pc),d7 ; Get old number
- move.l ReadBuffer,d1
- move.l #ESCQualNum,d2
- LNKLIB StrToLong,_DOSBase ; Get number
- tst.l d0
- blt.s .Error
- tst.l ESCQualNum
- blt.s .Error
- cmp.l #ESCQUALCNT,ESCQualNum
- blt.s .End1
- .Error move.l d7,ESCQualNum ; Remake to old value
- .End1 move.l #ESCQUALGAD,d0
- move.l ESCQualNum(pc),d1
- lea ControlGads,a0
- move.l WndHandle,a1
- lea ESCQualList,a2
- bsr SetCycleGad
- bra ARexxCommDone
-
- ANoESCQual move.l ARexxCommand(pc),a0 ; Enable/Disable "Map Umlauts ?"
- lea UmlautOnStr(pc),a1
- bsr CheckARexxComm
- tst.l d0
- bne.s ANoUmlautOn
-
- bsr CheckABool
- tst.l d0
- blt ACommFail
- move.b d0,MapUmlaut
- move.l #UMLAUTGAD,d1
- bsr SetControlBox
- bra ARexxCommDone
-
- ANoUmlautOn move.l ARexxCommand(pc),a0 ; Enable broker ?
- lea EnableStr(pc),a1
- bsr CheckARexxComm
- tst.l d0
- bne.s ANoEnable
- move.b #0,Disabled
- move.b #1,TimeReset
- bsr EnableBroker
- bra ARexxCommDone
-
- ANoEnable move.l ARexxCommand(pc),a0 ; Disable broker ?
- lea DisableStr(pc),a1
- bsr CheckARexxComm
- tst.l d0
- bne.s ANoDisable
- bsr DisableBroker
- bsr OnScreen
- bsr OnMouse
- move.b #1,Disabled
- bra ARexxCommDone
-
- ANoDisable move.l ARexxCommand(pc),a0 ; Hide window ?
- lea HideStr(pc),a1
- bsr CheckARexxComm
- tst.l d0
- bne.s ANoHide
- bsr CloseOurWindow
- bra ARexxCommDone
-
- ANoHide move.l ARexxCommand(pc),a0 ; PopUp window ?
- lea APopUpStr(pc),a1
- bsr CheckARexxComm
- tst.l d0
- bne.s ANoPopUp
- bsr OpenOurWindow
- bra ARexxCommDone
-
- ANoPopUp move.l ARexxCommand(pc),a0 ; Return a status ?
- lea AStatusStr(pc),a1
- bsr CheckARexxComm
- tst.l d0
- bne.s ANoStatus
- bsr ReturnStatus
- tst.l d0
- beq ACommFail
- bra ARexxCommDone
-
- ANoStatus move.l ARexxCommand(pc),a0 ; Do a revision ?
- lea AReviseStr(pc),a1
- bsr CheckARexxComm
- tst.l d0
- bne ANoRevise
- move.l ReadBuffer(pc),a1
- bsr StrCpy
- move.l ReadBuffer(pc),a1
- move.l a1,a0
- .Loop tst.b (a1) ; Get filename
- beq ACommFail
- cmp.b #' ',(a1)
- beq.s GotFileName
- cmp.b #'"',(a1)
- beq.s GotFileName
- cmp.b #"'",(a1)
- beq.s GotFileName
- addq.l #1,a1
- bra .Loop
- GotFileName move.b #0,(a1)+
- move.l a1,a4
- lea FileName(pc),a1 ; Copy filename
- bsr StrCpy
- move.l a4,a0
- bsr SkipBlanks
- move.l a0,a4
- lea AReviseCStr(pc),a1 ; C or ASM revision ?
- bsr CheckARexxComm
- tst.l d0
- bne NoCMode
- move.l #CHeader,RevHeader ; Set C strings
- move.l #CLineNL,RevLineNL
- move.l #CLine,RevLine
- move.l #CCopyRight,RevCompany
- move.l #CFile,RevFile
- move.l #CCreatedOn,RevCreatedOn
- move.l #CAuthor,RevAuthor
- move.l #CRevision,RevRevision
- move.l #CPurpose,RevPurpose
- move.l #CLog,RevLog
- move.l #CLogInit,RevLogInit
- move.l #CEnd,RevEnd
- move.l #CRevDefine1,RevDefine
- bra GotMode
- NoCMode move.l a4,a0
- lea AReviseAsmStr(pc),a1
- bsr CheckARexxComm
- tst.l d0
- bne NoAsmMode
- move.l #AsmHeader,RevHeader ; Set ASM strings
- move.l #AsmLineNL,RevLineNL
- move.l #AsmLine,RevLine
- move.l #AsmCopyRight,RevCompany
- move.l #AsmFile,RevFile
- move.l #AsmCreatedOn,RevCreatedOn
- move.l #AsmAuthor,RevAuthor
- move.l #AsmRevision,RevRevision
- move.l #AsmPurpose,RevPurpose
- move.l #AsmLog,RevLog
- move.l #AsmLogInit,RevLogInit
- move.l #AsmEnd,RevEnd
- move.l #AsmRevDefine1,RevDefine
- bra GotMode
- NoAsmMode move.l a4,a0
- lea ARevisePasStr(pc),a1
- bsr CheckARexxComm
- tst.l d0
- bne ACommFail
- move.l #PASHeader,RevHeader ; Set PAS strings
- move.l #CLineNL,RevLineNL
- move.l #CLine,RevLine
- move.l #CCopyRight,RevCompany
- move.l #CFile,RevFile
- move.l #CCreatedOn,RevCreatedOn
- move.l #CAuthor,RevAuthor
- move.l #CRevision,RevRevision
- move.l #CPurpose,RevPurpose
- move.l #CLog,RevLog
- move.l #PASLogInit,RevLogInit
- move.l #PASEnd,RevEnd
- move.l #PASRevDefine1,RevDefine
- GotMode bsr DoRevision
- tst.l d0
- beq ACommFail
- bra ARexxCommDone
-
- ANoRevise move.l ARexxCommand,a0 ; Load new prefs ?
- lea ALoadPrefsStr,a1
- bsr CheckARexxComm
- tst.l d0
- bne.s ANoLoadPrefs
- move.l a0,a4
- lea PrefsFileName,a0
- move.l ReadBuffer,a1
- bsr StrCpy
- move.l a4,a0
- lea PrefsFileName,a1
- bsr StrCpy
- bsr LoadPrefs
- move.l ReadBuffer,a0
- lea PrefsFileName,a1
- bsr StrCpy
- bra ARexxCommDone
-
- ANoLoadPrefs move.l ARexxCommand,a0 ; Save prefs to file ?
- lea ASavePrefsStr,a1
- bsr CheckARexxComm
- tst.l d0
- bne.s ANoSavePrefs
- move.l a0,a4
- lea PrefsFileName,a0
- move.l ReadBuffer,a1
- bsr StrCpy
- move.l a4,a0
- lea PrefsFileName,a1
- bsr StrCpy
- bsr SavePrefs
- move.l ReadBuffer,a0
- lea PrefsFileName,a1
- bsr StrCpy
- bra ARexxCommDone
-
- ANoSavePrefs move.l ARexxCommand(pc),a0 ; Change Bill HotKey ?
- lea BillKeyStr(pc),a1
- bsr CheckARexxComm
- tst.l d0
- bne.s ANoBillKey
-
- move.l ReadBuffer,a1
- bsr StrCpy
- move.l #BILLKEYGAD,d7
- move.l BillHandle,a0
- lea BillTitle,a1
- move.l BillFilter,a4
- lea BillHotKey,a5
- bsr RemakeHotKey
- bra ARexxCommDone
-
- ANoBillKey move.l ARexxCommand(pc),a0 ; Change Prefs HotKey ?
- lea PrefsKeyStr(pc),a1
- bsr CheckARexxComm
- tst.l d0
- bne.s ANoPrefsKey
-
- move.l ReadBuffer,a1
- bsr StrCpy
- move.l #PREFSKEYGAD,d7
- move.l PrefsHandle,a0
- lea PrefsTitle,a1
- move.l PrefsFilter,a4
- lea PrefsHotKey,a5
- bsr RemakeHotKey
- bra ARexxCommDone
-
- ANoPrefsKey move.l ARexxCommand(pc),a0 ; Change HotKeys HotKey ?
- lea HotKeyStr(pc),a1
- bsr CheckARexxComm
- tst.l d0
- bne.s ANoHotKey
-
- move.l ReadBuffer,a1
- bsr StrCpy
- move.l #HOTKEYGAD,d7
- move.l HotKeyHandle,a0
- lea HotWinTitle,a1
- move.l HotKeyFilter,a4
- lea HotWinHotKey,a5
- bsr RemakeHotKey
- bra ARexxCommDone
-
- ANoHotKey move.l ARexxCommand(pc),a0 ; Change Shell HotKey ?
- lea ShellKeyStr(pc),a1
- bsr CheckARexxComm
- tst.l d0
- bne.s ANoShellKey
-
- move.l ReadBuffer,a1
- bsr StrCpy
- move.l #SHELLGAD,d7
- sub.l a0,a0
- sub.l a1,a1
- move.l ShellFilter,a4
- lea ShellHotKey,a5
- bsr RemakeHotKey
- bra ARexxCommDone
-
- ANoShellKey move.l ARexxCommand(pc),a0 ; Change Umlaut HotKey ?
- lea UmlautKeyStr(pc),a1
- bsr CheckARexxComm
- tst.l d0
- bne.s ANoUmlautKey
-
- move.l ReadBuffer,a1
- bsr StrCpy
- move.l #UMLAUTKEYGAD,d7
- sub.l a0,a0
- sub.l a1,a1
- move.l UmlautFilter,a4
- lea UmlautHotKey,a5
- bsr RemakeHotKey
- bra.s ARexxCommDone
-
- ANoUmlautKey move.l ARexxCommand(pc),a0 ; Change Shell command ?
- lea ShellCommStr(pc),a1
- bsr CheckARexxComm
- tst.l d0
- bne.s ANoShellComm
-
- lea SystemParam,a1
- bsr StrCpy
- move.l #USERSHELLGAD,d0
- lea ControlGads,a0
- move.l WndHandle,a1
- move.l #64,d1
- lea SystemParam,a2
- bsr SetStringGad
- bra.s ARexxCommDone
-
- ANoShellComm bra.s ARexxCommDone
-
- ACommFail move.l #RC_FAIL,AResult1 ; Command failed
- move.l #0,AResult2
- ARexxCommDone move.l MyARexxMsg(pc),a1
- move.l AResult1(pc),rm_Result1(a1)
- move.l AResult2(pc),rm_Result2(a1)
- CALLSYS ReplyMsg
- bra DoAllARexx
- AllARexxDone bsr EnableBroker
- rts
-
-
-
- **********************************************************************
- * Return a status value to the calling program *
- **********************************************************************
- ReturnStatus move.l ARexxAction(pc),d0 ; Result expected ?
- and.l #RXFF_RESULT,d0
- beq StatError ; Nope -> go on
- move.l ReadBuffer(pc),a1
- bsr StrCpy
- move.l ReadBuffer,d1
- move.l #StatusNum,d2
- LNKLIB StrToLong,_DOSBase ; Convert statusnumber to long
- tst.l d0
- ble StatError
- move.l StatusNum(pc),d0 ; Check if status num is ok
- cmp.l #StatusCount,d0
- bgt StatError
- subq.l #1,d0
- asl.l #3,d0
- lea ARexxStatus(pc),a0
- lea 0(a0,d0),a2 ; Get address for stat info
-
- cmp.l #RESULTCLOCKPOS,(a2) ; Give position of clockwindow ?
- bne.s NoClockStatus
- lea ClockWinDef(pc),a0
- move.w nw_LeftEdge(a0),ResultWinData ; Store position
- move.w nw_TopEdge(a0),ResultWinData+2
- lea ResultWinFormat(pc),a0
- lea ResultWinData(pc),a1
- bra MakeResultStr
-
- NoClockStatus cmp.l #RESULTTIME,(a2) ; Return alarm time ?
- bne.s NoTimeStatus
- lea AlarmStartVal(pc),a0
- move.l ReadBuffer(pc),a1
- bsr StrCpy
- bra ResultStrDone
-
- NoTimeStatus cmp.l #RESULTPOP,(a2) ; Return if poped up ?
- bne.s NoPopedUpStatus
- tst.l WndHandle
- beq.s .False
- lea TrueStr(pc),a0
- bra.s .DoPop
- .False lea FalseStr(pc),a0
- .DoPop move.l ReadBuffer(pc),a1
- bsr StrCpy
- bra ResultStrDone
-
- NoPopedUpStatus cmp.l #RESULTBILLPOS,(a2) ; Give position of billwindow ?
- bne.s NoBillStatus
- lea BillWinDef(pc),a0
- move.w nw_LeftEdge(a0),ResultWinData ; Store position
- move.w nw_TopEdge(a0),ResultWinData+2
- lea ResultWinFormat(pc),a0
- lea ResultWinData(pc),a1
- bra.s MakeResultStr
-
- NoBillStatus cmp.l #RESULTPREFSPOS,(a2) ; Give position of prefswindow ?
- bne.s NoPrefsStatus
- lea PrefsWinDef(pc),a0
- move.w nw_LeftEdge(a0),ResultWinData ; Store position
- move.w nw_TopEdge(a0),ResultWinData+2
- lea ResultWinFormat(pc),a0
- lea ResultWinData(pc),a1
- bra.s MakeResultStr
-
- NoPrefsStatus moveq #0,d0
- move.l 4(a2),a3
- lea ResultFormat(pc),a0
- lea ResultData(pc),a1
- cmp.l #RESULTBYTE,(a2) ; Is stored as byte ?
- bne.s NoByteResult
- move.b (a3),d0
- move.l d0,ResultData
- bra.s MakeResultStr
-
- NoByteResult cmp.l #RESULTWORD,(a2) ; ... as word ?
- bne.s NoWordResult
- move.w (a3),d0
- move.l d0,ResultData
- bra.s MakeResultStr
-
- NoWordResult cmp.l #RESULTLONG,(a2) ; ... as long ?
- bne.s NoLongResult
- move.l (a3),d0
- move.l d0,ResultData
- bra.s MakeResultStr
-
- NoLongResult cmp.l #RESULTSTRING,(a2) ; Return a string ?
- bne.s StatError
- move.l a3,a0
- move.l ReadBuffer(pc),a1
- bsr StrCpy
- bra.s ResultStrDone
-
- MakeResultStr lea PutChProc(pc),a2 ; Convert string
- move.l ReadBuffer(pc),a3
- CALLSYS RawDoFmt
-
- ResultStrDone move.l ReadBuffer(pc),a0
- bsr StrLen
- LNKLIB CreateArgstring,_RexxSysBase ; Create argstring and store it
- tst.l d0 ; If an error occured indicate it
- beq.s StatError
- move.l d0,AResult2
- EndStatus moveq #1,d0
- rts
- StatError moveq #0,d0
- rts
-
-
-
- **********************************************************************
- * Checks, if we know the ARexx command *
- **********************************************************************
- CheckARexxComm moveq #0,d0
- moveq #0,d1
- .Loop move.b (a0)+,d0 ; Get chars from buffer
- move.b (a1)+,d1
- or.b #$20,d0 ; Make it case in-sensitive
- or.b #$20,d1
- cmp.b #$20,d0 ; Argstring end ?
- beq.s .StringOk
- cmp.b d0,d1
- beq.s .Loop
- .StringFalse moveq #1,d0 ; Error flag
- rts
- .StringOk cmp.b #$20,d1 ; Our string also ending ?
- bne .StringFalse ; Nope -> go on
- bsr SkipBlanks
- moveq #0,d0 ; Command OK
- rts
-
-
- **********************************************************************
- * Checks for flags (0/1) in an ARexx-Command *
- **********************************************************************
- CheckABool cmp.b #'0',(a0)
- beq.s .False
- cmp.b #'1',(a0)
- beq.s .True
- moveq #-1,d0
- rts
- .False moveq #0,d0
- rts
- .True moveq #1,d0
- rts
-
-
- **********************************************************************
- * Enter a log message and revise the text *
- **********************************************************************
- DoRevision move.l WndHandle,a0
- bsr SetBusy
- move.l PrefsHandle,a0
- bsr SetBusy
-
- move.l #0,OurLock
-
- lea FileName(pc),a0
- .LoopDev cmp.b #':',(a0) ; Find out whether filename
- beq.s .GotDev ; is given with complete path
- tst.b (a0)
- beq.s .NoDev
- addq.l #1,a0
- bra.s .LoopDev
-
- .NoDev move.l MyARexxMsg(pc),a0 ; Lock to current Dir of
- move.l MN_REPLYPORT(a0),a0 ; ARexx. Normaly the workdirectory
- move.l MP_SIGTASK(a0),a0 ; your editor is running on.
- move.l pr_CurrentDir(a0),d1 ; If a path is specified
- move.l #0,EasyArg ; for this version skip description
- LNKLIB DupLock,_DOSBase
- move.l d0,OurLock
- tst.l d0
- beq NoRevision
- move.l d0,d1
- DOLIB CurrentDir
- move.l d0,PastLock
- tst.l d0
- beq NoRevision
-
- .GotDev bsr CheckRevision ; Check if Revision already there
- tst.l d7
- blt NoRevision
-
- link a5,#-4
- bsr LockScreen
- tst.l d0
- beq .LogWinErr
-
- move.l -4(a5),a0 ; Get visual info for screen
- sub.l a1,a1
- LNKLIB GetVisualInfoA,_GadToolsBase
- move.l d0,LogVisInfo
- tst.l d0
- beq .LogWinErr
- lea DummyNewGadget(pc),a0 ; Store visual info in newgadget
- move.l d0,gng_VisualInfo(a0)
-
- move.l -4(a5),a0 ; Pop Up WBench screen
- LNKLIB ScreenToFront,_IntuitionBase
-
- lea LogWinDef(pc),a0 ; Try to open window
- move.l #LOGWINWIDTH,WinWidth
- move.l #LOGWINHEIGHT,WinHeight
- move.l #LOGWINIDCMP,WinIDCMP
- move.l #LOGWINFLAGS,WinFlags
- move.l #0,DoMenuHelp
- lea WindowTags(pc),a1
- DOLIB OpenWindowTagList
- move.l d0,LogHandle
- tst.l d0
- beq .LogWinErr
- bsr UnlockScreen
-
- lea LogMenuDef,a0 ; Create menu strip
- sub.l a1,a1 ; No tags
- LNKLIB CreateMenusA,_GadToolsBase
- move.l d0,LogMenu
- tst.l d0
- beq .LogWinErr
-
- move.l LogMenu(pc),a0 ; Do the layout on window
- move.l LogVisInfo(pc),a1
- sub.l a2,a2
- DOLIB LayoutMenusA
- tst.l d0
- beq .LogWinErr
-
- lea LogGadget(pc),a0 ; Create context gadget
- LNKLIB CreateContext,_GadToolsBase
- move.l d0,ThisGadget
- tst.l d0
- beq .LogWinErr
-
- move.l LogHandle(pc),a0
- moveq #0,d5
- move.b wd_BorderTop(a0),d5 ; Get height of border of window
-
- move.w #1,GadNum ; Reset gadget ID
-
- move.l #0,StringConts
- move.l #75,StrMax
- moveq #5,d7 ; Start height
- moveq #4,d6
- lea LogGads,a4
- .Loop lea DummyNewGadget(pc),a1
- move.w #LOGSGADWIDTH,gng_Width(a1)
- move.w #INTERWIDTH,gng_LeftEdge(a1)
- move.l d5,d1
- add.w d7,d1 ; Make Top Edge of gadget
- move.w d1,gng_TopEdge(a1)
- move.l #0,gng_Flags(a1)
- move.l #STRING_KIND,d0 ; Create string gadgets
- move.l ThisGadget(pc),a0
- lea StringTags(pc),a2
- DOLIB CreateGadgetA
- tst.l d0
- beq .LogWinErr
- move.l d0,(a4)+
- move.l d0,ThisGadget
- addq.w #1,GadNum
- add.l #13,d7
- dbf d6,.Loop
-
- lea DummyNewGadget(pc),a1 ; Create OK gadget
- move.w #GADWIDTH,gng_Width(a1)
- move.w #INTERWIDTH,gng_LeftEdge(a1)
- move.l d5,d1
- add.w d7,d1
- move.w d1,gng_TopEdge(a1)
- move.l #LogOkText,gng_GadgetText(a1)
- move.l #PLACETEXT_IN,gng_Flags(a1)
- move.l #BUTTON_KIND,d0
- move.l ThisGadget(pc),a0
- lea ButtonTags(pc),a2
- DOLIB CreateGadgetA
- tst.l d0
- beq .LogWinErr
- move.l d0,(a4)+
- move.l d0,ThisGadget
- addq.w #1,GadNum
-
- lea DummyNewGadget(pc),a1 ; Create CANCEL gadget
- move.w #(LOGWINWIDTH-GADWIDTH-INTERWIDTH+6),gng_LeftEdge(a1)
- move.l #LogCancelText,gng_GadgetText(a1)
- move.l #BUTTON_KIND,d0
- move.l ThisGadget(pc),a0
- lea ButtonTags(pc),a2
- DOLIB CreateGadgetA
- tst.l d0
- beq .LogWinErr
- move.l d0,(a4)+
- move.l d0,ThisGadget
- addq.w #1,GadNum
-
- move.l #0,IntConts ; Create major revision
- move.l #2,IntMax
- lea DummyNewGadget(pc),a1
- move.w #275,gng_LeftEdge(a1)
- move.w #LOGINTWIDTH,gng_Width(a1)
- move.l #LogRevText,gng_GadgetText(a1)
- move.l #PLACETEXT_LEFT,gng_Flags(a1)
- move.l #INTEGER_KIND,d0
- move.l ThisGadget(pc),a0
- lea IntegerTags(pc),a2
- DOLIB CreateGadgetA
- tst.l d0
- beq .LogWinErr
- move.l d0,(a4)+
- move.l d0,ThisGadget
- addq.w #1,GadNum
-
- lea DummyNewGadget(pc),a1 ; Create minor revision
- move.w #330,gng_LeftEdge(a1)
- move.l #LogPointText,gng_GadgetText(a1)
- move.l #PLACETEXT_LEFT,gng_Flags(a1)
- move.l #INTEGER_KIND,d0
- move.l ThisGadget(pc),a0
- lea IntegerTags(pc),a2
- DOLIB CreateGadgetA
- tst.l d0
- beq.s .LogWinErr
- move.l d0,(a4)+
- move.l d0,ThisGadget
-
- move.l LogHandle(pc),a0 ; Add gadgets to list
- move.l LogGadget(pc),a1
- move.l #-1,d0
- move.l #-1,d1
- sub.l a2,a2
- LNKLIB AddGList,_IntuitionBase
-
- move.l LogGadget(pc),a0 ; Let`s display em
- move.l LogHandle(pc),a1
- sub.l a2,a2
- moveq #-1,d0
- DOLIB RefreshGList
-
- move.l LogHandle(pc),a0 ; Append menu to window
- move.l LogMenu(pc),a1
- LNKLIB SetMenuStrip,_IntuitionBase
-
- bsr UnlockScreen
- unlk a5
- bra.s .GotLogWin
- .LogWinErr bsr UnlockScreen
- unlk a5
- bra NoLogWin
-
- .GotLogWin lea PurposeMsg(pc),a0 ; Clear old purpose
- lea LogMsg(pc),a1 ; and log messages
- move.w #(77*5)-1,d7
- .Loop1 move.b #0,(a0)+
- move.b #0,(a1)+
- dbf d7,.Loop1
-
- tst.b OnlyLog ; Enter a new LogMessage ?
- bne.s DoOnlyLog
- move.l LogHandle(pc),a0 ; Set window title for purpose
- lea PurposeWinTitle(pc),a1
- move.l #-1,a2
- DOLIB SetWindowTitles
- bsr CheckRevInput
- cmp.b #2,LogInputEnd
- beq NoErrorFound
- lea PurposeMsg(pc),a3
- bsr CopyMessage ; Copy entered message
- bra.s PurpDone
-
- DoOnlyLog move.l LogHandle(pc),a0 ; Change to log title
- lea LogWinTitle(pc),a1
- move.l #-1,a2
- DOLIB SetWindowTitles
- bsr CheckRevInput
- cmp.b #2,LogInputEnd
- beq NoErrorFound
- lea LogMsg(pc),a3
- bsr CopyMessage ; Copy entered message
-
- PurpDone bsr CloseLogWin ; Close input-window
-
- move.l #Author,RevAuthorDat ; Set strings to defaults
- move.l #Company,RevCompanyDat
-
- move.l #AuthorString,d1 ; Try to get Author env
- move.l #Author,d2
- move.l #128,d3
- move.l #GVF_GLOBAL_ONLY,d4
- LNKLIB GetVar,_DOSBase
- tst.l d0
- bgt.s GotAuthor
- move.l #DefaultName,RevAuthorDat
-
- GotAuthor move.l #CompanyString,d1 ; Try to get company env
- move.l #Company,d2
- move.l #128,d3
- move.l #GVF_GLOBAL_ONLY,d4
- LNKLIB GetVar,_DOSBase
- tst.l d0
- bgt.s GotCompany
- move.l #DefaultName,RevCompanyDat
-
- GotCompany move.l #8,d0
- lea LogGads,a0
- bsr GetGadgetPtr
- move.l gg_SpecialInfo(a0),a0
- move.l si_LongInt(a0),d0
- move.w d0,RevRevisionDat
-
- move.l #9,d0
- lea LogGads,a0
- bsr GetGadgetPtr
- move.l gg_SpecialInfo(a0),a0
- move.l si_LongInt(a0),d0
- move.w d0,RevRevisionDat+2
-
- move.l #FileName,d1 ; Open File
- move.l d1,EasyArg
- move.l #MODE_OLDFILE,d2
- LNKLIB Open,_DOSBase
- move.l d0,FileHand
- tst.l d0
- beq NoRevision
-
- move.l #TempName,d1
- move.l #MODE_NEWFILE,d2 ; Open temporaryfile
- DOLIB Open
- move.l d0,TempHand
- tst.l d0
- beq NoRevision
-
- tst.b OnlyLog ; Enter new LogMessage ?
- beq WriteHeader
-
- .Loop move.l FileHand(pc),d1 ; Seek for our header within
- move.l ReadBuffer,d2 ; first 15 lines
- move.l #READBUFFSIZE,d3
- DOLIB FGets
- tst.l d0
- ble NoRevision
- move.l TempHand(pc),d1 ; Store data unequal to header
- move.l ReadBuffer,d2
- DOLIB FPuts
- tst.l d0
- blt NoRevision
- move.l RevHeader(pc),a0
- move.l ReadBuffer(pc),a1
- moveq #-1,d7
- bsr StrCmp
- tst.l d0
- beq.s GotHeader
- bra .Loop
-
- GotHeader moveq #5,d7 ; Skip comming 6 lines
- bsr RSkipLines
- tst.l d0
- beq NoRevision
- move.l FileHand(pc),d1 ; Get line of current revision
- move.l ReadBuffer,d2
- move.l #READBUFFSIZE,d3
- DOLIB FGets
- tst.l d0
- ble NoRevision
- tst.w RevRevisionDat
- bne.s UserRev
- tst.w RevRevisionDat+2
- bne.s UserRev
- move.l ReadBuffer(pc),a4 ; Get address of major version value
- lea 23(a4),a4
- move.l a4,a0
- .Find cmp.b #'.',(a0)+ ; Find . separating major and minor revision
- beq.s .GotIt
- bra .Find
- .GotIt move.b #0,-1(a0)
- move.l a0,d1 ; Convert value to long
- move.l ReadBuffer,d2
- addq.l #4,d2
- DOLIB StrToLong
- move.l a4,d1
- move.l ReadBuffer,d2
- DOLIB StrToLong
- move.l ReadBuffer(pc),a0
- move.l (a0),d0
- move.l 4(a0),d1
- addq.l #1,d1
- cmp.l #100,d1 ; Over 100 ?
- bne.s GotNewRev
- move.l #0,d1
- addq.l #1,d0
- GotNewRev move.w d0,RevRevisionDat ; Store major version value
- move.w d1,RevRevisionDat+2 ; Store minor value
- UserRev move.l RevRevision(pc),a0 ; Convert to new string
- lea RevRevisionDat(pc),a1
- bsr PrintF
- move.l TempHand(pc),d1 ; Write new string
- move.l ReadBuffer,d2
- DOLIB FPuts
- tst.l d0
- blt NoRevision
- moveq #3,d7 ; Skip the next 4 lines
- bsr RSkipLines
- tst.l d0
- blt NoRevision
- .Loop move.l FileHand(pc),d1 ; Skip purpose description
- move.l ReadBuffer,d2
- move.l #READBUFFSIZE,d3
- DOLIB FGets
- tst.l d0
- ble NoRevision
- move.l ReadBuffer(pc),a0
- bsr StrLen
- cmp.l #3,d0
- beq.s .GotIt
- move.l TempHand(pc),d1
- move.l ReadBuffer,d2
- DOLIB FPuts
- tst.l d0
- blt NoRevision
- bra .Loop
- .GotIt move.l RevLog(pc),a0 ; generate new log entry
- lea RevRevisionDat(pc),a1
- bsr PrintF
- move.l TempHand(pc),d1
- move.l ReadBuffer,d2
- DOLIB FPuts
- tst.l d0
- blt NoRevision
- lea LogMsg(pc),a4
- bsr RWriteMessage ; Write new logmessage
- tst.l d0
- blt NoRevision
- move.l TempHand(pc),d1
- move.l RevLineNL(pc),d2
- DOLIB FPuts
- tst.l d0
- blt NoRevision
-
- .LoopHeader move.l FileHand(pc),d1 ; Search for end of header
- move.l ReadBuffer,d2
- move.l #READBUFFSIZE,d3
- DOLIB FGets
- tst.l d0
- ble NoRevision
- move.l TempHand(pc),d1
- move.l ReadBuffer,d2
- DOLIB FPuts
- tst.l d0
- blt NoRevision
- move.l RevEnd(pc),a0
- move.l ReadBuffer(pc),a1
- moveq #-1,d7
- bsr StrCmp
- tst.l d0
- beq.s GotHeaderEnd
- bra .LoopHeader
- GotHeaderEnd move.l FileHand(pc),d1 ; Read next line,
- move.l ReadBuffer,d2 ; following header
- move.l #READBUFFSIZE,d3
- DOLIB FGets
- tst.l d0
- ble NoRevision
- move.l ReadBuffer(pc),a0
- bsr StrLen
- move.l FileHand(pc),d1 ; Reset filepointer to last read
- move.l d0,d2 ; position
- neg.l d2
- move.l #OFFSET_CURRENT,d3
- DOLIB Seek
- move.l ReadBuffer(pc),a0 ; Did we read in a define ?
- move.l RevDefine(pc),a1
- move.l #12,d7
- bsr StrCmp
- tst.l d0
- bne WriteRest ; Nope -> go on
- RemakeDefs move.w RevRevisionDat(pc),d0
- move.w RevRevisionDat+2(pc),d1
- move.w d0,RevDefineDat
- move.w d1,RevDefineDat+2
- move.l RevDefine(pc),a0 ; Write new define
- lea RevDefineDat(pc),a1
- bsr PrintF
- move.l TempHand(pc),d1
- move.l ReadBuffer,d2
- DOLIB FPuts
- tst.l d0
- blt NoRevision
- moveq #1,d7 ; Skip lines
- cmp.l #AsmRevDefine1,RevDefine ; Revise Asm source
- bne.s NoAsmSkip
- add.l #4,d7 ; skip one more line
- bra.s DoSkip
- NoAsmSkip cmp.l #PASRevDefine1,RevDefine
- bne.s DoSkip
- addq.l #1,d7
- DoSkip move.l FileHand(pc),d1
- move.l ReadBuffer,d2
- move.l #READBUFFSIZE,d3
- DOLIB FGets
- tst.l d0
- ble NoRevision
- dbf d7,DoSkip
-
- bra WriteRest ; Append rest of file
-
- WriteHeader cmp.w #0,RevRevisionDat
- bne.s .UserDat
- cmp.w #0,RevRevisionDat+2
- bne.s .UserDat
- moveq #1,d0
- moveq #0,d1
- move.w d0,RevRevisionDat
- move.w d1,RevRevisionDat+2
-
- .UserDat move.l TempHand(pc),d1 ; Write Header
- move.l RevHeader(pc),d2
- DOLIB FPuts
- tst.l d0
- blt NoRevision
- move.l RevCompany(pc),a0 ; Convert company string
- lea RevCompanyDat(pc),a1
- bsr PrintF
- move.l TempHand(pc),d1
- move.l ReadBuffer,d2
- DOLIB FPuts
- tst.l d0
- blt NoRevision
- move.l RevFile(pc),a0 ; convert and write filename
- lea RevFileDat(pc),a1
- bsr PrintF
- move.l TempHand(pc),d1
- move.l ReadBuffer,d2
- DOLIB FPuts
- tst.l d0
- blt NoRevision
- move.l RevCreatedOn(pc),a0 ; do creation date
- lea RevCreatedOnDat(pc),a1
- bsr PrintF
- move.l TempHand(pc),d1
- move.l ReadBuffer,d2
- DOLIB FPuts
- tst.l d0
- blt NoRevision
- move.l RevAuthor(pc),a0 ; do author
- lea RevAuthorDat(pc),a1
- bsr PrintF
- move.l TempHand(pc),d1
- move.l ReadBuffer,d2
- DOLIB FPuts
- tst.l d0
- blt NoRevision
- move.l RevRevision(pc),a0 ; Do initial revision
- lea RevRevisionDat(pc),a1
- bsr PrintF
- move.l TempHand(pc),d1
- move.l ReadBuffer,d2
- DOLIB FPuts
- tst.l d0
- blt NoRevision
- move.l TempHand(pc),d1 ; Write purpose header
- move.l RevPurpose(pc),d2
- DOLIB FPuts
- tst.l d0
- blt NoRevision
- lea PurposeMsg(pc),a4 ; Write purpose message
- bsr RWriteMessage
- tst.l d0
- blt NoRevision
- move.l RevLogInit(pc),a0
- lea RevRevisionDat(pc),a1
- bsr PrintF
- move.l TempHand(pc),d1 ; Write initial log message
- move.l ReadBuffer,d2
- DOLIB FPuts
- tst.l d0
- blt NoRevision
- move.w RevRevisionDat(pc),d0
- move.w RevRevisionDat+2(pc),d1
- move.w d0,RevDefineDat
- move.w d1,RevDefineDat+2
- move.l RevDefine(pc),a0 ; Write initial define
- lea RevDefineDat(pc),a1
- bsr PrintF
- move.l TempHand(pc),d1
- move.l ReadBuffer,d2
- DOLIB FPuts
- tst.l d0
- blt NoRevision
-
- WriteRest move.l TempHand(pc),d1 ; Write the remaining part of file
- DOLIB Flush
- move.l FileHand(pc),d1
- DOLIB Flush
- .Loop move.l FileHand(pc),d1 ; Read a maximum of 4096 bytes
- move.l ReadBuffer,d2
- move.l #READBUFFSIZE,d3
- DOLIB Read
- tst.l d0
- beq.s RestWritten ; End of file -> go on
- blt NoRevision ; Error -> quit
- move.l d0,d3
- move.l TempHand(pc),d1 ; Write buffer to temp file
- move.l ReadBuffer,d2
- DOLIB Write
- tst.l d0
- ble NoRevision
- bra .Loop
-
- RestWritten move.l TempHand(pc),d1 ; Close files
- LNKLIB Close,_DOSBase
- move.l FileHand(pc),d1
- DOLIB Close
-
- move.l #0,TempHand
- move.l #0,FileHand
-
- move.l #FileName,d1 ; Copy file back
- move.l d1,EasyArg
- move.l #MODE_NEWFILE,d2
- DOLIB Open
- move.l d0,FileHand
- tst.l d0
- beq.s NoRevision
-
- move.l #TempName,d1
- move.l d1,EasyArg
- move.l #MODE_OLDFILE,d2
- DOLIB Open
- move.l d0,TempHand
- tst.l d0
- beq.s NoRevision
-
- .Loop move.l TempHand(pc),d1 ; Read in 4096 bytes
- move.l ReadBuffer,d2
- move.l #READBUFFSIZE,d3
- DOLIB Read
- tst.l d0 ; 0 read -> end it
- beq.s NoErrorFound
- blt.s NoRevision
- move.l d0,d3 ; Store read bytes to new file
- move.l FileHand(pc),d1
- move.l ReadBuffer,d2
- DOLIB Write
- tst.l d0
- blt.s NoRevision
- bra .Loop
-
- NoRevision LNKLIB IoErr,_DOSBase ; Get error number
- tst.l d0
- beq.s NoErrorFound
- move.l d0,ErrorNum
- bsr DisplayError ; Display error
-
- moveq #0,d7
- bra.s GotError
- NoErrorFound moveq #1,d7
- GotError move.l #TempName,d1 ; Delete file, if possible
- LNKLIB DeleteFile,_DOSBase
- tst.l TempHand ; Close files
- beq.s NoTempFile
- move.l TempHand(pc),d1
- DOLIB Close
- move.l #TempName,d1 ; Delete file, if possible
- DOLIB DeleteFile
- NoTempFile tst.l FileHand ; Close input handle
- beq.s NoLogWin
- move.l FileHand(pc),d1
- DOLIB Close
- NoLogWin tst.l OurLock
- beq.s .NoLock
- move.l PastLock(pc),d1
- LNKLIB CurrentDir,_DOSBase
- move.l OurLock(pc),d1
- DOLIB UnLock
- .NoLock move.l #0,FileHand
- move.l #0,TempHand
- bsr CloseLogWin ; Close our window (AGAIN ???)
-
- .NoPort move.l ARexxAction(pc),d1
- and.l #RXFF_RESULT,d1
- beq.s .End
- cmp.b #2,LogInputEnd
- bne.s .NoCancel
- lea FalseStr(pc),a0 ; Create BOOL for error
- bsr StrLen
- LNKLIB CreateArgstring,_RexxSysBase
- tst.l d0
- beq.s .End
- move.l d0,AResult2
- bra.s .End
- .NoCancel lea TrueStr(pc),a0 ; Create BOOL for ok
- bsr StrLen
- LNKLIB CreateArgstring,_RexxSysBase
- tst.l d0
- beq.s .End
- move.l d0,AResult2
-
- .End move.l d7,d0
- move.l d0,-(sp)
- move.l WndHandle,a0
- bsr UnBusy
- move.l PrefsHandle(pc),a0
- bsr UnBusy
- .Loop move.l TimerPort(pc),a0 ; All outstanding messages
- CALLSYS GetMsg ; on timer-port removed
- tst.l d0
- beq.s .Final
- bra.s .Loop
- .Final move.l (sp)+,d0
- move.b #1,TimeReset
- rts
-
-
-
- **********************************************************************
- * Checks for inputs from Purpose/Log msg window *
- **********************************************************************
- CheckRevInput move.b #0,LogInputEnd ; Set end flag for quit
- LoopLog tst.b LogInputEnd ; Are we to quit
- bne LogInputOver
- move.l LogHandle(pc),a0 ; Wait for a message
- move.l wd_UserPort(a0),a0
- CALLSYS WaitPort
- LoopLogMsg move.l LogHandle(pc),a0 ; get it
- move.l wd_UserPort(a0),a0
- CALLSYS GetMsg
- tst.l d0
- beq.s LoopLog
- move.l d0,a1
- move.l im_Class(a1),d6
- move.l im_IAddress(a1),a4
- move.w gg_GadgetID(a4),d7
- move.w im_Code(a1),d5
- cmp.w #'a',d5
- blt.s .End
- and.w #~$20,d5
- .End DOLIB ReplyMsg
-
- cmp.l #IDCMP_ACTIVEWINDOW,d6 ; Window activated ?
- bne.s LogWinInAct
- move.l LogGadget(pc),a0 ; Activate first str gadget
- move.l gg_NextGadget(a0),a0
- move.l LogHandle(pc),a1
- sub.l a2,a2
- LNKLIB ActivateGadget,_IntuitionBase
- bra LoopLogMsg
-
- LogWinInAct cmp.l #IDCMP_GADGETUP,d6 ; Gadget released
- bne.s LogNoGadUp
- cmp.w #6,d7 ; Ok gadget ?
- bne.s LogNoOk
- move.b #1,LogInputEnd ; Yep -> quit input
- bra.s LoopLogMsg
- LogNoOk cmp.w #7,d7 ; Cancel gadget ?
- bne.s LoopLogMsg
- move.b #2,LogInputEnd
- bra LoopLogMsg
-
- LogNoGadUp cmp.l #IDCMP_VANILLAKEY,d6 ; Keypress ?
- bne.s LogNoVKey
- cmp.w #OKKEY,d5 ; o pressed ?
- bne.s LogNoOkKey
- LogOK move.b #1,LogInputEnd ; quit
- move.l #6,d0
- bra.s LogFeedBack
- LogNoOkKey cmp.w #ESCKEY,d5 ; Cancel ?
- beq.s LogCancel
- cmp.w #CANCELKEY,d5 ; c pressed ?
- bne LoopLogMsg
- LogCancel move.b #2,LogInputEnd
- moveq #7,d0
- LogFeedBack tst.l d0
- beq LoopLogMsg
- lea LogGads,a0
- move.l LogHandle,a5
- bsr ButtonCheck
- bra LoopLogMsg
-
- LogNoVKey cmp.l #IDCMP_MENUPICK,d6 ; Picked a menu ?
- bne.s NoLogMenu
- cmp.w #-1,d5
- beq.s EndLogMenu
- move.w d5,d2
- and.w #$1f,d2 ; Get menunumber
- move.w d5,d1
- asr.w #5,d1
- and.w #$3f,d1 ; Get itemnumber
- move.l LogMenu,a1
- bsr GetMenuPtr
- GTMENUITEM_USERDATA a2,a0
- cmp.l #0,a0
- beq.s EndLogMenu
- jmp (a0)
- EndLogMenu bra LoopLogMsg
-
- NoLogMenu cmp.l #IDCMP_CHANGEWINDOW,d6 ; Window moved ?
- bne LoopLogMsg
- move.l LogHandle(pc),a0 ; Store new position
- lea LogWinDef(pc),a1
- bsr StoreWinPos
- bra LoopLogMsg
- LogInputOver rts
-
-
-
-
-
- **********************************************************************
- * Checks for existing revision *
- **********************************************************************
- CheckRevision move.l #FileName,d1 ; Try to open file
- move.l #MODE_OLDFILE,d2
- move.l d1,EasyArg
- LNKLIB Open,_DOSBase
- move.l d0,FileHand
- tst.l d0
- beq.s FileNotFound
-
- moveq #14,d7
- CheckLines move.l FileHand(pc),d1 ; Search for our header
- move.l ReadBuffer,d2 ; within the first 15 lines
- move.l #READBUFFSIZE,d3
- DOLIB FGets
- tst.l d0
- beq.s FileError
- blt.s FileNotFound
- move.l RevHeader(pc),a0
- move.l ReadBuffer(pc),a1
- moveq #-1,d7
- bsr StrCmp ; current line our header ?
- tst.l d0
- beq.s IsMine ; Yep -> go on
- dbf d7,CheckLines ; Loop
- FileError moveq #0,d7 ; Nothing found
- bra.s EndCheckRev
- IsMine moveq #1,d7 ; Got it
- bra.s EndCheckRev
- FileNotFound moveq #-1,d7
- EndCheckRev move.b d7,OnlyLog ; store flag
- tst.l FileHand ; Close file again
- beq.s .End
- move.l FileHand(pc),d1
- DOLIB Close
- move.l #0,FileHand
- .End rts
-
-
-
-
- **********************************************************************
- * Skip the following bytes *
- **********************************************************************
- RSkipLines move.l FileHand(pc),d1 ; Read line
- move.l ReadBuffer,d2
- move.l #READBUFFSIZE,d3
- DOLIB FGets
- tst.l d0
- ble.s .Error
- move.l TempHand(pc),d1 ; Store line
- move.l ReadBuffer,d2
- DOLIB FPuts
- tst.l d0
- blt.s .Error
- dbf d7,RSkipLines ; Loop
- moveq #1,d0
- rts
- .Error moveq #0,d0
- rts
-
-
-
-
-
- **********************************************************************
- * Writes Log/Purpose message to file *
- **********************************************************************
- RWriteMessage moveq #4,d7 ; Now loop for message lines
- .LoopPurp tst.b (a4) ; line ok ?
- beq.s .EndPurp
- move.l TempHand(pc),d1 ; Write initial chars
- move.l RevLine(pc),d2
- DOLIB FPuts
- tst.l d0
- blt.s .Error
- move.l a4,a0
- bsr StrLen
- move.b #$0a,0(a0,d0)
- move.l TempHand(pc),d1
- move.l a4,d2
- DOLIB FPuts
- tst.l d0
- blt.s .Error
- .EndPurp lea 77(a4),a4 ; Loop
- dbf d7,.LoopPurp
- .Error rts
-
-
-
-
- **********************************************************************
- * Copy message eneterd to desired location *
- **********************************************************************
- CopyMessage move.l LogGadget(pc),a2 ; Copy contents of string gads
- move.l gg_NextGadget(a2),a2
- moveq #4,d7 ; Loop for 5 gadgets
- .Loop move.l gg_SpecialInfo(a2),a0
- move.l si_Buffer(a0),a0
- move.l a0,a4
- move.l a3,a1
- bsr StrCpy ; Copy string to buffer
- move.l gg_NextGadget(a2),a2
- lea 77(a3),a3 ; Next buffer
- move.b #0,(a4) ; Clear string
- dbf d7,.Loop
- move.l LogGadget(pc),a0 ; Redisplay str gadgets
- move.l LogHandle(pc),a1 ; with empty boxes
- sub.l a2,a2
- moveq #-1,d0
- LNKLIB RefreshGList,_IntuitionBase
- rts
-
-
-
-
- **********************************************************************
- * Deletes our environment variables *
- **********************************************************************
- DeleteEnvs move.l #EnvDayString,d1
- move.l #GVF_GLOBAL_ONLY,d2
- LNKLIB DeleteVar,_DOSBase
- move.l #EnvDateString,d1
- move.l #GVF_GLOBAL_ONLY,d2
- DOLIB DeleteVar
- move.l #EnvTimeString,d1
- move.l #GVF_GLOBAL_ONLY,d2
- DOLIB DeleteVar
- rts
-
-
-
-
-
- **********************************************************************
- * Display Msg that only to be run under Kick2.x *
- **********************************************************************
- OnlyKick20 tst.l _ArgC ; Did we come from WB ?
- beq.s .FromWB ; Yep -> display requester
-
- move.l _stdout(pc),d1 ; Get Consolehandle
- move.l #Only20Txt,d2
- move.l #Only20TxtEnd-Only20Txt,d3
- LNKLIB Write,_DOSBase ; Write msg
- rts
- .FromWB lea IntName(pc),a1 ; try to open IntBase
- moveq #0,d0
- CALLSYS OpenLibrary
- tst.l d0
- beq.s OnlyKick20Ret
- move.l d0,_IntuitionBase
-
- sub.l a0,a0 ; Display requester
- lea Only20ITxt(pc),a1
- lea OkITxt(pc),a2
- move.l a2,a3
- move.l #0,d0
- move.l #0,d1
- move.l #300,d2
- move.l #60,d3
- LNKLIB AutoRequest,_IntuitionBase
- OnlyKick20Ret rts
-
-
-
-
- **********************************************************************
- * Display an error *
- **********************************************************************
- DisplayError tst.l ErrorNum
- bge.s .GoOn
- rts
- .GoOn move.l ErrorNum(pc),d0 ; Get error num
- cmp.l #2,d0 ; Is it the broker set up error ?
- bne.s NoDoubleMean ; Nope -> go on
- tst.l DoublePort ; Did we already had a port ?
- beq.s NoDoubleMean ; Nope -> go on
- rts
- NoDoubleMean cmp.l #200,d0 ; Display DOS error ?
- blt.s .OurError ; Nope -> go on
- sub.l #200,d0
- asl.l #2,d0
- lea DosErrors(pc),a0
- move.l 0(a0,d0),a0 ; Get dos error
- bra.s .DosError
-
- .OurError lea EasyTexts(pc),a0
- asl.l #2,d0
- move.l 0(a0,d0),a0 ; get adr of error-txt
- .DosError lea MyEasyRequest(pc),a1 ; Display Easy-Requester
- move.l #EasyTitle,es_Title(a1)
- move.l a0,es_TextFormat(a1)
- move.l #EasyGadget,es_GadgetFormat(a1)
- sub.l a0,a0
- sub.l a2,a2
- lea EasyArg(pc),a3
- LNKLIB EasyRequestArgs,_IntuitionBase
- move.l #-1,ErrorNum
- move.l #0,EasyArg
- rts
-
-
- **********************************************************************
- * Compare two strings *
- **********************************************************************
- StrCmp moveq #0,d0
- moveq #0,d1
- movem.l a0/a1,-(sp) ; Store pointers
- .Loop move.b (a0)+,d0 ; get chars
- move.b (a1)+,d1
- tst.b d0 ; Source string ended ?
- beq.s .EndSrc ; yep -> final check
- cmp.b #$0a,d0 ; a newline ?
- beq.s .EndSrc ; yep -> final check
- or.b #$20,d0 ; make case-insensitive
- or.b #$20,d1
- cmp.b d0,d1 ; equal ?
- bne.s .Invalid
- dbf d7,.Loop
- movem.l (sp)+,a0/a1
- moveq #0,d0
- rts
- .Invalid moveq #1,d0 ; Error flag
- movem.l (sp)+,a0/a1
- rts
- .EndSrc cmp.b d0,d1 ; last chars equal ?
- bne.s .Invalid ; Nope -> error
- moveq #0,d0 ; a ok
- movem.l (sp)+,a0/a1
- rts
-
-
-
- **********************************************************************
- * Copy a string *
- **********************************************************************
- StrCpy move.b (a0)+,d0
- move.b d0,(a1)+
- tst.b d0
- beq.s .End
- bra.s StrCpy
- .End rts
-
-
-
-
- **********************************************************************
- * Concat 2 string *
- **********************************************************************
- StrCat tst.b (a1)+
- beq.s .Loop
- bra StrCat
- .Loop subq.l #1,a1
- bra StrCpy
-
-
-
-
- **********************************************************************
- * Copy a string up to x chars or end of string *
- **********************************************************************
- StrNCpy move.b (a0)+,d0
- move.b d0,(a1)+
- tst.b d0
- beq.s .End
- dbf d7,StrNCpy
- .End rts
-
-
-
- **********************************************************************
- * Calc length of a string *
- **********************************************************************
- StrLen move.l a0,-(sp)
- moveq #0,d0
- .Loop tst.b (a0)+
- beq.s .End
- addq.w #1,d0
- bne.s .Loop
- .End move.l (sp)+,a0
- rts
-
-
-
- **********************************************************************
- * Just skip the blanks in a string *
- **********************************************************************
- SkipBlanks cmp.b #' ',(a0) ; Loop while there are spaces
- beq.s .NoEnd ; and tabs
- cmp.b #$09,(a0)
- beq.s .NoEnd
- cmp.b #'"',(a0)
- beq.s .NoEnd
- cmp.b #"'",(a0)
- beq.s .NoEnd
- tst.b (a0)
- beq.s .GotEnd
- bra.s .GotEnd
- .NoEnd addq.l #1,a0
- bra.s SkipBlanks
- .GotEnd rts
-
-
-
- **********************************************************************
- * Just a printf *
- **********************************************************************
- PrintF movem.l RegsAll,-(sp)
- lea PutChProc(pc),a2
- move.l ReadBuffer(pc),a3
- CALLSYS RawDoFmt
- movem.l (sp)+,RegsAll
- rts
-
-
- **********************************************************************
- * Small dummy for RawDoFmt *
- **********************************************************************
- PutChProc move.b d0,(a3)+
- rts
-
-
- **********************************************************************
- * Enable the broker *
- **********************************************************************
- EnableBroker movem.l RegsAll,-(sp)
- tst.b Disabled ; Don`t enable when disabled
- bne.s .End
- move.l MyBroker(pc),a0
- moveq #1,d0
- LNKLIB ActivateCxObj,_CxBase
- bsr OnScreen
- bsr OnMouse
- .End movem.l (sp)+,RegsAll
- rts
-
-
-
- **********************************************************************
- * Disable broker again *
- **********************************************************************
- DisableBroker movem.l RegsAll,-(sp)
- tst.b Disabled
- bne.s .End
- move.l MyBroker(pc),a0
- moveq #0,d0
- LNKLIB ActivateCxObj,_CxBase
- bsr OnScreen
- bsr OnMouse
- .End movem.l (sp)+,RegsAll
- rts
-
-
-
- **********************************************************************
- * Set new window positions *
- **********************************************************************
- GetWinPos move.l ReadBuffer(pc),a4
- move.l a4,a5
- .FindSlash tst.b (a5) ; If there was no / in pos -> quit
- beq.s .NoWinPos
- cmp.b #'/',(a5)+
- beq.s .GotSlash
- bra .FindSlash
- .GotSlash move.b #0,-1(a5) ; Remove slash with 0
- move.l a4,d1 ; a4 = String XPos / a5 = YPos
- move.l #WinLeftEdge,d2 ; Get offset
- LNKLIB StrToLong,_DOSBase
- tst.l d1
- blt.s .LError
- tst.l d0 ; If coord is > 0 -> go on
- bge.s .WinSLOk
- .LError move.l #0,WinLeftEdge ; Set to 0
- .WinSLOk move.l a5,d1
- move.l #WinTopEdge,d2 ; Get Y offset
- DOLIB StrToLong,_DOSBase
- tst.l d1
- blt.s .TError
- tst.l d0
- bge.s .WinSTOk
- .TError move.l #0,WinTopEdge ; Set to 0 if specified < 0
- .WinSTOk moveq #1,d0
- rts
- .NoWinPos moveq #0,d0
- rts
-
-
-
-
-
- **********************************************************************
- * Adjusts the window so that it will reside within screen *
- **********************************************************************
- AdjustWinPos move.w nw_LeftEdge(a0),d0 ; Get position where window might "end"
- move.w nw_TopEdge(a0),d1
- add.w nw_Width(a0),d0
- add.w nw_Height(a0),d1
-
- move.w sc_Width(a1),d2
- move.w sc_Height(a1),d3
- cmp.w d0,d2
- bge.s .LOk
- sub.w nw_Width(a0),d2 ; readjust left edge
- move.w d2,nw_LeftEdge(a0)
- .LOk cmp.w d1,d3
- bge.s .ROk
- sub.w nw_Height(a0),d3 ; readjust top edge
- move.w d3,nw_TopEdge(a0)
- .ROk rts
-
-
-
-
-
-
- **********************************************************************
- * Store new position of window within NewWindow *
- **********************************************************************
- StoreWinPos move.w wd_LeftEdge(a0),nw_LeftEdge(a1)
- move.w wd_TopEdge(a0),nw_TopEdge(a1)
- rts
-
-
-
- **********************************************************************
- * Remake the CheckBox ticks if the main window is open *
- **********************************************************************
- RemakeGadgets move.b DoActivate(pc),d0 ; Set checkbox-ticks
- move.l #ACTIGAD,d1 ; according to modes
- bsr SetControlBox
- move.b MouseMode(pc),d0
- move.l #MODEGAD,d1
- bsr SetControlBox
- move.b ShowClock(pc),d0
- move.l #DISPLAYGAD,d1
- bsr SetControlBox
- move.b ClockWin(pc),d0
- move.l #WINDOWGAD,d1
- bsr SetControlBox
- move.b ShowSecs(pc),d0
- move.l #SECSGAD,d1
- bsr SetControlBox
- move.b AmiDate(pc),d0
- move.l #AMIGAD,d1
- bsr SetControlBox
- move.b ShowDay(pc),d0
- move.l #DAYGAD,d1
- bsr SetControlBox
- move.b ShowDate(pc),d0
- move.l #DATEGAD,d1
- bsr SetControlBox
- move.b ShortDay(pc),d0
- move.l #SHORTGAD,d1
- bsr SetControlBox
- move.b DoAlarm(pc),d0
- move.l #ALARMMODEGAD,d1
- bsr SetControlBox
- move.b SetEnv(pc),d0
- move.l #ENVGAD,d1
- bsr SetControlBox
- move.b CycleWin(pc),d0
- move.l #CYCLEGAD,d1
- bsr SetControlBox
- move.b KeyClick(pc),d0
- move.l #CLICKGAD,d1
- bsr SetControlBox
- move.b WBFront(pc),d0
- move.l #WBFRONTGAD,d1
- bsr.s SetControlBox
- move.b LeftyMouse(pc),d0
- move.l #LEFTYGAD,d1
- bsr.s SetControlBox
- move.b ESCClose(pc),d0
- move.l #WESCGAD,d1
- bsr.s SetControlBox
- move.b MapUmlaut(pc),d0
- move.l #UMLAUTGAD,d1
- bsr.s SetControlBox
- rts
-
-
-
-
-
- **********************************************************************
- * Give visual feedback for button press *
- * D0 = Number of gadget *
- * A0 = Pointer to first gadget *
- * A5 = Pointer to window *
- **********************************************************************
- ButtonCheck movem.l RegsAll,-(sp)
- cmp.l #0,a5
- beq.s .End
- bsr GetGadgetPtr
- move.l a0,a4
- or.w #GFLG_SELECTED,gg_Flags(a4)
- move.l a4,a0
- move.l a5,a1
- sub.l a2,a2
- moveq #1,d0
- LNKLIB RefreshGList,_IntuitionBase
- moveq #5,d1
- LNKLIB Delay,_DOSBase
- and.w #~GFLG_SELECTED,gg_Flags(a4)
- move.l a4,a0
- move.l a5,a1
- sub.l a2,a2
- moveq #1,d0
- LNKLIB RefreshGList,_IntuitionBase
- .End movem.l (sp)+,RegsAll
- rts
-
-
-
-
-
- **********************************************************************
- * Only a small dummy for shorter access to ControlCheckGads *
- * D0 = CheckBox mode *
- * D1 = Number of gadget *
- **********************************************************************
- SetControlBox movem.l d0-d1,-(sp)
- lea ControlGads,a0
- move.l WndHandle,a1
- bsr.s SetCheckBox
- movem.l (sp)+,d0-d1
- subq.l #1,d1
- moveq #1,d2
- bra.s SetControlMenu
-
-
- **********************************************************************
- * Set a checkbox to specified value *
- * D0 = Mode *
- * D1 = Number of gadget *
- * A0 = Address of GadgetList *
- * A1 = Address of window *
- **********************************************************************
- SetCheckBox movem.l RegsAll,-(sp)
- cmp.l #0,a1
- beq.s .End
- and.l #$000000ff,d0
- move.l d0,SelectMode ; Set tag state
- move.l d1,d0
- bsr GetGadgetPtr
- sub.l a2,a2
- lea CheckBoxTags(pc),a3 ; Set new gadget attributes
- LNKLIB GT_SetGadgetAttrsA,_GadToolsBase
- .End movem.l (sp)+,RegsAll
- rts
-
-
-
- **********************************************************************
- * Get a pointer to a menuitem *
- * A1 = Pointer to menustrip *
- * D1 = ItemNumber *
- * D2 = MenuNumber *
- **********************************************************************
- GetMenuPtr ext.l d1
- ext.l d2
- move.l a1,a2
- .GetMenu tst.l d2
- beq.s .GotMenu
- move.l mu_NextMenu(a2),a2
- subq.l #1,d2
- bra.s .GetMenu
- .GotMenu move.l mu_FirstItem(a2),a2
- .GetItem tst.l d1
- beq.s .GotItem
- move.l mi_NextItem(a2),a2
- subq.l #1,d1
- bra.s .GetItem
- .GotItem rts
-
-
-
- **********************************************************************
- * Set a control toogle menu to specified value *
- * D0 = Mode *
- * D1 = ItemNumber *
- * D2 = MenuNumber *
- **********************************************************************
- SetControlMenu move.l MainMenu,a1
- move.l WndHandle,a0
- bra.s SetToggleMenu
-
-
- **********************************************************************
- * Set a toggle menu to specified value *
- * D0 = Mode *
- * D1 = ItemNumber *
- * D2 = MenuNumber *
- * A0 = Window *
- * A1 = Menu *
- **********************************************************************
- SetToggleMenu cmp.l #0,a0
- beq.s .End
- bsr GetMenuPtr
- move.w mi_Flags(a2),d1 ; Get Flags for menu
- tst.b d0
- beq.s .ClearFlag
- or.w #CHECKED,d1
- bra.s .FlagAltered
- .ClearFlag and.w #~CHECKED,d1
- .FlagAltered move.w d1,mi_Flags(a2)
- move.l a0,a4
- LNKLIB ResetMenuStrip,_IntuitionBase
- move.l a4,a0
- sub.l a1,a1
- LNKLIB GT_RefreshWindow,_GadToolsBase
- .End rts
-
-
-
- **********************************************************************
- * Set MX Gadget to specified value *
- * D0 = Number of button active *
- * D1 = Number of gadget *
- * A0 = Address of GadgetList *
- * A1 = Address of window *
- * A2 = Address of labels *
- **********************************************************************
- SetMXGad movem.l RegsAll,-(sp)
- cmp.l #0,a1
- beq.s .End
- and.l #$000000ff,d0
- move.l d0,MxActive
- move.l a2,MxLabels
- move.l d1,d0
- bsr GetGadgetPtr
- sub.l a2,a2
- lea MxTags(pc),a3
- LNKLIB GT_SetGadgetAttrsA,_GadToolsBase
- .End movem.l (sp)+,RegsAll
- rts
-
-
-
-
- **********************************************************************
- * Set a cycle gadget to a specified value *
- * D0 = Number of gadget *
- * A0 = Address of GadgetList *
- * A1 = Pointer to window *
- * A2 = Pointer to labels *
- * D1 = Number of setting *
- **********************************************************************
- SetCycleGad movem.l RegsAll,-(sp)
- cmp.l #0,a1
- beq.s .End
- move.l d1,CycActive
- move.l a2,CycLabels
- bsr GetGadgetPtr
- sub.l a2,a2
- lea CycleTags,a3
- LNKLIB GT_SetGadgetAttrsA,_GadToolsBase
- .End movem.l (sp)+,RegsAll
- rts
-
-
-
-
- **********************************************************************
- * Set the contents of a string gadget *
- * D0 = Number of gadget *
- * A0 = Address of GadgetList *
- * A1 = Pointer to window *
- * D1 = Maximum of chars *
- * A2 = Pointer to new string *
- **********************************************************************
- SetStringGad movem.l RegsAll,-(sp)
- cmp.l #0,a1
- beq.s .End
- bsr.s GetGadgetPtr
- move.l d1,StrMax
- move.l a2,StringConts
- sub.l a2,a2
- lea StringTags,a3
- LNKLIB GT_SetGadgetAttrsA,_GadToolsBase
- .End movem.l (sp)+,RegsAll
- rts
-
-
-
-
-
- **********************************************************************
- * Set the contents of a string gadget *
- * D0 = Number of gadget *
- * A0 = Address of GadgetList *
- * A1 = Pointer to window *
- * D1 = Maximum of chars *
- * D2 = New value *
- **********************************************************************
- SetIntegerGad movem.l RegsAll,-(sp)
- cmp.l #0,a1
- beq.s .End
- move.l d1,IntMax
- move.l d2,IntConts
- bsr.s GetGadgetPtr
- sub.l a2,a2
- lea IntegerTags,a3
- LNKLIB GT_SetGadgetAttrsA,_GadToolsBase
- .End movem.l (sp)+,RegsAll
- rts
-
-
-
-
- **********************************************************************
- * Activate a string gadget *
- * D0 = Number of gadget *
- * A0 = Pointer to GadgetList *
- * A1 = Pointer to Window *
- **********************************************************************
- ActStringGad movem.l RegsAll,-(sp)
- bsr.s GetGadgetPtr
- sub.l a2,a2
- LNKLIB ActivateGadget,_IntuitionBase
- movem.l (sp)+,RegsAll
- rts
-
-
-
-
- **********************************************************************
- * Get Address of a gadget *
- * D0 = Number of gadget *
- * A0 = Pointer to first gadget *
- **********************************************************************
- GetGadgetPtr subq.l #1,d0
- asl.l #2,d0
- move.l 0(a0,d0),a0
- rts
-
-
-
-
- **********************************************************************
- * Changes a HotKey for a Filter *
- * D7 = Number of gadget to change *
- * A0 = Pointer to window *
- * A1 = Pointer to string *
- * A4 = Pointer to filter *
- * A5 = Pointer to filterdescription *
- * ReadBuffer + 0 = Copy of new filterdescription *
- **********************************************************************
- RemakeHotKey movem.l RegsAll,-(sp)
-
- movem.l a0/a1,-(sp)
- bsr DisableBroker ; Disable the broker
-
- move.l a5,a0 ; Copy old hotkey
- move.l ReadBuffer(pc),a1
- lea 2048(a1),a1
- bsr StrCpy
-
- move.l ReadBuffer(pc),a0
- move.l a5,a1
- bsr StrCpy
-
- move.l a4,a0 ; Try to set new filter
- move.l a5,a1
- LNKLIB SetFilter,_CxBase
- move.l a4,a0 ; Error occured ?
- DOLIB CxObjError
- tst.l d0
- beq.s GotNewChangeHK ; Nope -> go on
-
- move.l ReadBuffer(pc),a0 ; Remake hotkey
- lea 2048(a0),a0
- move.l a5,a1
- bsr StrCpy
-
- move.l a4,a0 ; Reset old hotkey
- move.l a5,a1
- DOLIB SetFilter
-
- GotNewChangeHK movem.l (sp)+,a0/a1
- cmp.l #0,a0
- beq.s .NoNewTitle
- move.l #-1,a2
- LNKLIB SetWindowTitles,_IntuitionBase
- .NoNewTitle move.l d7,d0
- lea HotKeyGads,a0
- move.l HotKeyHandle(pc),a1
- move.l #30,d1
- move.l a5,a2
- bsr SetStringGad
- bsr EnableBroker
- movem.l (sp)+,RegsAll
- rts
-
-
-
-
-
- **********************************************************************
- * Set busy for a window and disable all it`s gadgets *
- * A0 = Pointer to window *
- **********************************************************************
- SetBusy movem.l RegsAll,-(sp)
- cmp.l #0,a0
- beq.s .End
- move.l a0,a4 ; Set pointer
- lea BusyPtr,a1
- move.l #16,d0
- move.l #16,d1
- move.l #-6,d2
- move.l #0,d3
- LNKLIB SetPointer,_IntuitionBase
- move.l #1,GadDisable
- move.l wd_FirstGadget(a4),a5
- .Loop cmp.l #0,a5 ; Disable all gadgets
- beq.s .End
- move.l a5,a0
- move.l a4,a1
- sub.l a2,a2
- lea DisableTag(pc),a3
- LNKLIB GT_SetGadgetAttrsA,_GadToolsBase
- move.l gg_NextGadget(a5),a5
- bra.s .Loop
- .End movem.l (sp)+,RegsAll
- rts
-
-
-
-
- **********************************************************************
- * Un-Busy a window and reenable all gadgets again *
- * A0 = Pointer to window to be re-enabled *
- **********************************************************************
- UnBusy movem.l RegsAll,-(sp)
- cmp.l #0,a0
- beq.s .End
- move.l a0,a4 ; Clear pointer
- LNKLIB ClearPointer,_IntuitionBase
- move.l #0,GadDisable
- move.l wd_FirstGadget(a4),a5 ; Enable all gadgets
- .Loop cmp.l #0,a5
- beq.s .End
- move.l a5,a0
- move.l a4,a1
- sub.l a2,a2
- lea DisableTag(pc),a3
- LNKLIB GT_SetGadgetAttrsA,_GadToolsBase
- move.l gg_NextGadget(a5),a5
- bra.s .Loop
- .End movem.l (sp)+,RegsAll
- rts
-
-
-
-
- **********************************************************************
- * Lock the Workbench-Screen *
- **********************************************************************
- LockScreen sub.l a0,a0
- LNKLIB LockPubScreen,_IntuitionBase
- move.l d0,-4(a5)
- rts
-
-
-
-
- **********************************************************************
- * Unlock the locked screen *
- **********************************************************************
- UnlockScreen tst.l -4(a5)
- beq.s .End
- sub.l a0,a0
- move.l -4(a5),a1
- LNKLIB UnlockPubScreen,_IntuitionBase
- .End rts
-
-
-
-
- **********************************************************************
- * Display Online-Help text for given Menu-Entry *
- * D0 = Windownumber (1 = Control, 2 = Prefs, 3 = Bill, 4 = HotKey *
- **********************************************************************
- OnlineHelp tst.b HelpPage
- bne.s OtherHelp
- cmp.w #-1,d5
- beq NoHelp
- move.w d5,d2
- and.w #$1f,d2 ; Get menunumber
- move.w d5,d1
- asr.w #5,d1
- and.w #$3f,d1 ; Get itemnumber
- ext.l d2
- ext.l d1
- mulu #1000,d0 ; Make unique FileName
- mulu #100,d2
- add.l d0,d1
- add.l d2,d1
- move.l d1,HelpNum
- lea LIntFormat,a0 ; Convert to string
- lea HelpNum,a1
- lea PutChProc,a2
- lea HelpName,a3
- CALLSYS RawDoFmt
-
- OtherHelp move.l #HelpFile,d1 ; Try to open Help file
- move.l #MODE_OLDFILE,d2
- LNKLIB Open,_DOSBase
- tst.l d0
- beq NoHelp
- move.l ReadBuffer,a0
- move.l #(1024/4)-1,d7
- .ClearBuffer move.l #0,(a0)+
- dbf d7,.ClearBuffer
- move.l d0,d7
- move.l d0,d1
- move.l ReadBuffer,d2 ; Read in text
- move.l #$ffffff,d3
- DOLIB Read
- move.l d0,d6
- move.l d7,d1
- DOLIB Close ; Close file
- tst.l d6
- blt NoHelp
-
- move.l ReadBuffer(pc),a0 ; Copy header of help text
- lea HelpDescr(pc),a1
- .CopyHeader move.b (a0)+,d0
- cmp.b #$0a,d0
- beq.s .HeaderDone
- move.b d0,(a1)+
- bra.s .CopyHeader
- .HeaderDone move.b #0,(a1)
- move.l a0,HelpText
- moveq #0,d0 ; Calc number of lines of
- .CalcLines tst.b (a0) ; Help text
- beq.s .GotLines
- cmp.b #$0a,(a0)
- bne.s .NoLine
- addq.l #1,d0
- .NoLine addq.l #1,a0
- bra.s .CalcLines
- .GotLines move.l d0,ScrollTotal ; Write new settings
- move.l #0,ScrollTop
- move.l #9,ScrollVis
-
- link a5,#-4 ; Lock screen
- bsr LockScreen
- tst.l d0
- beq HelpWinError
-
- move.l -4(a5),a0 ; Get visual info
- sub.l a1,a1
- LNKLIB GetVisualInfoA,_GadToolsBase
- move.l d0,HelpVisInfo
- tst.l d0
- beq HelpWinError
- lea DummyNewGadget(pc),a0
- move.l d0,gng_VisualInfo(a0)
- move.l d0,BevelVisInfo
-
- move.l #HELPWINWIDTH,WinWidth
- move.l #HELPWINHEIGHT,WinHeight
- move.l #HELPWINIDCMP,WinIDCMP
- move.l #HELPWINFLAGS,WinFlags
-
- lea HelpWinDef(pc),a0 ; Open window
- move.l -4(a5),a1
- bsr AdjustWinPos
- lea WindowTags(pc),a1
- LNKLIB OpenWindowTagList,_IntuitionBase
- move.l d0,HelpHandle
- tst.l d0
- beq HelpWinError
-
- lea HelpMenuDef,a0 ; Create menu strip
- sub.l a1,a1 ; No tags
- LNKLIB CreateMenusA,_GadToolsBase
- move.l d0,HelpMenu
- tst.l d0
- beq HelpWinError
-
- move.l HelpMenu(pc),a0 ; Do the layout on window
- move.l HelpVisInfo(pc),a1
- sub.l a2,a2
- DOLIB LayoutMenusA
- tst.l d0
- beq HelpWinError
-
- move.l HelpHandle(pc),a0
- move.l wd_RPort(a0),HelpRPort
- moveq #0,d7
- move.b wd_BorderTop(a0),d7
-
- move.l HelpRPort(pc),a0 ; Draw text-box
- move.l #INTERWIDTH,d0
- move.l #INTERHEIGHT,d1
- add.l d7,d1
- move.l #HELPWINWIDTH-30,d2
- move.l #HELPWINHEIGHT-(INTERHEIGHT*2),d3
- lea BevelTag(pc),a1
- LNKLIB DrawBevelBoxA,_GadToolsBase
-
- lea HelpGadget(pc),a0 ; Create Context-Gadget
- LNKLIB CreateContext,_GadToolsBase
- tst.l d0
- beq HelpWinError
- move.l d0,ThisGadget
-
- move.w #1,GadNum
-
- lea DummyNewGadget(pc),a1 ; Create scroller gadget
- move.w #INTERHEIGHT,d0
- add.w d7,d0
- move.w d0,gng_TopEdge(a1)
- move.w #HELPWINWIDTH-20,gng_LeftEdge(a1)
- move.w #20,gng_Width(a1)
- move.w #HELPWINHEIGHT-(INTERHEIGHT*2),d0
- move.w d0,gng_Height(a1)
- move.l #0,gng_GadgetText(a1)
- move.l #0,gng_Flags(a1)
- move.l #SCROLLER_KIND,d0
- move.l ThisGadget,a0
- lea ScrollerTags,a2
- DOLIB CreateGadgetA
- tst.l d0
- beq HelpWinError
- move.l d0,HelpScroll
-
- lea GadgetTxtAttr(pc),a0 ; Set font for window
- LNKLIB OpenFont,_GfxBase
- move.l d0,HelpFont
- tst.l d0
- beq HelpWinError
- move.l HelpRPort(pc),a1
- move.l d0,a0
- DOLIB SetFont
-
- move.l HelpHandle(pc),a0 ; Add gadgets to window
- move.l HelpGadget(pc),a1
- move.l #-1,d0
- move.l #-1,d1
- sub.l a2,a2
- LNKLIB AddGList,_IntuitionBase
-
- move.l HelpGadget(pc),a0 ; Make them appear
- move.l HelpHandle(pc),a1
- sub.l a2,a2
- move.l #-1,d0
- DOLIB RefreshGList
-
- move.l HelpHandle,a0
- move.l HelpMenu,a1
- DOLIB SetMenuStrip
-
- move.l HelpHandle,a0 ; Redisplay gadget
- sub.l a1,a1
- LNKLIB GT_RefreshWindow,_GadToolsBase
-
- move.l WndHandle,a0 ; Make all gadgets busy
- bsr SetBusy
- move.l PrefsHandle,a0
- bsr SetBusy
- move.l HotKeyHandle,a0
- bsr SetBusy
-
- bsr PrintHelp ; Print first help page
-
- HelpWinLoop move.l HelpHandle(pc),a0 ; Wait for message
- move.l wd_UserPort(a0),a0
- CALLSYS WaitPort
- HelpMsgLoop move.l HelpHandle(pc),a0
- move.l wd_UserPort(a0),a0
- LNKLIB GT_GetIMsg,_GadToolsBase
- tst.l d0
- beq HelpWinLoop
-
- move.l d0,a1 ; Get important data
- move.l im_Class(a1),d6
- move.w im_Code(a1),d5
- move.w im_Qualifier(a1),d7
-
- DOLIB GT_ReplyIMsg
-
- cmp.l #IDCMP_CLOSEWINDOW,d6 ; Closed Help window ?
- beq HelpWinEnd
-
- cmp.l #IDCMP_GADGETUP,d6 ; Gadget released ?
- bne.s NoHelpGadUp
- move.b #0,Scrolling ; No moving-scroll
- ext.l d5 ; Display new page
- cmp.l ScrollTop,d5
- beq.s NoHelpGadUp
- move.l d5,ScrollTop
- movem.l d5-d7,-(sp)
- bsr PrintHelp
- movem.l (sp)+,d5-d7
- NoHelpGadUp cmp.l #IDCMP_GADGETDOWN,d6 ; Gadget pressed ?
- bne.s NoHelpGadDown
- move.b #1,Scrolling
- NoHelpGadDown cmp.l #IDCMP_GADGETDOWN,d6
- beq.s .DoScroll
- cmp.l #IDCMP_MOUSEMOVE,d6 ; Mouse moved
- bne.s .NoScroll
- tst.b Scrolling ; and scrolling enabled ?
- beq.s .NoScroll
- cmp.l #9,ScrollTotal ; Display new area
- ble.s .NoScroll
- .DoScroll ext.l d5
- move.l d5,ScrollTop
- movem.l d5-d7,-(sp)
- bsr PrintHelp
- movem.l (sp)+,d5-d7
- .NoScroll cmp.l #IDCMP_RAWKEY,d6
- bne NoHelpRKey
-
- cmp.w #$45,d5 ; On ESC -> quit Help
- beq HelpWinEnd
-
- and.w #(IEQUALIFIER_LSHIFT|IEQUALIFIER_RSHIFT),d7
- bne.s PageMove
- cmp.w #CURSORUP,d5 ; Unshifted CURSOR keys move
- bne.s NoRowUp
- HelpRowUp tst.l ScrollTop
- beq HelpMsgLoop
- subq.l #1,ScrollTop ; up one line
- bra DoKeyMove
- NoRowUp cmp.w #CURSORDOWN,d5
- bne.s NoRowDown
- HelpRowDown cmp.l #9,ScrollTotal
- ble HelpMsgLoop
- move.l ScrollTotal(pc),d0
- sub.l #9,d0
- cmp.l ScrollTop,d0
- beq HelpMsgLoop
- addq.l #1,ScrollTop ; down one line
- bra.s DoKeyMove
- NoRowDown bra HelpMsgLoop
- PageMove cmp.w #CURSORUP,d5
- bne.s NoPageUp
- HelpPageUp cmp.l #8,ScrollTop
- bge.s .UpFull
- move.l #0,ScrollTop
- bra.s .UpPage
- .UpFull subq.l #8,ScrollTop ; up one page
- .UpPage bra.s DoKeyMove
- NoPageUp cmp.w #CURSORDOWN,d5
- bne.s NoPageDown
- HelpPageDown cmp.l #9,ScrollTotal
- ble HelpMsgLoop
- move.l ScrollTop(pc),d0
- add.l #8,d0 ; down one page
- move.l ScrollTotal(pc),d1
- sub.l #8,d1
- cmp.l d1,d0
- blt.s .DownFull
- move.l d1,d0
- .DownFull move.l d0,ScrollTop
- bra.s DoKeyMove
- NoPageDown bra HelpMsgLoop
- DoKeyMove bsr PrintHelp ; Print new area
- move.l HelpScroll,a0 ; Remake scroll gadget
- move.l HelpHandle,a1
- sub.l a2,a2
- lea ScrollerTags,a3
- LNKLIB GT_SetGadgetAttrsA,_GadToolsBase
- bra HelpMsgLoop
-
- NoHelpRKey cmp.l #IDCMP_MENUPICK,d6 ; Menu picked ?
- bne.s NoHelpMenu
- cmp.w #-1,d5
- beq.s EndHelpMenu
- move.w d5,d2
- and.w #$1f,d2 ; Get menunumber
- move.w d5,d1
- asr.w #5,d1
- and.w #$3f,d1 ; Get itemnumber
- move.w d1,d5
- move.l HelpMenu,a1
- bsr GetMenuPtr
- GTMENUITEM_USERDATA a2,a0
- cmp.l #0,a0
- beq.s EndHelpMenu
- jmp (a0) ; execute menu function
- EndHelpMenu bra HelpMsgLoop
-
- NoHelpMenu cmp.l #IDCMP_CHANGEWINDOW,d6 ; Window moved ?
- bne.s NoHelpMoved
- move.l HelpHandle,a0
- lea HelpWinDef,a1
- bsr StoreWinPos
- bra HelpMsgLoop
- NoHelpMoved bra HelpMsgLoop
-
-
- HelpWinEnd move.l WndHandle,a0 ; Unbusy windows
- bsr UnBusy
- move.l PrefsHandle,a0
- bsr UnBusy
- move.l HotKeyHandle,a0
- bsr UnBusy
- HelpWinError bsr UnlockScreen ; Unlock screen
- unlk a5
- tst.l HelpFont
- beq.s .NoFont
- move.l HelpFont,a1 ; Close font
- LNKLIB CloseFont,_GfxBase
- .NoFont tst.l HelpHandle
- beq.s .NoWin
- move.l HelpHandle,a0
- LNKLIB CloseWindow,_IntuitionBase ; Close window
- .NoWin tst.l HelpGadget
- beq.s .NoGad
- move.l HelpGadget,a0
- LNKLIB FreeGadgets,_GadToolsBase ; Free gadget
- .NoGad tst.l HelpMenu
- beq.s .NoMenu
- move.l HelpMenu,a0
- LNKLIB FreeMenus,_GadToolsBase ; Free menues
- .NoMenu tst.l HelpVisInfo
- beq.s .NoVisInfo
- move.l HelpVisInfo,a0
- LNKLIB FreeVisualInfo,_GadToolsBase ; Free VisInfo
- .NoVisInfo move.l #0,HelpHandle
- move.l #0,HelpGadget
- move.l #0,HelpVisInfo
- move.l #0,HelpFont
- move.l #0,HelpMenu
- NoHelp move.b #0,HelpPage
- rts
-
-
-
- **********************************************************************
- * Print out 9 lines of a helptext *
- **********************************************************************
- PrintHelp move.l HelpHandle(pc),a0
- moveq #0,d7
- move.b wd_BorderTop(a0),d7
- move.l HelpRPort(pc),a1
- moveq #0,d0
- LNKLIB SetAPen,_GfxBase
- move.l HelpRPort(pc),a1
- move.l #INTERWIDTH+2,d0
- move.l #INTERHEIGHT+1,d1
- add.l d7,d1
- move.l #HELPWINWIDTH-28,d2
- move.l #HELPWINHEIGHT-(INTERHEIGHT*2)+13,d3
- DOLIB RectFill
- move.l HelpRPort(pc),a1
- moveq #1,d0
- DOLIB SetAPen
- add.l #INTERHEIGHT*3+2,d7
- addq.l #2,d7
- move.l HelpText(pc),a4
- moveq #8,d6
- move.l ScrollTop(pc),d0
- .FindFirst tst.l d0
- beq.s .GotFirst
- .FindNext cmp.b #$0a,(a4)+
- bne .FindNext
- subq.l #1,d0
- bra.s .FindFirst
- .GotFirst tst.b (a4)
- beq.s .HelpDone
- move.l HelpRPort(pc),a1
- move.l #INTERWIDTH+4,d0
- move.l d7,d1
- LNKLIB Move,_GfxBase
- move.l HelpRPort(pc),a1
- move.l a4,a0
- moveq #0,d0
- .GetLength cmp.b #$0a,(a4)+
- beq.s .GotLength
- addq.l #1,d0
- bra.s .GetLength
- .GotLength DOLIB Text
- add.l #9,d7
- dbf d6,.GotFirst
- .HelpDone rts
-
-
-
- **********************************************************************
- * Edit Hook for String/Integer gadgets *
- * A0 = Pointer to Hook itself *
- * A1 = Pointer to parameter *
- * A2 = Pointer to SGWork-Structure *
- * Provided editing is : *
- * Activating the next gadget on RETURN press *
- * Actuvating the previous gadget on SHIFTED RETURN press *
- * Simulating HELP-Exit of gadget on ESC-Press *
- * Accessing menus via Key-Stroke RIGHT AMIGA - ShortCut *
- * Using CURSOR UP/DOWN for entering previous/next gadget *
- * Using CONTROL CURSOR LEFT/RIGHT to get to the prev/next word *
- **********************************************************************
- StrEditFunc movem.l RegsAll,-(sp)
- cmp.l #SGH_KEY,0(a1) ; Key pressed ?
- bne .End
- move.l sgw_Actions(a2),d0
- move.l d0,d1
- and.l #SGA_END,d0 ; Gadget released ?
- beq.s .NoReturn ; Nope -> go on
- cmp.w #HELPKEY,sgw_Code(a2) ; HELP used to escape ?
- beq.s .NoReturn ; Yep -> go on
- move.l sgw_IEvent(a2),a3
- move.w ie_Qualifier(a3),d2
- and.w #(IEQUALIFIER_LSHIFT|IEQUALIFIER_RSHIFT),d2
- beq.s .NextGadget
- or.l #SGA_PREVACTIVE,d1
- bra.s .ActGadget
- .NextGadget or.l #SGA_NEXTACTIVE,d1
- .ActGadget move.l d1,sgw_Actions(a2)
- bra .End
-
- .NoReturn move.l sgw_IEvent(a2),a3 ; User pressed ESC ?
- cmp.w #$45,ie_Code(a3)
- bne.s .NoEsc
- move.l #SGA_END,sgw_Actions(a2) ; Simulate release of gadget
- move.w #HELPKEY,sgw_Code(a2)
- bra .End
- .NoEsc cmp.w #$4c,ie_Code(a3) ; Cursor UP ?
- bne.s .NoUp
- move.l #SGA_END|SGA_PREVACTIVE,sgw_Actions(a2)
- move.w #$44,sgw_Code(a2)
- bra .End
- .NoUp cmp.w #$4d,ie_Code(a3) ; Cursor DOWN ?
- bne.s .NoDown
- move.l #SGA_END|SGA_NEXTACTIVE,sgw_Actions(a2)
- move.w #$44,sgw_Code(a2)
- bra .End
- .NoDown move.w ie_Qualifier(a3),d0
- and.w #IEQUALIFIER_CONTROL,d0 ; CONTROL pressed ?
- beq .NoWordJump
- move.l sgw_WorkBuffer(a2),a1 ; Get pointer to buffer
- move.w sgw_BufferPos(a2),d0 ; Get cursor position
- cmp.w #$4f,ie_Code(a3) ; Jump to left word ?
- beq.s .JumpLeft
- cmp.w #$4e,ie_Code(a3) ; Jump to right word ?
- beq.s .JumpRight
- bra .NoWordJump
- .JumpLeft tst.w d0 ; Already at beginning ?
- beq .End
- moveq #-1,d1 ; Set new position
- .LeftLoop1 tst.w d0 ; All done ?
- blt.s .FirstLeft ; Yep -> first loop donw
- cmp.b #' ',0(a1,d0.w) ; Got a space ?
- beq.s .NoCharLeft ; Yep -> loop
- move.w d0,d1 ; Nope -> Store new position
- bra.s .FirstLeft
- .NoCharLeft subq.w #1,d0 ; Next char to the left
- bra.s .LeftLoop1
- .FirstLeft cmp.w #-1,d1 ; Got new position ?
- bne.s .NoNegLeft
- moveq #0,d1 ; Nope -> clear position
- .NoNegLeft tst.w d1 ; New position marked ?
- beq.s .JumpedLeft ; Nope -> jump to first char
- move.w d1,d0 ; Copy new position
- moveq #-1,d1 ; Clear position
- .LeftLoop2 tst.w d0 ; Already at first char ?
- blt.s .JumpedLeft ; Yep -> position cursor
- cmp.b #' ',0(a1,d0.w) ; Now skip chars different to space
- bne.s .NoSpaceLeft
- move.w d0,d1 ; Store first pos of char after space
- addq.w #1,d1
- bra.s .JumpedLeft ; DONE
- .NoSpaceLeft subq.w #1,d0 ; Loop for chars
- bra .LeftLoop2
- .JumpedLeft tst.w d1 ; Do we have a new position ?
- bge.s .GotLeft ; Yep -> Repos
- move.w #0,sgw_BufferPos(a2) ; Set cursor to first char
- bra.s .LeftDone
- .GotLeft move.w d1,sgw_BufferPos(a2) ; Set cursor to new position
- .LeftDone move.w #EO_MOVECURSOR,sgw_EditOp(a2)
- bra .End
-
- .JumpRight cmp.w sgw_NumChars(a2),d0 ; Already at end of string ?
- beq .End ; Yep -> no movement
- moveq #-1,d1
- .RightLoop cmp.w sgw_NumChars(a2),d0 ; All chars checked ?
- beq.s .JumpedRight ; Yep -> end of movement
- cmp.b #' ',0(a1,d0.w) ; Space encountered ?
- bne.s .NoSpaceRight ; Nope -> go on
- .RightSpaceLoop cmp.w sgw_NumChars(a2),d0 ; All chars checked ?
- beq.s .JumpedRight ; Yep -> end of movement
- cmp.b #' ',0(a1,d0.w) ; Still a space ?
- beq.s .NoRightChar ; Yep -> loop for spaces
- move.w d0,d1 ; Got new word
- bra.s .JumpedRight ; -> Do movement
- .NoRightChar addq.w #1,d0 ; Next char (SPACE)
- bra .RightSpaceLoop ; Loop for spaces
- .NoSpaceRight addq.w #1,d0 ; Loop for normal chars
- bra .RightLoop
- .JumpedRight tst.w d1 ; Got new position ?
- bge.s .GotRight ; Yep -> do so
- move.w sgw_NumChars(a2),sgw_BufferPos(a2)
- bra.s .RightDone
- .GotRight move.w d1,sgw_BufferPos(a2) ; Store new position
- .RightDone move.w #EO_MOVECURSOR,sgw_EditOp(a2)
- bra.s .End
-
- .NoWordJump move.l sgw_IEvent(a2),a3
- move.w ie_Qualifier(a3),d0 ; Right Amiga pressed ?
- and.w #IEQUALIFIER_RCOMMAND,d0
- beq.s .NoAmiga
- cmp.w #96,ie_Code(a3) ; Char entered ?
- bge.s .NoAmiga
- move.w ie_Qualifier(a3),d0 ; Any shift pressed ?
- and.w #(IEQUALIFIER_LSHIFT|IEQUALIFIER_RSHIFT),d0
- bne.s .DoMenu
- cmp.w #$32,ie_Code(a3) ; Magic X
- beq.s .NoAmiga
- cmp.w #$10,ie_Code(a3) ; or Q pressed ?
- beq.s .NoAmiga
- .DoMenu move.l sgw_Actions(a2),d0 ; Ok -> Then use the menues
- or.l #(SGA_END|SGA_REUSE),d0
- and.l #~(SGA_USE|SGA_BEEP),d0
- move.l d0,sgw_Actions(a2)
- move.l sgw_GadgetInfo(a2),a0
- move.l ggi_Window(a0),DoActWindow ; Tell menu owner to reactivate
- move.l sgw_Gadget(a2),DoActGadget ; gadget
- bra.s .End
- .NoAmiga
- .End movem.l (sp)+,RegsAll
- rts
-
-
-
- **********************************************************************
- * A large multiplication routine LONG * LONG *
- **********************************************************************
- _mulu move.w d1,d2
- mulu.w d0,d2
- move.l d1,d3
- swap d3
- mulu.w d0,d3
- swap d3
- clr.w d3
- add.l d3,d2
- swap d0
- mulu.w d1,d0
- swap d0
- clr.w d0
- add.l d2,d0
- rts
-
-
- **********************************************************************
- * A large division routine LONG / LONG *
- **********************************************************************
- _divu move.l d1,-(a7)
- bsr.s .l1
- move.l (a7)+,d1
- tst.l d0
- rts
- .l1 swap d1
- tst.w d1
- bne.s .l2
- swap d1
- move.w d1,-(a7)
- move.w d0,-(a7)
- clr.w d0
- swap d0
- divu.w d1,d0
- move.l d0,d1
- swap d0
- move.w (a7)+,d1
- divu.w (a7)+,d1
- move.w d1,d0
- clr.w d1
- swap d1
- rts
- .l2 swap d1
- move.w d2,-(a7)
- move.l d3,-(a7)
- move.l d1,d3
- move.l d0,d1
- clr.w d1
- swap d1
- swap d0
- clr.w d0
- move.w #$f,d2
- .l4 add.l d0,d0
- addx.l d1,d1
- cmp.l d1,d3
- bhi.s .l3
- sub.l d3,d1
- addq.w #1,d0
- .l3 dbf d2,.l4
- move.l (a7)+,d3
- move.w (a7)+,d2
- rts
-
-
-
- **********************************************************************
- * Versionstring for C:Version-Prg *
- **********************************************************************
- VersionString dc.b 0,"$VER: KCommodity V"
- REVISION
- dc.b " ("
- REVDATE
- dc.b ")",0
- EVEN
-
-
-
- **********************************************************************
- * Template for CLI *
- **********************************************************************
- Template BOLDON
- SETFRONTPEN 2
- dc.b "KCommodity V"
- REVISION
- dc.b " ("
- REVDATE
- dc.b ") "
- STYLENORMAL
- SETFRONTPEN 1
- dc.b "by Kai Iske. SHAREWARE",$0a
- dc.b "USAGE : KCommodity",$0a
- dc.b " ToolType : Description : Default :",$0a
- dc.b " -------------------------------------------------------------------",$0a
- dc.b " [CX_PRIORITY=n] Priority of Broker 5",$0a
- dc.b " [CX_POPKEY=s] PopUpKey for Window LCOMMAND HELP",$0a
- dc.b " [CX_POPUP=YES|NO] PopUp on startup YES",$0a
- dc.b " [PORTNAME=s] Set name for ARexx-Port KComm.1",$0a
- dc.b " [TOOLPRI=n] Priority of Program 21 (Must be > 21)",$0a
- dc.b " [NOICON] Don`t display AppIcon ---",$0a
- TemplateEnd EVEN
- PressKey SETFRONTPEN 2
- dc.b "Press any key to continue....",13
- SETFRONTPEN 1
- PressKeyLen EQU *-PressKey
- ClearStr dc.b $9B,$30,$20,$70
- ClearStrLen EQU *-ClearStr
- EndAnyStr dc.b $9B,$20,$70,$9b,$4b,$9B,"0;39;49m",0
- EndAnyStrLen EQU *-EndAnyStr
-
-
-
-
- **********************************************************************
- * Variables *
- **********************************************************************
- IntName dc.b "intuition.library",0
- ComName dc.b "commodities.library",0
- LayerName dc.b "layers.library",0,0
- GadName dc.b "gadtools.library",0,0
- GfxName dc.b "graphics.library",0,0
- DiskFontName dc.b "diskfont.library",0,0
- RexxSysName dc.b "rexxsyslib.library",0,0
- WBName dc.b "workbench.library",0
- AslName dc.b "asl.library",0
- TimerName dc.b "timer.device",0,0
- AudioName dc.b "audio.device",0,0
- ConsoleName dc.b "console.device",0,0
- PortName dc.b "KComm-Port",0
- TimerPortName dc.b "KComm-Timer-Port",0
- AudioPortName dc.b "KComm-Audio-Port",0
- ARexxPortName dc.b "KComm.1",0
- ds.b 32
- AppPortName dc.b "KComm-App-Port",0
- EVEN
- TempName dc.b "T:KCX.TEMPFILE",0,0
- ConWinDef dc.b "RAW:0/0//150/Telefone log info",0
- EVEN
- CheckerName dc.b "KCOMM.TIME-PROCESS",0
- EVEN
- PrtName dc.b "PRT:",0
- EVEN
- _IntuitionBase dc.l 0
- _CxBase dc.l 0
- _LayersBase dc.l 0
- _GadToolsBase dc.l 0
- _GfxBase dc.l 0
- _DiskFontBase dc.l 0
- _RexxSysBase dc.l 0
- _AslBase dc.l 0
- _ConsoleBase dc.l 0
- _WorkBenchBase dc.l 0
- BrokerPort dc.l 0
- TimerPort dc.l 0
- AudioPort dc.l 0
- ARexxPort dc.l 0
- DoublePort dc.l 0
- AppPort dc.l 0
- CheckerProc dc.l 0
- CheckerProcSig dc.l 0
- MyBroker dc.l 0
- MsgType dc.l 0
- MsgID dc.l 0
- EventFilter dc.l 0
- PopUpFilter dc.l 0
- PageFilter dc.l 0
- PrefsFilter dc.l 0
- BillFilter dc.l 0
- HotKeyFilter dc.l 0
- ShellFilter dc.l 0
- UmlautFilter dc.l 0
- BrokerSigFlag dc.l 0
- TimerSigFlag dc.l 0
- ARexxSigFlag dc.l 0
- AlarmSigFlag dc.l 0
- HelpSigFlag dc.l 0
- AppSigFlag dc.l 0
- AlarmSigBit dc.l 0
- HelpSigBit dc.l 0
- ThisSig dc.l 0
- WindowSigFlag dc.l 0
- ClockSigFlag dc.l 0
- MyILock dc.l 0
- MouseX dc.l 0
- MouseY dc.l 0
- ActWindow dc.l 0
- WndHandle dc.l 0
- FirstGadget dc.l 0
- VisInfo dc.l 0
- MainMenu dc.l 0
- ClockHandle dc.l 0
- LogHandle dc.l 0
- LogGadget dc.l 0
- LogVisInfo dc.l 0
- LogMenu dc.l 0
- BillHandle dc.l 0
- BillRPort dc.l 0
- BillSigFlag dc.l 0
- BillGadget dc.l 0
- BillVisInfo dc.l 0
- BillMenu dc.l 0
- PrefsHandle dc.l 0
- PrefsSigFlag dc.l 0
- PrefsGadget dc.l 0
- PrefsVisInfo dc.l 0
- PrefsMenu dc.l 0
- HotKeyHandle dc.l 0
- HotKeySigFlag dc.l 0
- HotKeyGadget dc.l 0
- HotKeyVisInfo dc.l 0
- HotKeyMenu dc.l 0
- HelpNum dc.l 0
- HelpText dc.l 0
- HelpHandle dc.l 0
- HelpRPort dc.l 0
- HelpFont dc.l 0
- HelpGadget dc.l 0
- HelpVisInfo dc.l 0
- HelpMenu dc.l 0
- HelpScroll dc.l 0
- HelpItem dc.w 0
- ThisGadget dc.l 0
- BlankHandle dc.l 0
- FileHand dc.l 0
- TempHand dc.l 0
- OurLock dc.l 0
- PastLock dc.l 0
- QuitBroker dc.w 0
- ToolPri dc.l 21
- CXPri dc.l 5
- ClockWidth dc.w 0
- WinLeftEdge dc.l 0
- WinTopEdge dc.l 0
- ErrorNum dc.l -1
- MyBitMap dc.l 0
- MyRastPort dc.l 0
- MyFont dc.l 0
- BitMapWidth dc.w 0
- BitMapHeight dc.w 0
- BitMapDepth dc.w 0
- BitMapSize dc.l 0
- LeftEdge dc.l 0
- BlitWidth dc.l 0
- MyARexxMsg dc.l 0
- ARexxCommand dc.l 0
- ARexxAction dc.l 0
- AResult1 dc.l 0
- AResult2 dc.l 0
- IEClass dc.w 0
- IEvent dc.l 0
- ScreenOff dc.l 0
- MouseOff dc.l 0
- PageNum dc.l 0
- EWidth dc.l 0
- FWidth dc.l 0
- MyAslRequest dc.l 0
- AllocKey dc.w 0
- KCXAppIcon dc.l 0
- DoActWindow dc.l 0
- DoActGadget dc.l 0
- OldSprite dc.w -1,-1
- ToolPriStr dc.b "TOOLPRI",0
- PriStr dc.b "CX_PRIORITY",0
- KeyStr dc.b "CX_POPKEY",0
- PopUpStr dc.b "CX_POPUP",0,0
- PortNameStr dc.b "PORTNAME",0,0
- ActivateStr dc.b "ACTIVATE",0,0
- MouseStr dc.b "MOUSEMODE",0
- ShowCStr dc.b "SHOWCLOCK",0
- ClockWStr dc.b "CLOCKWIN",0,0
- ClockPosStr dc.b "CLOCKWINPOS",0
- ShowDateStr dc.b "SHOWDATE",0,0
- ShowDayStr dc.b "SHOWDAY",0
- ShortDayStr dc.b "SHORTDAY",0,0
- ShowSecsStr dc.b "SHOWSECS",0,0
- AmiDateStr dc.b "AMIDATE",0
- PageStr dc.b "PAGEKEY",0
- PageNumStr dc.b "PAGENUM",0
- AlarmStr dc.b "ALARM",0
- AlarmTimeStr dc.b "ALARMTIME",0
- SetEnvStr dc.b "SETENV",0,0
- ScreenTStr dc.b "SCREENTIME",0,0
- MouseTStr dc.b "MOUSETIME",0
- CycleWStr dc.b "CYCLEWIN",0,0
- CycleStr dc.b "CYCLEKEY",0,0
- ClickStr dc.b "CLICK",0
- ClickVStr dc.b "CLICKVOL",0,0
- BillPosStr dc.b "BILLWINPOS",0,0
- BillWinStr dc.b "BILLPOPUP",0
- PrefsPosStr dc.b "PREFSWINPOS",0
- LogCallStr dc.b "LOGCALLS",0,0
- WBFrontStr dc.b "WBFRONT",0
- LeftyStr dc.b "LEFTYMOUSE",0,0
- ESCCloseStr dc.b "ESCCLOSE",0,0
- ESCQualStr dc.b "ESCKEY",0,0
- UmlautOnStr dc.b "MAPUMLAUT",0
- BillKeyStr dc.b "BILLKEY",0
- PrefsKeyStr dc.b "PREFSKEY",0,0
- HotKeyStr dc.b "HOTWINKEY",0
- ShellKeyStr dc.b "SHELLKEY",0,0
- UmlautKeyStr dc.b "UMLAUTKEY",0
- ShellCommStr dc.b "SHELLCOMM",0
- IconStr dc.b "NOICON",0,0
- EnableStr dc.b "ENABLE",0,0
- DisableStr dc.b "DISABLE",0
- HideStr dc.b "HIDE",0,0
- AClearLogStr dc.b "CLEARLOG",0,0
- APopUpStr dc.b "POPUP",0
- AStatusStr dc.b "STATUS",0,0
- AReviseStr dc.b "REVISE",0,0
- AReviseAsmStr dc.b "ASM",0
- AReviseCStr dc.b "C",0
- ARevisePasStr dc.b "PAS",0
- ALoadPrefsStr dc.b "LOADPREFS",0
- ASavePrefsStr dc.b "SAVEPREFS",0
- OnString dc.b "ON",0,0
- OffString dc.b "OFF",0
- YesString dc.b "YES",0
- NoString dc.b "NO",0,0
- AskString dc.b "?",0
- EnvDayString dc.b "DAY",0
- EnvDateString dc.b "DATE",0,0
- EnvTimeString dc.b "TIME",0,0
- AuthorString dc.b "AUTHOR",0,0
- CompanyString dc.b "COMPANY",0
- FalseStr dc.b "0",0
- TrueStr dc.b "1",0
- FileName ds.b 128
- EVEN
-
-
-
-
-
-
- **********************************************************************
- * Some booleans *
- **********************************************************************
- DoActivate dc.b 1
- MouseMode dc.b 0
- ShowClock dc.b 1
- ClockWin dc.b 0
- ShowSecs dc.b 1
- AmiDate dc.b 0
- ShowDay dc.b 0
- ShowDate dc.b 0
- ShortDay dc.b 0
- DoAlarm dc.b 0
- SetEnv dc.b 0
- CycleWin dc.b 1
- KeyClick dc.b 1
- BillPopUp dc.b 1
- LogCalls dc.b 1
- WBFront dc.b 1
- LeftyMouse dc.b 0
- ESCClose dc.b 1
- MapUmlaut dc.b 0
- FLAGSET EQU *-DoActivate
-
- NoBillPopDown dc.b 0
- MouseTimeOut dc.b 0
- ScrTimeOut dc.b 0
- SprOff dc.b 0
- OnlyLog dc.b 0
- LogInputEnd dc.b 0
- Disabled dc.b 0
- DoPopUp dc.b 1
- TimeReset dc.b 1
- Online dc.b 0
- CheapMode dc.b 0
- DoRemakeCosts dc.b 0
- DispAppIcon dc.b 1
- Scrolling dc.b 0
- HelpPage dc.b 0
- EVEN
- ScreenTime dc.l 60
- MouseTime dc.l 10
- ClickVol dc.l 32
- PopQualNum dc.l 0
- ESCQualNum dc.l 4
- LONGQUAL EQU *-ScreenTime
-
-
-
- **********************************************************************
- * Pointers to Device-Requests *
- **********************************************************************
- TimerReq dc.l 0
- AudioReq dc.l 0
- ConsoleReq dc.l 0
-
-
-
- **********************************************************************
- * Audio-Stuff *
- **********************************************************************
- LEFTCH0 EQU 1
- RIGHTCH0 EQU 2
- LEFTCH1 EQU 8
- RIGHTCH1 EQU 4
- AnyChannel dc.b LEFTCH0|RIGHTCH0
- dc.b LEFTCH0|RIGHTCH1
- dc.b LEFTCH1|RIGHTCH0
- dc.b LEFTCH1|RIGHTCH1
- dc.b LEFTCH0
- dc.b LEFTCH1
- dc.b RIGHTCH0
- dc.b RIGHTCH1
-
-
- **********************************************************************
- * Tags for new process of timer events *
- **********************************************************************
- CheckerTags dc.l NP_Entry ; We only supply an entry point
- dc.l TimeChecker
- dc.l NP_Name ; Name of process
- dc.l CheckerName
- dc.l NP_Priority ; We run at a higher proirity
- dc.l 3 ; so that we`re quite fast
- dc.l NP_StackSize ; Stack-Size to be used
- dc.l 4096
- dc.l TAG_DONE
- dc.l 0
-
-
- **********************************************************************
- * ARexx-Status pointers and their numbers *
- **********************************************************************
- RESULTBYTE EQU 1
- RESULTWORD EQU 2
- RESULTLONG EQU 3
- RESULTSTRING EQU 4
- RESULTCLOCKPOS EQU 5
- RESULTTIME EQU 6
- RESULTPOP EQU 7
- RESULTBILLPOS EQU 8
- RESULTPREFSPOS EQU 9
- ARexxStatus dc.l RESULTLONG,ToolPri
- dc.l RESULTLONG,CXPri
- dc.l RESULTSTRING,PopUpKey
- dc.l RESULTBYTE,DoPopUp
- dc.l RESULTBYTE,DoActivate
- dc.l RESULTBYTE,MouseMode
- dc.l RESULTBYTE,ShowClock
- dc.l RESULTBYTE,ClockWin
- dc.l RESULTCLOCKPOS,0 ; This is for the ClockWinPos
- dc.l RESULTBYTE,ShowDate
- dc.l RESULTBYTE,ShowDay
- dc.l RESULTBYTE,ShowSecs
- dc.l RESULTBYTE,AmiDate
- dc.l RESULTSTRING,PageHotKey
- dc.l RESULTLONG,PageNum
- dc.l RESULTBYTE,DoAlarm
- dc.l RESULTTIME,0 ; This is for alarmtime
- dc.l RESULTBYTE,Disabled
- dc.l RESULTPOP,0 ; This is for poped up mode
- dc.l RESULTBYTE,SetEnv
- dc.l RESULTBYTE,ShortDay
- dc.l RESULTLONG,ScreenTime
- dc.l RESULTLONG,MouseTime
- dc.l RESULTBYTE,CycleWin
- dc.l RESULTLONG,PopQualNum
- dc.l RESULTBYTE,KeyClick
- dc.l RESULTLONG,ClickVol
- dc.l RESULTBYTE,LogCalls
- dc.l RESULTBILLPOS,0 ; BillWinPos
- dc.l RESULTBYTE,BillPopUp
- dc.l RESULTPREFSPOS,0 ; PrefsWinPos
- dc.l RESULTBYTE,WBFront
- dc.l RESULTBYTE,LeftyMouse
- dc.l RESULTBYTE,ESCClose
- dc.l RESULTLONG,ESCQualNum
- dc.l RESULTSTRING,BillHotKey
- dc.l RESULTSTRING,PrefsHotKey
- dc.l RESULTSTRING,HotWinHotKey
- dc.l RESULTSTRING,ShellHotKey
- dc.l RESULTSTRING,UmlautHotKey
- dc.l RESULTSTRING,SystemParam
- dc.l RESULTBYTE,MapUmlaut
- StatusCount EQU (*-ARexxStatus)/8
- StatusNum dc.l 0
- ResultData dc.l 0
- ResultWinData dc.w 0
- dc.w 0
-
-
-
-
-
- **********************************************************************
- * Formats and data for C/ASM/PAS Revision Headers *
- **********************************************************************
- CHeader dc.b "/* $Revision Header built by KCommodity by Kai Iske *** (do not edit) ************",$0a
- dc.b "**",$0a,0
- EVEN
- CLineNL dc.b "**",$0a,0
- CLine dc.b "** ",0,0
- CCopyRight dc.b "** © Copyright by %s",$0a
- dc.b "**",$0a,0
- EVEN
- CFile dc.b "** File : %s",$0a,0
- EVEN
- CCreatedOn dc.b "** Created on : %s, %s %s",$0a,0
- EVEN
- CAuthor dc.b "** Created by : %s",$0a,0
- EVEN
- CRevision dc.b "** Current revision : V%d.%02.2d",$0a,0
- EVEN
- CPurpose dc.b "**",$0a
- dc.b "**",$0a
- dc.b "** Purpose",$0a
- dc.b "** -------",$0a,0
- EVEN
- CLog dc.b "**",$0a
- dc.b "** Revision V%d.%02.2d",$0a
- dc.b "** --------------",$0a
- dc.b "** changed on %s, %s %s by %s. LogMessage :",$0a,0
- EVEN
- CLogInit dc.b "**",$0a
- dc.b "** Revision V%d.%02.2d",$0a
- dc.b "** --------------",$0a
- dc.b "** --- Initial release ---",$0a
- dc.b "**",$0a
- CEnd dc.b "*********************************************************************************/",$0a,0
- EVEN
- CRevDefine1 dc.b '#define REVISION "%d.%02.2d"',$09,$09,"/* This is the revision number */",$0a
- dc.b '#define REVDATE "%s"',$09,$09,"/* This is the revision date */",$0a
- EVEN
-
-
-
- AsmHeader dc.b ";* $Revision Header built by KCommodity by Kai Iske *** (do not edit) ************",$0a
- dc.b ";*",$0a,0
- EVEN
- AsmLineNL dc.b ";*",$0a,0
- AsmLine dc.b ";* ",0,0
- AsmCopyRight dc.b ";* © Copyright by %s",$0a
- dc.b ";*",$0a,0
- EVEN
- AsmFile dc.b ";* File : %s",$0a,0
- EVEN
- AsmCreatedOn dc.b ";* Created on : %s, %s %s",$0a,0
- EVEN
- AsmAuthor dc.b ";* Created by : %s",$0a,0
- EVEN
- AsmRevision dc.b ";* Current revision : V%d.%02.2d",$0a,0
- EVEN
- AsmPurpose dc.b ";*",$0a
- dc.b ";*",$0a
- dc.b ";* Purpose",$0a
- dc.b ";* -------",$0a,0
- EVEN
- AsmLog dc.b ";*",$0a
- dc.b ";* Revision V%d.%02.2d",$0a
- dc.b ";* --------------",$0a
- dc.b ";* changed on %s, %s %s by %s. LogMessage :",$0a,0
- EVEN
- AsmLogInit dc.b ";*",$0a
- dc.b ";* Revision V%d.%02.2d",$0a
- dc.b ";* --------------",$0a
- dc.b ";* --- Initial release ---",$0a
- dc.b ";*",$0a
- AsmEnd dc.b ";*********************************************************************************",$0a,0
- EVEN
- AsmRevDefine1 dc.b "REVISION MACRO ; This is the macro for the revision number",$0a
- dc.b ' dc.b "%d.%02.2d"',$0a
- dc.b " ENDM",$0a
- dc.b "REVDATE MACRO ; This is the macro for the revision date",$0a
- dc.b ' dc.b "%s"',$0a
- dc.b " ENDM",$0a,0
- EVEN
-
-
- PASHeader dc.b "(* $Revision Header built by KCommodity by Kai Iske *** (do not edit) ************",$0a
- dc.b "**",$0a,0
- EVEN
- PASLogInit dc.b "**",$0a
- dc.b "** Revision V%d.%02.2d",$0a
- dc.b "** --------------",$0a
- dc.b "** --- Initial release ---",$0a
- dc.b "**",$0a
- PASEnd dc.b "*********************************************************************************)",$0a,0
- EVEN
- PASRevDefine1 dc.b "CONST (* Place all your constants beneith these ones *)",$0a
- dc.b ' REVISION = "%d.%02.2d" (* This is the revision number *)',$0a
- dc.b ' REVDATE = "%s" (* This is the revision date *)',$0a,0
- EVEN
-
- RevHeader dc.l 0
- RevLineNL dc.l 0
- RevLine dc.l 0
- RevCompany dc.l 0
- RevFile dc.l 0
- RevCreatedOn dc.l 0
- RevAuthor dc.l 0
- RevRevision dc.l 0
- RevPurpose dc.l 0
- RevLog dc.l 0
- RevLogInit dc.l 0
- RevEnd dc.l 0
- RevDefine dc.l 0
- RevCompanyDat dc.l Company
- RevFileDat dc.l FileName
- RevRevisionDat dc.w 0
- dc.w 0
- RevCreatedOnDat dc.l RevDayString
- dc.l RevDateString
- dc.l RevTimeString
- RevAuthorDat dc.l Author
- RevDefineDat dc.w 0
- dc.w 0
- dc.l RevDateString
- PurposeMsg ds.b 77*5
- LogMsg ds.b 77*5
- Author ds.b 130
- Company ds.b 130
- ReadBuffer dc.l 0
- DefaultName dc.b "--- Unknown ---",0
- EVEN
-
-
-
- **********************************************************************
- * This is our datetime *
- **********************************************************************
- MyDateTime ds.b dat_SIZEOF
- DayString ds.b LEN_DATSTRING
- DateString ds.b LEN_DATSTRING
- TimeString ds.b LEN_DATSTRING
- OnlineString ds.b LEN_DATSTRING
- AllDayString ds.b LEN_DATSTRING
- AllDateString ds.b LEN_DATSTRING
- AllTimeString ds.b LEN_DATSTRING
- RevDayString ds.b LEN_DATSTRING
- RevDateString ds.b LEN_DATSTRING
- RevTimeString ds.b LEN_DATSTRING
- CopyTime ds.b LEN_DATSTRING
- **********************************************************************
- * Formats for displaying the day *
- **********************************************************************
- FormatData dc.l DayString
- dc.l DateString
- dc.l TimeString
- FinalString ds.b ((LEN_DATSTRING*3)+10)
- OnlineFormStr dc.b "Online ",0
- EVEN
- EString dc.b "E",0
- EVEN
- FString dc.b "F",0
- EVEN
-
-
- **********************************************************************
- * The main structure of all...The Broker *
- **********************************************************************
- CNOP 0,4
- MyBrokerDef dc.b NB_VERSION ; Commodities-Version (NEEDED)
- dc.b 0
- dc.l BrokerName ; Name of broker (For Exchange-Prg)
- dc.l BrokerTitle ; Title (For Exchange-Prg)
- dc.l BrokerDesc ; Broker-Description (For Exchange-Prg)
- dc.w NBU_NOTIFY!NBU_UNIQUE ; Notify broker, we are unique
- dc.w COF_SHOW_HIDE ; We can be hidden/shown
- dc.w 0 ; Pri of broker plus an alignment byte
- dc.l 0 ; Port-Pointer
- dc.w 0 ; Dummy
- BrokerName dc.b "KCommodity",0
- EVEN
- BrokerTitle dc.b "KCommodity V"
- REVISION
- dc.b " ("
- REVDATE
- dc.b ")"
- dc.b ", Kai Iske",0
- EVEN
- BrokerDesc dc.b "Multifunction commodity. SHAREWARE",0
- EVEN
-
-
-
- **********************************************************************
- * Definition of Input-Filter *
- **********************************************************************
- CNOP 0,4
- MyCustomIXDef dc.b IX_VERSION ; Version of filter (NEEDED)
- dc.b 0 ; Filter Event-Class (that we want)
- dc.w 0 ; Codes (Bits)
- dc.w 0 ; Codes-Mask for filtering the Codes
- dc.w 0 ; Qualifier
- dc.w 0 ; Qualifier-Mask
- dc.w 0 ; Qualifier-Synonyms
-
-
-
- **********************************************************************
- * AutoRequester-Texts *
- **********************************************************************
- Only20ITxt dc.b 0,1
- dc.b RP_JAM1
- dc.b 0
- dc.w 10,10
- dc.l 0
- dc.l Only20Txt
- dc.l 0
- Only20Txt dc.b "This only runs under OS 2.x !",0,$0a
- Only20TxtEnd
- EVEN
- OkITxt dc.b 2,1
- dc.b RP_JAM1
- dc.b 0
- dc.w 6,3
- dc.l 0
- dc.l OkTxt
- dc.l 0
- OkTxt dc.b "OK",0
- EVEN
-
-
- **********************************************************************
- * Error-Texts *
- **********************************************************************
- EasyTitle dc.b "KCommodity V"
- REVISION
- EasyTitleEnd
- EVEN
- EasyTexts dc.l NoLibErr,NoMsgPErr,NoBrokerErr,NoCFilterErr
- dc.l CFilterErr,BrokerErr,NoTimerPortErr,NoPlanesErr
- dc.l NoFontErr,DefPopUpKey,DefPageKey,NoARexxPortErr
- dc.l OutOfMemory,NoBitMap,NoRastPort,NoAudioPortErr
- dc.l NoChannelsErr,NoPlayingErr,NoTempBuff
- dc.l NoTimerBuff,NoAudioBuff,NoConsoleBuff,DefPrefsKeyUse
- dc.l DefBillKeyUse,DefHotWinKeyUse,DefShellKeyUse,NoHotKeyErr
- dc.l DefUmlautKeyUse
- NoLibErr dc.b "%s could not be opened.",0
- EVEN
- NoMsgPErr dc.b "Broker-Port could not be created.",0
- EVEN
- NoBrokerErr dc.b "Broker could not be set up.",0
- EVEN
- NoCFilterErr dc.b "Filter for CUSTOM handler could not be set up.",0
- EVEN
- CFilterErr dc.b "Definition of CUSTOM handler failed.",0
- EVEN
- BrokerErr dc.b "Broker could not be set up correctly.",0
- EVEN
- NoTimerPortErr dc.b "Could not generate Timer-Port.",0
- EVEN
- NoPlanesErr dc.b "Could not allocate memory for BitPlanes.",0
- EVEN
- NoFontErr dc.b "Could not set appropriate font.",0
- EVEN
- DefPopUpKey dc.b "User PopUp-HotKey",$0a,$0a
- dc.b "%s",$0a,$0a
- dc.b "could not be installed.",$0a,$0a
- dc.b "Now using default : LCOMMAND HELP",0
- EVEN
- DefPageKey dc.b "User Page-HotKey",$0a,$0a
- dc.b "%s",$0a,$0a
- dc.b "could not be installed.",$0a,$0a
- dc.b "Now using default : RALT HELP",0
- EVEN
- NoARexxPortErr dc.b "Could not set up ARexx-Port.",0
- EVEN
- OutOfMemory dc.b "Sorry out of memory.",0
- EVEN
- NoBitMap dc.b "Sorry, could not generate BitMap.",0
- EVEN
- NoRastPort dc.b "Sorry, could not generate RastPort.",0
- EVEN
- NoAudioPortErr dc.b "Audio-Port could not be set up.",0
- EVEN
- NoChannelsErr dc.b "Channel for click could not be allocated.",0
- EVEN
- NoPlayingErr dc.b "Click-Sound can not be played.",0
- EVEN
- NoTempBuff dc.b "Could not allocate memory for Temp-Buffer.",0
- EVEN
- NoTimerBuff dc.b "Could not allocate memory for Timer-Request.",0
- EVEN
- NoAudioBuff dc.b "Could not allocate memory for Audio-Request.",0
- EVEN
- NoConsoleBuff dc.b "Could not allocate memory for Console-Request.",0
- EVEN
- DefPrefsKeyUse dc.b "User Preferences-HotKey",$0a,$0a
- dc.b "%s",$0a,$0a
- dc.b "could not be installed.",$0a,$0a
- dc.b "Now using default : ALT SHIFT P",0
- EVEN
- DefBillKeyUse dc.b "User BillWindow-HotKey",$0a,$0a
- dc.b "%s",$0a,$0a
- dc.b "could not be installed.",$0a,$0a
- dc.b "Now using default : ALT SHIFT B",0
- EVEN
- DefHotWinKeyUse dc.b "User HotKeyWindow-HotKey",$0a,$0a
- dc.b "%s",$0a,$0a
- dc.b "could not be installed.",$0a,$0a
- dc.b "Now using default : ALT SHIFT H",0
- EVEN
- DefShellKeyUse dc.b "User Shell-HotKey",$0a,$0a
- dc.b "%s",$0a,$0a
- dc.b "could not be installed.",$0a,$0a
- dc.b "Now using default : ALT SHIFT S",0
- EVEN
- NoHotKeyErr dc.b "Default HotKey",$0a,$0a
- dc.b "%s",$0a,$0a
- dc.b "could not be set up. Aborting",0
- EVEN
- DefUmlautKeyUse dc.b "User Umlaut-HotKey",$0a,$0a
- dc.b "%s",$0a,$0a
- dc.b "could not be installed.",$0a,$0a
- dc.b "Now using default : ALT SHIFT U",0
- EVEN
-
-
- **********************************************************************
- * About requester *
- **********************************************************************
- AboutText dc.b "KCommodity V"
- REVISION
- dc.b $0a
- dc.b "last changed : "
- REVDATE
- dc.b $0a
- dc.b "written by Kai Iske",$0a
- dc.b "© 1992 Kai Iske, ShareWare 20 DM, $20",$0a,0
- EVEN
- AboutGadgets dc.b "OK|REGISTER",0
- EVEN
-
-
-
- **********************************************************************
- * Include the text for registration *
- **********************************************************************
- RegisterTxt INCBIN "Register.TXT"
- dc.b 0,0
- EVEN
- REGISTERLEN EQU *-RegisterTxt
-
-
- **********************************************************************
- * These are the important dos errors *
- **********************************************************************
- DosErrors dc.l 0,0,Error202,0,Error204,Error205,0,0,0,0,0,0,0
- dc.l Error213,Error214,0,0,0,Error218,0,0,Error221
- dc.l Error222,Error223,Error224,Error225,Error226
- dc.l 0,0,0,0,0,0,0
- Error202 dc.b "Can`t open %s.",$0a
- dc.b "Object in use.",0
- EVEN
- Error204 dc.b "Can`t open %s.",$0a
- dc.b "Directory not found.",0
- EVEN
- Error205 dc.b "Can`t open %s.",$0a
- dc.b "Object not found.",0
- EVEN
- Error213 dc.b "Disk not validated.",0
- EVEN
- Error214 dc.b "Disk is write-protected.",0
- EVEN
- Error218 dc.b "Device/Volume not mounted.",0
- EVEN
- Error221 dc.b "Disk is full.",0
- EVEN
- Error222 dc.b "Can`t delete %s.",$0a
- dc.b "Object is protected from deletion.",0
- EVEN
- Error223 dc.b "Can`t write to %s.",$0a
- dc.b "File is write-protected.",0
- EVEN
- Error224 dc.b "Can`t read %s",$0a
- dc.b "File is read protected",0
- EVEN
- Error225 dc.b "Not a valid DOS disk",0
- EVEN
- Error226 dc.b "No disk in drive",0
- EVEN
- EasyGadget dc.b "OK",0
- EasyArg dc.l 0
- EVEN
-
-
- **********************************************************************
- * Easy-Requeststructure *
- **********************************************************************
- MyEasyRequest dc.l es_SIZEOF
- dc.l 0
- dc.l 0
- dc.l 0
- dc.l 0
-
-
- **********************************************************************
- * Definition for the blanked screen *
- **********************************************************************
- BlankScreenDef dc.w 0,0
- dc.w 64,-1
- dc.w 1
- dc.b -1,-1
- dc.w 0
- dc.w CUSTOMSCREEN|SCREENQUIET
- dc.l 0
- dc.l 0
- dc.l 0
- dc.l 0
-
-
- **********************************************************************
- * Some defines fo easy customization *
- **********************************************************************
- WINWIDTH EQU 620
- WINHEIGHT EQU 155
- WINIDCMP EQU CYCLEIDCMP|STRINGIDCMP|CHECKBOXIDCMP|BUTTONIDCMP|IDCMP_CLOSEWINDOW|IDCMP_VANILLAKEY|IDCMP_ACTIVEWINDOW|IDCMP_MENUPICK|IDCMP_CHANGEWINDOW|IDCMP_MENUHELP|IDCMP_RAWKEY
- WINFLAGS EQU WFLG_DRAGBAR|WFLG_CLOSEGADGET|WFLG_DEPTHGADGET|WFLG_ACTIVATE
- LOGWINWIDTH EQU 630
- LOGWINHEIGHT EQU 86
- LOGWINIDCMP EQU IDCMP_CLOSEWINDOW|STRINGIDCMP|BUTTONIDCMP|IDCMP_ACTIVEWINDOW|IDCMP_VANILLAKEY|IDCMP_CHANGEWINDOW
- LOGWINFLAGS EQU WFLG_DEPTHGADGET|WFLG_DRAGBAR|WFLG_CLOSEGADGET|WFLG_ACTIVATE|WFLG_RMBTRAP
- BILLWINWIDTH EQU 240
- BILLWINHEIGHT EQU 80
- BILLWINIDCMP EQU MXIDCMP|IDCMP_CLOSEWINDOW|IDCMP_VANILLAKEY|IDCMP_CHANGEWINDOW|IDCMP_MENUPICK|IDCMP_RAWKEY|IDCMP_MENUHELP
- BILLWINFLAGS EQU WFLG_DEPTHGADGET|WFLG_DRAGBAR|WFLG_CLOSEGADGET
- PREFSWINWIDTH EQU 422
- PREFSWINHEIGHT EQU 136
- PREFSWINIDCMP EQU BUTTONIDCMP|STRINGIDCMP|LISTVIEWIDCMP|IDCMP_CLOSEWINDOW|IDCMP_VANILLAKEY|IDCMP_RAWKEY|IDCMP_CHANGEWINDOW|IDCMP_MENUHELP|IDCMP_MENUPICK|IDCMP_ACTIVEWINDOW
- PREFSWINFLAGS EQU WFLG_DEPTHGADGET|WFLG_DRAGBAR|WFLG_CLOSEGADGET|WFLG_ACTIVATE
- CLOCKWIDTH EQU 1
- CLOCKHEIGHT EQU 1
- CLOCKIDCMP EQU IDCMP_CHANGEWINDOW|IDCMP_CLOSEWINDOW
- CLOCKFLAGS EQU WFLG_CLOSEGADGET|WFLG_DEPTHGADGET|WFLG_DRAGBAR|WFLG_RMBTRAP
- KEYWINWIDTH EQU 400
- KEYWINHEIGHT EQU 98
- KEYWINIDCMP EQU STRINGIDCMP|IDCMP_CLOSEWINDOW|IDCMP_VANILLAKEY|IDCMP_CHANGEWINDOW|IDCMP_MENUPICK|IDCMP_ACTIVEWINDOW|IDCMP_RAWKEY|IDCMP_MENUHELP
- KEYWINFLAGS EQU WFLG_CLOSEGADGET|WFLG_DEPTHGADGET|WFLG_DRAGBAR|WFLG_ACTIVATE
- HELPWINWIDTH EQU 600
- HELPWINHEIGHT EQU 100
- HELPWINIDCMP EQU SLIDERIDCMP|IDCMP_MOUSEMOVE|ARROWIDCMP|IDCMP_CLOSEWINDOW|IDCMP_RAWKEY|IDCMP_CHANGEWINDOW|IDCMP_MENUPICK
- HELPWINFLAGS EQU WFLG_CLOSEGADGET|WFLG_DEPTHGADGET|WFLG_DRAGBAR|WFLG_ACTIVATE
- BEVELWIDTH EQU 64+INTERWIDTH
- BEVELHEIGHT EQU 13
- **********************************************************************
- * Some defines for the gadgets *
- **********************************************************************
- GADWIDTH EQU 90
- GADHEIGHT EQU 12
- STRGADWIDTH EQU 260
- INTGADWIDTH EQU 45
- LOGSGADWIDTH EQU 620
- LOGINTWIDTH EQU 36
- PREFINTGADWIDTH EQU 54
- CYCLEWIDTH EQU 120
- **********************************************************************
- * This is our Windowstructure *
- **********************************************************************
- MyWindowDef dc.w 0,0
- dc.w 0,0
- dc.b 0,1
- dc.l 0
- dc.l 0
- dc.l 0
- dc.l 0
- dc.l ControlTitle
- dc.l 0
- dc.l 0
- dc.w 0,0,0,0
- dc.w WBENCHSCREEN
- ControlTitle dc.b "KCommodity : HotKey="
- PopUpKey ds.b 80
- DefaultPopUpKey dc.b "LCOMMAND HELP",0
- EVEN
- WindowScrTitle dc.b "KCommodity V"
- REVISION
- dc.b " ("
- REVDATE
- dc.b ") "
- dc.b "by Kai Iske. SHAREWARE"
-
-
-
- **********************************************************************
- * Definition for Clockwindow *
- **********************************************************************
- ClockWinDef dc.w 0,0
- dc.w 0,0
- dc.b 0,1
- dc.l 0
- dc.l 0
- dc.l 0
- dc.l 0
- dc.l 0
- dc.l 0
- dc.l 0
- dc.w 0,0,0,0
- dc.w WBENCHSCREEN
-
-
- **********************************************************************
- * Definition of Log/Purpose window *
- **********************************************************************
- LogWinDef dc.w 0,0
- dc.w 0,0
- dc.b 0,1
- dc.l 0
- dc.l 0
- dc.l 0
- dc.l 0
- dc.l 0
- dc.l 0
- dc.l 0
- dc.w 0,0,0,0
- dc.w WBENCHSCREEN
- LogWinTitle dc.b "You can now enter a 5 lines (75 chars per line) Log Message",0
- EVEN
- PurposeWinTitle dc.b "You can now enter a 5 lines (75 chars per line) Purpos Message",0
- EVEN
-
-
-
- **********************************************************************
- * Telefon cost window *
- **********************************************************************
- BillWinDef dc.w 400,11
- dc.w BILLWINWIDTH,BILLWINHEIGHT
- dc.b 0,1
- dc.l 0
- dc.l 0
- dc.l 0
- dc.l 0
- dc.l BillTitle
- dc.l 0
- dc.l 0
- dc.w 0,0,0,0
- dc.w WBENCHSCREEN
- BillTitle dc.b "Bill HotKey="
- BillHotKey ds.b 80
- DefBillHotKey dc.b "ALT SHIFT B",0
- EVEN
-
-
-
- **********************************************************************
- * Bill-Preferences window definition *
- **********************************************************************
- PrefsWinDef dc.w 0,0
- dc.w PREFSWINWIDTH,PREFSWINHEIGHT
- dc.b 0,1
- dc.l 0
- dc.l 0
- dc.l 0
- dc.l 0
- dc.l PrefsTitle
- dc.l 0
- dc.l 0
- dc.w 0,0,0,0
- dc.w WBENCHSCREEN
- PrefsTitle dc.b "Telefone preferences HotKey="
- PrefsHotKey ds.b 80
- DefPrefsHotKey dc.b "ALT SHIFT P",0
- EVEN
-
-
-
- **********************************************************************
- * Definition for HotKey window *
- **********************************************************************
- HotKeyWinDef dc.w 0,0
- dc.w KEYWINWIDTH,KEYWINHEIGHT
- dc.b 0,1
- dc.l 0
- dc.l 0
- dc.l 0
- dc.l 0
- dc.l HotWinTitle
- dc.l 0
- dc.l 0
- dc.w 0,0,0,0
- dc.w WBENCHSCREEN
- HotWinTitle dc.b "HotKeys HotKey="
- HotWinHotKey ds.b 80
- DefHotWinHotKey dc.b "ALT SHIFT H",0
- EVEN
-
-
- **********************************************************************
- * Definition of Help-Window *
- **********************************************************************
- HelpWinDef dc.w 0,0
- dc.w HELPWINWIDTH,HELPWINHEIGHT
- dc.b 0,1
- dc.l 0
- dc.l 0
- dc.l 0
- dc.l 0
- dc.l HelpTitle
- dc.l 0
- dc.l 0
- dc.w 0,0,0,0
- dc.w WBENCHSCREEN
- HelpTitle dc.b "KCommodity Help for : "
- HelpDescr ds.b 40
- HelpFile dc.b "ENV:KCX/"
- HelpName ds.b 128
- EVEN
- MainHelpFile dc.b "MainHelp",0
- EVEN
- PrefsHelpFile dc.b "PrefsHelp",0
- EVEN
- BillHelpFile dc.b "BillHelp",0
- EVEN
- HotKeyHelpFile dc.b "HotKeyHelp",0
- EVEN
-
-
- **********************************************************************
- * Our tags for the window *
- **********************************************************************
- WindowTags dc.l WA_AutoAdjust
- dc.l 1
- dc.l WA_InnerWidth
- WinWidth dc.l 0
- dc.l WA_InnerHeight
- WinHeight dc.l 0
- dc.l WA_ScreenTitle
- dc.l WindowScrTitle
- dc.l WA_IDCMP
- WinIDCMP dc.l 0
- dc.l WA_Flags
- WinFlags dc.l 0
- dc.l WA_MenuHelp
- DoMenuHelp dc.l 1
- dc.l TAG_DONE
- dc.l 0
-
-
-
- **********************************************************************
- * And here comes a plain NewGadget-Structure *
- **********************************************************************
- DummyNewGadget dc.w 10,0 ; Left and top edge
- dc.w GADWIDTH,GADHEIGHT ; Width and height
- dc.l 0 ; Text pointer
- dc.l GadgetTxtAttr ; TextAttr
- GadNum dc.w 1 ; Gadget ID
- dc.l 0 ; Gadget Flags
- dc.l 0 ; For use by GetVisualInfo()
- dc.l 0 ; User Data
-
-
-
- **********************************************************************
- * These are the tags for the new gadgets *
- **********************************************************************
- ButtonTags dc.l GT_Underscore
- dc.b 0,0,0,'_'
- dc.l TAG_DONE
- dc.l 0
-
-
-
- **********************************************************************
- * Thanks to Olaf 'Olsen' Barthels great TERM I was able to *
- * add a String-Edit Hook, since this function was not *
- * really documented. Thanx Olaf *
- **********************************************************************
- IFND GTST_EditHook
- GTST_EditHook EQU GT_TagBase+55
- ENDC
-
- **********************************************************************
- * These are the tags for the string-gadgets *
- **********************************************************************
- StringTags dc.l GT_Underscore
- dc.b 0,0,0,'_'
- dc.l GTST_String
- StringConts dc.l 0
- dc.l GTST_MaxChars
- StrMax dc.l 0
- dc.l GA_TabCycle
- dc.l 1
- dc.l STRINGA_ExitHelp
- dc.l 1
- dc.l GTST_EditHook
- dc.l StrEditHook
- dc.l TAG_DONE
- dc.l 0
-
- **********************************************************************
- * Tags for integer gadgets *
- **********************************************************************
- IntegerTags dc.l GT_Underscore
- dc.b 0,0,0,'_'
- dc.l GTIN_Number
- IntConts dc.l 0
- dc.l GTIN_MaxChars
- IntMax dc.l 3
- dc.l STRINGA_ExitHelp
- dc.l 1
- dc.l GA_TabCycle
- dc.l 1
- dc.l GTST_EditHook
- dc.l StrEditHook
- dc.l TAG_DONE
- dc.l 0
-
- **********************************************************************
- * This is the hook for the String/Integer-Gadget editing *
- **********************************************************************
- StrEditHook ds.b h_SIZEOF
-
- **********************************************************************
- * Tags for cycle gadget *
- **********************************************************************
- CycleTags dc.l GT_Underscore
- dc.b 0,0,0,'_'
- dc.l GTCY_Labels
- CycLabels dc.l 0
- dc.l GTCY_Active
- CycActive dc.l 0
- dc.l TAG_DONE
- dc.l 0
-
-
- **********************************************************************
- * Tags for MutualXclude gadgets *
- **********************************************************************
- MxTags dc.l GT_Underscore
- dc.b 0,0,0,'_'
- dc.l GTMX_Labels
- MxLabels dc.l 0
- dc.l GTMX_Active
- MxActive dc.l 0
- dc.l GTMX_Spacing
- dc.l 4
- dc.l TAG_DONE
- dc.l 0
-
-
- **********************************************************************
- * This is just a tag for changing the defaults for gads *
- **********************************************************************
- CheckBoxTags dc.l GT_Underscore
- dc.b 0,0,0,'_'
- dc.l GTCB_Checked
- SelectMode dc.l 1
- dc.l TAG_DONE
- dc.l 0
-
-
- **********************************************************************
- * This is a tag for ScrollerGadgets *
- **********************************************************************
- ScrollerTags dc.l GTSC_Top
- ScrollTop dc.l 0
- dc.l GTSC_Total
- ScrollTotal dc.l 0
- dc.l GTSC_Visible
- ScrollVis dc.l 9
- dc.l GTSC_Arrows
- dc.l 10
- dc.l PGA_Freedom
- dc.l LORIENT_VERT
- dc.l GA_Immediate
- dc.l 1
- dc.l GA_RelVerify
- dc.l 1
- dc.l TAG_DONE
- dc.l 0
-
-
- **********************************************************************
- * This is the tag for disabling gadgets *
- **********************************************************************
- DisableTag dc.l GA_Disabled
- GadDisable dc.l 0
- dc.l TAG_DONE
- dc.l 0
-
-
- **********************************************************************
- * Tags for a BevelBox *
- **********************************************************************
- BevelTag dc.l GTBB_Recessed
- dc.l 1
- dc.l GT_VisualInfo
- BevelVisInfo dc.l 0
- dc.l TAG_DONE
- dc.l 0
-
-
-
-
- **********************************************************************
- * FileRequester tags *
- **********************************************************************
- AslFileTags dc.l ASL_Hail
- FileReqHeader dc.l 0
- dc.l ASL_Window
- FileReqWin dc.l 0
- dc.l ASL_LeftEdge
- FileReqLeft dc.l 0
- dc.l ASL_TopEdge
- FileReqTop dc.l 0
- dc.l ASL_Width
- FileReqWidth dc.l 320
- dc.l ASL_Height
- FileReqHeight dc.l 140
- dc.l ASL_File
- FileReqFile dc.l 0
- dc.l ASL_Dir
- FileReqDir dc.l 0
- dc.l TAG_DONE
- dc.l 0
-
-
- **********************************************************************
- * HotKey definitions *
- **********************************************************************
- PageHotKey ds.b 80
- DefPageHotKey dc.b "RALT HELP",0
- EVEN
- ShellHotKey ds.b 80
- DefShellHotKey dc.b "ALT SHIFT S",0
- EVEN
- UmlautHotKey ds.b 80
- DefUmlautHK dc.b "ALT SHIFT U",0
- EVEN
- POPUPKEYID EQU 1 ; Definitions for IDs
- PAGEKEYID EQU 2
- PREFSKEYID EQU 3
- BILLKEYID EQU 4
- HOTWINKEYID EQU 5
- SHELLKEYID EQU 6
- RAWEVENTID EQU 7
- UMLAUTKEYID EQU 8
-
-
-
- **********************************************************************
- * Tags for use to open a new shell *
- **********************************************************************
- SystemTags dc.l SYS_Input
- SysInput dc.l 0
- dc.l SYS_Output
- SysOutput dc.l 0
- dc.l SYS_Asynch
- dc.l 1
- dc.l SYS_UserShell
- dc.l 1
- dc.l NP_Path
- SysPath dc.l 0
- dc.l TAG_DONE
- dc.l 0
- SystemComm dc.b "NewSHELL "
- SystemParam dc.b "CON:0/11//200/KCX-Shell/CLOSE",0
- ds.b 25
- EVEN
- SystemInOut dc.b "NIL:",0
- EVEN
- WBPName dc.b "Workbench",0 ; Names of processes we want
- EVEN ; to clone path-lists from :-)
- NCLIName dc.b "New CLI",0
- EVEN
- ICLIName dc.b "Initial CLI",0
- EVEN
- AShellName dc.b "AmigaShell",0
- EVEN
- BCLIName dc.b "Background CLI",0
- EVEN
-
-
-
- **********************************************************************
- * Texts for control window *
- **********************************************************************
- HotKeyGadTxt dc.b "HotKeys... (_9)",0
- EVEN
- AlarmGadTxt dc.b "Alarm time (_5)",0
- EVEN
- ShellGadTxt dc.b "_User Shell",0
- EVEN
- AlarmStartVal dc.b "00:00:00",0
- EVEN
- AlarmText dc.b "Hey guy,",$0a,"It`s time for you to wake up !",0
- EVEN
- ScrBTxt dc.b "Screen time (_6)",0
- EVEN
- MouseBTxt dc.b "Mouse time (_7)",0
- EVEN
- ClickVolTxt dc.b "Click vol (_8)",0
- EVEN
- FrontGadTxt dc.b "Win Qualifier (_X)",0
- EVEN
- ESCGadTxt dc.b "ESC Qualifier (_J)",0
- EVEN
- PopQualList dc.l AltKeyDef
- dc.l AmiKeyDef
- dc.l ShiftKeyDef
- dc.l ControlKeyDef
- dc.l 0
- POPQUALCNT EQU 4
- ESCQualList dc.l AltKeyDef
- dc.l AmiKeyDef
- dc.l ShiftKeyDef
- dc.l ControlKeyDef
- dc.l NoneKeyDef
- dc.l 0
- ESCQUALCNT EQU 5
- NoneKeyDef dc.b "None",0
- EVEN
- AltKeyDef dc.b "Any Alt",0
- EVEN
- AmiKeyDef dc.b "Any Command",0
- EVEN
- ShiftKeyDef dc.b "Any Shift",0
- EVEN
- ControlKeyDef dc.b "Control",0
- EVEN
- PopQualFlags dc.w IEQUALIFIER_RALT
- dc.w IEQUALIFIER_LALT
- dc.w IEQUALIFIER_RCOMMAND
- dc.w IEQUALIFIER_LCOMMAND
- dc.w IEQUALIFIER_RSHIFT
- dc.w IEQUALIFIER_LSHIFT
- dc.w IEQUALIFIER_CONTROL
- dc.w IEQUALIFIER_CONTROL
- dc.w -1,-1
-
- UmlautTab dc.w $2a,$20,$12
- dc.w $2a,$20,$12
- dc.w $29,$18,$12
- dc.w $29,$18,$12
- dc.w $1a,$16,$12
- dc.w $1a,$16,$12
- dc.w $0b,$21,$21
- dc.w 0,0,0
-
- TeleBillTxt dc.b "Telefone _bill...",0
- EVEN
- TelePrefsTxt dc.b "Bill _preferences...",0
- EVEN
- AlarmHour dc.l 0
- AlarmMins dc.l 0
- AlarmSecs dc.l 0
- ThisHour dc.l 0
- ThisMins dc.l 0
- ThisSecs dc.l 0
-
-
- **********************************************************************
- * Control window menu entries *
- **********************************************************************
- MainMenuDef dc.b NM_TITLE,0
- dc.l ProjectName,0
- dc.w 0
- dc.l 0,0
-
- dc.b NM_ITEM,0
- dc.l .LoadPrefs,.LoadKey
- dc.w 0
- dc.l 0,DoLoadPrefs
-
- dc.b NM_ITEM,0
- dc.l .SavePrefs,.SaveKey
- dc.w 0
- dc.l 0,ReSavePrefs
-
- dc.b NM_ITEM,0
- dc.l .SaveAsPrefs,.SaveAsKey
- dc.w 0
- dc.l 0,DoSaveAsPrefs
-
- dc.b NM_ITEM,0
- dc.l NM_BARLABEL,0
- dc.w 0
- dc.l 0,0
-
- dc.b NM_ITEM,0
- dc.l .Enable,.EnableKey
- dc.w 0
- dc.l 0,EnableKey
-
- dc.b NM_ITEM,0
- dc.l .Disable,.DisableKey
- dc.w 0
- dc.l 0,DisableKey
-
- dc.b NM_ITEM,0
- dc.l HideItem,HideItemKey
- dc.w 0
- dc.l 0,HideKey
-
- dc.b NM_ITEM,0
- dc.l NM_BARLABEL,0
- dc.w 0
- dc.l 0,0
-
- dc.b NM_ITEM,0
- dc.l .AboutName,0
- dc.w 0
- dc.l 0,DisplayAbout
-
- dc.b NM_ITEM,0
- dc.l NM_BARLABEL,0
- dc.w 0
- dc.l 0,0
-
- dc.b NM_ITEM,0
- dc.l .QuitName,.QuitKey
- dc.w 0
- dc.l 0,QuitKey
-
-
-
- dc.b NM_TITLE,0
- dc.l .EnableDisable,0
- dc.w 0
- dc.l 0,0
-
- dc.b NM_ITEM,0
- dc.l .ActivateWin,.ActivateKey
- dc.w CHECKIT!MENUTOGGLE
- dc.l 0,ActiKey
-
- dc.b NM_ITEM,0
- dc.l .MouseMode,.MouseModeKey
- dc.w CHECKIT!MENUTOGGLE
- dc.l 0,ModeKey
-
- dc.b NM_ITEM,0
- dc.l .DisplayClock,.DispClockKey
- dc.w CHECKIT!MENUTOGGLE
- dc.l 0,DisplayKey
-
- dc.b NM_ITEM,0
- dc.l .DispClockWin,.DispWinKey
- dc.w CHECKIT!MENUTOGGLE
- dc.l 0,WindowKey
-
- dc.b NM_ITEM,0
- dc.l .ShowSecs,.ShowSecsKey
- dc.w CHECKIT!MENUTOGGLE
- dc.l 0,SecsKey
-
- dc.b NM_ITEM,0
- dc.l .ShowDate,.ShowDateKey
- dc.w CHECKIT!MENUTOGGLE
- dc.l 0,DateKey
-
- dc.b NM_ITEM,0
- dc.l .AmiDate,.AmiDateKey
- dc.w CHECKIT!MENUTOGGLE
- dc.l 0,AmiKey
-
- dc.b NM_ITEM,0
- dc.l .ShowDay,.ShowDayKey
- dc.w CHECKIT!MENUTOGGLE
- dc.l 0,DayKey
-
- dc.b NM_ITEM,0
- dc.l .ShortDayStr,.ShortDayStr
- dc.w CHECKIT!MENUTOGGLE
- dc.l 0,ShortKey
-
- dc.b NM_ITEM,0
- dc.l .AlarmOn,.AlarmOnKey
- dc.w CHECKIT!MENUTOGGLE
- dc.l 0,AlarmModeKey
-
- dc.b NM_ITEM,0
- dc.l .KeyClick,.KeyClickKey
- dc.w CHECKIT!MENUTOGGLE
- dc.l 0,ClickKey
-
- dc.b NM_ITEM,0
- dc.l .WriteEnv,.WriteEnvKey
- dc.w CHECKIT!MENUTOGGLE
- dc.l 0,EnvKey
-
- dc.b NM_ITEM,0
- dc.l .WindowCycle,.WindowCycKey
- dc.w CHECKIT!MENUTOGGLE
- dc.l 0,CycleKey
-
- dc.b NM_ITEM,0
- dc.l .WBFront,.WBFrontKey
- dc.w CHECKIT!MENUTOGGLE
- dc.l 0,WBFrontKey
-
- dc.b NM_ITEM,0
- dc.l .LeftyMouse,.LeftyMouseKey
- dc.w CHECKIT!MENUTOGGLE
- dc.l 0,LeftyKey
-
- dc.b NM_ITEM,0
- dc.l .ESCClose,.ESCCloseKey
- dc.w CHECKIT!MENUTOGGLE
- dc.l 0,WESCKey
-
- dc.b NM_ITEM,0
- dc.l .MapUmlaut,.UmlautKey
- dc.w CHECKIT!MENUTOGGLE
- dc.l 0,UmlautKey
-
-
- dc.b NM_TITLE,0
- dc.l .Settings,0
- dc.w 0
- dc.l 0,0
-
- dc.b NM_ITEM,0
- dc.l .NextPopQual,.NextPopKey
- dc.w 0
- dc.l 0,FrontKey
-
- dc.b NM_ITEM,0
- dc.l .NextESCQual,.NextESCKey
- dc.w 0
- dc.l 0,ESCKey
-
- dc.b NM_ITEM,0
- dc.l NM_BARLABEL,0
- dc.w 0
- dc.l 0,0
-
- dc.b NM_ITEM,0
- dc.l .ChangeAlarm,.SetAlarmKey
- dc.w 0
- dc.l 0,SetAlarmKey
-
- dc.b NM_ITEM,0
- dc.l .UserShell,.UserShellKey
- dc.w 0
- dc.l 0,UserShellKey
-
- dc.b NM_ITEM,0
- dc.l NM_BARLABEL,0
- dc.w 0
- dc.l 0,0
-
- dc.b NM_ITEM,0
- dc.l .ScreenTime,.ScreenKey
- dc.w 0
- dc.l 0,ScreenKey
-
- dc.b NM_ITEM,0
- dc.l .MouseTime,.MouseKey
- dc.w 0
- dc.l 0,MouseKey
-
- dc.b NM_ITEM,0
- dc.l .ClickVol,.VolKey
- dc.w 0
- dc.l 0,VolKey
-
-
- dc.b NM_TITLE,0
- dc.l .Windows,0
- dc.w 0
- dc.l 0,0
-
- dc.b NM_ITEM,0
- dc.l .BillWin,.BillKey
- dc.w 0
- dc.l 0,BillKey
-
- dc.b NM_ITEM,0
- dc.l .PrefsWin,.PrefsKey
- dc.w 0
- dc.l 0,PrefsKey
-
- dc.b NM_ITEM,0
- dc.l .HotKeyWin,.HotWinKey
- dc.w 0
- dc.l 0,HotWinKey
-
- dc.b NM_END,0
- dc.l 0,0
- dc.w 0
- dc.l 0,0
-
- .LoadPrefs dc.b "Load Preferences...",0
- EVEN
- .LoadKey dc.b LOADKEY,0
- .SavePrefs dc.b "Save Preferences",0
- EVEN
- .SaveKey dc.b "S",0
- .SaveAsPrefs dc.b "Save Preferences as...",0
- EVEN
- .SaveAsKey dc.b SAVEKEY,0
- .Enable dc.b "Enable",0
- EVEN
- .EnableKey dc.b ENABLEKEY,0
- .Disable dc.b "Disable",0
- EVEN
- .DisableKey dc.b DISABLEKEY,0
- .AboutName dc.b "About...",0
- EVEN
- .QuitName dc.b "Quit",0
- EVEN
- .QuitKey dc.b QUITKEY,0
-
-
- .EnableDisable dc.b "Enable/Disable",0
- EVEN
- .ActivateWin dc.b "Window activate",0
- EVEN
- .ActivateKey dc.b ACTIKEY,0
- .MouseMode dc.b "MouseMode",0
- EVEN
- .MouseModeKey dc.b MODEKEY,0
- .DisplayClock dc.b "Display Clock",0
- EVEN
- .DispClockKey dc.b DISPLAYKEY,0
- .DispClockWin dc.b "Display in window",0
- EVEN
- .DispWinKey dc.b WINDOWKEY,0
- .ShowSecs dc.b "Show secondz",0
- EVEN
- .ShowSecsKey dc.b SECSKEY,0
- .ShowDate dc.b "Show date",0
- EVEN
- .ShowDateKey dc.b DATEKEY,0
- .AmiDate dc.b "American date",0
- EVEN
- .AmiDateKey dc.b AMIKEY,0
- .ShowDay dc.b "Show day",0
- EVEN
- .ShowDayKey dc.b DAYKEY,0
- .ShortDayStr dc.b "Short day string",0
- EVEN
- .ShortStrKey dc.b SHORTKEY,0
- .AlarmOn dc.b "Alarm on",0
- EVEN
- .AlarmOnKey dc.b ALARMMODEKEY,0
- .KeyClick dc.b "Key-Click",0
- EVEN
- .KeyClickKey dc.b CLICKKEY,0
- .WriteEnv dc.b "Write environment",0
- EVEN
- .WriteEnvKey dc.b ENVKEY,0
- .WindowCycle dc.b "Window cycling",0
- EVEN
- .WindowCycKey dc.b CYCLEKEY,0
- .WBFront dc.b "WB to front",0
- EVEN
- .WBFrontKey dc.b WBFRONTKEY,0
- .LeftyMouse dc.b "LeftyMouse",0
- EVEN
- .LeftyMouseKey dc.b LEFTYKEY,0
- .ESCClose dc.b "ESC WindowClose",0
- EVEN
- .ESCCloseKey dc.b WESCKEY,0
- .MapUmlaut dc.b 'Map "Umlauts"',0
- EVEN
- .UmlautKey dc.b UMLAUTKEY,0
-
- .Settings dc.b "Other settings",0
- EVEN
- .NextPopQual dc.b "Win Qualifier",0
- EVEN
- .NextPopKey dc.b FRONTKEY,0
- .NextESCQual dc.b "ESC Qualifier",0
- EVEN
- .NextESCKey dc.b ESCQUALKEY,0
- .ChangeAlarm dc.b "Alarm time",0
- EVEN
- .SetAlarmKey dc.b SETALARMKEY,0
- .UserShell dc.b "User shell",0
- EVEN
- .UserShellKey dc.b USERSHELLKEY,0
- .ScreenTime dc.b "Screen time",0
- EVEN
- .ScreenKey dc.b SCREENKEY,0
- .MouseTime dc.b "Mouse time",0
- EVEN
- .MouseKey dc.b MOUSEKEY,0
- .ClickVol dc.b "Click vol",0
- EVEN
- .VolKey dc.b VOLKEY,0
-
- .Windows dc.b "Windows",0
- EVEN
- .BillWin dc.b "Telefone bill...",0
- EVEN
- .BillKey dc.b BILLKEY,0
- .PrefsWin dc.b "Telefone preferences...",0
- EVEN
- .PrefsKey dc.b PREFSKEY,0
- .HotKeyWin dc.b "HotKeys...",0
- EVEN
- .HotWinKey dc.b HOTWINKEY,0
-
-
- ProjectName dc.b "Project",0
- EVEN
- HideItem dc.b "Hide",0
- EVEN
- HideItemKey dc.b HIDEKEY,0
-
-
- **********************************************************************
- * Texts for Log/Purpose-Window *
- **********************************************************************
- LogOkText dc.b "_OK",0
- EVEN
- LogCancelText dc.b "_CANCEL",0
- EVEN
- LogRevText dc.b "Revision",0
- EVEN
- LogPointText dc.b ".",0
- EVEN
-
- OKKEY EQU 'O'
- CANCELKEY EQU 'C'
-
-
- **********************************************************************
- * Log/Purpose-Window menu-entries *
- **********************************************************************
- LogMenuDef dc.b NM_TITLE,0
- dc.l ProjectName,0
- dc.w 0
- dc.l 0,0
-
- dc.b NM_ITEM,0
- dc.l .Ok,.OkKey
- dc.w 0
- dc.l 0,LogOK
-
- dc.b NM_ITEM,0
- dc.l .Cancel,.CancelKey
- dc.w 0
- dc.l 0,LogCancel
-
- dc.b NM_END,0
- dc.l 0,0
- dc.w 0
- dc.l 0,0
-
- .Ok dc.b "OK",0
- EVEN
- .OkKey dc.b OKKEY,0
- .Cancel dc.b "CANCEL",0
- EVEN
- .CancelKey dc.b CANCELKEY,0
-
-
- **********************************************************************
- * Bill window ITexts *
- **********************************************************************
- BillITxts dc.b 1,0
- dc.b RP_JAM2
- dc.b 0
- dc.w INTERWIDTH+INTERWIDTH/2+16
- dc.w 2
- dc.l GadgetTxtAttr
- dc.l .Str1
- dc.l .ITxt2
- .Str1 dc.b "Time",0
- EVEN
-
- .ITxt2 dc.b 1,0
- dc.b RP_JAM2
- dc.b 0
- dc.w INTERWIDTH+BEVELWIDTH+INTERWIDTH+INTERWIDTH/2+8
- dc.w 2
- dc.l GadgetTxtAttr
- dc.l .Str2
- dc.l .ITxt3
- .Str2 dc.b "Online",0
- EVEN
-
- .ITxt3 dc.b 1,0
- dc.b RP_JAM2
- dc.b 0
- dc.w INTERWIDTH+((BEVELWIDTH+INTERWIDTH)*2)+INTERWIDTH/2+16
- dc.w 2
- dc.l GadgetTxtAttr
- dc.l .Str3
- dc.l BillVarStrings
- .Str3 dc.b "Cost",0
- EVEN
-
- BillVarStrings dc.b 1,0
- dc.b RP_JAM2
- dc.b 0
- dc.w INTERWIDTH+INTERWIDTH/2
- dc.w 2+BEVELHEIGHT
- dc.l GadgetTxtAttr
- dc.l TimeString
- dc.l .ITxt2
- .ITxt2 dc.b 1,0
- dc.b RP_JAM2
- dc.b 0
- dc.w INTERWIDTH+BEVELWIDTH+INTERWIDTH+INTERWIDTH/2
- dc.w 2+BEVELHEIGHT
- dc.l GadgetTxtAttr
- dc.l OnlineString
- dc.l .ITxt3
- .ITxt3 dc.b 1,0
- dc.b RP_JAM2
- dc.b 0
- dc.w INTERWIDTH+((BEVELWIDTH+INTERWIDTH)*2)+INTERWIDTH/2
- dc.w 2+BEVELHEIGHT
- dc.l GadgetTxtAttr
- dc.l CostString
- dc.l .ITxt4
- .ITxt4 dc.b 1,0
- dc.b RP_JAM2
- dc.b 0
- dc.w INTERWIDTH+4
- dc.w BEVELHEIGHT*4+12
- dc.l GadgetTxtAttr
- dc.l PerHourStr
- dc.l 0
- PerHourStr dc.b "Costs per hour : "
- PerHourBuff ds.b 9
- EVEN
- CostString dc.b " 0.00",0
- EVEN
- TimeZoneLabels dc.l TimeZone1Str
- dc.l TimeZone2Str
- dc.l TimeZone3Str
- dc.l 0
- TimeZone1Str dc.b "Time _1",0
- EVEN
- TimeZone2Str dc.b "Time _2",0
- EVEN
- TimeZone3Str dc.b "Time _3",0
- EVEN
- CostUnitTxt dc.b "Cost/_Unit",0
- EVEN
-
- CheapLabels dc.l CheapTxt
- dc.l NormalTxt
- dc.l 0
- CheapTxt dc.b "_Normal",0
- EVEN
- NormalTxt dc.b "_Cheap",0
- EVEN
- TotalCost dc.l 0
- LogInDate ds.b LEN_DATSTRING
- LogInTime ds.b LEN_DATSTRING
-
-
- **********************************************************************
- * Defines for BillWindow-Gadgets *
- **********************************************************************
- TIMEZONEGAD EQU 1
- CHEAPMODEGAD EQU 2
- TIME1KEY EQU '1'
- TIME2KEY EQU '2'
- TIME3KEY EQU '3'
- NORMALKEY EQU 'N'
- CHEAPKEY EQU 'C'
-
-
- **********************************************************************
- * Defines for BillWindow menu-entries *
- **********************************************************************
- BillMenuDef dc.b NM_TITLE,0
- dc.l ProjectName,0
- dc.w 0
- dc.l 0,0
-
- dc.b NM_ITEM,0
- dc.l .Time1,.Time1Key
- dc.w 0
- dc.l 0,BTime
-
- dc.b NM_ITEM,0
- dc.l .Time2,.Time2Key
- dc.w 0
- dc.l 0,BTime
-
- dc.b NM_ITEM,0
- dc.l .Time3,.Time3Key
- dc.w 0
- dc.l 0,BTime
-
- dc.b NM_ITEM,0
- dc.l NM_BARLABEL,0
- dc.w 0
- dc.l 0,0
-
- dc.b NM_ITEM,0
- dc.l .CostNormal,.CostNormalKey
- dc.w 0
- dc.l 0,NormalKey
-
- dc.b NM_ITEM,0
- dc.l .CostCheap,.CostCheapKey
- dc.w 0
- dc.l 0,CheapKey
-
- dc.b NM_ITEM,0
- dc.l NM_BARLABEL,0
- dc.w 0
- dc.l 0,0
-
- dc.b NM_ITEM,0
- dc.l HideItem,HideItemKey
- dc.w 0
- dc.l 0,BEscKey
-
- dc.b NM_END,0
- dc.l 0,0
- dc.w 0
- dc.l 0,0
-
- .Time1 dc.b "Time 1",0
- EVEN
- .Time1Key dc.b TIME1KEY
- .Time2 dc.b "Time 2",0
- EVEN
- .Time2Key dc.b TIME2KEY
- .Time3 dc.b "Time 3",0
- EVEN
- .Time3Key dc.b TIME3KEY
- .CostNormal dc.b "Normal",0
- EVEN
- .CostNormalKey dc.b NORMALKEY
- .CostCheap dc.b "Cheap",0
- EVEN
- .CostCheapKey dc.b CHEAPKEY
- .Hide dc.b "Hide",0
- EVEN
- .HideKey dc.b HIDEKEY
-
- **********************************************************************
- * Structures for the costs-calculating *
- **********************************************************************
- RSRESET
- cu_Normal rs.l 1
- cu_Cheap rs.l 1
-
- CostUnit1 dc.l 360
- dc.l 720
- CostUnit2 dc.l 60
- dc.l 120
- CostUnit3 dc.l 21
- dc.l 42
- CostUnit dc.l 23
- CostBuffer dc.l ReadBuffer
-
-
-
- **********************************************************************
- * Gadget/Window text defines for Preferences window *
- **********************************************************************
- PrefsGadTxts dc.l .Txt1,.Txt2,.Txt3,.Txt4,.Txt5,.Txt6,.Txt7,.Txt8,.Txt9
- dc.l .Txt10,.Txt11,.Txt12
- .Txt1 dc.b "_Normal Time/Unit 1",0
- EVEN
- .Txt2 dc.b "Cheap Time/Unit 1",0
- EVEN
- .Txt3 dc.b "Normal Time/Unit 2",0
- EVEN
- .Txt4 dc.b "Cheap Time/Unit 2",0
- EVEN
- .Txt5 dc.b "Normal Time/Unit 3",0
- EVEN
- .Txt6 dc.b "Cheap Time/Unit 3",0
- EVEN
- .Txt7 dc.b "Costs per unit",0
- EVEN
- .Txt8 dc.b "_PopUp Bill window",0
- EVEN
- .Txt9 dc.b "_Log calls",0
- EVEN
- .Txt10 dc.b "_Clear log",0
- EVEN
- .Txt11 dc.b "_Save Log to...",0
- EVEN
- .Txt12 dc.b "_Total sum...",0
- EVEN
-
- PrefsTimeLabels dc.l .Txt1
- dc.l .Txt2
- dc.l .Txt3
- dc.l 0
- .Txt1 dc.b "Time _1 (to use on startup)",0
- EVEN
- .Txt2 dc.b "Time _2",0
- EVEN
- .Txt3 dc.b "Time _3",0
- EVEN
-
- PrefsModeLabels dc.l .Txt1
- dc.l .Txt2
- dc.l 0
- .Txt1 dc.b "Normal _4",0
- EVEN
- .Txt2 dc.b "Cheap _5",0
- EVEN
- PTimeZone dc.l 0
- PTariff dc.l 0
-
-
- LogPath dc.b "S:",0
- ds.b 256
- EVEN
- LogFile dc.b "KCXLOGFILE",0
- ds.b 30
- EVEN
- LogFileName dc.b "S:KCXLOGFILE",0
- ds.b 280
- EVEN
- LogFileHeader dc.b "Select new preferences file",0
- EVEN
- PrefsPath dc.b "ENV:",0
- ds.b 256
- EVEN
- PrefsFile dc.b "KCXPREFFILE",0
- ds.b 30
- EVEN
- PrefsFileName dc.b "ENV:KCXPREFFILE",0
- ds.b 280
- EVEN
- PrefsLoadHeader dc.b "Load preferences",0
- EVEN
- PrefsSaveHeader dc.b "Save pereferences",0
- EVEN
-
-
-
- **********************************************************************
- * Prefs-Gadget defines *
- **********************************************************************
- NORMAL1GAD EQU 1
- CHEAP1GAD EQU 2
- NORMAL2GAD EQU 3
- CHEAP2GAD EQU 4
- NORMAL3GAD EQU 5
- CHEAP3GAD EQU 6
- COSTGAD EQU 7
- PTIMEGAD EQU 8
- PMODEGAD EQU 9
- BILLPOPGAD EQU 10
- LOGCALLGAD EQU 11
- CLEARLOGGAD EQU 12
- SAVETOGAD EQU 13
- LOGFILEGAD EQU 14
- TOTALSUMGAD EQU 15
- NORMAL1KEY EQU 'N'
- SAVETOKEY EQU 'S'
- TOTALSUMKEY EQU 'T'
- BILLPOPKEY EQU 'P'
- LOGCALLKEY EQU 'L'
- CLEARLOGKEY EQU 'C'
- PNORMALKEY EQU '4'
- PCHEAPKEY EQU '5'
-
-
-
- **********************************************************************
- * Preferences window menu-entries *
- **********************************************************************
- PrefsMenuDef dc.b NM_TITLE,0
- dc.l ProjectName,0
- dc.w 0
- dc.l 0,0
-
- dc.b NM_ITEM,0
- dc.l .TimeUnits,.TimeUnitsKey
- dc.w 0
- dc.l 0,Normal1Key
-
- dc.b NM_ITEM,0
- dc.l NM_BARLABEL,0
- dc.w 0
- dc.l 0,0
-
- dc.b NM_ITEM,0
- dc.l .Time1,.Time1Key
- dc.w 0
- dc.l 0,Time123Key
-
- dc.b NM_ITEM,0
- dc.l .Time2,.Time2Key
- dc.w 0
- dc.l 0,Time123Key
-
- dc.b NM_ITEM,0
- dc.l .Time3,.Time3Key
- dc.w 0
- dc.l 0,Time123Key
-
- dc.b NM_ITEM,0
- dc.l NM_BARLABEL,0
- dc.w 0
- dc.l 0,0
-
- dc.b NM_ITEM,0
- dc.l .TariffN,.TariffNKey
- dc.w 0
- dc.l 0,Tariff45Key
-
- dc.b NM_ITEM,0
- dc.l .TariffC,.TariffCKey
- dc.w 0
- dc.l 0,Tariff45Key
-
- dc.b NM_ITEM,0
- dc.l NM_BARLABEL,0
- dc.w 0
- dc.l 0,0
-
- dc.b NM_ITEM,0
- dc.l HideItem,HideItemKey
- dc.w 0
- dc.l 0,PEscKey
-
- dc.b NM_TITLE,0
- dc.l .OtherStuff,0
- dc.w 0
- dc.l 0,0
-
- dc.b NM_ITEM,0
- dc.l .PopUpBill,.PopUpBillKey
- dc.w CHECKIT!MENUTOGGLE
- dc.l 0,BillPopKey
-
- dc.b NM_ITEM,0
- dc.l .LogCalls,.LogCallsKey
- dc.w CHECKIT!MENUTOGGLE
- dc.l 0,LogCallKey
-
- dc.b NM_ITEM,0
- dc.l NM_BARLABEL,0
- dc.w 0
- dc.l 0,0
-
- dc.b NM_ITEM,0
- dc.l .ClearLog,.ClearLogKey
- dc.w 0
- dc.l 0,ClearLogKey
-
- dc.b NM_ITEM,0
- dc.l NM_BARLABEL,0
- dc.w 0
- dc.l 0,0
-
- dc.b NM_ITEM,0
- dc.l .SaveTo,.SaveToKey
- dc.w 0
- dc.l 0,SaveToKey
-
- dc.b NM_ITEM,0
- dc.l .LogName,.LogNameKey
- dc.w 0
- dc.l 0,ChangeLogName
-
- dc.b NM_ITEM,0
- dc.l .TotalCost,.TotalCostKey
- dc.w 0
- dc.l 0,TotalSumKey
-
-
- dc.b NM_END,0
- dc.l 0,0
- dc.w 0
- dc.l 0,0
-
-
- .TimeUnits dc.b "Normal Time/Unit 1",0
- EVEN
- .TimeUnitsKey dc.b NORMAL1KEY,0
- .Time1 dc.b "Time 1",0
- EVEN
- .Time1Key dc.b TIME1KEY,0
- .Time2 dc.b "Time 2",0
- EVEN
- .Time2Key dc.b TIME2KEY,0
- .Time3 dc.b "Time 3",0
- EVEN
- .Time3Key dc.b TIME3KEY,0
- .TariffN dc.b "Normal",0
- EVEN
- .TariffNKey dc.b PNORMALKEY,0
- .TariffC dc.b "Cheap",0
- EVEN
- .TariffCKey dc.b PCHEAPKEY,0
-
- .OtherStuff dc.b "Other actions",0
- EVEN
- .PopUpBill dc.b "PopUp Bill window",0
- EVEN
- .PopUpBillKey dc.b BILLPOPKEY,0
- .LogCalls dc.b "Log calls",0
- EVEN
- .LogCallsKey dc.b LOGCALLKEY,0
- .ClearLog dc.b "Clear log",0
- EVEN
- .ClearLogKey dc.b CLEARLOGKEY,0
- .SaveTo dc.b "Save Log to...",0
- EVEN
- .SaveToKey dc.b SAVETOKEY,0
- .LogName dc.b "Change Log name",0
- EVEN
- .LogNameKey dc.b "F",0
- .TotalCost dc.b "Total sum...",0
- EVEN
- .TotalCostKey dc.b TOTALSUMKEY,0
-
-
-
-
- **********************************************************************
- * Defines for HotKey-Window *
- **********************************************************************
- HotKeyGadStat dc.l PopUpKey,PageHotKey,BillHotKey,PrefsHotKey,HotWinHotKey
- dc.l ShellHotKey,UmlautHotKey
- HotKeyGadTxts dc.l .Txt1,.Txt2,.Txt3,.Txt4,.Txt5,.Txt6,.Txt7
- .Txt1 dc.b "_Control",0
- EVEN
- .Txt2 dc.b "_Page-Key",0
- EVEN
- .Txt3 dc.b "_Bill",0
- EVEN
- .Txt4 dc.b "P_references",0
- EVEN
- .Txt5 dc.b "_HotKeys",0
- EVEN
- .Txt6 dc.b "_Open Shell",0
- EVEN
- .Txt7 dc.b '_Map "Umlauts"',0
- EVEN
-
- POPUPGAD EQU 1
- PAGEGAD EQU 2
- BILLKEYGAD EQU 3
- PREFSKEYGAD EQU 4
- HOTKEYGAD EQU 5
- SHELLGAD EQU 6
- UMLAUTKEYGAD EQU 7
-
- POPUPKEY EQU 'C'
- PAGEKEY EQU 'P'
- BILLKEYKEY EQU 'B'
- PREFSKEYKEY EQU 'R'
- HOTKEYKEY EQU 'H'
- SHELLKEY EQU 'O'
- UMLAUTKEYKEY EQU 'M'
-
-
- **********************************************************************
- * HotKey-Window menu-entries *
- **********************************************************************
- HotKeyMenuDef dc.b NM_TITLE,0
- dc.l ProjectName,0
- dc.w 0
- dc.l 0,0
-
- dc.b NM_ITEM,0
- dc.l .Control,.ControlKey
- dc.w 0
- dc.l 0,HPopUpKey
-
- dc.b NM_ITEM,0
- dc.l .Page,.PageKey
- dc.w 0
- dc.l 0,HPageKey
-
- dc.b NM_ITEM,0
- dc.l .Bill,.BillKey
- dc.w 0
- dc.l 0,HBillKey
-
- dc.b NM_ITEM,0
- dc.l .Prefs,.PrefsKey
- dc.w 0
- dc.l 0,HPrefsKey
-
- dc.b NM_ITEM,0
- dc.l .Hot,.HotKey
- dc.w 0
- dc.l 0,HHotKey
-
- dc.b NM_ITEM,0
- dc.l .Shell,.ShellKey
- dc.w 0
- dc.l 0,HShellKey
-
- dc.b NM_ITEM,0
- dc.l .Umlaut,.UmlautKey
- dc.w 0
- dc.l 0,HUmlautKey
-
- dc.b NM_ITEM,0
- dc.l NM_BARLABEL,0
- dc.w 0
- dc.l 0,0
-
- dc.b NM_ITEM,0
- dc.l .Hide,.HideKey
- dc.w 0
- dc.l 0,HEscKey
-
- dc.b NM_END,0
- dc.l 0,0
- dc.w 0
- dc.l 0,0
-
- .Control dc.b "Control",0
- EVEN
- .ControlKey dc.b POPUPKEY,0
- .Page dc.b "Page-Key",0
- EVEN
- .PageKey dc.b PAGEKEY,0
- .Bill dc.b "Bill",0
- EVEN
- .BillKey dc.b BILLKEYKEY,0
- .Prefs dc.b "Preferences",0
- EVEN
- .PrefsKey dc.b PREFSKEYKEY,0
- .Hot dc.b "HotKeys",0
- EVEN
- .HotKey dc.b HOTKEYKEY,0
- .Shell dc.b "Open Shell",0
- EVEN
- .ShellKey dc.b SHELLKEY,0
- .Umlaut dc.b 'Map "Umlauts"',0
- EVEN
- .UmlautKey dc.b UMLAUTKEYKEY,0
- .Hide dc.b "Hide",0
- EVEN
- .HideKey dc.b "Q",0
-
-
-
- **********************************************************************
- * Definition of Menus for Help-Window *
- **********************************************************************
- HelpMenuDef dc.b NM_TITLE,0
- dc.l ProjectName,0
- dc.w 0
- dc.l 0,0
-
- dc.b NM_ITEM,0
- dc.l .RowUp,0
- dc.w 0
- dc.l 0,HelpRowUp
-
- dc.b NM_ITEM,0
- dc.l .RowDown,0
- dc.w 0
- dc.l 0,HelpRowDown
-
- dc.b NM_ITEM,0
- dc.l .PageUp,0
- dc.w 0
- dc.l 0,HelpPageUp
-
- dc.b NM_ITEM,0
- dc.l .PageDown,0
- dc.w 0
- dc.l 0,HelpPageDown
-
- dc.b NM_ITEM,0
- dc.l NM_BARLABEL,0
- dc.w 0
- dc.l 0,0
-
- dc.b NM_ITEM,0
- dc.l .Close,.CloseKey
- dc.w 0
- dc.l 0,HelpWinEnd
-
- dc.b NM_END,0
- dc.l 0,0
- dc.w 0
- dc.l 0,0
-
- .RowUp dc.b "One row up (CURSOR UP)",0
- EVEN
- .RowDown dc.b "One row down (CURSOR DOWN)",0
- EVEN
- .PageUp dc.b "One page up (SHIFT CURSOR UP)",0
- EVEN
- .PageDown dc.b "One page down (SHIFT CURSOR DOWN)",0
- EVEN
- .Close dc.b "Close help",0
- EVEN
- .CloseKey dc.b "C",0
-
-
-
- **********************************************************************
- * Text atribute for gadgets. We are stubborn. Let`s take topaz :-) *
- **********************************************************************
- GadgetTxtAttr dc.l FontName
- dc.w 8
- dc.b FS_NORMAL
- dc.b FPF_ROMFONT
- FontName dc.b "topaz.font",0
- EVEN
-
-
-
- **********************************************************************
- * Text attr for the text in titlebar *
- **********************************************************************
- TxtAttr dc.l 0
- dc.w 0
- dc.b FS_NORMAL
- dc.b 0
-
-
-
- **********************************************************************
- * Formatstrings for RawDoFmt *
- **********************************************************************
- TimeFormats dc.l FormLSec,FormLNSec,FormSSec,FormSNSec
- FormLSec dc.b "%s %s %s",0
- EVEN
- FormLNSec dc.b "%s %s %.5s",0
- EVEN
- FormSSec dc.b "%.3s %s %s",0
- EVEN
- FormSNSec dc.b "%.3s %s %.5s",0
- EVEN
- ResultFormat dc.b "%-ld",0
- EVEN
- ResultWinFormat dc.b "%d/%d",0
- EVEN
- CostFormString dc.b "%5ld.%02ld",0
- EVEN
- PerHourForm dc.b "%4ld.%02ld",0
- EVEN
- LIntFormat dc.b "%ld",0
- EVEN
- FormAlarmSStr dc.b "%02ld:%02ld:%02ld",0
- EVEN
- FormAlarmNSStr dc.b "%02ld:%02ld",0
- EVEN
- FormMemString dc.b "C: %7ld F: %8ld",0
- EVEN
- FormTMemString dc.b "Total Memory : %8ld",0
- EVEN
- LogEntryFormat dc.b "%8.8s : %8.8s - %8.8s / Zone %ld Tariff %c / Time %02ld:%02ld:%02ld / Cost %ld.%02ld",$0a,0
- EVEN
- FinalCostForm dc.b " -----------",$0a
- dc.b " Total Sum %ld.%02ld",$0a,0
- EVEN
- DayCostForm dc.b " -----------",$0a
- dc.b " Sum for %s %ld.%02ld",$0a,$0a,0
- EVEN
- ChipMem dc.l 0
- FastMem dc.l 0
- TotalMem dc.l 0
- MaxMem dc.l 0
- NextUnit dc.l 0
- UnitsDone dc.l 0
- LogEntryDat dc.l LogInDate
- dc.l LogInTime
- dc.l TimeString
- TimeZone dc.l 0
- LogEntryTariff dc.w 0
- OnlineHour dc.l 0
- OnlineMinute dc.l 0
- OnlineSeconds dc.l 0
- CostMajor dc.l 0
- CostMinor dc.l 0
- BillTotalCost dc.l 0
- BillDayCost dc.l 0
- BillDayPtr dc.l BillDayStr
- BillMajor dc.l 0
- BillMinor dc.l 0
- BillDayStr ds.b 10
-
-
-
-
-
- **********************************************************************
- * Defines for better access to gadgets *
- **********************************************************************
- ACTIGAD EQU 1
- MODEGAD EQU 2
- DISPLAYGAD EQU 3
- WINDOWGAD EQU 4
- SECSGAD EQU 5
- DATEGAD EQU 6
- AMIGAD EQU 7
- DAYGAD EQU 8
- SHORTGAD EQU 9
- ALARMMODEGAD EQU 10
- CLICKGAD EQU 11
- ENVGAD EQU 12
- CYCLEGAD EQU 13
- WBFRONTGAD EQU 14
- LEFTYGAD EQU 15
- WESCGAD EQU 16
- UMLAUTGAD EQU 17
- LOADGAD EQU 18
- SAVEGAD EQU 19
- ENABLEGAD EQU 20
- DISABLEGAD EQU 21
- HIDEGAD EQU 22
- QUITGAD EQU 23
- SETALARMGAD EQU 24
- USERSHELLGAD EQU 25
- SCREENGAD EQU 26
- MOUSEGAD EQU 27
- VOLGAD EQU 28
- FRONTGAD EQU 29
- BILLGAD EQU 30
- PREFSGAD EQU 31
- ESCQUALGAD EQU 32
- HOTWINGAD EQU 33
-
-
- ACTIKEY EQU 'W'
- MODEKEY EQU 'M'
- DISPLAYKEY EQU 'C'
- WINDOWKEY EQU 'I'
- SECSKEY EQU 'Z'
- DATEKEY EQU 'T'
- AMIKEY EQU 'N'
- DAYKEY EQU 'Y'
- SHORTKEY EQU 'G'
- ALARMMODEKEY EQU 'L'
- CLICKKEY EQU 'K'
- ENVKEY EQU 'R'
- CYCLEKEY EQU '1'
- WBFRONTKEY EQU '2'
- LEFTYKEY EQU '3'
- WESCKEY EQU '4'
- FRONTKEY EQU 'X'
- ESCQUALKEY EQU 'J'
- UMLAUTKEY EQU '!'
- SETALARMKEY EQU '5'
- SCREENKEY EQU '6'
- MOUSEKEY EQU '7'
- VOLKEY EQU '8'
- USERSHELLKEY EQU 'U'
- HOTWINKEY EQU '9'
- BILLKEY EQU 'B'
- PREFSKEY EQU 'P'
- LOADKEY EQU 'O'
- SAVEKEY EQU 'A'
- ENABLEKEY EQU 'E'
- DISABLEKEY EQU 'D'
- HIDEKEY EQU 'H'
- QUITKEY EQU 'Q'
-
-
- ControlGads ds.l 33+1
- PrefsGads ds.l 15+1
- BillGads ds.l 2+1
- LogGads ds.l 9+1
- HotKeyGads ds.l 6+1
- GadgetAttrs dc.l Gadget1Txt,PLACETEXT_RIGHT,CHECKBOX_KIND
- dc.w INTERWIDTH,5
- dc.l Gadget2Txt,PLACETEXT_RIGHT,CHECKBOX_KIND
- dc.w INTERWIDTH,18
- dc.l Gadget3Txt,PLACETEXT_RIGHT,CHECKBOX_KIND
- dc.w INTERWIDTH,31
- dc.l Gadget4Txt,PLACETEXT_RIGHT,CHECKBOX_KIND
- dc.w INTERWIDTH,44
- dc.l Gadget5Txt,PLACETEXT_RIGHT,CHECKBOX_KIND
- dc.w INTERWIDTH,57
- dc.l Gadget6Txt,PLACETEXT_RIGHT,CHECKBOX_KIND
- dc.w INTERWIDTH,70
- dc.l Gadget7Txt,PLACETEXT_RIGHT,CHECKBOX_KIND
- dc.w WINWIDTH-GADWIDTH-310,5
- dc.l Gadget8Txt,PLACETEXT_RIGHT,CHECKBOX_KIND
- dc.w WINWIDTH-GADWIDTH-310,18
- dc.l Gadget9Txt,PLACETEXT_RIGHT,CHECKBOX_KIND
- dc.w WINWIDTH-GADWIDTH-310,31
- dc.l Gadget10Txt,PLACETEXT_RIGHT,CHECKBOX_KIND
- dc.w WINWIDTH-GADWIDTH-310,44
- dc.l Gadget11Txt,PLACETEXT_RIGHT,CHECKBOX_KIND
- dc.w WINWIDTH-GADWIDTH-310,57
- dc.l Gadget12Txt,PLACETEXT_RIGHT,CHECKBOX_KIND
- dc.w WINWIDTH-GADWIDTH-310,70
- dc.l Gadget13Txt,PLACETEXT_RIGHT,CHECKBOX_KIND
- dc.w WINWIDTH-GADWIDTH-94,5
- dc.l Gadget14Txt,PLACETEXT_RIGHT,CHECKBOX_KIND
- dc.w WINWIDTH-GADWIDTH-94,18
- dc.l Gadget15Txt,PLACETEXT_RIGHT,CHECKBOX_KIND
- dc.w WINWIDTH-GADWIDTH-94,31
- dc.l Gadget16Txt,PLACETEXT_RIGHT,CHECKBOX_KIND
- dc.w WINWIDTH-GADWIDTH-94,44
- dc.l Gadget17Txt,PLACETEXT_RIGHT,CHECKBOX_KIND
- dc.w WINWIDTH-GADWIDTH-94,57
- dc.l Gadget18Txt,PLACETEXT_IN,BUTTON_KIND
- dc.w INTERWIDTH+5,WINHEIGHT-GADHEIGHT-INTERHEIGHT
- dc.l Gadget19Txt,PLACETEXT_IN,BUTTON_KIND
- dc.w INTERWIDTH+5+GADWIDTH+INTERWIDTH,WINHEIGHT-GADHEIGHT-INTERHEIGHT
- dc.l Gadget20Txt,PLACETEXT_IN,BUTTON_KIND
- dc.w INTERWIDTH+5+(GADWIDTH+INTERWIDTH)*2,WINHEIGHT-GADHEIGHT-INTERHEIGHT
- dc.l Gadget21Txt,PLACETEXT_IN,BUTTON_KIND
- dc.w INTERWIDTH+5+(GADWIDTH+INTERWIDTH)*3,WINHEIGHT-GADHEIGHT-INTERHEIGHT
- dc.l Gadget22Txt,PLACETEXT_IN,BUTTON_KIND
- dc.w INTERWIDTH+5+(GADWIDTH+INTERWIDTH)*4,WINHEIGHT-GADHEIGHT-INTERHEIGHT
- dc.l Gadget23Txt,PLACETEXT_IN,BUTTON_KIND
- dc.w INTERWIDTH+5+(GADWIDTH+INTERWIDTH)*5,WINHEIGHT-GADHEIGHT-INTERHEIGHT
- dc.l 0
- Gadget1Txt dc.b "_Window activate",0
- EVEN
- Gadget2Txt dc.b "_MouseMode",0
- EVEN
- Gadget3Txt dc.b "Display _clock/mem",0
- EVEN
- Gadget4Txt dc.b "D_isplay in window",0
- EVEN
- Gadget5Txt dc.b "Show second_z",0
- EVEN
- Gadget6Txt dc.b "Show da_te",0
- EVEN
- Gadget7Txt dc.b "America_n date",0
- EVEN
- Gadget8Txt dc.b "Show da_y",0
- EVEN
- Gadget9Txt dc.b "Short day strin_g",0
- EVEN
- Gadget10Txt dc.b "A_larm on",0
- EVEN
- Gadget11Txt dc.b "_Key-Click",0
- EVEN
- Gadget12Txt dc.b "W_rite environment",0
- EVEN
- Gadget13Txt dc.b "Window cycling (_1)",0
- EVEN
- Gadget14Txt dc.b "WB to front (_2)",0
- EVEN
- Gadget15Txt dc.b "LeftyMouse (_3)",0
- EVEN
- Gadget16Txt dc.b "ESC WindowClose (_4)",0
- EVEN
- Gadget17Txt dc.b 'Map "Umlauts" (_!)',0
- EVEN
- Gadget18Txt dc.b "L_oad Prefs",0
- EVEN
- Gadget19Txt dc.b "S_ave Prefs",0
- EVEN
- Gadget20Txt dc.b "_Enable",0
- EVEN
- Gadget21Txt dc.b "_Disable",0
- EVEN
- Gadget22Txt dc.b "_Hide",0
- EVEN
- Gadget23Txt dc.b "_Quit",0
- EVEN
-
-
-
-
-
- **********************************************************************
- * The AppIcon-Icon *
- **********************************************************************
- KCXAppIconDef dc.w 0,0
-
- dc.l 0 ; Gadget structure
- dc.w 0,0
- dc.w 49,20
- dc.w 0,0,0
- dc.l AppIconImg
- dc.l 0,0,0,0
- dc.w 0
- dc.l 0
-
- dc.b 0,0
- dc.l 0
- dc.l 0
- dc.l NO_ICON_POSITION ; Position of icon
- dc.l NO_ICON_POSITION
- dc.l 0
- dc.l 0
- dc.l 0
-
- AppIconImg dc.w 0,0 ; Image structure
- dc.w 49,19
- dc.w 2
- dc.l AppIconPic
- dc.b 3,0
- dc.l 0
-
- AppIconText dc.b "KCommodity",0
- EVEN
-
-
-
-
- **********************************************************************
- * Structures for the Tools-MenuItems *
- **********************************************************************
- AppItemID dc.l MAINITEM
- AppItemTxt dc.l .Txt1
- APPITEMNUM EQU (*-AppItemTxt)/4
- .Txt1 dc.b "KCX Main-Window",0
- EVEN
- AppItemPtr ds.l APPITEMNUM
- MAINITEM EQU 1
- HOTKEYITEM EQU 2
- BILLITEM EQU 3
- PREFSITEM EQU 4
-
-
-
- SECTION Sound,DATA_C
-
- ClickData DC.L $F7011C12,$FEFA0710
- DC.L $F7EA3026,$FC0007F3
- DC.L $EA0E12F5,$C1CD0513
- DC.L $F6FEE1,$2F11DD
- DC.L $F2260DE4,$FF160A00
- DC.L $E6E31723,$F4D7FB26
- DC.L $14F1E7F2,$FE0202E6
- DC.L $DD060FEC,$E0EFF8F2
- DC.L $F8FCF2ED,$F1FDFEF2
- DC.L $F1FDFB00,$8F5F207
- DC.L $6FC030C,$FE0E0E
- DC.L $C1F1B07,$5111920
- DC.L $2F1D0507
-
-
- NoSpriteDat dc.w 0,0
- dc.w 0,0
- dc.w 0,0
-
- BusyPtr DC.W $0000,$0000,$0400,$07C0,$0000,$07C0
- DC.W $0100,$0380,$0000,$07E0,$07C0,$1FF8
- DC.W $1FF0,$3FEC,$3FF8,$7FDE,$3FF8,$7FBE
- DC.W $7FFC,$FF7F,$7EFC,$FFFF,$7FFC,$FFFF
- DC.W $3FF8,$7FFE,$3FF8,$7FFE,$1FF0,$3FFC
- DC.W $07C0,$1FF8,$0000,$07E0,$0000,$0000
-
- AppIconPic dc.w $0,$0,$1,$8000,$0,$0,$1,$8000
- dc.w $ff,$ffff,$fe01,$8000,$3aa,$aaaa,$ab81,$8000
- dc.w $2ff,$feaa,$aa81,$8000,$6be,$eeaa,$aac1,$8000
- dc.w $6be,$ebfa,$aac1,$8000,$6ba,$eafa,$aac1,$8000
- dc.w $6be,$eaee,$aac1,$8000,$6be,$eeff,$2ac1,$8000
- dc.w $6ff,$ffff,$cac1,$8000,$6aa,$aaab,$f2c1,$8000
- dc.w $6aa,$aaab,$fec1,$8000,$6aa,$aaab,$eac1,$8000
- dc.w $2aa,$aaab,$f281,$8000,$3aa,$aaaa,$fb81,$8000
- dc.w $ff,$ffff,$fc01,$8000,$0,$0,$601,$8000
- dc.w $7fff,$ffff,$ffff,$8000,$ffff,$ffff,$fffe,$0
- dc.w $d555,$5555,$5554,$0,$d500,$0,$154,$0
- dc.w $d4ff,$ffff,$fe54,$0,$d580,$81ff,$ff54,$0
- dc.w $d3c9,$19ff,$ff94,$0,$d3c3,$3e07,$ff94,$0
- dc.w $d3c7,$3f0f,$ff94,$0,$d3c3,$3f97,$ff94,$0
- dc.w $d3c9,$190b,$ff94,$0,$d380,$8203,$ff94,$0
- dc.w $d3ff,$fffd,$ff94,$0,$d3ff,$fffd,$ff94,$0
- dc.w $d3ff,$fffe,$ff94,$0,$d5ff,$fffe,$df54,$0
- dc.w $d4ff,$ffff,$6e54,$0,$d500,$0,$4754,$0
- dc.w $d555,$5555,$5354,$0,$8000,$0,$0,$0
- END
-