Undocumented SuperBASIC Procedure in QPTR ----------------------------------------- SPTR has never been documented. Easy to guess, it does the same as IOP.SPTR, i.e. moves the pointer to a given position. The syntax is: SPTR [#channel], xpos, ypos [,key] Option Default Meaning xpos,ypos none new pointer position key -1 origin key The origin key should be zero if the pointer coordinates are absolute. A key of -1 will set the position relative to the current window definition. A key of 1 will set it relative to the hit area. Undocumented selection keystroke for SuperBASIC in QPTR ------------------------------------------------------- It is possible to put an underscore under a selection key for text loose menu items and text info items. To do this, specify the type to be text minus twice the underscore position. This means, to underscore the first character, give 0-1*2 (=-2), to underscore the fifth position give -10 etc. Using the Timer Thing --------------------- The ATARI Emulator software contains a Timer Thing, which may be used by any application. It is, of course, not shareable. After you used the Timer, you should proceed programming it in the following recommended way. The timer which can be used is Timer B of MFP 1 (which can be found in every ATARI ST/TT/Falcon): 1. Clear pending interrupt bit and clear interrupt in service bit. 2. Put the address of the server routine into the MFP Interrupt vector. MFP 1 is based at $180 at the moment, and Timer B is the MFP interrupt #8, which results in an address of $1A0. Remember, the VBR could be used on 680x0 processors! Warning: do not forget that the server routine has to end in RTE, not RTS! 3. Program the delay mode and the divider data register. 4. Now set the bits in the interrupt enable mask and the interrupt enable. When the timer thing is freed, all interrupts are automatically disabled. Additional information on QPTR ------------------------------ The procedure SPTR is not described in the QPTR manual. Its syntax is SPTR [#ch],xorg,yorg[,relkey] where relkey is 0 for absolute positioning, 1 for hit area relative and -1 or omit for current definition relative. Additional information on WM.LDRAW ---------------------------------- Contrary to the documentation, WM.LDRAW clears the change bit in the window status area on a selective redraw. Additional information on WM.ERSTR ---------------------------------- The QPTR manual did not mention that there is a limit on own error messages. An own error messages is easy to create: LEA own_msg,A0 ; get address MOVE.L A0,D0 ; into our "error" register BSET #31,D0 ; an error is negative Now the limit: the length of the string is limited to 40 ($28) characters. If it is longer, "unknown error" is returned instead! Additions to the CONFIG standard -------------------------------- There are two additional bits used in the string attributes: 8 and 9. These define the type of string, so that the CONFIG program can treat these strings in a special way. The possible combinations are: cfs.sspc equ %0000000000000001 ; string strip spaces cfs.file equ %0000000100000000 ; string is filename cfs.dir equ %0000001000000000 ; string is directory cfs.ext equ %0000001100000000 ; string is extension These features are supported by the new MenuConfig, and ignored by the standard config. Test for MODE 4 --------------- Some emulator software versions set bit 0 to signal "non-standard screen size". This can cause problems with some programs which check for MODE 4 by comparing the result from MT.DMODE with 0 or 8 - which will fail, 'cause the result can be 1 or 9. The best way to find out which MODE is active, is by BTST #3. This will work on any software. Menu's DSEL with directory parameter (MENU_rext V3.23) ------------------------------------------------------ When DSEL was re-written some time ago, it was not possible to introduce a new parameter to pass a directory suggestion, otherwise it would have been incom- patible. I always thought of a way of changing this, e.g. putting another parameter in front, but this was not a good solution. It is done now, the pointer passed in the return parameter is checked now; it is very likely that on a second call this pointer points to the previous string, therefore it is checked for validation and used if OK, otherwise the DATA_USE is used as before. This allows an automatic maintainance of the directory. I've tested it with QD, File-Select, MenuConfig, FiFi and some internal programs, and it works. Unfortunately, this does not work in SuperBASIC, as the return parameter is cleared, but this is not a major drawback. So, if you use DSEL now, make sure that the pointer to the return parameter points to the previous directory name or to an empty string. A small update on the HOTKEY System documentation ------------------------------------------------- there are two new types which can be returned from HOT_TYPE which were never properly documented: hki.wake 10 pick and wake job (and execute thing, if pick fails) hki.wkxf 12 pick and wake job (and execute file, if pick fails)