Preamble Copyright 1991 Greylock Software, Inc. Greylock Software, Inc. POBox 730 Gt Barrington MA 01230 Data: 413-243-0034 EMail: 1:321/202@fidonet Intended Audience Synopsis This is a brief description of MilqueToast, with both its similarities and differences from BinkleyTerm. This document is for the 0.86 version of MT. Contents Milque.Res Milque.Lng Eventually, the language file will be totally eliminated from MilqueToast, in favor of resource file based solutions. However, we wanted to extend some of the language file functionality for Bink proper, so the conversion would be consistent between the two versions. MT.Exe MT_086.Txt Yes, the last beta was 0.97. What's it to you? 1 Features 1.1 BinkleyTerm With A Windows-Like Interface 1.1.1 Mouse Support 1.1.2 Where Simple, Extensions 1.2 Code More Or Less Concurrent With Bink 2.50 At the present time, the code for Milque is virtually identical to the 2.49 beta. The time release bug is fixed in Milque. 2 Differences From "Standard" Bink 2.1 .Res File Should Be In Directory MT Is Run From MilqueToast, like a Windows application, makes use of a Resource File for things like dialog boxes, text, and other things. At the current time, the Resource File MUST be located in the run directory, although in theory, it can be located in the directory the program lives in. 2.2 ComboBox In Kill Traffic Yoy may note a combo in the Kill Traffic dialog. Eventually, there will be combo boxes in all the dialog boxes, derived from FidoUser.Lst or the nodelist itself. 2.3 Environmental, Config Files Called Milque The environmental used to determine the config file path is MILQUE. The Config file is Milque.Cfg. The event file is Milque.Evt. The language file is now called Milque.Lng, rather than MilqueL.Lng. (Early development of Milque was medium model. Now that Bink is large model, this is no longer necessary.) The semaphore and related files are prefixed Milq. 2.4 Gateway Mode Triggered By Alt-Minus, Not Alt-Equal This will be rectified when after I've talked to Magma about the problem. 2.5 Keyboard Remapping Does Not Function In Milque The keyboard remapping facility in the Bink language file is NOT USED by Milq. The irony of this is we put that facility INTO Bink in the first place! Filling out this table in the language file will merely consume memory needlessly. The reason for this is the way MEWEL/Windows processes events, menus, and accelerators. In a MEWEL/Windows application, if you have an active menu and you press Alt and the first letter of one of those menu items, that menu will be pulled down. The "legal" way to subvert this is by the use of accelerators. Accelerators are generally stored in the resource file (which we are doing.) Unfortunately, we have yet to resolve the legal issues involved in distributing the MEWEL side resource compiler, and know little or nothing about the legal status of Windows resource compilers. (The MEWEL resource language format is close to identical to the Windows format.) We are considering making use of the keyboard remapping in the language file as an "on the fly" accelerator table. Even in this case, it should be noted that MEWEL/Windows keystroke values are different than DOS keystroke values. 2.6 Overlaid With VROOMM Found the major oops that was causing us problems with the overlaid version. The current version is overlaid using BorlandC VROOMM. This means if you are running the beast on a file server, you should be careful not to run it more than once from the same image at the same time. 2.7 Product Code Table Derived From Resource File, Not Language 2.8 Screen "Blanking" Quite A Bit Different Screen blanking involves "iconizing" the main window, and moving it around the screen at randomly. In addition, we have divorced the screen blank time from the modem init time in Milque. Finally, a new config verb, BlankWait [Seconds] has been added to the config file. If it is not specified, 60 is used. 2.9 Terminal Mode Is Marginally Operational Terminal Mode is marginally (barely) operational. ANSI is internal to Milque. The implementation is not complete. However, it has been generalized to the point that eventually, it can be used relatively easily in Bink proper. However, few of the function keys have been implemented, none fully. Alt-D, Alt-M and Alt-Y should work. 2.10 Version 7 NodeList Is The Default! 2.11 Windows Are Sizeable, Moveable, And Storable Windows are sizeable and moveable, and should still work as you would expect. If you resize the recent activity window by shrinking the number of columns, and increase the number of lines in the Pending window, all the lines in the pending window should be used (if needed.) The "focus" of Mailer mode can be changed by clicking on the window you wish to have focus, or by tabbing from Window to Window. You can change the position by grabbing the caption bar, or from the move option of the system menu for that window. The system menu is accessed by clicking on the system menu box for that window, or by pressing alt-space. The size of the window can be changed by grabbing the lower right hand corner of the window, or via the size option of the system menu. The state of the windows is stored in a file called Milque.Scr. This is written to by the Save Layout command in the File menu. The original layout can be loaded from the Original Layout command from the file menu. 3 Differences From Earlier Betas 3.1 Milque.Scr Format Has Changed! With 0.83, the Milque.Scr file has a version number, and should not act as brain damaged as it has in the past. 4 Current Status 4.1 Operating Full Time On JonesNose For 40+ Days We've been running MilqueToast for approximately 10 days on JonesNose, full time. 4.2 Release Features 4.2.1 Vrsn 0.99 (910914) 4.2.1.1 Scheduler Improvements The Schedule list has been enhanced both with regard to the amount of schedule information displayed, along with allowing you to actually manipulate the information. The Write button takes the changes you have made and commits them to memory, and, when you leave Milq, saving them in the .Scd file. It does NOT affect the .Evt (text format) file. This is accomplished by using the Export function. In other words, the changes you make will "stick" when you use the write button until you update the .Evt file or erase the .Scd file. Currently, the Export button generates a file called Event.New. This is basically done out of cowardice on my part. It appears to be a functioning event file, but since I don't have a very complex event file, I'm not sure this is true. 4.2.1.2 Graphics Support Graphics Mode has been enabled, although all the ramifications have yet to be ironed out. To enable graphics mode at program start, in Milque.Ini, set GraphicsMode=16 (or whatever mode is best for your system.) It is recommended you NOT use EGA=1 in this case. All this stuff will be cleaned up in the 1.10 release. 4.2.2 Vrsn 0.71 4.2.2.1 Merge To 2.49n Level Source 4.2.2.2 Terminal Side Resource File Fixes 4.2.3 Vrsn 0.86 (910901) 4.2.3.1 Code Merge Milque code is now virtually identical to Bink code, at least in those modules that are common between the two. This was the result of a lot of effort on Vince's part. Thanks, Vince! 4.2.3.2 Nav Keys Hosed The Pending Window Navigation Keys are somewhat problematic. In order to provide access to their functionality while we work these kinks out, we set up the following accelerators (case independent): D - Down a Line E - End H - Home N - Next Screenful P - Previous Screenful U - Up a Line 4.2.4 Vrsn 0.85 (910831) 4.2.4.1 Attempted Cleanup of "modal" modeless window problems A number of bugs were found in the code that sets the "mode" of the Status and Pending windows. These have been eliminated, we hope. 4.2.4.2 Event List Dialog Box Added An Event List dialog has been added. It's a hint of things to come more than anything at the current time. 4.2.4.3 Merging To k Level Source (2.49-7+)/Code Cleanup This was not fun. No, that's being nice. This was downright painful. It was also profound in the number of areas it touched. Please test EVERYTHING. Much of the Windows specific code has been removed from Bink proper, in favor of macro changes, explained in detail in the 0.84 notes. 4.2.4.4 NewNodeList BugFix NewNodeList was broken in 0.84. It's fixed now. The default remains Version 7, but specifying NewNodeList will work now. 4.2.4.5 Path Send Problems Milque is experimenting with handling paths during WaZOO based sessions. Essentially, we plan on a mechanism that will allow systems to transfer files between ACTUAL PATHS, bypassing the inbound directories, under controlled conditions. As a precursor to this, we set Milq to ALWAYS send the full path. This has caused problems at least with dBridge systems. The problem is one of compliance with the ZModem spec, which specifies that paths are allowed. The short term solution to this will be to send path names ONLY to other Milqs (and Binks). This is not a great solution (one we will NOT extend on a case by case basis). However, we cannot see the point in adding a bit to the WaZOO handshake for a capability we should already be able to legally support with the information already being transferred. Nor will we make Milq aware on a mailer by mailer basis who is and is not capable of handing this. Both these solutions are "proving the negative". Milq will ONLY send paths if SendPaths=1 exists in Milque.Ini. This verb may be moved to Milque.Cfg before the formal release. The real solution, in short, is compliance. 4.2.4.6 Pending Window Keys Different From Binkley Due to the limitations of accelerator keys (described elsewhere), we have been forced to change the keys used to manipulate the pending outbound window. In Milque, the keystrokes must be Alt'd - for instance, Down becomes Alt-Down. 4.2.5 Vrsn 0.84 (910828) 4.2.5.1 Distributed Screen Layout Peek-A-Boo The resource file default layout is such that not all the information that can be displayed in a given window is exposed. You should try stretching some of the windows to see what's there. 4.2.5.2 FreeSpace Added to Settings 4.2.5.3 Macro Changes To Reduce Redundant Code 4.2.5.3.1 General Here's what we're doing internally to clean up some of the conditional code. The main changes relate to sb_* flavored macros. MANY of them are simply macro'd to nothingness on the Milq side. We treat sb_puts(w,s) as a macro on the Milq side, which is resolves as follows: SendMessage( w, WM_SETTEXT, 0, (long)(char far *)s ) In other words, on the Milq side, sb_puts is talking to a formal Window handle. On the Bink side, sb_puts still talks to a Bink window pointer (a REGIONP). We have far more Windows (essentially, every item displayed on the screen has its unique Window.) Where old Bink code would look like: sb_puts( historywin, str ); Now it looks like: sb_puts( history_hWnd, str ); With macros on the Bink side resolving it to: sb_puts( historywin, str ); and on the Milq side to: SendMessage( historywin->hWnd, WM_SETTEXT, 0, (long)str ); However, in most cases, the destination of the sb_puts() will NOT be a *_hWnd flavored macro. Each display location has a specific window handle on the Milq side: sb_puts( history_BBS, str ); On the Milq side, this will resolve to: SendMessage( history_BBS, WM_SETTEXT, 0, (long)str ); And on the Bink side: sb_puts( historywin, str ); 4.2.5.3.2 Milque Side Detail 4.2.5.3.2.1 *_hWnd 4.2.5.3.2.1.1 call_hWnd 4.2.5.3.2.1.2 file_hWnd 4.2.5.3.2.1.3 history_hWnd 4.2.5.3.2.1.4 hold_hWnd 4.2.5.3.2.1.5 node_hWnd 4.2.5.3.2.1.6 settings_hWnd 4.2.5.3.2.2 sb_* 4.2.5.3.2.2.1 sb_fill* 4.2.5.3.2.2.2 sb_move sb_move() is history on the Milq side. It is meaningless. 4.2.5.3.2.2.3 sb_puts This has been macro'd as follows: #define sb_puts(w,s) SendMessage(w,WM_SETTEXT,0,(long)(char *)s) This requires some macro changes on the Bink side. Where sb_puts() wants to talk to a REGIONP, we now want it to talk to an hWnd. Since we have more hWnds than Bink has REGIONP, this seemed the only possible approach. So we refer to callwin->hWnd as call_hWnd, and carry this approach through the five remaining windows: File, History, Hold, Node, and Settings. The Bink code is being changed such that sb_moves() talk to *_hWnd flavor'd names. 4.2.5.3.2.2.4 sb_w* 4.2.5.3.3 Bink Side Detail 4.2.5.3.3.1 SendMessage SendMessage() is reduced to nothing on the Bink side. 4.2.5.3.3.2 call_* 4.2.5.3.3.2.1 call_hWnd 4.2.5.3.3.3 hold_* 4.2.5.3.3.3.1 hold_hWnd 4.2.5.3.3.4 node_* 4.2.5.3.3.4.1 node_hWnd 4.2.5.4 Merging to j level source We believe we are concurrent with the j level Bink sources. This is roughly equivalent to Bink Beta 2.49-7. 4.2.5.5 Node Window Behaviour Changes The Node Window behaviour has been refined. What is displayed depends on what window has the focus, and what we are doing. If the Pending window has the focus, the detail information for the top line of the window will be displayed. If you are dialing or in a session, the current node information is displayed. Otherwise, the last node called info is displayed. There are some flaws in the way this works at the current time. 4.2.5.6 On Disk Structures Have Changed! 4.2.5.6.1 Milque.Scd Some elapsed time information, and a more rational way of storing last and next address information have resulted in changes to the Scd file. Also, in an earlier release, a change was made to the .Scd structure, but the internal version was not incremented. This caused problems for some testers. Not sure how this will be resolved with Bink. 4.2.5.6.2 Milque.Scr Changes were made to Milque.Scr to allow storage of more information about the state of the screen (although those features are not being utilized in this version.) 4.2.5.7 Resource File Humour The resource file has some elements of humour. Hope y'all see it the same way. 4.2.5.8 Spawn Configuration From MEWEL.Ini Spawn information is drawn from MEWEL.Ini, which is MEWEL's equivalent of Win.Ini. To use EMS in swapping, you need to have a mewel.ini containing the following: [MEWEL.SWAPEXEC] UseEMS=1 The file should be either in the run directory, or in the program directory MT lives in. 4.2.5.9 UseWinColors added to Milque.Ini Added a switch to allow use of the Windows default color scheme. 4.2.5.10 Version7 Nodelist Is The Default This change was made in 0.83, actually. The default nodelist in Milq is V7. V6 is currently supported, but as soon as V7 support is more widely available, Milq will support only that format. To use V6, you MUST specify the NEWNODELIST verb in Milque.Cfg. 4.2.5.11 Windows Menu Item Added 4.2.6 Vrsn 0.83 4.2.6.1 Call Window Improved The call history window has been improved. It should retain its contents and scroll properly now. 4.2.6.2 Initial State Info To Milque.Ini The current graphics mode is stored in Milque.Ini. This is a Win.Ini flavored file. A sample is included in the archive. 4.2.6.3 Language File Elements Moved To Resource File Milque eventually will completely abandandon the language file. The Resource File is the "Windowish" way of approaching this. At this time, all the data in the language file is contained in the resource file as well. We have drastically cut the product code strings contained in the Milque langauge file, as MT is using the resource file for this. Keyboard translation is currently an amalgam of Accelerators and the translation feature added to the language file. Eventually, this will be exclusively a resource file operation. 4.2.6.4 Major Window Selection Bug Fixed From Terminal Mode 4.2.6.5 Menus Now Accessable Via Keyboard We are much closer to Windows-style keyboard handling than in earlier versions. While some work remains, the underlying code now reflects the proper path. You should be able to access the menus via the keyboard, as well as have the alt-key functionality you've gotten used to in Bink. 4.2.6.6 Node Detail Information 4.2.6.6.1 PWD in Milque.Ini 4.2.6.7 Pending Window Operation Vastly Improved The Pending Window flashing has been eliminated. We've made some changes to the Pending display. These are tentative changes, subject to reversal. In essence, the address field is now right justified, and if you shrink the window horizontally, the leading part of the address will be lost rather than the information about it. 4.2.6.8 Resource File Open Continuously The resource file (Milque.Res) is now open all the time. It can be in the directory the main program is located in, or the run directory. 4.2.6.9 sb_put* Functions Improved 4.2.6.10 Screen Size Specific Resource Files I don't like this solution, but it works. 4.2.6.11 Scrolling Problem in Active Window Fixed 4.2.6.12 Shift-Space Access To System Menu 4.2.6.13 Tab/Shift-Tab Mailer Mode Window Navigation 4.2.6.14 Terminal Mode Colors Somewhat Improved 4.2.6.15 VROOMM Buffer Size Reduced 4.2.6.16 VROOMM Now Uses EMM/Extended Memory 4.3 Known Limitations/Problems 4.3.1 General (Possibly MEWEL Internal) 4.3.1.1 ComboBoxes Not Coming Down Via Alt-Down 4.3.1.2 Compiled Using BorlandC Since it's not overlaid, this is currently not a problem. However, once we get back into VROOMM, there could be some problems with fileservers. 4.3.1.3 Input Problems 4.3.1.3.1 Desqview "mouse" keyboard not effective 4.3.1.3.2 Hosing of Fabian's Mouse 4.3.1.3.3 Keyboard buffer spooky (Focus Problem) 4.3.1.3.4 Keypad Enter Not Always Effective 4.3.1.3.5 Keypad Enter Not Always Kosher In Size, Move 4.3.1.4 Return From Spawn Hi Res Problems 4.3.1.5 Spawn Configuration From MEWEL.Ini Spawn information is drawn from MEWEL.Ini, which is MEWEL's equivalent of Win.Ini. To use EMS in swapping, you need to have a mewel.ini containing the following: [MEWEL.SWAPEXEC] UseEMS=1 The file should be either in the run directory, or in the program directory MT lives in. 4.3.1.6 SwapDir Config File Verb Not Respected The SwapDir config file verb is not respected by Milq. Instead, it uses the TEMP environmental. This is an artifact of MEWEL/Windows. We are not sure how we will resolve it, since doing so would involve mucking with MEWEL internals. 4.3.2 Mailer Mode 4.3.2.1 Baud Display In Node Detail Not Nearly Right 4.3.2.2 Blank Screen Sometimes, upon return from "screenblank", the mailer screen is hosed. The Activity window, and sometimes others are either not displayed, or are displayed in a fragmentary manner. Milque will respond to keyboard (and mouse) commands in this state. This is a long lived bug. We continue to improve it, but fail to kill it entirely. 4.3.2.3 Node 4.3.2.3.1 Unknown nodes incorrectly identified 4.3.2.4 Pending 4.3.2.4.1 Hilight when calling 4.3.2.4.2 Last Line Not Properly Erased 4.3.2.4.3 PageDown/Up Not By Length of Screen, but 4 4.3.2.5 Polling Transition From Nothing In Outbound 4.3.2.6 Transfer Status Problems 4.3.2.6.1 Janus Time/Position Updating While dramatically improved, there are still problems with Janus transfer updates. Further, the adaptations we've had to make to accomodate Janus affect the appearance of uni-directional transfer status. 4.3.2.6.2 Terminal Mode 4.3.2.6.3 ZModem Update There have been times when updating in ZModem has stopped appearing on the screen. I have yet to identify the conditions under which this occurs. It does NOT interfere with transfers. If someone can pin this down, it would be appreciated. 4.3.3 Terminal Mode 4.3.3.1 ANSI Problems 4.3.3.2 Avatar Not Even Implemented 4.3.3.3 External Protocols Not Yet Supported 4.3.3.4 Gateway Mode Nowhere Near Real First off, we don't have access to Alt-= under Windows/MEWEL. We have yet to make the internal changes to the message processors to properly handle it. 4.3.3.5 Minimize Should Be Disallowed 4.3.3.6 Redial Nearly Working We have totally revamped the redial system. Of course, it doesn't work, but you'll get the idea. 4.3.3.7 Transfer Status Problems 4.3.3.7.1 Terminal Mode 4.3.3.7.2 ZModem Update There have been times when updating in ZModem has stopped appearing on the screen. I have yet to identify the conditions under which this occurs. It does NOT interfere with transfers. If someone can pin this down, it would be appreciated. 5 Testing Desired 5.1 Full Time Node Testing Those of you brought in specifically to test Milque are requested to run the beast full time on your nodes. Beyond that, anyone is welcome to test in whatever capacity they wish. 5.2 Response Via BinkBeta