_.@'Fo'Hv'Hqm TMAKE_SDCALCULATOR.CLI   [!equal,,RCS] **************************************************************** $Id: make_sdcalculator.cli,v 1.4 1995/07/11 20:47:54 mark Exp mark $ $Log: make_sdcalculator.cli,v $ Revision 1.4 1995/07/11 20:47:54 mark Updated revision and copyright Revision 1.3 1994/03/11 17:27:47 mark Inserted previous log comments Revision 1.2 1994/03/11 01:45:18 mark Added RCS Id and Log fields Revision 1.1 1994/03/10 22:05:09 mark Initial revision *********************************************************************** [!end] comment MAKE_SDCALCULATOR.CLI Screen Demon rev 3.60.01 comment Copyright (C) 1988-1995, Threshold, Inc., All Rights Reserved comment -------------------------------------------------------- push prompt pop searchlist [!searchlist]& [!nequal,[!path =],[!path [!edirectory [!pathname %0\%.cli]]]]& [!edirectory [!pathname %0\%.cli]]& [!end] [!equal,,[!path sdcalculator.ob]] x lfe X screen_demon.lb sdcalculator [!end] sd_clink%0/% sdcalculator %1-% pop .@'Fo'Hq~'Hq~ WMAKE_SD_ICDEB.CLI W [!equal,,RCS] **************************************************************** $Id: make_sd_icdeb.cli,v 1.5 1995/07/11 20:47:46 mark Exp mark $ $Log: make_sd_icdeb.cli,v $ Revision 1.5 1995/07/11 20:47:46 mark Updated revision and copyright Revision 1.4 1995/01/11 18:19:14 mark Modified to create ICDEB__SD.SL instead of ICDEB__SCREEN_DEMON.SL, which could be too long a name. Revision 1.3 1994/03/11 17:27:47 mark Inserted previous log comments Revision 1.2 1994/03/11 01:45:18 mark Added RCS Id and Log fields Revision 1.1 1994/03/10 22:05:09 mark Initial revision *********************************************************************** [!end] comment MAKE_SD_ICDEB.CLI Screen Demon rev 3.60.01 comment Copyright (C) 1988-1995, Threshold, Inc., All Rights Reserved comment -------------------------------------------------------- [!equal,,comment] *** MAKE_SD_ICDEB *** For ICOBOL revision 1.60 and above, this macro can be used to create a new version of the ICDEB debugger for use with revision 3.60 of SCREEN DEMON. The new version will be called SD_ICDEB.PR, and there will be an associated shared library file called ICDEB__SD.SL Usage: MAKE_SD_ICDEB{/switches} {additional modules} The /CONFIG=configname switch indicates that the specified alternate SCREEN DEMON configuration file should be used instead of SD_DEBUGGER_CONFIG.OB The /SLONLY switch indicates that only the shared library file ICDEB__SD.SL is to be created. The step of creating the SD_ICDEB.PR program will be skipped. [!end] push prompt pop comment Adjust this searchlist command to fit your file system searchlist [!searchlist] :UTIL:ICOBOL& [!nequal,[!path =],[!path [!edirectory [!pathname %0\%.cli]]]]& [!edirectory [!pathname %0\%.cli]]& [!end] comment Determine the revision of ICOBOL being used, if possible. comment Use default revision if revision cannot be determined. delete/2=ignore =?[!pid]rev.tmp [!equal,,[!path icx.pr]] string 1.71 [!else] revision/l==?[!pid]rev.tmp icx.pr string [=?[!pid]rev.tmp] string [!ename [!ename [!string]]] string [!uadd,0,[!ename [!string]]][!eextension [!string]] delete/2=ignore =?[!pid]rev.tmp [!end] write/l==?[!pid]rev.tmp [!string][!ascii 46] [!equal,,%0/o=%] %0\%%0\o%/o=ICDEB_[=?[!pid]rev.tmp]_SD.SL %1-% [!else][!equal,,%0/config=%] %0\%%0\config%/config=SD_DEBUGGER_CONFIG %1-% [!else] string/k [!equal,,%0/sl/slonly%] [!equal,,[!path ICDEB.PR]] write [!ascii 7]ICOBOL's ICDEB.PR not found - cannot create SD_ICDEB.PR ! string ERROR [!end] [!end] [!equal,,[!path SD_ICDEB_[=?[!pid]rev.tmp]_INTF.OB]] write ICOBOL rev [=?[!pid]rev.tmp] debugger interface not found: write ,,,,,,,,SD_ICDEB_[=?[!pid]rev.tmp]_INTF.OB string ERROR [!end] [!equal,,[!string]] comment Build the special shared library for SD_ICDEB to use make_screen_demon.sl%0\sl\slonly% SD_ICDEB_[=?[!pid]rev.tmp]_INTF %1-% [!equal,,%0/sl/slonly%] write write Creating SCREEN DEMON version of ICOBOL debugger... sd_possess/delete/sl=%/o=% ICDEB [!nequal,,[!path SD_ICDEB.PR]] write ,,,,SD_ICDEB.PR is ready for use. [!end] [!end] [!end] write delete/2=ignore =?[!pid]rev.tmp [!end][!end] pop .@'Fo'Hq'Hq@MAKE_SD_ICX_NAMTB.CLI  [!equal,,RCS] **************************************************************** $Id: make_sd_icx_namtb.cli,v 1.4 1995/07/11 20:47:50 mark Exp mark $ $Log: make_sd_icx_namtb.cli,v $ Revision 1.4 1995/07/11 20:47:50 mark Updated revision and copyright Revision 1.3 1994/03/11 17:27:47 mark Inserted previous log comments Revision 1.2 1994/03/11 01:45:18 mark Added RCS Id and Log fields Revision 1.1 1994/03/10 22:05:09 mark Initial revision *********************************************************************** [!end] comment MAKE_SD_ICX_NAMTB.CLI Screen Demon rev 3.60.01 comment Copyright (C) 1988-1995, Threshold, Inc., All Rights Reserved comment -------------------------------------------------------- comment *** This macro assembles a customized NAMTB.OB file comment * to be linked with the ICOBOL interpreter. push prompt pop searchlist [!searchlist]& [!nequal,[!path =],[!path [!edirectory [!pathname %0\%.cli]]]]& [!edirectory [!pathname %0\%.cli]]& [!end] ((write x/s),x/s) & masm/ps=masm_32char.ps/ulc/o=[!equal,,%1%]NAMTB[!else]%1%[!end]%0/% & NAMTB_DEFINES & NAMTB & %1-% & SD_CALLS pop .@'Fo'H}'HqMAKE_SD_SPY.CLI  [!equal,,RCS] **************************************************************** $Id: make_sd_spy.cli,v 1.5 1995/07/11 20:47:53 mark Exp mark $ $Log: make_sd_spy.cli,v $ Revision 1.5 1995/07/11 20:47:53 mark Updated revision and copyright Revision 1.4 1994/03/11 17:27:47 mark Inserted previous log comments Revision 1.3 1994/03/11 01:45:18 mark Added RCS Id and Log fields Revision 1.2 1994/03/10 23:04:57 mark Added missing & to 2nd line of SEARCHLIST command Revision 1.1 1994/03/10 22:05:09 mark Initial revision *********************************************************************** [!end] comment MAKE_SD_SPY.CLI Screen Demon rev 3.60.01 comment Copyright (C) 1988-1995, Threshold, Inc., All Rights Reserved comment -------------------------------------------------------- [!equal,,comment] This macro creates a new version of the SD_SPY program, so that its Screen Demon configuration options can be changed. Optional global switches: /CONFIG=filename specifies an alternate configuration file to use instead of SD_SL_CONFIG. /O=programname specifies an alternate program name to create instead of the default name SD_SPY.PR /COB32 indicates that 32-bit VS/COBOL programs are also being linked with SD_SPY, and so will require the COBOL.LB and LANG_RT libaries. /LANG_RT indicates that the Common Language Runtime library is to be linked with the new SD_SPY program. This switch is not necessary if the /COB32 switch is specified. The /PRISWI global switch causes the Printer Switcher routine to be linked with the new version of SD_SPY. The SD_PRISWI_CONFIG file must be available at runtime. /WP causes the interface routines for WordPerfect Library/Office Shell to be linked with the new SD_SPY program. The SHELLCOM.32.OB file provided by WordPerfect must be available at link time. /CEO includes an interface to CEO Mail and to the CEO Interrupt Menu. This interface uses routines from CEO Toolkit, which must be available on your system at link time. /NOMODELID prevents the resulting Spy from querying the terminal for its model id on startup. Spy will assume it is running on a D210 terminal. Additional object modules may be included by listing them on the command line. Optional patches will be installed if they are placed in a file called SCREEN_DEMON.PAT. See the SCREEN_DEMON.OPTIONAL.PAT file for instructions on creating a SCREEN_DEMON.PAT file. Also, all available fix patches, as specified in the NONICX.PATCH_LIST file, will be installed. [!end] push prompt pop Comment Adjust the following SEARCHLIST command to fit your file system: searchlist [!searchlist]& & [!nequal,,%0/cob32/infos/ceo/lang_rt%]& [!nequal,,%0/cob32%]& :util:cobol& [!end]& [!nequal,,%0/cob32/ceo/lang_rt%]& :util:lang_rt& [!end]& [!end]& & [!nequal,[!path =],[!path [!edirectory [!pathname %0\%.cli]]]]& [!edirectory [!pathname %0\%.cli]]& [!end] [!equal,,%0/config=%] %0\%%0\config%/config=SD_SL_CONFIG %1-% [!else][!equal,,%0/o=%] %0\%%0\o%/o=SD_SPY %1-% [!else] [!equal,,[!path %0/config=%.OB]] write ERROR: cannot find configuration file %0/config=%.OB [!else] write write ,,,,Using configuration file [!path %0/config=%.OB] write ,,,,,,,,,to create %0/o=%.PR write (write,x/s) link/stack=20000/tasks=6& [!nequal,,%0/cob32/ceo/lang_rt%]/mtop=1[!end]& %0\config\priswi\wp\ceo\cob32\infos\lang_rt% & sd_spy/start& & %0/config=%& & %1-%& & [!nequal,,%0/wp%]& sd_wp_shell& [!nequal,,[!path :wpoffice:wpoexe:shellcom.32.ob]]& :wpoffice:wpoexe:shellcom.32& [!else][!nequal,,[!path :wpml:shellcom.32.ob]]& :wpml:shellcom.32& [!else]& shellcom.32.ob& [!end][!end]& [!end]& & [!nequal,,%0/ceo%]& sd_ceo_interface& :util:ceo_dir:it_lib.lb/multiple& [!end]& & [!nequal,,%0/priswi%]& sd_priswi& [!end]& & [!nequal,,%0/nomodelid%]& sd_no_model_id& [!end]& & screen_demon.lb& & [!nequal,,%0/cob32%]& cfalt ffalt cobol.lb& [!end]& & [!nequal,,%0/infos%]& [!equal,,%0/infos=%]& icall32& [!else]& dummyicall32& [!end]& [!end]& & [!nequal,,%0/cob32/ceo/lang_rt%]& multitasking no_queued_task_mgr lang_rt.lb& [!else]& sd_no_lang_rt& [!end] [!equal,(),([!string])] comment Install optional patches to the new SD_SPY [!nequal,,[!path SCREEN_DEMON.PAT]] x patch/t==%0/o=%.PR/p=SCREEN_DEMON.PAT/yes [!end] comment Install fix patches if available [!nequal,,[!path NONICX.PATCH_LIST]] x patch/t==%0/o=%.PR/p=([NONICX.PATCH_LIST])/yes [!end] [!nequal,,[!path SPY.PATCH_LIST]] x patch/t==%0/o=%.PR/p=([SPY.PATCH_LIST])/yes [!end] [!end] [!end] [!end][!end] pop .W'HX'Hq'Hq#lMAKE_SD_ICRUN.CLI [!equal,,RCS] **************************************************************** $Id: make_sd_icrun.cli,v 1.3 1995/07/13 00:10:44 mark Exp mark $ $Log: make_sd_icrun.cli,v $ Revision 1.3 1995/07/13 00:10:44 mark Was using final ICRUN program name, not temporary name just linked, when determining ICRUN revision and when making Possess patch file, causing unpredictable results. Revision 1.2 1995/07/12 21:22:10 mark Converted from test version to full release version. *********************************************************************** [!end] comment MAKE_SD_ICRUN.CLI Screen Demon rev 3.60.01 comment Copyright (C) 1988-1995, Threshold, Inc., All Rights Reserved comment -------------------------------------------------------- [!equal,,comment] *** MAKE_SD_ICRUN *** This macro creates a new ICOBOL 2 interpreter linked for use with the SCREEN DEMON Screen Management Package. Usage: MAKE_SD_ICRUN{/switches} {additional modules} The /CONFIG=configname switch indicates that the specified alternate SCREEN DEMON configuration file should be used instead of SD_ICX_CONFIG.OB The /NOTURBO global switch can be specified to force Turbo Display mode to be completely off. Use this switch only when absolutely necessary - it can disrupt SCREEN DEMON's windowing environment. Try /PARTURBO instead. The /PARTURBO global switch can be specified to have the interpreter start up in Partial Turbo mode rather than Full Turbo. Partial Turbo provides the continual screen updates that occur without Turbo, but still transmits only the characters that change. Partial Turbo is much slower than Full Turbo, however, because screen writes are not buffered, thus requiring more system calls. The /PRISWI global switch causes the Printer Switcher routine to be linked with the new ICOBOL interpreter. The SD_PRISWI_CONFIG file must be available at runtime. The /CEO global switch includes an interface to CEO Mail and to its Interrupt Menu. This interface uses routines from CEO Toolkit, which must be available on your system. The /WP global switch includes WordPerfect Library/Office Shell interface routines. This interface requires the SHELLCOM.32.OB file supplied with WordPerfect Library/Office. /NOVM Causes the resulting ICRUN interpreter to run outside of the SCREEN_DEMON_3.00.VM file. This means that ICOBOL programs running under this interpreter will not be visible to SD_SPY, but will also be unable to pass the screen image across program calls outside ICRUN. /NOMODELID Prevents the resulting ICRUN interpreter from querying the terminal for its model id on startup. ICRUN will assume it is running on a D210 terminal. This switch is often used with /NOVM. /CRT Use the Data General-provided CRT.LB library for C and LANG_RT runtime routines, instead of using the libraries included with AOS/VS C and LANG_RT. This switch is assumed if the CCL.CLI AOS/VS C link macro cannot be found. If neither CRT.LB nor AOS/VS C is available, this macro cannot be used. [!end] [!equal,,%0/o=%] %0\%%0\o%/o=[!path =]:SD_ICRUN %1-% [!else][!equal,,[!edirectory %0/o=%]] %0\%%0\o%/o=[!path =]:%0/o=% %1-% [!else] push prompt pop comment Adjust this searchlist command to fit your file system comment If the CRT.LB library will be used, it is not necessary comment for the searchlist to include C and LANG_RT directories. searchlist [!searchlist]& :UTIL:ICOBOL.205:LINK_KIT& [!equal,,%0/CRT%]& [!nequal,,[!path :UTIL:C]]& :UTIL:C& [!end]& [!nequal,,[!path :UTIL:LANG_RT]]& :UTIL:LANG_RT& [!end]& [!end]& [!nequal,[!path =],[!path [!edirectory [!pathname %0\%.cli]]]]& [!edirectory [!pathname %0\%.cli]]& [!end] write [!equal,,%0/config=%] [!equal,,[!path SD_ICX_CONFIG.OB]] write ,,,,Configuration file SD_ICX_CONFIG.OB not found! string ERROR [!else] write ,,,,Using configuration file [!path SD_ICX_CONFIG.OB] [!end] [!else] [!equal,,[!path %0/config=%.OB]] write ,,,,Configuration file %0/config=%.OB not found! string ERROR [!else] write ,,,,Using configuration file [!path %0/config=%.OB] [!end] [!end] write comment Link the new interpreter using AOS/VS C if available and if comment not explicitly told to use CRT.LB. Otherwise, use CRT.LB. comment Set var0 to 1 if using AOS/VS C, or zero otherwise. var0 0 [!equal,,%0/CRT%][!nequal,,[!path CCL.CLI]] var0 1 [!end][!end] [!equal,0,[!var0]] [!equal,,[!path CRT.LB]] write C runtime library file missing! path/1=error/2=error CRT.LB [!end] ((write x/s),x/s) link& /pid_size=anypid/tasks=5/mtop=12& /o=[!path [!edirectory %0/o=%]]:?[!pid]icrun& %0\CRT\O\NOTURBO\PARTURBO\CEO\WP\CONFIG\PRISWI\NOVM\NOMODELID%& uc/align=1 ud/align=1 sc/align=1 sd/align=1 & & [!else]& ((write ccl),ccl)& /s/nounx& /pid_size=anypid/tasks=5/mtop=12& /o=[!path [!edirectory %0/o=%]]:?[!pid]icrun& %0\O\NOTURBO\PARTURBO\CEO\WP\CONFIG\PRISWI\NOVM\NOMODELID%& & [!end]& & $REGIO/VAL=1 $KEEPSEA/VAL=1 & & icrun.ob & & sd_icrun_intf namtb & & [!nequal,,%0/CONFIG=%]%0/CONFIG=%[!else]SD_ICX_CONFIG[!end]& & %1-% & & [!nequal,,%0/CEO%]& SD_CEO_INTERFACE :UTIL:CEO_DIR:IT_LIB.LB/MULTIPLE& [!end]& & [!nequal,,%0/WP%]& SD_WP_SHELL& [!nequal,,[!path :WPOFFICE:WPOEXE:SHELLCOM.32.OB]]& :WPOFFICE:WPOEXE:SHELLCOM.32& [!else][!nequal,,[!path :WPML:SHELLCOM.32.OB]]& :WPML:SHELLCOM.32& [!else]& SHELLCOM.32.OB& [!end][!end]& [!end]& & [!nequal,,%0/PRISWI%]& SD_PRISWI& [!end]& & [!nequal,,%0/novm%]& sd_init_no_vm& [!equal,,%0/nomodelid%]& sd_no_vm_termcaps_tbl& [!end]& [!end]& & [!nequal,,%0/nomodelid%]& sd_no_model_id& [!end]& & screen_demon.lb & & icrun.lb & icsys.lb/multiple & & [!equal,0,[!var0]]& CRT.LB & [!else]& dummy_signal.ob & [!end] comment ...end of {CCL | LINK} command [!equal,(),([!string])] comment Determine the revision of ICOBOL being used, based on comment the revision of the ICRUN just created revision/l==?[!pid]rev.tmp [!path [!path [!edirectory %0/o=%]]:?[!pid]icrun.PR] string [=?[!pid]rev.tmp] string [!ename [!ename [!string]]] string [!uadd,0,[!ename [!string]]][!eextension [!string]] delete/2=ignore =?[!pid]rev.tmp comment If there is no Screen Demon possess patch file for this comment revision of ICOBOL, attempt to create one [!equal,(),([!path SD_POSSESS_ICRUN_[!string].PAT])] write No Screen Demon patch file found for ICOBOL revision [!string] write Attempting to create one... make_sd_possess_icrun_pat [!path [!edirectory %0/o=%]]:?[!pid]icrun [!end] comment Now apply the Screen Demon possess patch to the new comment interpreter to activate it delete/2=ignore [!path [!path [!edirectory %0/o=%]]:?[!pid]icrun.PR].PH xeq/s patch/t=[!path [!path [!edirectory %0/o=%]]:?[!pid]icrun.PR]/p=SD_POSSESS_ICRUN_[!string].PAT/y [!end] [!equal,(),([!string])] [!nequal,,%0/PARTURBO%] x patch/t=[!path [!path [!edirectory %0/o=%]]:?[!pid]icrun.PR]/p=PAR_TURBO.PAT/yes [!else][!nequal,,%0/NOTURBO%] x patch/t=[!path [!path [!edirectory %0/o=%]]:?[!pid]icrun.PR]/p=NO_TURBO.PAT/yes [!end][!end] comment Install all applicable fix patches [!nequal,,[!path ICRUN.PATCH_LIST]] x patch/t=[!path [!path [!edirectory %0/o=%]]:?[!pid]icrun.PR]/p=([ICRUN.PATCH_LIST])/yes [!end] [!end] [!nequal,(),([!string])] write [!ascii 207] write Errors prevent creation of new ICRUN interpreter! [!else] [!equal,,comment] Now that the new ICRUN is ready for use, rename it to the desired name. Waiting until this point preve nts users from accessing a partially-patched version. [!end] delete/2=ignore [!path [!edirectory %0/o=%]]:[!efile %0/o=%.PR] delete/2=ignore [!path [!edirectory %0/o=%]]:[!efile %0/o=%.ST] delete/2=ignore [!path [!edirectory %0/o=%]]:[!efile %0/o=%.PR.PH] write Renaming [!path [!path [!edirectory %0/o=%]]:?[!pid]icrun.PR]& to [!efile %0/o=%.PR] rename [!path [!path [!edirectory %0/o=%]]:?[!pid]icrun.PR]& [!efile %0/o=%.PR] write Renaming [!path [!path [!edirectory %0/o=%]]:?[!pid]icrun.ST]& to [!efile %0/o=%.ST] rename [!path [!path [!edirectory %0/o=%]]:?[!pid]icrun.ST]& [!efile %0/o=%.ST] write Renaming [!path [!path [!edirectory %0/o=%]]:?[!pid]icrun.PR.PH]& to [!efile %0/o=%.PR.PH] rename [!path [!path [!edirectory %0/o=%]]:?[!pid]icrun.PR.PH]& [!efile %0/o=%.PR.PH] write write [!path %0/o=%.PR] is now ready for use [!end] pop [!end][!end] .W'Mc'M'M HGSD_POSSESS_ICRUN_BASE.PAT  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; $Id: sd_possess_icrun_base.pat,v 1.2 1995/07/18 21:55:17 mark Exp mark $ ; ; $Log: sd_possess_icrun_base.pat,v $ ; Revision 1.2 1995/07/18 21:55:17 mark ; Added patch to replace init_user_bltn_fcns with SD_INIT_USER_BLTN_FCNS in ; ICRUN's initialization call. ; ; Revision 1.1 1995/05/02 01:00:25 mark ; Initial revision ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;The patches in this file activate the SCREEN DEMON routines for ICOBOL. ; ;This file applies only to revision *ICRUN-REV* of the Interactive COBOL ; interpreter running under AOS/VS or AOS/VS II, using Screen Demon ; revision 3.60 %PROGRAM ;These patches modify ICRUN's op code dispatch handler so that appropriate ; functions are routed through Screen Demon handlers. SD_ICRUN_OP.STP 0 #(*LDSP-TABLE*+(116*2))+(*LDSP-TABLE*+(116*2))\ ^+1 0 [] *LDSP-TABLE*+(116*2) @. SD_OP.STP_INTERCEPTOR-.\ ^+1 @. [] SD_ICRUN_OP.CHN 0 #(*LDSP-TABLE*+(120*2))+(*LDSP-TABLE*+(120*2))\ ^+1 0 [] *LDSP-TABLE*+(120*2) @. SD_OP.CHN_INTERCEPTOR-.\ ^+1 @. [] SD_ICRUN_OP.XIT 0 #(*LDSP-TABLE*+(171*2))+(*LDSP-TABLE*+(171*2))\ ^+1 0 [] *LDSP-TABLE*+(171*2) @. SD_OP.XIT_INTERCEPTOR-.\ ^+1 @. [] SD_ICRUN_OP.CLL 0 #(*LDSP-TABLE*+(170*2))+(*LDSP-TABLE*+(170*2))\ ^+1 0 [] *LDSP-TABLE*+(170*2) @. SD_OP.CLL_INTERCEPTOR-.\ ^+1 @. [] SD_ICRUN_OP_CODE_DISPATCH 0\ *LDSP-INSTRUCTION*\ ^+1 [] [] SD_ICRUN_STD_DISPATCH_TBL 0\ (*LDSP-TABLE*)\ ^+1 [] [] *LDSP-INSTRUCTION* [LDSP 0,*LDSP-TABLE*,1] [LDSP 0,@SD_ICRUN_ACTIVE_DISPATCH_TBL,1] ^+1 [] [] ^+1 [] [] *LCALL-BLTN-ADDR* init_user_bltn_fcns\ SD_INIT_USER_BLTN_FCNS\ ^+1 [] [] SD_ICRUN_RESET_SCRN_CONTD [WSAVR 0] @reset_scrn ^+1 [] @(reset_scrn+1) ^+1 [NOP] @(reset_scrn+2) ^+1 [NOP] @(reset_scrn+3) ^+1 [NOP] @(reset_scrn+4) reset_scrn 123451 [LJMP SD_ICRUN_RESET_SCRN,1] ^+1 @. [] ^+1 @. [] SD_ICRUN_GETFLD_SCRN_CONTD [WSAVR 0] @getfld_scrn ^+1 [] @(getfld_scrn+1) ^+1 [NOP] @(getfld_scrn+2) ^+1 [NOP] @(getfld_scrn+3) ^+1 [NOP] @(getfld_scrn+4) getfld_scrn 123451 [LJMP SD_ICRUN_GETFLD_SCRN,1] ^+1 @. [] ^+1 @. [] SD_ICRUN_GETKEY_SCRN+1 0 @(getkey_scrn+1) SD_ICRUN_GETKEY_SCRN_CONTD [NOP] @(getkey_scrn+2) ^+1 [NOP] @(getkey_scrn+3) ^+1 [NOP] @(getkey_scrn+4) getkey_scrn 123451 [LJMP SD_ICRUN_GETKEY_SCRN,1] ^+1 @. [] ^+1 @. [] ;End of patch .@'Fo]'Hq'Hqy !SD_POSSESS_ICX_1.40.PAT y ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; $Id: sd_possess_icx_1.40.pat,v 1.4 1995/07/11 20:50:18 mark Exp mark $ ; ; $Log: sd_possess_icx_1.40.pat,v $ ; Revision 1.4 1995/07/11 20:50:18 mark ; Updated revision and copyright ; ; Revision 1.3 1994/03/11 17:27:47 mark ; Inserted previous log comments ; ; Revision 1.2 1994/03/11 01:45:18 mark ; Added RCS Id and Log fields ; ; Revision 1.1 1994/03/10 22:05:09 mark ; Initial revision ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;The patches in this file activate the SCREEN DEMON routines. ; ;This file applies only to revision 1.40 of the Interactive COBOL ; interpreter running under AOS/VS, using revision 3.60 of SCREEN DEMON ; for Interactive COBOL. %PROGRAM ;Catch beginning of initialization routine so that SCREEN DEMON can be ; initialized also. INIT+2 [LLEF 2,SCRPK,0] [LJMP SD_ICX_INIT,1] ^+1 [] [] ^+1 [] [] ;This patch allows Screen Demon to know when ICX has an ACCEPT ; in progress, and if multiple console ?READ's are actually ; part of the same ACCEPT. RDFD [WSSVR 10] [LJMP SD_ICX_RDFD,1] ^+1 [] [] ^+1 [NLDAI -1,1] [] ^+1 [] [WADC 1,1] ;This patch causes the ICOBOL interpreter to return an ESCAPE KEY ; value of 99 if a console timeout occurs, instead of aborting ; with a "Runtime System Panic". RDFD+1354 [NLDAI 67,1] {LPSHJ #SD_PATCH,1} ^+1 [] [] ^+1 [SUB# 0,1,SZR] [] #SD_PATCH 0 [WSNEI 76,0] ^+1 0 [] ^+1 0 [WBR .+5] ^+1 0 [WSNEI 67,0] ^+1 0 [] ^+1 0 [ISZTS] ^+1 0 [WPOPJ] ^+1 0 [WPOP 1,1] ^+1 0 [XNLDA 1,10,2] ^+1 0 [] ^+1 0 [XWADD 1,4,2] ^+1 0 [] ^+1 0 [WSUB 0,0] ^+1 0 [WSTB 1,0] ^+1 0 [NLDAI 99.,0] ^+1 0 [] ^+1 0 [LJMP RDFD+1100,1] ^+1 0 [] ^+1 0 [] SD_PATCH #SD_PATCH\ #SD_PATCH+23\ ^+1 [] [] ;Intercept EXIT PROGRAM so that if the exiting ICOBOL program was called via ; a "hot" key, control can be returned to the original ACCEPT. A.XIT+3 [LJMP COBOL,0] [LJMP SD_ICX_EXIT_PROGRAM,1] ^+1 [] [] ^+1 [] [] ;Divert STOP RUN processing so that it can be forced to act like an ; EXIT PROGRAM if it is encountered in a program that was called ; from a hot key. OAT+232 A.STP-.\ SD_ICX_STOP_RUN_HANDLER-.\ ^+1 [] [] ;Divert CALL PROGRAM processing so that it can be forced to act like an ; EXIT PROGRAM if it is encountered in a program that was called from ; a hot key. CHNOP+13 [XJSR WUSIN,1] [LJMP SD_ICX_CALL_PROGRAM_HANDLER,1] ^+1 [] [] ^+1 [WBR CHNOP+151] [] ;Catch ICOBOL program loads so that the name of the new active program ; can be obtained and put into the SCREEN DEMON control file. ASPRG+62 [XJSR WRPGD,1] [LJMP SD_ICX_ASPRG,1] ^+1 [] [] ^+1 [WBR ASPRG+136] [] LDPRG+7 [XJSR RDPGD,1] [LJMP SD_ICX_LDPRG,1] ^+1 [] [] ^+1 [WBR LDPRG+35] [] ;Catch ICX Abort so that SCREEN DEMON can reset the window environment ; if control will be returning to LOGON. ; Note that the 341 in next line is actually ICX's STATUS address CSTOP+2 [LDA 0,341,0] [LJMP SD_ICX_CSTOP,1] ^+1 [ANDI 2,0] [] ^+1 [] [] CPERR+14 [WBR CSTOP+11] [WBR CSTOP+2] CSTOP+24 [LJSR WAIT,1] [LJMP SD_ICX_CSTOP_WAIT,1] ^+1 [] [] ^+1 [] [] ;Catch entry into the ICX Debugger so that debugger window can be activated DB0 [LDASB 3] [LPSHJ SD_ICX_ENTER_DEBUGGER,1] ^+1 [STASP 3] [] ^+1 [STAFP 3] [] SBUGG [LDASB 3] [LPSHJ SD_ICX_ENTER_DEBUGGER,1] ^+1 [STASP 3] [] ^+1 [STAFP 3] [] EBUGG [LDASB 3] [LPSHJ SD_ICX_ENTER_DEBUGGER,1] ^+1 [STASP 3] [] ^+1 [STAFP 3] [] ;Catch exit from the ICX Debugger so that debugger window can be deactivated DB0+122 [LDASB 3] [LPSHJ SD_ICX_LEAVE_DEBUGGER,1] ^+1 [STASP 3] [] ^+1 [STAFP 3] [] ;Intercept ICX's attempt to input a debugger command so that this can be done ; in a proper screenedit fashion. SCAN0+343 [XJSR RDFD,1] [LJSR SD_ICX_READ_DEBUGGER_COMMAND,1] ^+1 [] [] ^+1 [WBR SCAN0+323] [] ICX_DEBUG_RESTART_ADDR 0 SCAN0+303\ ^+1 0 [] ;********** Optional Patches ********** ;This optional patch causes Screen Demon to catch ICX-generated error ; messages displayed on line 24 so that the original contents of ; the line can be restored after showing the error message. INVAL+14 [XJSR DSPER,1] [LJMP SD_ICX_ERROR_INVAL,1] ^+1 [] [] ^+1 [161411] [] DSPER+104 [XJSR PWRLN,1] [LJMP SD_ICX_ERROR_MPRE,1] ^+1 [] [] ^+1 [WRTN] [] DSPER+115 [XJSR WRLN,1] [LJMP SD_ICX_ERROR_MMSG,1] ^+1 [] [] ^+1 [WRTN] [] RDFD+1510 [XNLDA 0,2,2] {LJMP #SD_PATCH,1} ^+1 [] [] ^+1 [XNSTA 0,3,3] [] ^+1 [] [NOP] #SD_PATCH 0 [XNLDA 0,2,2] ^+1 0 [] ^+1 0 [XNSTA 0,3,3] ^+1 0 [] ^+1 0 [LJMP RDFD+1524,1] ^+1 0 [] ^+1 0 [] SD_PATCH #SD_PATCH\ #SD_PATCH+7\ ^+1 [] [] ;The following patch is not absolutely necessary, but will improve performance ; if COBOL calls to linked-in subroutines are used, such as the advanced ; features of SCREEN DEMON. It eliminates the unnecessary ?LEFE system ; call that is normally always performed on returning from a linked-in CALL ; routine. Note that if this patch is installed, any linked-in routine ; that issues a ?LEFD is responsible for issuing its own ?LEFE system call ; before returning to ICX. CALAS+116 [XJSR @16000000006,0] [WBR .+4] ^+1 [] [NOP] ^+1 265 [NOP] ^+1 [WBR CALAS+134] [NOP] ;***** The remaining patches fix bugs in the ICX interpreter ***** ; Note that these patches are not the same ones supplied by Data General. ; The DG patches must also be applied to the new ICX interpreter. ;Fix effective address problems (replace old 64K address space instructions) STBKA+21 [WADDI 2000,0] [WNADI 2000,0] ^+1 [] [] ^+1 [] [XNDSZ 2,3] ^+1 [DSZ 2,3] [] RDDD+5 [NLDAI 0,0] [WSUB 0,0] ^+1 [] [XNSTA 0,0,2] ^+1 [XNSTA 0,0,2] [] ^+1 [] [NLDAI 7,1] ^+1 [NLDAI 7,1] [] ^+1 [] [WBLM] ^+1 [WBLM] [LDAFP 3] ^+1 [LDAFP 3] [XWLDA 2,-4,3] ^+1 [XWLDA 2,-4,3] [] ^+1 [] [XLEF 3,2,3] ^+1 [LEF 3,2,3] [] GETSW+55 [BTO 2,1] [WBTO 2,1] RDSEC+400 [LDA 2,4,3] [XNLDA 2,4,3] ^+1 [ADD 1,2] [] ^+1 [NLDAI 0,1] [ADD 1,2] ^+1 [] [WSUB 1,1] CHNOP+76 [BTZ 2,1] [WBTZ 2,1] CHNOP+102 [BTO 2,1] [WBTO 2,1] ;Shutdown guard task is supposed to give the rest of the interpreter time ; to shut down by itself. However, parameters in AC0 and AC1 to its ; ?WDELAY system call are reversed, so it doesn't wait at all before ; doing an emergency shutdown and possibly corrupting open ISAM files. INITC+101 [NLDAI 0,0] [NLDAI 11610,0] ^+1 [] [] ^+1 [NLDAI 11610,1] [NLDAI 0,1] ^+1 [] [] ;CPLOG routine jumps into the middle of CHNOP routine, but stack frame size ; of CPLOG is zero, leaving CHNOP frame data vulnerable to subsequent ; subroutine calls. CPLOG+1 0 @(CHNOP+1) ;End of patches .@%_P'Hq'Hq SD_MVUX_POSSESS.PAT  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; $Id: sd_mvux_possess.pat,v 1.3 1994/03/11 17:27:47 mark Exp mark $ ; ; $Log: sd_mvux_possess.pat,v $ ; Revision 1.3 1994/03/11 17:27:47 mark ; Inserted previous log comments ; ; Revision 1.2 1994/03/11 01:45:18 mark ; Added RCS Id and Log fields ; ; Revision 1.1 1994/03/10 22:05:09 mark ; Initial revision ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;--------------------------------------------------------------------- ; SD_MVUX_POSSESS.PAT 24-SEP-92 ; ;This patch is necessary for complete "possession" of programs ; from Data General's MV/UX system, which emulates a UNIX ; environment under AOS/VS. These programs contain a direct ; call to AGENT for some system calls. This call must be ; modified to call the Screen Demon system call interceptor ; instead so that Screen Demon can see the call. ; Apply this patch to SD_POSSESS'd MV/UX programs. %USERFILE 20264 [WPSH 3,3] {LJMP #20006,0} ^+1 [LCALL 6000000000,0,0] [] ^+1 [] [] ^+1 [] [NOP] ^+1 [] [NOP] ;End of patch .@'Fo'Hq'Hq a NAMTB.SR  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; $Id: namtb.sr,v 1.4 1995/07/11 20:48:06 mark Exp mark $ ; ; $Log: namtb.sr,v $ ; Revision 1.4 1995/07/11 20:48:06 mark ; Updated revision and copyright ; ; Revision 1.3 1994/03/11 17:27:47 mark ; Inserted previous log comments ; ; Revision 1.2 1994/03/11 01:45:18 mark ; Added RCS Id and Log fields ; ; Revision 1.1 1994/03/10 22:05:09 mark ; Initial revision ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; NAMTB.SR Screen Demon rev 3.60.01 ;Declaration of user assembler subroutines to be called from ; Interactive COBOL programs running under Screen Demon. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; ;;; ;;; Copyright (C) 1988-1995, ;;; ;;; Threshold, Inc. ;;; ;;; Auburn, Alabama U.S.A. ;;; ;;; All rights reserved. ;;; ;;; ;;; ;;; SCREEN DEMON and its associated hot-key routines ;;; ;;; are proprietary property of Threshold, Inc. ;;; ;;; Except as provided for by the License Agreement; these ;;; ;;; shall not be copied, used, or disclosed for any purpose or ;;; ;;; reason in whole or in part, without the express written ;;; ;;; consent of: ;;; ;;; ;;; ;;; Threshold, Inc. ;;; ;;; 118 North Ross Street ;;; ;;; Auburn, Alabama 36830 ;;; ;;; ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;Each definition in this file should be of the following format: ; ; NAME routinename {, referencename} ; ; "routinename" is the actual entry point for the routine. ; ; "referencename" is the name that will appear in the ; CALL "" statements within ICOBOL programs. If not specified, ; it is assumed that the CALL name is the same as "routinename". ;Note that the ?CB calls provided with ICOBOL should NOT be defined in ; this table. Screen Demon will automatically define them, using ; compatible versions of these calls that do not require the ; LANG_RT.LB Common Language Runtimes (which would greatly increase ; the size of the interpreter). ;Specify names of user assembler subroutines below: .@'Fo?'Hr'HrYsSD_ICX_CONFIG.SR  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; $Id: sd_icx_config.sr,v 1.7 1995/07/11 20:49:19 mark Exp mark $ ; ; $Log: sd_icx_config.sr,v $ ; Revision 1.7 1995/07/11 20:49:19 mark ; Updated revision and copyright ; ; Revision 1.6 1994/06/08 16:54:19 mark ; Added the question PAD_INPUT_BUFFER_TO_FULL? as an additional option for ; the TRIM_SPACE_UNDERSCORE_ON_INPUT? section ; ; Revision 1.5 1994/03/25 18:16:14 mark ; Added the question SPECIFIC_PROGRAM_CONFIG_LOAD? ; ; Revision 1.4 1994/03/17 17:13:41 mark ; Modified to support new dynamic config file format ; ; Revision 1.3 1994/03/11 17:27:47 mark ; Inserted previous log comments ; ; Revision 1.2 1994/03/11 01:45:18 mark ; Added RCS Id and Log fields ; ; Revision 1.1 1994/03/10 22:05:09 mark ; Initial revision ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; SCREEN DEMON Configuration file ; ; revision 3.60.01 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; ;;; ;;; Copyright (C) 1988-1995, ;;; ;;; Threshold, Inc. ;;; ;;; Auburn, Alabama U.S.A. ;;; ;;; All rights reserved. ;;; ;;; ;;; ;;; SCREEN DEMON and its associated hot-key routines ;;; ;;; are proprietary property of Threshold, Inc. ;;; ;;; Except as provided for by the License Agreement; these ;;; ;;; shall not be copied, used, or disclosed for any purpose or ;;; ;;; reason in whole or in part, without the express written ;;; ;;; consent of: ;;; ;;; ;;; ;;; Threshold, Inc. ;;; ;;; 118 North Ross Street ;;; ;;; Auburn, Alabama 36830 ;;; ;;; ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;This file provides definitions for the key codes that require intervention ;by SCREEN DEMON after an input. Certain keys may be defined to cause ;a special action to occur, such as redrawing the screen. Then the ;input is restarted exactly as it was when the special key was pressed. ;A translation table may be defined so that keys that are normally ;inaccessible to COBOL (i.e., the arrow keys and C* function keys) can ;be translated to specified standard function key codes. ;Also, miscellaneous items such as the mail message string, time out values, ;note pad filename, and log file size are defined in this file. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;Should the configuration file load procedure first look for a ;program-specific dynamic configuration file, using the information ;listed in the remainder of this file only if no specific file is found? ; ; The usual configuration load scheme is to first look for a dynamic ; configuration file whose name is based on the current ring 7 .PR, ; and then if that fails, use the linked-in configuration data or ; load from the linked-in dynamic configuration file name, depending ; on whether the program, shared library, or inner ring program was ; linked with a standard configuration file or a loader module. If ; program-specific configuration files are not being used, then it ; would be more efficient to have the load procedure skip the step ; of looking for one. ; ; A YES answer to the following question indicates that a search ; should be made for a program-specific dynamic configuration file ; when a program starts. Screen Demon will first look for that file, ; whose name is the program name but with a ".SD" extension, via the ; searchlist; if that fails, the subdirectory CONFIG in the Screen ; Demon directory will be examined. Answer this question with NO to ; suppress the program-specific configuration file lookup, and always ; use the configuration data as listed in the remainder of this file. ; ; NOTE: The optional MAKE_SD_CONFIG switch "/PROGSPECIFIC={YES|NO}" ; overrides the answer below when the configuration file is compiled. SPECIFIC_PROGRAM_CONFIG_LOAD? NO ;The following sections associates particular keys with specific routines ;that should be called whenever those keys are pressed. ;NOTE: A key that has a subroutine attached to it will never be ;seen by the host program, since the input statement where the key ;was pressed will be automatically restarted when the subroutine returns. ;Each hot key definition has the following form: ; HOT_KEY ; ,,,... ; ; ; ... ; MENU menu description <--- this line is optional ; DIRECTORY initial directory <--- this line is optional ; ACL access control list <--- this line is optional ; ; where: ; ; is one of the following special keys: ; TAB, NEW_LINE, ERASE_EOL, ERASE_PAGE, CR, ESC, DEL, ; HOME, UP, RIGHT, LEFT, DOWN, ; SHIFT_HOME, SHIFT_UP, SHIFT_RIGHT, SHIFT_LEFT, SHIFT_DOWN, ; C1, C2, C3, C4, SHIFT_C1, SHIFT_C2, SHIFT_C3, SHIFT_C4, ; CMD_SHIFT_PRINT, CMD_PRINT ; F1, F2, ..., F14, F15, ; SHIFT_F1, SHIFT_F2, ..., SHIFT_F14, SHIFT_F15, ; CTRL_F1, CTRL_F2, ..., CTRL_F14, CTRL_F15, ; CTRL_SHIFT_F1, CTRL_SHIFT_F2, ..., CTRL_SHIFT_F15, ; ; any single printable character after a quote: ; "A, "a, "*, ..., ; ; or a decimal number (1-127) representing a control character ; or printable character: ; 1 (CTRL-A), 18 (CTRL-R), 64 ("@), ... ; ; ; and ,,... are one of the following: ; LINKED Entry name ; For linked in assembler, C, PL/1, or FORTRAN sub-programs. ; ; COBOL32 Entry name ; For linked in VS/COBOL sub-programs. ; ; ICOBOL Program name ; Use only for an ICX linked with SCREEN DEMON. ; ; PR Name, arg, arg, ... ; The named program will be PROC'ed with the given ; arguments. ; ; CLI Macro name, arg, arg, ... ; CLI will be PROC'ed to execute the given macro ; with the specified arguments. ; ; LINKED_IN_ROOT Name ; For linked-in assembler, VS/COBOL, C, PL/1, ; or FORTRAN sub-programs. ; Use only when the shared library (SL) version of ; SCREEN DEMON is used. At execution time the ; SCREEN DEMON hot key handler will search for ; the specified name in the list of hot key definitions ; that were linked into the root program. A root ; linked hot key definition may be created by ; running the MAKE_SD_HKD macro. ; ; ; 's are from the following list: ; ; SAVE_SCREEN ; If the sub-routine will not make SCREEN DEMON ; calls to save and restore the screen, then include ; this flag. ; ; REDRAW ; or REDRAW IMMEDIATE ; Set if the hot key routine is PR or CLI and it will ; display characters on the screen. SCREEN DEMON ; will not know about the displayed characters so ; the screen must be redrawn. For CLI type hot keys, ; a "Press Any Key To Continue..." message will appear ; on return from the hot key call if REDRAW is ; specified. To suppress this message, use the ; IMMEDIATE option. ; ; CANCEL ; Only for ICOBOL type hot key programs. When the ; hot key is pressed, SCREEN DEMON simulates a ; CALL "program" (not a CALL PROGRAM). If file ; statuses and variables must be in their initial ; state when the program executes, then include this ; flag. ; ; ; The optional MENU clause will place an entry for the hot key ; on the Screen Demon main menu. The description shown on the ; menu will be the text specified after the keyword MENU. ; NOTE: To add a hot key to the main menu without actually ; assigning it to a particular key, do not specify ; a key name on the HOT_KEY clause. For example: ; HOT_KEY ; LINKED SD_WP_SHELL ; MENU WordPerfect  Office Shell ; ; ; The optional DIRECTORY clause allows the initial working directory ; for the hot key process to be specified. This clause effects ; only PR and CLI type hot keys. If no DIRECTORY clause is supplied ; in a hot key definition, the hot key process will start in the ; current working directory. ; ; ; The optional ACL clause allows access to the hot key to be ; restricted. Following the ACL keyword should be a list of ; usernames and/or username templates, similar to an AOS/VS ; file ACL. Like an AOS/VS file ACL, `*' matches any one ; character, and `+' matches any number of characters, including ; zero. However, unlike an AOS/VS file ACL, the FIRST character ; of an individual template may be an exclamation mark (!), which ; indicates that if a match occurs on that template, access is to ; be DENIED, rather than permitted. Also, there are no privilege ; letters following each template. Whenever a particular user ; attempts to access a hot key that has an ACL (either via the ; menu or assigned key), Screen Demon will scan the ACL looking ; for a match for the current username. If no template in the list ; matches the current username, Screen Demon will silently deny the ; user access to the hot key. If a match is found, then if the ; template started with `!', access is denied; otherwise, the ; hot key routine will be called. ; ; NOTE: If there is no ACL clause specified in a particular ; hot key definition, then all users will be able to ; access that hot key routine. ; ; For example, suppose the following ACL clause was specified ; as part of a hot key definition: ; ACL FRED !MARTHA MAR+ ; This indicates that FRED may access the hot key, and anyone ; whose username begins with the letters "MAR" except MARTHA ; can access the hot key. All other users will be denied access. ; ; As another example, the ACL clause ; ACL !ACCT+ + ; means that everyone except those whose usernames begin with ; the letters "ACCT" can access the associated hot key routine. BEGIN_HOT_KEYS ;This line (and the END_HOT_KEYS below) must exist ; even if there are no hot keys defined. ; Assign the SCREEN DEMON pop-up main menu to function key 11 (F11) HOT_KEY F11 LINKED SD_MAIN_MENU ; Redraw the Screen when the Erase Page key is pressed HOT_KEY ERASE_PAGE LINKED SD_REDRAW ;Word address of Redraw routine MENU Redraw Screen ; On CMD PRINT or CMD SHIFT PRINT, call the Print Screen program HOT_KEY CMD_PRINT, CMD_SHIFT_PRINT LINKED SDSCREENPRINT ;this is a C program, not COBOL32 MENU Print Screen ; On F14, call the Calculator HOT_KEY F14 ICOBOL SDCALCULATOR MENU Calculator ; On F12, Read Mail ; You can specify SD_READ_MAIL instead of SD_MAIL_INBOX if you ; want new messages to be displayed automatically when the hot ; key is pressed. HOT_KEY F12 LINKED SD_MAIL_INBOX MENU Read Mail ; On Shift F12, Send Mail HOT_KEY SHIFT_F12 LINKED SD_INPUT_MAIL ;Word address of Input Mail Routine MENU Send Mail ; On F13, call the Notepad HOT_KEY F13 LINKED SD_NOTEPAD ;Word address of Notepad routine MENU Notepad ; On F15, call the CLI Interface HOT_KEY F15 LINKED SD_CLI_INTERFACE ;Word address of CLI Interface routine MENU Call CLI ; On Shift F11, call the SCREEN DEMON Command routine (sets Turbo level) HOT_KEY SHIFT_F11 LINKED SD_COMMAND ;Word address of Command routine MENU Turbo On/Off ; On Shift F14, call the Calendar program HOT_KEY SHIFT_F14 ICOBOL SDCALENDAR MENU Calendar ;Add more hot key routine definitions here as required... END_HOT_KEYS ;The following section is used to translate entered key codes to ;different ones. BEGIN_TRANSLATIONS ;This line is required even if there are no ;key translations specified ;For each key that is to be translated to another key, enter a line ;of the following format: ; ; TRANSLATE , ; ; where both key codes are of the form described for ; under the HOT KEY section above. ; ;For example, the following two lines (if the semicolons were removed ;to uncomment them) will translate the up and down arrow keys to F3 and F2, ;respectively: ; TRANSLATE UP,F3 ; TRANSLATE DOWN,F2 ;Insert key translations here END_TRANSLATIONS ;This line is required even if there are no ;key translations specified ;Sometimes it may be desirable to input a particular key to an application, ; even if that key has been assigned to be a hot key or is normally ; translated to appear as another key value. The following definition ; specifies an "escape" key that, if pressed, suppresses hot key processing ; and/or translation of the next key pressed. To pass the chosen "escape" ; key to the application, press it twice. If no "escape" key is desired, ; specify a value of -1. Note that the "escape" key can never be a hot key ; or be translated. HOT_ESCAPE_KEY? CTRL_SHIFT_F15 ;The standard Screen Demon hot key routines accept as the normal ; exit key. Users may be accustomed to pressing a different key to ; exit in their application programs; for example, CEO uses F11 as ; the Cancel/Exit key. To minimize user confusion, it is possible ; to designate an alternate exit key for Screen Demon hot key routines ; that will act the same as . This alternate exit key can be set ; to the same key that the user would press to exit their application ; programs. If no such alternate exit key is desired, set the answer ; to the following question to -1; otherwise, specify the key name: SD_ALTERNATE_EXIT_KEY? -1 ;none by default ;String that will be displayed whenever an input is completed to provide ; immediate feedback to the operator that the input operation is over. ; The next flush will undo whatever this string does to the screen. ; Special screen control characters can be included in the string by ; enclosing them inside <>. Predefined control character names available: ; BLINK_ON, BLINK_OFF, UNDER_ON, UNDER_OFF, DIM_ON, DIM_OFF ; ; If no such feedback is desired, set the INPUT_FEEDBACK_STRING_SIZE below ; to zero. Overall performance will be somewhat slower if the feedback ; string is output after inputs, but may make the system APPEAR faster ; to an operator. INPUT_FEEDBACK_STRING? .TXT "<13>" ;perhaps a CR ;Number of characters in the above string INPUT_FEEDBACK_STRING_SIZE? 0 ;default is no feedback string ;String that will be displayed whenever the user has unread mail. ; Special screen control characters can be included in the string by ; enclosing them inside <>. Predefined control character names available: ; BLINK_ON, BLINK_OFF, UNDER_ON, UNDER_OFF, DIM_ON, DIM_OFF ; Default is a bright, blinking `Mail' in the top right corner of the screen. MAIL_INDICATOR? .TXT "Mail" ;Number of characters in the above string MAIL_INDICATOR_SIZE? 5 ;Location and size of region of screen occupied by above mail indicator string MAIL_VIEW_LINE? 1 MAIL_VIEW_COLUMN? 77 MAIL_VIEW_HEIGHT? 1 MAIL_VIEW_WIDTH? 4 ;String that will be displayed whenever a terminal is being viewed remotely ; through the SD_SPY program. Special screen control characters can be ; included in the string by enclosing them inside <>. Predefined control ; character names available: ; BLINK_ON, BLINK_OFF, UNDER_ON, UNDER_OFF, DIM_ON, DIM_OFF ; Default is no indicator. SD_REMOTE_VIEW_INDICATOR? .TXT "Remote View" ;Number of characters in the above string, or zero if no Remote View ; indicator is desired SD_REMOTE_VIEW_INDICATOR_SIZE? 0 ;set this to 12 ; to enable indicator ; string defined above ;Location and size of region of screen occupied by above indicator string SD_REMOTE_VIEW_INDICATOR_LINE? 1 SD_REMOTE_VIEW_INDICATOR_COLUMN? 1 SD_REMOTE_VIEW_INDICATOR_HEIGHT? 1 SD_REMOTE_VIEW_INDICATOR_WIDTH? 11 ;String that will be displayed whenever terminal inputs are being handled ; remotely through the SD_SPY program. Special screen control characters ; can be included in the string by enclosing them inside <>. Predefined ; control character names available: ; BLINK_ON, BLINK_OFF, @  UNDER_ON, UNDER_OFF, DIM_ON, DIM_OFF ; Default is a bright, blinking `Remote Input' in the top left corner ; of the screen. SD_REMOTE_INPUT_INDICATOR? .TXT "Remote Input" ;Number of characters in the above string SD_REMOTE_INPUT_INDICATOR_SIZE? 13 ;Location and size of region of screen occupied by above indicator string SD_REMOTE_INPUT_INDICATOR_LINE? 1 SD_REMOTE_INPUT_INDICATOR_COLUMN? 1 SD_REMOTE_INPUT_INDICATOR_HEIGHT? 1 SD_REMOTE_INPUT_INDICATOR_WIDTH? 12 ;If the CEO interface is to be used, the following two fields allow the ; location of the CEO mail status indicator to be specified. ; At runtime, the optional hot key routine SD_CEO_STATUS_MOVE (see ; the CEO interface documentation) can be used to move the status ; indicator to a different position as needed. These two fields ; are ignored if the CEO interface is not installed. CEO_MAIL_VIEW_LINE? 1 ;Normal default is first line CEO_MAIL_VIEW_COLUMN? 1 ; and first column ;If the WordPerfect Library or Office interface is to be used, the ; following field allows the letter code for the "Go To CLI" ; selection on the Shell menu to be specified. SCREEN DEMON needs ; to know this in order for the SD_CLI_INTERFACE hot key to work ; when running under WP Shell. SD_WP_SHELL_CLI_LETTER? .TXT "G" ;Amount of time in seconds that may elapse during a single input before ;the list of 'periodic calls' is executed. The input is restarted after ;those functions are called. The SCREEN DEMON mail check and CEO interface ;mail check are examples of these periodic calls. PERIODIC_INTERVAL? 60 ;once per minute ;Amount of time in seconds that may elapse during a single input before ;triggering the SCREEN DEMON screen saver. This routine will completely ;blank the screen, including the cursor, to avoid burn-in. Pressing any ;key will restore the original screen contents. Set this field to -1 ;to disable the screen saver. SCREEN_SAVER_INTERVAL? -1 ;default is no screen saver ;Amount of time in seconds that may elapse while the Screen Demon Main Menu ;is waiting for a response before automatically exiting the menu. ; ;Use a value of -1 to never terminate the Main Menu because of inactivity. MAIN_MENU_TIMEOUT_INTERVAL? -1 ;default is no timeout ;Amount of time in seconds that may elapse for a single input before ;the user is terminated (via orderly shutdown: files will be closed). ; ;Use a value of -1 to disable automatic logoff so that users will ; never be terminated because of inactivity. ; ;Note that specific programs can be protected against automatic logoff ; if desired. See Special Programs List below. LOGOFF_INTERVAL? -1 ;Default is to never terminate ; inactive users ;An optional time range during the day can be specified during which ; termination due to inactivity will not occur. Before and after ; this period, however, the time value specified in LOGOFF_INTERVAL ; above will apply. By default, logoff is permitted at any time, ; assuming LOGOFF_INTERVAL above is not -1. ; ; To specify a no-logoff time range, indicate the beginning and ending ; times (24-hour clock) of the protected period as follows: ; LOGOFF_OK_BEFORE hour,minute ; LOGOFF_OK_AFTER hour,minute ; ; For example, assuming that LOGOFF_INTERVAL contained an actual value, ; such as (15*60) to indicate 15 minutes, then the following statements ; would disable automatic logoffs between 8:00 am and 5:30 pm: ; LOGOFF_OK_BEFORE 8,00 ; LOGOFF_OK_AFTER 17,30 ; After 5:30 pm, users inactive for more than 15 minutes are to be logged ; off; the same applies to users inactive before 8:00 am. ;Specify optional no-logoff time period below: LOGOFF_OK_BEFORE 0,00 ;Default is LOGOFF_OK_AFTER 0,00 ; no protected period ;An optional list of users can be specified who are to be considered ; immune from automatic logoff. This list can contain exact usernames, ; username templates, or both. ; ; The NO_LOGOFF_USERS command is used to specify the list. There may ; be up to 25 usernames per NO_LOGOFF_USERS command, and there may be ; any number of NO_LOGOFF_USERS commands, provided each begins on a ; separate line. ; ; For example, ; ; NO_LOGOFF_USERS FRED MAR+ ; NO_LOGOFF_USERS ACCT+ ; ; indicates that all users whose names begin either with the letters MAR ; or ACCT should never be terminated due to inactivity, nor should the ; particular user named FRED. All other users can be terminated if ; their terminals become inactive, provided this is not prevented by ; other considerations, such as the logoff time range specified above, ; or the NO_LOGOFF special program declaration described later. ;Specify any users who should be immune from automatic logoff termination NO_LOGOFF_USERS ;no immune users by default ;The following question specifies the default value for the Turbo ; display setting. Turbo display offers two types of optimization ; of screen output: ; (1) System Call Buffering - Screen output is held until an input ; occurs, or until an specified amount of time has elapsed, ; as set with the FLUSH_INTERVAL? question below. ; (2) Discarding Redundant Characters - A given character will not ; be sent to the terminal if the screen position where it ; is to be displayed already shows that character. ; ; The allowable values for the Turbo display setting indicate what ; level of optimization is desired: ; ; Value Optimization ; ------- --------------- ; FULL Levels 1 and 2 ; PARTIAL Level 2 only ; this is equivalent to FULL with ; FLUSH_INTERVAL? set to zero, and ; is not recommended because it requires ; far more CPU resources ; OFF no optimization ; ON same as FULL ; ;Select an answer from the above list for the following question: DEFAULT_TURBO_DISPLAY_SETTING? FULL ;When running in FULL Turbo display mode, program screen output is normally ; held until the next input occurs, at which time the terminal screen ; is updated. Programs with many displays between inputs, such as a ; report program displaying a record count as it runs, need the screen ; updated more frequently. For this purpose, Screen Demon contains an ; optional Flush Timer which will force a screen update to occur if a ; specified amount of time has elapsed since the last flush, even if ; no input has occurred. ; ; The following field specifies the maximum time in seconds between ; screen updates. ; Use a value of -1 to disable the flush timer; this is equivalent ; to Full Turbo in rev 2 Screen Demon. ; Use a value of 0 to prevent buffering of program screen output; ; this is equivalent to Partial Turbo in rev 2 Screen Demon. FLUSH_INTERVAL? 10 ;flush at least once every ten seconds ;If Turbo mode is on, screen output is held until an input occurs, or ; the FLUSH_INTERVAL expires. If the screen scrolls, it may be ; desirable to update the screen at that time, rather than waiting ; for one of the other events to trigger a flush. The following ; field specifies the maximum number of scroll ups that can be ; held before forcing a flush. Set this field to -1 to prevent ; automatic flushing on scroll operations. MAX_SCROLL_BEFORE_FLUSH? 5 ;If the screen scrolls 5 lines, ; force a flush ;Miscellaneous options, answers are either YES or NO ;When Turbo mode is on, should SCREEN DEMON actually clear the screen ;whenever the host program outputs a clear screen command? ; ; Doing so is usually more efficient, and may be preferable to the ; operators. However, if the host program tends to blank the screen ; and repaint the same text a lot, it would probably be more efficient ; and would look better if SCREEN DEMON suppressed the actual clear ; screen command. PHYSICAL_SCREEN_CLEAR? YES ;Should SCREEN DEMON automatically redraw the screen whenever the ;host program returns from a call to a nonSCREEN DEMON program? ; ; When the host program calls out to a nonSCREEN DEMON program and then ; returns, SCRE ` EN DEMON has no way to know what the nonSCREEN DEMON ; program did to the terminal screen. In order to resynchronize the ; screen with SCREEN DEMON's internal picture, a redraw is necessary. ; By default, this happens at the next flush after returning from ; the call. However, if the called program displayed some information ; that the user needs to see, an immediate redraw will clear this ; information before it can be read. In such cases, it might be ; preferable to set the following option to NO to inhibit the automatic ; redraw, and put code into the host program to call SD_REDRAW when a ; screen redraw is appropriate. Another case where it might be better ; to do the redraw under program control is when the called program ; doesn't actually affect the screen, and so a redraw is not really ; necessary. AUTO_REDRAW_AFTER_NONSD_CALL? YES ;Should SCREEN DEMON use the Line Drawing character set for boxes and ;lines on terminals that have this capability? ; ; The SCREEN DEMON calls SD_DRAW_BOX, SD_DRAW_HLINE, and SD_DRAW_VLINE ; allow the programmer to easily draw boxes and lines on the terminal. ; Boxes and lines created using the Line Drawing character set ; generally look better than the default boxes and lines created ; by using reverse video and underline screen attributes. However, ; there are some differences in the way boxes and lines must be ; built if the Line Drawing character set is used that could cause ; some incompatibilities with existing programs. The main difference ; is that horizontal lines built with Line Draw characters actually ; take up a character position, but horizontal lines created by ; underlining characters already present do not. If this is a problem, ; set the answer for one or both of the following two questions to NO. USE_LINE_DRAW_CHARSET_FOR_BOXES? YES USE_LINE_DRAW_CHARSET_FOR_LINES? YES ;Should Screen Demon turn off the /NRM characteristic so that SENDs ;are not blocked? ; ; Some programs, such as those compiled with VS/COBOL, set the ; /NRM characteristic to protect their screens. However, blocking ; SENDs altogether is not the best solution because there are ; cases when a SEND is the only way of notifying a user of some ; event. Since Screen Demon provides a Redraw Screen capability, ; an application program's screen can easily be restored after a ; SEND message appears on the terminal. Consequently, it is not ; necessary for a program to set the /NRM characteristic. Answering ; this question YES tells Screen Demon to keep this characteristic ; off, even if the host program tries to turn it on. FORCE_NRM_CHARACTERISTIC_OFF? YES ;Should SCREEN DEMON trim trailing spaces and underscore characters ;from the initial contents of input fields, thus permitting ^A, ^E, ;and DELETE screenedit functions to work properly? ; ; Normally, COBOL input fields start off filled with underscore ; or space characters. This means that the "go to end of field" ; and "insert" screenedit functions will not work as expected, ; since PMGR treats the trailing spaces and/or underscores as ; real characters. Also, when DEL is used, trailing underscores ; will shift to the left, shortening the apparent length of the ; input area. Screen Demon can optionally trim these characters ; when the input begins, so that PMGR doesn't know about them. ; The characters will still be displayed before the input begins ; as always. The primary drawback is that when an input restarts, ; such as after a timeout or hot key, any trailing spaces or ; underscores will vanish, which may confuse some operators. ; ; NOTE: A bug in VS/COBOL rev 3.20 and below, and in rev 3.71, ; prevents function keys from working correctly if the ; underscores are removed. The default for this question ; is NO for that reason. In order to use this option with ; VS/COBOL, input fields must be padded back to their original ; size when the input is complete. The second question below ; indicates whether or not to do this. Post-input padding ; is recommended ONLY for programs compiled with VS/COBOL. TRIM_SPACE_UNDERSCORE_ON_INPUT? NO PAD_INPUT_BUFFER_TO_FULL? NO ;Should SCREEN DEMON ignore console interrupts (^C^A, ^C^B, and ^C^E)? ; ; One of SCREEN DEMON's tasks catches console interrupts. By default, ; it handles the interrupts the same way that the host program would ; if SCREEN DEMON were not present. If the host program contains code ; to watch for console interrupts, SCREEN DEMON will pass the interrupt ; to the host program; otherwise, SCREEN DEMON will terminate the ; process gracefully. ; ; A YES answer to the following question will cause SCREEN DEMON ; to discard any console interrupt events. They will not be passed ; to the host program, and SCREEN DEMON will not terminate the process. ; This is an easy way to prevent operators from aborting out of ; programs that cannot defend themselves. IGNORE_CONSOLE_INTERRUPTS? NO ;How should SCREEN DEMON compensate for the ^C^x character sequence ; echoed whenever the operator presses a console interrupt? ; ; The ^C^x sequence normally echoed whenever a console interrupt ; is pressed is not visible to SCREEN DEMON. Consequently, SCREEN ; DEMON does not know where those echoed characters appeared on the ; screen. By default, SCREEN DEMON will update its image buffers ; to reflect the ^C^x characters by assuming that they are located ; immediately before the cursor position. However, if a display ; was occurring at the time, it is possible for this assumption to ; be incorrect. In order to definitely resynchronize the screen ; with SCREEN DEMON's internal picture, a redraw is necessary, but ; this can be annoying if done automatically; the Redraw hot key ; is available to force a redraw only when necessary. ; ; Select one of the following choices to answer this question: ; INTR_ERASE Immediately space over the ^C^x, assuming that ; the cursor is just past the sequence, leaving ; the cursor at its original position as if ^C^x ; had never been displayed. ; ; INTR_REDRAW Redraw the screen at the next flush to remove ; the ^C^x. This was the method used by rev 2.01.05 ; ; INTR_ECHO Update the ^C^x into the internal image buffers, ; assuming that the cursor is just past the sequence, ; leaving the cursor past the sequence. ; ; INTR_NOTHING Ignore the ^C^x sequence. ; CONSOLE_INTERRUPT_HANDLING? INTR_ECHO ;NOTE: The COBOL versions of the Print Screen hot key routine do not ; use the answers to the following two SDSCREENPRINT... questions, ; but the LINKED SDSCREENPRINT version does. ;Should the SCREEN DEMON Print Screen hot key routine ask the user ;for an output filename? ; ; Answer this question YES to allow the operator to specify a ; print destination for the screen image, with the default ; shown below as SDSCREENPRINT_OUTPUT_NAME. If this question ; is answered NO, then the operator will not be asked for an ; output filename, and the screen image will be printed to the ; default output filename as specified below. SDSCREENPRINT_ASK_OUTPUT_NAME? YES ;Default output filename for the SCREEN DEMON Print Screen hot key routine: SDSCREENPRINT_OUTPUT_NAME? .TXT "@LPT" ;Should the SCREEN DEMON Read Mail hot key routine ask the user ;for an output filename when the Print option is selected? ; ; Answer this question YES to allow the operator to specify a ; print destination for the printed message, with the default ; shown below as SD_READ_MAIL_OUTPUT_NAME. If this question ; is answered NO, then the operator will not be asked for an ; output filename, and the message will be printed to the ; default output filename as specified below. SD_READ_MAIL_ASK_OUTPUT_NAME? YES ;Default output filename for the SCREEN DEMON Read Mail hot key routine ; when the Print option is selected: SD_READ_MAIL_OUTPUT_NAME? .TXT "@LPT" ;Should SCREEN DEMON mail  messages be deleted automatically after ;the operator has read them? ; ; Answer this question YES to force mail messages to be deleted ; automatically after the operator has acknowledged reading them. ; If this question is answered NO, previously read messages will ; remain in a user's inbox until deleted by the user. SD_READ_MAIL_AUTO_DELETE? NO ;Should SCREEN DEMON mail messages always be delivered immediately, ;whether or not they are marked as Urgent? ; ; Answer this question YES to force mail messages to appear ; immediately on the recipient's screen, even messages that ; are not Urgent. If this question is answered NO, only ; Urgent messages will appear immediately. Normal messages ; will simply trigger the Mail Indicator; the user must press ; the Read Mail hot key to view these messages. SD_IMMEDIATE_MAIL_DELIVERY? NO ;Declare the default sizes returned by the SD_GET_IMAGE and ; SD_GET_IMAGE_BELOW_FLOAT calls. ; ; Previous revisions of Screen Demon returned a 24 line by 80 column ; image, followed by 4 more bytes containing the cursor offset and ; global attribute settings. For rev 3.00, the internal screen images ; are 24x162, and there are a number of additional fields following the ; image. Existing programs will be expecting the smaller image style ; if they are simply relinked with rev 3.00 Screen Demon. However, if ; a program is recompiled, it may or may not want the older image format. ; If the program defines its image buffer using the SDIMAGE.DEF or ; SCREEN_DEMON.H include files, then a recompile without source code ; changes results in the program expecting the new larger image format. ; However, if the image definition is hard-coded, then the program will ; still expect the older image format even after recompilation. Thus, ; this configuration file option is provided to allow the system ; manager to decide which is the most appropriate default behavior for ; the Get Image calls. Note that a specific Get Image call can declare ; the actual size of image buffer it wants; this overrides the default ; setting defined here. ;Default number of lines in returned image buffers SD_GET_IMAGE_DEFAULT_LINES? 24 ;Default number of columns in returned image buffers ; For rev 3.00 compatibility, specify 162 ; For rev 2.01 (and before) compatibility, specify 80 ; SD_GET_IMAGE_DEFAULT_COLUMNS? 162 ;Default size in bytes of additional parameters returned ; following the image characters and attributes ; For rev 3.00 compatibility, specify 14 ; For rev 2.01 (and before) compatibility, specify 4 ; ;Default additional parameters return size in bytes SD_GET_IMAGE_DEFAULT_PARAMS? 14 ; The functionality of the SD_RETURN_INPUT call was enhanced in ; revision 3.51. In previous revisions, this call functioned only ; in a program or subroutine invoked by pressing a hot key; the string ; of characters specified with this call was returned to the input field ; where the hot key was pressed. ; ; Beginning with revision 3.51, the specified string will be placed in the ; next encountered input field, whether or not a hot key is active. In ; addition, the string can contain multiple fields, separated by delimiters. ; At an input, the next chunk of the return input string will be loaded into ; the field as if the operator had entered it. If a delimiter follows the ; chunk, the input will be terminated as if the operator had pressed that ; key. This process is repeated at subsequent inputs until the contents of ; the return input string have been exhausted. ; ; Since this new functionality is potentially incompatible with that of ; older revisions, a configuration option is provided to allow the desired ; mode of operation to be specified. The new method will be incorrect in ; the situation where a hot key program calls SD_RETURN_INPUT, but then ; does an input before exiting. With the old method, this input would be ; unaffected by the SD_RETURN_INPUT call. With the new method, the returned ; characters would appear at that input, rather than the input field where ; the hot key was pressed. If you have programs that exhibit this behavior, ; you will need to modify them or set the following configuration option to ; "hot key only" mode. Otherwise, the new method should be satifactory. ; ; Choose the answer to the following question from this list of options: ; RI_HOT_ONLY SD_RETURN_INPUT valid only in hot key ; routines; the returned string is loaded ; into the field where the hot key was pressed. ; (Pre-revision 3.51 functionality) ; ; RI_ANY_INPUT SD_RETURN_INPUT works at any time; the ; returned string is loaded into the next ; encountered input field(s), and multiple ; input fields can be returned. ; (revision 3.51 functionality) ; ; Should the SD_RETURN_INPUT call function only to return input information ; from a hot key call to the input field where the hot key was pressed, or ; should return strings declared with this call be available at the next ; encountered input field(s)? SD_RETURN_INPUT_MODE? RI_ANY_INPUT ;default is new method ;If multiple character sets are to be used by programs running under ; SCREEN DEMON, a character set palette must be specified that ; lists the particular character sets to be used. SCREEN DEMON ; supports up to 8 simultaneously displayed character sets. ; Note that only some DG terminals support multiple character sets. ; ; Specify the character sets that will be invoked by listing their ; two-character codes, which can be found in the terminal's programming ; manual. The first code in the list should be the standard primary ; character set to be used (the code 00 is suggested, which is the set ; of the keyboard attached to the terminal). The order of the remaining ; codes is unimportant. If less than eight codes are listed, the default ; settings will be used for the unspecified palette slots. ; ; For example, (this is also the default palette) ; ; CHAR_SET_PALETTE 00,10,11,0>,01,02,13,20 ; ; specifies that the following character sets are available: ; '00' char set #0 (primary) is Keyboard set ; '10' char set #1 is Word Processing set ; '11' char set #2 is Line Drawing set ; '0>' char set #3 is DG International set ; '01' char set #4 is U.S. set ; '02' char set #5 is United Kingdom set ; '13' char set #6 is DG Special Graphics set ; '20' char set #7 is DLL set 0 ;Indicate your desired character set palette here: CHAR_SET_PALETTE 00,10,11,0>,01,02,13,20 ;Which of the sets listed in the palette above should be the default ; primary set? DEFAULT_PRIMARY_CHAR_SET? 00 ;Which of the sets listed in the palette above should be the default ; alternate set? DEFAULT_ALTERNATE_CHAR_SET? 10 ;For terminals that support selectable 7/8 bit mode, what should be ; the default character length? ; ; Most Data General terminals that support multiple character sets ; also support either 7 or 8 bit mode. When in 7-bit mode, the high ; bit is a parity bit, so the terminal only looks at the lower 7 bits ; when determining what character to display, and the character is ; always selected from the currently active character set. When in ; 8-bit mode, all bits are significant. If the high bit for a received ; character is set, the terminal will display the character from the ; current alternate character set even if the primary set is active ; at the time. ; ; This question allows the default setting for this parameter to be ; specified. Screen Demon will force the terminal into this state ; on start-up. ; ; This question should be answered with a value of either 7 or 8. DEFAULT_7_OR_8_BIT_MODE? 7 ;For terminals that support selectable keyboard language, what should be ; the default setting? ; ; When the terminal is operating in 7-bit mode (see above), this ; parameter is ignored, and the keyboard language matches the ; keyboard hardware. When in 8-bit mode, the keyboard language ; can also be set to be the US ASCII character set for 7-bit ; characters, and the  DG International character set for 8-bit ; characters. This may be necessary if the SPCL key is to be ; used to generate particular 8-bit characters. ; ; Select one of the following choices to answer this question: ; KEYBD_LANG_HARDWARE Matches the keyboard hardware ; KEYBD_LANG_INTERNATIONAL US ASCII in K0, DG International in K1 DEFAULT_KEYBOARD_LANGUAGE? KEYBD_LANG_HARDWARE ;For terminals that support variable cursor types, what should be ; the default cursor type? ; ; The more advanced Data General terminals support different cursor ; types. On newer terminals, the default cursor type can be adjusted ; in the set-up screens. There is also a local cursor type key on ; the keyboard. Screen Demon cannot determine the current cursor type ; of the terminal, so it must force the cursor to a particular type ; when a Redraw occurs. The desired default cursor type can be ; indicated here. ; ; Select one of the following choices to answer this question: ; CURSOR_INVISIBLE No cursor ; ; CURSOR_BLINK_UNDERSCORE Cursor is a blinking underscore ; ; CURSOR_BLOCK Cursor is a reverse video block ; ; CURSOR_BLINK_BLOCK Cursor is a blinking reverse ; video block ; ; CURSOR_UNDERSCORE Cursor is a nonblinking underscore ; (not supported on older terminals) ; DEFAULT_CURSOR_TYPE? CURSOR_BLOCK ;For terminals that support adjustable scroll rates, what should be ; the default scroll rate? ; ; The more advanced Data General terminals support different scroll ; rates. On newer terminals, the default scroll rate can be adjusted ; in the set-up screens. There is also a local scroll rate key on ; the keyboard. Screen Demon cannot determine the current scroll rate ; of the terminal, so it must force the scroll rate to a particular ; setting when a Redraw occurs. The desired default scroll rate can be ; indicated here. ; ; Select one of the following choices to answer this question: ; SCROLL_JUMP As fast as new lines are received ; ; SCROLL_SMOOTH_SLOW Smooth scroll, 5 lines per second ; ; SCROLL_SMOOTH_FAST Smooth scroll, 10 lines per second ; DEFAULT_SCROLL_RATE? SCROLL_JUMP ;Initial command string for SD_CLI_INTERFACE hot key routine: ; (can be changed at runtime using the SD_SET_CLI_INIT_CMD call) SD_DEFAULT_CLI_INIT_CMD? .TXT "PREFIX,SCREEN,DEMON,CLI[!ASC 251]" ;Pathname of the CLI program to be called for CLI interface. ; If CLI32 is available, you may wish to change the pathname ; below to call that instead. Alternatively, you may want ; to call SD_CLI, if you have created a Screen Demon possessed ; version of CLI32. SD_CLI_PATHNAME? .TXT ":CLI" ;Screen Demon can maintain a list of the most recently entered ; input strings. This is similar to the HISTORY feature in CLI32, ; but Screen Demon's input history works at all input fields in ; any program. A separate input history is kept for each process. ; ; The input history is accessed via two hot key routines, which ; can be assigned to any two different keys on the keyboard. ; The hot key routine SD_GET_PREV_FROM_INPUT_HISTORY moves backward ; in the history list, displaying the input strings in the current ; input field each time the hot key is pressed. The hot key routine ; SD_GET_NEXT_FROM_INPUT_HISTORY works the same way, except that it ; moves forward through the history list. Both routines wrap around ; to the other end of the list when necessary. ; ; To maintain the input history, a buffer must be allocated where ; the input strings can be stored. Obviously, a larger buffer means ; more available input history. Unlike CLI32 HISTORY, where the ; history size is specified in lines, for Screen Demon's input history ; buffer, the size is specified in characters. If the input history ; feature is not desired, set the buffer size to zero. INPUT_HISTORY_BUFFER_SIZE? 0 ;default is no history ;Screen Demon can maintain a copy of text that has recently been scrolled ; off the top of the screen, or cleared because of a form feed command. ; These lines are kept in a "scrollback" buffer. When the buffer becomes ; full, the oldest lines are discarded to make room for new additions. ; ; The scrollback buffer can be examined via the hot key routine ; SD_SHOW_SCROLLBACK_BUFFER, which can be assigned to any key on ; the keyboard. While viewing the scrollback buffer, press UP ARROW ; to move upward and see earlier lines, or press DOWN ARROW to move ; downward and see text that scrolled off more recently. ; ; The scrollback buffer will be allocated at runtime. The size ; of this buffer is declared in characters. Screen Demon will keep ; as many complete scrollback lines in this buffer as will fit; ; the actual number of lines stored will depend on the average line ; length. If the scrollback feature is not desired, set the buffer ; size to zero. SCROLLBACK_BUFFER_SIZE? 0 ;default is no scrollback buf ;First part of pathname to user notepad files. A complete pathname to a ;user's notepad file is formed by taking the prefix string specified here ;(usually a directory pathname), appending the user's name, and then the ;string given below under PAD_PATH_SUFFIX. PAD_PATH_PREFIX? .TXT ":UDD:" ;Name extension of notepad file ready to be appended to Prefix/Username ;combination as described above. PAD_PATH_SUFFIX? .TXT ":NOTEPAD" ;Maximum size, in bytes, of a console logging file. MAX_CONLOG_SIZE? 65536 ;If Screen Demon should maintain a clock on the screen to display ; the current date, time, etc., describe the position, size, ; and format of this clock below. If no clock format string ; is specified, Screen Demon will not link the clock routine ; into your programs. ; ; ;Format string definitions: ; ; SD_FLOAT_CLOCK_FORMAT? ; .TXT "string" ; ; The text in the given string is displayed exactly except for ; constructs beginning with a percent sign (%). The character ; or characters following the percent sign indicate what parameter ; is to be displayed in place of the construct. In the list below, ; the examples of what would be displayed are based on the example ; point in history of 18-DEC-90 at 3:05 pm ; ; %% display a single percent sign ; % display a space. Use this in order to ; specify sequences of more than one SPACE, ; because " " looks like only one SPACE ; to the config file builder, but "% % % " ; will be seen as three consecutive SPACE ; characters. ; %cn display the upper two digits of complete year ; (e.g., 19) ; %yr display the lower two digits of complete year ; (e.g., 90) ; %mo display the month number within the year (e.g., 12) ; %nm display the full name of the month (e.g., December) ; %am display the abbreviated month name (e.g., Dec) ; %da display the day number within the month (e.g., 18) ; %nd display the full name of the day (e.g., Tuesday) ; %ad display the abbreviated day name (e.g., Tue) ; %hr display the hour in 12-hour format (e.g., 3) ; %mh display the hour in 24-hour format (e.g., 15) ; %mi display the minutes within the hour (e.g., 5) ; %ap display appropriate am/pm indicator (e.g., pm) ; ; ; For names, abbreviations, and the am/pm indicator, the case of ; the first character of the format specifier indicates the case ; of the first character of the displayed string. The case of the ; second character of the format specifier indicates the case of ; the remaining characters of the displayed string. ; e.g. %nm --> december ; %Nm --> December ; %NM --> DECEMBER ; ; For format specifiers that result in numeric displays, the case ; of the specifier is ignored. However, for these specifiers, ; a `0' character can be placed between the `%' character and the ; two-character code; this indicates that a leading zero should be ; included if necessary to pad the number out to two digits. ; e.g. %hr:%mi %ap --> 3:5 pm ; %hr:%0mi %ap --> 3:05 pm ; %0mh%0mi --> 1505 ; ; ; Note that screen control characters can be included in the ; format s tring if desired. See MAIL_INDICATOR above for ; information about these characters. ; ; As a more complex example, the format string ; "% It is now %hr:%0mi %ap on %Nd % %Nm %da, %cn%yr" ; would display the following underlined clock output: ; It is now 3:05 pm on Tuesday December 18, 1990 ; which would be updated at each input, and periodically ; during an input based on the time value indicated for ; the PERIODIC_INTERVAL? question above. ; ; ;Describe your desired clock format below. ; Leave this question blank if you do not want Screen Demon ; to display a clock. Otherwise, specify a format string ; of the form ; .TXT "string" ; following the label below: SD_FLOAT_CLOCK_FORMAT? ;default is no clock ;Specify the position and size of the clock on the screen. Note that ; the answers to the next four questions are ignored if the answer ; to the SD_FLOAT_CLOCK_FORMAT? question above is blank. The values ; shown here would match a Clock Format of "%mh:%0mi" SD_FLOAT_CLOCK_LINE? 1 SD_FLOAT_CLOCK_COLUMN? 76 SD_FLOAT_CLOCK_HEIGHT? 1 ;height in lines SD_FLOAT_CLOCK_WIDTH? 5 ;width in columns ;The names used by Screen Demon for months and weekdays are listed below. ; These lists can be modified to support languages other than English. ; Note that each of the two lists must appear on a single line, all ; names must be specified in uppercase, and there must be a vertical ; bar character (|) following each name in each of the lists. SD_MONTH_NAMES? .TXT "JANUARY|FEBRUARY|MARCH|APRIL|MAY|JUNE|JULY|AUGUST|SEPTEMBER|OCTOBER|NOVEMBER|DECEMBER|" SD_WEEKDAY_NAMES? .TXT "SUNDAY|MONDAY|TUESDAY|WEDNESDAY|THURSDAY|FRIDAY|SATURDAY|" ;Under either the Interactive COBOL or Shared Library versions ; of SCREEN DEMON, all user programs will access the same copy ; of SCREEN DEMON, causing all programs to be treated alike. ; Since there will probably be some programs that should not ; be run with full Turbo Display, for example, this ; configuration file allows "special" programs to be declared. ; In this way, programs with special requirements will be ; automatically recognized and handled appropriately by SCREEN ; DEMON when they execute; all other programs will run normally. ; ; One of the special requirements that may be declared is Turbo ; Display level. While the majority of user programs will perform ; best with Full Turbo, there may be a few situations where ; No Turbo might need to be selected. For compatibility with ; Screen Demon rev 2.01, Partial Turbo is still available, but ; is strongly discouraged because of the performance penalty. ; ; Also, if the automatic logoff feature is enabled (see ; LOGOFF_INTERVAL above), there may be critical programs that ; shouldn't be terminated, no matter how long an operator lets ; them remain idle. These programs can be declared in the ; Special Programs list below to protect them from the automatic ; logoff handler. ; ; In rare cases, it may be appropriate to have SCREEN DEMON turn ; itself off while a particular program runs. This can be ; accomplished by declaring these programs as BYPASS in the ; Special Programs list. ; ; There may be some programs where hot keys are not desirable, ; such as a logon program. Since hot keys could allow access ; to application programs before a user had entered a name and ; password, it might be wise to disable hot keys while the ; logon program is running. This can be accomplished by declaring ; such programs as NO_HOT_KEYS in the Special Programs list. ; ; By listing a program in the Special Programs list with the LOG ; option, console event logging will automatically activate whenever ; that program is running. This eliminates the need to use SPY to ; watch for someone to run the program, and then manually start ; Logging on that console. ; ; ; Entries in the Special Programs list are lines of the form: ; Keyword programname1,programname2,...,programnameN ; ; The possible Keywords are ; PARTIAL_TURBO ; NO_TURBO ; NO_LOGOFF ; BYPASS ; LOG ; NO_HOT_KEYS ; ; There may be any number of entries in the list. A program ; can appear in more than one entry if it has more than one ; special attribute. The only restrictions are that each line ; must begin with one of the above keywords, and that the program ; names must be simple filenames without the .PR or .PD extension ; (pathnames or pathname fragments are not allowed). ; ; For example, ; BEGIN_SPECIAL_PROGRAMS ; PARTIAL_TURBO CSMNUPRT,CSOPRPRT ; NO_TURBO CSDBFM4 ; PARTIAL_TURBO CSLOGUPD ; NO_LOGOFF CSLOGUPD, CSDBFM4 ; NO_HOT_KEYS CSLOGON ; END_SPECIAL_PROGRAMS ; declares that the programs called CSMNUPRT, CSOPRPRT, and ; CSLOGUPD are to be run in Partial Turbo, while the program ; called CSDBFM4 must be run with Turbo Display completely off. ; All other programs run at the default Turbo setting, probably ; Full. In addition, the programs called CSLOGUPD and CSDBFM4 ; are immune to automatic logoff, and while the program CSLOGON ; is running, hot keys are disabled. BEGIN_SPECIAL_PROGRAMS ;This line (and the END_SPECIAL_PROGRAMS below) must ; exist even if there are no special programs defined. ;Put special program declarations here END_SPECIAL_PROGRAMS ;Titles used for the various Screen Demon pop-up functions. Note that ; control characters cannot be included in these title strings. ;Main menu - SD_MAIN_MENU: SD_MAIN_MENU_TITLE? .TXT " SCREEN DEMON Menu " ;Note: The <60> and <62> characters in the string below are `<' and `>', ; respectively. They must be expressed in numeric form because these ; are special characters for the .TXT assembler pseudo-op. SD_MAIN_MENU_FOOTER? .TXT " <60>NL<62> to select" ;Notepad - SD_NOTEPAD: SD_NOTEPAD_TITLE? .TXT " SCREEN DEMON Notepad " ;Print Screen - SDSCREENPRINT: SDSCREENPRINT_TITLE? .TXT " SCREEN DEMON Screen Print " ;Calculator - SDCALCULATOR ; There are two title lines for the calculator, each of which ; may be up to 16 characters long. SDCALCULATOR_TITLE_ONE? .TXT "SCREEN DEMON" SDCALCULATOR_TITLE_TWO? .TXT " Calculator" ;Also store these titles in PutValue space so that COBOL programs ; can get to them: PUT_VALUE SDCALCULATOR_TITLE_ONE PUT_VALUE SDCALCULATOR_TITLE_TWO ;Calendar - SDCALENDAR: SDCALENDAR_TITLE? .TXT " SCREEN DEMON Calendar " ;Also store this title in PutValue space so that COBOL programs ; can get to it: PUT_VALUE SDCALENDAR_TITLE ;Read Mail - SD_READ_MAIL: SD_READ_MAIL_TITLE? .TXT " SCREEN DEMON Read Mail " ;Input (Send) Mail - SD_INPUT_MAIL: SD_INPUT_MAIL_TITLE? .TXT " SCREEN DEMON Send Mail " ;Turbo Control - SD_COMMAND: SD_COMMAND_TITLE? .TXT " SCREEN DEMON Turbo Control " ;Request a chunk of unshared memory of a specified size in pages (2 KB) ; to be reserved for initial Screen Demon memory allocation operations. ; Screen Demon will use memory from this chunk until it is exhausted, ; and only then will it resort to a temporary shared memory file. The ; default size of 24 is sufficient for program start-up needs and the ; initial window, but not for additional pop-up windows. Note that ; excessively large values for this parameter may require that a ; larger KTOP or MTOP be declared at LINK time. This parameter can ; be set to zero to save space in the .PR file, at the expense of ; increased program start-up time. ; ; NOTE: This parameter should be set to zero for ICOBOL revision 1.60 ; and below; unpredictable errors may occur otherwise. ;Default SD_MEM initial chunk size in pages: SD_MEM_SIZE 0 ;The following section applies primarily to CEO environments, but may ; be applicable to other shared console / multiple program situations. ; ; If some of the CEO programs, such as CEO_CP, have been possessed ; with Screen Demon, but others, such as CEO_WP, have not, then special ; handling is required to keep the terminal screen up-to-date. ; In this situation, the integrated programs transfer control of the ; console between each other by means of IPC messages. Screen Demon ; will Y need to monitor these messages, since the console parameters ; (characteristics, etc.) may need to be reset and the screen redrawn ; when an IPC message is received from a non-Screen Demon process to ; return control of the console to a Screen Demon program. However, ; there is other IPC message traffic to/from the CEO agents, such as ; CEO_POA, that can be safely ignored, since these processes will not ; affect the console. ; ; When running in a shared console environment, such as CEO, what ; special handling, if any, needs to occur for IPC messages? ; ; Possible answers to this question are ; SHCON_IPC_IGNORE No special handling ; SHCON_IPC_FLUSH Flush to make sure screen is up-to-date ; before processing the message ; SHCON_IPC_RESET Flush before processing the message, and ; reset console environment (characteristics, ; etc.) after a message is received ; SHCON_IPC_REDRAW Same as RESET plus redraw the screen after ; a message is received ; ; The SHCON_IPC_REDRAW answer is suggested in the CEO environment as ; described above. The IGNORE response should be used if your application ; runs in a shared console environment, and uses IPC messages, but not for ; the purpose of transferring control of the console between processes. ; Screen Demon rev 3.00.03 always used the RESET option. ; ; Answer the following question with one of the above responses: SHARED_CONSOLE_IPC_HANDLING? SHCON_IPC_RESET ;Default is same as rev 3.00.03 ;If IPC messages are not ignored in this situation (i.e., the above question ; was not answered with SHCON_IPC_IGNORE), then you may wish to specify the ; names of server processes that will not affect the console. IPC traffic ; to/from these processes can be ignored. ; ; Determine the full process names for each of the processes that are to ; be ignored. A full process name consists of a username, followed by a ; colon character, followed by the simple process name. The CLI WHO command ; shows this information. For example: ; ) WHO 15 ; PID: 15 CEO_MGR CEO_POA :UTIL:CEO_DIR:CEO_POA.PR ; ^ ^ ; | | ; username simple process name ; ; Declare that IPC messages to/from a process are to be ignored using ; the SHCON_IPC_IGNORE_IF_FROM command. For example, the following ; is suggested if your CEO environment is as described previously: ; ; SHCON_IPC_IGNORE_IF_FROM CEO_MGR:CEO_POA ; SHCON_IPC_IGNORE_IF_FROM CEO_MGR:CEO_FSA ; SHCON_IPC_IGNORE_IF_FROM CEO_MGR:CEO_CSA ; SHCON_IPC_IGNORE_IF_FROM CEO_MGR:CEO_QMA ; SHCON_IPC_IGNORE_IF_FROM CEO_MGR:CEO_NSA ; SHCON_IPC_IGNORE_IF_FROM CEO_MGR:CEO_LOG ; SHCON_IPC_IGNORE_IF_FROM CEO_MGR:CEO_OP ; SHCON_IPC_IGNORE_IF_FROM CEO_MGR:CEO_GPN_1 ; ; There may be any number of these commands, but only one process name can ; be specified per command. You do not need to specify any of these commands ; if this situation does not apply to your system. ; ; Specify any processes whose IPC messages are to be ignored when running ; in a shared console environment: ;none by default ; Custom user configuration data can also be stored in this file. There ; is no limit to the amount or type of information that can be included. ; User programs can retrieve this data using the SD_GET_VALUE call. ; ; The general format of user-defined configuration options is as follows: ; ; label: ; .TXT "value" ; ; PUT_VALUE label ; ; ; where 'label' is an identifier for the data item, and 'value' is the ; actual data itself. ; ; 'label' must consist only of letters, digits, and the special characters ; underscore (_), question mark (?), period (.), and dollar sign ($). ; The first character cannot be a digit. The exact name of 'label' must ; be known to a user program in order to retrieve the 'value' using ; SD_GET_VALUE. ; ; 'value' can be any string of ASCII characters. Control characters can ; be included by enclosing their decimal value within <>. ; ; For examples, see the declarations of the SDCALCULATOR and SDCALENDAR ; title strings elsewhere in this configuration file. ; ; Include any custom configuration options here: ;The following must be the last statement in this file (except for the .END) END_CONFIGURATION .END .@'Foc'Hr'Hr!uSD_PRISWI_DEFINES.SR  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; $Id: sd_priswi_defines.sr,v 1.5 1995/07/11 20:50:31 mark Exp mark $ ; ; $Log: sd_priswi_defines.sr,v $ ; Revision 1.5 1995/07/11 20:50:31 mark ; Updated revision and copyright ; ; Revision 1.4 1994/12/07 00:17:21 mark ; USERS macro was adding a zero separator dbl word to the console groups list, ; not the user groups list. This caused all username groups past the first ; one to be ignored. ; ; Revision 1.3 1994/03/11 17:27:47 mark ; Inserted previous log comments ; ; Revision 1.2 1994/03/11 01:45:18 mark ; Added RCS Id and Log fields ; ; Revision 1.1 1994/03/10 22:05:09 mark ; Initial revision ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; SD_PRISWI_DEFINES Screen Demon rev 3.60.01 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; ;;; ;;; Copyright (C) 1988-1995, ;;; ;;; Threshold, Inc. ;;; ;;; Auburn, Alabama U.S.A. ;;; ;;; All rights reserved. ;;; ;;; ;;; ;;; SCREEN DEMON and its associated hot-key routines ;;; ;;; are proprietary property of Threshold, Inc. ;;; ;;; Except as provided for by the License Agreement; these ;;; ;;; shall not be copied, used, or disclosed for any purpose or ;;; ;;; reason in whole or in part, without the express written ;;; ;;; consent of: ;;; ;;; ;;; ;;; Threshold, Inc. ;;; ;;; 118 North Ross Street ;;; ;;; Auburn, Alabama 36830 ;;; ;;; ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; .ESC "~ ;Change MASM's macro escape character to tilde ;Define symbols to use for referencing macro arguments beyond the ninth one ; in .TXT building macros. Note that in these symbol names, only a single ; character can follow the "?" in order to expand with "^?x" ?a = 10. ?b = 11. ?c = 12. ?d = 13. ?e = 14. ?f = 15. ?g = 16. ?h = 17. ?i = 18. ?j = 19. ?k = 20. ?l = 21. ?m = 22. ?n = 23. ?o = 24. ?p = 25. ?q = 26. ?r = 27. ?s = 28. ?t = 29. ?u = 30. ?v = 31. ?w = 32. ?x = 33. ?y = 34. ?z = 35. .MACRO BEGIN_DEFINITIONS .TITLE SD_PRISWI_CONFIG .PART SD_PRISWI_USER_SPECS_PART UNSHARED,DATA,LOCAL ?USERS = . .PART SD_PRISWI_CATCH_LIST_PART UNSHARED,DATA,LOCAL .DWORD ?USERS ;Put addr of user printer spec list ; just before list of caught names so ; that rev 3.00.04 programs can find ; it, but still allowing backward ; compatibility with rev 3.00.03 programs ?CATCH = . .PART SD_PRISWI_PRINTER_SPECS_PART UNSHARED,SHORT,DATA,LOCAL .DWORD ?CATCH ;Start file with addr of list of ptrs to names ; of files whose ?OPENs are to be caught ?PNUM = 0 ?CATCH_DEF = 0 % .MACRO CATCH .IFG .ARGCT ?I = 0 .DO .ARGCT ?I = ?I+1 .PART SD_PRISWI_CATCH_NAMES_PART UNSHARED,DATA,LOCAL ?CATCH = . .TXT "@^?I" .PART SD_PRISWI_CATCH_LIST_PART UNSHARED,DATA,LOCAL .DWORD ?CATCH*2 .ENDC ?CATCH_DEF = 1 .ENDC % .MACRO PRINTER .IFN ?PNUM DEFINE_PRINTER \?PNUM .ENDC .IFG .ARGCT ?PNUM = ?PNUM+1 ?NUM_^1 = ?PNUM ?DEV_DEF = 0 ?DESC_DEF = 0 .MACRO ^1 .DWORD ?PRT_\?NUM_^1 ~% .ENDC % .MACRO DEFINE_PRINTER .IFN ?DEV_DEF ?DEV_DEF = 0 .IFE ?DESC_DEF ?DESC = ?DEV .ENDC .PART PRINTER_DEFS_PART UNSHARED,LOCAL,DATA ?PRT_^1 = . .DWORD ?DEV*2 .DWORD ?DESC*2 .ENDC % .MACRO DEVICE .IFG .ARGCT .PART PRINTER_NAMES_PART UNSHARED,DATA,LOCAL ?DEV = . ?DEV_DEF = 1 .TXT "@^1" .ENDC % .MACRO QUEUE .IFG .ARGCT DEVICE ^1 .ENDC % .MACRO PATHNAME .IFG .ARGCT .PART PRINTER_NAMES_PART UNSHARED,DATA,LOCAL ?DEV = . ?DEV_DEF = 1 .TXT "^1" .ENDC % .MACRO INPUT ?DEV = 0 ?DEV_DEF = 1 % .MACRO PASSTHRU ?DEV = -1 ?DEV_DEF = 1 % .MACRO DESCRIPTION .IFG .ARGCT .PART PRINTER_NAMES_PART UNSHARED,DATA,LOCAL ?DESC = . ?DESC_DEF = 1 .IFN (.ARGCT==1) .TXT "^1" .ELSE .IFN (.ARGCT==2.) .TXT "^1 ^2" .ELSE .IFN (.ARGCT==3.) .TXT "^1 ^2 ^3" .ELSE .IFN (.ARGCT==4.) .TXT "^1 ^2 ^3 ^4" .ELSE .IFN (.ARGCT==5.) .TXT "^1 ^2 ^3 ^4 ^5" .ELSE .IFN (.ARGCT==6.) .TXT "^1 ^2 ^3 ^4 ^5 ^6" .ELSE .IFN (.ARGCT==7.) .TXT "^1 ^2 ^3 ^4 ^5 ^6 ^7" .ELSE .IFN (.ARGCT==8.) .TXT "^1 ^2 ^3 ^4 ^5 ^6 ^7 ^8" .ELSE .IFN (.ARGCT==9.) .TXT "^1 ^2 ^3 ^4 ^5 ^6 ^7 ^8 ^9" .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC % .MACRO CONSOLES .IFN ?PNUM DEFINE_PRINTER \?PNUM .ENDC .IFN .MCALL .PART SD_PRISWI_PRINTER_SPECS_PART UNSHARED,DATA,LOCAL .DWORD 0 .ENDC .IFG .ARGCT .PART SD_PRISWI_CONNAMES_PART UNSHARED,DATA,LOCAL ?LOCON = . .TXT "^1" .IFE (.ARGCT-1) ?HICON = ?LOCON .ELSE ?HICON = . .TXT "^2" .ENDC .PART SD_PRISWI_PRINTER_SPECS_PART UNSHARED,DATA,LOCAL .DWORD ?LOCON*2 .DWORD ?HICON*2 .ENDC % .MACRO USERS .IFN ?PNUM DEFINE_PRINTER \?PNUM .ENDC .IFN .MCALL .PART SD_PRISWI_USER_SPECS_PART UNSHARED,DATA,LOCAL .DWORD 0 .ENDC .IFG .ARGCT .PART SD_PRISWI_USERNAMES_PART UNSHARED,DATA,LOCAL ?USERS = . .IFN (.ARGCT==1) .TXT "^1" .ELSE .IFN (.ARGCT==2.) .TXT "^1 ^2" .ELSE .IFN (.ARGCT==3.) .TXT "^1 ^2 ^3" .ELSE .IFN (.ARGCT==4.) .TXT "^1 ^2 ^3 ^4" .ELSE .IFN (.ARGCT==5.) .TXT "^1 ^2 ^3 ^4 ^5" .ELSE .IFN (.ARGCT==6.) .TXT "^1 ^2 ^3 ^4 ^5 ^6" .ELSE .IFN (.ARGCT==7.) .TXT "^1 ^2 ^3 ^4 ^5 ^6 ^7" .ELSE .IFN (.ARGCT==8.) .TXT "^1 ^2 ^3 ^4 ^5 ^6 ^7 ^8" .ELSE .IFN (.ARGCT==9.) .TXT "^1 ^2 ^3 ^4 ^5 ^6 ^7 ^8 ^9" .ELSE .IFN (.ARGCT==10.) .TXT "^1 ^2 ^3 ^4 ^5 ^6 ^7 ^8 ^9 ^?a" .ELSE .IFN (.ARGCT==11.) .TXT "^1 ^2 ^3 ^4 ^5 ^6 ^7 ^8 ^9 ^?a ^?b" .ELSE .IFN (.ARGCT==12.) .TXT "^1 ^2 ^3 ^4 ^5 ^6 ^7 ^8 ^9 ^?a ^?b ^?c" .ELSE .IFN (.ARGCT==13.) .TXT "^1 ^2 ^3 ^4 ^5 ^6 ^7 ^8 ^9 ^?a ^?b ^?c ^?d" .ELSE .IFN (.ARGCT==14.) .TXT "^1 ^2 ^3 ^4 ^5 ^6 ^7 ^8 ^9 ^?a ^?b ^?c ^?d ^?e" .ELSE .IFN (.ARGCT==15.) .TXT "^1 ^2 ^3 ^4 ^5 ^6 ^7 ^8 ^9 ^?a ^?b ^?c ^?d ^?e ^?f" .ELSE .IFN (.ARGCT==16.) .TXT "^1 ^2 ^3 ^4 ^5 ^6 ^7 ^8 ^9 ^?a ^?b ^?c ^?d ^?e ^?f ^?g" .ELSE .IFN (.ARGCT==17.) .TXT "^1 ^2 ^3 ^4 ^5 ^6 ^7 ^8 ^9 ^?a ^?b ^?c ^?d ^?e ^?f ^?g ^?h" .ELSE .IFN (.ARGCT==18.) .TXT "^1 ^2 ^3 ^4 ^5 ^6 ^7 ^8 ^9 ^?a ^?b ^?c ^?d ^?e ^?f ^?g ^?h ^?i" .ELSE .IFN (.ARGCT==19.) .TXT "^1 ^2 ^3 ^4 ^5 ^6 ^7 ^8 ^9 ^?a ^?b ^?c ^?d ^?e ^?f ^?g ^?h ^?i ^?j" .ELSE .IFN (.ARGCT==20.) .TXT "^1 ^2 ^3 ^4 ^5 ^6 ^7 ^8 ^9 ^?a ^?b ^?c ^?d ^?e ^?f ^?g ^?h ^?i ^?j ^?k" .ELSE .IFN (.ARGCT==21.) .TXT "^1 ^2 ^3 ^4 ^5 ^6 ^7 ^8 ^9 ^?a ^?b ^?c ^?d ^?e ^?f ^?g ^?h ^?i ^?j ^?k ^?l" .ELSE .IFN (.ARGCT==22.) .TXT "^1 ^2 ^3 ^4 ^5 ^6 ^7 ^8 ^9 ^?a ^?b ^?c ^?d ^?e ^?f ^?g ^?h ^?i ^?j ^?k ^?l ^?m" .ELSE .IFN (.ARGCT==23.) .TXT "^1 ^2 ^3 ^4 ^5 ^6 ^7 ^8 ^9 ^?a ^?b ^?c ^?d ^?e ^?f ^?g ^?h ^?i ^?j ^?k ^?l ^?m ^?n" .ELSE .IFN (.ARGCT==24.) .TXT "^1 ^2 ^3 ^4 ^5 ^6 ^7 ^8 ^9 ^?a ^?b ^?c ^?d ^?e ^?f ^?g ^?h ^?i ^?j ^?k ^?l ^?m ^?n ^?o" .ELSE .TXT "^1 ^2 ^3 ^4 ^5 ^6 ^7 ^8 ^9 ^?a ^?b ^?c ^?d ^?e ^?f ^?g ^?h ^?i ^?j ^?k ^?l ^?m ^?n ^?o ^?p" .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC .PART SD_PRISWI_USER_SPECS_PART UNSHARED,DATA,LOCAL .DWORD ?USERS*2 .ENDC % .MACRO END_DEFINITIONS  .PART SD_PRISWI_PRINTER_SPECS_PART UNSHARED,DATA,LOCAL .DWORD 0 .DWORD 0 .PART SD_PRISWI_USER_SPECS_PART UNSHARED,DATA,LOCAL .DWORD 0 .DWORD 0 .IFE ?CATCH_DEF ;Catch "@LPT" if no CATCH's were specified .PART SD_PRISWI_CATCH_NAMES_PART UNSHARED,DATA,LOCAL ?CATCH = . .TXT "@LPT" .PART SD_PRISWI_CATCH_LIST_PART UNSHARED,DATA,LOCAL .DWORD ?CATCH*2 .ENDC .PART SD_PRISWI_CATCH_LIST_PART UNSHARED,DATA,LOCAL .DWORD 0 .END % .END .@'Fq 'Hr'Hru#SD_TERMCAPS.SR u ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; $Id: sd_termcaps.sr,v 1.5 1995/07/11 21:04:37 mark Exp mark $ ; ; $Log: sd_termcaps.sr,v $ ; Revision 1.5 1995/07/11 21:04:37 mark ; Updated revision and copyright ; ; Revision 1.4 1994/10/24 18:04:18 mark ; Model id for D470C was 54, should be 44 ; ; Revision 1.3 1994/03/11 17:27:47 mark ; Inserted previous log comments ; ; Revision 1.2 1994/03/11 01:45:18 mark ; Added RCS Id and Log fields ; ; Revision 1.1 1994/03/10 22:05:09 mark ; Initial revision ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; SCREEN DEMON Terminal Capabilities Definition file ; ; Screen Demon rev 3.60.01 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; ;;; ;;; Copyright (C) 1988-1995, ;;; ;;; Threshold, Inc. ;;; ;;; Auburn, Alabama U.S.A. ;;; ;;; All rights reserved. ;;; ;;; ;;; ;;; SCREEN DEMON and its associated hot-key routines ;;; ;;; are proprietary property of Threshold, Inc. ;;; ;;; Except as provided for by the License Agreement; these ;;; ;;; shall not be copied, used, or disclosed for any purpose or ;;; ;;; reason in whole or in part, without the express written ;;; ;;; consent of: ;;; ;;; ;;; ;;; Threshold, Inc. ;;; ;;; 118 North Ross Street ;;; ;;; Auburn, Alabama 36830 ;;; ;;; ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;Keywords for the various terminal capabilities that can be specified ; ALTERNATE_CHARACTER_SETS ; CHARACTER_INSERT_AND_DELETE ; COMPRESS_MODE ; LINE_INSERT_AND_DELETE ; MARGINS ; REVERSE_VIDEO ; SCROLL_LEFT_AND_RIGHT ; SCROLL_UP_AND_DOWN ; UNDERLINE ; WINDOWS ; ; EVERYTHING ; ALL ; NOTHING ; NONE BEGIN_TERMCAPS ;DEFAULT definition must occur before first TERMINAL definition DEFAULT DOES UNDERLINE DOES REVERSE_VIDEO TERMINAL DG6053 MODELID NONE DOES UNDERLINE TERMINAL D100 MODELID "! DOES UNDERLINE,REVERSE_VIDEO TERMINAL D200 MODELID "! DOES UNDERLINE,REVERSE_VIDEO TERMINAL D210 MODELID "( DOES UNDERLINE,REVERSE_VIDEO TERMINAL D211 MODELID "( DOES UNDERLINE,REVERSE_VIDEO TERMINAL D214 MODELID "1 DOES UNDERLINE,REVERSE_VIDEO TERMINAL D215 MODELID "1 DOES UNDERLINE,REVERSE_VIDEO TERMINAL D216 MODELID "e DOES UNDERLINE,REVERSE_VIDEO DOES ALTERNATE_CHARACTER_SETS TERMINAL D216E MODELID "e DOES UNDERLINE,REVERSE_VIDEO DOES ALTERNATE_CHARACTER_SETS TERMINAL D216_PLUS MODELID "3 DOES UNDERLINE,REVERSE_VIDEO DOES ALTERNATE_CHARACTER_SETS TERMINAL D217 MODELID "5 DOES UNDERLINE,REVERSE_VIDEO DOES ALTERNATE_CHARACTER_SETS TERMINAL D220 MODELID "+ DOES UNDERLINE,REVERSE_VIDEO DOES ALTERNATE_CHARACTER_SETS DOES SCROLL_UP_AND_DOWN DOES CHARACTER_INSERT_AND_DELETE TERMINAL D230 MODELID "+ DOES UNDERLINE,REVERSE_VIDEO DOES ALTERNATE_CHARACTER_SETS DOES SCROLL_UP_AND_DOWN DOES CHARACTER_INSERT_AND_DELETE TERMINAL D400 MODELID "' DOES EVERYTHING TERMINAL D410 MODELID "* DOES EVERYTHING TERMINAL D411 MODELID "0 DOES EVERYTHING TERMINAL D412 MODELID "f DOES EVERYTHING TERMINAL D412E MODELID "h DOES EVERYTHING TERMINAL D412E_PLUS MODELID "4 DOES EVERYTHING TERMINAL D412_PLUS MODELID "4 DOES EVERYTHING TERMINAL D413 MODELID "6 DOES EVERYTHING TERMINAL D450 MODELID "' DOES EVERYTHING TERMINAL D460 MODELID "* DOES EVERYTHING TERMINAL D461 MODELID "0 DOES EVERYTHING TERMINAL D462 MODELID "f DOES EVERYTHING TERMINAL D462E MODELID "h DOES EVERYTHING TERMINAL D462E_PLUS MODELID "4 DOES EVERYTHING TERMINAL D462_PLUS MODELID "4 DOES EVERYTHING TERMINAL D463 MODELID "6 DOES EVERYTHING TERMINAL D470C MODELID 44 DOES EVERYTHING EXCEPT COMPRESS_MODE TERMINAL PC_WITH_CGA_EMULATING_D400 MODELID "' DOES EVERYTHING EXCEPT UNDERLINE, COMPRESS_MODE TERMINAL W460_CGA MODELID "A DOES EVERYTHING EXCEPT UNDERLINE, COMPRESS_MODE END_TERMCAPS .@'Fos'Hr'Hr w{SD_VM_DEFINES.SR  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; $Id: sd_vm_defines.sr,v 1.6 1995/07/11 20:51:03 mark Exp mark $ ; ; $Log: sd_vm_defines.sr,v $ ; Revision 1.6 1995/07/11 20:51:03 mark ; Updated revision and copyright ; ; Revision 1.5 1994/05/23 21:15:48 mark ; TERMINAL_ASSIGNMENTS section did not subtract console-type's low unit # ; from given console #'s, and so would set the wrong terminal's model id ; if the particular console-type group didn't start at zero. ; ; Revision 1.4 1994/03/11 17:27:47 mark ; Inserted previous log comments ; ; Revision 1.3 1994/03/11 01:45:18 mark ; Added RCS Id and Log fields ; ; Revision 1.2 1994/03/10 23:04:57 mark ; Default model id code for MODEL_ID macro was incorrect ; ; Revision 1.1 1994/03/10 22:05:09 mark ; Initial revision ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; .TITLE SCREEN_DEMON.VM ; Definitions for building SCREEN_DEMON_3.00.VM file ; ; Screen Demon rev 3.60.01 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; ;;; ;;; Copyright (C) 1988-1995, ;;; ;;; Threshold, Inc. ;;; ;;; Auburn, Alabama U.S.A. ;;; ;;; All rights reserved. ;;; ;;; ;;; ;;; SCREEN DEMON and its associated hot-key routines ;;; ;;; are proprietary property of Threshold, Inc. ;;; ;;; Except as provided for by the License Agreement; these ;;; ;;; shall not be copied, used, or disclosed for any purpose or ;;; ;;; reason in whole or in part, without the express written ;;; ;;; consent of: ;;; ;;; ;;; ;;; Threshold, Inc. ;;; ;;; 118 North Ross Street ;;; ;;; Auburn, Alabama 36830 ;;; ;;; ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; .NOLOC 1 ;List 'real' lines only .ESC "| ;Set MASM's escape char to vertical bar .RDX 10. ;Set decimal mode ;Use a partition definition that is the same as normal UD except ; that overwrite messages are suppressed. This will allow the ; same console to be touched by more than one model id declaration. .PART DATA_PART ALIGN=0,DATA,LONG,UNSHARED,NORM,GLOBAL,NOMESS .TXTN 1 ;Do not follow even-length strings with null word ;These definitions must match those in SD_DEFINES: .DUSR VMREC.SIZE = 5*1024. ;Size of VM file record in words .DUSR VMHDR.SIZE = VMREC.SIZE ;Size of VM file hdr record in words .DUSR VMREC.BLKS = VMREC.SIZE/256. ;# of blocks in VM file record .DUSR VMHDR.BLKS = VMHDR.SIZE/256. ;# of blocks in VM file hdr record .DUSR VMCON.MODELID = 4355. ;offset to Model Id field in console record .DUSR VMCON.TERMCAPS = 4357. ;offset to Termcaps field in console record .DUSR VMCON.FLAGS = 4361. ;offset to Flags field in console record ;Definitions of the various terminal capabilities .DUSR UNDERLINE = 1B15 .DUSR REVERSE_VIDEO = 1B14 .DUSR ALTERNATE_CHARACTER_SETS = 1B13 .DUSR COMPRESS_MODE = 1B12 .DUSR WINDOWS = 1B11 .DUSR SCROLL_UP_AND_DOWN = 1B10 .DUSR SCROLL_LEFT_AND_RIGHT = 1B9 .DUSR MARGINS = 1B8 .DUSR CHARACTER_INSERT_AND_DELETE = 1B7 .DUSR LINE_INSERT_AND_DELETE = 1B6 .DUSR EVERYTHING = -1 .DUSR ALL = -1 .DUSR NOTHING = 0 .DUSR NONE = 0 ;NONE is also intended to be used as MODEL_ID for terminals ; such as 6053's that don't respond to a model id request .MACRO BEGIN_TERMCAPS ?TDEF = 0 ?TCAP = 0 ?TCAP.NONE = 0 .PART DATA_PART ALIGN=0,DATA,LONG,UNSHARED,NORM,GLOBAL,NOMESS ;First two words of VM file header past console bitmap ; is block offset to first PID record .DWORD ?PIDBLKOFS ;Next part of header is termcaps table. First word of table is ; capabilities of terminal that doesn't return a model id. ; Rest of table is one-word slots for model id's SPACE thru ~ VMHDR.TERMCAPS_TBL: .BLK (1+127-32) % .MACRO DEFAULT % .MACRO TERMINAL .IFG .ARGCT .IFE ?TDEF ;Initialize "termcaps by model id" table entries ??M = 32 .DO (127-32) ?TCAPM.\??M = ?TCAP ??M = ??M+1 .ENDC .ELSE ?DEFINE_TERMINAL .ENDC ?TDEF = ?TDEF+1 ?TCAP = 0 ^1.TDEF = ?TDEF ?TCAPD.\?TDEF = 0 ?TMOD.\?TDEF = 0 .MACRO ^1 .IFG (.ARGCT-2) ASSIGN_TERMINALS ?TCAPD.\^1.TDEF,?TMOD.\^1.TDEF,|^1,|^2,|^3 .ELSE .IFG (.ARGCT-1) ASSIGN_TERMINALS ?TCAPD.\^1.TDEF,?TMOD.\^1.TDEF,|^1,|^2 .ELSE ASSIGN_TERMINALS ?TCAPD.\^1.TDEF,?TMOD.\^1.TDEF,|^1 .ENDC .ENDC |% .ENDC % .MACRO MODELID ?TMOD = 0 ;Default to value that gets slot in front of table .IFG .ARGCT .IFG (^1-31) .IFG (127-^1) ?TMOD = ^1 .ENDC .ENDC .ENDC % .MACRO DOES ?I = 1 .DO .ARGCT ;For each capability supplied... ?TCAP = ?TCAP!(^?I) ;...turn it on ?I = ?I+1 .ENDC % .MACRO EXCEPT ?I = 1 .DO .ARGCT ;For each capability supplied... ?TCAP = ?TCAP&(~(^?I)) ;...turn it off ?I = ?I+1 .ENDC % .MACRO ?DEFINE_TERMINAL .IFE ?TMOD ?TCAP.NONE = ?TCAP .ELSE ?TCAPM.\?TMOD = ?TCAP ?TCAPD.\?TDEF = ?TCAP .ENDC ?TMOD.\?TDEF = ?TMOD % .MACRO END_TERMCAPS .IFG ?TDEF ?DEFINE_TERMINAL .ENDC .LOC VMHDR.TERMCAPS_TBL .WORD ?TCAP.NONE ;First slot in table is slot for ; terminals whose model id is NONE ??M = 32 .DO (127-32) .IFE ?TDEF .WORD ?TCAP .ELSE .WORD ?TCAPM.\??M .ENDC ??M = ??M+1 .ENDC % .MACRO BEGIN_CON_TYPES ;Create a work area to be used to determine lengths of strings. ; CODE attribute necessary to force this area past real UD partition, ; NOMESS attribute needed since it will be overwritten repeatedly. .PART WORK_PART ALIGN=0,CODE,LONG,UNSHARED,NORM,GLOBAL,NOMESS WORK_AREA: .PART DATA_PART ALIGN=0,DATA,LONG,UNSHARED,NORM,GLOBAL,NOMESS % ;Usage: ; CON_TYPE deviceName,lowUnit,highUnit ; .MACRO CON_TYPE .IFE .MCALL ?BASE_CON_NUM = 0 ?PIDBLKOFS = VMHDR.BLKS .ENDC .IFG .ARGCT .IFL (.ARGCT-2) ?LO_UNIT = 0 .ELSE ?LO_UNIT = ^2 .ENDC .IFL (.ARGCT-3) ?HI_UNIT = ?LO_UNIT .ELSE ?HI_UNIT = ^3 .ENDC .WORD ^1.LEN ;length of device name in bytes, ; possibly including a terminating null .WORD ?LO_UNIT ;lowest unit # .WORD ?HI_UNIT-?LO_UNIT+1 ;max # of this type .TXT "^1" ;name of console type .DUSR ^1.LO = ?LO_UNIT .DUSR ^1.HI = ?HI_UNIT .DUSR ^1.BASE = ?BASE_CON_NUM ;Determine the length of the device name .PART WORK_PART ALIGN=0,CODE,LONG,UNSHARED,NORM,GLOBAL,NOMESS .LOC WORK_AREA .TXT "^1" ?WORK_END_A = . .LOC WORK_AREA .TXT "^1B" ?WORK_END_B = . .IFE (?WORK_END_A-?WORK_END_B) .DUSR ^1.LEN = (?WORK_END_A-WORK_AREA)*2-1 .ELSE .DUSR ^1.LEN = (?WORK_END_A-WORK_AREA)*2 .ENDC .PART DATA_PART ALIGN=0,DATA,LONG,UNSHARED,NORM,GLOBAL,NOMESS ?BASE_CON_NUM = ?BASE_CON_NUM+(?HI_UNIT-?LO_UNIT+1) ?PIDBLKOFS = ?PIDBLKOFS+((?HI_UNIT-?LO_UNIT+1)*VMREC.BLKS) .ENDC % .MACRO END_CON_TYPES .WORD 0 ;terminate con types table with zero size % .MACRO BEGIN_TERMINAL_ASSIGNMENTS % .MACRO END_TERMINAL_ASSIGNMENTS % ;Usage: ; ASSIGN_TERMINALS termcaps,modelid,contypename,lowunit,highunit ; .MACRO ASSIGN_TERMINALS .IFG (.ARGCT-2) .IFL (.ARGCT-4) ?LO_UNIT = ^3.LO ?HI_UNIT = ^3.HI .ELSE ?LO_UNIT = ^4 .IFL (.ARGCT-5) ?HI_UNIT = ?LO_UNIT .ELSE ?HI_UNIT = ^5 .ENDC .ENDC ?SDCONNUM = ^3.BASE+?LO_UNIT-^3.LO .DO (?HI_UNIT-?LO_UNIT+1) .LOC ?SDCONNUM*VMREC.SIZE+VMHDR.SIZE+VMCON.MODELID .DWORD (^2)S7 .LOC ?SDCONNUM*VMREC.SIZE+VMHDR.SIZE+VMCON.TERMCAPS .WORD ^1 .LO wC ?SDCONNUM*VMREC.SIZE+VMHDR.SIZE+VMCON.FLAGS .WORD 1B13 ?SDCONNUM = ?SDCONNUM+1 .ENDC .ENDC % .EOF .@'GT'Hs.'Hs. SD_ACUCOBOL_INTF.OB  SD_ACUCOBOL_INTF"C!/ SD_SHARED_DATA_PARTSD_UNSHARED_DATA_PART|   0@EId~WgetcharWtestchWgeometryW_flagsW_sizew_timeoutw_num_chars$alarmerrnoSET_FLD_DELIM_TBLSD_INPUT_FIELDSD_INPUT_FIELD_TO_FULLSD_NEW_WINDOWSD_SUSPEND_WINDOWSD_MONITOR_STRING_INTO_WINDOWCONSOLE_CHAN_MAPICTRLCTRLVIRTUAL_CON_CHARACTERISTICSACTUAL_CON_DELIMITER_TABLEAWDSCAWBUFAWPOSAWOFSAWATRAWCPLINPUT_ERROR_WINDOWSD_NONTRAIL_DELIM_TBLEXTC_SD_INIT_CALLS~ hs 9   SD_ACU_INITSD_ACU_SYSCALL_INTERCEPTORSD_ACU_ALARMSD_ACU_INPUT_DELIM_TBLSD_ACU_CURSOR_OFFSETSD.SD_ACUCOBOL_INTFUD.SD_ACUCOBOL_INTFSC.SD_ACUCOBOL_INTF$o?o?&    ib) y)xـyyyy@y)㉃xY)8yy8Y))88 $ɀyYـ Y YyyIy IY YIYY9YyyЉ)9Y9ɀ YYȒiY iIIi)8yXx8⹀yY)9YY)9)8۸ )8xxxyYȒiYi89)8㉋8y򉈸IY)Y9)Y9) 9YYـ艻ـ X ))YX 9)9yyiɇƉ")Ոxـ艻ـY9 YyyiɇyIyI)Iy)yIȉ)8©Yy YЉx)xx8؉ɇYYȒiYiY9)"؉ENumeric entry required! ) xiIY))i   !(/; EJ Q"V"Y\_fi l r vz ~  %!   #        "#+ 7AF W Z ] ad g!jm q"t y      ! "      #$$A F PS   .@'Hs]'Hv'Ht<! SD_CONFIG.OB  SD_CONFIGH ## #5 #*C#!v` SD_UNINITIALIZED_DATA_PARTS 0 < E R ^ k x SD_MAIN_MENUSD_REDRAWSDSCREENPRINTSDCALCULATORSD_MAIL_INBOXSD_INPUT_MAILSD_NOTEPADSD_CLI_INTERFACESD_COMMANDSDCALENDARpP^p xSD_CONFIG_BASESD_HOT_LINKS_TABLESD_DYNAMIC_CONFIG_FILENAMESD_SPECIFIC_PROGRAM_CONFIG_LOADSD_APPEND_TO_SCROLLBACK_BUFFERSD_SHOW_SCROLLBACK_BUFFER         SD_MAIN_MENU         SD_REDRAW  !"#$ % &'(  ) Redraw Screen*+ , - ./ 0  1 2 SDSCREENPRINT3 456 7  8  9 :;  < |Print Screen=> ? @ AB C DSDCALCULATORE FG HI  J KLM  N |CalculatorOP Q R ST U VSD_MAIL_INBOXW XYZ[ \ ]^_  `  |Read Mailab c d ef vg h!SD_INPUT_MAILi #jklm !n opq  r  |Send Mailst u v wx y z(SD_NOTEPAD{ *|}~ (     |Notepad    z  .SD_CLI_INTERFACE 0 .      "|Call CLI    u 7SD_COMMAND 9 $  7 "$    '|Turbo On/Off    x =SDCALENDAR ?$( $= &(    .|Calendar     3|| j kMailnRemote ViewuRemote Input |G  }~ ~@LPT @LPTPREFIX,SCREEN,DEMON,CLI[!ASC 251] :CLI :UDD: :NOTEPAD4,JANUARY|FEBRUARY|MARCH|APRIL|MAY|JUNE|JULY|AUGUST|SEPTEMBER|OCTOBER|NOVEMBER|DECEMBER|%SUNDAY|MONDAY|TUESDAY|WEDNESDAY|THURSDAY|FRIDAY|SATURDAY|   SCREEN DEMON Menu  to select  SCREEN DEMON Notepad  SCREEN DEMON Screen Print SCREEN DEMON Calculator "SDCALCULATOR_TITLE_ONE   "       . .SDCALCULATOR_TITLE_TWO    .         : : SCREEN DEMON Calendar  FSDCALENDAR_TITLE      F  <     O O SCREEN DEMON Read Mail  \ SCREEN DEMON Send Mail i SCREEN DEMON Turbo Control xx ( x))yzz` ` `0010110>01021320~SD_ALT_EXIT_KEY    ~          SD_HOT_TIMEOUT_INTERVAL                   SD <! <"  # $ % &  '  (  ) * + Z,  -  . / 0 1 j2 3 4  5 "k6 $7 %8 &M9 ': (; )n< += ,> -? .@ / A 0uB 2 C 3D 4E 5F 6 G 7H 8I 9J ;K =L ??M A|N CO EP GQ IR KS MT O:U QOV S\W UiX WY YZ [~[ ]\ ^] `^ a_ b` cza e[b fc g2d  h0e if j0g kh li mj nk ol qm rn sLo tp uq vr xs zt {u }v ~~ w x `y `z  { |} .@'G`}'HtK'HtK,OSDCALENDAR.DD 00000000000000000000000000SDCALENDAR SD_CAL_L SD_CAL_C SD_CAL_W SD_CAL_D 02N0000 (SDCALENDAR_TITLE   Calendar Help|  021355010{ JanFebMarAprMayJunJulAugSepOctNovDecJanuary February March April May June July August SeptemberOctober November December S M T W T F S 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31:DEInvalid date. SD_ALT_EXIT_KEY   #,          = :       e l t }      C1 for helpArrow keys: move day pointerShifted Arrow keys: move calendarHome: return to current date C2: previous month C4: next month C3: enter month ESC: exitany key to continue Month:  Year:      VYZ#######SD_SET_SECONDARY_PROGRAM_NAMESD_TURBO_FULL1902SD_GET_VALUE4SD_PUT_VALUESD_TURBO_RESETSD_ACTIVE_WINDOWSD_TOP_WINDOWSD_READ_CHAR 18753100N400101377 SCREEN DEMON Calendar |24|SD_CREATE_WINDOW9SD_REMOVE_WINDOWSD_SUSPEND_WINDOW12SD_ERROR_MESSAGESD_MOVE_WINDOW_LEFTSD_MOVE_WINDOW_RIGHTSD_MOVE_WINDOW_UPSD_MOVE_WINDOW_DOWN31302928 .@'Fo'Hq~'Hq~ MAKE_SD_GATES.CLI  [!equal,,RCS] **************************************************************** $Id: make_sd_gates.cli,v 1.4 1995/07/11 20:47:45 mark Exp mark $ $Log: make_sd_gates.cli,v $ Revision 1.4 1995/07/11 20:47:45 mark Updated revision and copyright Revision 1.3 1994/03/11 17:27:47 mark Inserted previous log comments Revision 1.2 1994/03/11 01:45:18 mark Added RCS Id and Log fields Revision 1.1 1994/03/10 22:05:09 mark Initial revision *********************************************************************** [!end] comment MAKE_SD_GATES.CLI Screen Demon rev 3.60.01 comment Copyright (C) 1988-1995, Threshold, Inc., All Rights Reserved comment -------------------------------------------------------- [!equal,,comment] This macro assembles inner ring gate definition modules to be linked with user programs and the inner ring Screen Demon program. [!end] comment If no ring was specified, use ring 6 as the default. [!equal,,%0/ring=%] %0%/ring=6 %1-% comment If no inner ring program name was specified, comment use SCREEN_DEMON_RING_.PR as the default. [!else][!equal,,%0/ringname=%] %0%/ringname=SCREEN_DEMON_RING_%0/ring=% %1-% comment If no name was specified for the module base name, comment use as the default base. comment Both _GATES.OB and _CALLS.OB will be created. [!else][!equal,,%0/base=%] %0%/base=%0/ringname=% %1-% [!else] push prompt pop searchlist [!searchlist]& [!nequal,[!path =],[!path [!edirectory [!pathname %0\%.cli]]]]& [!edirectory [!pathname %0\%.cli]]& [!end] write write write Building gate array module %0/base=%_GATES.OB write ,,,,to be linked with Screen Demon inner ring program write ,,,,%0/ringname=%.PR write ((write x/s),x/s) & masm/ps=masm_32char.ps/ulc/o=%0/base=%_GATES%0\base\ring\ringname% & SD_GATE_ARRAY_DEFINES & SD_CALLS & %1-% & SD_GATE_ARRAY_DEFINES_END [!equal,(),([!string])] write write %0/base=%_GATES.OB can now be used by MAKE_SD_INNER_RING write,,,,to create %0/ringname=%.PR write [!end] write write write Building inner ring interface module %0/base=%_CALLS.OB write ,,,,to be linked with user programs for calling routines write ,,,,in the ring %0/ring=% program %0/ringname=%.PR write delete/2=ignore =?[!pid]ring_def.sr write/l==?[!pid]ring_def.sr SD_RING_NUMBER %0/ring=% write/l==?[!pid]ring_def.sr SD_RING_NAME %0/ringname=% ((write x/s),x/s) & masm/ps=masm_32char.ps/ulc/o=%0/base=%_CALLS%0\base\ring\ringname%& SD_GATE_CALL_DEFINES & ?[!pid]ring_def & SD_CALLS & %1-% delete/2=ignore =?[!pid]ring_def.sr [!equal,(),([!string])] write write %0/base=%_CALLS.OB is now ready to be linked with your programs. write [!end] pop [!end][!end][!end] .@'Fog'Hq'Hq SD_REGISTER.CLI  [!equal,,RCS] **************************************************************** $Id: sd_register.cli,v 1.4 1995/07/11 20:50:39 mark Exp mark $ $Log: sd_register.cli,v $ Revision 1.4 1995/07/11 20:50:39 mark Updated revision and copyright Revision 1.3 1994/03/11 17:27:47 mark Inserted previous log comments Revision 1.2 1994/03/11 01:45:18 mark Added RCS Id and Log fields Revision 1.1 1994/03/10 22:05:09 mark Initial revision *********************************************************************** [!end] comment SD_REGISTER.CLI Screen Demon rev 3.60.01 comment Copyright (C) 1988-1995, Threshold, Inc., All Rights Reserved comment -------------------------------------------------------- push prompt pop searchlist [!searchlist]& [!nequal,[!path =],[!path [!edirectory [!pathname %0\%.cli]]]]& [!edirectory [!pathname %0\%.cli]]& [!end] directory/1=error/2=error :SCREEN_DEMON_3.60 X SD_REGISTER%0/quick% pop .@'Fo]'Hq'Hq 1SD_POSSESS_ICX_1.50.PAT  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; $Id: sd_possess_icx_1.50.pat,v 1.4 1995/07/11 20:50:19 mark Exp mark $ ; ; $Log: sd_possess_icx_1.50.pat,v $ ; Revision 1.4 1995/07/11 20:50:19 mark ; Updated revision and copyright ; ; Revision 1.3 1994/03/11 17:27:47 mark ; Inserted previous log comments ; ; Revision 1.2 1994/03/11 01:45:18 mark ; Added RCS Id and Log fields ; ; Revision 1.1 1994/03/10 22:05:09 mark ; Initial revision ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;The patches in this file activate the SCREEN DEMON routines. ; ;This file applies only to revision 1.50 of the Interactive COBOL ; interpreter running under AOS/VS, using revision 3.60.01 of SCREEN DEMON ; for Interactive COBOL. %PROGRAM ;Catch beginning of initialization routine so that SCREEN DEMON can be ; initialized also. INIT+2 [LLEF 2,SCRPK,0] [LJMP SD_ICX_INIT,1] ^+1 [] [] ^+1 [] [] ;This patch allows Screen Demon to know when ICX has an ACCEPT ; in progress, and if multiple console ?READ's are actually ; part of the same ACCEPT. RDFD [WSSVR 10] [LJMP SD_ICX_RDFD,1] ^+1 [] [] ^+1 [NLDAI -1,1] [] ^+1 [] [WADC 1,1] ;This patch causes the ICOBOL interpreter to return an ESCAPE KEY ; value of 99 if a console timeout occurs, instead of aborting ; with a "Runtime System Panic". SETDLM+1134 [NLDAI 67,1] {LPSHJ #SD_PATCH,1} ^+1 [] [] ^+1 [SUB# 0,1,SZR] [] #SD_PATCH 0 [WSNEI 76,0] ^+1 0 [] ^+1 0 [WBR .+5] ^+1 0 [WSNEI 67,0] ^+1 0 [] ^+1 0 [ISZTS] ^+1 0 [WPOPJ] ^+1 0 [WPOP 1,1] ^+1 0 [XNLDA 1,10,2] ^+1 0 [] ^+1 0 [XWADD 1,4,2] ^+1 0 [] ^+1 0 [WSUB 0,0] ^+1 0 [WSTB 1,0] ^+1 0 [NLDAI 99.,0] ^+1 0 [] ^+1 0 [LJMP SETDLM+667,1] ^+1 0 [] ^+1 0 [] SD_PATCH #SD_PATCH\ #SD_PATCH+23\ ^+1 [] [] ;Intercept EXIT PROGRAM so that if the exiting ICOBOL program was called via ; a "hot" key, control can be returned to the original ACCEPT. A.XIT+3 [LJMP COBOL,0] [LJMP SD_ICX_EXIT_PROGRAM,1] ^+1 [] [] ^+1 [] [] ;Divert STOP RUN processing so that it can be forced to act like an ; EXIT PROGRAM if it is encountered in a program that was called ; from a hot key. OAT+232 A.STP-.\ SD_ICX_STOP_RUN_HANDLER-.\ ^+1 [] [] ;Divert CALL PROGRAM processing so that it can be forced to act like an ; EXIT PROGRAM if it is encountered in a program that was called from ; a hot key. CHNOP+13 [XJSR WUSIN,1] [LJMP SD_ICX_CALL_PROGRAM_HANDLER,1] ^+1 [] [] ^+1 [WBR CHNOP+151] [] ;Catch ICOBOL program loads so that the name of the new active program ; can be obtained and put into the SCREEN DEMON control file. ASPRG+62 [XJSR WRPGD,1] [LJMP SD_ICX_ASPRG,1] ^+1 [] [] ^+1 [WBR ASPRG+136] [] LDPRG+7 [XJSR RDPGD,1] [LJMP SD_ICX_LDPRG,1] ^+1 [] [] ^+1 [WBR LDPRG+35] [] ;Catch ICX Abort so that SCREEN DEMON can reset the window environment ; if control will return to LOGON. ; Note that the 341 in next line is actually ICX's STATUS address, ; which PATCH won't accept in the instruction format necessary. CSTOP+2 [LDA 0,341,0] [LJMP SD_ICX_CSTOP,1] ^+1 [ANDI 2,0] [] ^+1 [] [] CPERR+14 [WBR CSTOP+11] [WBR CSTOP+2] CSTOP+24 [LJSR WAIT,1] [LJMP SD_ICX_CSTOP_WAIT,1] ^+1 [] [] ^+1 [] [] ;Catch entry into the ICX Debugger so that debugger window can be activated DB0 [LDASB 3] [LPSHJ SD_ICX_ENTER_DEBUGGER,1] ^+1 [STASP 3] [] ^+1 [STAFP 3] [] SBUGG [LDASB 3] [LPSHJ SD_ICX_ENTER_DEBUGGER,1] ^+1 [STASP 3] [] ^+1 [STAFP 3] [] EBUGG [LDASB 3] [LPSHJ SD_ICX_ENTER_DEBUGGER,1] ^+1 [STASP 3] [] ^+1 [STAFP 3] [] ;Catch exit from the ICX Debugger so that debugger window can be deactivated DB0+122 [LDASB 3] [LPSHJ SD_ICX_LEAVE_DEBUGGER,1] ^+1 [STASP 3] [] ^+1 [STAFP 3] [] ;Intercept ICX's attempt to input a debugger command so that this can be done ; in a proper screenedit fashion. SCAN0+343 [XJSR RDFD,1] [LJSR SD_ICX_READ_DEBUGGER_COMMAND,1] ^+1 [] [] ^+1 [WBR SCAN0+323] [] ICX_DEBUG_RESTART_ADDR 0 SCAN0+303\ ^+1 0 [] ;********** Optional Patches ********** ;This optional patch causes Screen Demon to catch ICX-generated error ; messages displayed on line 24 so that the original contents of ; the line can be restored after showing the error message. INVAL+14 [XJSR DSPER,1] [LJMP SD_ICX_ERROR_INVAL,1] ^+1 [] [] ^+1 [XWLDA 0,-6,3] [] ^+1 [] [NOP] DSPER+104 [XJSR PWRLN,1] [LJMP SD_ICX_ERROR_MPRE,1] ^+1 [] [] ^+1 [WRTN] [] DSPER+115 [XJSR WRLN,1] [LJMP SD_ICX_ERROR_MMSG,1] ^+1 [] [] ^+1 [WRTN] [] SETDLM+1254 [XNLDA 0,2,2] {LJMP #SD_PATCH,1} ^+1 [] [] ^+1 [XNSTA 0,3,3] [] ^+1 [] [NOP] #SD_PATCH 0 [XNLDA 0,2,2] ^+1 0 [] ^+1 0 [XNSTA 0,3,3] ^+1 0 [] ^+1 0 [LJMP SETDLM+1272,1] ^+1 0 [] ^+1 0 [] SD_PATCH #SD_PATCH\ #SD_PATCH+7\ ^+1 [] [] ;The following patch is not absolutely necessary, but will improve performance ; if the advanced features of SCREEN DEMON are used. It eliminates the ; unnecessary ?LEFE system call that is always performed on returning from ; an assembler CALL routine. This does mean that any assembler routine ; that issues a ?LEFD must do its own ?LEFE before returning to ICX. CALAS+116 [XJSR @16000000006,0] [WBR .+4] ^+1 [] [NOP] ^+1 265 [NOP] ^+1 [WBR CALAS+134] [NOP] ;***** The remaining patches fix bugs in the ICX interpreter ***** ; Note that these patches are not the same ones supplied by Data General. ; The DG patches must also be applied to the new ICX interpreter. ;Fix effective address problems STBKA+21 [WADDI 2000,0] [WNADI 2000,0] ^+1 [] [] ^+1 [] [XNDSZ 2,3] ^+1 [DSZ 2,3] [] RDDD+5 [NLDAI 0,0] [WSUB 0,0] ^+1 [] [XNSTA 0,0,2] ^+1 [XNSTA 0,0,2] [] ^+1 [] [NLDAI 7,1] ^+1 [NLDAI 7,1] [] ^+1 [] [WBLM] ^+1 [WBLM] [LDAFP 3] ^+1 [LDAFP 3] [XWLDA 2,-4,3] ^+1 [XWLDA 2,-4,3] [] ^+1 [] [XLEF 3,2,3] ^+1 [LEF 3,2,3] [] GETSW+55 [BTO 2,1] [WBTO 2,1] RDSEC+410 [LDA 2,4,3] [XNLDA 2,4,3] ^+1 [ADD 1,2] [] ^+1 [NLDAI 0,1] [ADD 1,2] ^+1 [] [WSUB 1,1] CHNOP+76 [BTZ 2,1] [WBTZ 2,1] CHNOP+102 [BTO 2,1] [WBTO 2,1] ;Shutdown guard task is supposed to give the rest of the interpreter time ; to shut down by itself. However, parameters in AC0 and AC1 to its ; ?WDELAY system call are reversed, so it doesn't wait at all, which ; could result in corrupted MINISAM files. INITC+104 [NLDAI 0,0] [NLDAI 11610,0] ^+1 [] [] ^+1 [NLDAI 11610,1] [NLDAI 0,1] ^+1 [] [] ;CPLOG routine jumps into the middle of CHNOP routine, but stack frame size ; of CPLOG is zero, leaving CHNOP frame data vulnerable to subsequent ; subroutine calls. CPLOG+1 0 @(CHNOP+1) ;End of patches .@'Fo;'Hr'Hr'SD_GATE_CALL_DEFINES.SR ' ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; $Id: sd_gate_call_defines.sr,v 1.6 1995/07/11 20:49:10 mark Exp mark $ ; ; $Log: sd_gate_call_defines.sr,v $ ; Revision 1.6 1995/07/11 20:49:10 mark ; Updated revision and copyright ; ; Revision 1.5 1994/06/30 22:19:21 mark ; Modified to guarantee that the lower 16 bits of the byte ptr ; SD_INNER_RING_NAME*2 will not be all zero, as required by the inner ring ; initialization routine. ; ; Revision 1.4 1994/06/28 16:49:39 mark ; The special SD_SYSCALL_GATE (gate 0) was being defined before the ; ring number had been declared, so that it was always defined for ring 6. ; Moved SD_SYSCALL_GATE declaration to BEGIN.SD_CALLS macro, which will ; run before any other gates get defined. ; ; Revision 1.3 1994/03/11 17:27:47 mark ; Inserted previous log comments ; ; Revision 1.2 1994/03/11 01:45:18 mark ; Added RCS Id and Log fields ; ; Revision 1.1 1994/03/10 22:05:09 mark ; Initial revision ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;Screen Demon rev 3.60.01 inner ring gate call definitions .TITLE SD_GATE_CALLS ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; ;;; ;;; Copyright (C) 1988-1995, ;;; ;;; Threshold, Inc. ;;; ;;; Auburn, Alabama U.S.A. ;;; ;;; All rights reserved. ;;; ;;; ;;; ;;; SCREEN DEMON and its associated hot-key routines ;;; ;;; are proprietary property of Threshold, Inc. ;;; ;;; Except as provided for by the License Agreement; these ;;; ;;; shall not be copied, used, or disclosed for any purpose or ;;; ;;; reason in whole or in part, without the express written ;;; ;;; consent of: ;;; ;;; ;;; ;;; Threshold, Inc. ;;; ;;; 118 North Ross Street ;;; ;;; Auburn, Alabama 36830 ;;; ;;; ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; .NOLOC 1 ;List 'real' lines only .ESC ;Kill MASM's escape character ;Entry symbols defined by the Gate Calls module .ENT SD_INNER_RING_NAME ;Define the macro that declares the ring where the Screen Demon routines ; will be loaded .DUSR ?SD_RING_NUMBER = 6 ;the default .MACRO SD_RING_NUMBER .IFG .ARGCT .DUSR ?SD_RING_NUMBER = ^1 .ENDC % ;Define the macro that declares the pathname of the inner ring program ; that will contain the Screen Demon routines. .DUSR ?SD_RING_NAME_FLAG = 0 ;Name not initially defined .MACRO SD_RING_NAME .IFG .ARGCT .PART SD_SHARED_DATA_PART ALIGN=1,DATA,LONG,SHARED,NORM,GLOBAL,MESS .ALIGN 2 ;Guarantee that the lower 16 bits of the byte .WORD 0 ; ptr SD_INNER_RING_NAME*2 will not be all zero, ; as required by the inner ring initialization ; routine SD_INNER_RING_NAME: .TXT "^1.PR" .DUSR ?SD_RING_NAME_FLAG = 1 ;Remember that a ; name was given .ENDC % ;Define a macro to define a gate for the specified routine. ; ; Call format: ; GATE routinename ; "routinename" is the actual entry point for the routine. .DUSR ?SD_MAX_GATES = 0 .MACRO GATE .IFG .ARGCT ;List routine as an entry symbol .ENT ^1 ;Define symbol for the routine as a gate reference .DUSR ^1 = (?SD_RING_NUMBER)S3!?SD_MAX_GATES ;Increment number of gates that have been defined .DUSR ?SD_MAX_GATES = ?SD_MAX_GATES+1 .ENDC % ;Define a macro to create a dummy slot in the gate array. ; Referencing this gate causes a dummy routine in the ; inner ring program to be called. ; ; Call format: ; DUMMY_GATE .MACRO DUMMY_GATE GATE DUMMY_GATE_CALL % ;Define the BEGIN_SD.CALLS macro referenced in the SD_CALLS.SR file ; (which will be assembled with this definition file) so that it ; defines the special system call gate, reserved as gate 0, before ; any other gates can be defined. .MACRO BEGIN_SD.CALLS GATE SD_SYSCALL_GATE % ;Define the SD.CALL macro referenced in the SD_CALLS.SR file ; (which will be assembled with this definition file) so ; that it uses the GATE macro above to define a gate for ; a Screen Demon call. .MACRO SD.CALL GATE ^1 % ;Define the END_SD.CALLS macro referenced in the SD_CALLS.SR file ; (which will be assembled with this definition file) so that it ; leaves extra gate numbers available between the Screen Demon ; call gates and first user gates. This allows new Screen Demon ; call gates to be added in future revisions without disturbing ; user gate numbers. ; Also, define the inner ring program name as the default, ; if none was specified. .MACRO END_SD.CALLS .DO 32.-10. ;Was 32 in rev 3.00.03, but 10 new gates were added ; in rev 3.5 DUMMY_GATE .ENDC .IFE ?SD_RING_NAME_FLAG ;If no name has been given... .IFE (?SD_RING_NUMBER-6) SD_RING_NAME SCREEN_DEMON_RING_6 .ELSE .IFE (?SD_RING_NUMBER-5) SD_RING_NAME SCREEN_DEMON_RING_5 .ELSE .IFE (?SD_RING_NUMBER-4) SD_RING_NAME SCREEN_DEMON_RING_4 .ENDC .ENDC .ENDC .ENDC % .EOF .@'Fom'Hr'HrQ{SD_SL_CONFIG.SR  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; $Id: sd_sl_config.sr,v 1.7 1995/07/11 20:50:51 mark Exp mark $ ; ; $Log: sd_sl_config.sr,v $ ; Revision 1.7 1995/07/11 20:50:51 mark ; Updated revision and copyright ; ; Revision 1.6 1994/06/08 16:54:40 mark ; Added the question PAD_INPUT_BUFFER_TO_FULL? as an additional option for ; the TRIM_SPACE_UNDERSCORE_ON_INPUT? section ; ; Revision 1.5 1994/03/25 18:16:55 mark ; Added the question SPECIFIC_PROGRAM_CONFIG_LOAD? ; ; Revision 1.4 1994/03/17 17:17:36 mark ; Modified to support new dynamic config file format ; ; Revision 1.3 1994/03/11 17:27:47 mark ; Inserted previous log comments ; ; Revision 1.2 1994/03/11 01:45:18 mark ; Added RCS Id and Log fields ; ; Revision 1.1 1994/03/10 22:05:09 mark ; Initial revision ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; SCREEN DEMON Configuration file ; ; revision 3.60.01 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; ;;; ;;; Copyright (C) 1988-1995, ;;; ;;; Threshold, Inc. ;;; ;;; Auburn, Alabama U.S.A. ;;; ;;; All rights reserved. ;;; ;;; ;;; ;;; SCREEN DEMON and its associated hot-key routines ;;; ;;; are proprietary property of Threshold, Inc. ;;; ;;; Except as provided for by the License Agreement; these ;;; ;;; shall not be copied, used, or disclosed for any purpose or ;;; ;;; reason in whole or in part, without the express written ;;; ;;; consent of: ;;; ;;; ;;; ;;; Threshold, Inc. ;;; ;;; 118 North Ross Street ;;; ;;; Auburn, Alabama 36830 ;;; ;;; ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;This file provides definitions for the key codes that require intervention ;by SCREEN DEMON after an input. Certain keys may be defined to cause ;a special action to occur, such as redrawing the screen. Then the ;input is restarted exactly as it was when the special key was pressed. ;A translation table may be defined so that keys that are normally ;inaccessible to COBOL (i.e., the arrow keys and C* function keys) can ;be translated to specified standard function key codes. ;Also, miscellaneous items such as the mail message string, time out values, ;note pad filename, and log file size are defined in this file. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;Should the configuration file load procedure first look for a ;program-specific dynamic configuration file, using the information ;listed in the remainder of this file only if no specific file is found? ; ; The usual configuration load scheme is to first look for a dynamic ; configuration file whose name is based on the current ring 7 .PR, ; and then if that fails, use the linked-in configuration data or ; load from the linked-in dynamic configuration file name, depending ; on whether the program, shared library, or inner ring program was ; linked with a standard configuration file or a loader module. If ; program-specific configuration files are not being used, then it ; would be more efficient to have the load procedure skip the step ; of looking for one. ; ; A YES answer to the following question indicates that a search ; should be made for a program-specific dynamic configuration file ; when a program starts. Screen Demon will first look for that file, ; whose name is the program name but with a ".SD" extension, via the ; searchlist; if that fails, the subdirectory CONFIG in the Screen ; Demon directory will be examined. Answer this question with NO to ; suppress the program-specific configuration file lookup, and always ; use the configuration data as listed in the remainder of this file. ; ; NOTE: The optional MAKE_SD_CONFIG switch "/PROGSPECIFIC={YES|NO}" ; overrides the answer below when the configuration file is compiled. SPECIFIC_PROGRAM_CONFIG_LOAD? YES ;The following sections associates particular keys with specific routines ;that should be called whenever those keys are pressed. ;NOTE: A key that has a subroutine attached to it will never be ;seen by the host program, since the input statement where the key ;was pressed will be automatically restarted when the subroutine returns. ;Each hot key definition has the following form: ; HOT_KEY ; ,,,... ; ; ; ... ; MENU menu description <--- this line is optional ; DIRECTORY initial directory <--- this line is optional ; ACL access control list <--- this line is optional ; ; where: ; ; is one of the following special keys: ; TAB, NEW_LINE, ERASE_EOL, ERASE_PAGE, CR, ESC, DEL, ; HOME, UP, RIGHT, LEFT, DOWN, ; SHIFT_HOME, SHIFT_UP, SHIFT_RIGHT, SHIFT_LEFT, SHIFT_DOWN, ; C1, C2, C3, C4, SHIFT_C1, SHIFT_C2, SHIFT_C3, SHIFT_C4, ; CMD_SHIFT_PRINT, CMD_PRINT ; F1, F2, ..., F14, F15, ; SHIFT_F1, SHIFT_F2, ..., SHIFT_F14, SHIFT_F15, ; CTRL_F1, CTRL_F2, ..., CTRL_F14, CTRL_F15, ; CTRL_SHIFT_F1, CTRL_SHIFT_F2, ..., CTRL_SHIFT_F15, ; ; any single printable character after a quote: ; "A, "a, "*, ..., ; ; or a decimal number (1-127) representing a control character ; or printable character: ; 1 (CTRL-A), 18 (CTRL-R), 64 ("@), ... ; ; ; and ,,... are one of the following: ; LINKED Entry name ; For linked in assembler, C, PL/1, or FORTRAN sub-programs. ; ; COBOL32 Entry name ; For linked in VS/COBOL sub-programs. ; ; ICOBOL Program name ; Use only for an ICX linked with SCREEN DEMON. ; ; PR Name, arg, arg, ... ; The named program will be PROC'ed with the given ; arguments. ; ; CLI Macro name, arg, arg, ... ; CLI will be PROC'ed to execute the given macro ; with the specified arguments. ; ; LINKED_IN_ROOT Name ; For linked-in assembler, VS/COBOL, C, PL/1, ; or FORTRAN sub-programs. ; Use only when the shared library (SL) version of ; SCREEN DEMON is used. At execution time the ; SCREEN DEMON hot key handler will search for ; the specified name in the list of hot key definitions ; that were linked into the root program. A root ; linked hot key definition may be created by ; running the MAKE_SD_HKD macro. ; ; ; 's are from the following list: ; ; SAVE_SCREEN ; If the sub-routine will not make SCREEN DEMON ; calls to save and restore the screen, then include ; this flag. ; ; REDRAW ; or REDRAW IMMEDIATE ; Set if the hot key routine is PR or CLI and it will ; display characters on the screen. SCREEN DEMON ; will not know about the displayed characters so ; the screen must be redrawn. For CLI type hot keys, ; a "Press Any Key To Continue..." message will appear ; on return from the hot key call if REDRAW is ; specified. To suppress this message, use the ; IMMEDIATE option. ; ; CANCEL ; Only for ICOBOL type hot key programs. When the ; hot key is pressed, SCREEN DEMON simulates a ; CALL "program" (not a CALL PROGRAM). If file ; statuses and variables must be in their initial ; state when the program executes, then include this ; flag. ; ; ; The optional MENU clause will place an entry for the hot key ; on the Screen Demon main menu. The description shown on the ; menu will be the text specified after the keyword MENU. ; NOTE: To add a hot key to the main menu without actually ; assigning it to a particular key, do not specify ; a key name on the HOT_KEY clause. For example: ; HOT_KEY ; LINKED SD_WP_SHELL ; MENU WordPerfect O ffice Shell ; ; ; The optional DIRECTORY clause allows the initial working directory ; for the hot key process to be specified. This clause effects ; only PR and CLI type hot keys. If no DIRECTORY clause is supplied ; in a hot key definition, the hot key process will start in the ; current working directory. ; ; ; The optional ACL clause allows access to the hot key to be ; restricted. Following the ACL keyword should be a list of ; usernames and/or username templates, similar to an AOS/VS ; file ACL. Like an AOS/VS file ACL, `*' matches any one ; character, and `+' matches any number of characters, including ; zero. However, unlike an AOS/VS file ACL, the FIRST character ; of an individual template may be an exclamation mark (!), which ; indicates that if a match occurs on that template, access is to ; be DENIED, rather than permitted. Also, there are no privilege ; letters following each template. Whenever a particular user ; attempts to access a hot key that has an ACL (either via the ; menu or assigned key), Screen Demon will scan the ACL looking ; for a match for the current username. If no template in the list ; matches the current username, Screen Demon will silently deny the ; user access to the hot key. If a match is found, then if the ; template started with `!', access is denied; otherwise, the ; hot key routine will be called. ; ; NOTE: If there is no ACL clause specified in a particular ; hot key definition, then all users will be able to ; access that hot key routine. ; ; For example, suppose the following ACL clause was specified ; as part of a hot key definition: ; ACL FRED !MARTHA MAR+ ; This indicates that FRED may access the hot key, and anyone ; whose username begins with the letters "MAR" except MARTHA ; can access the hot key. All other users will be denied access. ; ; As another example, the ACL clause ; ACL !ACCT+ + ; means that everyone except those whose usernames begin with ; the letters "ACCT" can access the associated hot key routine. BEGIN_HOT_KEYS ;This line (and the END_HOT_KEYS below) must exist ; even if there are no hot keys defined. ; Assign the SCREEN DEMON pop-up main menu to function key 11 (F11) HOT_KEY F11 LINKED SD_MAIN_MENU ; Redraw the Screen when the Erase Page key is pressed HOT_KEY ERASE_PAGE LINKED SD_REDRAW ;Word address of Redraw routine MENU Redraw Screen ; On CMD PRINT or CMD SHIFT PRINT, call the Print Screen program HOT_KEY CMD_PRINT, CMD_SHIFT_PRINT LINKED SDSCREENPRINT ;this is a C program, not COBOL32 MENU Print Screen ; On F14, call the Calculator HOT_KEY F14 PR SDCALCULATOR MENU Calculator ; On F12, Read Mail ; You can specify SD_READ_MAIL instead of SD_MAIL_INBOX if you ; want new messages to be displayed automatically when the hot ; key is pressed. HOT_KEY F12 LINKED SD_MAIL_INBOX MENU Read Mail ; On Shift F12, Send Mail HOT_KEY SHIFT_F12 LINKED SD_INPUT_MAIL ;Word address of Input Mail Routine MENU Send Mail ; On F13, call the Notepad HOT_KEY F13 LINKED SD_NOTEPAD ;Word address of Notepad routine MENU Notepad ; On F15, call the CLI Interface HOT_KEY F15 LINKED SD_CLI_INTERFACE ;Word address of CLI Interface routine MENU Call CLI ; On Shift F11, call the SCREEN DEMON Command routine (sets Turbo level) HOT_KEY SHIFT_F11 LINKED SD_COMMAND ;Word address of Command routine MENU Turbo On/Off ; On Shift F14, call the Calendar program HOT_KEY SHIFT_F14 PR SDCALENDAR MENU Calendar ;Add more hot key routine definitions here as required... END_HOT_KEYS ;The following section is used to translate entered key codes to ;different ones. BEGIN_TRANSLATIONS ;This line is required even if there are no ;key translations specified ;For each key that is to be translated to another key, enter a line ;of the following format: ; ; TRANSLATE , ; ; where both key codes are of the form described for ; under the HOT KEY section above. ; ;For example, the following two lines (if the semicolons were removed ;to uncomment them) will translate the up and down arrow keys to F3 and F2, ;respectively: ; TRANSLATE UP,F3 ; TRANSLATE DOWN,F2 ;Insert key translations here END_TRANSLATIONS ;This line is required even if there are no ;key translations specified ;Sometimes it may be desirable to input a particular key to an application, ; even if that key has been assigned to be a hot key or is normally ; translated to appear as another key value. The following definition ; specifies an "escape" key that, if pressed, suppresses hot key processing ; and/or translation of the next key pressed. To pass the chosen "escape" ; key to the application, press it twice. If no "escape" key is desired, ; specify a value of -1. Note that the "escape" key can never be a hot key ; or be translated. HOT_ESCAPE_KEY? CTRL_SHIFT_F15 ;The standard Screen Demon hot key routines accept as the normal ; exit key. Users may be accustomed to pressing a different key to ; exit in their application programs; for example, CEO uses F11 as ; the Cancel/Exit key. To minimize user confusion, it is possible ; to designate an alternate exit key for Screen Demon hot key routines ; that will act the same as . This alternate exit key can be set ; to the same key that the user would press to exit their application ; programs. If no such alternate exit key is desired, set the answer ; to the following question to -1; otherwise, specify the key name: SD_ALTERNATE_EXIT_KEY? -1 ;none by default ;String that will be displayed whenever an input is completed to provide ; immediate feedback to the operator that the input operation is over. ; The next flush will undo whatever this string does to the screen. ; Special screen control characters can be included in the string by ; enclosing them inside <>. Predefined control character names available: ; BLINK_ON, BLINK_OFF, UNDER_ON, UNDER_OFF, DIM_ON, DIM_OFF ; ; If no such feedback is desired, set the INPUT_FEEDBACK_STRING_SIZE below ; to zero. Overall performance will be somewhat slower if the feedback ; string is output after inputs, but may make the system APPEAR faster ; to an operator. INPUT_FEEDBACK_STRING? .TXT "<13>" ;perhaps a CR ;Number of characters in the above string INPUT_FEEDBACK_STRING_SIZE? 0 ;default is no feedback string ;String that will be displayed whenever the user has unread mail. ; Special screen control characters can be included in the string by ; enclosing them inside <>. Predefined control character names available: ; BLINK_ON, BLINK_OFF, UNDER_ON, UNDER_OFF, DIM_ON, DIM_OFF ; Default is a bright, blinking `Mail' in the top right corner of the screen. MAIL_INDICATOR? .TXT "Mail" ;Number of characters in the above string MAIL_INDICATOR_SIZE? 5 ;Location and size of region of screen occupied by above mail indicator string MAIL_VIEW_LINE? 1 MAIL_VIEW_COLUMN? 77 MAIL_VIEW_HEIGHT? 1 MAIL_VIEW_WIDTH? 4 ;String that will be displayed whenever a terminal is being viewed remotely ; through the SD_SPY program. Special screen control characters can be ; included in the string by enclosing them inside <>. Predefined control ; character names available: ; BLINK_ON, BLINK_OFF, UNDER_ON, UNDER_OFF, DIM_ON, DIM_OFF ; Default is no indicator. SD_REMOTE_VIEW_INDICATOR? .TXT "Remote View" ;Number of characters in the above string, or zero if no Remote View ; indicator is desired SD_REMOTE_VIEW_INDICATOR_SIZE? 0 ;set this to 12 ; to enable indicator ; string defined above ;Location and size of region of screen occupied by above indicator string SD_REMOTE_VIEW_INDICATOR_LINE? 1 SD_REMOTE_VIEW_INDICATOR_COLUMN? 1 SD_REMOTE_VIEW_INDICATOR_HEIGHT? 1 SD_REMOTE_VIEW_INDICATOR_WIDTH? 11 ;String that will be displayed whenever terminal inputs are being handled ; remotely through the SD_SPY program. Special screen control characters ; can be included in the string by enclosing them inside <>. Predefined ; control character names available: ; BLINK_ON, BLINK_OFF, UNDER_ON @ , UNDER_OFF, DIM_ON, DIM_OFF ; Default is a bright, blinking `Remote Input' in the top left corner ; of the screen. SD_REMOTE_INPUT_INDICATOR? .TXT "Remote Input" ;Number of characters in the above string SD_REMOTE_INPUT_INDICATOR_SIZE? 13 ;Location and size of region of screen occupied by above indicator string SD_REMOTE_INPUT_INDICATOR_LINE? 1 SD_REMOTE_INPUT_INDICATOR_COLUMN? 1 SD_REMOTE_INPUT_INDICATOR_HEIGHT? 1 SD_REMOTE_INPUT_INDICATOR_WIDTH? 12 ;If the CEO interface is to be used, the following two fields allow the ; location of the CEO mail status indicator to be specified. ; At runtime, the optional hot key routine SD_CEO_STATUS_MOVE (see ; the CEO interface documentation) can be used to move the status ; indicator to a different position as needed. These two fields ; are ignored if the CEO interface is not installed. CEO_MAIL_VIEW_LINE? 1 ;Normal default is first line CEO_MAIL_VIEW_COLUMN? 1 ; and first column ;If the WordPerfect Library or Office interface is to be used, the ; following field allows the letter code for the "Go To CLI" ; selection on the Shell menu to be specified. SCREEN DEMON needs ; to know this in order for the SD_CLI_INTERFACE hot key to work ; when running under WP Shell. SD_WP_SHELL_CLI_LETTER? .TXT "G" ;Amount of time in seconds that may elapse during a single input before ;the list of 'periodic calls' is executed. The input is restarted after ;those functions are called. The SCREEN DEMON mail check and CEO interface ;mail check are examples of these periodic calls. PERIODIC_INTERVAL? 60 ;once per minute ;Amount of time in seconds that may elapse during a single input before ;triggering the SCREEN DEMON screen saver. This routine will completely ;blank the screen, including the cursor, to avoid burn-in. Pressing any ;key will restore the original screen contents. Set this field to -1 ;to disable the screen saver. SCREEN_SAVER_INTERVAL? -1 ;default is no screen saver ;Amount of time in seconds that may elapse while the Screen Demon Main Menu ;is waiting for a response before automatically exiting the menu. ; ;Use a value of -1 to never terminate the Main Menu because of inactivity. MAIN_MENU_TIMEOUT_INTERVAL? -1 ;default is no timeout ;Amount of time in seconds that may elapse for a single input before ;the user is terminated (via orderly shutdown: files will be closed). ; ;Use a value of -1 to disable automatic logoff so that users will ; never be terminated because of inactivity. ; ;Note that specific programs can be protected against automatic logoff ; if desired. See Special Programs List below. LOGOFF_INTERVAL? -1 ;Default is to never terminate ; inactive users ;An optional time range during the day can be specified during which ; termination due to inactivity will not occur. Before and after ; this period, however, the time value specified in LOGOFF_INTERVAL ; above will apply. By default, logoff is permitted at any time, ; assuming LOGOFF_INTERVAL above is not -1. ; ; To specify a no-logoff time range, indicate the beginning and ending ; times (24-hour clock) of the protected period as follows: ; LOGOFF_OK_BEFORE hour,minute ; LOGOFF_OK_AFTER hour,minute ; ; For example, assuming that LOGOFF_INTERVAL contained an actual value, ; such as (15*60) to indicate 15 minutes, then the following statements ; would disable automatic logoffs between 8:00 am and 5:30 pm: ; LOGOFF_OK_BEFORE 8,00 ; LOGOFF_OK_AFTER 17,30 ; After 5:30 pm, users inactive for more than 15 minutes are to be logged ; off; the same applies to users inactive before 8:00 am. ;Specify optional no-logoff time period below: LOGOFF_OK_BEFORE 0,00 ;Default is LOGOFF_OK_AFTER 0,00 ; no protected period ;An optional list of users can be specified who are to be considered ; immune from automatic logoff. This list can contain exact usernames, ; username templates, or both. ; ; The NO_LOGOFF_USERS command is used to specify the list. There may ; be up to 25 usernames per NO_LOGOFF_USERS command, and there may be ; any number of NO_LOGOFF_USERS commands, provided each begins on a ; separate line. ; ; For example, ; ; NO_LOGOFF_USERS FRED MAR+ ; NO_LOGOFF_USERS ACCT+ ; ; indicates that all users whose names begin either with the letters MAR ; or ACCT should never be terminated due to inactivity, nor should the ; particular user named FRED. All other users can be terminated if ; their terminals become inactive, provided this is not prevented by ; other considerations, such as the logoff time range specified above, ; or the NO_LOGOFF special program declaration described later. ;Specify any users who should be immune from automatic logoff termination NO_LOGOFF_USERS ;no immune users by default ;The following question specifies the default value for the Turbo ; display setting. Turbo display offers two types of optimization ; of screen output: ; (1) System Call Buffering - Screen output is held until an input ; occurs, or until an specified amount of time has elapsed, ; as set with the FLUSH_INTERVAL? question below. ; (2) Discarding Redundant Characters - A given character will not ; be sent to the terminal if the screen position where it ; is to be displayed already shows that character. ; ; The allowable values for the Turbo display setting indicate what ; level of optimization is desired: ; ; Value Optimization ; ------- --------------- ; FULL Levels 1 and 2 ; PARTIAL Level 2 only ; this is equivalent to FULL with ; FLUSH_INTERVAL? set to zero, and ; is not recommended because it requires ; far more CPU resources ; OFF no optimization ; ON same as FULL ; ;Select an answer from the above list for the following question: DEFAULT_TURBO_DISPLAY_SETTING? FULL ;When running in FULL Turbo display mode, program screen output is normally ; held until the next input occurs, at which time the terminal screen ; is updated. Programs with many displays between inputs, such as a ; report program displaying a record count as it runs, need the screen ; updated more frequently. For this purpose, Screen Demon contains an ; optional Flush Timer which will force a screen update to occur if a ; specified amount of time has elapsed since the last flush, even if ; no input has occurred. ; ; The following field specifies the maximum time in seconds between ; screen updates. ; Use a value of -1 to disable the flush timer; this is equivalent ; to Full Turbo in rev 2 Screen Demon. ; Use a value of 0 to prevent buffering of program screen output; ; this is equivalent to Partial Turbo in rev 2 Screen Demon. FLUSH_INTERVAL? 10 ;flush at least once every ten seconds ;If Turbo mode is on, screen output is held until an input occurs, or ; the FLUSH_INTERVAL expires. If the screen scrolls, it may be ; desirable to update the screen at that time, rather than waiting ; for one of the other events to trigger a flush. The following ; field specifies the maximum number of scroll ups that can be ; held before forcing a flush. Set this field to -1 to prevent ; automatic flushing on scroll operations. MAX_SCROLL_BEFORE_FLUSH? 5 ;If the screen scrolls 5 lines, ; force a flush ;Miscellaneous options, answers are either YES or NO ;When Turbo mode is on, should SCREEN DEMON actually clear the screen ;whenever the host program outputs a clear screen command? ; ; Doing so is usually more efficient, and may be preferable to the ; operators. However, if the host program tends to blank the screen ; and repaint the same text a lot, it would probably be more efficient ; and would look better if SCREEN DEMON suppressed the actual clear ; screen command. PHYSICAL_SCREEN_CLEAR? YES ;Should SCREEN DEMON automatically redraw the screen whenever the ;host program returns from a call to a nonSCREEN DEMON program? ; ; When the host program calls out to a nonSCREEN DEMON program and then ; returns, SCREEN DEMON  ` has no way to know what the nonSCREEN DEMON ; program did to the terminal screen. In order to resynchronize the ; screen with SCREEN DEMON's internal picture, a redraw is necessary. ; By default, this happens at the next flush after returning from ; the call. However, if the called program displayed some information ; that the user needs to see, an immediate redraw will clear this ; information before it can be read. In such cases, it might be ; preferable to set the following option to NO to inhibit the automatic ; redraw, and put code into the host program to call SD_REDRAW when a ; screen redraw is appropriate. Another case where it might be better ; to do the redraw under program control is when the called program ; doesn't actually affect the screen, and so a redraw is not really ; necessary. AUTO_REDRAW_AFTER_NONSD_CALL? YES ;Should SCREEN DEMON use the Line Drawing character set for boxes and ;lines on terminals that have this capability? ; ; The SCREEN DEMON calls SD_DRAW_BOX, SD_DRAW_HLINE, and SD_DRAW_VLINE ; allow the programmer to easily draw boxes and lines on the terminal. ; Boxes and lines created using the Line Drawing character set ; generally look better than the default boxes and lines created ; by using reverse video and underline screen attributes. However, ; there are some differences in the way boxes and lines must be ; built if the Line Drawing character set is used that could cause ; some incompatibilities with existing programs. The main difference ; is that horizontal lines built with Line Draw characters actually ; take up a character position, but horizontal lines created by ; underlining characters already present do not. If this is a problem, ; set the answer for one or both of the following two questions to NO. USE_LINE_DRAW_CHARSET_FOR_BOXES? YES USE_LINE_DRAW_CHARSET_FOR_LINES? YES ;Should Screen Demon turn off the /NRM characteristic so that SENDs ;are not blocked? ; ; Some programs, such as those compiled with VS/COBOL, set the ; /NRM characteristic to protect their screens. However, blocking ; SENDs altogether is not the best solution because there are ; cases when a SEND is the only way of notifying a user of some ; event. Since Screen Demon provides a Redraw Screen capability, ; an application program's screen can easily be restored after a ; SEND message appears on the terminal. Consequently, it is not ; necessary for a program to set the /NRM characteristic. Answering ; this question YES tells Screen Demon to keep this characteristic ; off, even if the host program tries to turn it on. FORCE_NRM_CHARACTERISTIC_OFF? YES ;Should SCREEN DEMON trim trailing spaces and underscore characters ;from the initial contents of input fields, thus permitting ^A, ^E, ;and DELETE screenedit functions to work properly? ; ; Normally, COBOL input fields start off filled with underscore ; or space characters. This means that the "go to end of field" ; and "insert" screenedit functions will not work as expected, ; since PMGR treats the trailing spaces and/or underscores as ; real characters. Also, when DEL is used, trailing underscores ; will shift to the left, shortening the apparent length of the ; input area. Screen Demon can optionally trim these characters ; when the input begins, so that PMGR doesn't know about them. ; The characters will still be displayed before the input begins ; as always. The primary drawback is that when an input restarts, ; such as after a timeout or hot key, any trailing spaces or ; underscores will vanish, which may confuse some operators. ; ; NOTE: A bug in VS/COBOL rev 3.20 and below, and in rev 3.71, ; prevents function keys from working correctly if the ; underscores are removed. The default for this question ; is NO for that reason. In order to use this option with ; VS/COBOL, input fields must be padded back to their original ; size when the input is complete. The second question below ; indicates whether or not to do this. Post-input padding ; is recommended ONLY for programs compiled with VS/COBOL. TRIM_SPACE_UNDERSCORE_ON_INPUT? NO PAD_INPUT_BUFFER_TO_FULL? NO ;Should SCREEN DEMON ignore console interrupts (^C^A, ^C^B, and ^C^E)? ; ; One of SCREEN DEMON's tasks catches console interrupts. By default, ; it handles the interrupts the same way that the host program would ; if SCREEN DEMON were not present. If the host program contains code ; to watch for console interrupts, SCREEN DEMON will pass the interrupt ; to the host program; otherwise, SCREEN DEMON will terminate the ; process gracefully. ; ; A YES answer to the following question will cause SCREEN DEMON ; to discard any console interrupt events. They will not be passed ; to the host program, and SCREEN DEMON will not terminate the process. ; This is an easy way to prevent operators from aborting out of ; programs that cannot defend themselves. IGNORE_CONSOLE_INTERRUPTS? NO ;How should SCREEN DEMON compensate for the ^C^x character sequence ; echoed whenever the operator presses a console interrupt? ; ; The ^C^x sequence normally echoed whenever a console interrupt ; is pressed is not visible to SCREEN DEMON. Consequently, SCREEN ; DEMON does not know where those echoed characters appeared on the ; screen. By default, SCREEN DEMON will update its image buffers ; to reflect the ^C^x characters by assuming that they are located ; immediately before the cursor position. However, if a display ; was occurring at the time, it is possible for this assumption to ; be incorrect. In order to definitely resynchronize the screen ; with SCREEN DEMON's internal picture, a redraw is necessary, but ; this can be annoying if done automatically; the Redraw hot key ; is available to force a redraw only when necessary. ; ; Select one of the following choices to answer this question: ; INTR_ERASE Immediately space over the ^C^x, assuming that ; the cursor is just past the sequence, leaving ; the cursor at its original position as if ^C^x ; had never been displayed. ; ; INTR_REDRAW Redraw the screen at the next flush to remove ; the ^C^x. This was the method used by rev 2.01.05 ; ; INTR_ECHO Update the ^C^x into the internal image buffers, ; assuming that the cursor is just past the sequence, ; leaving the cursor past the sequence. ; ; INTR_NOTHING Ignore the ^C^x sequence. ; CONSOLE_INTERRUPT_HANDLING? INTR_ECHO ;NOTE: The COBOL versions of the Print Screen hot key routine do not ; use the answers to the following two SDSCREENPRINT... questions, ; but the LINKED SDSCREENPRINT version does. ;Should the SCREEN DEMON Print Screen hot key routine ask the user ;for an output filename? ; ; Answer this question YES to allow the operator to specify a ; print destination for the screen image, with the default ; shown below as SDSCREENPRINT_OUTPUT_NAME. If this question ; is answered NO, then the operator will not be asked for an ; output filename, and the screen image will be printed to the ; default output filename as specified below. SDSCREENPRINT_ASK_OUTPUT_NAME? YES ;Default output filename for the SCREEN DEMON Print Screen hot key routine: SDSCREENPRINT_OUTPUT_NAME? .TXT "@LPT" ;Should the SCREEN DEMON Read Mail hot key routine ask the user ;for an output filename when the Print option is selected? ; ; Answer this question YES to allow the operator to specify a ; print destination for the printed message, with the default ; shown below as SD_READ_MAIL_OUTPUT_NAME. If this question ; is answered NO, then the operator will not be asked for an ; output filename, and the message will be printed to the ; default output filename as specified below. SD_READ_MAIL_ASK_OUTPUT_NAME? YES ;Default output filename for the SCREEN DEMON Read Mail hot key routine ; when the Print option is selected: SD_READ_MAIL_OUTPUT_NAME? .TXT "@LPT" ;Should SCREEN DEMON mail messages  be deleted automatically after ;the operator has read them? ; ; Answer this question YES to force mail messages to be deleted ; automatically after the operator has acknowledged reading them. ; If this question is answered NO, previously read messages will ; remain in a user's inbox until deleted by the user. SD_READ_MAIL_AUTO_DELETE? NO ;Should SCREEN DEMON mail messages always be delivered immediately, ;whether or not they are marked as Urgent? ; ; Answer this question YES to force mail messages to appear ; immediately on the recipient's screen, even messages that ; are not Urgent. If this question is answered NO, only ; Urgent messages will appear immediately. Normal messages ; will simply trigger the Mail Indicator; the user must press ; the Read Mail hot key to view these messages. SD_IMMEDIATE_MAIL_DELIVERY? NO ;Declare the default sizes returned by the SD_GET_IMAGE and ; SD_GET_IMAGE_BELOW_FLOAT calls. ; ; Previous revisions of Screen Demon returned a 24 line by 80 column ; image, followed by 4 more bytes containing the cursor offset and ; global attribute settings. For rev 3.00, the internal screen images ; are 24x162, and there are a number of additional fields following the ; image. Existing programs will be expecting the smaller image style ; if they are simply relinked with rev 3.00 Screen Demon. However, if ; a program is recompiled, it may or may not want the older image format. ; If the program defines its image buffer using the SDIMAGE.DEF or ; SCREEN_DEMON.H include files, then a recompile without source code ; changes results in the program expecting the new larger image format. ; However, if the image definition is hard-coded, then the program will ; still expect the older image format even after recompilation. Thus, ; this configuration file option is provided to allow the system ; manager to decide which is the most appropriate default behavior for ; the Get Image calls. Note that a specific Get Image call can declare ; the actual size of image buffer it wants; this overrides the default ; setting defined here. ;Default number of lines in returned image buffers SD_GET_IMAGE_DEFAULT_LINES? 24 ;Default number of columns in returned image buffers ; For rev 3.00 compatibility, specify 162 ; For rev 2.01 (and before) compatibility, specify 80 ; SD_GET_IMAGE_DEFAULT_COLUMNS? 162 ;Default size in bytes of additional parameters returned ; following the image characters and attributes ; For rev 3.00 compatibility, specify 14 ; For rev 2.01 (and before) compatibility, specify 4 ; ;Default additional parameters return size in bytes SD_GET_IMAGE_DEFAULT_PARAMS? 14 ; The functionality of the SD_RETURN_INPUT call was enhanced in ; revision 3.51. In previous revisions, this call functioned only ; in a program or subroutine invoked by pressing a hot key; the string ; of characters specified with this call was returned to the input field ; where the hot key was pressed. ; ; Beginning with revision 3.51, the specified string will be placed in the ; next encountered input field, whether or not a hot key is active. In ; addition, the string can contain multiple fields, separated by delimiters. ; At an input, the next chunk of the return input string will be loaded into ; the field as if the operator had entered it. If a delimiter follows the ; chunk, the input will be terminated as if the operator had pressed that ; key. This process is repeated at subsequent inputs until the contents of ; the return input string have been exhausted. ; ; Since this new functionality is potentially incompatible with that of ; older revisions, a configuration option is provided to allow the desired ; mode of operation to be specified. The new method will be incorrect in ; the situation where a hot key program calls SD_RETURN_INPUT, but then ; does an input before exiting. With the old method, this input would be ; unaffected by the SD_RETURN_INPUT call. With the new method, the returned ; characters would appear at that input, rather than the input field where ; the hot key was pressed. If you have programs that exhibit this behavior, ; you will need to modify them or set the following configuration option to ; "hot key only" mode. Otherwise, the new method should be satifactory. ; ; Choose the answer to the following question from this list of options: ; RI_HOT_ONLY SD_RETURN_INPUT valid only in hot key ; routines; the returned string is loaded ; into the field where the hot key was pressed. ; (Pre-revision 3.51 functionality) ; ; RI_ANY_INPUT SD_RETURN_INPUT works at any time; the ; returned string is loaded into the next ; encountered input field(s), and multiple ; input fields can be returned. ; (revision 3.51 functionality) ; ; Should the SD_RETURN_INPUT call function only to return input information ; from a hot key call to the input field where the hot key was pressed, or ; should return strings declared with this call be available at the next ; encountered input field(s)? SD_RETURN_INPUT_MODE? RI_ANY_INPUT ;default is new method ;If multiple character sets are to be used by programs running under ; SCREEN DEMON, a character set palette must be specified that ; lists the particular character sets to be used. SCREEN DEMON ; supports up to 8 simultaneously displayed character sets. ; Note that only some DG terminals support multiple character sets. ; ; Specify the character sets that will be invoked by listing their ; two-character codes, which can be found in the terminal's programming ; manual. The first code in the list should be the standard primary ; character set to be used (the code 00 is suggested, which is the set ; of the keyboard attached to the terminal). The order of the remaining ; codes is unimportant. If less than eight codes are listed, the default ; settings will be used for the unspecified palette slots. ; ; For example, (this is also the default palette) ; ; CHAR_SET_PALETTE 00,10,11,0>,01,02,13,20 ; ; specifies that the following character sets are available: ; '00' char set #0 (primary) is Keyboard set ; '10' char set #1 is Word Processing set ; '11' char set #2 is Line Drawing set ; '0>' char set #3 is DG International set ; '01' char set #4 is U.S. set ; '02' char set #5 is United Kingdom set ; '13' char set #6 is DG Special Graphics set ; '20' char set #7 is DLL set 0 ;Indicate your desired character set palette here: CHAR_SET_PALETTE 00,10,11,0>,01,02,13,20 ;Which of the sets listed in the palette above should be the default ; primary set? DEFAULT_PRIMARY_CHAR_SET? 00 ;Which of the sets listed in the palette above should be the default ; alternate set? DEFAULT_ALTERNATE_CHAR_SET? 10 ;For terminals that support selectable 7/8 bit mode, what should be ; the default character length? ; ; Most Data General terminals that support multiple character sets ; also support either 7 or 8 bit mode. When in 7-bit mode, the high ; bit is a parity bit, so the terminal only looks at the lower 7 bits ; when determining what character to display, and the character is ; always selected from the currently active character set. When in ; 8-bit mode, all bits are significant. If the high bit for a received ; character is set, the terminal will display the character from the ; current alternate character set even if the primary set is active ; at the time. ; ; This question allows the default setting for this parameter to be ; specified. Screen Demon will force the terminal into this state ; on start-up. ; ; This question should be answered with a value of either 7 or 8. DEFAULT_7_OR_8_BIT_MODE? 7 ;For terminals that support selectable keyboard language, what should be ; the default setting? ; ; When the terminal is operating in 7-bit mode (see above), this ; parameter is ignored, and the keyboard language matches the ; keyboard hardware. When in 8-bit mode, the keyboard language ; can also be set to be the US ASCII character set for 7-bit ; characters, and the DG Inter national character set for 8-bit ; characters. This may be necessary if the SPCL key is to be ; used to generate particular 8-bit characters. ; ; Select one of the following choices to answer this question: ; KEYBD_LANG_HARDWARE Matches the keyboard hardware ; KEYBD_LANG_INTERNATIONAL US ASCII in K0, DG International in K1 DEFAULT_KEYBOARD_LANGUAGE? KEYBD_LANG_HARDWARE ;For terminals that support variable cursor types, what should be ; the default cursor type? ; ; The more advanced Data General terminals support different cursor ; types. On newer terminals, the default cursor type can be adjusted ; in the set-up screens. There is also a local cursor type key on ; the keyboard. Screen Demon cannot determine the current cursor type ; of the terminal, so it must force the cursor to a particular type ; when a Redraw occurs. The desired default cursor type can be ; indicated here. ; ; Select one of the following choices to answer this question: ; CURSOR_INVISIBLE No cursor ; ; CURSOR_BLINK_UNDERSCORE Cursor is a blinking underscore ; ; CURSOR_BLOCK Cursor is a reverse video block ; ; CURSOR_BLINK_BLOCK Cursor is a blinking reverse ; video block ; ; CURSOR_UNDERSCORE Cursor is a nonblinking underscore ; (not supported on older terminals) ; DEFAULT_CURSOR_TYPE? CURSOR_BLOCK ;For terminals that support adjustable scroll rates, what should be ; the default scroll rate? ; ; The more advanced Data General terminals support different scroll ; rates. On newer terminals, the default scroll rate can be adjusted ; in the set-up screens. There is also a local scroll rate key on ; the keyboard. Screen Demon cannot determine the current scroll rate ; of the terminal, so it must force the scroll rate to a particular ; setting when a Redraw occurs. The desired default scroll rate can be ; indicated here. ; ; Select one of the following choices to answer this question: ; SCROLL_JUMP As fast as new lines are received ; ; SCROLL_SMOOTH_SLOW Smooth scroll, 5 lines per second ; ; SCROLL_SMOOTH_FAST Smooth scroll, 10 lines per second ; DEFAULT_SCROLL_RATE? SCROLL_JUMP ;Initial command string for SD_CLI_INTERFACE hot key routine: ; (can be changed at runtime using the SD_SET_CLI_INIT_CMD call) SD_DEFAULT_CLI_INIT_CMD? .TXT "PREFIX,SCREEN,DEMON,CLI[!ASC 251]" ;Pathname of the CLI program to be called for CLI interface. ; If CLI32 is available, you may wish to change the pathname ; below to call that instead. Alternatively, you may want ; to call SD_CLI, if you have created a Screen Demon possessed ; version of CLI32. SD_CLI_PATHNAME? .TXT ":CLI" ;Screen Demon can maintain a list of the most recently entered ; input strings. This is similar to the HISTORY feature in CLI32, ; but Screen Demon's input history works at all input fields in ; any program. A separate input history is kept for each process. ; ; The input history is accessed via two hot key routines, which ; can be assigned to any two different keys on the keyboard. ; The hot key routine SD_GET_PREV_FROM_INPUT_HISTORY moves backward ; in the history list, displaying the input strings in the current ; input field each time the hot key is pressed. The hot key routine ; SD_GET_NEXT_FROM_INPUT_HISTORY works the same way, except that it ; moves forward through the history list. Both routines wrap around ; to the other end of the list when necessary. ; ; To maintain the input history, a buffer must be allocated where ; the input strings can be stored. Obviously, a larger buffer means ; more available input history. Unlike CLI32 HISTORY, where the ; history size is specified in lines, for Screen Demon's input history ; buffer, the size is specified in characters. If the input history ; feature is not desired, set the buffer size to zero. INPUT_HISTORY_BUFFER_SIZE? 0 ;default is no history ;Screen Demon can maintain a copy of text that has recently been scrolled ; off the top of the screen, or cleared because of a form feed command. ; These lines are kept in a "scrollback" buffer. When the buffer becomes ; full, the oldest lines are discarded to make room for new additions. ; ; The scrollback buffer can be examined via the hot key routine ; SD_SHOW_SCROLLBACK_BUFFER, which can be assigned to any key on ; the keyboard. While viewing the scrollback buffer, press UP ARROW ; to move upward and see earlier lines, or press DOWN ARROW to move ; downward and see text that scrolled off more recently. ; ; The scrollback buffer will be allocated at runtime. The size ; of this buffer is declared in characters. Screen Demon will keep ; as many complete scrollback lines in this buffer as will fit; ; the actual number of lines stored will depend on the average line ; length. If the scrollback feature is not desired, set the buffer ; size to zero. SCROLLBACK_BUFFER_SIZE? 0 ;default is no scrollback buf ;First part of pathname to user notepad files. A complete pathname to a ;user's notepad file is formed by taking the prefix string specified here ;(usually a directory pathname), appending the user's name, and then the ;string given below under PAD_PATH_SUFFIX. PAD_PATH_PREFIX? .TXT ":UDD:" ;Name extension of notepad file ready to be appended to Prefix/Username ;combination as described above. PAD_PATH_SUFFIX? .TXT ":NOTEPAD" ;Maximum size, in bytes, of a console logging file. MAX_CONLOG_SIZE? 65536 ;If Screen Demon should maintain a clock on the screen to display ; the current date, time, etc., describe the position, size, ; and format of this clock below. If no clock format string ; is specified, Screen Demon will not link the clock routine ; into your programs. ; ; ;Format string definitions: ; ; SD_FLOAT_CLOCK_FORMAT? ; .TXT "string" ; ; The text in the given string is displayed exactly except for ; constructs beginning with a percent sign (%). The character ; or characters following the percent sign indicate what parameter ; is to be displayed in place of the construct. In the list below, ; the examples of what would be displayed are based on the example ; point in history of 18-DEC-90 at 3:05 pm ; ; %% display a single percent sign ; % display a space. Use this in order to ; specify sequences of more than one SPACE, ; because " " looks like only one SPACE ; to the config file builder, but "% % % " ; will be seen as three consecutive SPACE ; characters. ; %cn display the upper two digits of complete year ; (e.g., 19) ; %yr display the lower two digits of complete year ; (e.g., 90) ; %mo display the month number within the year (e.g., 12) ; %nm display the full name of the month (e.g., December) ; %am display the abbreviated month name (e.g., Dec) ; %da display the day number within the month (e.g., 18) ; %nd display the full name of the day (e.g., Tuesday) ; %ad display the abbreviated day name (e.g., Tue) ; %hr display the hour in 12-hour format (e.g., 3) ; %mh display the hour in 24-hour format (e.g., 15) ; %mi display the minutes within the hour (e.g., 5) ; %ap display appropriate am/pm indicator (e.g., pm) ; ; ; For names, abbreviations, and the am/pm indicator, the case of ; the first character of the format specifier indicates the case ; of the first character of the displayed string. The case of the ; second character of the format specifier indicates the case of ; the remaining characters of the displayed string. ; e.g. %nm --> december ; %Nm --> December ; %NM --> DECEMBER ; ; For format specifiers that result in numeric displays, the case ; of the specifier is ignored. However, for these specifiers, ; a `0' character can be placed between the `%' character and the ; two-character code; this indicates that a leading zero should be ; included if necessary to pad the number out to two digits. ; e.g. %hr:%mi %ap --> 3:5 pm ; %hr:%0mi %ap --> 3:05 pm ; %0mh%0mi --> 1505 ; ; ; Note that screen control characters can be included in the ; format string if  desired. See MAIL_INDICATOR above for ; information about these characters. ; ; As a more complex example, the format string ; "% It is now %hr:%0mi %ap on %Nd % %Nm %da, %cn%yr" ; would display the following underlined clock output: ; It is now 3:05 pm on Tuesday December 18, 1990 ; which would be updated at each input, and periodically ; during an input based on the time value indicated for ; the PERIODIC_INTERVAL? question above. ; ; ;Describe your desired clock format below. ; Leave this question blank if you do not want Screen Demon ; to display a clock. Otherwise, specify a format string ; of the form ; .TXT "string" ; following the label below: SD_FLOAT_CLOCK_FORMAT? ;default is no clock ;Specify the position and size of the clock on the screen. Note that ; the answers to the next four questions are ignored if the answer ; to the SD_FLOAT_CLOCK_FORMAT? question above is blank. The values ; shown here would match a Clock Format of "%mh:%0mi" SD_FLOAT_CLOCK_LINE? 1 SD_FLOAT_CLOCK_COLUMN? 76 SD_FLOAT_CLOCK_HEIGHT? 1 ;height in lines SD_FLOAT_CLOCK_WIDTH? 5 ;width in columns ;The names used by Screen Demon for months and weekdays are listed below. ; These lists can be modified to support languages other than English. ; Note that each of the two lists must appear on a single line, all ; names must be specified in uppercase, and there must be a vertical ; bar character (|) following each name in each of the lists. SD_MONTH_NAMES? .TXT "JANUARY|FEBRUARY|MARCH|APRIL|MAY|JUNE|JULY|AUGUST|SEPTEMBER|OCTOBER|NOVEMBER|DECEMBER|" SD_WEEKDAY_NAMES? .TXT "SUNDAY|MONDAY|TUESDAY|WEDNESDAY|THURSDAY|FRIDAY|SATURDAY|" ;Under either the Interactive COBOL or Shared Library versions ; of SCREEN DEMON, all user programs will access the same copy ; of SCREEN DEMON, causing all programs to be treated alike. ; Since there will probably be some programs that should not ; be run with full Turbo Display, for example, this ; configuration file allows "special" programs to be declared. ; In this way, programs with special requirements will be ; automatically recognized and handled appropriately by SCREEN ; DEMON when they execute; all other programs will run normally. ; ; One of the special requirements that may be declared is Turbo ; Display level. While the majority of user programs will perform ; best with Full Turbo, there may be a few situations where ; No Turbo might need to be selected. For compatibility with ; Screen Demon rev 2.01, Partial Turbo is still available, but ; is strongly discouraged because of the performance penalty. ; ; Also, if the automatic logoff feature is enabled (see ; LOGOFF_INTERVAL above), there may be critical programs that ; shouldn't be terminated, no matter how long an operator lets ; them remain idle. These programs can be declared in the ; Special Programs list below to protect them from the automatic ; logoff handler. ; ; In rare cases, it may be appropriate to have SCREEN DEMON turn ; itself off while a particular program runs. This can be ; accomplished by declaring these programs as BYPASS in the ; Special Programs list. ; ; There may be some programs where hot keys are not desirable, ; such as a logon program. Since hot keys could allow access ; to application programs before a user had entered a name and ; password, it might be wise to disable hot keys while the ; logon program is running. This can be accomplished by declaring ; such programs as NO_HOT_KEYS in the Special Programs list. ; ; By listing a program in the Special Programs list with the LOG ; option, console event logging will automatically activate whenever ; that program is running. This eliminates the need to use SPY to ; watch for someone to run the program, and then manually start ; Logging on that console. ; ; ; Entries in the Special Programs list are lines of the form: ; Keyword programname1,programname2,...,programnameN ; ; The possible Keywords are ; PARTIAL_TURBO ; NO_TURBO ; NO_LOGOFF ; BYPASS ; LOG ; NO_HOT_KEYS ; ; There may be any number of entries in the list. A program ; can appear in more than one entry if it has more than one ; special attribute. The only restrictions are that each line ; must begin with one of the above keywords, and that the program ; names must be simple filenames without the .PR or .PD extension ; (pathnames or pathname fragments are not allowed). ; ; For example, ; BEGIN_SPECIAL_PROGRAMS ; PARTIAL_TURBO CSMNUPRT,CSOPRPRT ; NO_TURBO CSDBFM4 ; PARTIAL_TURBO CSLOGUPD ; NO_LOGOFF CSLOGUPD, CSDBFM4 ; NO_HOT_KEYS CSLOGON ; END_SPECIAL_PROGRAMS ; declares that the programs called CSMNUPRT, CSOPRPRT, and ; CSLOGUPD are to be run in Partial Turbo, while the program ; called CSDBFM4 must be run with Turbo Display completely off. ; All other programs run at the default Turbo setting, probably ; Full. In addition, the programs called CSLOGUPD and CSDBFM4 ; are immune to automatic logoff, and while the program CSLOGON ; is running, hot keys are disabled. BEGIN_SPECIAL_PROGRAMS ;This line (and the END_SPECIAL_PROGRAMS below) must ; exist even if there are no special programs defined. ;Put special program declarations here END_SPECIAL_PROGRAMS ;Titles used for the various Screen Demon pop-up functions. Note that ; control characters cannot be included in these title strings. ;Main menu - SD_MAIN_MENU: SD_MAIN_MENU_TITLE? .TXT " SCREEN DEMON Menu " ;Note: The <60> and <62> characters in the string below are `<' and `>', ; respectively. They must be expressed in numeric form because these ; are special characters for the .TXT assembler pseudo-op. SD_MAIN_MENU_FOOTER? .TXT " <60>NL<62> to select" ;Notepad - SD_NOTEPAD: SD_NOTEPAD_TITLE? .TXT " SCREEN DEMON Notepad " ;Print Screen - SDSCREENPRINT: SDSCREENPRINT_TITLE? .TXT " SCREEN DEMON Screen Print " ;Calculator - SDCALCULATOR ; There are two title lines for the calculator, each of which ; may be up to 16 characters long. SDCALCULATOR_TITLE_ONE? .TXT "SCREEN DEMON" SDCALCULATOR_TITLE_TWO? .TXT " Calculator" ;Also store these titles in PutValue space so that COBOL programs ; can get to them: PUT_VALUE SDCALCULATOR_TITLE_ONE PUT_VALUE SDCALCULATOR_TITLE_TWO ;Calendar - SDCALENDAR: SDCALENDAR_TITLE? .TXT " SCREEN DEMON Calendar " ;Also store this title in PutValue space so that COBOL programs ; can get to it: PUT_VALUE SDCALENDAR_TITLE ;Read Mail - SD_READ_MAIL: SD_READ_MAIL_TITLE? .TXT " SCREEN DEMON Read Mail " ;Input (Send) Mail - SD_INPUT_MAIL: SD_INPUT_MAIL_TITLE? .TXT " SCREEN DEMON Send Mail " ;Turbo Control - SD_COMMAND: SD_COMMAND_TITLE? .TXT " SCREEN DEMON Turbo Control " ;Request a chunk of unshared memory of a specified size in pages (2 KB) ; to be reserved for initial Screen Demon memory allocation operations. ; Screen Demon will use memory from this chunk until it is exhausted, ; and only then will it resort to a temporary shared memory file. The ; default size of 24 is sufficient for program start-up needs and the ; initial window, but not for additional pop-up windows. Note that ; excessively large values for this parameter may require that a ; larger KTOP or MTOP be declared at LINK time. This parameter can ; be set to zero to save space in the .PR file, at the expense of ; increased program start-up time. ; ; NOTE: This parameter should be set to zero for ICOBOL revision 1.60 ; and below; unpredictable errors may occur otherwise. ;Default SD_MEM initial chunk size in pages: SD_MEM_SIZE 24 ;The following section applies primarily to CEO environments, but may ; be applicable to other shared console / multiple program situations. ; ; If some of the CEO programs, such as CEO_CP, have been possessed ; with Screen Demon, but others, such as CEO_WP, have not, then special ; handling is required to keep the terminal screen up-to-date. ; In this situation, the integrated programs transfer control of the ; console between each other by means of IPC messages. Screen Demon ; will need to Q monitor these messages, since the console parameters ; (characteristics, etc.) may need to be reset and the screen redrawn ; when an IPC message is received from a non-Screen Demon process to ; return control of the console to a Screen Demon program. However, ; there is other IPC message traffic to/from the CEO agents, such as ; CEO_POA, that can be safely ignored, since these processes will not ; affect the console. ; ; When running in a shared console environment, such as CEO, what ; special handling, if any, needs to occur for IPC messages? ; ; Possible answers to this question are ; SHCON_IPC_IGNORE No special handling ; SHCON_IPC_FLUSH Flush to make sure screen is up-to-date ; before processing the message ; SHCON_IPC_RESET Flush before processing the message, and ; reset console environment (characteristics, ; etc.) after a message is received ; SHCON_IPC_REDRAW Same as RESET plus redraw the screen after ; a message is received ; ; The SHCON_IPC_REDRAW answer is suggested in the CEO environment as ; described above. The IGNORE response should be used if your application ; runs in a shared console environment, and uses IPC messages, but not for ; the purpose of transferring control of the console between processes. ; Screen Demon rev 3.00.03 always used the RESET option. ; ; Answer the following question with one of the above responses: SHARED_CONSOLE_IPC_HANDLING? SHCON_IPC_RESET ;Default is same as rev 3.00.03 ;If IPC messages are not ignored in this situation (i.e., the above question ; was not answered with SHCON_IPC_IGNORE), then you may wish to specify the ; names of server processes that will not affect the console. IPC traffic ; to/from these processes can be ignored. ; ; Determine the full process names for each of the processes that are to ; be ignored. A full process name consists of a username, followed by a ; colon character, followed by the simple process name. The CLI WHO command ; shows this information. For example: ; ) WHO 15 ; PID: 15 CEO_MGR CEO_POA :UTIL:CEO_DIR:CEO_POA.PR ; ^ ^ ; | | ; username simple process name ; ; Declare that IPC messages to/from a process are to be ignored using ; the SHCON_IPC_IGNORE_IF_FROM command. For example, the following ; is suggested if your CEO environment is as described previously: ; ; SHCON_IPC_IGNORE_IF_FROM CEO_MGR:CEO_POA ; SHCON_IPC_IGNORE_IF_FROM CEO_MGR:CEO_FSA ; SHCON_IPC_IGNORE_IF_FROM CEO_MGR:CEO_CSA ; SHCON_IPC_IGNORE_IF_FROM CEO_MGR:CEO_QMA ; SHCON_IPC_IGNORE_IF_FROM CEO_MGR:CEO_NSA ; SHCON_IPC_IGNORE_IF_FROM CEO_MGR:CEO_LOG ; SHCON_IPC_IGNORE_IF_FROM CEO_MGR:CEO_OP ; SHCON_IPC_IGNORE_IF_FROM CEO_MGR:CEO_GPN_1 ; ; There may be any number of these commands, but only one process name can ; be specified per command. You do not need to specify any of these commands ; if this situation does not apply to your system. ; ; Specify any processes whose IPC messages are to be ignored when running ; in a shared console environment: ;none by default ; Custom user configuration data can also be stored in this file. There ; is no limit to the amount or type of information that can be included. ; User programs can retrieve this data using the SD_GET_VALUE call. ; ; The general format of user-defined configuration options is as follows: ; ; label: ; .TXT "value" ; ; PUT_VALUE label ; ; ; where 'label' is an identifier for the data item, and 'value' is the ; actual data itself. ; ; 'label' must consist only of letters, digits, and the special characters ; underscore (_), question mark (?), period (.), and dollar sign ($). ; The first character cannot be a digit. The exact name of 'label' must ; be known to a user program in order to retrieve the 'value' using ; SD_GET_VALUE. ; ; 'value' can be any string of ASCII characters. Control characters can ; be included by enclosing their decimal value within <>. ; ; For examples, see the declarations of the SDCALCULATOR and SDCALENDAR ; title strings elsewhere in this configuration file. ; ; Include any custom configuration options here: ;The following must be the last statement in this file (except for the .END) END_CONFIGURATION .END .@&hX'Hr'Hr( NAMTB.OB   NAMTB# #&NAMTB_PARTNAMTB_NAMES_PARTe     '7Nf w      (0K\j   ": LY hs z  + 9 COg y   )D[p+? P ] j v ?CBADDR?CBBADDR?CBPEEK?CBPOKE?CBSYSSD_ACTIVE_WINDOWSD_BITS_TO_DIGITSSD_BYPASS_OFFSD_BYPASS_ONSD_CLI_CMDSD_CLI_INTERFACESD_COMMANDSD_CONTROLSD_CREATE_WINDOWSD_CREATE_WINDOW_NO_BOXSD_CREATE_WINDOW_NO_INITSD_DIGITS_TO_BITSSD_DISABLESD_DISABLE_HOT_KEYSSD_DISCARD_TYPE_AHEADSD_DISPLAYSD_DISPLAY_INTO_STRINGSD_DRAW_BOXSD_DRAW_HLINESD_DRAW_VLINESD_ENABLESD_ENABLE_HOT_KEYSSD_ERROR_MESSAGESD_FLOAT_WINDOWSD_FLUSHSD_GET_ACCEPT_CURSOR_OFFSETSD_GET_ACCEPT_POSSD_GET_CONTROLSD_GET_CONSOLE_DEVICE_NAMESD_GET_CONSOLE_STATUSSD_GET_HOT_CALLED_FROM_NAMESD_GET_IMAGESD_GET_IMAGE_BELOW_FLOATSD_GET_NEXT_WINDOW_VIEWSD_GET_POSSD_GET_TERMCAPSSD_GET_USER_IDSD_GET_VALUESD_GET_WINDOW_DESCRIPTORSD_GET_WINDOW_VIEWSD_INPUT_MAILSD_INPUT_STRINGSD_LOAD_TIBSD_MENUSD_MESSAGESD_MESSAGE_ONLYSD_MOVE_WINDOW_DOWNSD_MOVE_WINDOW_LEFTSD_MOVE_WINDOW_RIGHTSD_MOVE_WINDOW_UPSD_NEW_WINDOWSD_NEW_WINDOW_NO_INITSD_NEW_WINDOW_VIEWSD_NOTEPADSD_OBTAIN_INPUTSD_POP_UP_MENUSD_PROC_PRSD_PUT_VALUESD_PUT_WINDOW_DESCRIPTORSD_PUT_WINDOW_VIEWSD_READ_CHARSD_READ_CHAR_ONLYSD_READ_MAILSD_REDRAWSD_REMOVE_WINDOWSD_RETURN_INPUTSD_SCROLL_WINDOW_DOWNSD_SCROLL_WINDOW_LEFTSD_SCROLL_WINDOW_RIGHTSD_SCROLL_WINDOW_UPSD_SEND_MAILSD_SET_ACCEPT_CURSOR_OFFSETSD_SET_ACCEPT_LOWERCASESD_SET_ACCEPT_TIMEOUTSD_SET_ACCEPT_UPPERCASESD_SET_AND_LOCK_USER_IDSD_SET_CLI_INIT_CMDSD_SET_LOGOFF_INTERVALSD_SET_SECONDARY_PROGRAM_NAMESD_SET_USER_IDSD_SET_WINDOW_POSITIONSD_SET_WINDOW_SIZESD_SUSPEND_WINDOWSD_SYS_ERROR_MESSAGESD_TEMPLATE_MATCHSD_TOP_WINDOWSD_TURBO_FULLSD_TURBO_OFFSD_TURBO_ONSD_TURBO_PARTIALSD_TURBO_RESETSD_UNLOCK_USER_IDSD_USER_IDSD_RING_7_SYSCALL_OKSD_RING_7_SYSCALL_ERRORSD_DIRECT_OUTPUTz 0?[pSD_CLONE_WINDOWSD_RESTORE_WINDOW_FROM_CLONESD_SET_LINEDRAW_STYLESD_SET_BOX_FILL_STYLESD_GET_DELIMITER_TABLESD_SET_DELIMITER_TABLESD_EXTENDED_READ_CHARSD_ASK_QUESTIONWHO_LOCKED_IT?SD_DRAW_UNDERLINE NAMTB  ?CBADDR   ?CBBADDR     ?CBPEEK     ?CBPOKE     ?CBSYS"  SD_ACTIVE_WINDOW*  SD_BITS_TO_DIGITS<  'SD_BYPASS_OFFN  .SD_BYPASS_ON \  5SD_CLI_CMD$j  ;SD_CLI_INTERFACE(v  DSD_COMMAND,  JSD_CONTROL 0 ! PSD_CREATE_WINDOW"4 # YSD_CREATE_WINDOW_NO_BOX$8 % eSD_CREATE_WINDOW_NO_INIT&< ' rSD_DIGITS_TO_BITS(@ ) {SD_DISABLE*D + SD_DISABLE_HOT_KEYS,H - SD_DISCARD_TYPE_AHEAD.L / SD_DISPLAY0P, 1 SD_DISPLAY_INTO_STRING2T8 3 SD_DRAW_BOX4XP  5 SD_DRAW_HLINE6\\ !7 SD_DRAW_VLINE8`j "9  SD_ENABLE:dx #; SD_ENABLE_HOT_KEYS<h $= SD_ERROR_MESSAGE>l %? SD_FLOAT_WINDOW@p &A  SD_FLUSHBt 'C SD_GET_ACCEPT_CURSOR_OFFSETDx (E SD_GET_ACCEPT_POSF| )G SD_GET_CONTROLH *I SD_GET_CONSOLE_DEVICE_NAMEJ +K SD_GET_CONSOLE_STATUSL ,M SD_GET_HOT_CALLED_FROM_NAMEN2 -O 'SD_GET_IMAGEPN .Q .SD_GET_IMAGE_BELOW_FLOATR\ /S ;SD_GET_NEXT_WINDOW_VIEWTv 0U GSD_GET_POSV 1W MSD_GET_TERMCAPSX 2Y USD_GET_USER_IDZ 3[ ]SD_GET_VALUE\ 4] dSD_GET_WINDOW_DESCRIPTOR^ 5_ qSD_GET_WINDOW_VIEW` 6a {SD_INPUT_MAILb 7c SD_INPUT_STRINGd 8e SD_LOAD_TIBf 9g  SD_MENUh  :i SD_MESSAGEj( ;k SD_MESSAGE_ONLYl4 <m SD_MOVE_WINDOW_DOWNnD =o SD_MOVE_WINDOW_LEFTpX >q SD_MOVE_WINDOW_RIGHTrl ?s SD_MOVE_WINDOW_UPt @u SD_NEW_WINDOWv Aw SD_NEW_WINDOW_NO_INITx By SD_NEW_WINDOW_VIEWz C{ SD_NOTEPAD| D} SD_OBTAIN_INPUT~ E SD_POP_UP_MENU F SD_PROC_PR G SD_PUT_VALUE H  SD_PUT_WINDOW_DESCRIPTOR I SD_PUT_WINDOW_VIEW, J  SD_READ_CHAR@ K 'SD_READ_CHAR_ONLYN L 0SD_READ_MAIL ` M  7SD_REDRAWn N `+I`, P`-Z`.i`/|`0`1`2 `3`4`5 `6`7`8 `9 `:%`;=`< O`=[`> l`? x`@`A`B`C`D`E`F `GSD_INNER_RING_NAMESD_SYSCALL_GATESD_ACTIVE_WINDOWSD_BITS_TO_DIGITSSD_BYPASS_OFFSD_BYPASS_ONSD_CLI_CMDSD_CLI_INTERFACESD_COMMANDSD_CONTROLSD_CREATE_WINDOWSD_CREATE_WINDOW_NO_BOXSD_CREATE_WINDOW_NO_INITSD_DIGITS_TO_BITSSD_DISABLESD_DISABLE_HOT_KEYSSD_DISCARD_TYPE_AHEADSD_DISPLAYSD_DISPLAY_INTO_STRINGSD_DRAW_BOXSD_DRAW_HLINESD_DRAW_VLINESD_ENABLESD_ENABLE_HOT_KEYSSD_ERROR_MESSAGESD_FLOAT_WINDOWSD_FLUSHSD_GET_ACCEPT_CURSOR_OFFSETSD_GET_ACCEPT_POSSD_GET_CONTROLSD_GET_CONSOLE_DEVICE_NAMESD_GET_CONSOLE_STATUSSD_GET_HOT_CALLED_FROM_NAMESD_GET_IMAGESD_GET_IMAGE_BELOW_FLOATSD_GET_NEXT_WINDOW_VIEWSD_GET_POSSD_GET_TERMCAPSSD_GET_USER_IDSD_GET_VALUESD_GET_WINDOW_DESCRIPTORSD_GET_WINDOW_VIEWSD_INPUT_MAILSD_INPUT_STRINGSD_LOAD_TIBSD_MENUSD_MESSAGESD_MESSAGE_ONLYSD_MOVE_WINDOW_DOWNSD_MOVE_WINDOW_LEFTSD_MOVE_WINDOW_RIGHTSD_MOVE_WINDOW_UPSD_NEW_WINDOWSD_NEW_WINDOW_NO_INITSD_NEW_WINDOW_VIEWSD_NOTEPADSD_OBTAIN_INPUTSD_POP_UP_MENUSD_PROC_PRSD_PUT_VALUESD_PUT_WINDOW_DESCRIPTORSD_PUT_WINDOW_VIEWSD_READ_CHARSD_READ_CHAR_ONLYSD_READ_MAILSD_REDRAWSD_REMOVE_WINDOWSD_RETURN_INPUTSD_SCROLL_WINDOW_DOWNSD_SCROLL_WINDOW_LEFTSD_SCROLL_WINDOW_RIGHTSD_SCROLL_WINDOW_UPSD_SEND_MAIL,$`H`I`J`K`L-`M@`gV`Os`P`Q`R`S`T`U `V `W `X `Y`Z `[.`\ ?`]I`^]`_t```a`b`c`d`e`f`h`i)`j7`kH`SD_SET_ACCEPT_CURSOR_OFFSETSD_SET_ACCEPT_LOWERCASESD_SET_ACCEPT_TIMEOUTSD_SET_ACCEPT_UPPERCASESD_SET_AND_LOCK_USER_IDSD_SET_CLI_INIT_CMDSD_SET_LOGOFF_INTERVALSD_SET_SECONDARY_PROGRAM_NAMESD_SET_USER_IDSD_SET_WINDOW_POSITIONSD_SET_WINDOW_SIZESD_SUSPEND_WINDOWSD_SYS_ERROR_MESSAGESD_TEMPLATE_MATCHSD_TOP_WINDOWSD_TURBO_FULLSD_TURBO_OFFSD_TURBO_ONSD_TURBO_PARTIALSD_TURBO_RESETSD_UNLOCK_USER_IDSD_USER_IDSD_RING_7_SYSCALL_OKSD_RING_7_SYSCALL_ERRORSD_DIRECT_OUTPUTSD_CLONE_WINDOWSD_RESTORE_WINDOW_FROM_CLONESD_SET_LINEDRAW_STYLESD_SET_BOX_FILL_STYLESD_GET_DELIMITER_TABLESD_SET_DELIMITER_TABLESD_EXTENDED_READ_CHARSD_ASK_QUESTIONWHO_LOCKED_IT?SD_DRAW_UNDERLINEDUMMY_GATE_CALL SCREEN_DEMON_RING_6.PR .@'Hs'Ht='Ht= SD_ICX_CONFIG.OB  SD_CONFIG6 ## #5 #"C#D ( 4 = J W dn ~SD_MAIN_MENUSD_REDRAWSDSCREENPRINTSD_MAIL_INBOXSD_INPUT_MAILSD_NOTEPADSD_CLI_INTERFACESD_COMMANDpP^p xSD_CONFIG_BASESD_HOT_LINKS_TABLESD_DYNAMIC_CONFIG_FILENAMESD_SPECIFIC_PROGRAM_CONFIG_LOADSD_APPEND_TO_SCROLLBACK_BUFFERSD_SHOW_SCROLLBACK_BUFFER         SD_MAIN_MENU         SD_REDRAW  !"#$ % &'(  ) Redraw Screen*+ , - ./ 0  1 2 SDSCREENPRINT3 456 7  8  9 :;  < |Print Screen=> ? @ AB C DSDCALCULATORE FG  H |CalculatorIJ K L MN O PSD_MAIL_INBOXQ RS TU  V WXY  Z  |Read Mail[\ ] ^ _` va b!SD_INPUT_MAILc #defg !h ijk  l  |Send Mailmn o p qr s t(SD_NOTEPADu *vwxy (z {|}  ~  |Notepad    z  .SD_CLI_INTERFACE 0 .     "|Call CLI    u 7SD_COMMAND 9 7      '|Turbo On/Off    x =SDCALENDAR ?    .|Calendar     3|| j kMailnRemote ViewuRemote Input |G  }~ ~@LPT @LPTPREFIX,SCREEN,DEMON,CLI[!ASC 251] :CLI :UDD: :NOTEPAD4,JANUARY|FEBRUARY|MARCH|APRIL|MAY|JUNE|JULY|AUGUST|SEPTEMBER|OCTOBER|NOVEMBER|DECEMBER|%SUNDAY|MONDAY|TUESDAY|WEDNESDAY|THURSDAY|FRIDAY|SATURDAY|   SCREEN DEMON Menu  to select  SCREEN DEMON Notepad  SCREEN DEMON Screen Print SCREEN DEMON Calculator "SDCALCULATOR_TITLE_ONE   "       . .SDCALCULATOR_TITLE_TWO    .         : : SCREEN DEMON Calendar  FSDCALENDAR_TITLE      F  <     O O SCREEN DEMON Read Mail  \ SCREEN DEMON Send Mail i SCREEN DEMON Turbo Control xx  x))yz 0010110>01021320SD_ALT_EXIT_KEY            SD_HOT_TIMEOUT_INTERVAL                      SD < <              Z    ! " # $ j% & '  ( "k) $* %+ &M, '- (. )n/ +0 ,1 -2 .3 / 4 0u5 2 6 37 48 59 6 : 7; 8< 9= ;> =? ??@ A|A CB EC GD IE KF MG O:H QOI S\J UiK WL YM [~N ]O ^P `Q aR bS czT e[U fV g2W h0X iY j0Z k[ l\ m] n^ o_ q` ra sLb tc ud ve xf zg {h  }i ~~ j k ~l m  n op .@'G`g'HtL'HtL *SDCALCULATOR.DD 00000000000000000000000000SDCALCULATOR  -32  P Calculator Help| F000000000000000000N 00 RE+-x/=* 1240+0000000000000000000000000000000{000000000000000{000000000000000{ 000000000000000{00 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  16SDCALCULATOR_TITLE_ONE SDCALCULATOR_TITLE_TWO SD_ALT_EXIT_KEY DESCEDTABEDDELEDCR ED EDClrEDMemED ^ ED x ED< ED+|-ED >EDFrMED v ED / ED1ED2ED3ED4ED5ED6ED7ED8ED9ED0 ED- ED= ED+ ED.ED EM Press DSPACEE for HelpDSPACEEClear FunctionsEntering DataMemory FunctionsDshiftEMoving the CalculatorMath FunctionsLeaving the Calculator!!!%Exit!%Tape Clear!%Delete Digit!%Return Result48<48<48<48<ACEGACEGACEGAEG4!!1! F! [! v! < 4 8 < 4 8 < 4 +8 9< GAUCaEmGyACEGACEGA EG4444 (F3E3 13E3 M44444444 4 4 4 H 4 The Calculator is controlled from the numeric and cursor keypads. Thesematch the key layout shown on the Calculator, where each key is labeledwith its function. Other keys and their functions are listed to the left.To perform a function, press the indicated key or type the first letter ofthe function name. The Calculator operates like an ordinary hand-heldcalculator, which is somewhat different from a desk-type calculator. See the additional help for the math functions (+ - x / =) for details. For additional information about a particular key, press that key now. Otherwise, press  to return to the Calculator...    When pressed once, this key clears the calculatordisplay. If pressed a second time, the automaticconstant is also cleared, which prepares the calculator for a new calculation.  Pressing this key deletes the last entered digit or decimal point from the display. This key clears all results from the tape display.None of these functions affect Memory. Memories can becan be cleared by storing zero into them.Press any key to return to Main Help screen... +  C   r  Use the numeric keys to enter the digits of  numbers to be used in calculations. Excess digits  will be ignored. If the period (.) key is pressed,   subsequently entered digits will be placed to the right of the decimal point in the display.  Pressing this key causes the sign of the number currently in the display to be changed. Positivenumbers will become negative, and negative numberswill become positive; zero is always positive.Press any key to return to Main Help screen...     H T`    There are ten separate memories, numbered 0 through 9. Copies the number currently in the display into memory number 0. An ( will appear in the display whenever this memory contains a nonzero value.  Copies the number currently in memory number 0 into the display. Same as unshifted versions, except after pressing either of these keys, press a digit from 0 through 9to specify which of the ten memories to access.Press any key to return to Main Help screen... 5 &  3 C   The arrow keys in the cursor keypad can be used to move calculator to a different location on the screen. This may be necessary if a value needed for a calculation was covered up by the calculator when it appeared. The unshifted arrow keys move the entire calculator one position in the direction of the arrow. The shifted arrow keys move the entire calculator several positions in the direction of the arrow. You may move the calculator partially or even completely off the screen if desired.Press any key to return to Main Help screen..."',16 All math functions take two numbers and produce a result. The first number is entered, then the proper math key is pressed, then the second number is entered. The second number isn't known to be complete until another math key is pressed. Then the calculator has the two numbers it needs to evaluate the first math function, and it places the result into the display. The second math function will use this result as its first number, but must wait for its second number to be entered, which means waiting until yet another math key is pressed, and so on. This cycle continues until the special math key 9 is pressed, which completes the pending math function, but doesn't actually perform a function of its own.Press any key to return to Main Help screen...",'9, F1 T6b6 When you exit from the calculator, the calculator will be removed from the screen, and you will be returned to the input field where you originally pressed the Hot Key that accessed the calculator. There are two ways to do this:  Normal exit. Restarts the interrupted input with the contents of the input field unchanged.Return result. Restarts the interrupted input,but the number currently shown in the calculatordisplay is placed into the input field at theposition of the cursor at the time that thecalculator Hot Key was originally pressed.Press any key to return to Main Help screen...   uMMMMMMMMMMMM#.####YRE=+-x/123456789101112SD_SET_SECONDARY_PROGRAM_NAMESD_TURBO_FULLSD_GET_VALUE0SCREEN DEMON Calculator SD_NEW_WINDOWSD_DRAW_BOXSD_GET_WINDOW_VIEWSD_PUT_WINDOW_VIEWSD_NEW_WINDOW_VIEWSD_REMOVE_WINDOWSD_TURBO_RESETN.*X,erDdCcTt|MmFfSD_MOVE_WINDOW_UPSD_MOVE_WINDOW_DOWNSD_MOVE_WINDOW_RIGHTSD_MOV *E_WINDOW_LEFTHhSD_RETURN_INPUTSD_READ_CHAR .@'GV'Ht'HtSD_ICX_INTF.OB  SD_ICX_INTF"C(!/ SD_SHARED_DATA_PARTSD_UNSHARED_DATA_PARTk #(-27=BGLQUX]bglqvz~ /? P]d r|  $ 4 >KPUZ _hp     ".UKILWRLNPWRLNSCRSRRDFDINVALDSPERBLDPCSTOPUSTOPINITINITCCOBOLCHNOPCLLOPA.XITA.STPABORTWUSINGETSWASPRGLDPRGRDPGDWRPGDCNPRSFNPRGGETPDSTATUSC.CCABINPKSCRPKDLMTB..PCDCT..DSA..FCA..ESC..AFC..REF..CUR..DR..P1..P2..RIP..MSKSWTCHINMAP..T0..T1..T2..T3..T4..T5..T6..T7..T8..T9..T10..T11LNBFINIFN..EXC..BAT..KTOSD_MONITOR_STRINGSD_FLUSHSD_NEW_WINDOWSD_REMOVE_WINDOWSD_REMOVE_WINDOW_NO_FLUSHSD_ACTIVE_WINDOWSD_SUSPEND_WINDOWSD_TOP_WINDOWSD_INITSD_INPUT_FIELDSD_GETCHARSD_GETCHAR_ONLYSD_CONSOLE_SET_VIRTUAL_DELIM_TBLHANDLE_SPECIAL_TURBO_SETTINGSD_DISABLESWITCH_TO_SCREEN_DEMON_STACKSD_ABORT_ALL_LOCKSSD_ABORT_HOT_KEY_HOLDSCTRLICTRLICTRL2FLOAT_TOP_WINDOWTOP_WINDOWBOTTOM_WINDOWAWDSCAWOFSAWBUFAWPOSPID_FLAGSCON_PROGCON_PROG_END_PTRNONFN_TBLNONFNB_TBLNONPRT_TBLNULL_TBLACCEPT_TIMEOUTACCEPT_TIMEOUT_RESETINPUT_ERROR_WINDOWSD_WORK_DIR_PATHVIRTUAL_CON_CHARACTERISTICSUPPERCASE_XLAT_TBLCONSOLE_CHANSD.SYSCALLv*  %06I\w>  T  D"d7 L8hZ    &7KZn}    SD_LINKED_WITH_ICX_FLAGcurrent_opcodeSD_ICX_RDFDSD_CALL_ICOBOL_SUBPROGRAMSD_ICX_EXIT_PROGRAMSD_ICX_CALL_PROGRAM_HANDLERSD_ICX_STOP_RUN_HANDLERSD_ICX_ASPRGSD_ICX_LDPRGSD_ICX_ERROR_INVALSD_ICX_ERROR_MPRESD_ICX_ERROR_MMSGSD_ICX_CSTOPSD_ICX_CSTOP_WAITSD_ICX_INITSD_ICX_TERMINATESD_ICX_INTERRUPTSD_ICX_ENTER_DEBUGGERSD_ICX_LEAVE_DEBUGGERSD_ICX_READ_DEBUGGER_COMMANDSD_ICX_VIEW_PROGRAM_SCREENSD_ICX_UPDATE_..KTODEBUG_WINDOWICX_CALL_PROG_WUSIN_OKICX_CALL_PROG_WUSIN_ERRICX_CLLOP_LOADICX_INVAL_CONTINUEICX_CSTOP_CONTINUEICX_CSTOP_AFTER_WAITICX_USTOP_CONTINUEICX_INIT_CONTINUEICX_ASPRG_SUCCESSFULICX_ASPRG_ERRORICX_LDPRG_SUCCESSFULICX_LDPRG_ERRORICX_INITC_FAKE_CTRL_C_CTRL_BICX_ABORTICX_..KTOICX_DEBUG_RESTART_ADDRSD.SD_ICX_INTFUD.SD_ICX_INTFSC.SD_ICX_INTF [&i 5^ @INPUT  I  ) I)I)%)B Ii) HIi) VIinp9r9stvxz|~) Ii) IiD)ʩY )y yiY)/yy Yyi  Yyyi9I)xi9P)I):9Yi IiY9y9PY9)8i MiyIyyIYyy))  ـI Y yY )8 )xxYʙ X )B Ii) HIi) VIi n p)r)s v t x z | ~ ) Ii) Ii yiDG8 Dy)#xY)WN8 "8ــ)x8y)x ـIY ـyx)x8o  mmn *m-n4;*@&GEP&YD`3e4j5o6t,y-~./012((G7* &5i7l7^G ip.^4GEJ^TiFl$rFu8x#}::"* &E&D3456-,./012((G7*  K) 59<?\FKJ ORVH[\bgjn qLubxo| PH\  L yx)x8I#)8ـ yYIYـ IYـy 8y ɉyIyЉ8Y)™  ـy){9y)ցxـ @y 9m) yY8؉Љ y9LYYւxYYւx8iɇSD_ICDEB.PR))) hـ )YN)ـ*8ــyYyI)@I։)I8ــyyy) yY)DY)PxY).YY YyY),9YyyY9YyY8)ЉIYyyyIй9f)ɀx)9) ɀyY)ȋi) Interactive COBOL Debugger   (Use VIEW command provided by SCREEN DEMON to see COBOL program's screen) ЉIYyyyYщY9) ) ɀY)ȋi)9 9 2)92)9)94Y9 9  9399I9 I KBPH MmPnU%[bTgkmnntxL|b NoRf ()Vq ttft$Z'[*Y-0[9tAF!JM[ e iltijhhWh  Lb Jc OQ]c \g j r]xP|\c s&S gyIiix + VIEW)  yyYyi)щщxY9) YIY)9) rk9 > F]LKSTV ]]cK  .@'GX|'Ht'Ht1SD_LOG_SYSCALLS.OB  SD_LOG_SYSCALLS4C&!9!NSD_SHARED_DATA_PARTSD_UNSHARED_DATA_PARTSD_UNINITIALIZED_DATA_PARTDWj   $SD_ACQUIRE_RESOURCESD_RELEASE_RESOURCESWITCH_TO_SCREEN_DEMON_STACKRESTORE_USER_STACKSD_?TLOCKSD_?TUNLOCKSD_CON_DEVICENULL_TBLNONFN_TBLNONFNB_TBLSD_WORK_DIR_PATHSD_SYSCALL_DISPATCH_ADDREXTC_SD_INIT_CALLSEXTC_SD_SHUTDOWN_CALLSSD.SYSCALLbPd|  SD_LOG_SYSCALLS_INITSD_LOG_SYSCALLS_SHUTDOWNSD.SD_LOG_SYSCALLSUD.SD_LOG_SYSCALLSUI.SD_LOG_SYSCALLSSC.SD_LOG_SYSCALLS ?CREATE ?DELETE ?RENAME  ?MEM ?GCHN ?PSTAT ?DPMGR ?RDB  ????? $?WRB (????? ,?GPROC 0?MEMI 4?DELAY 8?INTWT  ?UBLPR? ?PRIPR@ ?SGNLA ?GUNMB ?GSHPTC ?GHRZD ?DIRE ?INITF ?FSTATG ?RELEASEH ?SLISTI ?GLISTJ  ?SYLOGK ?GBIASL ?SBIASM ?IHISTN ?KHISTO $?GNAMEP (?GCPNQ ,?SUSERR 0?SACLS 4?GACLT 8?PNAMEU  4?IDPRI? 8?IDGOTO@ 9YY8y)yyŹy098   (o-o 5o7oDoFoRoTolq  27 Y5y)9 pY9  Y8 8Iy)9 pY9  Y8 8Iy)9 pIY9  Y8 8Iy YY8Iy)I $I):9Y) LII P)yyYYy) 9Yi9Y9YY #2 N] z     <<;;;;| 0 .@'GZ'H}'Ht>1 SD_NO_LANG_RT.OB > SD_NO_LANG_RT  SD.SYSCALL@8Qjp.REQUIRE_LANG_RT_REV_2.30.REQUIRE_LANG_RT_REV_3.10I.INITSC.SD_NO_LANG_RT9.Ɖ9);Program requires LANG_RT: relink without SD_NO_LANG_RT.OB  .@'G\'Ht'Htr;LSD_SWAT_INTF.OB r SD_SWAT_INTF%C!/ SD_SHARED_DATA_PARTSD_UNINITIALIZED_DATA_PARTDSh x  +SD_MEM_ALLOCATESD_NEW_WINDOW_NO_INITSD_REMOVE_WINDOWSD_GETCHARSD_SET_SECONDARY_PROGRAM_NAMESD_GET_HOT_CALLED_FROM_NAMESD_RETURN_INPUTSWITCH_TO_SCREEN_DEMON_STACKRESTORE_USER_STACKSD_FLUSH_IF_NEEDED_JSRICTRLCON_FLAGSTIBTIB_UPD_COUNTEXTC_SD_INIT_CALLS=8M\ kSD_VIEW_TARGET_SCREENSD.SD_SWAT_INTFUI.SD_SWAT_INTFSC.SD_SWAT_INTF x)Y  Y y)xb8֐ـ?Qb8Ciɇ)) xx@yƉYxy@y)♀y@y)♣8щƉ yy)♀) 8 ))<yYIY)X SD_VIEW_TARGET_SCREEN 9$y9)yYx)     * 0 8; > J U Z b g poruowz }           .@'Fov'Hu'HuESDATTRIBUTES.WS  ******************************************************************************* * $Id: sdattributes.ws,v 1.4 1995/07/11 20:51:09 mark Exp mark $ * * $Log: sdattributes.ws,v $ * Revision 1.4 1995/07/11 20:51:09 mark * Updated revision and copyright * * Revision 1.3 1994/03/11 17:27:47 mark * Inserted previous log comments * * Revision 1.2 1994/03/11 01:45:18 mark * Added RCS Id and Log fields * * Revision 1.1 1994/03/10 22:05:09 mark * Initial revision * ******************************************************************************* *** SDATTRIBUTES.WS Screen Demon rev 3.60.01 *** Copyright (C) 1988-1995, Threshold, Inc., All Rights Reserved *** -------------------------------------------------------- ** Structure of Screen Demon screen attribute settings. ** The current attributes of a window image are contained ** in the SD-IMAGE-CURRENT-ATTRIBUTES field (see SDIMAGE.DEF), ** which is a full 16 bit value. ** Attributes of individual characters in the image also follow ** the same structure, but the first 8 bits are not used, since ** the character attribute fields are only one byte in size. ** This copy file is intended to be used to examine the bits in ** the attribute setttings via the SD_BITS_TO_DIGITS call. 01 SD-ATTRIBUTE-BITS-GROUP. *** Attribute bits found only in Window Current Attributes, not for * each character in the image. 05 SD-ATTRIB-PAGE-MODE-BIT PIC X. 05 SD-ATTRIB-ALT-CHAR-SETS-BIT PIC X. 05 SD-ATTRIB-ALT-MARGINS-BIT PIC X. 05 SD-ATTRIB-NO-HORIZ-SCROLL-BIT PIC X. 05 SD-ATTRIB-PROTECT-ENABLED-BIT PIC X. 05 SD-ATTRIB-BLINK-DISABLED-BIT PIC X. 05 SD-ATTRIB-EIGHT-BIT-MODE-BIT PIC X. 05 SD-ATTRIB-RESERVED-BITS PIC X(1). *** Attributes for each character in image *** 05 SD-ATTRIB-PROTECT-BIT PIC X. 05 SD-ATTRIB-CHAR-SET-NUM-BITS PIC X(3). 88 SD-ATTRIB-CHAR-SET-NUM-IS-0 VALUE IS "000". 88 SD-ATTRIB-CHAR-SET-NUM-IS-1 VALUE IS "001". 88 SD-ATTRIB-CHAR-SET-NUM-IS-2 VALUE IS "010". 88 SD-ATTRIB-CHAR-SET-NUM-IS-3 VALUE IS "011". 88 SD-ATTRIB-CHAR-SET-NUM-IS-4 VALUE IS "100". 88 SD-ATTRIB-CHAR-SET-NUM-IS-5 VALUE IS "101". 88 SD-ATTRIB-CHAR-SET-NUM-IS-6 VALUE IS "110". 88 SD-ATTRIB-CHAR-SET-NUM-IS-7 VALUE IS "111". 05 SD-ATTRIB-REVERSE-VIDEO-BIT PIC X. 05 SD-ATTRIB-UNDERLINE-BIT PIC X. 05 SD-ATTRIB-BLINK-BIT PIC X. 05 SD-ATTRIB-DIM-BIT PIC X. *** These first 8 bits are found only in the global window attributes * field SD-IMAGE-CURRENT-ATTRIBUTES (see SDIMAGE.DEF): * SD-ATTRIB-PAGE-MODE-BIT Page mode (no scrolling) is on * SD-ATTRIB-ALT-CHAR-SETS-BIT The alternate character set indicated by * by SD-IMAGE-ALT-CHAR-SET-NUM (see SDIMAGE.DEF) * is active, rather than the primary char set * SD-ATTRIB-ALT-MARGINS-BIT Alternate margins are in effect. The old * primary margins can be found in the window * descriptor fields SD-WINDOW-OLD-LEFT-MARGIN * and SD-WINDOW-OLD-RIGHT-MARGIN (see SDWINDOW.DEF) * SD-ATTRIB-NO-HORIZ-SCROLL-BIT Horizontal scrolling is disabled * SD-ATTRIB-PROTECT-ENABLED-BIT Protect mode is enabled. All chars * marked as protected (see PROTECT-BIT) * will be unaffected by some terminal * commands. * SD-ATTRIB-BLINK-DISABLED-BIT Blink mode is DISabled. No characters * will blink even if they have the * blink attribute (BLINK-BIT). * SD-ATTRIB-EIGHT-BIT-MODE-BIT Window is in eight-bit mode. High bit * of characters placed into image is * significant. * SD-ATTRIB-RESERVED-BITS Undefined *** The last group of bits also applies to the attribute bytes * of individual characters in an image buffer: * SD-ATTRIB-PROTECT-BIT Character is protected. If Protect Mode is * enabled (see PROTECT-ENABLED-BIT above), * character cannot be erased by an Erase To * End of Screen terminal command. * SD-ATTRIB-CHAR-SET-NUM-BITS A 3-bit field, representing a value of 0 - 7, * indicating which slot in the character set * palette (defined in the configuration file) * contains the character set code * SD-ATTRIB-REVERSE-VIDEO-BIT Reverse video * SD-ATTRIB-UNDERLINE-BIT Underline * SD-ATTRIB-BLINK-BIT Blinking * SD-ATTRIB-DIM-BIT Dim *** End of SDATTRIBUTES.WS *** .@'Foz'Hu'Hu +YSDTERMCAPS.WS + ******************************************************************************* * $Id: sdtermcaps.ws,v 1.4 1995/07/11 20:51:17 mark Exp mark $ * * $Log: sdtermcaps.ws,v $ * Revision 1.4 1995/07/11 20:51:17 mark * Updated revision and copyright * * Revision 1.3 1994/03/11 17:27:47 mark * Inserted previous log comments * * Revision 1.2 1994/03/11 01:45:18 mark * Added RCS Id and Log fields * * Revision 1.1 1994/03/10 22:05:09 mark * Initial revision * ******************************************************************************* *** SDTERMCAPS.WS Screen Demon rev 3.60.01 *** Copyright (C) 1988-1995, Threshold, Inc., All Rights Reserved *** -------------------------------------------------------- ** Structure of the Screen Demon terminal capabilities word, which ** can be obtained using the SD_GET_TERMCAPS call. ** This copy file is intended to be used to examine the bits ** in the capabilities word via the SD_BITS_TO_DIGITS call. 01 SD-TERMCAPS-BITS-GROUP. 05 SD-TERMCAPS-RESERVED-BITS PIC X(6). 05 SD-TERMCAPS-INS-DEL-LINE-BIT PIC X. 05 SD-TERMCAPS-INS-DEL-CHAR-BIT PIC X. 05 SD-TERMCAPS-MARGINS-BIT PIC X. 05 SD-TERMCAPS-HORIZ-SCROLL-BIT PIC X. 05 SD-TERMCAPS-VERT-SCROLL-BIT PIC X. 05 SD-TERMCAPS-HARDWARE-WIND-BIT PIC X. 05 SD-TERMCAPS-COMPRESS-BIT PIC X. 05 SD-TERMCAPS-ALT-CHAR-SETS-BIT PIC X. 05 SD-TERMCAPS-REVERSE-VIDEO-BIT PIC X. 05 SD-TERMCAPS-UNDERLINE-BIT PIC X. ******************************************************************** * SD-TERMCAPS-RESERVED-BITS Undefined * SD-TERMCAPS-INS-DEL-LINE-BIT Terminal can insert a blank line at * the cursor, shifting the remainder * of the screen down. Also can delete * the line containing the cursor by * shifting the remainder of the screen up. * SD-TERMCAPS-INS-DEL-CHAR-BIT Terminal can insert a blank space at the * cursor, shifting the remainder of the line * to the right. Also can delete the character * at the cursor by shifting the remainder * of the line to the left. * SD-TERMCAPS-MARGINS-BIT Terminal can set left and right margins, and * internally stores 162 characters per line. * SD-TERMCAPS-HORIZ-SCROLL-BIT Terminal can shift the contents of the screen * to the left or right. * SD-TERMCAPS-VERT-SCROLL-BIT Terminal can shift the contents of the screen * upward or downward. Not the same thing as * the scroll caused by a on last line. * SD-TERMCAPS-HARDWARE-WIND-BIT Terminal can divide the screen into * multiple independently scrollable regions. * SD-TERMCAPS-COMPRESS-BIT Terminal can alternate between showing * 81 columns or 135 columns at a time. * SD-TERMCAPS-ALT-CHAR-SETS-BIT Terminal supports alternate character * sets, such as Line Drawing character set. * SD-TERMCAPS-REVERSE-VIDEO-BIT Terminal can display characters * in reverse video. * SD-TERMCAPS-UNDERLINE-BIT Terminal can display underlined characters. *** End of SDTERMCAPS.WS *** .J 'H}'H}'H}U( SD_PLAY.PR </`p*p@80&0&0&00px02000>02000> @p\pf&pkppk,/))x)4)5)6Y)@@`y?00000_SD_PLAY.TMPpL4 @% ppE;@<P mzc Fatal Screen Demon error at PC = 00000000000 0 =HNNNYNWWMSG.00000@jD VYYNYNWWY Select recipient: select, exitVYYNYNWWHNNYYNWW` pGppppp pp   0010110>01021320 1 pj@ DDDDDDDDDDDDDDDDDDDDDDDSDDSDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDSDDSDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDSDSDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDHNNYYNWW  HNNYYNWW ppE5GDS )P  _______________ . . . |_______________| |_______________| |_______________| | escape | _______________ _______________ _______________ | | . . . | c1 | | ^ | | c2 | | EXIT | | | | | | | | | | . . . | FAST | | STATUS LINE | | FAST | |_______________| | BACKWARD | | UP | | FORWARD | . . . . . . . . . |_______________| |_______________| |_______________| _______________ _______________ _______________ . . . . . . . . . | <-- | | home | | --> | | BACKWARD | | PAUSE | | FORWARD | SCREEN DEMON . . . | - - - - - - - | | - - - - - - - | | - - - - - - - | Console Event | JUMP BACKWARD | | AUTO-PAUSE | | JUMP FORWARD | Playback Control . . . |_________shift_| |_________shift_| |_________shift_| _______________ _______________ _______________ _______________ . . . | c3 | | | | | c4 | | space | | | | V | | | | | . . . | SLOW | | STATUS LINE | | SLOW | | PAUSE | | BACKWARD | | DOWN | | FORWARD | | | . . . |_______________| |_______________| |_______________| |_______________| auto- last pause console username date time event delim speed direction at status ======================[status line format shown above]==========================  Unable to find directory called :SCREEN_DEMON_3.60:SCREEN_DEMON_3.00.VM+>?>CONBATCHNOCON@VCON@WCON@PCCON :MEM:?SD_VM. + @OUTPUT@INPUT<@O :CONFIG:SD  ,!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~!ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~ hme(DAJ7lko\h )pg)pf pd@INPUTo?   !"#$%&'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ !!##%%''))++--//1133557799;;==??AACCEEGGIIKKMMOOQQSSUUWWYY[[]]__aacceeggiikkmmooqqssuuwwyy{{}}  SCREEN DEMON: Copyright (C) 1988-1995, Threshold, Inc., Auburn, Alabama. All Rights Reserved.pph~@OUTPUT  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ŗ^Iqwpw "ek,@e[YģqwLÌ͎@ё}?~);ɭOϮz_L%fm6ъѐʪB1͗Β+ßLƪƿƊ26_jh0~ƄƅzB@><ƎӝŠ͜Å訠Ԡ젬ɮ㠠҇.3060.171J-LU9-5Π򠠠ƠĠϬ㍐ɠΠҠ卐̳Ş宮G=?b[n7:H)/4eKa'Lxvd;| &Er+@A~Jyĵ"p.m% ! ݪ8Y6$Бl c9u0q-SȩF`ឧ̝jCUBQN 3(,}#XVD51w\ziotR ^g]*ٶ_{PWIfOԅkP ( ++++-||-+|--||-:++++-||-+|--/cTRCG ++++-||-+|--||-:++++-||-+|--/cTRCG  0@INPUTqrstuvwxabcdefgh12345678!"#$%&'(yz{|}~pijklmn`9:;<=>0)*+,-. \]^_ 8`@     Press any key to continue... @SD_COMMAND%Turbo Display% Screen Update Interval seconds% Use arrow keys to specify desired% settings. Then press DNEW LINEE to %accept values as shown, or press %DESCE to exit without making changes.# )ON |OFF|| Hpdpp:SD_POST_OFFICE+.BOXSD_STAMP_DEPTSD_PO_USERS_LISTMTo:,Urgent? N9Acknowledgement? N. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..L..L..L. .L . .L . .L . .L . .L ..L..L..L..L..L..L..L.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .DESCE=Exit DF1E=List of Users DESCE=Start over DF1E=Send this messageLDF1EL BCSendingCMessageLCP.O.DirCCleanupL Urgent: Ack: From: To: No Post Office box exists for that username.You are denied access to that user's P.O. box.There is no mailing list file with that name.!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~!ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~ PSD_NOTEPADD DESCE=Exit DC2E=Prev Page DC4E=Next PageBPage !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ o? XSD_CLI_INTERFACE    :UTIL:SD_CLI_ACCESS.ACLp2p ` Error!Press any key to continue... Yes|No|| h Select: to select pDDDDDDDDSDSDDSDDDDDDDDDPNPNADDDDNDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDZ;h0h x:CONLOGSD_+ %'))&(%%)))&)&)')')))))(()))))))))))'&'&)&'))%%((%))())5799685599969697979999988999999999997676967995588599899   (@Y  SD<< ZjjkMn u  |:O\i~z[200LNN   MailRemote ViewRemote InputG@LPT@LPTPREFIX,SCREEN,DEMON,CLI[!ASC 251]:CLI:UDD::NOTEPADJANUARY|FEBRUARY|MARCH|APRIL|MAY|JUNE|JULY|AUGUST|SEPTEMBER|OCTOBER|NOVEMBER|DECEMBER|SUNDAY|MONDAY|TUESDAY|WEDNESDAY|THURSDAY|FRIDAY|SATURDAY| SCREEN DEMON Menu to select SCREEN DEMON Notepad SCREEN DEMON Screen Print SCREEN DEMON CalculatorSDCALCULATOR_TITLE_ONESDCALCULATOR_TITLE_TWO SCREEN DEMON Calendar SDCALENDAR_TITLE SCREEN DEMON Read Mail SCREEN DEMON Send Mail SCREEN DEMON Turbo Control `SD_ALT_EXIT_KEYSD_HOT_TIMEOUT_INTERVALv]spvpwpgppʖpѣp_ptRedraw Screen|Print Screen|Calculator|Read Mail|Send Mail|Notepad|Call CLI|Turbo On/Off|Calendar|| SD_MAIN_MENUSD_REDRAWSDSCREENPRINTSDCALCULATORSD_MAIL_INBOXSD_INPUT_MAILSD_NOTEPADSD_CLI_INTERFACESD_COMMANDSDCALENDAR )lI綮 )܁y)ִ`)cI~I):9Y埼|Ii )9IY9y 4NJx)9})9Yy ǂ+89Iƫ HNo console log files found for specified console!9I 'Error on open of temporary playback file:9I  Error on allocation of memory for log screen image:FA}8g9)L*+?';)=83y,)Ii%g)99)99)9)9jjƉ@F<7Yy* ?@89IB nError starting display task:)8jd)8Ȯj}1n!YIYb )H))y)9)9 ) )*jm)YIY))R 99) )k|ix )8 ¸)))))))x))8I)8I)8I)8I)£ij‘IH J㸅)y㰎\ ;))x))Y8)99x)9)98Y96) ™ ~b [)ƉYy xƂiDiilu]qXի̮Yyy FA)yy㡩YY bX i)x®l = LYy |U 'ӎ 3̫ʉ8YѴѣ⾁x n) )IiY⩤⩎ɂ)ͥbF8)Y␤␎Jl: {\8)n8xrb)9 )v╮H z┣ⓁYE)YJJk 5Y999) _H)Q)) )ȭyK909$)?H890*)$)x㩹xԂyūΉYљi)iţXљiIᶥY)  Yy 8IY) Pk@)Ii}{yxIᨣlx\)"k ~Sy9n9oN9rKss9u}p9 lkq;9vY wI9yYcI^{)9iU Yy 8)nY9i@ Yy’Ii)n)r s)u )YYYy_҂y%)vY9I YY9ÂyE9)i9 YYxI)I 9Y9Yy ੁY9Y҂yY4) -i9589/Yyq yYYyyԹyyЉ9)yyi9 8VH1)=99񊸣>0x)x$"y 8 ޠ)IiYISD_.LGO.LOGyi ߴ)IiIߘ %߯)!Ii) n9)nyyi) |߶) ) i9 ) 9 ) 9 )9)9)9)9)9)9  ) Ii | 8 x y) yyyYyy) IYyЉ Ix)y9R)P)y)YE0)PyyyY9Yi)Qyyxi9))IY&`yyY9596 94yI99) 9YyM¸8))x) x) 89 IʨxInvalid record encountered in log file!) Y99Yy “x9) IY)xޮ)ޟޜIYޚޖ) Q N8{8wY ^yy jic9) 9Y9Y҂Y )9yy) oƧIY9iA YY8 Yw8Iyx9YYcy`ݰڴݨ)9)9)99)9)99|)VD݊) ֣oVIi}ccC) ™(ym9ХI)yY5y9Ҽ9ģTy)yG:yyO9ŹI)y4Cyy/|%YIyYyiY򀹃x)YyyixYYڂy))-9Yy)i9ZIyy) 9YyߩYYjقyĩ)):9Y)):9Y)i9 ŹI)yܞ(yi)ݐxہ89xҳΐxЁ89x|)Y9)kJyid.)9 ܜiIyy D EJANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDECSync Disp InFld InChr At BegAt EndPausedSlow FastJumpForward Backward Input Step null ^A ^B ^C ^D ^E ^F ^G home tab nl ^K ^L cr ^N ^O ^P ^Q ^R ^S ^T ^U ^V up right left down escape^\ ^] ^^ ^_ space ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~ deleteTimOutcm  shPr<202> <203> <204> <205> <206> <207> shHome<211> <212> <213> <214> <215> <216> <217> <220> cmPrnt<222> <223> <224> <225> <226> shUp shRghtshLeftshDown<233> <234> <235> <236> <237> ^shF15^shF1 ^shF2 ^shF3 ^shF4 ^shF5 ^shF6 ^shF7 ^shF8 ^shF9 ^shF10^shF11^shF12^shF13^shF14<257> ^F15 ^F1 ^F2 ^F3 ^F4 ^F5 ^F6 ^F7 ^F8 ^F9 ^F10 ^F11 ^F12 ^F13 ^F14 <277> <300> <301> <302> <303> <304> <305> <306> <307> <310> <311> <312> <313> <314> <315> <316> <317> <320> <321> <322> <323> <324> <325> <326> <327> shC1 shC2 shC3 shC4 C1 C2 C3 C4 shF15 shF1 shF2 shF3 shF4 shF5 shF6 shF7 shF8 shF9 shF10 shF11 shF12 shF13 shF14 <357> F15 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 y*)9ӪIYjS9x+IYXNyر)8yYyyB󸠉y؛)yYY*K1)yYYJ)) ))y0ix8NDY)xՄx00)=aڑp8Iڅ .=ϩYYbYIYNY<ӄyb)IxH)7 =)j))@ا) )  Yyp@x؋)  YyX@xs)  |9Yy;@8RYY1UU)9)-x98); ?Unable to start Screen Demon auxiliary tasks!Unable to allocate memory for Screen Demon auxiliary tasks!9 )T Cannot open SCREEN DEMON control file :SCREEN_DEMON_3.60:SCREEN_DEMON_3.00.VM )wl)xdIъIixRII38<x8IYR )9 )d ACL of SCREEN DEMON control file :SCREEN_DEMON_3.60:SCREEN_DEMON_3.00.VM must be set to +,WAR 9 )V nCannot read SCREEN DEMON control file :SCREEN_DEMON_3.60:SCREEN_DEMON_3.00.VM #Y)⸣<)IYSI^Ӹ Y9999I۩Y)IY::IYW: ;T9)9Y99y)::ָ)ֶIYSyiY v)Y99D)xyȉ yyy9 BYi8) 񭸲@CONSOLEؐ)♻z) i )9)99)Y999y>ظ8))@8b)8I9)89)t2) gpIg~ ghIY9ix9()@9)Iyig*y YYYysʇyi)YYUs; ))8݃)⩻) 8)ĩYYU)9s,)yyisIx9 ){ Console name not found in Console Types table or out of range! Correct SCREEN_DEMON.CONTYPES and then MAKE_SCREEN_DEMON.VM 9WOi  )`Ii9D>)} };):YYUIY99U)c)9 x989%y) YYyi9Y)ʙ) Y)ʙ ) ʩ)ݪIYS) ʩ)ʩ)ˉY)ʩ) ʙ) ʩ)@ʙ8ʔ)I ʢ) ʩֺY)ʙ) ʩ)ʙp) yyr)0YyyY9)/yYyip)sYYTUYȆ)Y|un8969495&Y9Y)!Iir0)9999)99)99)99)O99 ) YyyiYVcq)nyy[V[iѫρҴqz)nyyi9y) y)R8)P).yyYyd YYy,yiY97ϫӗI))Iա՟)q7gYYm)x܂)IixIY9YD:O)PYY3U  <  Iy7'%7 II7 8ax8IU6 67k9)@9Y99y)pY652^iY )I Y9Y)Ii )99(YYo)6) 6}@8y9(98)$yyΣc)ܧIi) 9Y9(Y Unable to load configuration file: ])_IY@SK)HYY/U i  )Ii  )Ii ) IYS-Y)8Y)x  )္II)iY fȂ:PER:CONSOLENOCON)6Peɏ;)) ţ5yYyyyIyyxyYyy)yc)"Iyyy)  yYyb YYYyyЉIyYYyy)x89Y8y)YĹI8IX)Iȉ艇yyy;Y8Y) 4 IY) YcYY'Y湁Y9))W !z9YY`X)Rt) x) ^E)Ix̣·)i  D EFEFQ0 ))v•Y)Y 9x†Y) l)yy)@x2xR)8n^p8TIROO)Iiǎ)@IY9Uxy)y y)R8)P).yy).9Y)S9Y)D9YY9yYyQ Yi x )BxYYqI IY38x9 GX)IHIi IY9i9 IY3x)9yΉ y?x 9)9 )9Y999YN08  \TrYY5qIc)DxyXX I I I I I I I I I "I" )I) 0I0 9I9 ;I; ?I? AIA CIC EIE GIG III KIK MIM OIO QIQ SIS UIU WIW YIY [I[ ^I^ cIc oIo vIv xIx ~I~ I Iyz I 8))8Y) Iy IyyoyYݳN xY8yͭy ~I 8yIYYNI9YY򸀉Y9 )x #)xI)i0i_zix@yyy MF [@yyyyy 6iy`^ 8IߍY9)sI!vs9cw) ♈s yyUły`) ⩣ n)x) yyyy@y Ҏy "ߍY9)I!9cYl )  yyֱyyyy@y  y))) x7蹈)8CI)nyyxP)) YWR6) ]g  Hyy ~͛yyyy@y  Sył)♣8B  #yy ~_Wyb .eyͤ9v) OY)  GѩxhY)9!Ӯb/)Y9*) ȂIyIcELOGOFF-TERMyyyy@yY8ቓxyy ~1yyI)IyY9Nyy)\ YYyY)IxWȎ dy89L) xĵY) ѩxY)9N!9ĂIyIc癝yY) x)DY) )Dzѣ) yy }yyyy@ymx  8a) xyy$ }f 0 yy8yyyy@y  )♻ yy) xy)9)9)9 Y99i))xy [Yy[щyfy)IЉ)) [Yy[щyym)I  Syy |؛yyyy@y)⹂xyy |y  m⩁YYg Y)X xixx ii ؉yy |yy |~yyyy@y/)xSY)8O)bxyI yԣ8БI)8)YYI8Iȉy y鉉x)߄Y)8y=N)nyy)XD?D)vЉ))x)y 998yy)9)9Љ8yy)9)9y)8Y)Ȃ9Љ)) $8)9)Vy  y))x )))IY99Y8yy)"y  y)) y9yy<W)IY D8)>8Љڣ֫t)@YxI ဉY) 8I 8⩻⹁㉁߮Byy zЉy[my YyY) 8OI 8F⩻d⹁a㉁nByy zY9)ay)) yYIIy9Y99))8 yy)y) [)y))y  y)) yyYق))8 yy)))Y8Y)y  yY9Yƣ¨܀Y) 8I 8⩻⹁㉁ީByy yYyVhYyY) 8JI 8A⩻_⹁\㉁iByy yy#9YF)IyyW"8։)>Ii)I9III)Iy)0Iy iy)))))))0I)I yx)y) yy艇yyyy@y8)⹀ )fyΫëȉx)Y)8y7Z-)nyy)7##)UЉ)) x))x)yIY)p)`Y)8)Wy  yy)))@yy)) yYI YyIY))i')`8H)xY) 8FY )?4xyy x)yy xi9)) y))yEY)Ȃ9ЉYt_yy w䘉yy wۛyyyy@y8x8㉉қyy w95yy wyyyy@yIxyyyy@yYyv8x87㉓@)8ṩyyyZIyyy wX9㸎Ղyy wC)a wI؉ yI   Y:?؉y)@y)…yIi8 Yy1)yIix:) @CONSOLEI )`yIiY))8II)@Iy)yYYYY8I)ޅyIiڄY)8)II)@Iy)@֏yYYևYY"2IYYnxcIxy_YY]YRyOy8IIyI)@I?y+x)yY)I8:PER:yIiYƉxyÊ8IiIyIYYy y    I  Y Y   yI ѩx  Y  Y y Y y y y 〉))3ǂI9?9M)3Y9?I9M)3Y9?9MyY9g)) )Y)8)i W)IfiI9giYI Q`ۂȉIY9Y9N9$9%9*9=9>]) 9&H sYOY@9"9!)9II9Y^?y5)I9)i) *)ۉYiکi)YIߣR 3O)?I9yY))y)))@yi9Y9)Y)0yy   Xyi9"9! ))x x))x)xi)9!I9$9%) i yX8iI9$)!iS̹yIIE)! y@yi;9! OR= y3)))I9) 8!yY)ȂYY)) )ۉYiکiЉ)) )!iy)y))II]9Yȹ9 )i))I9) E9iy)yi99999xryx -y)I)YyX yYQj Y)x)yi9&YQiYRS)xh0) iƁYC6)%) 8Q_8i d)@xi/ -y)I)歉 yXݣi Oщyyеy߁xٗԳIyYyYyyyiYC)9#)щ iIXYYYiXYYȢ)ȫYXI )XY)xYyYX{YȃYu)ȫYЉxY)ȫYY)!XNX^ѹY)I)Ie)YYi)?4Y칤9 +K()i9 ) )IYYYiXȫY)!IɹY)X ѩY9))!ɹy )?YoՎIYY׳J9#O) 8ԫYO Y)8i9&Y8 D9YyyiI)9Y9)) )XXiY4R))))8I9*9)'ŁY9Q)`HM)֣Y')x )Qx)> nD)xG)?8%),)Y  >Y) XY)@Yi聉) x)( 9ϣK)@Y8 ,) ) I٣)I9=Ykf) c)_ZQz@yyi M)Q ߣ7x40o,SyOH@>yyi Y9=) T)ˉYʩBi>  )S)Yy™x))YYYߣ ) )?)IYY( )}8)x)IY9)9)iӸYͻ) i9>xY8)x`9N) R )i)?xہx |X) 6y)?xPuJi) Q) JPy?)")@Y80!8T8-Yyi)? x)Y)əy9yX9)U)9y ف8i) yY9 y))9 )  yY9(8>x9( 8y4 Yyi xpI9xl8z)x9(YI)¹ ~Ky9(9')щ ]) )>)=8Y')'i )ޮ) &I8)xyY9YyyiyZyIyiЉ)0I) )) Y9YYib)ՉI5)ޒ)*)I_)( F)*щY9*y9) ѩ̹$X)  yyYi9 y))9 ) ) i9 i)?)'Y Ў~)#X XIXљI‰8y)yYYyy)i)>8i\XxgY)ȫYY7) iX )I)=щIi)'y) ")=)>){)@Yщx.)8)'yiyIii y.)0)9 )9 ) 9) 9 Y9)9)09x)))ȫYޫ٬޳) )xͳ)YȫY Y8i)9)9)iiI )9)8)Iyi9X9y))Iy)yi9))9))X Y S))Y)9Q )) 9)) x I8Y99 9 9 xXY)I)X)I9 9)ȫY9 )) )XXYi9 ))y))?8)ۣ֤ۆIx) x6)yi)?))YXiYiEYYȳȫYXI)I  YI)۟)۽Ii)YX YixYY)ȫY)XI) I  YI)'͑8+)mx)!ˉx)Mй889)!M w) Oщ)$)%)!8)xx)79N88Y)x)79Nc)"XV)x)79Nq $Y)d)?щ qxYIYC.ye DY)xMI)й $T8   "))) 8ou)8Yi +9)Y&y)'´1yyi9I)H~)I%YYU8) Yy1yIyXsYyY I8)Yx)Y8y0yy)@YiP9Ly9Px)y98Yy9YX!"2i)Yyyi)ՉI0I9>YzLiY9>)L u γ$I)щ li)x¹8)Mй8 ~*))ڹ8)i)"i)79NyhXڸiX!x ~ ¹)!)$Xѩ } +Y9)9N4 smy ~xyy]9\Yk)'Y9'Jy9 u@ +)y9xYy95E@)'YY ="i.Y-+6)) Oй )"yy9 yx)xi O ) 8Xi)!Y8y O)IyiyyiI)!Y O I)&y9yYyi O9i O)) yxy`)i9)xyy))yYxIYȃYYYiЉI)8y8iX9i))$8)'Jx 8뢹)?) )88TY))x))yI乡YiN8()) IH8YCvx/8x)i)) 8IO)83)N88i)g W)IE9D9CG9B9A9@)@)A)B G{)Cl)Df E^y)yY)éYй8xYЉ艇yxxi)')!yIYDxi)')!y9Y4x0+)Dy۠3) )ۉ)I)- y)Ii)  ) I)IY9)yΉYYi)i)i))Ii Yxo8oYy )9  ) yyyYyi  Y9xy)'̹yIIy9) 9)9|9)'9yy9 Wyi )XYiI)<)d84y%x?>>>y9")_^ y8?#Y')YޮQY ٥R9)9Y99yĵ))Y8)ʙ)8xx )9Y9yzr)8 Y99ydio))8)YYKi Y99y: ]Y2y:)p*Ή) &35yo x<<<<y9")ޣHG ))8Ňy8="Y%y)YãNYYÙUyI)8 =YÀNiu)Y9(9'n) _IYYS) I^͉Y9YyyiU) p) )n)Qx)> |9Ys p))ID))<)) ).)) 9))8YY 9) 9))~wYuiY普\8fgfedNIUyiMщ8)'8)8yCЉI&1x)8虑8虂rqm่xYS Yfc^yYS YURMYyyIYyЉIC)Y>=))YeIb ix))YQO PBnjc )Շ))ѡ298) Y  ƻ  0) 1 2ִҴiģ98) )p))<йIYI i))&IY x))Ysq 98) ڙ840ܴ,ڴ*Ҵ"+[9x) *)`!&)ۣ=) yi y ))i  ɣƣѫʡYYXȣʣYʻ)x)x  l)щ)wXvy|KpYXkky_X@Y^ȃYyVYYəyAHYRITyX:5DY@;p 鉃xy3YY'!YY%9YyyXYȃYYK8IY) 򩁩KxҊ8) Kx֒8yJ xƳ1 0)Y ~89Y@qYy&I)xK)Z)ioI9Yx Xgщ8)x)x x 8) yI)$9)Y)^9@Y9)=<~艼438A ~lkjihgfed R)))) I OyYK K?ЉD F) ? )Y 7)Y 0)湎 YIYx   Iyy: ~yXrYȃYYЉyȫY`yЉv) }n) }f) }ޣ^) }֣V) }ΣN) }ƣF) }>) }6) }.) }&@)i }i }ny) }t)  }h)QYۢ١)ͣӎJĎ6ׇy84x) )8 8)xvYY$x9#)) 8 )1Y)xj^Xg҉9)9) )1)YJ^XGѹ̻ɳYY)I̳ډ^)8)   |ߤO |sKX͎~SYy)Iyiᙹ~֫XYIɳȱyYyyYyyI9Yiyy) |$ | y~ YYyyYyyY9IyYy[xUsqhhFI^`ώi)x9)8+аx=9A88.I.&9z)$)IS)x)Yx) Y)IY)I) {q&) FE,}PYڲرYѹ׭yyY׉IЉIɎ I {:)8y}YYyyI)Y)) 9Y9YYȉ~쇉yyYyyȉyIY9YIȉ}) ©x)Yqoy|yxUSy89)YKIy8|'I$y)|Y z N)E) z) z) zxY  뉹iI zb|MYᑹ8۪Yβ̱8Ǝ|F zG|2Œy|, z-|Y8| z) ©xYmx)9)9Y)Y9< yJ yףY?)Yge>)< yƣ鸁Y)YFD)=> yxY)Y%#)=+ y y)9I-) yXYţ;< Y)F Y)a8?8 Y)28YY)©yYYY y )r)9Y x)9yI=/̹@Iy e y)Iyyy=)yyYYI)9YYɹЉiyy}yʅyMyy1HyGy%y]yYyYYy KY)&Y)89)Y xC酹)9Y)o9Y)#9Y )yy҅)xY))89)I xGFb9@) 9YYމyIy0I)9Y0 ЄY)Y)9)I D xyXyXiYΉiyIY) xyIĹ)I yw) ♼лX9) {? wyމhyIy0Y ) o~I)YIyIiIIyPyIiiyy%JDѮ0)u52 ǓǼǮ!)})w\  }h)09Y֍ԣ }OY)09YYaI)YxY8})@Y9i v } YR)Y}{x0A94 vש |Y-)YXVx095 v |Y)Y31Y096 v |Y)Y )Yi vi |wY)YꍉƳى8y v- |;Y)YάY))8yw)9yI9YY ; uY)x)Z)9I | u)8)x))) 8),剁) 8)x0)99pY)G) 8x ى8[)x&8 xyIyy"+<Y  {yY"Y)8) )Y Ƕ Y uOY)x)9)I vƫũ {@yY󷍉׬Y)8))Y N)鸁Yj u)89j)I Z ) h )) ))y9 tڣm)89)I C )z) t zФ )YCA平9 8)Y,*平)i9 8)Y)i9 x)Y9 )Y㍉)ق@9))ق@9)vyYY)yyyy Y9))I)Ii9YYm)xrpY8yukYjIgXc)xyyyi9yy :))I)Ii9YAIY sC)89)IYYu)9)O9YYXxu)IY޳)294 G= ) )9 )) ᮉx s>FAYʳ9 yA x)Y񮍉平9 8)Y񙍉)ik9 񈩹)Y}V9Q)cXy8y 90 )  xࠣX!K) idIA) ٢y)Y99)9Y9)99))1Y9Yy 8Y)9 :Yt\7Y) rQy)999)Y9)9)9Y9) YlX8 Iy й8 x)Y𘍉平l9 x)YX)i9 r)Yig平=9 )YTR()i9 wƣ5x)-x" YYXys}ys ) ) Y qy 8)Y平9 8)Y썉)i9 ۩)Yҍ平9 x)Ym)i9 ﬩)Y平w9 )Yb)i9 w)Gd) 8 [Y9U9)I9)I9)y9)y<)6YYX46)yryxyr ) Y p)))YYX pi v| )Y平9 )Yڍ)i9 ɩ8)Y平9 )Y)i98qy)yqywyqyqYD o~t)9 &)IƫŊ)qYGȫY yzX8~BY)8$Yio oY0X8~&) ) ) ~)8I 9z)}zGYY)I}TS)Ύ္īY o?yYiYIyyy艣IIyyЉ)t} 9)I.)}{ȳYXpުXiXgiyjyYybX^Y9Xހ8}dY)yyy艣IIIyyЉx;X7YyX8}I,88x2ՀJID#) yY) w)) xx)Iι xIxq))@8@9)QÂx}ՄY))}y)dɝy)[Y)xw)) ))m)8o) ) y|Iy09x 2).B29===uRj===u=|A|R=|eKJYƀÙ7I}IKJibٙÙi\9Y ÙYQ/Ù WIQJ)KWIfi-I1iYlÙz逆9r)P`2KK7IY؀\9 'i'' ''CY܀hrYnO9 91iY!lÙÙI299cb8rYnO9 91iỲlÙ\9iX9g\9 e%97 (CX2XX''9JY9(i8 Ù9q9`)ÙYdÙiÙiy)ÙKzKR ÙD nhgyPznÙ9˨Z)KKK˨9Vnh\9I2cbÙ299bgXGHiz(Giz9nGƌiz0(9z9)ibG9ighZ@9չ2BJnOGz@7YnO9Bfi2cG9BgXG9Bznn(YnOiGB2r96\\zr95 79 9>!U!w!>w>,PI%===uR0XڧPI>xวщhhщI|x>wxۄ,R0XCA>A!!U!RAxww>*,R0X9>U>>U!>>w>xwPI%===u0X!%|x>wxۄ,R!%h~ѕ*ه0_>%h~ѕ~~!(0Xd>!Iۍ>,w>>R|xww>ل!PP!>0XxIۍ>wIwUwP>P>I>w>,R0X;>ww%"="=RRR)I99Y9 9 99 x)I9Y9 99 99 8)I999 Y9 99 )y))x   щxy$ 釩Y9 9999 I9 x)Y9 999 99 x)I9 9Y99 99 )8x Y9x)7R w)9) xyy)0YyyY9Y)/yyi Y9091b)292)393)494)595)696i) \)" *)щy))9 ) ) 8Y9 9 999)99)O99))x y )9I )i)Y9I )9 )i)9)99))998)9)9)9999)9))Py9i yy) 590Y91~@92,93!)494)595)696i) x})G) I):xI)1Iy 3))x  y y y  )щx9"9y))Yyldyi)Yr/Y )})8)x})Y艇y  )nyyi Y) i )Ii ) i9 Y   xIy) kxyyYyy) IYyЉxi  )y)~()x  I  y )nyyi ) i  )Ii ) i9 Y y y  xIy) xyyYyy) IYyЉx}i) }f) ))x  8} gy)Y})iyyry}) } 0} 1}}) 2}w}l)}s)}oi}lЉ}^)8y )y}N}I}N))}9)  } yQ)4ʎw)W)})  |y() 2).)|щx x) %)y))Y9)I9|й `)x  ||x| 8) ~) yy0Љy'' )|) |) 98)8 yy)9999)9)9Y9 Y Iy й8))8)9 ))y|9)x ))y|9{) {) )/))8) )8Y)y{9) )8Y))Po?)@yy{9{T) {Q) )ᇩ))) )i))) )){{)I9))) )i))) ))i{Q)I9z) z) )|))) )i))) )).{) I9 ))) )i))) ))z) I9 z) z) )yzģzy ɇyyzzyщyzy )zyyz y )yyYщx yyyztyznzmyzhzayzZ )z) z) y  zAyz<ixz4z*8Y) )Yzy) y) yyz88z zYyyy88yyYyy  xy߀ixy؀y) ) Xyy)0YyyY9Y)/yyYkak_)Y9998)I9Y99x)I99Y9)y.Y)@y*)@I99Y9)Y99I9)I99Y9yY)x)x) )`)8zn)J)E)x) x)@).֏lx) x) I9Y9j/)Ijx) )xм9)l`)͉xYyxyY艤xyyylD)x9r)xYyxyY艤xyyyywͣjLI)9YY)9wj;I)9YY)9j,)ꩴxc1y)<xTxQxR~ݏk˳x9xw9))ʩx2x1Yѹ8yx&Ygx!)9Yx)8xxYOx w)Yx ))J)ENFS10OFS00 FE))w  iy҉8wӫwێ}y) )"I) ))8w  iy҉8ww|Գy) i)"Iw>) w;) )ˇ))w w| 0wxwswx 1wo) )8 2wg)wf)wbiw_v) v) )))  8)?yy йI iѩ)X))) w)8  iy8  iy҉8vy ) I)Љ) ))  ѹ) i) IivV) vS) )㇩))  ѹ8) Iy) YyY y) IiyYv) v) )))Ȯx8y)u)Yv(vйx)ȮUxvyǤv )Ax)-)Y xYvvu))Y9 9Y)/yyiu йYuހy  ) 9 ) 9 )9)9)9)9) ))8iA)@ ux O U )8)8xIYyI8)Yi99)x)  xxI8YyI8)Yi99 ) )xI8YyI8)Yi9)9) )xIYy)Ph)@)yIYyЉi9)9)XYX)XYX y9)XYX)XYX y9)i)I9) )i) I9)Y9`)/)9)9 )/ 8I   щx ~Yi txtttjti) t) tZ щy)9)) I sy yYyyyi)I9I9yYyyi)yI9R999I99 Xs)   ) )8s)ꙃ8sssߨy yYi9 y   ysyYYyYy铸yyIiU sXssIsIsIIysYIi)s,Y)@xsb 8  )x )y)y9) y)y9xys$ 8)99)(93s>s@<s BI9D(x)(>@@@<BI9DNE  I9 Y91:999 )/I )09)19)29)39 E)1I)@Y99)295)396qII)y)i9798)9йyAƫeìY)Y11Y:qٖ94 EPIY92)xe)xqY)xr ) diY)x ~ )xd|  ))8  ix 8II8 M id[Y9-q) )dU) )qiY)dV)dOdMi < BYx z <)9Y)F9Y)X9Y Vd/ Q<d')9Y9qzi < BYx I <)9Y)F9Y)B9Yc  y)09Y)yY09Y)1))9YI) Iy))Q))ycˡyY9 8Iyi)-) icI-YIi BiY8yi< ى8i)88 9iIYYY9DZ}y)09Y)99Љ)19Z{98)38) )`9)D9)09yiY9&f +YK) )8 8)&)8 I9& + I+y)9()&9'yf) )I))8yi)IYQX 8) )i)I)x)Xy)iIyIIIX9zG))9Yi90- < BY i <)9Y)F9Y)CY9Yii<3X) yW)i < BYx <)9Y)F9Y)^9Y<W)ʩyW)i < BYx <)9Y)F9Y)]9Y<Wt)ʙyY?)xe) )xI))8yX 8) )i)I)x)X  y)iIyIIIX9yh)9 < BY1i <)9Y)F9Y)JY9Yi<W) yy09YyY09Yyi > <@B)d{) d))c)9 )9)9  )9 ) )9) )9))9 )9)9Y9 )I9 c)9 )9)9 ) )9 ) )9) )9)I9 )9 )9)9) )))78c)@8)I9 8cY)xFq)dcY)c)xY yY)0yi 0Y9Y)=yyiY9 c )090)191c 2 2)IiYc) )ۮ:) 8) M))) 8iy)XI Iyyyy00yi)  cP蹊)0))XIi 90I9 i xi  ɉ8) y)yyyyxi) Y 0yyyxi) `)yyyyi )0Y))Љ9Y9 普v))8b 98b؁YȫYYYY 9 9)5Y9I9 9 9 )5Y9 9 I9 9)5Y9 9 9I9 IY)x 8 x)5I9 Y9 9 98)5Y9 9 9 9I9Y9 a]Y)@8UׁYI hۂ щ)5I9 Y9 9 x)5I9 Y9 9 8)5Y9 9 9 I99 Y9aY)@8UI hqۂ)  8 )I98 )9e99)9<)X8i щ yyyi8Y)9<)9e9 щy9i) щx))@x)y)96Y9=9>?GIK9f9g979;I98C)e) a)Yi9ea)d 9iY9abx`)hxY 999 <Qx8x)`ϬY)) g)I99 9 *)) 9Ɖx)9<)968i y999i`Y)8`{8 Y`nKTPgs) x_I9 g`\Y)8) щ8 xi_VI)й nT)`2) xy9))JЉa)8Lm)II$YSVBV>_9)_y)_)I_TY)@SΩUYS щ ~S ~oi_˄Y)S)_) 889))Ia)8K ) щx x yɂ_щ)x)8 _y`8Y99I))Y _yIiI9 y  щ))Y9I)) 8)I wSI9 0SyYyyix) )Y$_Y)8_) xYf ^)8#A)69695)I9Y9= eE) 8垣^Ł8𽀮TY^) ^)x)eY k^) 9) ^Y)el) ^) IÕ^O)^{Y)RV)x)S 5)STx^)h S 5S )y9 yyiR i) ^6)ˉYʩ)ei9e'])j]])YY 5©x]))YYY]ʣ]Y)Ydd) )I]))e9e щ)=9Y9 ~| 9)) 8)I])ӸY]]Y)Yºd) i)e9e}x])\yI) } щ8y)=)yyy9  9yiՁ)x>]XY))dX)  ~Z)ق z]6Y)xYd82x8])i)9v ~i\)Y dc) )c\IYS\)hx) 9Y& ~#y) x\) ^<RZ^.RT^4RN\) y]Y]P~щ8y y8)Y8yyY999y9 yi\ y)\W)) \MY)\IY)yE]Q)i[DI IZ xIi)9)9 \ ) x8ہ R) 꺧IY9x),xY.) ꨧIY9i)x۟87n 8%\ 8jQL [e))xa%B)BGi) Yyyy i)))%) ֱYIYޱ[) 0x[ )i) Yyyy ԣZ) Z)i))xp)Z) ) i O1)Ii\DP^ %)y)  YYi9q1 8Iy )yyYi8ЉxЉ pxUI yIaOiya)INyI)iII)I9YxyZTY)8I@yI)IyN̂iy)INĻBI)iJI)I9Y8NyN))YYIIYyIyy)IIYI~ۂ))I)SYZRZLZJZG)myo艇y)6Z4y)IIYI~ۂ))IZ8Z)?ZYY~mU)/y)IYщ)#Y󁩉8YYII~ESYYߎXY)IHyy)%ԁYy9#YL9"X9X9 `m9!YY7IWW`]  89$Y2y艇yxy)"Y)!`9) W)W v )$Iy)XYYUYSYOII}SYYC)h) )!Y\YvYLKx )!\8 ) yi) Y)8 8)aI99DWb)I݉).Y)PY)R9)yyY9i .PR)aY9£;)9 Iiy).9Y)P9Y)R9YY999D)}IЉ8IY999D)|IЉ8Љ9Ds)I):9Yi9Iiy).9Y)P9Y)R9YY99D9D)|IЉЉY99D9D)|I8   "Y99 ))€Y9) y YYYi9' I9Y)IiY)  I9) 9) 99D "W)W)8Y9:Y MWpY)nYWīWWMWC|  : ߍY9)|I:9c^ )) YY {֓x ") 9Y9Ɖ )9Yy{Y}x\])) ⩣XLJ) @NULL)) ) ҼrIyYyad Printing |SDSCREENPRINTOutput FilenameESC to exit without printing)   y   y)LU))0 yp88y)3 9 ) 8Y 9 9ȩ8))*xi))))#y2!Y   8 )9yyyi  )X x9) 9) 9 Yy) y*{x p8 y+I2 xYi)Vg -V))Ю]0 y+v\ 8TyvJ2T ) )T)4y)) y1  ̹)J)cyyy&<  ̹ )2yyy&*  )yyy&    ur)yy ~xxuX uL y ~  yy)y/1  ฮ1t y ~`xy/ y- y/)wXe) U'  U )I)VSyԌ)ޤĮԣS9)))T9vvppT˕y5~;T9pd)乣TTTT1) YIY8S? 8 x)8NInIx) YȫY809xcظY) ȫYI)硩y9:ɳSSi9S0iS)R¾)HD)cXTy))物y))S) 9Yc8) 9Y 89Y)S):Su) )Sļ9 )yyNONE  3LU5&JV:MSG.rdOpening the message fileadOpening the output fileReading the message file Printing |Writing the output file Print Message|Output FilenameESC to exit without printingYes |No || OK to delete? Urgent!#Acknowledgement of message # A copy of that message is attached: ----------------------------------- Error accessing the message file:select:|Delete |Next |Print |Menu |Exit ||Choose one of the selections shown|Delete this message|Read the next message|Print this message|Go to the Inbox Menu|Exit the mail system|| ERROR accessing the associated message file!YN*- Inbox MenuNew Msg No Date Time FromAll/new |Read |Print |Delete |Exit ||New/all |Read |Print |Delete |Exit ||Alternate between all messages or just the new ones|Read the selected message|Print the selected message|Delete the selected message|Exit the mail system||There are no new messages in your Post Office box.There are no messages in your Post Office box.Press 'A' to see all messages, any other key to exit.Press any key to exit...Unable to access your SCREEN DEMON Post Office BoxSD_READ_MAIL)  )Y )))ɮ,)   y   y"*N))Y)0)y y~y)\bBy y,t) ) y ))")Y))Y OY  C)Y?  Y9 .)Y)K8)P YY Y9 )(Y y)+ 9 ) 8Y 9 9ȩ8 y \8i9v 8))"R8i9f 8) y#28i9H)Z)))#y*7   ) yN"8i9) Ny"8I 8 N8 y#y y#p* 8Y)g( 8MDyg+  )  )M) )N)4)yyy*.  ̹)2)cyyy  ̹ )yyyv  )yyyc  f.)yy }f x)f y ~  y yy'{  8*,)e y ~c ̹ y yy'O)PLn 8 )I9J I9K)9L))*"9)N9yy)i)t%xI) y }p9Y)))) }YY x  )Y? 8كYY ΃Yr t r)Y t9 YYx Y9 Yx }4Y yIIIIIIIII)? 􈹁Y9 ) 븁Y)LY y |8i 8) y  8i  9 IY9 9 I)Y8 򩉁8)yDY8 򩉁8)yy))c)%y)))3y) ))4y9 y)y) )ys x):))X)R) ),)() 8) y , 8i  9 IY9) )%)y# )F9 y)(` 8) y 8iY     ) y 8i x  9  Y9) y( 9 IY9 ) )J)yy    8 8) y z))c))ym) )J)y_ y ))Y)x9t9`"99I)N)y)yy&)J))y ;)y 4 ? @yy })c9i")c x ?y z ?Ix))x)qx 򁉁8))I98 򁉁8))cI9 򁉁8))cI9)c9x)c98 y |)c98Y98)9۫ y {)c9)9x)9)c PH x y |=&?)).Y RT yIIIIIIIIIT R)  x x)Y 8 iy  )  x  yIIIIIIIIIyT RI9Y Ry y 8i 8)$ y{xi89$IY9)@ yIIIIIIIII)$)% x)$ yDxix9$IY9)I yIIIIIIIII9Z9$ Zy%} 8)$ y8i 8)$ yxi89$IY9)_ yIIIIIIIII`)$)>%/ 8 yIIIIIIIIIEY)0Z)y y)&y Z)% yIIIIIIIII<)> y x y )  I)9)I9 ȫY $    )Yx))@  ȹ8)Y yIIIy)  ) )? ?y } yIIeIyI9 yIIXIy I9 I9 I9 YI9 ) y))Y89~9z y))y y)Kx y)F)) y y yIIIy) yyIIIIIIIII y))c) yyx  yIIIIIIIII y)>)c) yyV Yx  ~   I9y8 yyIIYI yY9  8 I9Y) y))Yk Xa 8ZA))@8YLѩ𸇩)B<:ѹ )ϙx 􁉁x ѩ )Yx )2)Dy)"))F))y"))c))ye)B)yY)䀹9隤9鶬դ9̤ҤVԣDH99)Y @  )9) Yo y }l `_88Vѹx8y ~)yDYByy }@鸩 ))  )9)y) )y!A )L)6) ) yx)^)6)) y))) ) :<щ8)YxYй̹ @щY x))?yyR :7y)x))?yy9 :'yCMyD) < :ʸa8A )98x))!8lyIITIy))x8} >))I ))I ))x) ))9x9)BTyyi)DY B؈x))888) y }8 }8뀹 y }tYߣ8٤)͚x IYx)ϙ8 y vL) y x ? õyy uP ~ )))j)Y YUY 8 M)Y) K8) )@  Y.Y x)AYyy xx))Y )  I9Qy򀹉8)) y))yYĮ晤쀹Y|Y9y)iyYyi) )妮t-)Kx) I |)Y 8 |y yf) sYh)Y V)I J)) ) )  yx)  y)޾)  y)AY) xPйAy9)P@@Gx)@9Aq) ™An) ™@ͨP:)8AY)xDщ8)8Y9AC) ™A@) ™ )+85P)A") )YOѩ8YY)ѹ 9 )OĤAIIIe3ӁYOAqAle08AkΉAgA`)@9Yye89F) YAMɇ8YyeeqIWARNING: Unable to set SCREEN DEMON `@ON Ready For Mail' flag))YYye(qYI*)HDDIPIY9iHjHd)eII):9YY9ɇ)@9)9Yydɇ)@Y9yd)E))N )))N )) )@ lY oIx9 * 99) ݊x9) Y9i)) y) 7) ߇ x9Y99)) x9)9 0x)) y) 8) ѧ)E)  d ္889) 4 Unable find SCREEN DEMON Post Office directory 'SD_POST_OFFICE' in the SCREEN_DEMON directory. The SD_INIT_MAIL macro will create this directory.GYIY9iEIIc39)  GUnable to open SCREEN DEMON Stamp file SD_STAMP_DEPTYI?Z?Uc092) YycsqI LUnable to read SCREEN DEMON Stamp file LDIIcJ3xn9V) I `~B8I: Y 8 ?xY9Yx x븴98) IYyc%#>~Unable to obtain a message number from SCREEN DEMON Stamp DeptHۆYyb%>}YH´>>~b089*) Yyˎbq yUnable to access recipient's SCREEN DEMON Post Office Box) >TC6 )@j9)D9I9YYb] Ȅ)|\湁Y9XCY|8IY9i)9) 9Y9YyP) 9Yy) yyyiY9)N)8 )Y)9yЉ9Y) 9Yv)yyiy)Ny)8)YyЉ9Y) 9Y9=)=Îd9")yy)Ii) 9YJ89)yyi) Ii) 9Y096) Yy=xa r9>)  iUnable to write message to message text fileUnable to create message text file )@8ry=6) Y=2i)@=&Yy= a=88C) Y Y9i= 9= Y )@9I9YYa8)99)9)9)`I8x)yйxzނx?0YI9IiY9ɇ.BOX)yYyy_!yy))-9Yy)i9pIyy)-9Y)) 9Y9YYyyy_yĩ)):9Y)):9Y)yiJANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDECYy;R_oÇɇSD_INPUT_MAIL)i)H)lE)F.)3lx9) R *Can't allocate memory for message line inputͮ[ t) tY9y|x(9)~h9h)"Y9yYyi)N)) )eY9yYyib)8YY9h)")Ѯ 98)y8898 T9x9h)"9)9Y)9Y)9YIyYiyi9)% )  8Έx ! $[9hy)ޤyIiih@J¹x9h~x:IY^/Rxx J) Iт) IǁY ?9iy) Y9yix 4Ή@ONΉ@ALL9i9)]I) )8[PYIYyN8Yny88 ~ -' s)Y)N)4yIΉy)􀉀PYIYyN8Yny87 ~- 3$-HD)Y)N)J )9ӁY  )K)ѮE9)y)yx87- } i ~ 78 } OI)ӋyY9 K )Ӌyx9 )KY u )ӆ8Y)i9ӁY K Z ,)֮oYIYk8xx }#68 ->)8Dlhd`%FT)'D)I ) 9Yi)y Ky)II) 9YK8Y9ih@ 9hYIx9 St) ͡89))))))9)􈸣9y)" yYyyix)x9)%)) ͅy) v |d89))))))Y99))x9ǣe9y)" yYyyi)ȁ98) )) ͅy)h vg  p; pʮ ͮj2)F+A)Hg)7 nB7nJ7Y9>I9dx9 Y)RhY9  YP Xy普hlyy  Yyyi iIy) )йxx8) >9 )J )|9Yi)  x 89hIx)|96m)Y)щYml f)" Y9i ) i_No Post Office boxes found)y|yI9,)i8i 9)i8i@ON@ALL)@)@Y9y)IY9i59  ` )@9I9yYx8txY992)Ii IY9i5yYx))59)@9)9YyYx )5u9YyY)5f1Z *Y9)9I9yYnx)):9)y 9Y9Y YGY)H y) Y9i )y"0IYY 3849Ή)9YYY )Y)Xq) ) ")aL9) ٸxUnable to open Post Office directory! Stamp Department cannot be rebuilt!9>Y9Y)Ii Y99994b )+9 Y) XzYx)9y>wi>qYyXdP)~ŝ)#) 촮e7)'wYF %mB mţ-)eӂI9  Unable to allocate memory for notepad page!F 6Y9)YIi 6):9)D9)9I9)x Yx F2I)ItI2>IY9Yi3 F 6  YyW)`9)9 42 ) yRNJF )F6 4Y)9i)99)0Y)) F)yy 9)Y@8l) Y F)@|ۅy)@أc Y9Yyyixx8݃ߊ81S m S 44 J 4aY4 =i ~8 1%x | UoO"UWyxYLM@H W?yx45)@Y/ >&xY) iY@   ~m) 42Yy 6VE F8eS %kI kؾ)&X) c yi 6 F 4 YyV‚)8Px F?)yy) YY9YyYYy@xyi F: 4@&yI) Fyii F?) )9@Yy 6UÂyi F)Y9yYy))>y Yyy!))<b{IYUR8)`9$/r)I)Y)Y1)x),9YגIY9Y9i)$)b!)1h/1b8d;) y)Z YyybxyyyyyY91:)01398Y1)1)/1/Z /W b*b"/ 9b%bx08/I))0ӊ)0⇩)-Y9 )098 SYѩ8ȩYiy0 9;y  Y҉Yiyy8 ,oX Y x ,6 𨹁8) y9 Xx  yy   )9)ć) 􅉁IyIIIIIIII򅉃I//~/y/~) 􁹇  )X YE y Yi 𑹀 􅉁IyIIIIIIII/. 𩙩Y yyyyi x  0x9y)YyIyi .  l)).8)yI9 ).) I9 ) 򉹋y I9 ) y I9))8)))Y)))) y )IyIIIIIIII)I] .0 )YY)Y)YIyIIIIIIII 8 9yi ) YyIyi x)Y)YIyIIIIIIII x9y)YyIyi)Y)YIyIIIIIIII . )9))Y)Y  9yy)YyIyi )Y)Y x9y)YyIyi)Y)Y - .    ))˸)Y ) I9 8I9 )N)) 𬹫I9Y9 YC  y YiI9) 9 I9 I9 -RYI9 Y-HY9 9y)Y9)Y-2+wt82) Y9 9 9 I9 9999  ) )=8)♰8) y) Y9 ) Yh9 ) Y9 x) y) Y89 8) Y9 )♑) Y9 )♊) Y@9 ) Y@9 x) Y@9 ) 8) ϙx) Y@9 Y )))xi) ) I9 Y9  I9Y99 )))îYxi)) I9 Y9  I9Y99 )))®8)/8Y xi)) I9 Y) Y9 Y999I  )))Үx 8 򁉉89 )))Ү i) I9Y )))i) I9 I9 I9 I9)x999 9 yi  y;999 9 y yi  y) I9 I9 I9999 yi y:) I9 I9 I9999 yi yM) 􅹅y@) 􅹅yB) 9yY y ) 􅹮ū) 􅹮S)9y))) Y@  y YiIx Iy9 y)) Y?  y YiIx Iy9 y)) Y?  y YiIx Iy9 y)) 8)1 I99y)")) 8) I99y)) I99y`))x)8 Y?H y YiI9 I9)89 y9) y) I9)9 y89 y y8Y9)))) 􅹅y) I99y)9y))) 9yIY89y Yވ89 y  )) Y) yZ ) [))8 Y>J  y YiI9 I99 yi y)))9 I999 yi  yU)x)))) 􍹭y8x  yyxY ))) 􍹭y?8x  yy0x   yy8   yi  y88   yi   y   y  y yyxY)8  y晓y) )) I9 I9)x y99 yi y99 y yi yy) I9 I9)x yQ99 yi y<99 y yi y$) I9 I9)x y99 yi y))8 IY) I   i  q))xY I998 y yx I9 I999 x yi   y8 y yi  y y)) 99y  ') I99ya)9yx)Y)9y)Y)9y)Y)9y[)Y)9y)Y)9y))  y*Y)Y)9) yyaya)Y))x I9 I9 I9 I999 9 9 yi y8 I9 I9 I9 I999 9 9 y yi yxY9 y ))x I9 I9 I9 I999 9 9 yi yo8 I9 I9 I9 I999 9 9 y yi y9x4Y9 y0 ))x I9 I9 I9 I999 9 9 yi yW8 I9 I9 I9 I999 9 9 y yi y!xY9 y )) 9yɂ򇉧))  Ii 9 Y))9 9l X yyYIi xY9)#ӁYly#yII ))Y9 )#* y# II8 )i )iIi  ާ))  )IY)i )i )i )I)i9Y#Q9:щxyyy) I)|Y)|)|9Yxi)|9Y ) FɁYIY999:)px))Y9V))I9 I))Y9 IY"I8 )i )iIi x )Y9"Ŵ̉)I9Y" )Y9" I89 9 !b9!]) ) i)) Y9)J) 8)PY9)$))y9 )))y IY9 9 "VI"M"K"F79)y) y9 i) )| 8¹ ~Yi Y iyX) y9 ) )x ) 8 x|!~YxY)i I8y)y Yyi) y9 ) I) )YY9 ) )PYY9 )xoY IyY))))칭yY) I) I i) I i yi)- )| 8¹ ~Yi Y iyyX   _X T SH) ) 8  M) 8 x|!~Y8Y)i 8)x  X ) YYeI,)0όi IXցYȃYYY )칉IO乂Y A. щ89۸)R) n 9F )9Y99 99I9 )VY9)YN9)YN9)WW9)9)9)999&i۰)  ) 99F)IyYy)4I9Qy)4Y9) < Q8 x )Y i )Y i )Yi8 )Yix )Yi))&NYyܡyi96YY 9))y)P%Nx)yi97YY9))$H8)y9)y9( yL N))y9V))y9W)I9X)iyyi9S) )yYyi9TY9U9:99<9F)| Q )8Y)YY Y92 )y 2y i¨ yٹyYiX28)y9)I9)I 22 h):Ii^9Y9:۸ Q щx))|8Y)YY ):92n  2 yyiX29=Y2 h):XI)=9)Uy9U x Q)8@Y Q):) $Hxi)9)i)y)y99)щ \9495)V~ Q%Nx 84fy "y" yY YYyi)595 Q 84Ay "y yYi YYyi)595 Q)8X4YY)&NYyi96)x)PX5YY)y97&N < y)j)h)n)l)Yy C Q щxy)6)74Ȁ̅y "Y}ާIi Q)6& Nx)78)5XY7йY99 Q&N8$Hxi)Xѹ)X҉89)8i9ixi):Xѹ)X҉89)8i9ii9B9AȳY?)iII))VI9 Q$Hx ?)?I)9 ) 9 Ɖ^v<> A))y)10Yx)Y) i9 ) i9 Ɖefdb i ?)Y)yi)yYyyyIY8i) y~I9YyyЉsI8iY9;)<9 h\IZ ?8XLyYRȃYY Q$VxXA) x)BYy \) Q$Hx)Fx);<< ~)9=y 8 \ yi8))VI)Wi9)=yyYyi)= Q$Hy 8C \I8;X)\\)<;):x 8 pi)< Q$H8 ?9x)?9I) 9)<;):8 Q$H)?9x)C9I) 9)9E ?8Y9GH Q)Y )FX<9F8)x):x)<;X<9F9< ~< ~)F)Ex˂ Nщx)x)x NщY9|)X| ˩ ©8 LI)DY t LI)I)azx)|!~x):9 Z)EI ^ɹ h )az|8 x y hY)<;X8   \)K\yI"W x YY:}8 ) 9I9Y9 ƉB@9z9:S8 ĶIIY YYƮ:=Ɓ yzjx7h)IRI):9YzO) `I=IzA9N)yyʳz4  )y94yi )xY<9)9I9YY9ނz )y9܇yi q9)9Iy)y9yi9yY9y)y9yi Y99YyǮ9y)y9Pyif9Y9)9rIy)y9yi9)yY9Z9)9NI9YY9Eނ~ɇcyII) щyyܹIyi 99й v)Ii ?)Ii )!Ii 9zyC t)"Ii )Ii )9 I8y9 yyyiY9RY 9 I Y988 9iYY,8Â)2/YiIb))YY8))I)8YY8m)I0Y9.LOG.LGO.TMP)^98)T9) ))yȑy9 ))yy ))yYXyiI9Iu Y9)-9))8)9Y9~)))x)幢n9);f9i YI)y)8NY))p89Ii))i 9Y8 )) 9x)) 9 ))yy9 ))yYXy ))yyiI9ȉIt?DY9)|9))x)9) 9)))x)幢9):9)y )))p89)I)9xYI ) 9x))  ))y9 ))y9 ))y8yYY)y9y ))y!yԹY)y9ȫY9!Ysot ~Yf) )ݘ *ېiY9)͉yyYyi) !9Yiyyi ԁY9)|9#)x)9) 9))x)幢9):9)Y )ݘ =si))p)9ʼn)ʼn7Ĺ'Ĺ9I9)6&9)9I9Y!)9I9xY9)-9Y )9) 9)8)9Y9))x*)幢9);9i !)))p8Yx)yi)8X!))pY9))5I%Ii9!)))i 9Yxi))Yi ! BY)͉)8 Xy))pYyi)9)8Ĺ(Ĺ9Yx9yYyyiȉ!)9yYyyi) 8Ή1234։!"#$Oy։++++))py >+9)I?+9 щ@+9IA+9) !9I9 щ!9I9)x )Ii ))|Y)Y )Y y YC YyiX) yi !IY)͉)9yYyyi))YY )I9 0) 9xY) yvI))x))!8YY)8iyIȫYYӦI)Y)) x)Y)Y)Sisi)Didi)RiriљYY))Y))Y))Yi )) )Y )))  Y⇩) Y99 ) x ) 9 Y) x)tȃI9)9tII ) )8Y9 I ĹI yyyiyyi y y Yi Y   8 Y) )/Yx Y$  y YiIy8 x )Y Y)IIy8 )9t_tXIIy@晓ytNщYtDII剁Y t9yyi yyi)) y ) y?晓yщY)9)Y 9 yyyi 9) ) xyAY 9)y? x)9 ) )Y  yyyyi)) 𪋈8 )Y Y)II8 )98) 9Y9s)) y ~Yyщ)/)yY   yi yyi) )Y 9)Y9)) )N9 Y   )Y9)@ѹy ) x )xY+x )Y ʹ*x)*xY ʹ )Y 8i8y Y )))8 )  ))8 ) )8)8)x  y)x)8x) ѣ ) Ɋ)8E) y  ))D EE))x 9))  0 {0i9 q o) ʙ) ʩ))  Y09 R P) ʙ))  >09 7 5) ʙ) ʙ) &)8 09)x )  ʩ)) ) )x)x ) )) )  ) )) ) ) ˳ )ʙ)  )ʩ)) ) )y)0BY9Yx)) )yY)YЧ٩ɂ@ 9)) yG)0IiЉ)0m)1iypxTI P) Iyy px=Iy ѹp/IxЉɉx ))pƉ9);*Program requires LANG_RT: relink without SD_NO_LANG_RT.OB 4x8DOx00@0ypEi0I ))ȹyIlj9  FATAL RUNTIME ERROR: TERMINATION THRU ?BOMB 0 .@'Fo 'Hqk'HqkAPPLY_SD_UPDATE.CLI  [!equal,,RCS] **************************************************************** $Id: apply_sd_update.cli,v 1.5 1995/07/11 20:47:36 mark Exp mark $ $Log: apply_sd_update.cli,v $ Revision 1.5 1995/07/11 20:47:36 mark Updated revision and copyright Revision 1.4 1994/03/11 17:27:47 mark Inserted previous log comments Revision 1.3 1994/03/11 01:45:18 mark Added RCS Id and Log fields Revision 1.2 1994/03/10 23:04:57 mark Added support for SPY and PLAY .OB_PATCH_LIST's Revision 1.1 1994/03/10 22:05:09 mark Initial revision *********************************************************************** [!end] comment APPLY_SD_UPDATE.CLI Screen Demon rev 3.60.01 comment Copyright (C) 1988-1995, Threshold, Inc., All Rights Reserved comment -------------------------------------------------------- comment apply_sd_update.cli push prompt pop searchlist [!searchlist]& [!nequal,[!path =],[!path [!edirectory [!pathname %0\%.cli]]]]& [!edirectory [!pathname %0\%.cli]]& [!end] defacl +,oware write write Screen Demon update installation write ================================ write push [!equal,,[!path :screen_demon_3.60]] write No SCREEN_DEMON_3.60 directory found in : - creating one. create/directory/max=999999999 :screen_demon_3.60 write [!end] write directory :screen_demon_3.60 directory/1=error/2=error :screen_demon_3.60 comment If there is no MEM subdirectory, create it [!equal,,[!path =mem]] write Creating MEM subdirectory in [!path =] create/directory/max=999999999 mem [!end] [!equal,,[!path =conlog]] write Creating CONLOG subdirectory in [!path =] create/directory/max=999999999 conlog [!end] comment Set proper ACL's for the Screen Demon subdirectories acl :screen_demon_3.60 [!user],oware +,re acl :screen_demon_3.60:(mem,conlog) +,ware acl/2=ignore :screen_demon_3.60:sd_post_office +,ware comment If standard Screen Demon inner ring program and shared library comment are not in the Screen Demon directory, create links for them [!equal,,[!path =SCREEN_DEMON_RING_6.PR]] [!nequal,,[!path SCREEN_DEMON_RING_6.PR]] ((write,),)create/link SCREEN_DEMON_RING_6.PR & [!path SCREEN_DEMON_RING_6.PR] [!end] [!end] [!equal,,[!path =SCREEN_DEMON.SL]] [!nequal,,[!path SCREEN_DEMON.SL]] ((write,),)create/link SCREEN_DEMON.SL [!path SCREEN_DEMON.SL] [!end] [!end] comment Now return to the original directory where this macro was executed pop comment Flag set if any update patches are installed var0 0 write Patching main library SCREEN_DEMON.LB... [!equal,,[!path LB.PATCH_LIST]] write ,,,,No patches required for SCREEN_DEMON.LB [!else] xeq patch/t=[!path SCREEN_DEMON.LB]/p=([LB.PATCH_LIST])/yes var0 1 [!end] write write Patching inner ring interface module SD_INTERFACE_IR.OB... [!equal,,[!path IR.PATCH_LIST]] write ,,,,No patches required for SD_INTERFACE_IR.OB [!else] x patch/t=[!path sd_interface_ir.ob]/p=([ir.patch_list])/yes var0 1 [!end] write write Patching CEO interface module SD_CEO_INTERFACE.OB... [!equal,,[!path CEO.PATCH_LIST]] write ,,,,No patches required for SD_CEO_INTERFACE.OB [!else] x patch/t=[!path sd_ceo_interface.ob]/p=([CEO.PATCH_LIST])/yes var0 1 [!end] write write Patching WordPerfect interface module SD_WP_SHELL.OB... [!equal,,[!path WP.PATCH_LIST]] write ,,,,No patches required for SD_WP_SHELL.OB [!else] x patch/t=[!path sd_wp_shell.ob]/p=([WP.PATCH_LIST])/yes var0 1 [!end] write write Patching Screen Demon registration program SD_REGISTER.PR... [!equal,,[!path REG.PATCH_LIST]] write ,,,,No patches required for SD_REGISTER.PR [!else] x patch/t=[!path sd_register.pr]/p=([REG.PATCH_LIST])/yes [!end] comment Rebuild things only if any patches were installed in libraries and/or comment .OB modules above, or if there are any program-level patches [!nequal,,[!path NONICX.PATCH_LIST]] var0 1 [!end] [!nequal,0,[!var0]] write write Rebuilding default inner ring program SCREEN_DEMON_RING_6.PR... make_sd_inner_ring write write Rebuilding default shared library SCREEN_DEMON.SL... make_screen_demon.sl [!end] var1 0 write write Patching Spy program module SD_SPY.OB... [!equal,,[!path SPY.OB.PATCH_LIST]] write ,,,,No patches required for SPY.OB [!else] x patch/t=[!path spy.ob]/p=([spy.ob.patch_list])/yes var1 1 [!end] [!nequal,0,[!uadd [!var0],[!var1]]] write write Rebuilding SD_SPY.PR program... make_sd_spy [!end] var1 0 write write Patching Play program module SD_PLAY.OB... [!equal,,[!path PLAY.OB.PATCH_LIST]] write ,,,,No patches required for PLAY.OB [!else] x patch/t=[!path play.ob]/p=([play.ob.patch_list])/yes var1 1 [!end] [!nequal,0,[!uadd [!var0],[!var1]]] write write Rebuilding SD_PLAY.PR program... make_sd_play [!end] write write Screen Demon update installation complete! pop .@'Fo'Hql'HqlJMAKE_PRISWI_CONFIG.CLI  [!equal,,RCS] **************************************************************** $Id: make_priswi_config.cli,v 1.4 1995/07/11 20:47:41 mark Exp mark $ $Log: make_priswi_config.cli,v $ Revision 1.4 1995/07/11 20:47:41 mark Updated revision and copyright Revision 1.3 1994/03/11 17:27:47 mark Inserted previous log comments Revision 1.2 1994/03/11 01:45:18 mark Added RCS Id and Log fields Revision 1.1 1994/03/10 22:05:09 mark Initial revision *********************************************************************** [!end] comment MAKE_PRISWI_CONFIG.CLI Screen Demon rev 3.60.01 comment Copyright (C) 1988-1995, Threshold, Inc., All Rights Reserved comment -------------------------------------------------------- [!equal,,comment] This macro creates a customized SD_PRISWI_CONFIG file which will be accessed at runtime by Screen Demon's SD_PRISWI print file redirector routine. [!end] push prompt pop searchlist [!searchlist]& [!nequal,[!path =],[!path [!edirectory [!pathname %0\%.cli]]]]& [!edirectory [!pathname %0\%.cli]]& [!end] ((write x/s),x/s) & masm/ps=masm_32char.ps/o=SD_PRISWI_CONFIG%0/% & SD_PRISWI_DEFINES SD_PRISWI_CONFIG [!equal,(),([!string])] ((write x/s),x/s) link/supst/nbot=0/udf/elementsize=4 SD_PRISWI_CONFIG [!equal,(),([!string])] delete/2=ignore SD_PRISWI_CONFIG ((write renamed),rename) SD_PRISWI_CONFIG.PR SD_PRISWI_CONFIG ((write deleted),delete) SD_PRISWI_CONFIG.OB [!end] [!end] pop .@'Fp'Hqm'Hqm=$MAKE_SCREEN_DEMON.VM.CLI = [!equal,,RCS] **************************************************************** $Id: make_screen_demon.vm.cli,v 1.4 1995/07/11 20:56:28 mark Exp mark $ $Log: make_screen_demon.vm.cli,v $ Revision 1.4 1995/07/11 20:56:28 mark Updated revision and copyright Revision 1.3 1994/03/11 17:27:47 mark Inserted previous log comments Revision 1.2 1994/03/11 01:45:18 mark Added RCS Id and Log fields Revision 1.1 1994/03/10 22:05:09 mark Initial revision *********************************************************************** [!end] comment MAKE_SCREEN_DEMON.VM.CLI Screen Demon rev 3.60.01 comment Copyright (C) 1988-1995, Threshold, Inc., All Rights Reserved comment -------------------------------------------------------- [!equal,,COMMENT] This macro creates a new SCREEN_DEMON_3.00.VM file. This file is used by Screen Demon revision 3.00 thru 3.60. It expects to find the console type assignments in the file SCREEN_DEMON.CONTYPES [!end] push prompt pop directory/1=error/2=error :screen_demon_3.60 searchlist [!searchlist]& [!nequal,[!path =],[!path [!edirectory [!pathname %0\%.cli]]]]& [!edirectory [!pathname %0\%.cli]]& [!end] defacl +,ware comment If there is no MEM subdirectory, create it [!equal,,[!path =mem]] write No [!path =]:MEM subdirectory found - creating one. create/directory/max=999999999 mem [!end] comment If there is no CONLOG subdirectory, create it [!equal,,[!path =conlog]] write No [!path =]:CONLOG subdirectory found - creating one. create/directory/max=999999999 conlog [!end] write x/s masm/ps=masm_32char.ps/o=SCREEN_DEMON_3.00.VM & SD_VM_DEFINES SD_TERMCAPS SCREEN_DEMON.CONTYPES [!equal,(),([!string])] x/s link/udf/supst/overwrite/nbot=512/elementsize=20 SCREEN_DEMON_3.00.VM [!equal,(),([!string])] delete/2=ignore SCREEN_DEMON_3.00.VM.bu rename/2=ignore SCREEN_DEMON_3.00.VM<,.bu> rename SCREEN_DEMON_3.00.VM<.pr,> acl SCREEN_DEMON_3.00.VM +,WARE delete/2=ignore SCREEN_DEMON_3.00.VM. write write SCREEN_DEMON_3.00.VM is ready for use write [!end] [!end] pop .@'Fo'Hq}'Hq} tMAKE_SD_B32_USERSUBS.CLI  [!equal,,RCS] **************************************************************** $Id: make_sd_b32_usersubs.cli,v 1.4 1995/07/11 20:47:43 mark Exp mark $ $Log: make_sd_b32_usersubs.cli,v $ Revision 1.4 1995/07/11 20:47:43 mark Updated revision and copyright Revision 1.3 1994/03/11 17:27:47 mark Inserted previous log comments Revision 1.2 1994/03/11 01:45:18 mark Added RCS Id and Log fields Revision 1.1 1994/03/10 22:05:09 mark Initial revision *********************************************************************** [!end] comment MAKE_SD_B32_USERSUBS.CLI Screen Demon rev 3.60.01 comment Copyright (C) 1988-1995, Threshold, Inc., All Rights Reserved comment -------------------------------------------------------- [!equal,,comment] This macro creates the Screen Demon interface module for B32. Usage: MAKE_SD_B32_USERSUBS{/O=modulename}{/L=listfile} {other source files} The interface module should be linked with the B32 interpreter to allow B32 programs to call Screen Demon routines. The filename of this module can be specified with the /O= global switch. If no /O= global switch is given, the filename will be SD_B32_USERSUBS.OB This macro will also create a text file containing a list of all Screen Demon routines and their corresponding UCALL numbers. The name for this file can be specified with the /L= global switch. If no /L= switch is given, the filename will be SD_B32_UCALLS.LS Additional global switches for MASM can be included if needed. Additional source files can be included if desired as command line arguments. If present, these files must end with .EOF, not .END!!! NOTE: The MASM phase can be skipped if just the UCALL listing is desired by including the /NOMASM global switch. The UCALL listing phase can be suppressed by including the /NOLIST global switch. [!end] push prompt pop searchlist [!searchlist]& [!nequal,[!path =],[!path [!edirectory [!pathname %0\%.cli]]]]& [!edirectory [!pathname %0\%.cli]]& [!end] string/k [!equal,,%0/nomasm%] ((write x/s),x/s) & masm/ps=masm_32char.ps/o=[!equal,,%0/o=%]SD_B32_USERSUBS[!else]%0/o=%[!end]%0\nolist% & SD_B32_DEFINES SD_B32_UCALLS %1-% SD_B32_USERSUBS [!equal,(),([!string])] write [!equal,,%0/o=%]SD_B32_USERSUBS[!else]%0/o=%[!end].OB created write [!end] [!end] comment If the MASM was successful, create the SCREEN DEMON UCALL listing comment by executing the UCALL declarations file as a CLI macro. [!equal,(),([!string]%0/nolist%)] write Building Screen Demon UCALL listing file... string [!nequal,,%0/l=%]%0/l=%[!else]SD_B32_UCALLS.LS[!end] delete/2=ignore [!string] write/l=[!string] Screen Demon UCALL Routines for B32 write/l=[!string] write/l=[!string] Screen Demon routine name[!ascii 11]UCALL[!ascii 11]Argument types delete/2=ignore ?<,?rtn>.tmp write/l=?narrow.tmp num-expr[!ascii 46] write/l=?wide.tmp num-expr[!ascii 46] write/l=?string.tmp string-expr[!ascii 46] write/l=?narrow?rtn.tmp num-var[!ascii 46] write/l=?wide?rtn.tmp num-var[!ascii 46] write/l=?string?rtn.tmp string-var[!ascii 46] comment Initialize beginning SD UCALL number var0 1 [sd_b32_ucalls.sr] delete/2=ignore ?<,?rtn>.tmp [!end] pop .@'Fo'H}'Hq!=kMAKE_SD_INNER_RING.CLI  [!equal,,RCS] **************************************************************** $Id: make_sd_inner_ring.cli,v 1.5 1995/07/11 20:47:50 mark Exp mark $ $Log: make_sd_inner_ring.cli,v $ Revision 1.5 1995/07/11 20:47:50 mark Updated revision and copyright Revision 1.4 1994/06/22 17:10:52 mark If /LANGRT was specified, now sets default values for the symbols .RESERVE, .STORAGE, .HPSIZE, and .STKSIZE, allowing the defaults to be overridden by switches. Revision 1.3 1994/03/11 17:27:47 mark Inserted previous log comments Revision 1.2 1994/03/11 01:45:18 mark Added RCS Id and Log fields Revision 1.1 1994/03/10 22:05:09 mark Initial revision *********************************************************************** [!end] comment MAKE_SD_INNER_RING.CLI Screen Demon rev 3.60.01 comment Copyright (C) 1988-1995, Threshold, Inc., All Rights Reserved comment -------------------------------------------------------- [!equal,,comment] This macro rebuilds the SCREEN DEMON Inner Ring subroutine program. Optional global switches: /RING=ring# Specifies the ring in which the Screen Demon inner ring program will be loaded. The default is ring 6. /CONFIG=filename Specifies an alternate configuration file to use instead of SD_SL_CONFIG. /O=inner_ring_filename Specifies an alternate filename to use for the inner ring program instead of SCREEN_DEMON_RING_.PR, where is the ring number specified by the /RING= switch. /COB32 Indicates that 32-bit VS/COBOL programs are also being linked into the inner ring program, and so will require the COBOL.LB and LANG_RT libaries. /PRISWI Causes the Printer Switcher routine to be linked with the inner ring program. The SD_PRISWI_CONFIG file must be available at runtime. /LANG_RT Indicates that the Common Language Runtime library is to be linked with the inner ring program. This switch is not necessary if the /COB32 switch is specified. /PID_SIZE= Allows a type other than HYBRID to be specified for the inner ring program. This may be necessary on AOS/VS II systems where an ANYPID type program cannot ringload a HYBRID. In that case, use /PID_SIZE=ANYPID when creating the inner ring program if the ring 7 program that will be using the inner ring program is an ANYPID type. /GATES=gate-array-module-name Specifies an alternate gate array definition .OB module that declares the gates which will be used to access the new inner ring program. A gate array module is created using the MAKE_SD_GATES.CLI macro. If this switch is not supplied, the default is to use _GATES.OB if it exists; otherwise, the default SCREEN_DEMON_RING_6_GATES.OB will be used. /WP Causes the interface routines for WordPerfect Library/Office Shell to be linked with the new inner ring program. The SHELLCOM.32.OB file provided by WordPerfect must be available. /CEO Includes an interface to CEO Mail and to the CEO Interrupt Menu. This interface uses routines from CEO Toolkit, which must be available on your system. /NOVM Causes the resulting inner ring program to run outside of the SCREEN_DEMON_3.00.VM file. This means that programs using this inner ring program will not be visible to SD_SPY, and will be unable to pass the screen image across program calls. /NOMODELID Prevents programs that use this inner ring program from querying the terminal for its model id on startup. The program will assume it is running on a D210 terminal. This switch is often used with /NOVM. Additional object modules may be included by listing them on the command line. Optional patches will be installed if they are placed in a file called SCREEN_DEMON.PAT. See the SCREEN_DEMON.OPTIONAL.PAT file for instructions on creating a SCREEN_DEMON.PAT file. Also, all available fix patches, as specified in the NONICX.PATCH_LIST file, will be installed. [!end] push prompt pop Comment Adjust the following SEARCHLIST command to fit your file system: searchlist [!searchlist]& & [!nequal,,%0/cob32/infos/lang_rt%]& [!nequal,,%0/cob32%]& :util:cobol& [!end]& [!nequal,,%0/cob32/lang_rt%]& :util:lang_rt& [!end]& [!end]& & [!nequal,[!path =],[!path [!edirectory [!pathname %0\%.cli]]]]& [!edirectory [!pathname %0\%.cli]]& [!end] Comment If required switches were not supplied, recurse with defaults [!equal,,%0/$setup%] %0\%%0\config\o\ring%/$setup& & /config=[!equal,,%0/config=%]SD_SL_CONFIG[!else]%0/config=%[!end]& & /ring=[!equal,,%0/ring=%]6[!else]%0/ring=%[!end]& & /o=[!equal,,%0/o=%][!path =]:SCREEN_DEMON_RING_[!equal,,%0/ring=%]6[!else]%0/ring=%[!end]& [!else][!equal,,[!edirectory %0/o=%]][!path =][!else][!path [!edirectory %0/o=%]][!end]:[!efile %0/o=%][!end] %-% [!else] [!equal,,[!path %0/config=%.OB]] write ERROR: cannot find configuration file %0/config=%.OB [!else] write write ,,,,Using configuration file [!path %0/config=%.OB] write ,,,,,,,,,to create %0/o=%.PR write ((write x/s),x/s) & link/tasks=32& [!equal,,%0/cob32/lang_rt%][!nequal,,%0/stack=%]%0/stack%[!else]/stack=8192[!end][!end]& /o=[!edirectory %0/o=%]:?[!pid]_sd_ir& [!equal,,%0/mtop=%]/mtop=1[!end]& [!equal,,%0/pid_size=%]/pid_size=[!equal,[!system],AOS/VS]HYBRID[!else]ANYPID[!end][!end]& %0\$setup\stack\heap\reserve\storage\o\config\gates\priswi\cob32\infos\lang_rt\ceo\wp% & & [!nequal,,%0/gates=%]& %0/gates=%& [!else][!nequal,,[!path %0/o=%_GATES.OB]]& %0/o=%_GATES& [!else][!nequal,,[!path [!ename %0/o=%]_GATES.OB]]& [!ename %0/o=%]_GATES& [!else]& screen_demon_ring_6_gates& [!end][!end][!end]& & %0/config=% & & %1-% & & sd_interface_ir& & [!nequal,,%0/wp%]& sd_wp_shell& [!nequal,,[!path :wpoffice:wpoexe:shellcom.32.ob]]& :wpoffice:wpoexe:shellcom.32& [!else][!nequal,,[!path :wpml:shellcom.32.ob]]& :wpml:shellcom.32& [!else]& shellcom.32.ob& [!end][!end]& [!end]& & [!nequal,,%0/ceo%]& sd_ceo_interface& :util:ceo_dir:it_lib.lb/multiple& [!end]& & [!nequal,,%0/priswi%]& sd_priswi& [!end]& & [!nequal,,%0/novm%]& sd_init_no_vm& [!equal,,%0/nomodelid%]& sd_no_vm_termcaps_tbl& [!end]& [!end]& & [!nequal,,%0/nomodelid%]& sd_no_model_id& [!end]& & screen_demon.lb& & [!nequal,,%0/cob32%]& cfalt ffalt cobol.lb& [!end]& & [!nequal,,%0/infos%]& [!equal,,%0/infos=%]& icall32& [!else]& dummyicall32& [!end]& [!end]& & [!nequal,,%0/cob32/lang_rt%]& [!nequal,%/reserve=%,]& .RESERVE/value=%/reserve=%& [!end]& [!nequal,%/storage=%,]& .STORAGE/value=%/storage=%& [!end]& [!nequal,%/heap=%,]& .HPSIZE/value=%/heap=%& [!end]& [!nequal,%/stack=%,]& .STKSIZE/value=%/stack=%& [!else]& .STKSIZE/value=8192& [!end]& multitasking no_queued_task_mgr inner.lb lang_rt.lb& [!else]& sd_no_lang_rt& [!end] [!nequal,(),([!string])] write [!ascii 207] write Errors prevent creation of new inner ring program! [!else] comment Install optional patches to the inner ring program [!nequal,,[!path SCREEN_DEMON.PAT]] x patch/t=[!edirectory %0/o=%]:?[!pid]_sd_ir.PR/p=SCREEN_DEMON.PAT/yes [!end] comment Install fix patches if available [!nequal,,[!path NONICX.PATCH_LIST]] x patch/t=[!edirectory %0/o=%]:?[!pid]_sd_ir.PR/p=([NONICX.PATCH_LIST])/yes [!end] [!equal,,comment] Now that the new inner ring program is ready for use, rename it to the desired name. Waiting until this point prevents users from accessing a partially-patched version. [!end] delete/2=ignore [!edirectory %0/o=%]:[!efile %0/o=%.PR] delete/2=ignore [!edirectory %0/o=%]:[!efile %0/o=%.ST] delete/2=ignore [!edirectory %0/o=%]:[!efile %0/o=%.PR.PH] write Renaming [!path [!edirectory %0/o=%]:?[!pid]_sd_ir.PR]& to [!efile %0/o=%.PR] rename [!path [!edirectory %0/o=%]:?[!pid]_sd_ir.PR]& [!efile %0/o=%.PR] write Renaming [!path [!edirectory %0/o=%]:?[!pid]_sd_ir.ST]& to [!efile %0/o=%.ST] rename [!path [!edirectory %0/o=%]:?[!pid]_sd_ir.ST]& [!efile %0/o=%.ST] [!nequal,,[!path [!edirectory %0/o=%]:?[!p =id]_sd_ir.PR.PH]] write Renaming [!path [!edirectory %0/o=%]:?[!pid]_sd_ir.PR.PH]& to [!efile %0/o=%.PR.PH] rename [!path [!edirectory %0/o=%]:?[!pid]_sd_ir.PR.PH]& [!efile %0/o=%.PR.PH] [!end] write write [!path %0/o=%.PR] is now ready for use [!end] [!end] [!end] pop .@'Fo'HN'HqMAKE_SD_PLAY.CLI  [!equal,,RCS] **************************************************************** $Id: make_sd_play.cli,v 1.5 1995/07/11 20:47:52 mark Exp mark $ $Log: make_sd_play.cli,v $ Revision 1.5 1995/07/11 20:47:52 mark Updated revision and copyright Revision 1.4 1994/03/11 17:27:47 mark Inserted previous log comments Revision 1.3 1994/03/11 01:45:18 mark Added RCS Id and Log fields Revision 1.2 1994/03/10 23:04:57 mark Added missing & to 2nd line of SEARCHLIST command Revision 1.1 1994/03/10 22:05:09 mark Initial revision *********************************************************************** [!end] comment MAKE_SD_PLAY.CLI Screen Demon rev 3.60.01 comment Copyright (C) 1988-1995, Threshold, Inc., All Rights Reserved comment -------------------------------------------------------- [!equal,,comment] This macro creates a new version of the SD_PLAY program, so that its Screen Demon configuration options can be changed. Optional global switches: /CONFIG=filename specifies an alternate configuration file to use instead of SD_SL_CONFIG. /O=programname specifies an alternate program name to create instead of the default name SD_PLAY.PR /COB32 indicates that 32-bit VS/COBOL programs are also being linked with SD_PLAY, and so will require the COBOL.LB and LANG_RT libaries. /LANG_RT indicates that the Common Language Runtime library is to be linked with the new SD_PLAY program. This switch is not necessary if the /COB32 switch is specified. The /PRISWI global switch causes the Printer Switcher routine to be linked with the new version of SD_PLAY. The SD_PRISWI_CONFIG file must be available at runtime. /WP causes the interface routines for WordPerfect Library/Office Shell to be linked with the new SD_PLAY program. The SHELLCOM.32.OB file provided by WordPerfect must be available at link time. /CEO includes an interface to CEO Mail and to the CEO Interrupt Menu. This interface uses routines from CEO Toolkit, which must be available on your system at link time. /NOMODELID prevents the resulting Play from querying the terminal for its model id on startup. Play will assume it is running on a D210 terminal. Additional object modules may be included by listing them on the command line. Optional patches will be installed if they are placed in a file called SCREEN_DEMON.PAT. See the SCREEN_DEMON.OPTIONAL.PAT file for instructions on creating a SCREEN_DEMON.PAT file. Also, all available fix patches, as specified in the NONICX.PATCH_LIST file, will be installed. [!end] push prompt pop Comment Adjust the following SEARCHLIST command to fit your file system: searchlist [!searchlist]& & [!nequal,,%0/cob32/infos/ceo/lang_rt%]& [!nequal,,%0/cob32%]& :util:cobol& [!end]& [!nequal,,%0/cob32/ceo/lang_rt%]& :util:lang_rt& [!end]& [!end]& & [!nequal,[!path =],[!path [!edirectory [!pathname %0\%.cli]]]]& [!edirectory [!pathname %0\%.cli]]& [!end] [!equal,,%0/config=%] %0\%%0\config%/config=SD_SL_CONFIG %1-% [!else][!equal,,%0/o=%] %0\%%0\o%/o=SD_PLAY %1-% [!else] [!equal,,[!path %0/config=%.OB]] write ERROR: cannot find configuration file %0/config=%.OB [!else] write write ,,,,Using configuration file [!path %0/config=%.OB] write ,,,,,,,,,to create %0/o=%.PR write (write,x/s) link/stack=20000/tasks=6& [!nequal,,%0/cob32/ceo/lang_rt%]/mtop=1[!end]& %0\config\priswi\wp\ceo\cob32\infos\lang_rt% & sd_play/start sd_play_help_screen & & %0/config=%& & %1-%& & [!nequal,,%0/wp%]& sd_wp_shell& [!nequal,,[!path :wpoffice:wpoexe:shellcom.32.ob]]& :wpoffice:wpoexe:shellcom.32& [!else][!nequal,,[!path :wpml:shellcom.32.ob]]& :wpml:shellcom.32& [!else]& shellcom.32.ob& [!end][!end]& [!end]& & [!nequal,,%0/ceo%]& sd_ceo_interface& :util:ceo_dir:it_lib.lb/multiple& [!end]& & [!nequal,,%0/priswi%]& sd_priswi& [!end]& & [!nequal,,%0/nomodelid%]& sd_no_model_id& [!end]& & screen_demon.lb& & [!nequal,,%0/cob32%]& cfalt ffalt cobol.lb& [!end]& & [!nequal,,%0/infos%]& [!equal,,%0/infos=%]& icall32& [!else]& dummyicall32& [!end]& [!end]& & [!nequal,,%0/cob32/ceo/lang_rt%]& multitasking no_queued_task_mgr lang_rt.lb& [!else]& sd_no_lang_rt& [!end] [!equal,(),([!string])] comment Install optional patches to the new SD_PLAY [!nequal,,[!path SCREEN_DEMON.PAT]] x patch/t==%0/o=%.PR/p=SCREEN_DEMON.PAT/yes [!end] comment Install fix patches if available [!nequal,,[!path NONICX.PATCH_LIST]] x patch/t==%0/o=%.PR/p=([NONICX.PATCH_LIST])/yes [!end] [!nequal,,[!path PLAY.PATCH_LIST]] x patch/t==%0/o=%.PR/p=([SPY.PATCH_LIST])/yes [!end] [!end] [!end] [!end][!end] pop .@'Fo/'Hv'Hq SD_CLINK.CLI  [!equal,,RCS] **************************************************************** $Id: sd_clink.cli,v 1.4 1995/07/11 20:48:46 mark Exp mark $ $Log: sd_clink.cli,v $ Revision 1.4 1995/07/11 20:48:46 mark Updated revision and copyright Revision 1.3 1994/03/11 17:27:47 mark Inserted previous log comments Revision 1.2 1994/03/11 01:45:18 mark Added RCS Id and Log fields Revision 1.1 1994/03/10 22:05:09 mark Initial revision *********************************************************************** [!end] comment SD_CLINK.CLI Screen Demon rev 3.60.01 comment Copyright (C) 1988-1995, Threshold, Inc., All Rights Reserved comment -------------------------------------------------------- [!equal,,comment] This macro links a 32-bit COBOL program with Screen Demon. All standard CLINK switches are supported. Following a successful link, if optional Screen Demon patches exist, they will be applied to the new program. /SDRING= or /SDRING= Causes the program to be linked so that it loads the specified SCREEN DEMON inner ring program, instead of linking the SCREEN DEMON routines into the COBOL program. If just a is given, the inner ring CALLS module name will be SCREEN_DEMON_RING__CALLS.OB Inner ring CALLS modules are created using MAKE_SD_GATES.CLI /SHARED If /SDRING= is not specified, /SHARED causes the program to be linked so that it uses the shared library version of SCREEN DEMON in addition to the shared libraries for COBOL and LANG_RT. If /SDRING= was also included, the program will run SCREEN DEMON in the specified inner ring, but it will still use the COBOL and LANG_RT shared libraries. /CONFIG=config-filename Specifies that the indicated configuration file should be used instead of the default SD_CONFIG.OB file. /PARTURBO Causes the program start up in Partial Turbo mode rather than Full Turbo. Partial Turbo provides the continual screen updates that occur without Turbo, but still transmits only the characters that change. Partial Turbo is much slower than Full Turbo, however, because screen writes are not buffered, thus requiring more system calls. /NOTURBO Forces the program to start with Turbo Display mode completely off. Use this switch only when absolutely necessary. It can disrupt SCREEN DEMON's windowing environment. Try the /PARTURBO switch instead. /PRISWI Causes the Printer Switcher routine to be linked with the COBOL program. Do not use this switch with the /SHARED or /SDRING switches. The SD_PRISWI_CONFIG file must be available at runtime. /WP Causes the interface routines for WordPerfect Library/Office Shell to be linked with the program. The SHELLCOM.32.OB file provided by WordPerfect must be available. /CEO Includes an interface to CEO Mail and to the CEO Interrupt Menu. This interface uses routines from CEO Toolkit, which must be available on your system. /NOVM Causes the resulting program to run outside of the SCREEN_DEMON_3.00.VM file. This means that it will not be visible to SD_SPY, but will also be unable to pass the screen image across program calls. /NOMODELID Prevents the resulting program from querying the terminal for its model id on startup. The program will assume it is running on a D210 terminal. This switch is often used with /NOVM. Optional patches will be installed if they are placed in a file called SCREEN_DEMON.PAT. See the SCREEN_DEMON.OPTIONAL.PAT file for instructions on creating a SCREEN_DEMON.PAT file. [!end] push prompt pop searchlist [!searchlist]& [!nequal,[!path =],[!path [!edirectory [!pathname %0\%.cli]]]]& [!edirectory [!pathname %0\%.cli]]& [!end] write string/k [!equal,,%0/shared/sdring=%] [!equal,,%0/config=%] [!equal,,[!path SD_CONFIG.OB]] write ,,,,Configuration file SD_CONFIG.OB not found! string ERROR [!else] write ,,,,Using configuration file [!path SD_CONFIG.OB] [!end] [!else] [!equal,,[!path %0/config=%.OB]] write ,,,,Configuration file %0/config=%.OB not found! string ERROR [!else] write ,,,,Using configuration file [!path %0/config=%.OB] [!end] [!end] write [!end] [!equal,,[!string]] ((write,),)CLINK/s%0\s\parturbo\noturbo\config\priswi\ceo\wp\sdring% & & %1%& & [!nequal,,%0/sdring=%]& %2-% & & [!equal,6,%0/sdring=%]& SCREEN_DEMON_RING_6_CALLS& [!else][!equal,5,%0/sdring=%]& SCREEN_DEMON_RING_5_CALLS& [!else][!equal,4,%0/sdring=%]& SCREEN_DEMON_RING_4_CALLS& [!else]& %0/sdring=%& [!end][!end][!end]& SD_INNER_RING_INTF& & [!else]& [!equal,,%0/shared%]& [!nequal,,%0/config=%]& %0/config=%& [!else]& sd_config& [!end]& [!end]& & %2-% & & sd_cobol32_intf & & [!nequal,,%0/wp%]& sd_wp_shell& [!nequal,,[!path :wpoffice:wpoexe:shellcom.32.ob]]& :wpoffice:wpoexe:shellcom.32& [!else][!nequal,,[!path :wpml:shellcom.32.ob]]& :wpml:shellcom.32& [!else]& shellcom.32.ob& [!end][!end]& [!end]& & [!nequal,,%0/ceo%]& [!nequal,,%0/shared%]& sd_ceo_interface_rtd& [!else]& sd_ceo_interface& [!end]& :util:ceo_dir:it_lib.lb/multiple& [!end]& & [!equal,,%0/shared%]& [!nequal,,%0/priswi%]& sd_priswi& [!end]& [!end]& & [!nequal,,%0/novm%]& sd_init_no_vm& [!equal,,%0/nomodelid%]& sd_no_vm_termcaps_tbl& [!end]& [!end]& & [!nequal,,%0/nomodelid%]& sd_no_model_id& [!end]& & [!nequal,,%0/shared%]shared_[!end]screen_demon.lb & [!end]& [!end] [!equal,,comment] NOTE: The standard CLINK macro supplied by DG discards the results returned by LINK. To have these results passed back to this macro, the PUSH and POP done in CLINK.CLI must be removed. Then, if the link has errors, this macro will not attempt to install any patches. [!end] comment If the link was successful (or unknown), install applicable patches comment unless /SHARED or /SDRING switches were used. [!equal,(),([!string]%0/shared/sdring=%)] comment Install special anti-Turbo patches to the new program [!nequal,,%0/PARTURBO%] x patch/t=%1%.PR/p=PAR_TURBO.PAT/yes [!else][!nequal,,%0/NOTURBO%] x patch/t=%1%.PR/p=NO_TURBO.PAT/yes [!end][!end] comment Install user-selected patches to the new program [!nequal,,[!path SCREEN_DEMON.PAT]] x patch/t=%1%.pr/p=SCREEN_DEMON.PAT/yes [!end] comment Install fix patches if available [!nequal,,[!path NONICX.PATCH_LIST]] x patch/t=%1%.pr/p=([NONICX.PATCH_LIST])/yes [!end] [!end] pop .@'Foj'Hq'Hq SD_SEND_MAIL.CLI  [!equal,,RCS] **************************************************************** $Id: sd_send_mail.cli,v 1.4 1995/07/11 20:50:44 mark Exp mark $ $Log: sd_send_mail.cli,v $ Revision 1.4 1995/07/11 20:50:44 mark Updated revision and copyright Revision 1.3 1994/03/11 17:27:47 mark Inserted previous log comments Revision 1.2 1994/03/11 01:45:18 mark Added RCS Id and Log fields Revision 1.1 1994/03/10 22:05:09 mark Initial revision *********************************************************************** [!end] comment SD_SEND_MAIL.CLI Screen Demon rev 3.60.01 comment Copyright (C) 1988-1995, Threshold, Inc., All Rights Reserved comment -------------------------------------------------------- push prompt pop searchlist [!searchlist]& [!nequal,[!path =],[!path [!edirectory [!pathname %0\%.cli]]]]& [!edirectory [!pathname %0\%.cli]]& [!end] X SD_SEND_MAIL%0/% %1-% pop .@'Fo^'Hq'Hq ASD_POSSESS_ICX_1.60.PAT  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; $Id: sd_possess_icx_1.60.pat,v 1.5 1995/07/11 20:50:21 mark Exp mark $ ; ; $Log: sd_possess_icx_1.60.pat,v $ ; Revision 1.5 1995/07/11 20:50:21 mark ; Updated revision and copyright ; ; Revision 1.4 1994/05/25 15:55:16 mark ; The ICX..KTO location contained ..KTO+1 as for ICX 1.40-1.53, ; not ..KTO as needed for ICX 1.60 ; ; Revision 1.3 1994/03/11 17:27:47 mark ; Inserted previous log comments ; ; Revision 1.2 1994/03/11 01:45:18 mark ; Added RCS Id and Log fields ; ; Revision 1.1 1994/03/10 22:05:09 mark ; Initial revision ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;The patches in this file activate the SCREEN DEMON routines. ; ;This file applies only to revision 1.60 of the Interactive COBOL ; interpreter running under AOS/VS, using revision 3.60 of SCREEN DEMON ; for Interactive COBOL. %PROGRAM ;Catch beginning of initialization routine so that SCREEN DEMON can be ; initialized also. INIT+2 [LLEF 2,SCRPK,0] [LJMP SD_ICX_INIT,1] ^+1 [] [] ^+1 [] [] ;This patch allows Screen Demon to know when ICX has an ACCEPT ; in progress, and if multiple console ?READ's are actually ; part of the same ACCEPT. RDFD [WSSVR 10] [LJMP SD_ICX_RDFD,1] ^+1 [] [] ^+1 [NLDAI -1,1] [] ^+1 [] [WADC 1,1] ;Intercept EXIT PROGRAM so that if the exiting ICOBOL program was called via ; a "hot" key, control can be returned to the original ACCEPT. A.XIT+3 [LJMP COBOL,0] [LJMP SD_ICX_EXIT_PROGRAM,1] ^+1 [] [] ^+1 [] [] ;Divert STOP RUN processing so that it can be forced to act like an ; EXIT PROGRAM if it is encountered in a program that was called ; from a hot key. OAT+232 A.STP-.\ SD_ICX_STOP_RUN_HANDLER-.\ ^+1 [] [] ;Divert CALL PROGRAM processing so that it can be forced to act like an ; EXIT PROGRAM if it is encountered in a program that was called from ; a hot key. CHNOP+13 [XJSR WUSIN,1] [LJMP SD_ICX_CALL_PROGRAM_HANDLER,1] ^+1 [] [] ^+1 [WBR CHNOP+140] [] ICX_CALL_PROG_WUSIN_ERR CHNOP+151\ CHNOP+153\ ^+1 [] [] ;Catch ICOBOL program loads so that the name of the new active program ; can be obtained and put into the SCREEN DEMON control file. ASPRG+71 [XJSR WRPGD,1] [LJMP SD_ICX_ASPRG,1] ^+1 [] [] ^+1 [WBR ASPRG+124] [] ICX_ASPRG_SUCCESSFUL ASPRG+65\ ASPRG+74\ ^+1 [] [] ICX_ASPRG_ERROR ASPRG+136\ ASPRG+124\ ^+1 [] [] LDPRG+7 [XJSR RDPGD,1] [LJMP SD_ICX_LDPRG,1] ^+1 [] [] ^+1 [WBR LDPRG+35] [] SD_ICX_LDPRG+11 312 276 ;Catch ICX Abort so that SCREEN DEMON can reset the window environment ; if control is returning to LOGON. ; Note that the 343 in next line is actually ICX's STATUS address, ; which PATCH won't accept in the instruction format necessary. CSTOP+2 [LDA 0,343,0] [LJMP SD_ICX_CSTOP,1] ^+1 [ANDI 2,0] [] ^+1 [] [] CPERR+14 [WBR CSTOP+11] [WBR CSTOP+2] CSTOP+24 [LJSR WAIT,1] [LJMP SD_ICX_CSTOP_WAIT,1] ^+1 [] [] ^+1 [] [] ICX_INITC_FAKE_CTRL_C_CTRL_B INITC+35\ INITC+41\ ^+1 [] [] ICX_..KTO ..KTO+1\ ..KTO\ ^+1 [] [] ;********** Optional Patches ********** ;This optional patch causes Screen Demon to catch ICX-generated error ; messages displayed on line 24 so that the original contents of ; the line can be restored after showing the error message. INVAL+16 [XJSR DSPER,1] [LJMP SD_ICX_ERROR_INVAL,0] ^+1 [] [] ^+1 [XWLDA 0,-6,3] [] ^+1 [] [NOP] DSPER+104 [XJSR PWRLN,1] [LJMP SD_ICX_ERROR_MPRE,0] ^+1 [] [] ^+1 [WRTN] [] DSPER+115 [XJSR WRLN,1] [LJMP SD_ICX_ERROR_MMSG,0] ^+1 [] [] ^+1 [WRTN] [] ICX_INVAL_CONTINUE INVAL+22\ INVAL+24\ ^+1 [] [] SETDLM+1344 [XNLDA 0,2,2] {LJMP #SD_PATCH,1} ^+1 [] [] ^+1 [XNSTA 0,3,3] [] ^+1 [] [NOP] #SD_PATCH 0 [XNLDA 0,2,2] ^+1 0 [] ^+1 0 [XNSTA 0,3,3] ^+1 0 [] ^+1 0 [LJMP SETDLM+1363,1] ^+1 0 [] ^+1 0 [] SD_PATCH #SD_PATCH\ #SD_PATCH+7\ ^+1 [] [] ;The following patch is not absolutely necessary, but will improve performance ; if the advanced features of SCREEN DEMON are used. It eliminates the ; unnecessary ?LEFE system call that is always performed on returning from ; an assembler CALL routine. This does mean that any assembler routine ; that issues a ?LEFD must do its own ?LEFE before returning to ICX. CALAS+121 [XJSR @16000000006,0] [WBR .+4] ^+1 [] [NOP] ^+1 265 [NOP] ^+1 [WBR CACHR+22] [NOP] ;***** The remaining patches fix bugs in the ICX interpreter ***** ; Note that these patches are not the same ones supplied by Data General. ; The DG patches must also be applied to the new ICX interpreter. ;Fix effective address problems GETSW+55 [BTO 2,1] [WBTO 2,1] RDSEC+424 [LDA 2,4,3] [XNLDA 2,4,3] ^+1 [ADD 1,2] [] ^+1 [NLDAI 0,1] [ADD 1,2] ^+1 [] [WSUB 1,1] CHNOP+76 [BTZ 2,1] [WBTZ 2,1] CHNOP+102 [BTO 2,1] [WBTO 2,1] ;Shutdown guard task is supposed to give the rest of the interpreter time ; to shut down by itself. However, parameters in AC0 and AC1 to its ; ?WDELAY system call are reversed, so it doesn't wait at all, which ; could result in corrupted MINISAM files. INITC+171 [NLDAI 0,0] [NLDAI 11610,0] ^+1 [] [] ^+1 [NLDAI 11610,1] [WSUB 1,1] ^+1 [] [WSUB 2,2] ;CPLOG routine jumps into the middle of CHNOP routine, but stack frame size ; of CPLOG is zero, leaving CHNOP frame data vulnerable to subsequent ; subroutine calls. CPLOG+1 0 @(CHNOP+1) ;End of patches .@'Fo^'Hq'Hq qSD_POSSESS_ICX_1.51.PAT  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; $Id: sd_possess_icx_1.51.pat,v 1.4 1995/07/11 20:50:20 mark Exp mark $ ; ; $Log: sd_possess_icx_1.51.pat,v $ ; Revision 1.4 1995/07/11 20:50:20 mark ; Updated revision and copyright ; ; Revision 1.3 1994/03/11 17:27:47 mark ; Inserted previous log comments ; ; Revision 1.2 1994/03/11 01:45:18 mark ; Added RCS Id and Log fields ; ; Revision 1.1 1994/03/10 22:05:09 mark ; Initial revision ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;The patches in this file activate the SCREEN DEMON routines. ; ;This file applies only to revisions 1.51 and 1.52 of the Interactive COBOL ; interpreter running under AOS/VS, using revision 3.60 of SCREEN DEMON ; for Interactive COBOL. %PROGRAM ;Catch beginning of initialization routine so that SCREEN DEMON can be ; initialized also. INIT+2 [LLEF 2,SCRPK,0] [LJMP SD_ICX_INIT,1] ^+1 [] [] ^+1 [] [] ;This patch allows Screen Demon to know when ICX has an ACCEPT ; in progress, and if multiple console ?READ's are actually ; part of the same ACCEPT. RDFD [WSSVR 10] [LJMP SD_ICX_RDFD,1] ^+1 [] [] ^+1 [NLDAI -1,1] [] ^+1 [] [WADC 1,1] ;This patch causes the ICOBOL interpreter to return an ESCAPE KEY ; value of 99 if a console timeout occurs, instead of aborting ; with a "Runtime System Panic". SETDLM+1135 [NLDAI 67,1] {LPSHJ #SD_PATCH,1} ^+1 [] [] ^+1 [SUB# 0,1,SZR] [] #SD_PATCH 0 [WSNEI 76,0] ^+1 0 [] ^+1 0 [WBR .+5] ^+1 0 [WSNEI 67,0] ^+1 0 [] ^+1 0 [ISZTS] ^+1 0 [WPOPJ] ^+1 0 [WPOP 1,1] ^+1 0 [XNLDA 1,10,2] ^+1 0 [] ^+1 0 [XWADD 1,4,2] ^+1 0 [] ^+1 0 [WSUB 0,0] ^+1 0 [WSTB 1,0] ^+1 0 [NLDAI 99.,0] ^+1 0 [] ^+1 0 [LJMP SETDLM+670,1] ^+1 0 [] ^+1 0 [] SD_PATCH #SD_PATCH\ #SD_PATCH+23\ ^+1 [] [] ;Intercept EXIT PROGRAM so that if the exiting ICOBOL program was called via ; a "hot" key, control can be returned to the original ACCEPT. A.XIT+3 [LJMP COBOL,0] [LJMP SD_ICX_EXIT_PROGRAM,1] ^+1 [] [] ^+1 [] [] ;Divert STOP RUN processing so that it can be forced to act like an ; EXIT PROGRAM if it is encountered in a program that was called ; from a hot key. OAT+232 A.STP-.\ SD_ICX_STOP_RUN_HANDLER-.\ ^+1 [] [] ;Divert CALL PROGRAM processing so that it can be forced to act like an ; EXIT PROGRAM if it is encountered in a program that was called from ; a hot key. CHNOP+13 [XJSR WUSIN,1] [LJMP SD_ICX_CALL_PROGRAM_HANDLER,1] ^+1 [] [] ^+1 [WBR CHNOP+153] [] ICX_CALL_PROG_WUSIN_ERR CHNOP+151\ CHNOP+153\ ^+1 [] [] ;Catch ICOBOL program loads so that the name of the new active program ; can be obtained and put into the SCREEN DEMON control file. ASPRG+62 [XJSR WRPGD,1] [LJMP SD_ICX_ASPRG,1] ^+1 [] [] ^+1 [WBR ASPRG+136] [] LDPRG+7 [XJSR RDPGD,1] [LJMP SD_ICX_LDPRG,1] ^+1 [] [] ^+1 [WBR LDPRG+35] [] ;Catch ICX Abort so that SCREEN DEMON can reset the window environment ; if control will return to LOGON. ; Note that the 341 in next line is actually ICX's STATUS address, ; which PATCH won't accept in the instruction format necessary. CSTOP+2 [LDA 0,341,0] [LJMP SD_ICX_CSTOP,1] ^+1 [ANDI 2,0] [] ^+1 [] [] CPERR+14 [WBR CSTOP+11] [WBR CSTOP+2] CSTOP+24 [LJSR WAIT,1] [LJMP SD_ICX_CSTOP_WAIT,1] ^+1 [] [] ^+1 [] [] ;Catch entry into the ICX Debugger so that debugger window can be activated DB0 [LDASB 3] [LPSHJ SD_ICX_ENTER_DEBUGGER,1] ^+1 [STASP 3] [] ^+1 [STAFP 3] [] SBUGG [LDASB 3] [LPSHJ SD_ICX_ENTER_DEBUGGER,1] ^+1 [STASP 3] [] ^+1 [STAFP 3] [] EBUGG [LDASB 3] [LPSHJ SD_ICX_ENTER_DEBUGGER,1] ^+1 [STASP 3] [] ^+1 [STAFP 3] [] ;Catch exit from the ICX Debugger so that debugger window can be deactivated DB0+132 [LDASB 3] [LPSHJ SD_ICX_LEAVE_DEBUGGER,1] ^+1 [STASP 3] [] ^+1 [STAFP 3] [] ;Intercept ICX's attempt to input a debugger command so that this can be done ; in a proper screenedit fashion. SCAN0+354 [XJSR RDFD,1] [LJSR SD_ICX_READ_DEBUGGER_COMMAND,1] ^+1 [] [] ^+1 [WBR SCAN0+333] [] ICX_DEBUG_RESTART_ADDR 0 SCAN0+303\ ^+1 0 [] ;********** Optional Patches ********** ;This optional patch causes Screen Demon to catch ICX-generated error ; messages displayed on line 24 so that the original contents of ; the line can be restored after showing the error message. ; INVAL+14 [XJSR DSPER,1] [LJMP SD_ICX_ERROR_INVAL,0] ^+1 [] [] ^+1 [XWLDA 0,-6,3] [] ^+1 [] [NOP] DSPER+104 [XJSR PWRLN,1] [LJMP SD_ICX_ERROR_MPRE,0] ^+1 [] [] ^+1 [WRTN] [] DSPER+115 [XJSR WRLN,1] [LJMP SD_ICX_ERROR_MMSG,0] ^+1 [] [] ^+1 [WRTN] [] SETDLM+1255 [XNLDA 0,2,2] {LJMP #SD_PATCH,1} ^+1 [] [] ^+1 [XNSTA 0,3,3] [] ^+1 [] [NOP] #SD_PATCH 0 [XNLDA 0,2,2] ^+1 0 [] ^+1 0 [XNSTA 0,3,3] ^+1 0 [] ^+1 0 [LJMP SETDLM+1274,1] ^+1 0 [] ^+1 0 [] SD_PATCH #SD_PATCH\ #SD_PATCH+7\ ^+1 [] [] ;The following patch is not absolutely necessary, but will improve performance ; if the advanced features of SCREEN DEMON are used. It eliminates the ; unnecessary ?LEFE system call that is always performed on returning from ; an assembler CALL routine. This does mean that any assembler routine ; that issues a ?LEFD must do its own ?LEFE before returning to ICX. CALAS+116 [XJSR @16000000006,0] [WBR .+4] ^+1 [] [NOP] ^+1 265 [NOP] ^+1 [WBR CALAS+134] [NOP] ;***** The remaining patches fix bugs in the ICX interpreter ***** ; Note that these patches are not the same ones supplied by Data General. ; The DG patches must also be applied to the new ICX interpreter. ;Fix effective address problems GETSW+55 [BTO 2,1] [WBTO 2,1] RDSEC+410 [LDA 2,4,3] [XNLDA 2,4,3] ^+1 [ADD 1,2] [] ^+1 [NLDAI 0,1] [ADD 1,2] ^+1 [] [WSUB 1,1] CHNOP+100 [BTZ 2,1] [WBTZ 2,1] CHNOP+104 [BTO 2,1] [WBTO 2,1] ;Shutdown guard task is supposed to give the rest of the interpreter time ; to shut down by itself. However, parameters in AC0 and AC1 to its ; ?WDELAY system call are reversed, so it doesn't wait at all, which ; could result in corrupted MINISAM files. INITC+105 [NLDAI 0,0] [NLDAI 11610,0] ^+1 [] [] ^+1 [NLDAI 11610,1] [WSUB 1,1] ^+1 [] [WSUB 2,2] ;CPLOG routine jumps into the middle of CHNOP routine, but stack frame size ; of CPLOG is zero, leaving CHNOP frame data vulnerable to subsequent ; subroutine calls. CPLOG+1 0 @(CHNOP+1) ;End of patches .@%_P'Hq'Hq>SD_B32_UCALLS.SR > ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; $Id: sd_b32_ucalls.sr,v 1.3 1994/03/11 17:27:47 mark Exp mark $ ; ; $Log: sd_b32_ucalls.sr,v $ ; Revision 1.3 1994/03/11 17:27:47 mark ; Inserted previous log comments ; ; Revision 1.2 1994/03/11 01:45:18 mark ; Added RCS Id and Log fields ; ; Revision 1.1 1994/03/10 22:05:09 mark ; Initial revision ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; SD?UCALL SD_ACTIVE_WINDOW,WIDE,WIDE SD?UCALL SD_ACTIVE_WINDOW,WIDE?RTN SD?UCALL SD_CLI_CMD,STRING SD?UCALL SD_CLI_INTERFACE SD?UCALL SD_COMMAND SD?UCALL SD_CONTROL,NARROW SD?UCALL SD_CREATE_WINDOW SD?UCALL SD_CREATE_WINDOW,NARROW,NARROW,NARROW,NARROW SD?UCALL SD_CREATE_WINDOW,STRING?RTN SD?UCALL SD_CREATE_WINDOW,NARROW,NARROW,NARROW,NARROW,STRING SD?UCALL SD_CREATE_WINDOW,STRING?RTN,NARROW,NARROW,NARROW,NARROW,STRING SD?UCALL SD_CREATE_WINDOW_NO_INIT SD?UCALL SD_CREATE_WINDOW_NO_INIT,NARROW,NARROW,NARROW,NARROW SD?UCALL SD_CREATE_WINDOW_NO_INIT,STRING?RTN SD?UCALL SD_CREATE_WINDOW_NO_INIT,NARROW,NARROW,NARROW,NARROW,STRING SD?UCALL SD_CREATE_WINDOW_NO_INIT,STRING?RTN,NARROW,NARROW,NARROW,NARROW,STRING SD?UCALL SD_DISABLE SD?UCALL SD_DISPLAY,STRING SD?UCALL SD_DISPLAY_INTO_STRING,STRING,STRING,STRING SD?UCALL SD_DRAW_BOX,NARROW,NARROW,NARROW,NARROW SD?UCALL SD_DRAW_BOX,NARROW,NARROW,NARROW,NARROW,STRING SD?UCALL SD_DRAW_HLINE,NARROW,NARROW,NARROW SD?UCALL SD_DRAW_VLINE,NARROW,NARROW,NARROW SD?UCALL SD_ENABLE SD?UCALL SD_ERROR_MESSAGE,STRING SD?UCALL SD_ERROR_MESSAGE,STRING,NARROW,NARROW SD?UCALL SD_FLOAT_WINDOW SD?UCALL SD_FLOAT_WINDOW,WIDE SD?UCALL SD_FLUSH SD?UCALL SD_GET_CONTROL,NARROW?RTN SD?UCALL SD_GET_HOT_CALLED_FROM_NAME,STRING?RTN SD?UCALL SD_GET_IMAGE,STRING?RTN SD?UCALL SD_GET_NEXT_WINDOW_VIEW,STRING?RTN SD?UCALL SD_GET_NEXT_WINDOW_VIEW,STRING?RTN,WIDE SD?UCALL SD_GET_NEXT_WINDOW_VIEW,STRING?RTN,WIDE?RTN,WIDE SD?UCALL SD_GET_POS,NARROW SD?UCALL SD_GET_USER_ID,STRING?RTN SD?UCALL SD_GET_VALUE,STRING,STRING?RTN,NARROW,NARROW?RTN SD?UCALL SD_GET_WINDOW_DESCRIPTOR,STRING?RTN SD?UCALL SD_GET_WINDOW_DESCRIPTOR,STRING?RTN,WIDE SD?UCALL SD_GET_WINDOW_VIEW,STRING?RTN SD?UCALL SD_GET_WINDOW_VIEW,STRING?RTN,WIDE?RTN SD?UCALL SD_GET_WINDOW_VIEW,STRING?RTN,WIDE?RTN,WIDE SD?UCALL SD_INPUT_MAIL SD?UCALL SD_INPUT_STRING,STRING SD?UCALL SD_MENU,STRING SD?UCALL SD_MENU,STRING,STRING SD?UCALL SD_MENU,STRING,STRING,STRING SD?UCALL SD_MENU,STRING,STRING,STRING,STRING SD?UCALL SD_MENU,STRING,STRING,STRING,STRING,STRING SD?UCALL SD_MENU,STRING,STRING,STRING,STRING,STRING,STRING SD?UCALL SD_MESSAGE,STRING SD?UCALL SD_MESSAGE,STRING,NARROW,NARROW SD?UCALL SD_MESSAGE,STRING,NARROW,NARROW,STRING SD?UCALL SD_MOVE_WINDOW_DOWN SD?UCALL SD_MOVE_WINDOW_DOWN,NARROW SD?UCALL SD_MOVE_WINDOW_LEFT SD?UCALL SD_MOVE_WINDOW_LEFT,NARROW SD?UCALL SD_MOVE_WINDOW_RIGHT SD?UCALL SD_MOVE_WINDOW_RIGHT,NARROW SD?UCALL SD_MOVE_WINDOW_UP SD?UCALL SD_MOVE_WINDOW_UP,NARROW SD?UCALL SD_NEW_WINDOW SD?UCALL SD_NEW_WINDOW,NARROW,NARROW,NARROW,NARROW SD?UCALL SD_NEW_WINDOW,STRING?RTN SD?UCALL SD_NEW_WINDOW,NARROW,NARROW,NARROW,NARROW,STRING SD?UCALL SD_NEW_WINDOW,STRING?RTN,NARROW,NARROW,NARROW,NARROW,STRING SD?UCALL SD_NEW_WINDOW_NO_INIT SD?UCALL SD_NEW_WINDOW_NO_INIT,NARROW,NARROW,NARROW,NARROW SD?UCALL SD_NEW_WINDOW_NO_INIT,STRING?RTN SD?UCALL SD_NEW_WINDOW_NO_INIT,NARROW,NARROW,NARROW,NARROW,STRING SD?UCALL SD_NEW_WINDOW_NO_INIT,STRING?RTN,NARROW,NARROW,NARROW,NARROW,STRING SD?UCALL SD_NEW_WINDOW_VIEW,STRING?RTN,WIDE SD?UCALL SD_NOTEPAD SD?UCALL SD_NOTEPAD,STRING SD?UCALL SD_POP_UP_MENU,STRING SD?UCALL SD_POP_UP_MENU,STRING,STRING SD?UCALL SD_PROC_PR,STRING SD?UCALL SD_PUT_VALUE,STRING,STRING,NARROW SD?UCALL SD_PUT_WINDOW_DESCRIPTOR,STRING?RTN SD?UCALL SD_PUT_WINDOW_DESCRIPTOR,STRING?RTN,WIDE SD?UCALL SD_PUT_WINDOW_VIEW,STRING?RTN,WIDE SD?UCALL SD_READ_CHAR,STRING?RTN SD?UCALL SD_READ_CHAR,STRING?RTN,NARROW SD?UCALL SD_READ_CHAR_ONLY,STRING?RTN SD?UCALL SD_READ_CHAR_ONLY,STRING?RTN,NARROW SD?UCALL SD_READ_MAIL SD?UCALL SD_REDRAW SD?UCALL SD_REMOVE_WINDOW SD?UCALL SD_REMOVE_WINDOW,WIDE SD?UCALL SD_RETURN_INPUT,STRING?RTN,NARROW SD?UCALL SD_SCROLL_WINDOW_DOWN SD?UCALL SD_SCROLL_WINDOW_DOWN,NARROW SD?UCALL SD_SCROLL_WINDOW_LEFT SD?UCALL SD_SCROLL_WINDOW_LEFT,NARROW SD?UCALL SD_SCROLL_WINDOW_RIGHT SD?UCALL SD_SCROLL_WINDOW_RIGHT,NARROW SD?UCALL SD_SCROLL_WINDOW_UP SD?UCALL SD_SCROLL_WINDOW_UP,NARROW SD?UCALL SD_SEND_MAIL,STRING,STRING SD?UCALL SD_SEND_MAIL,STRING,STRING,STRING SD?UCALL SD_SEND_MAIL,STRING,STRING,STRING,STRING SD?UCALL SD_SET_ACCEPT_LOWERCASE SD?UCALL SD_SET_ACCEPT_TIMEOUT,NARROW SD?UCALL SD_SET_ACCEPT_UPPERCASE SD?UCALL SD_SET_AND_LOCK_USER_ID,STRING SD?UCALL SD_SET_CLI_INIT_CMD SD?UCALL SD_SET_CLI_INIT_CMD,STRING SD?UCALL SD_SET_USER_ID,STRING SD?UCALL SD_SET_WINDOW_SIZE,NARROW,NARROW SD?UCALL SD_SUSPEND_WINDOW SD?UCALL SD_SUSPEND_WINDOW,WIDE SD?UCALL SD_SYS_ERROR_MESSAGE,NARROW SD?UCALL SD_SYS_ERROR_MESSAGE,NARROW,STRING SD?UCALL SD_SYS_ERROR_MESSAGE,NARROW,STRING,NARROW,NARROW SD?UCALL SD_TOP_WINDOW SD?UCALL SD_TOP_WINDOW,WIDE SD?UCALL SD_TURBO_FULL SD?UCALL SD_TURBO_OFF SD?UCALL SD_TURBO_ON SD?UCALL SD_TURBO_PARTIAL SD?UCALL SD_UNLOCK_USER_ID .@'Fp7'Hr'Hry:oSD_CONFIG_DEFINES.SR  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; $Log: sd_config_defines.sr,v $ ; Revision 1.11 1995/07/11 20:57:35 mark ; Updated revision and copyright ; ; Revision 1.10 1995/07/06 21:47:08 mark ; Preliminary additions for LOGOFF_CALL_PROGRAM? support, not yet implemented ; in the Logoff Timeout handler. ; ; Revision 1.9 1994/06/07 23:05:48 mark ; Added the question PAD_INPUT_BUFFER_TO_FULL? as an additional option for ; the TRIM_SPACE_UNDERSCORE_ON_INPUT? section. Also added the new ; SD_CONFIG_FLAGS bit definition "CNF.PADIN", which is set if the PAD...? ; question is answered YES. ; ; Revision 1.8 1994/03/25 23:47:32 mark ; Cleaned up partition switching, so that the current partition is always ; SD_CONFIG_DATA_PART, unless explicitly set otherwise. ; ; Revision 1.7 1994/03/25 17:42:40 mark ; Added "signature" magic number to front of config file header. ; Also added SD_SPECIFIC_PROGRAM_CONFIG_LOAD? macro which indicates whether ; or not to search for a program-specific dynamic config file before using ; the linked-in defaults. ; ; Revision 1.6 1994/03/23 01:00:05 mark ; Modified to produce a standard linkable config file, a dynamic config file, ; or a dynamic config loader module, depending on value of ?BUILD? symbol. ; ; Revision 1.5 1994/03/17 18:07:29 mark ; Cleanup up some typos, and added labels needed for PUT_VALUE to be able ; to store the Calculator and Calendar titles with the proper names. ; ; Revision 1.4 1994/03/17 01:05:46 mark ; Modified to support new dynamic config file format ; ; Revision 1.3 1994/03/11 17:27:47 mark ; Inserted previous log comments ; ; Revision 1.2 1994/03/11 01:45:18 mark ; Added RCS Id and Log fields ; ; Revision 1.1 1994/03/10 22:05:09 mark ; Initial revision ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; .TITLE SD_CONFIG ; Definitions for SCREEN DEMON revision 3.60.01 configuration files ; ; Expects the symbol ?BUILD? to be defined as one of the following values: ; ?LINKED (0) Build a standard linkable config file ; ?DYNAMIC (1) Build a dynamically-loaded config file ; ?LOADER (2) Build a configuration-loader file to be linked ; with a program that will use a dynamic config ; file ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; ;;; ;;; Copyright (C) 1988-1995, ;;; ;;; Threshold, Inc. ;;; ;;; Auburn, Alabama U.S.A. ;;; ;;; All rights reserved. ;;; ;;; ;;; ;;; SCREEN DEMON and its associated hot-key routines ;;; ;;; are proprietary property of Threshold, Inc. ;;; ;;; Except as provided for by the License Agreement; these ;;; ;;; shall not be copied, used, or disclosed for any purpose or ;;; ;;; reason in whole or in part, without the express written ;;; ;;; consent of: ;;; ;;; ;;; ;;; Threshold, Inc. ;;; ;;; 118 North Ross Street ;;; ;;; Auburn, Alabama 36830 ;;; ;;; ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; .NOLOC 1 ;List 'real' lines only .ESC ;Kill MASM's escape character .RDX 10. ;Set decimal mode .ENABLE WORD,PCREL ;Data placement mode is by word, PC-relative ;Revision of this configuration file is 3.60.01 .DUSR SD_CONFIG_REV_VALUE = (3)S7!(60)S15!(01)S23 ;Build type mnemnonics which are possible values for input ?BUILD? symbol .DUSR ?LINKED = 0 ;Build a standard linkable config file .DUSR ?DYNAMIC = 1 ;Build a dynamically-loaded config file .DUSR ?LOADER = 2 ;Build a dynamic configuration file loader ; module to be linked with a program that will ; use a dynamic config file ;Provides definitions for the function key codes ; that require intervention by SCREEN DEMON after an ACCEPT. ;Certain function keys cause a special action to occur, such as redrawing ; the screen. Then the ACCEPT is restarted at the beginning. ;Also, keys that are normally inaccessible to COBOL, such as the arrow keys ; and C* function keys, can be translated to specified standard function ; key codes. ;External variables defined in this module .ENT SD_CONFIG_BASE .IFN (?BUILD?<>?DYNAMIC) .ENT SD_HOT_LINKS_TABLE .ENT SD_DYNAMIC_CONFIG_FILENAME .ENT SD_SPECIFIC_PROGRAM_CONFIG_LOAD .ENDC ;Macro for defining structures: ; ; Usage: STRUCT ; datatype name1 ; datatype name2 ; ... ... ; .MACRO STRUCT ** ** .ESC ** ** ;Initial data offset within structure is zero ** .DUSR ?STRUCT_SIZE = 0 % ;Simple datatype macros for use with STRUCT macro above ;Declare a one-word item ; Usage: NARROW name ; .MACRO NARROW ** ** .ESC ** ** .IFG (.ARGCT) ** ** .DUSR ^1 = ?STRUCT_SIZE ** .DUSR ?STRUCT_SIZE = ?STRUCT_SIZE+1 ** ** .ENDC % ;Declare a two-word item ; Usage: WIDE name ; .MACRO WIDE ** ** .ESC ** ** .IFG (.ARGCT) ** ** .DUSR ^1 = ?STRUCT_SIZE ** .DUSR ?STRUCT_SIZE = ?STRUCT_SIZE+2 ** ** .ENDC % ;Declare a two-word item that is a word offset to something ; Usage: OFFSET name ; .MACRO OFFSET ** ** .ESC ** ** .IFG (.ARGCT) ** ** .DUSR ^1 = ?STRUCT_SIZE ** .DUSR ?STRUCT_SIZE = ?STRUCT_SIZE+2 ** ** .ENDC % ; Macros to set up byte tables (modified version of bit macros in c:csym.sr) ; Usage: BYTE?INIT <# bytes> { } ; default = 0 ; BYTE?PUT ; BYTE?PUT ; ... ; BYTE?GEN ; ; Symbols set: ??S, ??Y.000 - ??Y.377, ??X, ??I .MACRO BYTE?INIT ; Byte table initialization ??S = ((^1)+3.)/4. .IFN (.ARGCT>1) ??X = (^2)S7+(^2)S15+(^2)S23+(^2) .ELSE ??X = 0 .ENDC ??I = 0 .DO ??S ??Y.\??I = ??X ??I = ??I+1 .ENDC % .MACRO BYTE?PUT ; Set a byte within current table ??I = ^1/4. ??X = ^1&3*8.+7. ??Y.\??I = (??Y.\??I)&~(255.S(??X))!(^2)S(??X) % .MACRO BYTE?GEN ; Generate the current byte table ??I= 0 .DO ??S .DWORD ??Y.\??I ??I= ??I+1 .ENDC % ;Macros, patterned after the byte macros above, that build a bit ; (i.e. delimiter) table. ; ; WARNING: This version translates all bit offsets > 127 to 30!. ; This is for HOT_DELIMITER_TABLE, which for any function key ; just wants the function key header char (30 = ^^) marked. ; ; Usage: HOT_BIT?INIT <# bits> { } ; default = 0 ; HOT_BIT?PUT ; HOT_BIT?PUT ; ... ; HOT_BIT?GEN ; ; Symbols set: ??SB, ??YB.000 - ??YB.255, ??X, ??I .MACRO HOT_BIT?INIT ; Bit table initialization ??SB = ((^1)+31.)/32. .IFN (.ARGCT>1) ??X = -(^2) .ELSE ??X = 0 .ENDC ??I = 0 .DO ??SB ??YB.\??I = ??X ??I = ??I+1 .ENDC % .MACRO HOT_BIT?PUT ; Set a bit within current table .IFN (^1>127.) ;Does bit correspond to a function key? ??X = 30. ;Yes: set function header char's bit .ELSE ??X = ^1 ;No: use given bit offset .ENDC ??I = ??X/32. ;Compute DWORD that contains the bit ??X = ??X&31. ; and the bit within the DWORD ;Set that bit within the ??YB... symbols to the given value ??YB.\??I = ((??YB.\??I)&~(1S(??X)))!((^2)S(??X)) % .MACRO HOT_BIT?GEN ; Generate the current bit table ??I = 0 .DO ??SB .DWORD ??YB.\??I ??I = ??I+1 .ENDC % ;These macros maintain a set of bit flags, and generate an error message ; on an attempt to set the same bit flag twice. ; Usage: FLAG?INIT <# bits> ; FLAG?SET , ; ; Symbols set: ??SF, ??YF.000 - ??YF.016, ??X, ??I .MACRO FLAG?INIT ; Bit table initialization ??SF = ((^1)+31.)/32. ??I  = 0 .DO ??SF ??YF.\??I = 0 ??I = ??I+1 .ENDC % .MACRO FLAG?SET ;Set a bit flag ??I = (^1)/32. ;Compute DWORD that contains the bit ??X = (^1)&31. ; and the bit within the DWORD ;Check to see if that bit within the ??YF... symbols is already set .IFN ((??YF.\??I)&(1S(??X))) .ERROR ^2 ^3 ^4 ^5 ^6 ^7 ;Else not set, so OK to set the flag .ELSE ??YF.\??I = (??YF.\??I)!(1S(??X)) .ENDC % ;Partion-defining macro that automatically specifies UNSHARED or SHARED ; attribute, depending on whether or not a dynamic config file is being ; built. If so, everything needs to be UNSHARED so that it will all get ; linked contiguously. Other attributes that are always set are LOCAL ; and DATA. Any other desired partition attributes can be specified as ; arguments on the macro call. .MACRO CONFIGPART .IFN (?BUILD?==?DYNAMIC) .PART ^1 UNSHARED DATA LOCAL ^2 ^3 ^4 ^5 ^6 ^7 ^8 ^9 .ELSE .PART ^1 SHARED DATA LOCAL ^2 ^3 ^4 ^5 ^6 ^7 ^8 ^9 .ENDC % ;Define symbols to use for referencing macro arguments beyond the ninth one ; in .TXT building macros. Note that in these symbol names, only a single ; character can follow the "?" in order to expand with "^?x" ?a = 10. ?b = 11. ?c = 12. ?d = 13. ?e = 14. ?f = 15. ?g = 16. ?h = 17. ?i = 18. ?j = 19. ?k = 20. ?l = 21. ?m = 22. ?n = 23. ?o = 24. ?p = 25. ?q = 26. ?r = 27. ?s = 28. ?t = 29. ?u = 30. ?v = 31. ?w = 32. ?x = 33. ?y = 34. ?z = 35. ;Define answer keywords for YES/NO options: .DUSR YES = 1 .DUSR yes = YES .DUSR NO = 0 .DUSR no = NO ;Format of fixed header portion of a configuration file, whether linked-in or ; in a loadable config file. This must match that in SD_DEFINES.SR. STRUCT WIDE CNF?SIGNATURE ;"<4>SD<3>" WIDE CNF?SD_CONFIG_REV NARROW CNF?PERIODIC_INTERVAL NARROW CNF?FLUSH_INTERVAL NARROW CNF?SD_SCREEN_SAVER_INTERVAL NARROW CNF?SD_HOT_TIMEOUT_INTERVAL NARROW CNF?LOGOFF_INTERVAL WIDE CNF?LOGOFF_OK_AFTER_TIME WIDE CNF?LOGOFF_OK_BEFORE_TIME OFFSET CNF?HOT_KEY_ASSIGNMENTS_TABLE OFFSET CNF?HOT_KEY_DEFS_TABLE OFFSET CNF?KEY_TRANSLATION_TABLE OFFSET CNF?HOT_DELIMITER_TABLE OFFSET CNF?HOT_MENU_ITEMS OFFSET CNF?HOT_MENU_ITEM_NUMS NARROW CNF?HOT_ESCAPE_KEY NARROW CNF?SD_ALT_EXIT_KEY NARROW CNF?SD_MODEM_DISCONNECT_KEY OFFSET CNF?INPUT_FEEDBACK_STRING NARROW CNF?INPUT_FEEDBACK_STRING_SIZE NARROW CNF?MAX_SCROLL_BEFORE_FLUSH OFFSET CNF?SD_NO_LOGOFF_USERS OFFSET CNF?MAIL_INDICATOR NARROW CNF?MAIL_INDICATOR_SIZE NARROW CNF?MAIL_VIEW_LINE NARROW CNF?MAIL_VIEW_COLUMN NARROW CNF?MAIL_VIEW_HEIGHT NARROW CNF?MAIL_VIEW_WIDTH OFFSET CNF?SD_REMOTE_VIEW_INDICATOR NARROW CNF?SD_REMOTE_VIEW_INDICATOR_SIZE NARROW CNF?SD_REMOTE_VIEW_INDICATOR_LINE NARROW CNF?SD_REMOTE_VIEW_INDICATOR_COLUMN NARROW CNF?SD_REMOTE_VIEW_INDICATOR_HEIGHT NARROW CNF?SD_REMOTE_VIEW_INDICATOR_WIDTH OFFSET CNF?SD_REMOTE_INPUT_INDICATOR NARROW CNF?SD_REMOTE_INPUT_INDICATOR_SIZE NARROW CNF?SD_REMOTE_INPUT_INDICATOR_LINE NARROW CNF?SD_REMOTE_INPUT_INDICATOR_COLUMN NARROW CNF?SD_REMOTE_INPUT_INDICATOR_HEIGHT NARROW CNF?SD_REMOTE_INPUT_INDICATOR_WIDTH NARROW CNF?CEO_MAIL_VIEW_LINE NARROW CNF?CEO_MAIL_VIEW_COLUMN OFFSET CNF?PAD_PATH_PREFIX OFFSET CNF?PAD_PATH_SUFFIX WIDE CNF?MAX_CONLOG_SIZE OFFSET CNF?SD_SPECIAL_PROGRAMS_LIST OFFSET CNF?SD_WP_SHELL_CLI_LETTER OFFSET CNF?SD_MAIN_MENU_TITLE OFFSET CNF?SD_MAIN_MENU_FOOTER OFFSET CNF?SD_NOTEPAD_TITLE OFFSET CNF?SDSCREENPRINT_TITLE OFFSET CNF?SDCALCULATOR_TITLE_ONE OFFSET CNF?SDCALCULATOR_TITLE_TWO OFFSET CNF?SDCALENDAR_TITLE OFFSET CNF?SD_READ_MAIL_TITLE OFFSET CNF?SD_INPUT_MAIL_TITLE OFFSET CNF?SD_COMMAND_TITLE OFFSET CNF?SD_DEFAULT_CLI_INIT_CMD OFFSET CNF?SD_CLI_PATHNAME OFFSET CNF?SDSCREENPRINT_OUTPUT_NAME NARROW CNF?SDSCREENPRINT_ASK_OUTPUT_NAME OFFSET CNF?SD_READ_MAIL_OUTPUT_NAME NARROW CNF?SD_READ_MAIL_ASK_OUTPUT_NAME NARROW CNF?SD_READ_MAIL_AUTO_DELETE NARROW CNF?SD_IMMEDIATE_MAIL_DELIVERY OFFSET CNF?SD_MEM_INITIAL_AREA NARROW CNF?SD_CONFIG_FLAGS NARROW CNF?SD_CONSOLE_INTERRUPT_HANDLING NARROW CNF?SD_DEFAULT_CURSOR_TYPE NARROW CNF?SD_DEFAULT_SCROLL_RATE NARROW CNF?SD_DEFAULT_7_OR_8_BIT_MODE NARROW CNF?SD_DEFAULT_KEYBD_LANG NARROW CNF?SD_DEFAULT_PRIMARY_CHAR_SET NARROW CNF?SD_DEFAULT_ALTERNATE_CHAR_SET NARROW CNF?SD_CONFIG_TURBO_LEVEL NARROW CNF?SD_CONFIG_NRM_OFF OFFSET CNF?SD_FLOAT_CLOCK_FORMAT NARROW CNF?SD_FLOAT_CLOCK_FORMAT_LEN NARROW CNF?SD_FLOAT_CLOCK_LINE NARROW CNF?SD_FLOAT_CLOCK_COLUMN NARROW CNF?SD_FLOAT_CLOCK_WIDTH NARROW CNF?SD_FLOAT_CLOCK_HEIGHT OFFSET CNF?SD_MONTH_NAMES OFFSET CNF?SD_WEEKDAY_NAMES NARROW CNF?SD_INPUT_HISTORY_SIZE WIDE CNF?SD_SCROLLBACK_BUFFER_SIZE NARROW CNF?SD_SHCON_IPC_HANDLING OFFSET CNF?SD_SHCON_IPC_IGNORE_PNAMES NARROW CNF?SHCON_IGNORE_PNAMES_COUNT OFFSET CNF?SD_GET_IMAGE_DEFAULTS OFFSET CNF?CHARACTER_SET_PALETTE OFFSET CNF?SD_PUT_VALUE_TABLE OFFSET CNF?SD_LOGOFF_CALL_PROGRAM .DUSR SD_CONFIG_HDR_SIZE = ?STRUCT_SIZE ;Following the fixed header portion is the variable part, which is where ; all the strings, tables, etc. referenced in the fixed part by offsets ; are located. An offset value is the number of words from the beginning ; of the fixed portion to the data item in question. ;Start the configuration file data off with a known address for its base, ; allocating sufficient room for the header portion. CONFIGPART SD_CONFIG_DATA_PART ALIGN=1 SD_CONFIG_BASE: .IFN (?BUILD?<>?LOADER) .BLK SD_CONFIG_HDR_SIZE .ENDC ;The interface module for a dynamic config file is linked with programs that ; will load that config file. This module needs to contain the pathname of ; the dynamic config file for the SD_LOAD_CONFIG routine to use. For this ; purpose, MAKE_SD_CONFIG.CLI will call the following macro to define the ; dynamic config file name when building a pre-config interface module. ; Staticly-linked config files will have the dynamic config filename set ; to nulls. This macro does not apply when building the dynamic config ; file itself. .IFN (?BUILD?==?LINKED) CONFIGPART DYNAMIC_FILENAME_PART SD_DYNAMIC_CONFIG_FILENAME: .WORD 0 CONFIGPART SD_CONFIG_DATA_PART ALIGN=1 .ENDC .MACRO ?LOAD_FILE .IFN (?BUILD?==?LOADER) CONFIGPART DYNAMIC_FILENAME_PART SD_DYNAMIC_CONFIG_FILENAME: .TXT "^1" CONFIGPART SD_CONFIG_DATA_PART ALIGN=1 .ENDC % ;The usual configuration load scheme is to first look for a dynamic ; configuration file whose name is based on the current ring 7 .PR, ; and then if that fails, use the linked-in configuration data or load ; from the linked-in dynamic configuration file name, depending on how ; the program was linked. Sometimes, it may not be desirable to look ; for a specific configuration file for the currrent program, in which ; case the load procedure should skip that step. The following macro ; defines the answer to the question ; ; "Should the configuration file load procedure first look for a ; program-specific dynamic configuration file, using the information ; listed in the remainder of this file only if no specific file is ; found?" ; ; This macro is invoked from the configuration source file when it is ; built as either a ?LINKED or a ?LOADER, and will also be invoked by ; the MAKE_SD_CONFIG command itself if the /PROGSPECIFIC[={YES|NO}] switch ; is specified. The command line option overrides the source option. ?SPECIFIC_PROGRAM_CONFIG_LOAD = -1 ;no answer yet .MACRO SPECIFIC_PROGRAM_CONFIG_LOAD? .IFN (?BUILD?<>?DYNAMIC) .IFG (.ARGCT) .IFN (?SPECIFIC_PROGRAM_CONFIG_LOAD==-1) .IFN (^1) ?SPECIFIC_PROGRAM_CONFIG_LOAD = YES .ELSE ?SPECIFIC_PROGRAM_CONFIG_LOAD = NO .ENDC .ENDC .ENDC .ENDC % ;The following table associates particular keys with specific routines that ; should be called whenever those keys are pressed. For nonfunction keys, ; the ASCII value of key is used as the offset into this table. For ; function keys, the table offset is the ASCII value of the second ; character sent by the function key with the high bit set. ; ; The word found at the offset contains the Hot Key Routine numb @ er, or ; zero if that key has no subroutine assigned to it. ; The Hot Key Routine number is used as the index into the table following ; this one, called HOT_KEY_DEFS_TABLE, which contains information about ; how SCREEN DEMON should call the requested subroutine. ; Note that a key that has a subroutine attached to it will never be ; seen by the COBOL program, since the ACCEPT statement where the key ; was pressed will be automatically restarted when the subroutine returns. ;Table describing hot key routines and how they should be called. Index into ; this table is the Hot Key Routine # assigned to particular function key, ; obtained from the above table. ; Each entry in this table consists of 4 words, formatted as follows: .DUSR SD_HOT_TYPE = 0 .DUSR SD_HOT_FLAGS = 1 .DUSR SD_HOT_PTR = 2 .DUSR SD_HOT_ACL = 4 .DUSR SD_HOT_DIR = 6 .DUSR SD_HOT_DEF_SIZE = 8. ; word 1 = Routine type - one of the following: .DUSR SD_HOT_LINKED = 0 ;Linked in routine .DUSR SD_HOT_COBOL32 = 1 ;Linked in 32-bit COBOL subprogram .DUSR SD_HOT_ICOBOL = 2 ;ICOBOL subprogram .DUSR SD_HOT_CLI = 3 ;CLI macro .DUSR SD_HOT_PR = 4 ;External PR .DUSR SD_HOT_IN_ROOT = 5 ;Routine is linked into root program ; word 2 = Call flags - any combination of the following: .DUSR SD_HOT_UNAWARE = 1B15 ;Not aware of SCREEN DEMON, window management ; must be done for it .DUSR SD_HOT_REDRAW = 1B14 ;Redraw screen on return from routine .DUSR SD_HOT_CANCEL = 1B13 ;CANCEL hot-key-invoked COBOL subprogram ; on exit .DUSR SD_HOT_IMMED = 1B12 ;If REDRAW is specified, do not ask the ; "Press any key to continue..." question ; before proceeding with the Redraw ; ; words 3-4 = Pointer to routine ; Contains word address of routine if type SD_HOT_LINKED, ; otherwise contains byte pointer to name of ICOBOL subprogram, ; CLI macro, or external PR file. .MACRO BEGIN_HOT_KEYS .IFN (?BUILD?<>?LOADER) CONFIGPART HOT_MENU_STRINGS_PART ?HOT_MENU_ITEMS: CONFIGPART HOT_MENU_NUMS_PART ?HOT_MENU_ITEM_NUMS: .ENDC ;not ?LOADER ;If not building a dynamic config file, also build the table that associates ; linked-in routine names with their addresses ;Structure of an element in this table (must match that in SD_DEFINES.SR): STRUCT WIDE HOTLNK.NAME ;Word offset to routine's name from ; beginning of this table element WIDE HOTLNK.ADDR ;Address of routine's code .DUSR HOTLNK_SIZE = ?STRUCT_SIZE .IFN (?BUILD?<>?DYNAMIC) CONFIGPART SD_HOT_LINKS_PART ALIGN=1 SD_HOT_LINKS_TABLE: .ENDC ;not ?DYNAMIC HOT_BIT?INIT 256. ;Init the delimiter table symbols FLAG?INIT 256. ; and the duplicate-check flag symbols CONFIGPART SD_CONFIG_DATA_PART ALIGN=1 .IFN (?BUILD?<>?LOADER) .ALIGN 1 ?HOT_KEY_ASSIGNMENTS_TABLE: ;Lay down zeros for key offset table .BLK 256. ?HOT_KEY_DEFS_TABLE: ;Start of hot key definitions .ENDC ;not ?LOADER ?HOT_KEY_LOC = . ;Start of current hot key definition ?HOT_KEYS = 0 ;Number of hot keys defined so far ?HOT_KEY_DEFINED = 0 ?HOT_KEY_ACL = 0 ;Word offset to ACL string for cur hot ; key from beginning of hot key ; definition, zero if none ?HOT_KEY_HAS_ACL = 0 ;Flag, set once an ACL cmd has been ; encountered in current hot key def ?HOT_KEY_DIR = 0 ;Word offset to name of initial working ; directory for cur hot key from ; beginning of hot key definition, or ; zero if same as host program's cur dir ;If all of the following symbols are still zero at the end ; of configuration file processing, then the Screen Demon ; mail system should not be included. .DUSR ?HOT?SD_READ_MAIL = 0 .DUSR ?HOT?SD_MAIL_INBOX = 0 .DUSR ?HOT?SD_INPUT_MAIL = 0 % .MACRO ?PUT_LAST_HOT_KEY .IFN (?HOT_KEYS>0) .IFN (?HOT_KEY_DEFINED==0) .ERROR HOT_KEY must be followed by LINKED, ICOBOL, PR, CLI, or LINKED_IN_ROOT .ELSE .IFN (?BUILD?<>?LOADER) .LOC ?HOT_KEY_LOC+SD_HOT_FLAGS .WORD ?HOT_KEY_FLAGS .LOC ?HOT_KEY_LOC+SD_HOT_ACL .IFN ?HOT_KEY_ACL .DWORD ?HOT_KEY_ACL-?HOT_KEY_LOC .ELSE .DWORD 0 .ENDC .LOC ?HOT_KEY_LOC+SD_HOT_DIR .IFN ?HOT_KEY_DIR .DWORD ?HOT_KEY_DIR-?HOT_KEY_LOC .ELSE .DWORD 0 .ENDC .ENDC .ENDC .IFN (?BUILD?<>?LOADER) .LOC ?HOT_KEY_LOC+SD_HOT_DEF_SIZE ?HOT_KEY_LOC = . .ENDC .ENDC ?HOT_KEY_FLAGS = 0 % .MACRO HOT_KEY ?PUT_LAST_HOT_KEY ?HOT_KEY_DEFINED = 0 ?HOT_KEY_ACL = 0 ?HOT_KEY_HAS_ACL = 0 ?HOT_KEY_DIR = 0 ?HOT_KEYS = ?HOT_KEYS+1 ?I = 0 .DO .ARGCT ?I = ?I+1 .IFN (^?I>0) HOT_BIT?PUT ^?I,1 ;Mark this key as a delimiter ;Make sure that this hot key isn't used more than once FLAG?SET ^?I,Multiple assignments for hot key ^?I .IFN (?BUILD?<>?LOADER) .LOC ?HOT_KEY_ASSIGNMENTS_TABLE+^?I .WORD ?HOT_KEYS .ENDC .ENDC .ENDC % .MACRO ?PUT_HOT_KEY_TYPE .IFN (?HOT_KEY_DEFINED==1) .ERROR Hot Key is being defined as multiple types .ELSE .IFN (?BUILD?<>?LOADER) .LOC ?HOT_KEY_LOC+SD_HOT_TYPE .WORD ^1 .ENDC ?HOT_KEY_DEFINED = 1 .ENDC % .MACRO ?PUT_HOT_PTR_STRING CONFIGPART HOT_KEY_STRINGS ?STRING_PTR = . .IFN (.ARGCT==1) .TXT "^1" .ELSE .IFN (.ARGCT==2.) .TXT "^1,^2" .ELSE .IFN (.ARGCT==3.) .TXT "^1,^2,^3" .ELSE .IFN (.ARGCT==4.) .TXT "^1,^2,^3,^4" .ELSE .IFN (.ARGCT==5.) .TXT "^1,^2,^3,^4,^5" .ELSE .IFN (.ARGCT==6.) .TXT "^1,^2,^3,^4,^5,^6" .ELSE .IFN (.ARGCT==7.) .TXT "^1,^2,^3,^4,^5,^6,^7" .ELSE .IFN (.ARGCT==8.) .TXT "^1,^2,^3,^4,^5,^6,^7,^8" .ELSE .IFN (.ARGCT==9.) .TXT "^1,^2,^3,^4,^5,^6,^7,^8,^9" .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC .IFN (?BUILD?<>?LOADER) .LOC ?HOT_KEY_LOC+SD_HOT_PTR .DWORD ?STRING_PTR-?HOT_KEY_LOC .ENDC CONFIGPART SD_CONFIG_DATA_PART ALIGN=1 % .MACRO LINKED ?PUT_HOT_KEY_TYPE SD_HOT_LINKED ?PUT_HOT_PTR_STRING ^1 .IFN (?BUILD?<>?DYNAMIC) .EXTL ^1 CONFIGPART SD_HOT_LINKS_PART ALIGN=1 ?HOTLNK = . .BLK HOTLNK_SIZE .LOC ?HOTLNK+HOTLNK.NAME .DWORD ?STRING_PTR-?HOTLNK .LOC ?HOTLNK+HOTLNK.ADDR .DWORD ^1 .LOC ?HOTLNK+HOTLNK_SIZE CONFIGPART SD_CONFIG_DATA_PART ALIGN=1 .ENDC .DUSR ?HOT?^1 = -1 % .MACRO COBOL32 ?PUT_HOT_KEY_TYPE SD_HOT_COBOL32 ?PUT_HOT_PTR_STRING ^1 .IFN (?BUILD?<>?DYNAMIC) .EXTL ^1 CONFIGPART SD_HOT_LINKS_PART ALIGN=1 ?HOTLNK = . .BLK HOTLNK_SIZE .LOC ?HOTLNK+HOTLNK.NAME .DWORD ?STRING_PTR-. .LOC ?HOTLNK+HOTLNK.ADDR .DWORD ^1 .LOC ?HOTLNK+HOTLNK_SIZE CONFIGPART SD_CONFIG_DATA_PART ALIGN=1 .ENDC % .MACRO ICOBOL ?PUT_HOT_KEY_TYPE SD_HOT_ICOBOL .IFN (?BUILD?<>?LOADER) ?PUT_HOT_PTR_STRING ^1 .ENDC % .MACRO PR ?PUT_HOT_KEY_TYPE SD_HOT_PR .IFN (?BUILD?<>?LOADER) ?PUT_HOT_PTR_STRING ^1 ^2 ^3 ^4 ^5 ^6 ^7 ^8 ^9 .ENDC % .MACRO CLI ?PUT_HOT_KEY_TYPE SD_HOT_CLI .IFN (?BUILD?<>?LOADER) ?PUT_HOT_PTR_STRING ^1 ^2 ^3 ^4 ^5 ^6 ^7 ^8 ^9 .ENDC % .MACRO LINKED_IN_ROOT ?PUT_HOT_KEY_TYPE SD_HOT_IN_ROOT .IFN (?BUILD?<>?LOADER) ?PUT_HOT_PTR_STRING ^1 .ENDC % .MACRO SAVE_SCREEN ?HOT_KEY_FLAGS = ?HOT_KEY_FLAGS!SD_HOT_UNAWARE % ;Optional arguments for REDRAW flag .DUSR IMMEDIATE = 1 .DUSR WAIT = 0 .MACRO REDRAW .IFG .ARGCT .IFG ^1 ?HOT_KEY_FLAGS = ?HOT_KEY_FLAGS!SD_HOT_REDRAW!SD_HOT_IMMED .ELSE ?HOT_KEY_FLAGS = ?HOT_KEY_FLAGS!SD_HOT_REDRAW .ENDC .ELSE ?HOT_KEY_FLAGS = ?HOT_KEY_FLAGS!SD_HOT_REDRAW .ENDC % .MACRO CANCEL ?HOT_KEY_FLAGS = ?HOT_KEY_FLAGS!SD_HOT_CANCEL % .MACRO MENU .IFN (?BUILD?<>?LOADER) CONFIGPART HOT_MENU_NUMS_PART .WORD ?HOT_KEYS CONFIGPART HOT_MENU_STRINGS_PART .TXTN 1 ;Do not follow even-length strings with null word .IFE .MCALL .IFN (.ARGCT==1) .TXT "^1" .ELSE .IFN (.ARGCT==2.) .TXT "^1 ^2" .ELSE .IFN (.ARGCT==3.) .TXT "^1 ^2 ^3" .ELSE .IFN (.ARGCT==4.) .TXT "^1 ^2 ^3 ^4" .ELSE .IFN (.ARGCT==5.) .TXT "^1 ^2 ^3 ^4 ^5" .ELSE .IFN (.ARGCT==6.) .TXT "^1 ^2 ^3 ^4 ^5 ^6" .ELSE .IFN (.ARGCT==7.) .TXT "^1 ^2 ^3 ^4 ^5 ^6 ^7" .ELSE .IFN (.ARGCT==8.) .TXT "^1 ^2 ^3 ^4 ^5 ^6 ^7 ^8" .ELSE .IFN (.ARGCT==9.) .TXT "^1 ^2 ^3 ^4 ^5 ^6 ^7 ^8 ^9" .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC .ELSE .IFN (.ARGCT==1) `  .TXT "|^1" .ELSE .IFN (.ARGCT==2.) .TXT "|^1 ^2" .ELSE .IFN (.ARGCT==3.) .TXT "|^1 ^2 ^3" .ELSE .IFN (.ARGCT==4.) .TXT "|^1 ^2 ^3 ^4" .ELSE .IFN (.ARGCT==5.) .TXT "|^1 ^2 ^3 ^4 ^5" .ELSE .IFN (.ARGCT==6.) .TXT "|^1 ^2 ^3 ^4 ^5 ^6" .ELSE .IFN (.ARGCT==7.) .TXT "|^1 ^2 ^3 ^4 ^5 ^6 ^7" .ELSE .IFN (.ARGCT==8.) .TXT "|^1 ^2 ^3 ^4 ^5 ^6 ^7 ^8" .ELSE .IFN (.ARGCT==9.) .TXT "|^1 ^2 ^3 ^4 ^5 ^6 ^7 ^8 ^9" .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC .TXTN 0 ;Resume normal text placement mode CONFIGPART SD_CONFIG_DATA_PART ALIGN=1 .ENDC ;not ?LOADER % .MACRO ACL .IFN (?BUILD?<>?LOADER) ;Define an overwritable partition in case a continuation ACL requires ; backing up over previously placed data CONFIGPART HOT_ACL_STRINGS_PART NOMESS .IFN ?HOT_KEY_HAS_ACL .LOC .-1 ;continuation, back up before null(s) that ; terminated previous ACL chunk .ELSE ?HOT_KEY_ACL = . ?HOT_KEY_HAS_ACL = 1 .ENDC .IFN (.ARGCT==1) .TXT "^1 " .ELSE .IFN (.ARGCT==2.) .TXT "^1 ^2 " .ELSE .IFN (.ARGCT==3.) .TXT "^1 ^2 ^3 " .ELSE .IFN (.ARGCT==4.) .TXT "^1 ^2 ^3 ^4 " .ELSE .IFN (.ARGCT==5.) .TXT "^1 ^2 ^3 ^4 ^5 " .ELSE .IFN (.ARGCT==6.) .TXT "^1 ^2 ^3 ^4 ^5 ^6 " .ELSE .IFN (.ARGCT==7.) .TXT "^1 ^2 ^3 ^4 ^5 ^6 ^7 " .ELSE .IFN (.ARGCT==8.) .TXT "^1 ^2 ^3 ^4 ^5 ^6 ^7 ^8 " .ELSE .IFN (.ARGCT==9.) .TXT "^1 ^2 ^3 ^4 ^5 ^6 ^7 ^8 ^9 " .ELSE .IFN (.ARGCT==10.) .TXT "^1 ^2 ^3 ^4 ^5 ^6 ^7 ^8 ^9 ^?a " .ELSE .IFN (.ARGCT==11.) .TXT "^1 ^2 ^3 ^4 ^5 ^6 ^7 ^8 ^9 ^?a ^?b " .ELSE .IFN (.ARGCT==12.) .TXT "^1 ^2 ^3 ^4 ^5 ^6 ^7 ^8 ^9 ^?a ^?b ^?c " .ELSE .IFN (.ARGCT==13.) .TXT "^1 ^2 ^3 ^4 ^5 ^6 ^7 ^8 ^9 ^?a ^?b ^?c ^?d " .ELSE .IFN (.ARGCT==14.) .TXT "^1 ^2 ^3 ^4 ^5 ^6 ^7 ^8 ^9 ^?a ^?b ^?c ^?d ^?e " .ELSE .IFN (.ARGCT==15.) .TXT "^1 ^2 ^3 ^4 ^5 ^6 ^7 ^8 ^9 ^?a ^?b ^?c ^?d ^?e ^?f " .ELSE .IFN (.ARGCT==16.) .TXT "^1 ^2 ^3 ^4 ^5 ^6 ^7 ^8 ^9 ^?a ^?b ^?c ^?d ^?e ^?f ^?g " .ELSE .IFN (.ARGCT==17.) .TXT "^1 ^2 ^3 ^4 ^5 ^6 ^7 ^8 ^9 ^?a ^?b ^?c ^?d ^?e ^?f ^?g ^?h " .ELSE .IFN (.ARGCT==18.) .TXT "^1 ^2 ^3 ^4 ^5 ^6 ^7 ^8 ^9 ^?a ^?b ^?c ^?d ^?e ^?f ^?g ^?h ^?i " .ELSE .IFN (.ARGCT==19.) .TXT "^1 ^2 ^3 ^4 ^5 ^6 ^7 ^8 ^9 ^?a ^?b ^?c ^?d ^?e ^?f ^?g ^?h ^?i ^?j " .ELSE .IFN (.ARGCT==20.) .TXT "^1 ^2 ^3 ^4 ^5 ^6 ^7 ^8 ^9 ^?a ^?b ^?c ^?d ^?e ^?f ^?g ^?h ^?i ^?j ^?k " .ELSE .IFN (.ARGCT==21.) .TXT "^1 ^2 ^3 ^4 ^5 ^6 ^7 ^8 ^9 ^?a ^?b ^?c ^?d ^?e ^?f ^?g ^?h ^?i ^?j ^?k ^?l " .ELSE .IFN (.ARGCT==22.) .TXT "^1 ^2 ^3 ^4 ^5 ^6 ^7 ^8 ^9 ^?a ^?b ^?c ^?d ^?e ^?f ^?g ^?h ^?i ^?j ^?k ^?l ^?m " .ELSE .IFN (.ARGCT==23.) .TXT "^1 ^2 ^3 ^4 ^5 ^6 ^7 ^8 ^9 ^?a ^?b ^?c ^?d ^?e ^?f ^?g ^?h ^?i ^?j ^?k ^?l ^?m ^?n " .ELSE .IFN (.ARGCT==24.) .TXT "^1 ^2 ^3 ^4 ^5 ^6 ^7 ^8 ^9 ^?a ^?b ^?c ^?d ^?e ^?f ^?g ^?h ^?i ^?j ^?k ^?l ^?m ^?n ^?o " .ELSE .IFN (.ARGCT==25.) .TXT "^1 ^2 ^3 ^4 ^5 ^6 ^7 ^8 ^9 ^?a ^?b ^?c ^?d ^?e ^?f ^?g ^?h ^?i ^?j ^?k ^?l ^?m ^?n ^?o ^?p " .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC CONFIGPART SD_CONFIG_DATA_PART ALIGN=1 .ENDC ;not ?LOADER % .MACRO DIRECTORY .IFN (?BUILD?<>?LOADER) .IFN (.ARGCT) CONFIGPART HOT_DIR_STRINGS_PART ?HOT_KEY_DIR = . .TXT "^1" CONFIGPART SD_CONFIG_DATA_PART ALIGN=1 .ENDC .ENDC % .MACRO END_HOT_KEYS ?PUT_LAST_HOT_KEY .IFN (?BUILD?<>?LOADER) CONFIGPART HOT_MENU_STRINGS_PART .TXT "||" .ENDC CONFIGPART SD_CONFIG_DATA_PART ALIGN=1 .ALIGN 1 % ;The following table is used to translate entered key codes to possible ; different ones. For nonfunction keys, the ASCII code of the key itself ; is used as the offset into the table. The offset into the table for ; function keys is the ASCII code of the second character sent by that ; function key. The byte at the particular offset contains the translated ; code for that key, or zero if the key should not be translated. .MACRO BEGIN_TRANSLATIONS BYTE?INIT 256. % .MACRO TRANSLATE BYTE?PUT ^1,^2 ;Set byte offset in xlat table to given value HOT_BIT?PUT ^1,1 ;Mark this key as a delimiter % .MACRO END_TRANSLATIONS .IFN (?BUILD?<>?LOADER) ?KEY_TRANSLATION_TABLE: ;Lay down the translation table bytes BYTE?GEN ?HOT_DELIMITER_TABLE: ;Lay down the delimiter table bits HOT_BIT?GEN .ENDC % ; Mnemonics for all keyboard code sequences .DUSR CTRL_A = 1 .DUSR CTRL_B = 2 .DUSR CTRL_C = 3 .DUSR CTRL_D = 4 .DUSR CTRL_E = 5 .DUSR CTRL_F = 6 .DUSR CTRL_G = 7 .DUSR CTRL_H = 8 .DUSR CTRL_I = 9 .DUSR CTRL_J = 10 .DUSR CTRL_K = 11 .DUSR CTRL_L = 12 .DUSR CTRL_M = 13 .DUSR CTRL_N = 14 .DUSR CTRL_O = 15 .DUSR CTRL_P = 16 .DUSR CTRL_Q = 17 .DUSR CTRL_R = 18 .DUSR CTRL_S = 19 .DUSR CTRL_T = 20 .DUSR CTRL_U = 21 .DUSR CTRL_V = 22 .DUSR CTRL_W = 23 .DUSR CTRL_X = 24 .DUSR CTRL_Y = 25 .DUSR CTRL_Z = 26 .DUSR TAB = 9 .DUSR NEW_LINE = 10 .DUSR ERASE_EOL = 11 .DUSR ERASE_PAGE = 12 .DUSR CR = 13 .DUSR ESC = 27 .DUSR DEL = 127 .DUSR HOME = 8 .DUSR UP = 23 .DUSR RIGHT = 24 .DUSR LEFT = 25 .DUSR DOWN = 26 .DUSR SHIFT_HOME = 136 .DUSR SHIFT_UP = 151 .DUSR SHIFT_RIGHT = 152 .DUSR SHIFT_LEFT = 153 .DUSR SHIFT_DOWN = 154 .DUSR C1 = 220 .DUSR C2 = 221 .DUSR C3 = 222 .DUSR C4 = 223 .DUSR SHIFT_C1 = 216 .DUSR SHIFT_C2 = 217 .DUSR SHIFT_C3 = 218 .DUSR SHIFT_C4 = 219 .DUSR CMD_SHIFT_PRINT = 129 .DUSR CMD_PRINT = 145 .DUSR F1 = 241 .DUSR F2 = 242 .DUSR F3 = 243 .DUSR F4 = 244 .DUSR F5 = 245 .DUSR F6 = 246 .DUSR F7 = 247 .DUSR F8 = 248 .DUSR F9 = 249 .DUSR F10 = 250 .DUSR F11 = 251 .DUSR F12 = 252 .DUSR F13 = 253 .DUSR F14 = 254 .DUSR F15 = 240 .DUSR SHIFT_F1 = 225 .DUSR SHIFT_F2 = 226 .DUSR SHIFT_F3 = 227 .DUSR SHIFT_F4 = 228 .DUSR SHIFT_F5 = 229 .DUSR SHIFT_F6 = 230 .DUSR SHIFT_F7 = 231 .DUSR SHIFT_F8 = 232 .DUSR SHIFT_F9 = 233 .DUSR SHIFT_F10 = 234 .DUSR SHIFT_F11 = 235 .DUSR SHIFT_F12 = 236 .DUSR SHIFT_F13 = 237 .DUSR SHIFT_F14 = 238 .DUSR SHIFT_F15 = 224 .DUSR CTRL_F1 = 177 .DUSR CTRL_F2 = 178 .DUSR CTRL_F3 = 179 .DUSR CTRL_F4 = 180 .DUSR CTRL_F5 = 181 .DUSR CTRL_F6 = 182 .DUSR CTRL_F7 = 183 .DUSR CTRL_F8 = 184 .DUSR CTRL_F9 = 185 .DUSR CTRL_F10 = 186 .DUSR CTRL_F11 = 187 .DUSR CTRL_F12 = 188 .DUSR CTRL_F13 = 189 .DUSR CTRL_F14 = 190 .DUSR CTRL_F15 = 176 .DUSR CTRL_SHIFT_F1 = 161 .DUSR CTRL_SHIFT_F2 = 162 .DUSR CTRL_SHIFT_F3 = 163 .DUSR CTRL_SHIFT_F4 = 164 .DUSR CTRL_SHIFT_F5 = 165 .DUSR CTRL_SHIFT_F6 = 166 .DUSR CTRL_SHIFT_F7 = 167 .DUSR CTRL_SHIFT_F8 = 168 .DUSR CTRL_SHIFT_F9 = 169 .DUSR CTRL_SHIFT_F10 = 170 .DUSR CTRL_SHIFT_F11 = 171 .DUSR CTRL_SHIFT_F12 = 172 .DUSR CTRL_SHIFT_F13 = 173 .DUSR CTRL_SHIFT_F14 = 174 .DUSR CTRL_SHIFT_F15 = 160 ;Mnemonics for screen control characters, useful for MAIL_INDICATOR .DUSR BLINK_ON = 14 .DUSR BLINK_OFF = 15 .DUSR UNDER_ON = 20 .DUSR UNDER_OFF = 21 .DUSR DIM_ON = 28 .DUSR DIM_OFF = 29 ;Macro that defines the optional Alternate Exit Key that causes any Screen ; Demon hot key routine to exit ?SD_ALT_EXIT_KEY = -1 ;default is no alternate exit key .MACRO SD_ALTERNATE_EXIT_KEY? .IFG (.ARGCT) ?SD_ALT_EXIT_KEY = ^1 .ENDC % ;Macro that defines the optional Hot Escape Key that prevents the next entered ; key from having any special meaning, such as a hot key ?HOT_ESCAPE_KEY = -1 ;default is no hot escape key .MACRO HOT_ESCAPE_KEY? .IFG (.ARGCT) ?HOT_ESCAPE_KEY = ^1 .ENDC % ;Macro that defines the special function key value that is to be returned ; whenever a console ?READ fails due to a DISCONNECT ERROR ON MODEM. ; Requires optional modem manager package. ?SD_MODEM_DISCONNECT_KEY = -1 ;default is no disconnect indicator .MACRO SD_MODEM_DISCONNECT_KEY? .IFG (.ARGCT) .IFG (^1-128.) ?SD_MODEM_DISCONNECT_KEY = ^1 .ENDC .ENDC % ;Macro that defines the amount of time in seconds that may elapse at any inp ut ; before terminating the input and running the periodic routines. ?PERIODIC_INTERVAL = 60 ;default value .MACRO PERIODIC_INTERVAL? .IFG (.ARGCT) ?PERIODIC_INTERVAL = ^1 .ENDC % ;Macro that defines the amount of time in seconds that may elapse at any input ; before triggering the screen saver routine. ?SD_SCREEN_SAVER_INTERVAL = -1 ;default is no screen saver .MACRO SCREEN_SAVER_INTERVAL? .IFG (.ARGCT) ?SD_SCREEN_SAVER_INTERVAL = ^1 .ENDC % ;Macro that defines the amount of time in seconds that may elapse without a ; response to the SD_MAIN_MENU before before terminating the menu and ; returning from the hot key. ?SD_HOT_TIMEOUT_INTERVAL = -1 ;default value (no timeout) .MACRO MAIN_MENU_TIMEOUT_INTERVAL? .IFG (.ARGCT) ?SD_HOT_TIMEOUT_INTERVAL = ^1 .ENDC % ;Macro that defines the maximum amount of time in seconds that may elapse ; between screen updates. ; ?FLUSH_INTERVAL = 10 ;default value .MACRO FLUSH_INTERVAL? .IFG (.ARGCT) ?FLUSH_INTERVAL = ^1 .ENDC % ;Macro that defines the maximum number of lines that the internal screen image ; can be scrolled before a flush is forced to update the screen to match. ; ?MAX_SCROLL_BEFORE_FLUSH = 5 ;default value .MACRO MAX_SCROLL_BEFORE_FLUSH? .IFG (.ARGCT) ?MAX_SCROLL_BEFORE_FLUSH = ^1 .ENDC % ;Definitions of bits in user control word where turbo setting is located: ; (these bit numbers must match those in SD_DEFINES) .DUSR TURBO = 11. ;Turbo display ON (optimized displays) .DUSR PARTURBO = 10. ;Turbo level is Partial, not Full ; (Partial inhibits display buffering) ;Macros that define the default Turbo display setting .DUSR FULL = 1B(TURBO) .DUSR PARTIAL = 1B(PARTURBO)!1B(TURBO) .DUSR OFF = 0 .DUSR ON = FULL ?SD_CONFIG_TURBO_LEVEL = FULL ;default value .MACRO DEFAULT_TURBO_DISPLAY_SETTING? .IFG (.ARGCT) .IFE (^1-FULL) ?SD_CONFIG_TURBO_LEVEL = ^1 .ELSE .IFE (^1-PARTIAL) ?SD_CONFIG_TURBO_LEVEL = ^1 .ELSE .IFE (^1-OFF) ?SD_CONFIG_TURBO_LEVEL = ^1 .ENDC .ENDC .ENDC .ENDC % ;Macro that defines whether or not the /NRM characteristic is forced off ?SD_CONFIG_NRM_OFF = ~(1B(?CNRM)) ;default value is YES .MACRO FORCE_NRM_CHARACTERISTIC_OFF? .IFG (.ARGCT) .IFE (^1-YES) ?SD_CONFIG_NRM_OFF = ~(1B(?CNRM)) .ELSE ?SD_CONFIG_NRM_OFF = -1 .ENDC .ENDC % ;Macro that defines the amount of inactive time in seconds that may ; elapse at any input before logging the user off. ?LOGOFF_INTERVAL = -1 ;default value .MACRO LOGOFF_INTERVAL? .IFG (.ARGCT) ?LOGOFF_INTERVAL = ^1 .ENDC % ;Macros that define a period of time during the day when logoff timeouts ; will not occur. The times are specified in hours and minutes, but ; stored in the same format as the time returned by ?ITIME, which is ; the number of bi-seconds since midnight. .IFE .PASS ;only need to define default values in pass 1 ?LOGOFF_OK_AFTER_TIME = 0 ;Default is logoff is always OK ?LOGOFF_OK_BEFORE_TIME = 0 ;Default is logoff is always OK .ENDC ;Format: LOGOFF_OK_AFTER hh,mm .MACRO LOGOFF_OK_AFTER .IFN (.ARGCT>=2) ?LOGOFF_OK_AFTER_TIME = ((^1*60+^2)*30)S15 .ENDC % ;Format: LOGOFF_OK_BEFORE hh,mm .MACRO LOGOFF_OK_BEFORE .IFN (.ARGCT>=2) ?LOGOFF_OK_BEFORE_TIME = ((^1*60+^2)*30)S15 .ENDC % ;Macro that defines a list of usernames or username templates who ; are immune to automatic logoff termination .MACRO NO_LOGOFF_USERS .IFN (?BUILD?<>?LOADER) CONFIGPART NO_LOGOFF_USERS_STRINGS_PART .IFE .MCALL ?SD_NO_LOGOFF_USERS: .ENDC .IFN (.ARGCT==1) .TXT "^1" .ELSE .IFN (.ARGCT==2.) .TXT "^1 ^2" .ELSE .IFN (.ARGCT==3.) .TXT "^1 ^2 ^3" .ELSE .IFN (.ARGCT==4.) .TXT "^1 ^2 ^3 ^4" .ELSE .IFN (.ARGCT==5.) .TXT "^1 ^2 ^3 ^4 ^5" .ELSE .IFN (.ARGCT==6.) .TXT "^1 ^2 ^3 ^4 ^5 ^6" .ELSE .IFN (.ARGCT==7.) .TXT "^1 ^2 ^3 ^4 ^5 ^6 ^7" .ELSE .IFN (.ARGCT==8.) .TXT "^1 ^2 ^3 ^4 ^5 ^6 ^7 ^8" .ELSE .IFN (.ARGCT==9.) .TXT "^1 ^2 ^3 ^4 ^5 ^6 ^7 ^8 ^9" .ELSE .IFN (.ARGCT==10.) .TXT "^1 ^2 ^3 ^4 ^5 ^6 ^7 ^8 ^9 ^?a" .ELSE .IFN (.ARGCT==11.) .TXT "^1 ^2 ^3 ^4 ^5 ^6 ^7 ^8 ^9 ^?a ^?b" .ELSE .IFN (.ARGCT==12.) .TXT "^1 ^2 ^3 ^4 ^5 ^6 ^7 ^8 ^9 ^?a ^?b ^?c" .ELSE .IFN (.ARGCT==13.) .TXT "^1 ^2 ^3 ^4 ^5 ^6 ^7 ^8 ^9 ^?a ^?b ^?c ^?d" .ELSE .IFN (.ARGCT==14.) .TXT "^1 ^2 ^3 ^4 ^5 ^6 ^7 ^8 ^9 ^?a ^?b ^?c ^?d ^?e" .ELSE .IFN (.ARGCT==15.) .TXT "^1 ^2 ^3 ^4 ^5 ^6 ^7 ^8 ^9 ^?a ^?b ^?c ^?d ^?e ^?f" .ELSE .IFN (.ARGCT==16.) .TXT "^1 ^2 ^3 ^4 ^5 ^6 ^7 ^8 ^9 ^?a ^?b ^?c ^?d ^?e ^?f ^?g" .ELSE .IFN (.ARGCT==17.) .TXT "^1 ^2 ^3 ^4 ^5 ^6 ^7 ^8 ^9 ^?a ^?b ^?c ^?d ^?e ^?f ^?g ^?h" .ELSE .IFN (.ARGCT==18.) .TXT "^1 ^2 ^3 ^4 ^5 ^6 ^7 ^8 ^9 ^?a ^?b ^?c ^?d ^?e ^?f ^?g ^?h ^?i" .ELSE .IFN (.ARGCT==19.) .TXT "^1 ^2 ^3 ^4 ^5 ^6 ^7 ^8 ^9 ^?a ^?b ^?c ^?d ^?e ^?f ^?g ^?h ^?i ^?j" .ELSE .IFN (.ARGCT==20.) .TXT "^1 ^2 ^3 ^4 ^5 ^6 ^7 ^8 ^9 ^?a ^?b ^?c ^?d ^?e ^?f ^?g ^?h ^?i ^?j ^?k" .ELSE .IFN (.ARGCT==21.) .TXT "^1 ^2 ^3 ^4 ^5 ^6 ^7 ^8 ^9 ^?a ^?b ^?c ^?d ^?e ^?f ^?g ^?h ^?i ^?j ^?k ^?l" .ELSE .IFN (.ARGCT==22.) .TXT "^1 ^2 ^3 ^4 ^5 ^6 ^7 ^8 ^9 ^?a ^?b ^?c ^?d ^?e ^?f ^?g ^?h ^?i ^?j ^?k ^?l ^?m" .ELSE .IFN (.ARGCT==23.) .TXT "^1 ^2 ^3 ^4 ^5 ^6 ^7 ^8 ^9 ^?a ^?b ^?c ^?d ^?e ^?f ^?g ^?h ^?i ^?j ^?k ^?l ^?m ^?n" .ELSE .IFN (.ARGCT==24.) .TXT "^1 ^2 ^3 ^4 ^5 ^6 ^7 ^8 ^9 ^?a ^?b ^?c ^?d ^?e ^?f ^?g ^?h ^?i ^?j ^?k ^?l ^?m ^?n ^?o" .ELSE .TXT "^1 ^2 ^3 ^4 ^5 ^6 ^7 ^8 ^9 ^?a ^?b ^?c ^?d ^?e ^?f ^?g ^?h ^?i ^?j ^?k ^?l ^?m ^?n ^?o ^?p" .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC .ENDC CONFIGPART SD_CONFIG_DATA_PART ALIGN=1 .ALIGN 1 .ENDC ;not ?LOADER % ;Macro that remembers the address where the pathname of the program to call ; when a logoff timeout occurs will go, assuming that value appears in a ; .TXT on the line following the one where the macro is invoked. .MACRO LOGOFF_CALL_PROGRAM? .IFG (.ARGCT) .ERROR LOGOFF_CALL_PROGRAM? value cannot be on same line .ELSE CONFIGPART SD_CONFIG_DATA_PART ALIGN=1 ?SD_LOGOFF_CALL_PROGRAM: .ENDC % ;This feature is not yet implemented, so always set it to "none" for now LOGOFF_CALL_PROGRAM? .TXT "" ;Macro that remembers the address where the mail indicator string will go, ; assuming that value appears in a .TXT on the line following the one ; where the macro is invoked. .MACRO MAIL_INDICATOR? .IFG (.ARGCT) .ERROR MAIL_INDICATOR? value cannot be on same line .ELSE CONFIGPART SD_CONFIG_DATA_PART ALIGN=1 ?MAIL_INDICATOR: .ENDC % ;Macro that defines the length of the above Mail Indicator string ?MAIL_INDICATOR_SIZE = 0 ;default is no mail indicator string .MACRO MAIL_INDICATOR_SIZE? .IFG (.ARGCT) ?MAIL_INDICATOR_SIZE = ^1 .ENDC % ;Macro that defines the screen line where the above Mail Indicator string ; is to appear ?MAIL_VIEW_LINE = 1 ;default is screen home .MACRO MAIL_VIEW_LINE? .IFG (.ARGCT) ?MAIL_VIEW_LINE = ^1 .ENDC % ;Macro that defines the screen column where the above Mail Indicator string ; is to appear ?MAIL_VIEW_COLUMN = 1 ;default is screen home .MACRO MAIL_VIEW_COLUMN? .IFG (.ARGCT) ?MAIL_VIEW_COLUMN = ^1 .ENDC % ;Macro that defines the number of lines covered by the above Mail Indicator ; string on the screen ?MAIL_VIEW_HEIGHT = 0 ;default is no mail indicator .MACRO MAIL_VIEW_HEIGHT? .IFG (.ARGCT) ?MAIL_VIEW_HEIGHT = ^1 .ENDC % ;Macro that defines the number of columns covered by the above Mail Indicator ; string on the screen ?MAIL_VIEW_WIDTH = 0 ;default is no mail indicator .MACRO MAIL_VIEW_WIDTH? .IFG (.ARGCT) ?MAIL_VIEW_WIDTH = ^1 .ENDC % ;Macro that remembers the address where the remote view indicator string will ; go, assuming that value appears in a .TXT on the line following the one ; where the macro is invoked. ?SD_REMOTE_VIEW_INDICATOR_DEFINED = 0 .MACRO SD_REMOTE_VIEW_INDICATOR? .IFG (.ARGCT) .ERROR SD_REMOTE_VIEW_INDICATOR? value cannot be on same line .ELSE CONFIGPART SD_CONFIG_DATA_PART ALIGN=1 ?SD_RE MOTE_VIEW_INDICATOR: ?SD_REMOTE_VIEW_INDICATOR_DEFINED = 1 .ENDC % ;Macro that defines the length of the above Remote View Indicator string ?SD_REMOTE_VIEW_INDICATOR_SIZE = 0 ;default is no indicator .MACRO SD_REMOTE_VIEW_INDICATOR_SIZE? .IFG (.ARGCT) ?SD_REMOTE_VIEW_INDICATOR_SIZE = ^1 .ENDC % ;Macro that defines the screen line where the above Remote View Indicator string ; is to appear ?SD_REMOTE_VIEW_INDICATOR_LINE = 1 ;default is screen home .MACRO SD_REMOTE_VIEW_INDICATOR_LINE? .IFG (.ARGCT) ?SD_REMOTE_VIEW_INDICATOR_LINE = ^1 .ENDC % ;Macro that defines the screen column where the above Remote View indicator ; is to appear ?SD_REMOTE_VIEW_INDICATOR_COLUMN = 1 ;default is screen home .MACRO SD_REMOTE_VIEW_INDICATOR_COLUMN? .IFG (.ARGCT) ?SD_REMOTE_VIEW_INDICATOR_COLUMN = ^1 .ENDC % ;Macro that defines the number of lines covered by the above Remote View ; Indicator string on the screen ?SD_REMOTE_VIEW_INDICATOR_HEIGHT = 0 ;default is no indicator .MACRO SD_REMOTE_VIEW_INDICATOR_HEIGHT? .IFG (.ARGCT) ?SD_REMOTE_VIEW_INDICATOR_HEIGHT = ^1 .ENDC % ;Macro that defines the number of columns covered by the above Remote View ; Indicator string on the screen ?SD_REMOTE_VIEW_INDICATOR_WIDTH = 0 ;default is no indicator .MACRO SD_REMOTE_VIEW_INDICATOR_WIDTH? .IFG (.ARGCT) ?SD_REMOTE_VIEW_INDICATOR_WIDTH = ^1 .ENDC % ;Macro that remembers the address where the remote input indicator string will ; go, assuming that value appears in a .TXT on the line following the one ; where the macro is invoked. .MACRO SD_REMOTE_INPUT_INDICATOR? .IFG (.ARGCT) .ERROR SD_REMOTE_INPUT_INDICATOR? value cannot be on same line .ELSE CONFIGPART SD_CONFIG_DATA_PART ALIGN=1 ?SD_REMOTE_INPUT_INDICATOR: .ENDC % ;Macro that defines the length of the above Remote Input Indicator string ?SD_REMOTE_INPUT_INDICATOR_SIZE = 0 ;default is no indicator .MACRO SD_REMOTE_INPUT_INDICATOR_SIZE? .IFG (.ARGCT) ?SD_REMOTE_INPUT_INDICATOR_SIZE = ^1 .ENDC % ;Macro that defines the screen line where the above Remote Input Indicator ; string is to appear ?SD_REMOTE_INPUT_INDICATOR_LINE = 1 ;default is screen home .MACRO SD_REMOTE_INPUT_INDICATOR_LINE? .IFG (.ARGCT) ?SD_REMOTE_INPUT_INDICATOR_LINE = ^1 .ENDC % ;Macro that defines the screen column where the above Remote Input indicator ; is to appear ?SD_REMOTE_INPUT_INDICATOR_COLUMN = 1 ;default is screen home .MACRO SD_REMOTE_INPUT_INDICATOR_COLUMN? .IFG (.ARGCT) ?SD_REMOTE_INPUT_INDICATOR_COLUMN = ^1 .ENDC % ;Macro that defines the number of lines covered by the above Remote Input ; Indicator string on the screen ?SD_REMOTE_INPUT_INDICATOR_HEIGHT = 0 ;default is no indicator .MACRO SD_REMOTE_INPUT_INDICATOR_HEIGHT? .IFG (.ARGCT) ?SD_REMOTE_INPUT_INDICATOR_HEIGHT = ^1 .ENDC % ;Macro that defines the number of columns covered by the above Remote Input ; Indicator string on the screen ?SD_REMOTE_INPUT_INDICATOR_WIDTH = 0 ;default is no indicator .MACRO SD_REMOTE_INPUT_INDICATOR_WIDTH? .IFG (.ARGCT) ?SD_REMOTE_INPUT_INDICATOR_WIDTH = ^1 .ENDC % ;Macro that remembers the address where the input feedback string will go, ; assuming that value appears in a .TXT on the line following the one ; where the macro is invoked. .MACRO INPUT_FEEDBACK_STRING? .IFG (.ARGCT) .ERROR INPUT_FEEDBACK_STRING? value cannot be on same line .ELSE CONFIGPART SD_CONFIG_DATA_PART ALIGN=1 ?INPUT_FEEDBACK_STRING: .ENDC % ;Macro that defines the length of the above Input Feedback string ?INPUT_FEEDBACK_STRING_SIZE = 0 ;default is no feedback string .MACRO INPUT_FEEDBACK_STRING_SIZE? .IFG (.ARGCT) ?INPUT_FEEDBACK_STRING_SIZE = ^1 .ENDC % ;Macro that defines the screen line where the CEO Mail Indicator is to appear ?CEO_MAIL_VIEW_LINE = 1 ;default is screen home .MACRO CEO_MAIL_VIEW_LINE? .IFG (.ARGCT) ?CEO_MAIL_VIEW_LINE = ^1 .ENDC % ;Macro that defines the screen column where the CEO Mail Indicator is to appear ?CEO_MAIL_VIEW_COLUMN = 1 ;default is screen home .MACRO CEO_MAIL_VIEW_COLUMN? .IFG (.ARGCT) ?CEO_MAIL_VIEW_COLUMN = ^1 .ENDC % ;Macro that remembers the address where the WP Shell "Go To CLI" letter will ; go, assuming that value appears in a .TXT on the line following the one ; where the macro is invoked. .MACRO SD_WP_SHELL_CLI_LETTER? .IFG (.ARGCT) .ERROR SD_WP_SHELL_CLI_LETTER? value cannot be on same line .ELSE CONFIGPART SD_CONFIG_DATA_PART ALIGN=1 ?SD_WP_SHELL_CLI_LETTER: .ENDC % ;Macro that remembers the address where the default Screenprint output filename ; will go, assuming that value appears in a .TXT on the line following the one ; where the macro is invoked. .MACRO SDSCREENPRINT_OUTPUT_NAME? .IFG (.ARGCT) .ERROR SDSCREENPRINT_OUTPUT_NAME? value cannot be on same line .ELSE CONFIGPART SD_CONFIG_DATA_PART ALIGN=1 ?SDSCREENPRINT_OUTPUT_NAME: .ENDC % ;Macro that remembers the address where the default Read Mail output filename ; will go, assuming that value appears in a .TXT on the line following the one ; where the macro is invoked. .MACRO SD_READ_MAIL_OUTPUT_NAME? .IFG (.ARGCT) .ERROR SD_READ_MAIL_OUTPUT_NAME? value cannot be on same line .ELSE CONFIGPART SD_CONFIG_DATA_PART ALIGN=1 ?SD_READ_MAIL_OUTPUT_NAME: .ENDC % ;Macro that remembers the address where the default CLI init command string ; will go, assuming that value appears in a .TXT on the line following the one ; where the macro is invoked. .MACRO SD_DEFAULT_CLI_INIT_CMD? .IFG (.ARGCT) .ERROR SD_DEFAULT_CLI_INIT_CMD? value cannot be on same line .ELSE CONFIGPART SD_CONFIG_DATA_PART ALIGN=1 ?SD_DEFAULT_CLI_INIT_CMD: .ENDC % ;Macro that remembers the address where the pathname to the CLI program to be ; called by the CLI interface and CLI-type hot keys will go, assuming that ; value appears in a .TXT on the line following the one where the macro is ; invoked. .MACRO SD_CLI_PATHNAME? .IFG (.ARGCT) .ERROR SD_CLI_PATHNAME? value cannot be on same line .ELSE CONFIGPART SD_CONFIG_DATA_PART ALIGN=1 ?SD_CLI_PATHNAME: .ENDC % ;Macro that remembers the address where the notepad pathname prefix will go, ; assuming that value appears in a .TXT on the line following the one ; where the macro is invoked. .MACRO PAD_PATH_PREFIX? .IFG (.ARGCT) .ERROR PAD_PATH_PREFIX? value cannot be on same line .ELSE CONFIGPART SD_CONFIG_DATA_PART ALIGN=1 ?PAD_PATH_PREFIX: .ENDC % ;Macro that remembers the address where the notepad pathname suffix will go, ; assuming that value appears in a .TXT on the line following the one ; where the macro is invoked. .MACRO PAD_PATH_SUFFIX? .IFG (.ARGCT) .ERROR PAD_PATH_SUFFIX? value cannot be on same line .ELSE CONFIGPART SD_CONFIG_DATA_PART ALIGN=1 ?PAD_PATH_SUFFIX: .ENDC % ;Macro that remembers the address where the floating clock format string will ; go, assuming that value appears in a .TXT on the line following the one ; where the macro is invoked. .DUSR ?SD_FLOAT_CLOCK_FORMAT_LEN = 0 .MACRO SD_FLOAT_CLOCK_FORMAT? .IFG (.ARGCT) .ERROR SD_FLOAT_CLOCK_FORMAT? value cannot be on same line .ELSE CONFIGPART SD_CONFIG_DATA_PART ALIGN=1 ?SD_FLOAT_CLOCK_FORMAT: .ENDC % ;Macro that defines the screen line where the floating clock is to appear. ; It also calculates the length of the format string, assuming this macro ; is invoked immediately after the format string definition. ?SD_FLOAT_CLOCK_LINE = 1 ;default is screen home .MACRO SD_FLOAT_CLOCK_LINE? .IFG (.ARGCT) ?SD_FLOAT_CLOCK_LINE = ^1 .ENDC CONFIGPART SD_CONFIG_DATA_PART ALIGN=1 .DUSR ?SD_FLOAT_CLOCK_FORMAT_LEN = (.-?SD_FLOAT_CLOCK_FORMAT)*2 ;If a format string was specified, force the clock module to be linked ; into the host program, if not building a dynamic config file. .IFG ?SD_FLOAT_CLOCK_FORMAT_LEN .IFN (?BUILD?<>?DYNAMIC) .EXTL SD_FLOAT_CLOCK .ENDC .ENDC % ;Macro that defines the screen column where the floating clock is to appear. ?SD_FLOAT_CLOCK_COLUMN = 1 ;default is screen home .MACRO SD_FLOAT_CLOCK_COLUMN? .IFG (.ARGCT) ?SD_FLOAT_CLOC K_COLUMN = ^1 .ENDC % ;Macro that defines the number of screen lines required by the floating clock ?SD_FLOAT_CLOCK_HEIGHT = 0 ;default is no clock .MACRO SD_FLOAT_CLOCK_HEIGHT? .IFG (.ARGCT) ?SD_FLOAT_CLOCK_HEIGHT = ^1 .ENDC % ;Macro that defines the number of screen columns required by the floating clock ?SD_FLOAT_CLOCK_WIDTH = 0 ;default is no clock .MACRO SD_FLOAT_CLOCK_WIDTH? .IFG (.ARGCT) ?SD_FLOAT_CLOCK_WIDTH = ^1 .ENDC % ;Macro that remembers the address where the month names string used by the ; floating clock routine will go, assuming that value appears in a .TXT on ; the line following the one where the macro is invoked. .MACRO SD_MONTH_NAMES? .IFG (.ARGCT) .ERROR SD_MONTH_NAMES? value cannot be on same line .ELSE CONFIGPART SD_CONFIG_DATA_PART ALIGN=1 ?SD_MONTH_NAMES: .ENDC % ;Macro that remembers the address where the weekday names string used by the ; floating clock routine will go, assuming that value appears in a .TXT on ; the line following the one where the macro is invoked. .MACRO SD_WEEKDAY_NAMES? .IFG (.ARGCT) .ERROR SD_WEEKDAY_NAMES? value cannot be on same line .ELSE CONFIGPART SD_CONFIG_DATA_PART ALIGN=1 ?SD_WEEKDAY_NAMES: .ENDC % ;Macro that remembers the address where the main menu title string will go, ; assuming that value appears in a .TXT on the line following the one where ; the macro is invoked. .MACRO SD_MAIN_MENU_TITLE? .IFG (.ARGCT) .ERROR SD_MAIN_MENU_TITLE? value cannot be on same line .ELSE CONFIGPART SD_CONFIG_DATA_PART ALIGN=1 ?SD_MAIN_MENU_TITLE: .ENDC % ;Macro that remembers the address where the main menu footer string will go, ; assuming that value appears in a .TXT on the line following the one where ; the macro is invoked. .MACRO SD_MAIN_MENU_FOOTER? .IFG (.ARGCT) .ERROR SD_MAIN_MENU_FOOTER? value cannot be on same line .ELSE CONFIGPART SD_CONFIG_DATA_PART ALIGN=1 ?SD_MAIN_MENU_FOOTER: .ENDC % ;Macro that remembers the address where the notepad title string will go, ; assuming that value appears in a .TXT on the line following the one where ; the macro is invoked. .MACRO SD_NOTEPAD_TITLE? .IFG (.ARGCT) .ERROR SD_NOTEPAD_TITLE? value cannot be on same line .ELSE CONFIGPART SD_CONFIG_DATA_PART ALIGN=1 ?SD_NOTEPAD_TITLE: .ENDC % ;Macro that remembers the address where the screen print title string will go, ; assuming that value appears in a .TXT on the line following the one where ; the macro is invoked. .MACRO SDSCREENPRINT_TITLE? .IFG (.ARGCT) .ERROR SDSCREENPRINT_TITLE? value cannot be on same line .ELSE CONFIGPART SD_CONFIG_DATA_PART ALIGN=1 ?SDSCREENPRINT_TITLE: .ENDC % ;Macro that remembers the address where the calculator title 1 string will go, ; assuming that value appears in a .TXT on the line following the one where ; the macro is invoked. .MACRO SDCALCULATOR_TITLE_ONE? .IFG (.ARGCT) .ERROR SDCALCULATOR_TITLE_ONE? value cannot be on same line .ELSE CONFIGPART SD_CONFIG_DATA_PART ALIGN=1 ?SDCALCULATOR_TITLE_ONE: SDCALCULATOR_TITLE_ONE: ;label needed for PUT_VALUE ref .ENDC % ;Macro that remembers the address where the calculator title 2 string will go, ; assuming that value appears in a .TXT on the line following the one where ; the macro is invoked. .MACRO SDCALCULATOR_TITLE_TWO? .IFG (.ARGCT) .ERROR SDCALCULATOR_TITLE_TWO? value cannot be on same line .ELSE CONFIGPART SD_CONFIG_DATA_PART ALIGN=1 ?SDCALCULATOR_TITLE_TWO: SDCALCULATOR_TITLE_TWO: ;label needed for PUT_VALUE ref .ENDC % ;Macro that remembers the address where the calendar title string will go, ; assuming that value appears in a .TXT on the line following the one where ; the macro is invoked. .MACRO SDCALENDAR_TITLE? .IFG (.ARGCT) .ERROR SDCALENDAR_TITLE? value cannot be on same line .ELSE CONFIGPART SD_CONFIG_DATA_PART ALIGN=1 ?SDCALENDAR_TITLE: SDCALENDAR_TITLE: ;label needed for PUT_VALUE ref .ENDC % ;Macro that remembers the address where the read mail title string will go, ; assuming that value appears in a .TXT on the line following the one where ; the macro is invoked. .MACRO SD_READ_MAIL_TITLE? .IFG (.ARGCT) .ERROR SD_READ_MAIL_TITLE? value cannot be on same line .ELSE CONFIGPART SD_CONFIG_DATA_PART ALIGN=1 ?SD_READ_MAIL_TITLE: .ENDC % ;Macro that remembers the address where the input mail title string will go, ; assuming that